Repository: 281677160/openwrt-package Branch: Lede Commit: 167db4d3b8b8 Files: 3035 Total size: 42.1 MB Directory structure: gitextract_p4lu5drf/ ├── LICENSE ├── README.md ├── luci-app-adguardhome/ │ ├── Makefile │ ├── luasrc/ │ │ ├── controller/ │ │ │ └── AdGuardHome.lua │ │ ├── model/ │ │ │ └── cbi/ │ │ │ └── AdGuardHome/ │ │ │ ├── base.lua │ │ │ ├── log.lua │ │ │ └── manual.lua │ │ └── view/ │ │ └── AdGuardHome/ │ │ ├── AdGuardHome_check.htm │ │ ├── AdGuardHome_chpass.htm │ │ ├── AdGuardHome_status.htm │ │ ├── log.htm │ │ └── yamleditor.htm │ ├── po/ │ │ └── zh_Hans/ │ │ └── AdGuardHome.po │ └── root/ │ ├── etc/ │ │ ├── config/ │ │ │ ├── AdGuardHome │ │ │ └── AdGuardHome.yaml │ │ ├── init.d/ │ │ │ └── AdGuardHome │ │ └── uci-defaults/ │ │ └── 40_luci-AdGuardHome │ ├── usr/ │ │ └── share/ │ │ ├── AdGuardHome/ │ │ │ ├── AdGuardHome_template.yaml │ │ │ ├── addhost.sh │ │ │ ├── firewall.start │ │ │ ├── getsyslog.sh │ │ │ ├── gfw2adg.sh │ │ │ ├── links.txt │ │ │ ├── tailto.sh │ │ │ ├── update_core.sh │ │ │ ├── waitnet.sh │ │ │ └── watchconfig.sh │ │ └── rpcd/ │ │ └── acl.d/ │ │ └── luci-app-adguardhome.json │ └── www/ │ └── luci-static/ │ └── resources/ │ └── codemirror/ │ ├── addon/ │ │ └── fold/ │ │ ├── foldcode.js │ │ ├── foldgutter.css │ │ ├── foldgutter.js │ │ └── indent-fold.js │ ├── lib/ │ │ ├── codemirror.css │ │ └── codemirror.js │ ├── mode/ │ │ └── yaml/ │ │ └── yaml.js │ └── theme/ │ └── dracula.css ├── luci-app-amlogic/ │ ├── Makefile │ ├── luasrc/ │ │ ├── controller/ │ │ │ └── amlogic.lua │ │ ├── model/ │ │ │ └── cbi/ │ │ │ └── amlogic/ │ │ │ ├── amlogic_armcpu.lua │ │ │ ├── amlogic_backup.lua │ │ │ ├── amlogic_backuplist.lua │ │ │ ├── amlogic_check.lua │ │ │ ├── amlogic_config.lua │ │ │ ├── amlogic_info.lua │ │ │ ├── amlogic_install.lua │ │ │ ├── amlogic_log.lua │ │ │ ├── amlogic_poweroff.lua │ │ │ └── amlogic_upload.lua │ │ └── view/ │ │ └── amlogic/ │ │ ├── other_button.htm │ │ ├── other_check.htm │ │ ├── other_dvalue.htm │ │ ├── other_info.htm │ │ ├── other_install.htm │ │ ├── other_kvm.htm │ │ ├── other_log.htm │ │ ├── other_poweroff.htm │ │ ├── other_rescue.htm │ │ ├── other_snapshot.htm │ │ ├── other_upfiles.htm │ │ └── other_upload.htm │ ├── po/ │ │ ├── ru/ │ │ │ └── amlogic.po │ │ └── zh_Hans/ │ │ └── amlogic.po │ └── root/ │ ├── etc/ │ │ ├── config/ │ │ │ └── amlogic │ │ ├── init.d/ │ │ │ └── amlogic │ │ └── uci-defaults/ │ │ └── luci-amlogic │ └── usr/ │ ├── sbin/ │ │ ├── fixcpufreq.pl │ │ ├── openwrt-backup │ │ ├── openwrt-ddbr │ │ ├── openwrt-install-amlogic │ │ ├── openwrt-kernel │ │ ├── openwrt-update-allwinner │ │ ├── openwrt-update-amlogic │ │ ├── openwrt-update-kvm │ │ └── openwrt-update-rockchip │ └── share/ │ ├── amlogic/ │ │ ├── amlogic_check_firmware.sh │ │ ├── amlogic_check_kernel.sh │ │ └── amlogic_check_plugin.sh │ └── rpcd/ │ └── acl.d/ │ └── luci-app-amlogic.json ├── luci-app-autoipsetadder/ │ ├── Makefile │ ├── luasrc/ │ │ ├── controller/ │ │ │ └── autoipsetadder.lua │ │ ├── model/ │ │ │ └── cbi/ │ │ │ └── autoipsetadder.lua │ │ └── view/ │ │ └── autoipsetadder/ │ │ ├── check.htm │ │ └── status.htm │ └── root/ │ ├── etc/ │ │ ├── config/ │ │ │ └── autoipsetadder │ │ ├── init.d/ │ │ │ └── autoipsetadder │ │ └── uci-defaults/ │ │ └── 40_luci-autoipsetadder │ └── usr/ │ └── bin/ │ └── autoipsetadder/ │ ├── autoaddlist.sh │ ├── debugip.sh │ ├── tailto.sh │ └── testip.sh ├── luci-app-beardropper/ │ ├── Makefile │ ├── luasrc/ │ │ ├── controller/ │ │ │ └── beardropper.lua │ │ ├── model/ │ │ │ └── cbi/ │ │ │ └── beardropper/ │ │ │ ├── log.lua │ │ │ └── setting.lua │ │ └── view/ │ │ └── beardropper/ │ │ └── beardropper_status.htm │ ├── po/ │ │ ├── zh_Hans/ │ │ │ └── beardropper.po │ │ └── zh_Hant/ │ │ └── beardropper.po │ └── root/ │ ├── etc/ │ │ ├── config/ │ │ │ └── beardropper │ │ ├── init.d/ │ │ │ └── beardropper │ │ └── uci-defaults/ │ │ └── luci-beardropper │ └── usr/ │ ├── sbin/ │ │ └── beardropper │ └── share/ │ └── rpcd/ │ └── acl.d/ │ └── luci-app-beardropper.json ├── luci-app-cloudflarespeedtest/ │ ├── Makefile │ ├── luasrc/ │ │ ├── controller/ │ │ │ └── cloudflarespeedtest.lua │ │ ├── model/ │ │ │ └── cbi/ │ │ │ └── cloudflarespeedtest/ │ │ │ ├── cloudflarespeedtest.lua │ │ │ └── logread.lua │ │ └── view/ │ │ └── cloudflarespeedtest/ │ │ ├── actions.htm │ │ └── logread.htm │ ├── po/ │ │ └── zh_Hans/ │ │ └── cloudflarespeedtest.po │ └── root/ │ ├── etc/ │ │ ├── config/ │ │ │ └── cloudflarespeedtest │ │ └── init.d/ │ │ └── cloudflarespeedtest │ └── usr/ │ ├── bin/ │ │ └── cloudflarespeedtest/ │ │ ├── aliddns.sh │ │ └── cloudflarespeedtest.sh │ └── share/ │ └── rpcd/ │ └── acl.d/ │ └── luci-app-cloudflarespeedtest.json ├── luci-app-control-timewol/ │ ├── Makefile │ ├── luasrc/ │ │ ├── controller/ │ │ │ └── timewol.lua │ │ ├── model/ │ │ │ └── cbi/ │ │ │ └── timewol.lua │ │ └── view/ │ │ └── timewol/ │ │ ├── index.htm │ │ └── timewol.htm │ ├── po/ │ │ └── zh_Hans/ │ │ └── timewol.po │ └── root/ │ ├── etc/ │ │ ├── config/ │ │ │ └── luci-app-control-timewol │ │ ├── init.d/ │ │ │ └── luci-app-control-timewol │ │ └── uci-defaults/ │ │ └── luci-app-control-timewol │ └── usr/ │ └── share/ │ ├── rpcd/ │ │ └── acl.d/ │ │ └── luci-app-control-timewol.json │ └── ucitrack/ │ └── luci-app-control-timewol.json ├── luci-app-control-webrestriction/ │ ├── Makefile │ ├── luasrc/ │ │ ├── controller/ │ │ │ └── webrestriction.lua │ │ ├── model/ │ │ │ └── cbi/ │ │ │ └── webrestriction.lua │ │ └── view/ │ │ └── webrestriction/ │ │ ├── index.htm │ │ └── webrestriction.htm │ ├── po/ │ │ └── zh_Hans/ │ │ └── webrestriction.po │ └── root/ │ ├── etc/ │ │ ├── config/ │ │ │ └── luci-app-control-webrestriction │ │ ├── init.d/ │ │ │ └── luci-app-control-webrestriction │ │ └── uci-defaults/ │ │ └── luci-app-control-webrestriction │ └── usr/ │ └── share/ │ ├── rpcd/ │ │ └── acl.d/ │ │ └── luci-app-control-webrestriction.json │ └── ucitrack/ │ └── luci-app-control-webrestriction.json ├── luci-app-control-weburl/ │ ├── Makefile │ ├── luasrc/ │ │ ├── controller/ │ │ │ └── weburl.lua │ │ ├── model/ │ │ │ └── cbi/ │ │ │ └── weburl.lua │ │ └── view/ │ │ └── weburl/ │ │ ├── index.htm │ │ └── weburl.htm │ ├── po/ │ │ └── zh_Hans/ │ │ └── weburl.po │ └── root/ │ ├── etc/ │ │ ├── config/ │ │ │ └── luci-app-control-weburl │ │ ├── init.d/ │ │ │ └── luci-app-control-weburl │ │ └── uci-defaults/ │ │ └── luci-app-control-weburl │ └── usr/ │ └── share/ │ ├── rpcd/ │ │ └── acl.d/ │ │ └── luci-app-control-weburl.json │ └── ucitrack/ │ └── luci-app-control-weburl.json ├── luci-app-cpulimit/ │ ├── Makefile │ ├── luasrc/ │ │ ├── controller/ │ │ │ └── cpulimit.lua │ │ └── model/ │ │ └── cbi/ │ │ └── cpulimit.lua │ ├── po/ │ │ └── zh_Hans/ │ │ └── cpulimit.po │ └── root/ │ ├── etc/ │ │ ├── config/ │ │ │ └── cpulimit │ │ ├── init.d/ │ │ │ └── cpulimit │ │ └── uci-defaults/ │ │ └── luci-cpulimit │ └── usr/ │ ├── bin/ │ │ └── cpulimit.sh │ └── share/ │ └── rpcd/ │ └── acl.d/ │ └── luci-app-cpulimit.json ├── luci-app-ddns-go/ │ ├── ddns-go/ │ │ ├── Makefile │ │ └── files/ │ │ ├── ddns-go.conf │ │ └── ddns-go.init │ └── luci-app-ddns-go/ │ ├── Makefile │ ├── htdocs/ │ │ └── luci-static/ │ │ └── resources/ │ │ └── view/ │ │ └── ddns-go/ │ │ ├── config.js │ │ ├── ddns-go.js │ │ └── log.js │ ├── po/ │ │ ├── templates/ │ │ │ └── ddns-go.pot │ │ └── zh_Hans/ │ │ └── ddns-go.po │ └── root/ │ ├── etc/ │ │ └── uci-defaults/ │ │ └── 99-luci-ddns-go │ └── usr/ │ ├── libexec/ │ │ └── ddns-go-call │ └── share/ │ ├── luci/ │ │ └── menu.d/ │ │ └── luci-app-ddns-go.json │ └── rpcd/ │ ├── acl.d/ │ │ └── luci-app-ddns-go.json │ └── ucode/ │ └── luci.ddns-go ├── luci-app-ddnsto/ │ ├── Makefile │ ├── luasrc/ │ │ ├── controller/ │ │ │ └── ddnsto.lua │ │ ├── model/ │ │ │ └── cbi/ │ │ │ └── ddnsto.lua │ │ └── view/ │ │ └── ddnsto/ │ │ └── main.htm │ ├── po/ │ │ └── zh_Hans/ │ │ └── ddnsto.po │ └── root/ │ ├── etc/ │ │ └── uci-defaults/ │ │ └── 50_luci-ddnsto │ └── www/ │ └── luci-static/ │ └── ddnsto/ │ └── index.js ├── luci-app-eqosplus/ │ ├── Makefile │ ├── luasrc/ │ │ ├── controller/ │ │ │ └── eqosplus.lua │ │ ├── model/ │ │ │ └── cbi/ │ │ │ └── eqosplus.lua │ │ └── view/ │ │ └── eqosplus/ │ │ ├── eqosplus.htm │ │ └── index.htm │ ├── po/ │ │ ├── templates/ │ │ │ └── eqosplus.pot │ │ └── zh_Hans/ │ │ └── eqosplus.po │ └── root/ │ ├── etc/ │ │ ├── config/ │ │ │ └── eqosplus │ │ ├── hotplug.d/ │ │ │ └── iface/ │ │ │ └── 10-eqosplus │ │ ├── init.d/ │ │ │ └── eqosplus │ │ └── uci-defaults/ │ │ └── luci-eqosplus │ └── usr/ │ ├── bin/ │ │ ├── eqosplus │ │ └── eqosplusctrl │ └── share/ │ └── rpcd/ │ └── acl.d/ │ └── luci-app-eqosplus.json ├── luci-app-fastnet/ │ ├── Makefile │ ├── luasrc/ │ │ ├── controller/ │ │ │ └── fastnet.lua │ │ ├── model/ │ │ │ └── cbi/ │ │ │ └── fastnet.lua │ │ └── view/ │ │ └── fastnet/ │ │ └── status.htm │ ├── po/ │ │ └── zh_Hans/ │ │ └── fastnet.po │ └── root/ │ └── etc/ │ └── uci-defaults/ │ └── 50_luci-fastnet ├── luci-app-fileassistant/ │ ├── Makefile │ ├── htdocs/ │ │ └── luci-static/ │ │ └── resources/ │ │ └── fileassistant/ │ │ ├── fb.css │ │ └── fb.js │ └── luasrc/ │ ├── controller/ │ │ └── fileassistant.lua │ └── view/ │ └── fileassistant.htm ├── luci-app-filebrowser/ │ ├── Makefile │ ├── htdocs/ │ │ └── luci-static/ │ │ └── resources/ │ │ └── view/ │ │ └── filebrowser.js │ ├── po/ │ │ ├── templates/ │ │ │ └── filebrowser.pot │ │ └── zh_Hans/ │ │ └── filebrowser.po │ └── root/ │ └── usr/ │ └── share/ │ ├── luci/ │ │ └── menu.d/ │ │ └── luci-app-filebrowser.json │ └── rpcd/ │ └── acl.d/ │ └── luci-app-filebrowser.json ├── luci-app-floatip/ │ ├── Makefile │ ├── luasrc/ │ │ ├── controller/ │ │ │ └── floatip.lua │ │ ├── model/ │ │ │ └── cbi/ │ │ │ └── floatip.lua │ │ └── view/ │ │ └── floatip_status.htm │ ├── po/ │ │ └── zh_Hans/ │ │ └── floatip.po │ └── root/ │ └── etc/ │ └── uci-defaults/ │ └── 50_luci-floatip ├── luci-app-gost/ │ ├── Makefile │ ├── htdocs/ │ │ └── luci-static/ │ │ └── resources/ │ │ └── view/ │ │ └── gost.js │ ├── luasrc/ │ │ ├── controller/ │ │ │ └── gost.lua │ │ └── model/ │ │ └── cbi/ │ │ └── gost.lua │ ├── po/ │ │ ├── templates/ │ │ │ └── gost.pot │ │ └── zh_Hans/ │ │ └── gost.po │ └── root/ │ ├── etc/ │ │ ├── config/ │ │ │ └── gost │ │ └── init.d/ │ │ └── gost │ └── usr/ │ └── share/ │ ├── luci/ │ │ └── menu.d/ │ │ └── luci-app-gost.json │ └── rpcd/ │ └── acl.d/ │ └── luci-app-gost.json ├── luci-app-homeproxy/ │ ├── Makefile │ ├── README │ ├── htdocs/ │ │ └── luci-static/ │ │ └── resources/ │ │ ├── homeproxy.js │ │ └── view/ │ │ └── homeproxy/ │ │ ├── client.js │ │ ├── node.js │ │ ├── server.js │ │ └── status.js │ ├── po/ │ │ ├── templates/ │ │ │ └── homeproxy.pot │ │ └── zh_Hans/ │ │ └── homeproxy.po │ └── root/ │ ├── etc/ │ │ ├── capabilities/ │ │ │ └── homeproxy.json │ │ ├── config/ │ │ │ └── homeproxy │ │ ├── homeproxy/ │ │ │ ├── resources/ │ │ │ │ ├── china_ip4.txt │ │ │ │ ├── china_ip4.ver │ │ │ │ ├── china_ip6.txt │ │ │ │ ├── china_ip6.ver │ │ │ │ ├── china_list.txt │ │ │ │ ├── china_list.ver │ │ │ │ ├── gfw_list.txt │ │ │ │ └── gfw_list.ver │ │ │ └── scripts/ │ │ │ ├── clean_log.sh │ │ │ ├── firewall_post.ut │ │ │ ├── firewall_pre.uc │ │ │ ├── generate_client.uc │ │ │ ├── generate_server.uc │ │ │ ├── homeproxy.uc │ │ │ ├── migrate_config.uc │ │ │ ├── update_crond.sh │ │ │ ├── update_resources.sh │ │ │ └── update_subscriptions.uc │ │ ├── init.d/ │ │ │ └── homeproxy │ │ └── uci-defaults/ │ │ ├── luci-homeproxy │ │ └── luci-homeproxy-migration │ └── usr/ │ └── share/ │ ├── luci/ │ │ └── menu.d/ │ │ └── luci-app-homeproxy.json │ └── rpcd/ │ ├── acl.d/ │ │ └── luci-app-homeproxy.json │ └── ucode/ │ └── luci.homeproxy ├── luci-app-ikoolproxy/ │ ├── Makefile │ ├── change.log │ ├── development.doc │ ├── koolproxy/ │ │ ├── Makefile │ │ └── files/ │ │ ├── aarch64 │ │ ├── arm │ │ ├── i386 │ │ ├── mips │ │ ├── mipsel │ │ └── x86_64 │ ├── luasrc/ │ │ ├── controller/ │ │ │ └── koolproxy.lua │ │ ├── model/ │ │ │ └── cbi/ │ │ │ └── koolproxy/ │ │ │ ├── add_rule.lua │ │ │ ├── basic.lua │ │ │ ├── black_list.lua │ │ │ ├── cert.lua │ │ │ ├── control.lua │ │ │ ├── custom_rule.lua │ │ │ ├── ip_black_list.lua │ │ │ ├── ip_white_list.lua │ │ │ ├── rss_rule.lua │ │ │ ├── tips.lua │ │ │ ├── update_log.lua │ │ │ └── white_list.lua │ │ └── view/ │ │ └── koolproxy/ │ │ ├── cadvalue.htm │ │ ├── caupload.htm │ │ ├── koolproxy_status.htm │ │ └── tips.htm │ └── root/ │ ├── etc/ │ │ ├── adblocklist/ │ │ │ ├── adblock │ │ │ ├── adblockip │ │ │ ├── adbypass │ │ │ └── adbypassip │ │ ├── config/ │ │ │ └── koolproxy │ │ ├── init.d/ │ │ │ └── koolproxy │ │ └── uci-defaults/ │ │ └── luci-koolproxy │ ├── lib/ │ │ └── upgrade/ │ │ └── keep.d/ │ │ └── koolproxy │ └── usr/ │ ├── sbin/ │ │ └── adblockplus │ └── share/ │ ├── koolproxy/ │ │ ├── adblock.conf │ │ ├── camanagement │ │ ├── data/ │ │ │ ├── gen_ca.sh │ │ │ ├── openssl.cnf │ │ │ ├── rules/ │ │ │ │ └── user.txt │ │ │ ├── source.list │ │ │ └── user.txt │ │ ├── dnsmasq.adblock │ │ ├── koolproxy_ipset.conf │ │ └── kpupdate │ ├── rpcd/ │ │ └── acl.d/ │ │ └── luci-app-ikoolproxy.json │ └── ucitrack/ │ └── luci-app-ikoolproxy.json ├── luci-app-iperf3-server/ │ ├── Makefile │ ├── luasrc/ │ │ ├── controller/ │ │ │ └── iperf3-server.lua │ │ ├── model/ │ │ │ └── cbi/ │ │ │ └── iperf3-server.lua │ │ └── view/ │ │ └── iperf3-server/ │ │ └── iperf3-server_status.htm │ ├── po/ │ │ └── zh_Hans/ │ │ └── iperf3-server.po │ └── root/ │ ├── etc/ │ │ ├── config/ │ │ │ └── iperf3-server │ │ ├── init.d/ │ │ │ └── iperf3-server │ │ └── uci-defaults/ │ │ └── iperf3-server │ └── usr/ │ └── share/ │ └── rpcd/ │ └── acl.d/ │ └── luci-app-iperf3-server.json ├── luci-app-istoreenhance/ │ ├── Makefile │ ├── luasrc/ │ │ ├── controller/ │ │ │ └── istoreenhance.lua │ │ ├── model/ │ │ │ ├── cbi/ │ │ │ │ └── istoreenhance.lua │ │ │ └── istoreenhance.lua │ │ └── view/ │ │ └── istoreenhance_status.htm │ ├── po/ │ │ └── zh_Hans/ │ │ └── istoreenhance.po │ └── root/ │ └── etc/ │ └── uci-defaults/ │ └── 50_luci-istoreenhance ├── luci-app-istorex/ │ ├── Makefile │ ├── htdocs/ │ │ └── luci-static/ │ │ └── istorex/ │ │ ├── chunk.167c223d.js │ │ ├── chunk.18e0c91d.js │ │ ├── chunk.211ffb47.js │ │ ├── chunk.2147605f.js │ │ ├── chunk.25dae49f.js │ │ ├── chunk.403244cc.js │ │ ├── chunk.41b74402.js │ │ ├── chunk.42bb6629.js │ │ ├── chunk.4d4bc89c.js │ │ ├── chunk.4f4af73e.js │ │ ├── chunk.5e41a3f0.js │ │ ├── chunk.6d3585bb.js │ │ ├── chunk.6f7d3090.js │ │ ├── chunk.7deee291.js │ │ ├── chunk.83d679c2.js │ │ ├── chunk.8bf617a1.js │ │ ├── chunk.8f1ff823.js │ │ ├── chunk.a1bcc52b.js │ │ ├── chunk.b7ccb4ed.js │ │ ├── chunk.d9ea7f57.js │ │ ├── chunk.de33ea3e.js │ │ ├── chunk.ead1f974.js │ │ ├── chunk.f2b02e0d.js │ │ ├── chunk.fb51d2b2.js │ │ ├── chunk.fdf02bc2.js │ │ ├── chunk.ff94f9f2.js │ │ ├── chunk.ffd7724b.js │ │ ├── index.js │ │ └── style.css │ ├── luasrc/ │ │ ├── controller/ │ │ │ └── istorex.lua │ │ └── view/ │ │ └── istorex/ │ │ ├── index.htm │ │ ├── main.htm │ │ └── main_dev.htm │ └── root/ │ ├── etc/ │ │ ├── config/ │ │ │ └── istorex │ │ └── uci-defaults/ │ │ └── 50_luci-istorex │ └── usr/ │ └── share/ │ └── luci/ │ └── menu.d/ │ └── luci-app-istorex.json ├── luci-app-kai/ │ ├── Makefile │ └── luasrc/ │ ├── controller/ │ │ └── kai.lua │ ├── model/ │ │ ├── cbi/ │ │ │ └── kai.lua │ │ └── kai.lua │ └── view/ │ └── kai/ │ └── kai_status.htm ├── luci-app-linkease/ │ ├── Makefile │ ├── htdocs/ │ │ └── luci-static/ │ │ └── linkeasefile/ │ │ ├── chunk.22632dc4.js │ │ ├── chunk.324cab41.js │ │ ├── chunk.4a114b4a.js │ │ ├── chunk.4ea0593d.js │ │ ├── chunk.6424c2fc.js │ │ ├── chunk.7191676b.js │ │ ├── chunk.a0a5dece.js │ │ ├── chunk.a6a47e72.js │ │ ├── chunk.c69499bb.js │ │ ├── chunk.d52f0fe8.js │ │ ├── chunk.dc0a1b58.js │ │ ├── index.js │ │ └── style.css │ ├── luasrc/ │ │ ├── controller/ │ │ │ ├── linkease.lua │ │ │ └── linkease_backend.lua │ │ ├── model/ │ │ │ └── cbi/ │ │ │ └── linkease.lua │ │ └── view/ │ │ ├── admin_status/ │ │ │ └── index/ │ │ │ └── linkease.htm │ │ ├── linkease/ │ │ │ └── file.htm │ │ └── linkease_status.htm │ ├── po/ │ │ └── zh_Hans/ │ │ └── linkease.po │ └── root/ │ └── etc/ │ └── uci-defaults/ │ └── 50_luci-linkease ├── luci-app-lucky/ │ ├── luci-app-lucky/ │ │ ├── Makefile │ │ ├── htdocs/ │ │ │ └── luci-static/ │ │ │ └── resources/ │ │ │ └── view/ │ │ │ └── lucky/ │ │ │ ├── config.js │ │ │ └── lucky.js │ │ ├── po/ │ │ │ └── zh_Hans/ │ │ │ └── lucky.po │ │ └── root/ │ │ ├── etc/ │ │ │ └── uci-defaults/ │ │ │ └── luci-app-lucky │ │ └── usr/ │ │ └── share/ │ │ ├── luci/ │ │ │ └── menu.d/ │ │ │ └── luci-app-lucky.json │ │ └── rpcd/ │ │ ├── acl.d/ │ │ │ └── luci-app-lucky.json │ │ └── ucode/ │ │ └── luci.lucky │ └── lucky/ │ ├── Makefile │ └── files/ │ ├── lucky.config │ └── lucky.init ├── luci-app-mentohust/ │ ├── Makefile │ ├── luasrc/ │ │ ├── controller/ │ │ │ └── mentohust.lua │ │ └── model/ │ │ └── cbi/ │ │ └── mentohust/ │ │ ├── general.lua │ │ └── log.lua │ ├── po/ │ │ └── zh_Hans/ │ │ └── mentohust.po │ └── root/ │ ├── etc/ │ │ ├── config/ │ │ │ └── mentohust │ │ ├── init.d/ │ │ │ └── mentohust │ │ └── uci-defaults/ │ │ └── luci-mentohust │ └── usr/ │ └── share/ │ └── rpcd/ │ └── acl.d/ │ └── luci-app-mentohust.json ├── luci-app-msd_lite/ │ ├── Makefile │ ├── luasrc/ │ │ ├── controller/ │ │ │ └── msd_lite.lua │ │ ├── model/ │ │ │ └── cbi/ │ │ │ └── msd_lite.lua │ │ └── view/ │ │ └── msd_lite/ │ │ └── msd_lite_status.htm │ ├── po/ │ │ └── zh_Hans/ │ │ └── msd_lite.po │ └── root/ │ └── etc/ │ └── uci-defaults/ │ └── 40_luci-msd_lite ├── luci-app-natter/ │ ├── Makefile │ ├── luasrc/ │ │ ├── controller/ │ │ │ └── natter.lua │ │ ├── model/ │ │ │ └── cbi/ │ │ │ └── natter/ │ │ │ ├── base.lua │ │ │ ├── log.lua │ │ │ └── ports.lua │ │ └── view/ │ │ └── natter/ │ │ └── natter_log.htm │ ├── po/ │ │ └── zh_Hans/ │ │ └── natter.po │ └── root/ │ ├── etc/ │ │ ├── config/ │ │ │ └── natter │ │ ├── init.d/ │ │ │ └── natter │ │ └── uci-defaults/ │ │ └── luci-natter │ └── usr/ │ └── share/ │ └── luci-app-natter/ │ ├── log.sh │ └── natcheck.sh ├── luci-app-natter2/ │ ├── Makefile │ ├── luasrc/ │ │ ├── controller/ │ │ │ └── natter2.lua │ │ ├── model/ │ │ │ └── cbi/ │ │ │ └── natter2/ │ │ │ ├── base.lua │ │ │ ├── instances.lua │ │ │ └── log.lua │ │ └── view/ │ │ └── natter2/ │ │ └── natter_log.htm │ ├── po/ │ │ └── zh_Hans/ │ │ └── natter2.po │ └── root/ │ ├── etc/ │ │ ├── config/ │ │ │ └── natter2 │ │ ├── init.d/ │ │ │ └── natter2 │ │ └── uci-defaults/ │ │ └── luci-natter2 │ └── usr/ │ └── share/ │ └── luci-app-natter2/ │ ├── log.sh │ ├── nat-check.sh │ ├── notify-base.sh │ └── notify-example.sh ├── luci-app-nginx-manager/ │ ├── Makefile │ ├── luasrc/ │ │ ├── controller/ │ │ │ └── nginx-manager.lua │ │ ├── model/ │ │ │ └── cbi/ │ │ │ └── nginx-manager.lua │ │ └── view/ │ │ └── nginx-manager/ │ │ └── index.htm │ ├── po/ │ │ └── zh_Hans/ │ │ └── nginx-manager.po │ └── root/ │ ├── etc/ │ │ ├── nginx/ │ │ │ └── conf.d/ │ │ │ └── templates │ │ └── uci-defaults/ │ │ └── luci-app-nginx-manager │ └── usr/ │ └── share/ │ └── rpcd/ │ └── acl.d/ │ └── luci-app-nginx-manager.json ├── luci-app-nginx-pingos/ │ ├── Makefile │ ├── luasrc/ │ │ ├── controller/ │ │ │ └── pingos.lua │ │ ├── model/ │ │ │ └── cbi/ │ │ │ └── pingos.lua │ │ └── view/ │ │ └── pingos/ │ │ └── status.htm │ ├── modules/ │ │ ├── nginx-client-module/ │ │ │ ├── COPYRIGHT │ │ │ ├── config │ │ │ ├── ngx_client.c │ │ │ ├── ngx_client.h │ │ │ ├── ngx_http_client.c │ │ │ ├── ngx_http_client.h │ │ │ └── t/ │ │ │ ├── config │ │ │ ├── nginx.conf │ │ │ ├── ngx_client_stat_module.c │ │ │ ├── ngx_client_test_module.c │ │ │ ├── ngx_http_client_test_module.c │ │ │ └── tcpserver.go │ │ ├── nginx-multiport-module/ │ │ │ ├── COPYRIGHT │ │ │ ├── config │ │ │ ├── ngx_event_multiport_module.c │ │ │ ├── ngx_http_broadcast_module.c │ │ │ ├── ngx_http_inner_proxy_module.c │ │ │ ├── ngx_multiport.h │ │ │ ├── ngx_multiport_misc.c │ │ │ ├── ngx_process_slot_module.c │ │ │ ├── ngx_stream_zone_module.c │ │ │ ├── ngx_stream_zone_module.h │ │ │ └── t/ │ │ │ ├── config │ │ │ ├── nginx.conf │ │ │ ├── ngx_multiport_test_module.c │ │ │ ├── ngx_stream_zone_test_module.c │ │ │ └── ngx_test_macro.h │ │ ├── nginx-rtmp-module/ │ │ │ ├── AUTHORS │ │ │ ├── config │ │ │ ├── dash/ │ │ │ │ ├── ngx_rtmp_dash_module.c │ │ │ │ ├── ngx_rtmp_mp4.c │ │ │ │ └── ngx_rtmp_mp4.h │ │ │ ├── hls/ │ │ │ │ ├── ngx_rtmp_hls_module.c │ │ │ │ ├── ngx_rtmp_mpegts.c │ │ │ │ └── ngx_rtmp_mpegts.h │ │ │ ├── http/ │ │ │ │ ├── ngx_http_flv_live_module.c │ │ │ │ ├── ngx_http_set_header.c │ │ │ │ └── ngx_http_set_header.h │ │ │ ├── mpegts/ │ │ │ │ ├── ngx_hls_http_module.c │ │ │ │ ├── ngx_hls_live_module.c │ │ │ │ ├── ngx_hls_live_module.h │ │ │ │ ├── ngx_mpegts_gop_module.c │ │ │ │ ├── ngx_mpegts_gop_module.h │ │ │ │ ├── ngx_mpegts_http_module.c │ │ │ │ ├── ngx_mpegts_live_module.c │ │ │ │ └── ngx_mpegts_live_module.h │ │ │ ├── ngx_live.c │ │ │ ├── ngx_live.h │ │ │ ├── ngx_live_record.c │ │ │ ├── ngx_live_record.h │ │ │ ├── ngx_live_relay.c │ │ │ ├── ngx_live_relay.h │ │ │ ├── ngx_live_relay_httpflv.c │ │ │ ├── ngx_live_relay_inner.c │ │ │ ├── ngx_live_relay_rtmp.c │ │ │ ├── ngx_live_relay_simple.c │ │ │ ├── ngx_live_relay_static.c │ │ │ ├── ngx_netcall.c │ │ │ ├── ngx_netcall.h │ │ │ ├── ngx_rtmp.c │ │ │ ├── ngx_rtmp.h │ │ │ ├── ngx_rtmp_access_module.c │ │ │ ├── ngx_rtmp_amf.c │ │ │ ├── ngx_rtmp_amf.h │ │ │ ├── ngx_rtmp_bandwidth.c │ │ │ ├── ngx_rtmp_bandwidth.h │ │ │ ├── ngx_rtmp_bitop.c │ │ │ ├── ngx_rtmp_bitop.h │ │ │ ├── ngx_rtmp_cmd_module.c │ │ │ ├── ngx_rtmp_cmd_module.h │ │ │ ├── ngx_rtmp_codec_module.c │ │ │ ├── ngx_rtmp_codec_module.h │ │ │ ├── ngx_rtmp_control_module.c │ │ │ ├── ngx_rtmp_core_module.c │ │ │ ├── ngx_rtmp_dynamic.c │ │ │ ├── ngx_rtmp_dynamic.h │ │ │ ├── ngx_rtmp_eval.c │ │ │ ├── ngx_rtmp_eval.h │ │ │ ├── ngx_rtmp_exec_module.c │ │ │ ├── ngx_rtmp_gop_module.c │ │ │ ├── ngx_rtmp_handler.c │ │ │ ├── ngx_rtmp_handshake.c │ │ │ ├── ngx_rtmp_init.c │ │ │ ├── ngx_rtmp_limit_module.c │ │ │ ├── ngx_rtmp_live_module.c │ │ │ ├── ngx_rtmp_live_module.h │ │ │ ├── ngx_rtmp_log_module.c │ │ │ ├── ngx_rtmp_monitor_module.c │ │ │ ├── ngx_rtmp_monitor_module.h │ │ │ ├── ngx_rtmp_notify_module.c │ │ │ ├── ngx_rtmp_notify_module.h │ │ │ ├── ngx_rtmp_proxy_protocol.c │ │ │ ├── ngx_rtmp_proxy_protocol.h │ │ │ ├── ngx_rtmp_receive.c │ │ │ ├── ngx_rtmp_record_module.c │ │ │ ├── ngx_rtmp_record_module.h │ │ │ ├── ngx_rtmp_send.c │ │ │ ├── ngx_rtmp_shared_module.c │ │ │ ├── ngx_rtmp_stat_module.c │ │ │ ├── ngx_rtmp_streams.h │ │ │ ├── ngx_rtmp_sys_stat_module.c │ │ │ ├── ngx_rtmp_variables.c │ │ │ ├── ngx_rtmp_variables.h │ │ │ └── ngx_rtmp_version.h │ │ ├── nginx-toolkit-module/ │ │ │ ├── COPYRIGHT │ │ │ ├── config │ │ │ ├── ngx_dynamic_conf.c │ │ │ ├── ngx_dynamic_conf.h │ │ │ ├── ngx_dynamic_resolver.c │ │ │ ├── ngx_dynamic_resolver.h │ │ │ ├── ngx_event_resolver.c │ │ │ ├── ngx_event_resolver.h │ │ │ ├── ngx_event_timer_module.c │ │ │ ├── ngx_event_timer_module.h │ │ │ ├── ngx_http_dynamic.c │ │ │ ├── ngx_http_dynamic.h │ │ │ ├── ngx_http_trace_module.c │ │ │ ├── ngx_map.c │ │ │ ├── ngx_map.h │ │ │ ├── ngx_poold.c │ │ │ ├── ngx_poold.h │ │ │ ├── ngx_rbuf.c │ │ │ ├── ngx_rbuf.h │ │ │ ├── ngx_timerd.c │ │ │ ├── ngx_timerd.h │ │ │ ├── ngx_toolkit_misc.c │ │ │ ├── ngx_toolkit_misc.h │ │ │ └── t/ │ │ │ ├── config │ │ │ ├── dns_install.sh │ │ │ ├── md5testfile │ │ │ ├── named.conf │ │ │ ├── nginx.conf │ │ │ ├── nginx_dynamic.conf │ │ │ ├── ngx_dynamic_conf_test_module.c │ │ │ ├── ngx_dynamic_resolver_test_module.c │ │ │ ├── ngx_event_resolver_test_module.c │ │ │ ├── ngx_event_timer_test_module.c │ │ │ ├── ngx_http_dynamic_test_module.c │ │ │ ├── ngx_map_test_module.c │ │ │ ├── ngx_poold_test_module.c │ │ │ ├── ngx_rbuf_test_module.c │ │ │ ├── ngx_test_macro.h │ │ │ ├── ngx_timerd_test_module.c │ │ │ ├── ngx_toolkit_misc_test_module.c │ │ │ ├── test.com.zone │ │ │ └── test1.com.zone │ │ └── nginx-ts-module/ │ │ ├── README.rst │ │ ├── config │ │ └── src/ │ │ ├── ngx_http_ts_module.c │ │ ├── ngx_stream_ts_module.c │ │ ├── ngx_ts_aac.c │ │ ├── ngx_ts_aac.h │ │ ├── ngx_ts_avc.c │ │ ├── ngx_ts_avc.h │ │ ├── ngx_ts_dash.c │ │ ├── ngx_ts_dash.h │ │ ├── ngx_ts_dash_mp4.c │ │ ├── ngx_ts_hls.c │ │ ├── ngx_ts_hls.h │ │ ├── ngx_ts_stream.c │ │ └── ngx_ts_stream.h │ ├── patches/ │ │ ├── 101-feature_test_fix.patch │ │ ├── 102-sizeof_test_fix.patch │ │ ├── 103-sys_nerr.patch │ │ ├── 104-endianness_fix.patch │ │ ├── 200-config.patch │ │ └── 201-ignore-invalid-options.patch │ ├── po/ │ │ └── zh_Hans/ │ │ └── pingos.po │ └── root/ │ ├── etc/ │ │ ├── config/ │ │ │ └── pingos │ │ ├── init.d/ │ │ │ └── pingos │ │ ├── pingos.template │ │ └── uci-defaults/ │ │ └── luci-app-nginx-pingos │ ├── resource/ │ │ ├── conf-template/ │ │ │ └── nginx.conf │ │ ├── crossdomain.xml │ │ └── stat.xsl │ └── usr/ │ └── share/ │ ├── rpcd/ │ │ └── acl.d/ │ │ └── luci-app-nginx-pingos.json │ └── ucitrack/ │ └── luci-app-nginx-pingos.json ├── luci-app-nikki/ │ ├── feed.sh │ ├── install.sh │ ├── luci-app-nikki/ │ │ ├── Makefile │ │ ├── htdocs/ │ │ │ └── luci-static/ │ │ │ └── resources/ │ │ │ ├── tools/ │ │ │ │ └── nikki.js │ │ │ └── view/ │ │ │ └── nikki/ │ │ │ ├── app.js │ │ │ ├── editor.js │ │ │ ├── log.js │ │ │ ├── mixin.js │ │ │ ├── profile.js │ │ │ └── proxy.js │ │ ├── po/ │ │ │ ├── ru/ │ │ │ │ └── nikki.po │ │ │ ├── templates/ │ │ │ │ └── nikki.pot │ │ │ ├── zh_Hans/ │ │ │ │ └── nikki.po │ │ │ └── zh_Hant/ │ │ │ └── nikki.po │ │ └── root/ │ │ └── usr/ │ │ └── share/ │ │ ├── luci/ │ │ │ └── menu.d/ │ │ │ └── luci-app-nikki.json │ │ └── rpcd/ │ │ ├── acl.d/ │ │ │ └── luci-app-nikki.json │ │ └── ucode/ │ │ └── luci.nikki │ ├── mihomo-alpha/ │ │ └── Makefile │ ├── mihomo-meta/ │ │ └── Makefile │ ├── nikki/ │ │ ├── Makefile │ │ └── files/ │ │ ├── mixin.yaml │ │ ├── nftables/ │ │ │ ├── geoip6_cn.nft │ │ │ └── geoip_cn.nft │ │ ├── nikki.conf │ │ ├── nikki.init │ │ ├── nikki.upgrade │ │ ├── scripts/ │ │ │ ├── debug.sh │ │ │ ├── firewall_include.sh │ │ │ └── include.sh │ │ ├── uci-defaults/ │ │ │ ├── firewall.sh │ │ │ ├── init.sh │ │ │ └── migrate.sh │ │ └── ucode/ │ │ ├── hijack.ut │ │ ├── include.uc │ │ └── mixin.uc │ └── uninstall.sh ├── luci-app-npc/ │ ├── Makefile │ ├── luasrc/ │ │ ├── controller/ │ │ │ └── npc.lua │ │ ├── model/ │ │ │ └── cbi/ │ │ │ └── npc.lua │ │ └── view/ │ │ └── npc/ │ │ └── npc_status.htm │ ├── po/ │ │ └── zh_Hans/ │ │ └── npc.po │ └── root/ │ └── etc/ │ ├── config/ │ │ └── npc │ ├── init.d/ │ │ └── npc │ └── uci-defaults/ │ └── luci-npc ├── luci-app-oled/ │ ├── linux/ │ │ ├── ssd1306.cfg │ │ └── ssd1306.service │ └── luci-app-oled/ │ ├── Makefile │ ├── luasrc/ │ │ ├── controller/ │ │ │ └── oled.lua │ │ ├── model/ │ │ │ └── cbi/ │ │ │ └── oled/ │ │ │ └── setting.lua │ │ └── view/ │ │ └── oled/ │ │ └── status.htm │ ├── po/ │ │ ├── zh_Hans/ │ │ │ └── oled.po │ │ └── zh_Hant/ │ │ └── oled.po │ ├── root/ │ │ ├── etc/ │ │ │ ├── config/ │ │ │ │ └── oled │ │ │ ├── init.d/ │ │ │ │ └── oled │ │ │ └── uci-defaults/ │ │ │ └── oled │ │ └── usr/ │ │ └── share/ │ │ └── rpcd/ │ │ └── acl.d/ │ │ └── luci-app-oled.json │ └── src/ │ ├── Example_Code/ │ │ ├── .clang-format │ │ ├── example_app.c │ │ ├── example_app.h │ │ └── main.c │ ├── I2C_Library/ │ │ ├── .clang-format │ │ ├── I2C.c │ │ └── I2C.h │ ├── Makefile │ └── SSD1306_OLED_Library/ │ ├── .clang-format │ ├── SSD1306_OLED.c │ ├── SSD1306_OLED.h │ └── gfxfont.h ├── luci-app-onliner/ │ ├── Makefile │ ├── luasrc/ │ │ ├── controller/ │ │ │ └── onliner.lua │ │ └── view/ │ │ └── onliner/ │ │ ├── display.htm │ │ └── onliner.htm │ └── root/ │ └── usr/ │ └── share/ │ └── onliner/ │ └── setnlbw.sh ├── luci-app-oscam/ │ ├── Makefile │ ├── luasrc/ │ │ ├── controller/ │ │ │ └── oscam.lua │ │ └── model/ │ │ └── cbi/ │ │ └── oscam.lua │ ├── po/ │ │ └── zh_Hans/ │ │ └── oscam.po │ └── root/ │ ├── etc/ │ │ ├── config/ │ │ │ └── oscam │ │ └── uci-defaults/ │ │ └── luci-oscam │ └── usr/ │ └── share/ │ └── rpcd/ │ └── acl.d/ │ └── luci-app-oscam.json ├── luci-app-partexp/ │ ├── Makefile │ ├── htdocs/ │ │ └── luci-static/ │ │ └── resources/ │ │ └── view/ │ │ ├── partexp/ │ │ │ ├── manual.js │ │ │ └── partexp.js │ │ └── partexp.js │ ├── po/ │ │ ├── templates/ │ │ │ └── partexp.po │ │ └── zh_Hans/ │ │ └── partexp.po │ └── root/ │ ├── etc/ │ │ ├── config/ │ │ │ └── partexp │ │ └── uci-defaults/ │ │ └── zzz_luci-app-partexp │ └── usr/ │ ├── bin/ │ │ └── partexp │ ├── libexec/ │ │ └── rpcd/ │ │ └── partexp │ └── share/ │ ├── luci/ │ │ └── menu.d/ │ │ └── luci-app-partexp.json │ └── rpcd/ │ └── acl.d/ │ └── luci-app-partexp.json ├── luci-app-passwall/ │ ├── Makefile │ ├── luasrc/ │ │ ├── controller/ │ │ │ └── passwall.lua │ │ ├── model/ │ │ │ └── cbi/ │ │ │ └── passwall/ │ │ │ ├── client/ │ │ │ │ ├── acl.lua │ │ │ │ ├── acl_config.lua │ │ │ │ ├── app_update.lua │ │ │ │ ├── global.lua │ │ │ │ ├── haproxy.lua │ │ │ │ ├── include/ │ │ │ │ │ └── shunt_options.lua │ │ │ │ ├── log.lua │ │ │ │ ├── node_config.lua │ │ │ │ ├── node_list.lua │ │ │ │ ├── node_subscribe.lua │ │ │ │ ├── node_subscribe_config.lua │ │ │ │ ├── other.lua │ │ │ │ ├── rule.lua │ │ │ │ ├── rule_list.lua │ │ │ │ ├── shunt_rules.lua │ │ │ │ ├── socks_config.lua │ │ │ │ └── type/ │ │ │ │ ├── hysteria2.lua │ │ │ │ ├── naive.lua │ │ │ │ ├── ray.lua │ │ │ │ ├── sing-box.lua │ │ │ │ ├── ss-rust.lua │ │ │ │ ├── ss.lua │ │ │ │ └── ssr.lua │ │ │ └── server/ │ │ │ ├── index.lua │ │ │ ├── type/ │ │ │ │ ├── hysteria2.lua │ │ │ │ ├── ray.lua │ │ │ │ ├── sing-box.lua │ │ │ │ ├── socks.lua │ │ │ │ ├── ss-rust.lua │ │ │ │ ├── ss.lua │ │ │ │ └── ssr.lua │ │ │ └── user.lua │ │ ├── passwall/ │ │ │ ├── api.lua │ │ │ ├── com.lua │ │ │ ├── server_app.lua │ │ │ ├── util_hysteria2.lua │ │ │ ├── util_naiveproxy.lua │ │ │ ├── util_shadowsocks.lua │ │ │ ├── util_sing-box.lua │ │ │ └── util_xray.lua │ │ └── view/ │ │ └── passwall/ │ │ ├── acl/ │ │ │ └── view_chinadns_log.htm │ │ ├── app_update/ │ │ │ └── app_version.htm │ │ ├── cbi/ │ │ │ ├── hidevalue.htm │ │ │ ├── nodes_dynamiclist.htm │ │ │ ├── nodes_dynamiclist_com.htm │ │ │ ├── nodes_listvalue.htm │ │ │ ├── nodes_listvalue_com.htm │ │ │ ├── nodes_multivalue.htm │ │ │ ├── nodes_multivalue_com.htm │ │ │ ├── nodes_value.htm │ │ │ ├── nodes_value_com.htm │ │ │ └── optimize_cbi_ui.htm │ │ ├── global/ │ │ │ ├── backup.htm │ │ │ ├── faq.htm │ │ │ ├── footer.htm │ │ │ ├── proxy.htm │ │ │ └── status.htm │ │ ├── haproxy/ │ │ │ ├── js.htm │ │ │ └── status.htm │ │ ├── include/ │ │ │ └── shunt_options.htm │ │ ├── log/ │ │ │ └── log.htm │ │ ├── node_config/ │ │ │ ├── footer.htm │ │ │ ├── header.htm │ │ │ └── link_share_man.htm │ │ ├── node_list/ │ │ │ ├── link_add_node.htm │ │ │ └── node_list.htm │ │ ├── node_subscribe/ │ │ │ └── js.htm │ │ ├── rule/ │ │ │ └── rule_version.htm │ │ ├── rule_list/ │ │ │ ├── geoview.htm │ │ │ └── js.htm │ │ ├── server/ │ │ │ ├── log.htm │ │ │ └── users_list_status.htm │ │ └── socks_auto_switch/ │ │ └── btn.htm │ ├── po/ │ │ └── zh_Hans/ │ │ └── passwall.po │ └── root/ │ ├── etc/ │ │ ├── config/ │ │ │ └── passwall_server │ │ ├── hotplug.d/ │ │ │ └── iface/ │ │ │ └── 98-passwall │ │ ├── init.d/ │ │ │ ├── passwall │ │ │ └── passwall_server │ │ └── uci-defaults/ │ │ └── luci-passwall │ └── usr/ │ └── share/ │ ├── passwall/ │ │ ├── 0_default_config │ │ ├── app.sh │ │ ├── clash_subconverter.lua │ │ ├── haproxy.lua │ │ ├── haproxy_check.sh │ │ ├── helper_chinadns_add.lua │ │ ├── helper_dnsmasq.lua │ │ ├── helper_smartdns.sh │ │ ├── helper_smartdns_add.lua │ │ ├── iptables.sh │ │ ├── lease2hosts.sh │ │ ├── monitor.sh │ │ ├── nftables.sh │ │ ├── rule_update.lua │ │ ├── rules/ │ │ │ ├── block_host │ │ │ ├── block_ip │ │ │ ├── chnlist │ │ │ ├── chnroute │ │ │ ├── chnroute6 │ │ │ ├── direct_host │ │ │ ├── direct_ip │ │ │ ├── domains_excluded │ │ │ ├── gfwlist │ │ │ ├── lanlist_ipv4 │ │ │ ├── lanlist_ipv6 │ │ │ ├── proxy_host │ │ │ └── proxy_ip │ │ ├── socks_auto_switch.sh │ │ ├── subscribe.lua │ │ ├── tasks.sh │ │ ├── test.sh │ │ └── utils.sh │ ├── rpcd/ │ │ └── acl.d/ │ │ └── luci-app-passwall.json │ └── ucitrack/ │ ├── luci-app-passwall-server.json │ └── luci-app-passwall.json ├── luci-app-passwall2/ │ ├── Makefile │ ├── luasrc/ │ │ ├── controller/ │ │ │ └── passwall2.lua │ │ ├── model/ │ │ │ └── cbi/ │ │ │ └── passwall2/ │ │ │ ├── client/ │ │ │ │ ├── acl.lua │ │ │ │ ├── acl_config.lua │ │ │ │ ├── app_update.lua │ │ │ │ ├── geoview.lua │ │ │ │ ├── global.lua │ │ │ │ ├── haproxy.lua │ │ │ │ ├── include/ │ │ │ │ │ └── shunt_options.lua │ │ │ │ ├── log.lua │ │ │ │ ├── node_config.lua │ │ │ │ ├── node_list.lua │ │ │ │ ├── node_subscribe.lua │ │ │ │ ├── node_subscribe_config.lua │ │ │ │ ├── other.lua │ │ │ │ ├── rule.lua │ │ │ │ ├── shunt_rules.lua │ │ │ │ ├── socks_config.lua │ │ │ │ └── type/ │ │ │ │ ├── hysteria2.lua │ │ │ │ ├── naive.lua │ │ │ │ ├── ray.lua │ │ │ │ ├── sing-box.lua │ │ │ │ ├── ss-rust.lua │ │ │ │ ├── ss.lua │ │ │ │ ├── ssr.lua │ │ │ │ └── tuic.lua │ │ │ └── server/ │ │ │ ├── index.lua │ │ │ ├── type/ │ │ │ │ ├── hysteria2.lua │ │ │ │ ├── ray.lua │ │ │ │ ├── sing-box.lua │ │ │ │ ├── ss-rust.lua │ │ │ │ ├── ss.lua │ │ │ │ └── ssr.lua │ │ │ └── user.lua │ │ ├── passwall2/ │ │ │ ├── api.lua │ │ │ ├── com.lua │ │ │ ├── server_app.lua │ │ │ ├── util_hysteria2.lua │ │ │ ├── util_naiveproxy.lua │ │ │ ├── util_shadowsocks.lua │ │ │ ├── util_sing-box.lua │ │ │ ├── util_tuic.lua │ │ │ └── util_xray.lua │ │ └── view/ │ │ └── passwall2/ │ │ ├── app_update/ │ │ │ └── app_version.htm │ │ ├── cbi/ │ │ │ ├── hidevalue.htm │ │ │ ├── nodes_dynamiclist.htm │ │ │ ├── nodes_dynamiclist_com.htm │ │ │ ├── nodes_listvalue.htm │ │ │ ├── nodes_listvalue_com.htm │ │ │ ├── nodes_multivalue.htm │ │ │ ├── nodes_multivalue_com.htm │ │ │ ├── nodes_value.htm │ │ │ ├── nodes_value_com.htm │ │ │ └── optimize_cbi_ui.htm │ │ ├── global/ │ │ │ ├── backup.htm │ │ │ ├── faq.htm │ │ │ ├── footer.htm │ │ │ └── status.htm │ │ ├── haproxy/ │ │ │ ├── js.htm │ │ │ └── status.htm │ │ ├── include/ │ │ │ └── shunt_options.htm │ │ ├── log/ │ │ │ └── log.htm │ │ ├── node_config/ │ │ │ ├── footer.htm │ │ │ ├── header.htm │ │ │ └── link_share_man.htm │ │ ├── node_list/ │ │ │ ├── link_add_node.htm │ │ │ └── node_list.htm │ │ ├── node_subscribe/ │ │ │ └── js.htm │ │ ├── rule/ │ │ │ ├── geoview.htm │ │ │ └── rule_version.htm │ │ ├── server/ │ │ │ ├── log.htm │ │ │ └── users_list_status.htm │ │ └── socks_auto_switch/ │ │ └── btn.htm │ ├── po/ │ │ ├── fa/ │ │ │ └── passwall2.po │ │ ├── ru/ │ │ │ └── passwall2.po │ │ ├── zh-tw/ │ │ │ └── passwall2.po │ │ └── zh_Hans/ │ │ └── passwall2.po │ └── root/ │ ├── etc/ │ │ ├── config/ │ │ │ └── passwall2_server │ │ ├── hotplug.d/ │ │ │ └── iface/ │ │ │ └── 98-passwall2 │ │ ├── init.d/ │ │ │ ├── passwall2 │ │ │ └── passwall2_server │ │ └── uci-defaults/ │ │ └── luci-passwall2 │ └── usr/ │ └── share/ │ ├── passwall2/ │ │ ├── 0_default_config │ │ ├── app.sh │ │ ├── domains_excluded │ │ ├── haproxy.lua │ │ ├── haproxy_check.sh │ │ ├── helper_dnsmasq.lua │ │ ├── i18n.lua │ │ ├── iptables.sh │ │ ├── lease2hosts.sh │ │ ├── monitor.sh │ │ ├── nftables.sh │ │ ├── rule_update.lua │ │ ├── socks_auto_switch.sh │ │ ├── subscribe.lua │ │ ├── tasks.sh │ │ ├── test.sh │ │ └── utils.sh │ ├── rpcd/ │ │ └── acl.d/ │ │ └── luci-app-passwall2.json │ └── ucitrack/ │ ├── luci-app-passwall2-server.json │ └── luci-app-passwall2.json ├── luci-app-poweroffdevice/ │ └── luci-app-poweroffdevice/ │ ├── Makefile │ ├── htdocs/ │ │ └── luci-static/ │ │ └── resources/ │ │ └── view/ │ │ └── system/ │ │ └── poweroffdevice.js │ ├── po/ │ │ └── zh_Hans/ │ │ └── poweroffdevice.po │ └── root/ │ └── usr/ │ └── share/ │ ├── luci/ │ │ └── menu.d/ │ │ └── luci-app-poweroffdevice.json │ └── rpcd/ │ └── acl.d/ │ └── luci-app-poweroffdevice.json ├── luci-app-pppoe-server/ │ ├── Makefile │ ├── luasrc/ │ │ ├── controller/ │ │ │ └── pppoe-server.lua │ │ ├── model/ │ │ │ └── cbi/ │ │ │ └── pppoe-server/ │ │ │ ├── online.lua │ │ │ ├── settings.lua │ │ │ └── users.lua │ │ └── view/ │ │ └── pppoe-server/ │ │ ├── index.htm │ │ └── status.htm │ ├── po/ │ │ └── zh_Hans/ │ │ └── pppoe-server.po │ └── root/ │ ├── etc/ │ │ ├── config/ │ │ │ └── luci-app-pppoe-server │ │ ├── init.d/ │ │ │ └── luci-app-pppoe-server │ │ └── uci-defaults/ │ │ └── luci-app-pppoe-server │ └── usr/ │ └── share/ │ ├── luci-app-pppoe-server/ │ │ ├── ip-down │ │ └── ip-up │ ├── rpcd/ │ │ └── acl.d/ │ │ └── luci-app-pppoe-server.json │ └── ucitrack/ │ └── luci-app-pppoe-server.json ├── luci-app-pushbot/ │ ├── Makefile │ ├── luasrc/ │ │ ├── controller/ │ │ │ └── pushbot.lua │ │ ├── model/ │ │ │ └── cbi/ │ │ │ └── pushbot/ │ │ │ ├── advanced.lua │ │ │ ├── client.lua │ │ │ ├── log.lua │ │ │ └── setting.lua │ │ └── view/ │ │ └── pushbot/ │ │ ├── pushbot_log.htm │ │ └── pushbot_status.htm │ └── root/ │ ├── etc/ │ │ ├── config/ │ │ │ └── pushbot │ │ ├── init.d/ │ │ │ └── pushbot │ │ └── uci-defaults/ │ │ └── luci-pushbot │ └── usr/ │ ├── bin/ │ │ └── pushbot/ │ │ ├── api/ │ │ │ ├── bark.json │ │ │ ├── dingding.json │ │ │ ├── diy.json │ │ │ ├── ent_wechat.json │ │ │ ├── feishu.json │ │ │ ├── ip_blacklist │ │ │ ├── ipv4.list │ │ │ ├── ipv6.list │ │ │ ├── pushdeer.json │ │ │ └── pushplus.json │ │ └── pushbot │ └── share/ │ └── rpcd/ │ └── acl.d/ │ └── luci-app-pushbot.json ├── luci-app-qfirehose/ │ ├── Makefile │ ├── htdocs/ │ │ └── luci-static/ │ │ └── resources/ │ │ └── view/ │ │ └── qfirehose.js │ ├── po/ │ │ └── zh_Hans/ │ │ └── qfirehose.po │ ├── qfirehose/ │ │ └── Makefile │ └── root/ │ ├── etc/ │ │ ├── config/ │ │ │ └── qfirehose │ │ └── init.d/ │ │ └── qfirehose │ └── usr/ │ ├── sbin/ │ │ ├── qfirehose-modem-info │ │ ├── qfirehose-start │ │ └── qfirehose-status │ └── share/ │ ├── luci/ │ │ └── menu.d/ │ │ └── luci-app-qfirehose.json │ └── rpcd/ │ └── acl.d/ │ └── luci-app-qfirehose.json ├── luci-app-qmodem/ │ ├── application/ │ │ ├── ndisc6/ │ │ │ ├── Makefile │ │ │ └── patches/ │ │ │ ├── 100-favor_bsd.patch │ │ │ └── 110-strverscmp.patch │ │ ├── qfirehose/ │ │ │ ├── Makefile │ │ │ └── src/ │ │ │ ├── .clang-format │ │ │ ├── Android.mk │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── NOTICE │ │ │ ├── ReleaseNote.txt │ │ │ ├── android/ │ │ │ │ ├── arm64-v8a/ │ │ │ │ │ └── QFirehose │ │ │ │ └── armeabi-v7a/ │ │ │ │ └── QFirehose │ │ │ ├── firehose_protocol.c │ │ │ ├── hostdl_packet.h │ │ │ ├── log/ │ │ │ │ ├── MCU_local.log.txt │ │ │ │ ├── MCU_remote.log.txt │ │ │ │ ├── Ubuntu_remote.log.txt │ │ │ │ └── pcie_mhi.log.txt │ │ │ ├── md5.c │ │ │ ├── md5.h │ │ │ ├── qfirehose.c │ │ │ ├── sahara.c │ │ │ ├── sahara.h │ │ │ ├── stream_download_protocol.c │ │ │ ├── usb2tcp.c │ │ │ ├── usb_linux.c │ │ │ └── usb_linux.h │ │ ├── qmodem/ │ │ │ ├── Makefile │ │ │ └── files/ │ │ │ ├── etc/ │ │ │ │ ├── config/ │ │ │ │ │ └── qmodem │ │ │ │ ├── hotplug.d/ │ │ │ │ │ ├── iface/ │ │ │ │ │ │ └── 80-wwan-led │ │ │ │ │ ├── net/ │ │ │ │ │ │ └── 20-modem-net │ │ │ │ │ └── usb/ │ │ │ │ │ └── 20-modem-usb │ │ │ │ ├── init.d/ │ │ │ │ │ ├── qmodem_init │ │ │ │ │ ├── qmodem_led │ │ │ │ │ ├── qmodem_network │ │ │ │ │ ├── qmodem_reboot │ │ │ │ │ └── qmodem_usage_stats │ │ │ │ └── uci-defaults/ │ │ │ │ ├── 99-add-5g-handler │ │ │ │ └── luci-app-qmodem │ │ │ └── usr/ │ │ │ ├── lib/ │ │ │ │ └── lua/ │ │ │ │ └── luci/ │ │ │ │ └── view/ │ │ │ │ └── admin_status/ │ │ │ │ └── index/ │ │ │ │ └── modem_overview.htm │ │ │ ├── libexec/ │ │ │ │ └── rpcd/ │ │ │ │ ├── modem_ctrl │ │ │ │ └── qmodem │ │ │ └── share/ │ │ │ ├── qmodem/ │ │ │ │ ├── at_commands_en.json │ │ │ │ ├── at_commands_zh.json │ │ │ │ ├── generic.sh │ │ │ │ ├── led_scripts/ │ │ │ │ │ ├── c2000_max.sh │ │ │ │ │ └── m60k63.sh │ │ │ │ ├── modem_ctrl.sh │ │ │ │ ├── modem_dial.sh │ │ │ │ ├── modem_hook.sh │ │ │ │ ├── modem_port_rule.json │ │ │ │ ├── modem_scan.sh │ │ │ │ ├── modem_support.json │ │ │ │ ├── modem_util.sh │ │ │ │ ├── usage_stats.sh │ │ │ │ └── vendor/ │ │ │ │ ├── dynamic_load.json │ │ │ │ ├── fibocom.sh │ │ │ │ ├── foxconn.sh │ │ │ │ ├── gosuncn.sh │ │ │ │ ├── huawei.sh │ │ │ │ ├── meig.sh │ │ │ │ ├── neoway.sh │ │ │ │ ├── quectel.sh │ │ │ │ ├── sierra.sh │ │ │ │ ├── simcom.sh │ │ │ │ └── telit.sh │ │ │ └── rpcd/ │ │ │ └── acl.d/ │ │ │ ├── luci-app-qmodem.json │ │ │ └── qmodem.json │ │ ├── qmodem_monitor/ │ │ │ ├── Makefile │ │ │ └── files/ │ │ │ ├── etc/ │ │ │ │ └── init.d/ │ │ │ │ └── qmodem_monitor │ │ │ └── usr/ │ │ │ └── share/ │ │ │ └── qmodem/ │ │ │ └── modem_monitor.sh │ │ ├── quectel_CM_5G_M/ │ │ │ ├── Makefile │ │ │ ├── files/ │ │ │ │ ├── apns.json │ │ │ │ ├── dhcp │ │ │ │ ├── rmnet.script │ │ │ │ ├── rmnet.sh │ │ │ │ ├── rmnet6.script │ │ │ │ ├── rmnet6.sh │ │ │ │ └── rmnet_init.sh │ │ │ └── src/ │ │ │ ├── CMakeLists.txt │ │ │ ├── GobiNetCM.c │ │ │ ├── Makefile │ │ │ ├── Makefile.am │ │ │ ├── NOTICE │ │ │ ├── QCQCTL.h │ │ │ ├── QCQMI.h │ │ │ ├── QCQMUX.c │ │ │ ├── QCQMUX.h │ │ │ ├── QMIThread.c │ │ │ ├── QMIThread.h │ │ │ ├── QmiWwanCM.c │ │ │ ├── ReleaseNote.txt │ │ │ ├── at_tok.c │ │ │ ├── at_tok.h │ │ │ ├── atc.c │ │ │ ├── atchannel.c │ │ │ ├── atchannel.h │ │ │ ├── configure.ac │ │ │ ├── default.script │ │ │ ├── default.script_ip │ │ │ ├── device.c │ │ │ ├── ethtool-copy.h │ │ │ ├── log/ │ │ │ │ ├── cdc_mbim.txt │ │ │ │ ├── cdc_mbim_vlan.txt │ │ │ │ ├── ecm_ncm_rndis.txt │ │ │ │ ├── gobinet.txt │ │ │ │ ├── gobinet_bridge.txt │ │ │ │ ├── gobinet_qmap=1.txt │ │ │ │ ├── gobinet_qmap=1_bridge.txt │ │ │ │ ├── gobinet_qmap=4.txt │ │ │ │ ├── gobinet_qmap=4_bridge.txt │ │ │ │ ├── pcie_mhi_mbim.txt │ │ │ │ ├── pcie_mhi_mbim_qmap=4.txt │ │ │ │ ├── pcie_mhi_qmap=1.txt │ │ │ │ ├── pcie_mhi_qmap=1_bridge.txt │ │ │ │ ├── pcie_mhi_qmap=4.txt │ │ │ │ ├── pcie_mhi_qmap=4_bridge.txt │ │ │ │ ├── qmi_wwan_q.txt │ │ │ │ ├── qmi_wwan_q_bridge.txt │ │ │ │ ├── qmi_wwan_q_qmap=1.txt │ │ │ │ ├── qmi_wwan_q_qmap=1_bridge.txt │ │ │ │ ├── qmi_wwan_q_qmap=4.txt │ │ │ │ ├── qmi_wwan_q_qmap=4_bridge.txt │ │ │ │ ├── qmi_wwan_qmap=4.txt │ │ │ │ └── usage_of_argument/ │ │ │ │ ├── 6.txt │ │ │ │ └── m.txt │ │ │ ├── main.c │ │ │ ├── mbim-cm.c │ │ │ ├── qendian.h │ │ │ ├── qlist.h │ │ │ ├── qmap_bridge_mode.c │ │ │ ├── qrtr.c │ │ │ ├── qrtr.h │ │ │ ├── quectel-atc-proxy.c │ │ │ ├── quectel-mbim-proxy.c │ │ │ ├── quectel-qmi-proxy.c │ │ │ ├── quectel-qrtr-proxy.c │ │ │ ├── rmnetctl.c │ │ │ ├── udhcpc.c │ │ │ ├── udhcpc_netlink.c │ │ │ ├── udhcpc_script.c │ │ │ ├── util.c │ │ │ └── util.h │ │ ├── sms-tool_q/ │ │ │ ├── Makefile │ │ │ ├── patches/ │ │ │ │ ├── 0001-send_raw_pdu.patch │ │ │ │ └── 0002-add_timeout_option.patch │ │ │ └── src/ │ │ │ ├── LICENSE-2.0.txt │ │ │ ├── Makefile │ │ │ ├── pdu_lib/ │ │ │ │ ├── Makefile │ │ │ │ ├── pdu.c │ │ │ │ ├── pdu.h │ │ │ │ ├── pdu_decoder.c │ │ │ │ └── ucs2_to_utf8.c │ │ │ └── sms_main.c │ │ ├── sms_forwarder/ │ │ │ ├── Makefile │ │ │ ├── files/ │ │ │ │ ├── etc/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── sms_daemon │ │ │ │ │ └── init.d/ │ │ │ │ │ └── sms_forwarder │ │ │ │ └── usr/ │ │ │ │ └── bin/ │ │ │ │ ├── sms_forward_custom_example.sh │ │ │ │ ├── sms_forward_feishu.sh │ │ │ │ ├── sms_forward_pushdeer.sh │ │ │ │ ├── sms_forward_serverchan.sh │ │ │ │ ├── sms_forward_tgbot.sh │ │ │ │ └── sms_forward_webhook.sh │ │ │ └── src/ │ │ │ ├── Makefile │ │ │ ├── Makefile.local │ │ │ ├── main.c │ │ │ └── sms_forwarder.h │ │ ├── sms_forwarder_next/ │ │ │ ├── Makefile │ │ │ └── files/ │ │ │ ├── scripts/ │ │ │ │ ├── sms_forward_custom_example.sh │ │ │ │ ├── sms_forward_feishu.sh │ │ │ │ ├── sms_forward_pushdeer.sh │ │ │ │ ├── sms_forward_serverchan.sh │ │ │ │ ├── sms_forward_tgbot.sh │ │ │ │ └── sms_forward_webhook.sh │ │ │ ├── sms_forwarder.example │ │ │ ├── sms_forwarder.init │ │ │ └── sms_forwarder_next │ │ ├── tom_modem/ │ │ │ ├── Makefile │ │ │ └── src/ │ │ │ ├── Makefile │ │ │ ├── extlib/ │ │ │ │ ├── pdu.c │ │ │ │ ├── pdu.h │ │ │ │ ├── pdu_decoder.c │ │ │ │ └── ucs2_to_utf8.c │ │ │ ├── main.c │ │ │ ├── main.h │ │ │ ├── modem_types.h │ │ │ ├── operations.c │ │ │ ├── operations.h │ │ │ ├── transport.c │ │ │ ├── transport.h │ │ │ ├── ttydevice.c │ │ │ ├── ttydevice.h │ │ │ ├── ubus_client.c │ │ │ ├── ubus_client.h │ │ │ ├── utils.c │ │ │ └── utils.h │ │ └── ubus_at_daemon/ │ │ ├── Makefile │ │ ├── files/ │ │ │ └── etc/ │ │ │ ├── config/ │ │ │ │ └── ubus-at-daemon │ │ │ └── init.d/ │ │ │ └── ubus-at-daemon │ │ └── src/ │ │ ├── Makefile │ │ ├── at_handler.c │ │ ├── config_loader.c │ │ ├── const.h │ │ ├── event_callback.c │ │ ├── main.c │ │ ├── port_manager.c │ │ └── ubus_at_daemon.h │ ├── driver/ │ │ ├── fibocom_QMI_WWAN/ │ │ │ ├── Makefile │ │ │ └── src/ │ │ │ ├── Makefile │ │ │ └── qmi_wwan_f.c │ │ ├── quectel_MHI/ │ │ │ ├── Makefile │ │ │ ├── files/ │ │ │ │ └── pcie_mhi │ │ │ └── src/ │ │ │ ├── Makefile │ │ │ ├── README │ │ │ ├── ReleaseNote.txt │ │ │ ├── controllers/ │ │ │ │ ├── Kconfig │ │ │ │ ├── Makefile │ │ │ │ ├── mhi_arch_qti.c │ │ │ │ ├── mhi_qcom.c │ │ │ │ ├── mhi_qcom.h │ │ │ │ ├── mhi_qti.c │ │ │ │ └── mhi_qti.h │ │ │ ├── core/ │ │ │ │ ├── Makefile │ │ │ │ ├── mhi.h │ │ │ │ ├── mhi_boot.c │ │ │ │ ├── mhi_dtr.c │ │ │ │ ├── mhi_init.c │ │ │ │ ├── mhi_internal.h │ │ │ │ ├── mhi_main.c │ │ │ │ ├── mhi_pm.c │ │ │ │ ├── mhi_sdx20.h │ │ │ │ └── sdx20_mhi.h │ │ │ ├── devices/ │ │ │ │ ├── Kconfig │ │ │ │ ├── Makefile │ │ │ │ ├── mhi_netdev.c │ │ │ │ ├── mhi_netdev_quectel.c │ │ │ │ ├── mhi_satellite.c │ │ │ │ └── mhi_uci.c │ │ │ └── log/ │ │ │ ├── AT_OVER_PCIE.txt │ │ │ ├── MBIM_OVER_PCIE.txt │ │ │ ├── QMI_OVER_PCIE.txt │ │ │ └── QXDM_OVER_PCIE.txt │ │ ├── quectel_QMI_WWAN/ │ │ │ ├── Makefile │ │ │ └── src/ │ │ │ ├── Makefile │ │ │ ├── ReleaseNote.txt │ │ │ ├── qmi_wwan_q.c │ │ │ └── rmnet_nss.c │ │ └── simcom_QMI_WWAN/ │ │ ├── Makefile │ │ └── src/ │ │ ├── Makefile │ │ └── qmi_wwan_s.c │ ├── luci/ │ │ ├── luci-app-qmodem/ │ │ │ ├── Makefile │ │ │ ├── htdocs/ │ │ │ │ └── luci-static/ │ │ │ │ └── resources/ │ │ │ │ └── view/ │ │ │ │ └── status/ │ │ │ │ └── include/ │ │ │ │ └── 11_modem.js │ │ │ ├── luasrc/ │ │ │ │ ├── controller/ │ │ │ │ │ └── qmodem.lua │ │ │ │ ├── model/ │ │ │ │ │ └── cbi/ │ │ │ │ │ └── qmodem/ │ │ │ │ │ ├── dial_config.lua │ │ │ │ │ ├── dial_overview.lua │ │ │ │ │ ├── modem_cfg.lua │ │ │ │ │ ├── modem_config.lua │ │ │ │ │ ├── settings.lua │ │ │ │ │ └── slot_config.lua │ │ │ │ └── view/ │ │ │ │ └── qmodem/ │ │ │ │ ├── dial_overview.htm │ │ │ │ ├── modem_config_add.htm │ │ │ │ ├── modem_debug.htm │ │ │ │ └── modem_info.htm │ │ │ └── po/ │ │ │ ├── ru/ │ │ │ │ └── modem.po │ │ │ ├── template/ │ │ │ │ └── qmodem.po │ │ │ └── zh_Hans/ │ │ │ └── qmodem.po │ │ ├── luci-app-qmodem-hc/ │ │ │ ├── Makefile │ │ │ ├── luasrc/ │ │ │ │ ├── controller/ │ │ │ │ │ └── qmodem_hc.lua │ │ │ │ ├── model/ │ │ │ │ │ └── cbi/ │ │ │ │ │ └── qmodem_hc/ │ │ │ │ │ └── modem_sim.lua │ │ │ │ └── view/ │ │ │ │ └── qmodem_hc/ │ │ │ │ └── modem_sim.htm │ │ │ ├── po/ │ │ │ │ └── zh_Hans/ │ │ │ │ └── modem_hc.po │ │ │ └── root/ │ │ │ ├── etc/ │ │ │ │ ├── config/ │ │ │ │ │ └── qmodem_hc_sim │ │ │ │ ├── init.d/ │ │ │ │ │ └── qmodem_hc_sim │ │ │ │ └── uci-defaults/ │ │ │ │ └── luci-app-qmodem-hc │ │ │ └── usr/ │ │ │ └── share/ │ │ │ └── qmodem/ │ │ │ └── modem_sim.sh │ │ ├── luci-app-qmodem-monitor/ │ │ │ ├── Makefile │ │ │ ├── htdocs/ │ │ │ │ └── luci-static/ │ │ │ │ └── resources/ │ │ │ │ └── view/ │ │ │ │ └── qmodem/ │ │ │ │ └── monitor.js │ │ │ ├── po/ │ │ │ │ ├── templates/ │ │ │ │ │ └── qmodem-monitor.pot │ │ │ │ └── zh_Hans/ │ │ │ │ └── qmodem-monitor.po │ │ │ └── root/ │ │ │ └── usr/ │ │ │ └── share/ │ │ │ ├── luci/ │ │ │ │ └── menu.d/ │ │ │ │ └── luci-app-qmodem-monitor.json │ │ │ └── rpcd/ │ │ │ └── acl.d/ │ │ │ └── luci-app-qmodem-monitor.json │ │ ├── luci-app-qmodem-mwan/ │ │ │ ├── Makefile │ │ │ ├── luasrc/ │ │ │ │ ├── controller/ │ │ │ │ │ └── qmodem_mwan.lua │ │ │ │ └── model/ │ │ │ │ └── cbi/ │ │ │ │ └── qmodem/ │ │ │ │ └── mwan_config.lua │ │ │ ├── po/ │ │ │ │ └── zh_Hans/ │ │ │ │ └── modem_mwan.po │ │ │ └── root/ │ │ │ ├── etc/ │ │ │ │ ├── config/ │ │ │ │ │ └── qmodem_mwan │ │ │ │ ├── init.d/ │ │ │ │ │ └── qmodem_mwan │ │ │ │ ├── uci-defaults/ │ │ │ │ │ ├── 99-setup-mwan │ │ │ │ │ └── luci-app-modem-mwan │ │ │ │ └── udhcpc.user.d/ │ │ │ │ └── 01-reload-mwan3.dhcpscript │ │ │ └── usr/ │ │ │ └── share/ │ │ │ └── qmodem/ │ │ │ └── modem_mwan.sh │ │ ├── luci-app-qmodem-next/ │ │ │ ├── Makefile │ │ │ ├── htdocs/ │ │ │ │ └── luci-static/ │ │ │ │ └── resources/ │ │ │ │ ├── qmodem/ │ │ │ │ │ ├── modem_cfg.js │ │ │ │ │ ├── qmodem-next.css │ │ │ │ │ ├── qmodem.js │ │ │ │ │ ├── sms-pdu.js │ │ │ │ │ └── sms.js │ │ │ │ └── view/ │ │ │ │ ├── qmodem/ │ │ │ │ │ ├── config_advanced.js │ │ │ │ │ ├── debug.js │ │ │ │ │ ├── network_config.js │ │ │ │ │ ├── overview.js │ │ │ │ │ ├── settings.js │ │ │ │ │ ├── sim_switch.js │ │ │ │ │ ├── sms.js │ │ │ │ │ ├── sms_conversation.js │ │ │ │ │ ├── sms_forward.js │ │ │ │ │ └── sms_sim.js │ │ │ │ └── status/ │ │ │ │ └── include/ │ │ │ │ └── 11_modem.js │ │ │ ├── po/ │ │ │ │ ├── template/ │ │ │ │ │ └── qmodem-next.po │ │ │ │ └── zh_Hans/ │ │ │ │ └── luci-app-qmodem-next.po │ │ │ └── root/ │ │ │ ├── lib/ │ │ │ │ └── upgrade/ │ │ │ │ └── keep.d/ │ │ │ │ └── qmodme-next │ │ │ └── usr/ │ │ │ └── share/ │ │ │ ├── luci/ │ │ │ │ └── menu.d/ │ │ │ │ └── luci-app-qmodem-next.json │ │ │ └── rpcd/ │ │ │ ├── acl.d/ │ │ │ │ └── luci-app-qmodem-next.json │ │ │ └── ucode/ │ │ │ └── qmodem_sms │ │ ├── luci-app-qmodem-sms/ │ │ │ ├── Makefile │ │ │ ├── luasrc/ │ │ │ │ ├── controller/ │ │ │ │ │ └── qmodem_sms.lua │ │ │ │ ├── model/ │ │ │ │ │ └── cbi/ │ │ │ │ │ └── qmodem_sms/ │ │ │ │ │ ├── sms_forward.lua │ │ │ │ │ └── sms_forward_extedit.lua │ │ │ │ └── view/ │ │ │ │ └── modem_sms/ │ │ │ │ └── modem_sms.htm │ │ │ └── po/ │ │ │ └── zh_Hans/ │ │ │ └── modem_sms.po │ │ ├── luci-app-qmodem-ttl/ │ │ │ ├── Makefile │ │ │ ├── luasrc/ │ │ │ │ ├── controller/ │ │ │ │ │ └── qmodem_ttl.lua │ │ │ │ └── model/ │ │ │ │ └── cbi/ │ │ │ │ └── qmodem/ │ │ │ │ └── modem_ttl.lua │ │ │ ├── po/ │ │ │ │ ├── templates/ │ │ │ │ │ └── qmodem-ttl.pot │ │ │ │ └── zh_Hans/ │ │ │ │ └── qmodem-ttl.po │ │ │ └── root/ │ │ │ └── etc/ │ │ │ ├── config/ │ │ │ │ └── qmodem_ttl │ │ │ ├── init.d/ │ │ │ │ └── qmodem_ttl │ │ │ └── uci-defaults/ │ │ │ └── add-fw-include │ │ └── luci-app-qmodem-ttlfw4/ │ │ ├── Makefile │ │ ├── htdocs/ │ │ │ └── luci-static/ │ │ │ └── resources/ │ │ │ └── view/ │ │ │ └── qmodem/ │ │ │ └── ttl.js │ │ ├── po/ │ │ │ ├── templates/ │ │ │ │ └── qmodem-ttlfw4.pot │ │ │ └── zh_Hans/ │ │ │ └── qmodem-ttlfw4.po │ │ └── root/ │ │ ├── etc/ │ │ │ ├── config/ │ │ │ │ └── qmodem_ttl │ │ │ └── init.d/ │ │ │ └── qmodem_ttl │ │ └── usr/ │ │ └── share/ │ │ ├── luci/ │ │ │ └── menu.d/ │ │ │ └── luci-app-qmodem-ttlfw4.json │ │ └── rpcd/ │ │ └── acl.d/ │ │ └── luci-app-qmodem-ttlfw4.json │ ├── scripts/ │ │ ├── auto_translate_i18n.py │ │ ├── extract_i18n_strings.py │ │ ├── ubus_benchmark.py │ │ └── update_support_list.py │ └── version.mk ├── luci-app-quickstart/ │ ├── Makefile │ ├── htdocs/ │ │ └── luci-static/ │ │ └── quickstart/ │ │ ├── i18n/ │ │ │ ├── en.json │ │ │ └── zh_Hans.json │ │ ├── index.js │ │ ├── style.css │ │ └── vendor.js │ ├── luasrc/ │ │ ├── controller/ │ │ │ ├── istore_backend.lua │ │ │ └── quickstart.lua │ │ └── view/ │ │ └── quickstart/ │ │ ├── home.htm │ │ └── main.htm │ ├── po/ │ │ └── zh_Hans/ │ │ └── quickstart.po │ └── root/ │ ├── etc/ │ │ └── uci-defaults/ │ │ └── 50_luci-quickstart │ └── usr/ │ ├── libexec/ │ │ └── quickstart/ │ │ └── auto_setup.sh │ └── share/ │ └── luci/ │ └── menu.d/ │ └── luci-app-quickstart.json ├── luci-app-shutdown/ │ ├── Makefile │ ├── luasrc/ │ │ ├── controller/ │ │ │ └── shutdown.lua │ │ ├── model/ │ │ │ └── cbi/ │ │ │ └── shutdown.lua │ │ └── view/ │ │ └── shutdown/ │ │ └── actions.htm │ ├── po/ │ │ └── zh_Hans/ │ │ └── shutdown.po │ └── root/ │ └── usr/ │ └── share/ │ └── rpcd/ │ └── acl.d/ │ └── luci-app-shutdown.json ├── luci-app-ssr-mudb-server/ │ ├── Makefile │ ├── luasrc/ │ │ ├── controller/ │ │ │ └── ssr_mudb_server.lua │ │ ├── model/ │ │ │ └── cbi/ │ │ │ └── ssr_mudb_server/ │ │ │ └── index.lua │ │ └── view/ │ │ └── ssr_mudb_server/ │ │ ├── status.htm │ │ ├── user.htm │ │ └── users.htm │ ├── po/ │ │ └── zh_Hans/ │ │ └── ssr_mudb_server.po │ └── root/ │ ├── etc/ │ │ ├── config/ │ │ │ ├── ssr_mudb_server │ │ │ └── ssr_mudb_server.json │ │ ├── init.d/ │ │ │ └── ssr_mudb_server │ │ └── uci-defaults/ │ │ └── luci-app-ssr-mudb-server │ └── usr/ │ └── share/ │ ├── rpcd/ │ │ └── acl.d/ │ │ └── luci-app-ssr-mudb-server.json │ ├── ssr_mudb_server/ │ │ ├── .travis.yml │ │ ├── CHANGES │ │ ├── Dockerfile │ │ ├── MANIFEST.in │ │ ├── apiconfig.py │ │ ├── asyncmgr.py │ │ ├── clear_traffic_all_users.sh │ │ ├── config.json │ │ ├── configloader.py │ │ ├── db_transfer.py │ │ ├── firewall.lua │ │ ├── importloader.py │ │ ├── initcfg.bat │ │ ├── initcfg.sh │ │ ├── initmudbjson.sh │ │ ├── logrun.sh │ │ ├── mudb.json │ │ ├── mujson_mgr.py │ │ ├── mysql.json │ │ ├── run.sh │ │ ├── server.py │ │ ├── server_pool.py │ │ ├── setup.py │ │ ├── setup_cymysql.sh │ │ ├── shadowsocks/ │ │ │ ├── __init__.py │ │ │ ├── asyncdns.py │ │ │ ├── common.py │ │ │ ├── crypto/ │ │ │ │ ├── __init__.py │ │ │ │ ├── ctypes_libsodium.py │ │ │ │ ├── ctypes_openssl.py │ │ │ │ ├── openssl.py │ │ │ │ ├── rc4_md5.py │ │ │ │ ├── sodium.py │ │ │ │ ├── table.py │ │ │ │ └── util.py │ │ │ ├── daemon.py │ │ │ ├── encrypt.py │ │ │ ├── eventloop.py │ │ │ ├── local.py │ │ │ ├── logrun.sh │ │ │ ├── lru_cache.py │ │ │ ├── manager.py │ │ │ ├── obfs.py │ │ │ ├── obfsplugin/ │ │ │ │ ├── __init__.py │ │ │ │ ├── auth.py │ │ │ │ ├── auth_chain.py │ │ │ │ ├── http_simple.py │ │ │ │ ├── obfs_tls.py │ │ │ │ ├── plain.py │ │ │ │ └── verify.py │ │ │ ├── ordereddict.py │ │ │ ├── run.sh │ │ │ ├── server.py │ │ │ ├── shell.py │ │ │ ├── stop.sh │ │ │ ├── tail.sh │ │ │ ├── tcprelay.py │ │ │ ├── udprelay.py │ │ │ ├── user.py │ │ │ └── version.py │ │ ├── stop.sh │ │ ├── switchrule.py │ │ ├── tail.sh │ │ ├── tests/ │ │ │ ├── aes-cfb1.json │ │ │ ├── aes-cfb8.json │ │ │ ├── aes-ctr.json │ │ │ ├── aes.json │ │ │ ├── assert.sh │ │ │ ├── chacha20.json │ │ │ ├── client-multi-server-ip.json │ │ │ ├── coverage_server.py │ │ │ ├── fastopen.json │ │ │ ├── ipv6-client-side.json │ │ │ ├── ipv6.json │ │ │ ├── jenkins.sh │ │ │ ├── libsodium/ │ │ │ │ └── install.sh │ │ │ ├── nose_plugin.py │ │ │ ├── rc4-md5.json │ │ │ ├── salsa20-ctr.json │ │ │ ├── salsa20.json │ │ │ ├── server-multi-passwd-client-side.json │ │ │ ├── server-multi-passwd-table.json │ │ │ ├── server-multi-passwd.json │ │ │ ├── server-multi-ports.json │ │ │ ├── setup_tc.sh │ │ │ ├── socksify/ │ │ │ │ ├── install.sh │ │ │ │ └── socks.conf │ │ │ ├── table.json │ │ │ ├── test.py │ │ │ ├── test_command.sh │ │ │ ├── test_daemon.sh │ │ │ ├── test_large_file.sh │ │ │ ├── test_udp_src.py │ │ │ ├── test_udp_src.sh │ │ │ └── workers.json │ │ ├── user-config.json │ │ ├── userapiconfig.py │ │ ├── usermysql.json │ │ └── utils/ │ │ ├── autoban.py │ │ └── fail2ban/ │ │ └── shadowsocks.conf │ └── ucitrack/ │ └── luci-app-ssr-mudb-server.json ├── luci-app-ssr-plus/ │ ├── chinadns-ng/ │ │ └── Makefile │ ├── dns2socks/ │ │ └── Makefile │ ├── dns2socks-rust/ │ │ └── Makefile │ ├── dns2tcp/ │ │ └── Makefile │ ├── dnsproxy/ │ │ └── Makefile │ ├── gn/ │ │ ├── Makefile │ │ └── src/ │ │ └── out/ │ │ └── last_commit_position.h │ ├── hysteria/ │ │ └── Makefile │ ├── ipt2socks/ │ │ └── Makefile │ ├── lua-neturl/ │ │ ├── Makefile │ │ └── patches/ │ │ └── 010-userinfo-regex.patch │ ├── luci-app-ssr-plus/ │ │ ├── Makefile │ │ ├── luasrc/ │ │ │ ├── controller/ │ │ │ │ └── shadowsocksr.lua │ │ │ ├── model/ │ │ │ │ └── cbi/ │ │ │ │ └── shadowsocksr/ │ │ │ │ ├── advanced.lua │ │ │ │ ├── client-config.lua │ │ │ │ ├── client.lua │ │ │ │ ├── control.lua │ │ │ │ ├── log.lua │ │ │ │ ├── server-config.lua │ │ │ │ ├── server.lua │ │ │ │ ├── servers.lua │ │ │ │ └── status.lua │ │ │ └── view/ │ │ │ └── shadowsocksr/ │ │ │ ├── backup_restore.htm │ │ │ ├── certupload.htm │ │ │ ├── check.htm │ │ │ ├── checkport.htm │ │ │ ├── log.htm │ │ │ ├── optimize_cbi_ui.htm │ │ │ ├── ping.htm │ │ │ ├── refresh.htm │ │ │ ├── reset.htm │ │ │ ├── server_list.htm │ │ │ ├── socket.htm │ │ │ ├── ssrurl.htm │ │ │ ├── status.htm │ │ │ └── subscribe.htm │ │ ├── po/ │ │ │ ├── templates/ │ │ │ │ └── ssr-plus.pot │ │ │ └── zh_Hans/ │ │ │ └── ssr-plus.po │ │ └── root/ │ │ ├── etc/ │ │ │ ├── config/ │ │ │ │ └── shadowsocksr │ │ │ ├── init.d/ │ │ │ │ └── shadowsocksr │ │ │ ├── ssrplus/ │ │ │ │ ├── ad.conf │ │ │ │ ├── applechina.conf │ │ │ │ ├── black.list │ │ │ │ ├── china_ssr.txt │ │ │ │ ├── deny.list │ │ │ │ ├── dnsproxy_dns.list │ │ │ │ ├── gfw_base.conf │ │ │ │ ├── gfw_list.conf │ │ │ │ ├── mosdns-config.yaml │ │ │ │ ├── netflix.list │ │ │ │ ├── netflixip.list │ │ │ │ ├── oversea_list.conf │ │ │ │ └── white.list │ │ │ └── uci-defaults/ │ │ │ └── luci-ssr-plus │ │ └── usr/ │ │ ├── bin/ │ │ │ ├── ssr-monitor │ │ │ ├── ssr-rules │ │ │ └── ssr-switch │ │ └── share/ │ │ ├── rpcd/ │ │ │ └── acl.d/ │ │ │ └── luci-app-ssr-plus.json │ │ ├── shadowsocksr/ │ │ │ ├── chinaipset.sh │ │ │ ├── gen_config.lua │ │ │ ├── genred2config.sh │ │ │ ├── gfw2ipset.sh │ │ │ ├── hy2_test.sh │ │ │ ├── shadowsocksr.config │ │ │ ├── ssrplusupdate.sh │ │ │ ├── subscribe.lua │ │ │ └── update.lua │ │ └── ucitrack/ │ │ └── luci-app-ssr-plus.json │ ├── microsocks/ │ │ └── Makefile │ ├── mosdns/ │ │ ├── Makefile │ │ └── patches/ │ │ ├── 203-add-response-for-bad-request-in-ServeHTTP-handler.patch │ │ ├── 204-black_hole-apply-Fisher-Yates-shuffle-algorithm-to-r.patch │ │ └── 205-format-logtime.patch │ ├── naiveproxy/ │ │ ├── Makefile │ │ └── src/ │ │ └── init_env.sh │ ├── redsocks2/ │ │ └── Makefile │ ├── shadow-tls/ │ │ ├── Makefile │ │ └── patches/ │ │ ├── 010-Fix-reading-WildcardSNI-from-sip003_arg-115.patch │ │ ├── 011-fix-use-tls1-2-only-website-for-tls12-test-suites-129.patch │ │ └── 100-update-monoio.patch │ ├── shadowsocks-libev/ │ │ ├── Makefile │ │ ├── files/ │ │ │ ├── shadowsocks-libev.config │ │ │ ├── shadowsocks-libev.init │ │ │ └── ss-rules/ │ │ │ ├── chain.uc │ │ │ ├── set.uc │ │ │ └── ss-rules.uc │ │ └── patches/ │ │ ├── 100-Upgrade-PCRE-to-PCRE2.patch │ │ ├── 101-Fix-mishandling-of-incoming-socket-buffer.-It-must-b.patch │ │ └── 102-deprecate-load16-be-replace-with-ntohs.patch │ ├── shadowsocks-rust/ │ │ └── Makefile │ ├── shadowsocksr-libev/ │ │ ├── Makefile │ │ ├── patches/ │ │ │ ├── 0001-Add-ss-server-and-ss-check.patch │ │ │ ├── 0002-Revert-verify_simple-and-auth_simple.patch │ │ │ ├── 0003-Refine-Usage.patch │ │ │ ├── 100-fix-gcc-10.patch │ │ │ ├── 101-Fix-Werror-sizeof-pointer-memaccess.patch │ │ │ ├── 102-Read-listening-mode-from-config.patch │ │ │ ├── 103-Add-TPROXY-support-for-TCP-ssr-redir.patch │ │ │ ├── 104-fix-use-after-free.patch │ │ │ └── 105-Upgrade-PCRE-to-PCRE2.patch │ │ └── src/ │ │ ├── AUTHORS │ │ ├── CMakeLists.txt │ │ ├── COPYING │ │ ├── Changes │ │ ├── INSTALL │ │ ├── Makefile.am │ │ ├── Makefile.in │ │ ├── acl/ │ │ │ ├── chn.acl │ │ │ ├── gfwlist.acl │ │ │ ├── local.acl │ │ │ └── server_block_chn.acl │ │ ├── aclocal.m4 │ │ ├── auto/ │ │ │ ├── ar-lib │ │ │ ├── compile │ │ │ ├── config.guess │ │ │ ├── config.rpath │ │ │ ├── config.sub │ │ │ ├── depcomp │ │ │ ├── install-sh │ │ │ ├── ltmain.sh │ │ │ └── missing │ │ ├── autogen.sh │ │ ├── cmake/ │ │ │ ├── CheckDIRSymbolExists.cmake │ │ │ ├── CheckPrototypeExists.cmake │ │ │ ├── CheckSTDC.cmake │ │ │ ├── FindPCRE.cmake │ │ │ ├── configure.cmake │ │ │ └── dist.cmake │ │ ├── completions/ │ │ │ └── bash/ │ │ │ ├── ss-local │ │ │ ├── ss-manager │ │ │ ├── ss-redir │ │ │ ├── ss-server │ │ │ └── ss-tunnel │ │ ├── config.h.cmake │ │ ├── config.h.in │ │ ├── configure │ │ ├── configure.ac │ │ ├── debian/ │ │ │ ├── README.Debian │ │ │ ├── changelog │ │ │ ├── compat │ │ │ ├── config.json │ │ │ ├── control │ │ │ ├── copyright │ │ │ ├── copyright.original │ │ │ ├── libshadowsocks-libev-dev.install │ │ │ ├── libshadowsocks-libev2.install │ │ │ ├── rules │ │ │ ├── shadowsocks-libev-local@.service │ │ │ ├── shadowsocks-libev-redir@.service │ │ │ ├── shadowsocks-libev-server@.service │ │ │ ├── shadowsocks-libev-tunnel@.service │ │ │ ├── shadowsocks-libev.default │ │ │ ├── shadowsocks-libev.docs │ │ │ ├── shadowsocks-libev.init │ │ │ ├── shadowsocks-libev.install │ │ │ ├── shadowsocks-libev.postinst │ │ │ ├── shadowsocks-libev.postrm │ │ │ ├── shadowsocks-libev.service │ │ │ ├── source/ │ │ │ │ └── format │ │ │ ├── source.lintian-overrides │ │ │ └── watch │ │ ├── doc/ │ │ │ ├── Makefile.am │ │ │ ├── Makefile.in │ │ │ ├── asciidoc.conf │ │ │ ├── manpage-base.xsl │ │ │ ├── manpage-bold-literal.xsl │ │ │ ├── manpage-normal.xsl │ │ │ ├── shadowsocks-libev.asciidoc │ │ │ ├── ss-local.asciidoc │ │ │ ├── ss-manager.asciidoc │ │ │ ├── ss-nat.asciidoc │ │ │ ├── ss-redir.asciidoc │ │ │ ├── ss-server.asciidoc │ │ │ └── ss-tunnel.asciidoc │ │ ├── docker/ │ │ │ ├── alpine/ │ │ │ │ ├── Dockerfile │ │ │ │ └── docker-compose.yml │ │ │ └── ubuntu/ │ │ │ ├── Dockerfile │ │ │ └── entrypoint │ │ ├── libcork/ │ │ │ ├── .idea/ │ │ │ │ ├── libcork-develop.iml │ │ │ │ ├── misc.xml │ │ │ │ ├── modules.xml │ │ │ │ └── workspace.xml │ │ │ ├── CMakeLists.txt │ │ │ ├── COPYING │ │ │ ├── Makefile.am │ │ │ ├── Makefile.in │ │ │ ├── README.markdown │ │ │ ├── cli/ │ │ │ │ └── commands.c │ │ │ ├── cmake/ │ │ │ │ └── FindCTargets.cmake │ │ │ ├── core/ │ │ │ │ ├── allocator.c │ │ │ │ ├── error.c │ │ │ │ ├── gc.c │ │ │ │ ├── hash.c │ │ │ │ ├── ip-address.c │ │ │ │ ├── mempool.c │ │ │ │ ├── timestamp.c │ │ │ │ ├── u128.c │ │ │ │ └── version.c │ │ │ ├── ds/ │ │ │ │ ├── array.c │ │ │ │ ├── bitset.c │ │ │ │ ├── buffer.c │ │ │ │ ├── dllist.c │ │ │ │ ├── file-stream.c │ │ │ │ ├── hash-table.c │ │ │ │ ├── managed-buffer.c │ │ │ │ ├── ring-buffer.c │ │ │ │ └── slice.c │ │ │ ├── include/ │ │ │ │ └── libcork/ │ │ │ │ ├── cli/ │ │ │ │ │ └── commands.h │ │ │ │ ├── cli.h │ │ │ │ ├── config/ │ │ │ │ │ ├── arch.h │ │ │ │ │ ├── bsd.h │ │ │ │ │ ├── config.h │ │ │ │ │ ├── gcc.h │ │ │ │ │ ├── linux.h │ │ │ │ │ ├── macosx.h │ │ │ │ │ ├── mingw32.h │ │ │ │ │ ├── solaris.h │ │ │ │ │ └── version.h │ │ │ │ ├── config.h │ │ │ │ ├── core/ │ │ │ │ │ ├── allocator.h │ │ │ │ │ ├── api.h │ │ │ │ │ ├── attributes.h │ │ │ │ │ ├── byte-order.h │ │ │ │ │ ├── callbacks.h │ │ │ │ │ ├── error.h │ │ │ │ │ ├── gc.h │ │ │ │ │ ├── hash.h │ │ │ │ │ ├── id.h │ │ │ │ │ ├── mempool.h │ │ │ │ │ ├── net-addresses.h │ │ │ │ │ ├── timestamp.h │ │ │ │ │ ├── types.h │ │ │ │ │ └── u128.h │ │ │ │ ├── core.h │ │ │ │ ├── ds/ │ │ │ │ │ ├── array.h │ │ │ │ │ ├── bitset.h │ │ │ │ │ ├── buffer.h │ │ │ │ │ ├── dllist.h │ │ │ │ │ ├── hash-table.h │ │ │ │ │ ├── managed-buffer.h │ │ │ │ │ ├── ring-buffer.h │ │ │ │ │ ├── slice.h │ │ │ │ │ └── stream.h │ │ │ │ ├── ds.h │ │ │ │ ├── helpers/ │ │ │ │ │ ├── errors.h │ │ │ │ │ ├── gc.h │ │ │ │ │ └── posix.h │ │ │ │ ├── os/ │ │ │ │ │ ├── files.h │ │ │ │ │ ├── process.h │ │ │ │ │ └── subprocess.h │ │ │ │ ├── os.h │ │ │ │ ├── threads/ │ │ │ │ │ ├── atomics.h │ │ │ │ │ └── basics.h │ │ │ │ └── threads.h │ │ │ ├── posix/ │ │ │ │ ├── directory-walker.c │ │ │ │ ├── env.c │ │ │ │ ├── exec.c │ │ │ │ ├── files.c │ │ │ │ ├── process.c │ │ │ │ └── subprocess.c │ │ │ └── pthreads/ │ │ │ └── thread.c │ │ ├── libev/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Changes │ │ │ ├── Makefile.am │ │ │ ├── Makefile.in │ │ │ ├── README │ │ │ ├── Symbols.ev │ │ │ ├── Symbols.event │ │ │ ├── aclocal.m4 │ │ │ ├── autogen.sh │ │ │ ├── cmake/ │ │ │ │ ├── configure.cmake │ │ │ │ └── dist.cmake │ │ │ ├── config.h.cmake │ │ │ ├── configure.ac │ │ │ ├── ev++.h │ │ │ ├── ev.3 │ │ │ ├── ev.c │ │ │ ├── ev.h │ │ │ ├── ev.pod │ │ │ ├── ev_epoll.c │ │ │ ├── ev_kqueue.c │ │ │ ├── ev_poll.c │ │ │ ├── ev_port.c │ │ │ ├── ev_select.c │ │ │ ├── ev_vars.h │ │ │ ├── ev_win32.c │ │ │ ├── ev_wrap.h │ │ │ ├── event.c │ │ │ ├── event.h │ │ │ └── libev.m4 │ │ ├── libipset/ │ │ │ ├── CMakeLists.txt │ │ │ ├── LICENSE.txt │ │ │ ├── Makefile.am │ │ │ ├── Makefile.in │ │ │ ├── README.markdown │ │ │ ├── bdd/ │ │ │ │ ├── Makefile.am │ │ │ │ ├── Makefile.in │ │ │ │ ├── assignments.c │ │ │ │ ├── basics.c │ │ │ │ ├── bdd-iterator.c │ │ │ │ ├── expanded.c │ │ │ │ ├── reachable.c │ │ │ │ ├── read.c │ │ │ │ └── write.c │ │ │ ├── cmake/ │ │ │ │ └── FindCTargets.cmake │ │ │ ├── general.c │ │ │ ├── include/ │ │ │ │ └── ipset/ │ │ │ │ ├── bdd/ │ │ │ │ │ └── nodes.h │ │ │ │ ├── bits.h │ │ │ │ ├── errors.h │ │ │ │ ├── ipset.h │ │ │ │ └── logging.h │ │ │ ├── map/ │ │ │ │ ├── Makefile.am │ │ │ │ ├── Makefile.in │ │ │ │ ├── allocation.c │ │ │ │ ├── inspection-template.c.in │ │ │ │ ├── inspection.c │ │ │ │ ├── ipv4_map.c │ │ │ │ ├── ipv6_map.c │ │ │ │ └── storage.c │ │ │ └── set/ │ │ │ ├── Makefile.am │ │ │ ├── Makefile.in │ │ │ ├── allocation.c │ │ │ ├── inspection-template.c.in │ │ │ ├── inspection.c │ │ │ ├── ipv4_set.c │ │ │ ├── ipv6_set.c │ │ │ ├── iterator.c │ │ │ └── storage.c │ │ ├── libsodium/ │ │ │ ├── .travis.yml │ │ │ ├── AUTHORS │ │ │ ├── CMakeLists.txt │ │ │ ├── ChangeLog │ │ │ ├── Makefile.am │ │ │ ├── Makefile.in │ │ │ ├── README │ │ │ ├── README.markdown │ │ │ ├── THANKS │ │ │ ├── autogen.sh │ │ │ ├── build-aux/ │ │ │ │ ├── config.guess │ │ │ │ ├── config.sub │ │ │ │ ├── depcomp │ │ │ │ ├── install-sh │ │ │ │ ├── ltmain.sh │ │ │ │ └── missing │ │ │ ├── configure │ │ │ ├── configure.ac │ │ │ ├── libsodium.pc.in │ │ │ ├── libsodium.sln │ │ │ ├── libsodium.vcxproj │ │ │ ├── libsodium.vcxproj.filters │ │ │ ├── m4/ │ │ │ │ ├── ax_check_compile_flag.m4 │ │ │ │ ├── ax_check_define.m4 │ │ │ │ ├── ax_check_gnu_make.m4 │ │ │ │ ├── ax_check_link_flag.m4 │ │ │ │ ├── ld-output-def.m4 │ │ │ │ └── pkg.m4 │ │ │ ├── packaging/ │ │ │ │ └── nuget/ │ │ │ │ ├── package.bat │ │ │ │ ├── package.config │ │ │ │ └── package.gsl │ │ │ ├── src/ │ │ │ │ ├── Makefile.am │ │ │ │ ├── Makefile.in │ │ │ │ └── libsodium/ │ │ │ │ ├── Makefile.am │ │ │ │ ├── Makefile.in │ │ │ │ ├── crypto_aead/ │ │ │ │ │ ├── aes256gcm/ │ │ │ │ │ │ └── aesni/ │ │ │ │ │ │ └── aead_aes256gcm_aesni.c │ │ │ │ │ └── chacha20poly1305/ │ │ │ │ │ └── sodium/ │ │ │ │ │ └── aead_chacha20poly1305.c │ │ │ │ ├── crypto_auth/ │ │ │ │ │ ├── crypto_auth.c │ │ │ │ │ ├── hmacsha256/ │ │ │ │ │ │ ├── auth_hmacsha256_api.c │ │ │ │ │ │ └── cp/ │ │ │ │ │ │ ├── hmac_hmacsha256.c │ │ │ │ │ │ └── verify_hmacsha256.c │ │ │ │ │ ├── hmacsha512/ │ │ │ │ │ │ ├── auth_hmacsha512_api.c │ │ │ │ │ │ └── cp/ │ │ │ │ │ │ ├── hmac_hmacsha512.c │ │ │ │ │ │ └── verify_hmacsha512.c │ │ │ │ │ └── hmacsha512256/ │ │ │ │ │ ├── auth_hmacsha512256_api.c │ │ │ │ │ └── cp/ │ │ │ │ │ ├── hmac_hmacsha512256.c │ │ │ │ │ └── verify_hmacsha512256.c │ │ │ │ ├── crypto_box/ │ │ │ │ │ ├── crypto_box.c │ │ │ │ │ ├── crypto_box_easy.c │ │ │ │ │ ├── crypto_box_seal.c │ │ │ │ │ └── curve25519xsalsa20poly1305/ │ │ │ │ │ ├── box_curve25519xsalsa20poly1305_api.c │ │ │ │ │ └── ref/ │ │ │ │ │ ├── after_curve25519xsalsa20poly1305.c │ │ │ │ │ ├── before_curve25519xsalsa20poly1305.c │ │ │ │ │ ├── box_curve25519xsalsa20poly1305.c │ │ │ │ │ └── keypair_curve25519xsalsa20poly1305.c │ │ │ │ ├── crypto_core/ │ │ │ │ │ ├── hsalsa20/ │ │ │ │ │ │ ├── core_hsalsa20_api.c │ │ │ │ │ │ └── ref2/ │ │ │ │ │ │ └── core_hsalsa20.c │ │ │ │ │ ├── salsa20/ │ │ │ │ │ │ ├── core_salsa20_api.c │ │ │ │ │ │ └── ref/ │ │ │ │ │ │ └── core_salsa20.c │ │ │ │ │ ├── salsa2012/ │ │ │ │ │ │ ├── core_salsa2012_api.c │ │ │ │ │ │ └── ref/ │ │ │ │ │ │ └── core_salsa2012.c │ │ │ │ │ └── salsa208/ │ │ │ │ │ ├── core_salsa208_api.c │ │ │ │ │ └── ref/ │ │ │ │ │ └── core_salsa208.c │ │ │ │ ├── crypto_generichash/ │ │ │ │ │ ├── blake2/ │ │ │ │ │ │ ├── generichash_blake2_api.c │ │ │ │ │ │ └── ref/ │ │ │ │ │ │ ├── blake2-impl.h │ │ │ │ │ │ ├── blake2.h │ │ │ │ │ │ ├── blake2b-compress-ref.c │ │ │ │ │ │ ├── blake2b-compress-sse41.c │ │ │ │ │ │ ├── blake2b-compress-ssse3.c │ │ │ │ │ │ ├── blake2b-load-sse2.h │ │ │ │ │ │ ├── blake2b-load-sse41.h │ │ │ │ │ │ ├── blake2b-ref.c │ │ │ │ │ │ ├── blake2b-round.h │ │ │ │ │ │ └── generichash_blake2b.c │ │ │ │ │ └── crypto_generichash.c │ │ │ │ ├── crypto_hash/ │ │ │ │ │ ├── crypto_hash.c │ │ │ │ │ ├── sha256/ │ │ │ │ │ │ ├── cp/ │ │ │ │ │ │ │ └── hash_sha256.c │ │ │ │ │ │ └── hash_sha256_api.c │ │ │ │ │ └── sha512/ │ │ │ │ │ ├── cp/ │ │ │ │ │ │ └── hash_sha512.c │ │ │ │ │ └── hash_sha512_api.c │ │ │ │ ├── crypto_onetimeauth/ │ │ │ │ │ ├── crypto_onetimeauth.c │ │ │ │ │ └── poly1305/ │ │ │ │ │ ├── donna/ │ │ │ │ │ │ ├── poly1305_donna.c │ │ │ │ │ │ ├── poly1305_donna.h │ │ │ │ │ │ ├── poly1305_donna32.h │ │ │ │ │ │ └── poly1305_donna64.h │ │ │ │ │ ├── onetimeauth_poly1305.c │ │ │ │ │ ├── onetimeauth_poly1305.h │ │ │ │ │ └── sse2/ │ │ │ │ │ ├── poly1305_sse2.c │ │ │ │ │ └── poly1305_sse2.h │ │ │ │ ├── crypto_pwhash/ │ │ │ │ │ └── scryptsalsa208sha256/ │ │ │ │ │ ├── crypto_scrypt-common.c │ │ │ │ │ ├── crypto_scrypt.h │ │ │ │ │ ├── nosse/ │ │ │ │ │ │ └── pwhash_scryptsalsa208sha256_nosse.c │ │ │ │ │ ├── pbkdf2-sha256.c │ │ │ │ │ ├── pbkdf2-sha256.h │ │ │ │ │ ├── pwhash_scryptsalsa208sha256.c │ │ │ │ │ ├── scrypt_platform.c │ │ │ │ │ ├── sse/ │ │ │ │ │ │ └── pwhash_scryptsalsa208sha256_sse.c │ │ │ │ │ └── sysendian.h │ │ │ │ ├── crypto_scalarmult/ │ │ │ │ │ ├── crypto_scalarmult.c │ │ │ │ │ └── curve25519/ │ │ │ │ │ ├── donna_c64/ │ │ │ │ │ │ ├── curve25519_donna_c64.c │ │ │ │ │ │ └── curve25519_donna_c64.h │ │ │ │ │ ├── ref10/ │ │ │ │ │ │ ├── curve25519_ref10.c │ │ │ │ │ │ ├── curve25519_ref10.h │ │ │ │ │ │ ├── fe.h │ │ │ │ │ │ ├── fe_0_curve25519_ref10.c │ │ │ │ │ │ ├── fe_1_curve25519_ref10.c │ │ │ │ │ │ ├── fe_add_curve25519_ref10.c │ │ │ │ │ │ ├── fe_copy_curve25519_ref10.c │ │ │ │ │ │ ├── fe_cswap_curve25519_ref10.c │ │ │ │ │ │ ├── fe_frombytes_curve25519_ref10.c │ │ │ │ │ │ ├── fe_invert_curve25519_ref10.c │ │ │ │ │ │ ├── fe_mul121666_curve25519_ref10.c │ │ │ │ │ │ ├── fe_mul_curve25519_ref10.c │ │ │ │ │ │ ├── fe_sq_curve25519_ref10.c │ │ │ │ │ │ ├── fe_sub_curve25519_ref10.c │ │ │ │ │ │ ├── fe_tobytes_curve25519_ref10.c │ │ │ │ │ │ ├── montgomery.h │ │ │ │ │ │ └── pow225521.h │ │ │ │ │ ├── sandy2x/ │ │ │ │ │ │ ├── consts.S │ │ │ │ │ │ ├── consts_namespace.h │ │ │ │ │ │ ├── curve25519_sandy2x.c │ │ │ │ │ │ ├── curve25519_sandy2x.h │ │ │ │ │ │ ├── fe.h │ │ │ │ │ │ ├── fe51.h │ │ │ │ │ │ ├── fe51_invert.c │ │ │ │ │ │ ├── fe51_mul.S │ │ │ │ │ │ ├── fe51_namespace.h │ │ │ │ │ │ ├── fe51_nsquare.S │ │ │ │ │ │ ├── fe51_pack.S │ │ │ │ │ │ ├── fe_frombytes_sandy2x.c │ │ │ │ │ │ ├── ladder.S │ │ │ │ │ │ ├── ladder.h │ │ │ │ │ │ ├── ladder_base.S │ │ │ │ │ │ ├── ladder_base.h │ │ │ │ │ │ ├── ladder_base_namespace.h │ │ │ │ │ │ ├── ladder_namespace.h │ │ │ │ │ │ └── sandy2x.S │ │ │ │ │ ├── scalarmult_curve25519.c │ │ │ │ │ └── scalarmult_curve25519.h │ │ │ │ ├── crypto_secretbox/ │ │ │ │ │ ├── crypto_secretbox.c │ │ │ │ │ ├── crypto_secretbox_easy.c │ │ │ │ │ └── xsalsa20poly1305/ │ │ │ │ │ ├── ref/ │ │ │ │ │ │ └── box_xsalsa20poly1305.c │ │ │ │ │ └── secretbox_xsalsa20poly1305_api.c │ │ │ │ ├── crypto_shorthash/ │ │ │ │ │ ├── crypto_shorthash.c │ │ │ │ │ └── siphash24/ │ │ │ │ │ ├── ref/ │ │ │ │ │ │ └── shorthash_siphash24.c │ │ │ │ │ └── shorthash_siphash24_api.c │ │ │ │ ├── crypto_sign/ │ │ │ │ │ ├── crypto_sign.c │ │ │ │ │ └── ed25519/ │ │ │ │ │ ├── description │ │ │ │ │ ├── ref10/ │ │ │ │ │ │ ├── base.h │ │ │ │ │ │ ├── base2.h │ │ │ │ │ │ ├── d.h │ │ │ │ │ │ ├── d2.h │ │ │ │ │ │ ├── fe.h │ │ │ │ │ │ ├── fe_0.c │ │ │ │ │ │ ├── fe_1.c │ │ │ │ │ │ ├── fe_add.c │ │ │ │ │ │ ├── fe_cmov.c │ │ │ │ │ │ ├── fe_copy.c │ │ │ │ │ │ ├── fe_frombytes.c │ │ │ │ │ │ ├── fe_invert.c │ │ │ │ │ │ ├── fe_isnegative.c │ │ │ │ │ │ ├── fe_isnonzero.c │ │ │ │ │ │ ├── fe_mul.c │ │ │ │ │ │ ├── fe_neg.c │ │ │ │ │ │ ├── fe_pow22523.c │ │ │ │ │ │ ├── fe_sq.c │ │ │ │ │ │ ├── fe_sq2.c │ │ │ │ │ │ ├── fe_sub.c │ │ │ │ │ │ ├── fe_tobytes.c │ │ │ │ │ │ ├── ge.h │ │ │ │ │ │ ├── ge_add.c │ │ │ │ │ │ ├── ge_add.h │ │ │ │ │ │ ├── ge_double_scalarmult.c │ │ │ │ │ │ ├── ge_frombytes.c │ │ │ │ │ │ ├── ge_madd.c │ │ │ │ │ │ ├── ge_madd.h │ │ │ │ │ │ ├── ge_msub.c │ │ │ │ │ │ ├── ge_msub.h │ │ │ │ │ │ ├── ge_p1p1_to_p2.c │ │ │ │ │ │ ├── ge_p1p1_to_p3.c │ │ │ │ │ │ ├── ge_p2_0.c │ │ │ │ │ │ ├── ge_p2_dbl.c │ │ │ │ │ │ ├── ge_p2_dbl.h │ │ │ │ │ │ ├── ge_p3_0.c │ │ │ │ │ │ ├── ge_p3_dbl.c │ │ │ │ │ │ ├── ge_p3_to_cached.c │ │ │ │ │ │ ├── ge_p3_to_p2.c │ │ │ │ │ │ ├── ge_p3_tobytes.c │ │ │ │ │ │ ├── ge_precomp_0.c │ │ │ │ │ │ ├── ge_scalarmult_base.c │ │ │ │ │ │ ├── ge_sub.c │ │ │ │ │ │ ├── ge_sub.h │ │ │ │ │ │ ├── ge_tobytes.c │ │ │ │ │ │ ├── keypair.c │ │ │ │ │ │ ├── obsolete.c │ │ │ │ │ │ ├── open.c │ │ │ │ │ │ ├── pow22523.h │ │ │ │ │ │ ├── pow225521.h │ │ │ │ │ │ ├── sc.h │ │ │ │ │ │ ├── sc_muladd.c │ │ │ │ │ │ ├── sc_reduce.c │ │ │ │ │ │ ├── sign.c │ │ │ │ │ │ └── sqrtm1.h │ │ │ │ │ └── sign_ed25519_api.c │ │ │ │ ├── crypto_stream/ │ │ │ │ │ ├── aes128ctr/ │ │ │ │ │ │ ├── portable/ │ │ │ │ │ │ │ ├── afternm_aes128ctr.c │ │ │ │ │ │ │ ├── beforenm_aes128ctr.c │ │ │ │ │ │ │ ├── common.h │ │ │ │ │ │ │ ├── common_aes128ctr.c │ │ │ │ │ │ │ ├── consts.h │ │ │ │ │ │ │ ├── consts_aes128ctr.c │ │ │ │ │ │ │ ├── int128.h │ │ │ │ │ │ │ ├── int128_aes128ctr.c │ │ │ │ │ │ │ ├── stream_aes128ctr.c │ │ │ │ │ │ │ ├── types.h │ │ │ │ │ │ │ └── xor_afternm_aes128ctr.c │ │ │ │ │ │ └── stream_aes128ctr_api.c │ │ │ │ │ ├── chacha20/ │ │ │ │ │ │ ├── ref/ │ │ │ │ │ │ │ ├── stream_chacha20_ref.c │ │ │ │ │ │ │ └── stream_chacha20_ref.h │ │ │ │ │ │ ├── stream_chacha20.c │ │ │ │ │ │ ├── stream_chacha20.h │ │ │ │ │ │ └── vec/ │ │ │ │ │ │ ├── stream_chacha20_vec.c │ │ │ │ │ │ └── stream_chacha20_vec.h │ │ │ │ │ ├── crypto_stream.c │ │ │ │ │ ├── salsa20/ │ │ │ │ │ │ ├── amd64_xmm6/ │ │ │ │ │ │ │ └── stream_salsa20_amd64_xmm6.S │ │ │ │ │ │ ├── ref/ │ │ │ │ │ │ │ ├── stream_salsa20_ref.c │ │ │ │ │ │ │ └── xor_salsa20_ref.c │ │ │ │ │ │ └── stream_salsa20_api.c │ │ │ │ │ ├── salsa2012/ │ │ │ │ │ │ ├── ref/ │ │ │ │ │ │ │ ├── stream_salsa2012.c │ │ │ │ │ │ │ └── xor_salsa2012.c │ │ │ │ │ │ └── stream_salsa2012_api.c │ │ │ │ │ ├── salsa208/ │ │ │ │ │ │ ├── ref/ │ │ │ │ │ │ │ ├── stream_salsa208.c │ │ │ │ │ │ │ └── xor_salsa208.c │ │ │ │ │ │ └── stream_salsa208_api.c │ │ │ │ │ └── xsalsa20/ │ │ │ │ │ ├── ref/ │ │ │ │ │ │ ├── stream_xsalsa20.c │ │ │ │ │ │ └── xor_xsalsa20.c │ │ │ │ │ └── stream_xsalsa20_api.c │ │ │ │ ├── crypto_verify/ │ │ │ │ │ ├── 16/ │ │ │ │ │ │ ├── ref/ │ │ │ │ │ │ │ └── verify_16.c │ │ │ │ │ │ └── verify_16_api.c │ │ │ │ │ ├── 32/ │ │ │ │ │ │ ├── ref/ │ │ │ │ │ │ │ └── verify_32.c │ │ │ │ │ │ └── verify_32_api.c │ │ │ │ │ └── 64/ │ │ │ │ │ ├── ref/ │ │ │ │ │ │ └── verify_64.c │ │ │ │ │ └── verify_64_api.c │ │ │ │ ├── include/ │ │ │ │ │ ├── Makefile.am │ │ │ │ │ ├── Makefile.in │ │ │ │ │ ├── sodium/ │ │ │ │ │ │ ├── core.h │ │ │ │ │ │ ├── crypto_aead_aes256gcm.h │ │ │ │ │ │ ├── crypto_aead_chacha20poly1305.h │ │ │ │ │ │ ├── crypto_auth.h │ │ │ │ │ │ ├── crypto_auth_hmacsha256.h │ │ │ │ │ │ ├── crypto_auth_hmacsha512.h │ │ │ │ │ │ ├── crypto_auth_hmacsha512256.h │ │ │ │ │ │ ├── crypto_box.h │ │ │ │ │ │ ├── crypto_box_curve25519xsalsa20poly1305.h │ │ │ │ │ │ ├── crypto_core_hsalsa20.h │ │ │ │ │ │ ├── crypto_core_salsa20.h │ │ │ │ │ │ ├── crypto_core_salsa2012.h │ │ │ │ │ │ ├── crypto_core_salsa208.h │ │ │ │ │ │ ├── crypto_generichash.h │ │ │ │ │ │ ├── crypto_generichash_blake2b.h │ │ │ │ │ │ ├── crypto_hash.h │ │ │ │ │ │ ├── crypto_hash_sha256.h │ │ │ │ │ │ ├── crypto_hash_sha512.h │ │ │ │ │ │ ├── crypto_int32.h │ │ │ │ │ │ ├── crypto_int64.h │ │ │ │ │ │ ├── crypto_onetimeauth.h │ │ │ │ │ │ ├── crypto_onetimeauth_poly1305.h │ │ │ │ │ │ ├── crypto_pwhash_scryptsalsa208sha256.h │ │ │ │ │ │ ├── crypto_scalarmult.h │ │ │ │ │ │ ├── crypto_scalarmult_curve25519.h │ │ │ │ │ │ ├── crypto_secretbox.h │ │ │ │ │ │ ├── crypto_secretbox_xsalsa20poly1305.h │ │ │ │ │ │ ├── crypto_shorthash.h │ │ │ │ │ │ ├── crypto_shorthash_siphash24.h │ │ │ │ │ │ ├── crypto_sign.h │ │ │ │ │ │ ├── crypto_sign_ed25519.h │ │ │ │ │ │ ├── crypto_sign_edwards25519sha512batch.h │ │ │ │ │ │ ├── crypto_stream.h │ │ │ │ │ │ ├── crypto_stream_aes128ctr.h │ │ │ │ │ │ ├── crypto_stream_chacha20.h │ │ │ │ │ │ ├── crypto_stream_salsa20.h │ │ │ │ │ │ ├── crypto_stream_salsa2012.h │ │ │ │ │ │ ├── crypto_stream_salsa208.h │ │ │ │ │ │ ├── crypto_stream_xsalsa20.h │ │ │ │ │ │ ├── crypto_uint16.h │ │ │ │ │ │ ├── crypto_uint32.h │ │ │ │ │ │ ├── crypto_uint64.h │ │ │ │ │ │ ├── crypto_uint8.h │ │ │ │ │ │ ├── crypto_verify_16.h │ │ │ │ │ │ ├── crypto_verify_32.h │ │ │ │ │ │ ├── crypto_verify_64.h │ │ │ │ │ │ ├── export.h │ │ │ │ │ │ ├── randombytes.h │ │ │ │ │ │ ├── randombytes_nativeclient.h │ │ │ │ │ │ ├── randombytes_salsa20_random.h │ │ │ │ │ │ ├── randombytes_sysrandom.h │ │ │ │ │ │ ├── runtime.h │ │ │ │ │ │ ├── utils.h │ │ │ │ │ │ └── version.h.in │ │ │ │ │ └── sodium.h │ │ │ │ ├── randombytes/ │ │ │ │ │ ├── nativeclient/ │ │ │ │ │ │ └── randombytes_nativeclient.c │ │ │ │ │ ├── randombytes.c │ │ │ │ │ ├── salsa20/ │ │ │ │ │ │ └── randombytes_salsa20_random.c │ │ │ │ │ └── sysrandom/ │ │ │ │ │ └── randombytes_sysrandom.c │ │ │ │ └── sodium/ │ │ │ │ ├── core.c │ │ │ │ ├── runtime.c │ │ │ │ ├── utils.c │ │ │ │ └── version.c │ │ │ └── test/ │ │ │ ├── HAVE_AMD64_ASM.c │ │ │ ├── HAVE_CPUID.c │ │ │ ├── HAVE_TI_MODE.c │ │ │ ├── HAVE_WEAK_SYMBOLS.c │ │ │ ├── IS_STDC_LIMIT_MACROS_NEEDED.c │ │ │ ├── Makefile.am │ │ │ ├── default/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── Makefile.am │ │ │ │ ├── aead_chacha20poly1305.c │ │ │ │ ├── auth.c │ │ │ │ ├── auth2.c │ │ │ │ ├── auth3.c │ │ │ │ ├── auth5.c │ │ │ │ ├── auth6.c │ │ │ │ ├── auth7.c │ │ │ │ ├── box.c │ │ │ │ ├── box2.c │ │ │ │ ├── box7.c │ │ │ │ ├── box8.c │ │ │ │ ├── box_easy.c │ │ │ │ ├── box_easy2.c │ │ │ │ ├── box_seal.c │ │ │ │ ├── box_seed.c │ │ │ │ ├── chacha20.c │ │ │ │ ├── cmptest.h │ │ │ │ ├── core1.c │ │ │ │ ├── core2.c │ │ │ │ ├── core3.c │ │ │ │ ├── core4.c │ │ │ │ ├── core5.c │ │ │ │ ├── core6.c │ │ │ │ ├── ed25519_convert.c │ │ │ │ ├── generichash.c │ │ │ │ ├── generichash2.c │ │ │ │ ├── generichash3.c │ │ │ │ ├── hash.c │ │ │ │ ├── hash3.c │ │ │ │ ├── onetimeauth.c │ │ │ │ ├── onetimeauth2.c │ │ │ │ ├── onetimeauth7.c │ │ │ │ ├── pre.js.inc │ │ │ │ ├── pwhash.c │ │ │ │ ├── pwhash_scrypt_ll.c │ │ │ │ ├── randombytes.c │ │ │ │ ├── scalarmult.c │ │ │ │ ├── scalarmult2.c │ │ │ │ ├── scalarmult5.c │ │ │ │ ├── scalarmult6.c │ │ │ │ ├── scalarmult7.c │ │ │ │ ├── secretbox.c │ │ │ │ ├── secretbox2.c │ │ │ │ ├── secretbox7.c │ │ │ │ ├── secretbox8.c │ │ │ │ ├── secretbox_easy.c │ │ │ │ ├── secretbox_easy2.c │ │ │ │ ├── shorthash.c │ │ │ │ ├── sign.c │ │ │ │ ├── sodium_core.c │ │ │ │ ├── sodium_utils.c │ │ │ │ ├── sodium_utils2.c │ │ │ │ ├── sodium_utils3.c │ │ │ │ ├── sodium_version.c │ │ │ │ ├── stream.c │ │ │ │ ├── stream2.c │ │ │ │ ├── stream3.c │ │ │ │ ├── stream4.c │ │ │ │ ├── verify1.c │ │ │ │ └── wintest.bat │ │ │ └── quirks/ │ │ │ └── quirks.h │ │ ├── libudns/ │ │ │ ├── CMakeLists.txt │ │ │ ├── COPYING.LGPL │ │ │ ├── Makefile.am │ │ │ ├── Makefile.in │ │ │ ├── NEWS │ │ │ ├── NOTES │ │ │ ├── TODO │ │ │ ├── dnsget.1 │ │ │ ├── dnsget.c │ │ │ ├── ex-rdns.c │ │ │ ├── getopt.c │ │ │ ├── inet_XtoX.c │ │ │ ├── rblcheck.1 │ │ │ ├── rblcheck.c │ │ │ ├── udns.3 │ │ │ ├── udns.h │ │ │ ├── udns_XtoX.c │ │ │ ├── udns_bl.c │ │ │ ├── udns_codes.c │ │ │ ├── udns_dn.c │ │ │ ├── udns_dntosp.c │ │ │ ├── udns_init.c │ │ │ ├── udns_jran.c │ │ │ ├── udns_misc.c │ │ │ ├── udns_parse.c │ │ │ ├── udns_resolver.c │ │ │ ├── udns_rr_a.c │ │ │ ├── udns_rr_mx.c │ │ │ ├── udns_rr_naptr.c │ │ │ ├── udns_rr_ptr.c │ │ │ ├── udns_rr_srv.c │ │ │ └── udns_rr_txt.c │ │ ├── m4/ │ │ │ ├── ax_pthread.m4 │ │ │ ├── ax_tls.m4 │ │ │ ├── inet_ntop.m4 │ │ │ ├── libtool.m4 │ │ │ ├── ltoptions.m4 │ │ │ ├── ltsugar.m4 │ │ │ ├── ltversion.m4 │ │ │ ├── lt~obsolete.m4 │ │ │ ├── mbedtls.m4 │ │ │ ├── openssl.m4 │ │ │ ├── pcre.m4 │ │ │ ├── polarssl.m4 │ │ │ ├── stack-protector.m4 │ │ │ └── zlib.m4 │ │ ├── rpm/ │ │ │ ├── SOURCES/ │ │ │ │ └── etc/ │ │ │ │ └── init.d/ │ │ │ │ └── shadowsocks-libev │ │ │ ├── SPECS/ │ │ │ │ └── shadowsocks-libev.spec.in │ │ │ └── genrpm.sh │ │ ├── server/ │ │ │ ├── Makefile.am │ │ │ ├── Makefile.in │ │ │ ├── acl.c │ │ │ ├── acl.h │ │ │ ├── auth.c │ │ │ ├── auth.h │ │ │ ├── base64.c │ │ │ ├── base64.h │ │ │ ├── cache.c │ │ │ ├── cache.h │ │ │ ├── check.c │ │ │ ├── common.h │ │ │ ├── crc32.c │ │ │ ├── encrypt.c │ │ │ ├── encrypt.h │ │ │ ├── http.c │ │ │ ├── http.h │ │ │ ├── http_simple.c │ │ │ ├── http_simple.h │ │ │ ├── jconf.c │ │ │ ├── jconf.h │ │ │ ├── json.c │ │ │ ├── json.h │ │ │ ├── list.c │ │ │ ├── list.h │ │ │ ├── netutils.c │ │ │ ├── netutils.h │ │ │ ├── obfs.c │ │ │ ├── obfs.h │ │ │ ├── obfsutil.c │ │ │ ├── protocol.h │ │ │ ├── resolv.c │ │ │ ├── resolv.h │ │ │ ├── rule.c │ │ │ ├── rule.h │ │ │ ├── server.c │ │ │ ├── server.h │ │ │ ├── tls.c │ │ │ ├── tls.h │ │ │ ├── tls1.2_ticket.c │ │ │ ├── tls1.2_ticket.h │ │ │ ├── udprelay.c │ │ │ ├── udprelay.h │ │ │ ├── uthash.h │ │ │ ├── utils.c │ │ │ ├── utils.h │ │ │ ├── verify.c │ │ │ └── verify.h │ │ ├── shadowsocks-libev.pc.in │ │ └── src/ │ │ ├── CMakeLists.txt │ │ ├── Makefile.am │ │ ├── Makefile.in │ │ ├── acl.c │ │ ├── acl.h │ │ ├── android.c │ │ ├── cache.c │ │ ├── cache.h │ │ ├── common.h │ │ ├── encrypt.c │ │ ├── encrypt.h │ │ ├── http.c │ │ ├── http.h │ │ ├── includeobfs.h │ │ ├── jconf.c │ │ ├── jconf.h │ │ ├── json.c │ │ ├── json.h │ │ ├── local.c │ │ ├── local.h │ │ ├── manager.c │ │ ├── manager.h │ │ ├── netutils.c │ │ ├── netutils.h │ │ ├── obfs/ │ │ │ ├── auth.c │ │ │ ├── auth.h │ │ │ ├── auth_chain.c │ │ │ ├── auth_chain.h │ │ │ ├── base64.c │ │ │ ├── base64.h │ │ │ ├── crc32.c │ │ │ ├── crc32.h │ │ │ ├── http_simple.c │ │ │ ├── http_simple.h │ │ │ ├── obfs.c │ │ │ ├── obfs.h │ │ │ ├── obfsutil.c │ │ │ ├── obfsutil.h │ │ │ ├── tls1.2_ticket.c │ │ │ ├── tls1.2_ticket.h │ │ │ ├── verify.c │ │ │ └── verify.h │ │ ├── protocol.h │ │ ├── redir.c │ │ ├── redir.h │ │ ├── resolv.c │ │ ├── resolv.h │ │ ├── rule.c │ │ ├── rule.h │ │ ├── server.c │ │ ├── server.h │ │ ├── shadowsocks.h │ │ ├── socks5.h │ │ ├── ss-nat │ │ ├── ssrlink.py │ │ ├── tls.c │ │ ├── tls.h │ │ ├── tunnel.c │ │ ├── tunnel.h │ │ ├── udprelay.c │ │ ├── udprelay.h │ │ ├── uthash.h │ │ ├── utils.c │ │ ├── utils.h │ │ ├── win32.c │ │ └── win32.h │ ├── simple-obfs/ │ │ └── Makefile │ ├── tcping/ │ │ ├── Makefile │ │ └── src/ │ │ ├── Makefile │ │ ├── license.txt │ │ ├── main.c │ │ ├── readme.txt │ │ ├── tcp.c │ │ └── tcp.h │ ├── trojan/ │ │ ├── Makefile │ │ ├── boost-version.mk │ │ └── patches/ │ │ ├── 001-force-openssl-version.patch │ │ └── 002-Fix-boost1.89-build.patch │ ├── tuic-client/ │ │ ├── Makefile │ │ └── patches/ │ │ └── 001-Fix-rust-stable-build.patch │ ├── v2ray-core/ │ │ └── Makefile │ ├── v2ray-plugin/ │ │ └── Makefile │ ├── v2raya/ │ │ ├── Makefile │ │ └── files/ │ │ ├── v2raya.config │ │ └── v2raya.init │ ├── xray-core/ │ │ └── Makefile │ └── xray-plugin/ │ └── Makefile ├── luci-app-store/ │ ├── luci/ │ │ ├── luci-app-store/ │ │ │ ├── Makefile │ │ │ ├── luasrc/ │ │ │ │ ├── controller/ │ │ │ │ │ └── store.lua │ │ │ │ └── view/ │ │ │ │ └── store/ │ │ │ │ └── main.htm │ │ │ ├── root/ │ │ │ │ ├── bin/ │ │ │ │ │ └── is-opkg │ │ │ │ ├── etc/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── istore │ │ │ │ │ ├── init.d/ │ │ │ │ │ │ └── istore │ │ │ │ │ └── uci-defaults/ │ │ │ │ │ └── luci-app-store │ │ │ │ └── usr/ │ │ │ │ ├── libexec/ │ │ │ │ │ └── istore/ │ │ │ │ │ ├── backup │ │ │ │ │ ├── docker │ │ │ │ │ ├── ipkg-build │ │ │ │ │ ├── ipv4-bin/ │ │ │ │ │ │ ├── curl │ │ │ │ │ │ └── wget │ │ │ │ │ └── overlay-backup │ │ │ │ └── share/ │ │ │ │ └── opkg/ │ │ │ │ └── intercept/ │ │ │ │ └── rm │ │ │ ├── src/ │ │ │ │ ├── Makefile │ │ │ │ ├── compat.conf │ │ │ │ ├── dummy/ │ │ │ │ │ └── package.mk │ │ │ │ ├── key-build.pub │ │ │ │ └── po/ │ │ │ │ ├── templates/ │ │ │ │ │ └── iStore.pot │ │ │ │ ├── zh-tw/ │ │ │ │ │ └── iStore.po │ │ │ │ └── zh_Hans/ │ │ │ │ └── iStore.po │ │ │ └── swagger.yaml │ │ ├── luci-lib-taskd/ │ │ │ ├── Makefile │ │ │ ├── htdocs/ │ │ │ │ └── luci-static/ │ │ │ │ └── resources/ │ │ │ │ └── tasks/ │ │ │ │ ├── tasks.css │ │ │ │ └── tasks.js │ │ │ ├── luasrc/ │ │ │ │ ├── controller/ │ │ │ │ │ └── tasks-lib.lua │ │ │ │ ├── model/ │ │ │ │ │ └── tasks.lua │ │ │ │ └── view/ │ │ │ │ └── tasks/ │ │ │ │ ├── docker.htm │ │ │ │ └── embed.htm │ │ │ └── src/ │ │ │ ├── Makefile │ │ │ ├── dummy/ │ │ │ │ └── package.mk │ │ │ └── po/ │ │ │ └── zh_Hans/ │ │ │ └── lib-tasks.po │ │ ├── luci-lib-xterm/ │ │ │ ├── Makefile │ │ │ ├── htdocs/ │ │ │ │ └── luci-static/ │ │ │ │ └── resources/ │ │ │ │ └── xterm/ │ │ │ │ ├── xterm.css │ │ │ │ └── xterm.js │ │ │ └── luasrc/ │ │ │ └── view/ │ │ │ └── xterm/ │ │ │ └── embed.htm │ │ └── taskd/ │ │ ├── Makefile │ │ └── files/ │ │ ├── taskd.sh │ │ └── tasks.init │ └── translations/ │ ├── en/ │ │ └── app.po │ ├── templates/ │ │ └── app.pot │ └── zh_Hans/ │ └── app.po ├── luci-app-supervisord/ │ ├── Makefile │ ├── luasrc/ │ │ ├── controller/ │ │ │ └── supervisord.lua │ │ ├── model/ │ │ │ └── cbi/ │ │ │ └── supervisord.lua │ │ └── view/ │ │ └── supervisord/ │ │ ├── index.htm │ │ ├── list.htm │ │ ├── log.htm │ │ └── version.htm │ ├── po/ │ │ └── zh_Hans/ │ │ └── supervisord.po │ └── root/ │ └── etc/ │ ├── config/ │ │ └── supervisord │ ├── init.d/ │ │ └── supervisord │ ├── supervisord/ │ │ ├── program/ │ │ │ └── templates │ │ └── supervisord.conf │ └── uci-defaults/ │ └── luci-supervisord ├── luci-app-syncthing/ │ ├── Makefile │ ├── luasrc/ │ │ ├── controller/ │ │ │ └── syncthing.lua │ │ ├── model/ │ │ │ └── cbi/ │ │ │ └── syncthing.lua │ │ └── view/ │ │ └── syncthing/ │ │ └── syncthing_status.htm │ ├── po/ │ │ └── zh_Hans/ │ │ └── syncthing.po │ └── root/ │ ├── etc/ │ │ └── uci-defaults/ │ │ └── luci-syncthing │ └── usr/ │ └── share/ │ └── rpcd/ │ └── acl.d/ │ └── luci-app-syncthing.json ├── luci-app-taskplan/ │ ├── Makefile │ ├── htdocs/ │ │ └── luci-static/ │ │ └── resources/ │ │ └── view/ │ │ └── taskplan/ │ │ ├── log.js │ │ ├── scheduled.js │ │ └── startup.js │ ├── po/ │ │ └── zh_Hans/ │ │ └── taskplan.po │ └── root/ │ ├── etc/ │ │ ├── config/ │ │ │ └── taskplan │ │ ├── init.d/ │ │ │ └── taskplan │ │ ├── taskplan/ │ │ │ ├── taskplancustomscript │ │ │ ├── taskplancustomscript2 │ │ │ └── taskplanrun │ │ └── uci-defaults/ │ │ └── luci-taskplan │ └── usr/ │ ├── bin/ │ │ └── taskplanhandler │ ├── libexec/ │ │ └── rpcd/ │ │ └── luci.taskplan │ └── share/ │ ├── luci/ │ │ └── menu.d/ │ │ └── luci-app-taskplan.json │ └── rpcd/ │ └── acl.d/ │ └── luci-app-taskplan.json ├── luci-app-tcpdump/ │ ├── Makefile │ ├── luasrc/ │ │ ├── controller/ │ │ │ └── tcpdump.lua │ │ └── view/ │ │ └── tcpdump.htm │ └── po/ │ └── zh_Hans/ │ └── tcpdump.po ├── luci-app-tencentddns/ │ ├── Makefile │ ├── luasrc/ │ │ ├── controller/ │ │ │ └── tencentddns.lua │ │ └── model/ │ │ └── cbi/ │ │ └── tencentddns.lua │ ├── po/ │ │ └── zh_Hans/ │ │ └── tencentddns.po │ └── root/ │ ├── etc/ │ │ ├── config/ │ │ │ └── tencentddns │ │ ├── init.d/ │ │ │ └── tencentddns │ │ └── uci-defaults/ │ │ └── luci-tencentddns │ └── usr/ │ ├── sbin/ │ │ └── tencentddns │ └── share/ │ └── rpcd/ │ └── acl.d/ │ └── luci-app-tencentddns.json ├── luci-app-timecontrol/ │ └── luci-app-timecontrol/ │ ├── Makefile │ ├── htdocs/ │ │ └── luci-static/ │ │ └── resources/ │ │ └── view/ │ │ └── timecontrol/ │ │ ├── basic.js │ │ └── log.js │ ├── po/ │ │ └── zh_Hans/ │ │ └── timecontrol.po │ └── root/ │ ├── etc/ │ │ ├── config/ │ │ │ └── timecontrol │ │ ├── init.d/ │ │ │ └── timecontrol │ │ └── uci-defaults/ │ │ └── luci-timecontrol │ └── usr/ │ ├── bin/ │ │ ├── timecontrol │ │ ├── timecontrol-log │ │ └── timecontrolctrl │ ├── libexec/ │ │ └── timecontrol-call │ └── share/ │ ├── luci/ │ │ └── menu.d/ │ │ └── luci-app-timecontrol.json │ └── rpcd/ │ └── acl.d/ │ └── luci-app-timecontrol.json ├── luci-app-udp2raw/ │ ├── Makefile │ ├── luasrc/ │ │ ├── controller/ │ │ │ └── udp2raw.lua │ │ ├── model/ │ │ │ └── cbi/ │ │ │ └── udp2raw/ │ │ │ ├── general.lua │ │ │ ├── servers-details.lua │ │ │ └── servers.lua │ │ └── view/ │ │ └── udp2raw/ │ │ ├── dynamiclist.htm │ │ └── status.htm │ ├── po/ │ │ └── zh_Hans/ │ │ └── udp2raw.po │ └── root/ │ ├── etc/ │ │ ├── config/ │ │ │ └── udp2raw │ │ ├── init.d/ │ │ │ └── udp2raw │ │ └── uci-defaults/ │ │ └── luci-udp2raw │ └── usr/ │ └── share/ │ └── rpcd/ │ └── acl.d/ │ └── luci-app-udp2raw.json ├── luci-app-unblockneteasemusic/ │ ├── Makefile │ ├── htdocs/ │ │ └── luci-static/ │ │ └── resources/ │ │ └── view/ │ │ └── unblockneteasemusic/ │ │ ├── config.js │ │ └── status.js │ └── root/ │ ├── etc/ │ │ ├── config/ │ │ │ └── unblockneteasemusic │ │ ├── init.d/ │ │ │ └── unblockneteasemusic │ │ └── uci-defaults/ │ │ └── luci-unblockneteasemusic │ └── usr/ │ ├── bin/ │ │ └── unm-debug │ └── share/ │ ├── luci/ │ │ └── menu.d/ │ │ └── luci-app-unblockneteasemusic.json │ ├── rpcd/ │ │ └── acl.d/ │ │ └── luci-app-unblockneteasemusic.json │ └── unblockneteasemusic/ │ ├── debugging.sh │ ├── log_check.sh │ ├── nftables.ut │ └── update.sh ├── luci-app-unishare/ │ ├── Makefile │ ├── luasrc/ │ │ ├── controller/ │ │ │ └── unishare.lua │ │ └── model/ │ │ └── cbi/ │ │ └── unishare/ │ │ ├── index.lua │ │ ├── share.lua │ │ └── users.lua │ └── po/ │ └── zh_Hans/ │ └── unishare.po ├── luci-app-watchdog/ │ ├── luci-app-watchdog/ │ │ ├── Makefile │ │ ├── htdocs/ │ │ │ └── luci-static/ │ │ │ └── resources/ │ │ │ └── view/ │ │ │ └── watchdog/ │ │ │ ├── basic.js │ │ │ └── log.js │ │ ├── po/ │ │ │ ├── templates/ │ │ │ │ └── watchdog.pot │ │ │ └── zh_Hans/ │ │ │ └── watchdog.po │ │ └── root/ │ │ └── usr/ │ │ └── share/ │ │ ├── luci/ │ │ │ └── menu.d/ │ │ │ └── luci-app-watchdog.json │ │ ├── rpcd/ │ │ │ └── acl.d/ │ │ │ └── luci-app-watchdog.json │ │ └── watchdog/ │ │ └── api/ │ │ ├── device_aliases.list │ │ ├── ip_attribution.list │ │ ├── ip_blacklist │ │ ├── ipv4.list │ │ └── ipv6.list │ └── watchdog/ │ ├── Makefile │ └── files/ │ ├── watchdog-call.libexec │ ├── watchdog.config │ ├── watchdog.init │ └── watchdog.share ├── luci-app-webd/ │ ├── Makefile │ ├── luasrc/ │ │ ├── controller/ │ │ │ └── webd.lua │ │ ├── model/ │ │ │ └── cbi/ │ │ │ └── webd.lua │ │ └── view/ │ │ └── webd/ │ │ └── webd_status.htm │ ├── po/ │ │ └── zh_Hans/ │ │ └── webd.po │ └── root/ │ └── etc/ │ ├── config/ │ │ └── webd │ ├── init.d/ │ │ └── webd │ └── uci-defaults/ │ └── luci-webd └── relevance/ ├── OpenAppFilter/ │ ├── luci-app-oaf/ │ │ ├── Makefile │ │ ├── htdocs/ │ │ │ └── luci-static/ │ │ │ └── resources/ │ │ │ └── css/ │ │ │ └── common.css │ │ ├── luasrc/ │ │ │ ├── controller/ │ │ │ │ └── appfilter.lua │ │ │ ├── model/ │ │ │ │ └── cbi/ │ │ │ │ └── appfilter/ │ │ │ │ ├── advance.lua │ │ │ │ ├── app_filter.lua │ │ │ │ ├── dev_status.lua │ │ │ │ ├── feature.lua │ │ │ │ ├── time.lua │ │ │ │ ├── time_setting.lua │ │ │ │ ├── user.lua │ │ │ │ └── user_list.lua │ │ │ └── view/ │ │ │ ├── admin_network/ │ │ │ │ ├── advance.htm │ │ │ │ ├── app_filter.htm │ │ │ │ ├── dev_status.htm │ │ │ │ ├── feature.htm │ │ │ │ ├── time.htm │ │ │ │ ├── user.htm │ │ │ │ └── user_status.htm │ │ │ └── cbi/ │ │ │ ├── oaf_dvalue.htm │ │ │ └── oaf_upload.htm │ │ ├── po/ │ │ │ └── zh_Hans/ │ │ │ └── oaf.po │ │ └── root/ │ │ ├── etc/ │ │ │ └── uci-defaults/ │ │ │ ├── 94_feature_3.0 │ │ │ └── 95_time_daily_limit │ │ └── usr/ │ │ └── share/ │ │ └── rpcd/ │ │ └── acl.d/ │ │ └── luci-app-oaf.json │ ├── oaf/ │ │ ├── Makefile │ │ └── src/ │ │ ├── Makefile │ │ ├── af_client.c │ │ ├── af_client.h │ │ ├── af_client_fs.c │ │ ├── af_client_fs.h │ │ ├── af_config.c │ │ ├── af_config.h │ │ ├── af_conntrack.c │ │ ├── af_conntrack.h │ │ ├── af_log.c │ │ ├── af_log.h │ │ ├── af_rule_config.c │ │ ├── af_rule_config.h │ │ ├── af_user_config.c │ │ ├── af_user_config.h │ │ ├── af_utils.c │ │ ├── af_utils.h │ │ ├── af_whitelist_config.c │ │ ├── af_whitelist_config.h │ │ ├── app_filter.c │ │ ├── app_filter.h │ │ ├── cJSON.c │ │ ├── cJSON.h │ │ └── regexp.c │ └── open-app-filter/ │ ├── Makefile │ ├── files/ │ │ ├── appfilter.config │ │ ├── appfilter.init │ │ ├── feature.cfg │ │ ├── feature_cn.cfg │ │ ├── feature_en.cfg │ │ ├── gen_class.sh │ │ ├── hnat.sh │ │ ├── oaf_rule │ │ └── user_info.config │ └── src/ │ ├── Makefile │ ├── appfilter.h │ ├── appfilter_config.c │ ├── appfilter_config.h │ ├── appfilter_netlink.c │ ├── appfilter_netlink.h │ ├── appfilter_ubus.c │ ├── appfilter_ubus.h │ ├── appfilter_user.c │ ├── appfilter_user.h │ ├── main.c │ ├── utils.c │ └── utils.h ├── WiFiPortal/ │ ├── autokick-wiwiz/ │ │ ├── Makefile │ │ ├── files/ │ │ │ ├── etc/ │ │ │ │ ├── config/ │ │ │ │ │ └── autokick │ │ │ │ └── init.d/ │ │ │ │ └── autokick │ │ │ └── usr/ │ │ │ ├── bin/ │ │ │ │ └── autokick.sh │ │ │ └── lib/ │ │ │ └── lua/ │ │ │ └── luci/ │ │ │ ├── controller/ │ │ │ │ └── autokick.lua │ │ │ └── model/ │ │ │ └── cbi/ │ │ │ └── autokick.lua │ │ └── po/ │ │ └── zh_Hans/ │ │ └── autokick.po │ ├── dcc2-wiwiz/ │ │ ├── Makefile │ │ ├── files/ │ │ │ ├── rtty.config │ │ │ ├── rtty.init │ │ │ ├── uci-defaults-rtty │ │ │ ├── usr/ │ │ │ │ ├── bin/ │ │ │ │ │ └── assocnum.sh │ │ │ │ └── lib/ │ │ │ │ └── lua/ │ │ │ │ └── luci/ │ │ │ │ ├── controller/ │ │ │ │ │ └── rtty.lua │ │ │ │ └── model/ │ │ │ │ └── cbi/ │ │ │ │ └── rtty.lua │ │ │ └── www/ │ │ │ └── cgi-bin/ │ │ │ └── dvstatus │ │ ├── po/ │ │ │ └── zh_Hans/ │ │ │ └── dcc2-wiwiz.po │ │ └── src/ │ │ ├── CMakeLists.txt │ │ ├── cmake/ │ │ │ └── Modules/ │ │ │ └── FindLibev.cmake │ │ ├── src/ │ │ │ ├── CMakeLists.txt │ │ │ ├── buffer/ │ │ │ │ ├── buffer.c │ │ │ │ └── buffer.h │ │ │ ├── command.c │ │ │ ├── command.h │ │ │ ├── config.h.in │ │ │ ├── file.c │ │ │ ├── file.h │ │ │ ├── filectl.c │ │ │ ├── http.c │ │ │ ├── http.h │ │ │ ├── list.h │ │ │ ├── log/ │ │ │ │ ├── log.c │ │ │ │ └── log.h │ │ │ ├── main.c │ │ │ ├── net.c │ │ │ ├── net.h │ │ │ ├── rtty.c │ │ │ ├── rtty.h │ │ │ ├── ssl/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── cmake/ │ │ │ │ │ └── Modules/ │ │ │ │ │ ├── FindMbedTLS.cmake │ │ │ │ │ └── FindWolfSSL.cmake │ │ │ │ ├── example-client.c │ │ │ │ ├── example-server.c │ │ │ │ ├── mbedtls.c │ │ │ │ ├── openssl.c │ │ │ │ └── ssl.h │ │ │ ├── utils.c │ │ │ └── utils.h │ │ └── tools/ │ │ ├── sendcmd.sh │ │ └── test.sh │ ├── eqos-master-wiwiz/ │ │ ├── Makefile │ │ └── files/ │ │ ├── eqos-cbi.lua │ │ ├── eqos-controller.lua │ │ ├── eqos.config │ │ ├── eqos.hotplug │ │ ├── eqos.init │ │ ├── eqos.sh │ │ ├── po/ │ │ │ └── zh_Hans/ │ │ │ └── eqos.po │ │ └── uci-defaults-eqos │ └── wifidog-wiwiz/ │ ├── Config.in │ ├── Makefile │ ├── files/ │ │ ├── etc/ │ │ │ ├── config/ │ │ │ │ └── wiwiz │ │ │ └── uci-defaults/ │ │ │ ├── 199-noredir │ │ │ └── 299-noportal │ │ ├── usr/ │ │ │ ├── lib/ │ │ │ │ └── lua/ │ │ │ │ └── luci/ │ │ │ │ ├── controller/ │ │ │ │ │ └── wiwiz.lua │ │ │ │ └── model/ │ │ │ │ └── cbi/ │ │ │ │ └── wiwiz.lua │ │ │ └── local/ │ │ │ └── hsbuilder/ │ │ │ ├── auth.sh │ │ │ ├── checkauth.sh │ │ │ ├── dhcp_portal.sh │ │ │ ├── getmodel.sh │ │ │ ├── handle_ipv6.sh │ │ │ ├── hsbuilder.conf │ │ │ ├── hsbuilder.sh │ │ │ ├── hsbuilder_helper.sh │ │ │ ├── kickmac.sh │ │ │ ├── setspeed.sh │ │ │ ├── ver │ │ │ ├── wiwizroaming.sh │ │ │ └── wiwizroaming.sh.old │ │ ├── wifidog.init │ │ └── www/ │ │ ├── cgi-bin/ │ │ │ ├── cpi │ │ │ ├── kickmac │ │ │ ├── myip │ │ │ ├── mymac │ │ │ ├── showdevinfo │ │ │ └── wiwiz404 │ │ ├── error.html.wiwiz │ │ ├── index.html.wiwiz │ │ └── mymac.htm │ ├── po/ │ │ └── zh_Hans/ │ │ └── wifidog-wiwiz.po │ └── src/ │ ├── AUTHORS │ ├── COPYING │ ├── ChangeLog │ ├── FAQ │ ├── Makefile.am │ ├── NEWS │ ├── README │ ├── README.openwrt │ ├── autogen.sh │ ├── configure.in │ ├── contrib/ │ │ ├── airos/ │ │ │ └── wifidog/ │ │ │ ├── Makefile │ │ │ ├── files/ │ │ │ │ ├── wifidog.conf │ │ │ │ └── wifidog.init │ │ │ ├── files.patch │ │ │ ├── patches/ │ │ │ │ └── 100-counter_outoing.patch │ │ │ └── readme.txt │ │ ├── build-deb/ │ │ │ ├── changelog │ │ │ ├── control │ │ │ └── rules │ │ ├── build-openwrt-kamikazeipk/ │ │ │ └── wifidog/ │ │ │ ├── Makefile │ │ │ └── files/ │ │ │ ├── wifidog.conf │ │ │ └── wifidog.init │ │ ├── build-openwrt-kamikazeipk8.09up/ │ │ │ └── wifidog/ │ │ │ ├── Makefile │ │ │ └── files/ │ │ │ ├── wifidog.conf │ │ │ └── wifidog.init │ │ ├── build-openwrt-whiterussianipk/ │ │ │ └── wifidog/ │ │ │ ├── Config.in │ │ │ ├── Makefile │ │ │ ├── files/ │ │ │ │ ├── wifidog.conf │ │ │ │ └── wifidog.init │ │ │ └── ipkg/ │ │ │ ├── wifidog.conffiles │ │ │ └── wifidog.control │ │ └── dump_fw.sh │ ├── doc/ │ │ ├── Makefile.am │ │ ├── README.developers.txt │ │ ├── doxygen.cfg.in │ │ └── wifidog_firewall_diagram.dia │ ├── libhttpd/ │ │ ├── Makefile.am │ │ ├── README │ │ ├── api.c │ │ ├── httpd.h │ │ ├── httpd_priv.h │ │ ├── ip_acl.c │ │ ├── protocol.c │ │ └── version.c │ ├── scripts/ │ │ └── init.d/ │ │ └── wifidog │ ├── src/ │ │ ├── Makefile.am │ │ ├── auth.c │ │ ├── auth.h │ │ ├── centralserver.c │ │ ├── centralserver.h │ │ ├── client_list.c │ │ ├── client_list.h │ │ ├── commandline.c │ │ ├── commandline.h │ │ ├── common.h │ │ ├── conf.c │ │ ├── conf.h │ │ ├── debug.c │ │ ├── debug.h │ │ ├── firewall.c │ │ ├── firewall.h │ │ ├── fw_iptables-org.c │ │ ├── fw_iptables.c │ │ ├── fw_iptables.h │ │ ├── gateway.c │ │ ├── gateway.h │ │ ├── http.c │ │ ├── http.h │ │ ├── httpd_thread.c │ │ ├── httpd_thread.h │ │ ├── ping_thread.c │ │ ├── ping_thread.h │ │ ├── safe.c │ │ ├── safe.h │ │ ├── util.c │ │ ├── util.h │ │ ├── wdctl.c │ │ ├── wdctl.h │ │ ├── wdctl_thread.c │ │ └── wdctl_thread.h │ ├── wifidog-msg.html.in │ ├── wifidog-msg.html.in.org │ ├── wifidog.conf │ └── wifidog.spec.in ├── adguardhome/ │ ├── Makefile │ └── files/ │ └── adguardhome.init ├── cdnspeedtest/ │ ├── Makefile │ └── test.sh ├── cpulimit/ │ ├── Makefile │ └── patches/ │ └── 010-gcc14.patch ├── filebrowser/ │ ├── Makefile │ └── files/ │ ├── filebrowser.config │ └── filebrowser.init ├── gost/ │ ├── Makefile │ └── files/ │ ├── gost.config │ ├── gost.init │ └── gost.uci ├── luci-lib-iform/ │ ├── Makefile │ ├── luasrc/ │ │ └── iform.lua │ └── root/ │ └── www/ │ └── luci-static/ │ └── iform/ │ ├── 1.0/ │ │ ├── index.js │ │ └── style.css │ └── 1.1/ │ ├── index.js │ └── style.css ├── luci-mod-istorenext/ │ ├── Makefile │ ├── po/ │ │ ├── templates/ │ │ │ └── istorenext.pot │ │ └── zh_Hans/ │ │ └── istorenext.po │ ├── root/ │ │ ├── etc/ │ │ │ ├── nginx/ │ │ │ │ └── conf.d/ │ │ │ │ ├── istorenext.conf │ │ │ │ └── istorenext.locations │ │ │ └── uci-defaults/ │ │ │ └── 50_luci-istorenext │ │ └── usr/ │ │ ├── lib/ │ │ │ └── lua/ │ │ │ └── luci/ │ │ │ └── view/ │ │ │ └── istorenext/ │ │ │ ├── index.htm │ │ │ └── login.htm │ │ └── share/ │ │ └── luci/ │ │ └── menu.d/ │ │ └── luci-mod-istorenext.json │ ├── root-demo/ │ │ ├── demo/ │ │ │ └── cgi-bin/ │ │ │ └── luci/ │ │ │ └── istorenext/ │ │ │ ├── cgi-bin/ │ │ │ │ └── logon │ │ │ └── index.htm │ │ └── etc/ │ │ └── init.d/ │ │ └── istorenext-demo │ └── test.conf ├── luci-nginxer/ │ ├── Makefile │ └── root/ │ └── etc/ │ └── uci-defaults/ │ └── 50_luci-nginxer ├── msd_lite/ │ ├── Makefile │ ├── files/ │ │ ├── msd_lite.config │ │ ├── msd_lite.init │ │ └── msd_lite.sample │ └── patches/ │ └── 010-Add-rejoin-option-as-ugly-hack-to-allow-send-IGMP-MLD-lea.patch ├── nas-packages/ │ ├── multimedia/ │ │ └── ffmpeg-remux/ │ │ └── Makefile │ └── network/ │ └── services/ │ ├── ddnsto/ │ │ ├── Makefile │ │ └── files/ │ │ ├── ddnsto-monitor.sh │ │ ├── ddnsto.config │ │ ├── ddnsto.init │ │ └── ddnsto.uci-default │ ├── fastnet/ │ │ ├── Makefile │ │ └── files/ │ │ ├── fastnet.config │ │ ├── fastnet.init │ │ └── fastnet.uci-default │ ├── floatip/ │ │ ├── Makefile │ │ └── files/ │ │ ├── floatip.config │ │ ├── floatip.init │ │ ├── floatip.sh │ │ └── floatip.uci-default │ ├── istoreenhance/ │ │ ├── Makefile │ │ └── files/ │ │ ├── istoreenhance.config │ │ ├── istoreenhance.init │ │ └── istoreenhance.uci-default │ ├── kai/ │ │ ├── Makefile │ │ └── files/ │ │ ├── kai.config │ │ └── kai.init │ ├── kai_session/ │ │ └── Makefile │ ├── linkease/ │ │ ├── Makefile │ │ └── files/ │ │ ├── aria2.sh │ │ ├── linkease-config.sh │ │ ├── linkease.config │ │ ├── linkease.init │ │ └── linkease.uci-default │ ├── linkmount/ │ │ └── Makefile │ ├── quickstart/ │ │ ├── Makefile │ │ └── files/ │ │ ├── dhcpvalid.sh │ │ ├── manuf │ │ ├── quickstart.config │ │ ├── quickstart.hotplug │ │ ├── quickstart.init │ │ ├── quickstart.uci-default │ │ ├── startdhns.hotplug │ │ └── startdhns.init │ ├── unishare/ │ │ ├── Makefile │ │ └── files/ │ │ ├── unishare.config │ │ └── unishare.init │ └── webdav2/ │ ├── Makefile │ └── files/ │ ├── webdav2.config │ └── webdav2.init ├── natter/ │ └── Makefile ├── natter2/ │ └── Makefile ├── onekey-install.sh ├── oscam/ │ ├── Config.in │ ├── Makefile │ └── files/ │ ├── oscam-watchdog.sh │ ├── oscam.conf │ ├── oscam.dvbapi │ ├── oscam.init │ ├── oscam.server │ └── oscam.user ├── passwall-packages/ │ ├── chinadns-ng/ │ │ └── Makefile │ ├── dns2socks/ │ │ └── Makefile │ ├── geoview/ │ │ └── Makefile │ ├── hysteria/ │ │ └── Makefile │ ├── ipt2socks/ │ │ └── Makefile │ ├── microsocks/ │ │ ├── Makefile │ │ └── patches/ │ │ └── 100-Add-SOCKS5-forwarding-rules-support.patch │ ├── naiveproxy/ │ │ ├── Makefile │ │ └── files/ │ │ ├── naiveproxy.config │ │ └── naiveproxy.init │ ├── shadow-tls/ │ │ ├── Makefile │ │ └── patches/ │ │ ├── 010-Fix-reading-WildcardSNI-from-sip003_arg-115.patch │ │ ├── 011-fix-use-tls1-2-only-website-for-tls12-test-suites-129.patch │ │ └── 100-update-monoio.patch │ ├── shadowsocks-libev/ │ │ ├── Makefile │ │ └── patches/ │ │ ├── 100-Upgrade-PCRE-to-PCRE2.patch │ │ ├── 101-Fix-mishandling-of-incoming-socket-buffer.-It-must-b.patch │ │ └── 102-deprecate-load16-be-replace-with-ntohs.patch │ ├── shadowsocks-rust/ │ │ └── Makefile │ ├── shadowsocksr-libev/ │ │ ├── Makefile │ │ ├── patches/ │ │ │ ├── 0001-Add-ss-server-and-ss-check.patch │ │ │ ├── 0002-Revert-verify_simple-and-auth_simple.patch │ │ │ ├── 0003-Refine-Usage.patch │ │ │ ├── 100-fix-gcc-10.patch │ │ │ ├── 101-Fix-Werror-sizeof-pointer-memaccess.patch │ │ │ ├── 102-Read-listening-mode-from-config.patch │ │ │ ├── 103-Add-TPROXY-support-for-TCP-ssr-redir.patch │ │ │ └── 105-Upgrade-PCRE-to-PCRE2.patch │ │ └── src/ │ │ └── server/ │ │ ├── Makefile.am │ │ ├── Makefile.in │ │ ├── acl.c │ │ ├── acl.h │ │ ├── auth.c │ │ ├── auth.h │ │ ├── base64.c │ │ ├── base64.h │ │ ├── cache.c │ │ ├── cache.h │ │ ├── check.c │ │ ├── common.h │ │ ├── crc32.c │ │ ├── encrypt.c │ │ ├── encrypt.h │ │ ├── http.c │ │ ├── http.h │ │ ├── http_simple.c │ │ ├── http_simple.h │ │ ├── jconf.c │ │ ├── jconf.h │ │ ├── json.c │ │ ├── json.h │ │ ├── list.c │ │ ├── list.h │ │ ├── netutils.c │ │ ├── netutils.h │ │ ├── obfs.c │ │ ├── obfs.h │ │ ├── obfsutil.c │ │ ├── protocol.h │ │ ├── resolv.c │ │ ├── resolv.h │ │ ├── rule.c │ │ ├── rule.h │ │ ├── server.c │ │ ├── server.h │ │ ├── tls.c │ │ ├── tls.h │ │ ├── tls1.2_ticket.c │ │ ├── tls1.2_ticket.h │ │ ├── udprelay.c │ │ ├── udprelay.h │ │ ├── uthash.h │ │ ├── utils.c │ │ ├── utils.h │ │ ├── verify.c │ │ └── verify.h │ ├── simple-obfs/ │ │ ├── Makefile │ │ └── patches/ │ │ └── 001-convert-arguments-of-isdigit-to-int.patch │ ├── sing-box/ │ │ └── Makefile │ ├── tcping/ │ │ └── Makefile │ ├── trojan-plus/ │ │ ├── Makefile │ │ ├── boost-version.mk │ │ └── patches/ │ │ ├── 001-Fix-boost1.87-build.patch │ │ └── 002-Fix-boost1.89-build.patch │ ├── tuic-client/ │ │ └── Makefile │ ├── v2ray-geodata/ │ │ └── Makefile │ ├── v2ray-plugin/ │ │ └── Makefile │ ├── xray-core/ │ │ └── Makefile │ └── xray-plugin/ │ └── Makefile ├── quectel_cm-5G/ │ ├── Makefile │ ├── files/ │ │ ├── dhcp │ │ ├── rmnet.script │ │ ├── rmnet.sh │ │ ├── rmnet6.script │ │ ├── rmnet6.sh │ │ └── rmnet_init.sh │ └── src/ │ ├── CMakeLists.txt │ ├── GobiNetCM.c │ ├── Makefile │ ├── Makefile.am │ ├── NOTICE │ ├── QCQCTL.h │ ├── QCQMI.h │ ├── QCQMUX.c │ ├── QCQMUX.h │ ├── QMIThread.c │ ├── QMIThread.h │ ├── QmiWwanCM.c │ ├── ReleaseNote.txt │ ├── at_tok.c │ ├── at_tok.h │ ├── atc.c │ ├── atchannel.c │ ├── atchannel.h │ ├── configure.ac │ ├── default.script │ ├── default.script_ip │ ├── device.c │ ├── ethtool-copy.h │ ├── log/ │ │ ├── cdc_mbim.txt │ │ ├── cdc_mbim_vlan.txt │ │ ├── ecm_ncm_rndis.txt │ │ ├── gobinet.txt │ │ ├── gobinet_bridge.txt │ │ ├── gobinet_qmap=1.txt │ │ ├── gobinet_qmap=1_bridge.txt │ │ ├── gobinet_qmap=4.txt │ │ ├── gobinet_qmap=4_bridge.txt │ │ ├── pcie_mhi_mbim.txt │ │ ├── pcie_mhi_mbim_qmap=4.txt │ │ ├── pcie_mhi_qmap=1.txt │ │ ├── pcie_mhi_qmap=1_bridge.txt │ │ ├── pcie_mhi_qmap=4.txt │ │ ├── pcie_mhi_qmap=4_bridge.txt │ │ ├── qmi_wwan_q.txt │ │ ├── qmi_wwan_q_bridge.txt │ │ ├── qmi_wwan_q_qmap=1.txt │ │ ├── qmi_wwan_q_qmap=1_bridge.txt │ │ ├── qmi_wwan_q_qmap=4.txt │ │ ├── qmi_wwan_q_qmap=4_bridge.txt │ │ ├── qmi_wwan_qmap=4.txt │ │ └── usage_of_argument/ │ │ ├── 6.txt │ │ └── m.txt │ ├── main.c │ ├── mbim-cm.c │ ├── qendian.h │ ├── qlist.h │ ├── qmap_bridge_mode.c │ ├── qrtr.c │ ├── qrtr.h │ ├── quectel-atc-proxy.c │ ├── quectel-mbim-proxy.c │ ├── quectel-qmi-proxy.c │ ├── quectel-qrtr-proxy.c │ ├── rmnetctl.c │ ├── udhcpc.c │ ├── udhcpc_netlink.c │ ├── udhcpc_script.c │ ├── util.c │ └── util.h ├── smartmontools/ │ ├── Makefile │ ├── files/ │ │ ├── smartd.conf │ │ └── smartd.init │ ├── patches/ │ │ ├── 001-use-external-drivedb.patch │ │ └── 002-os_mailer-is-mailx.patch │ └── test.sh ├── socat/ │ ├── Makefile │ └── files/ │ ├── socat.config │ └── socat.init ├── syncthing/ │ ├── Makefile │ ├── files/ │ │ ├── stdiscosrv.conf │ │ ├── stdiscosrv.init │ │ ├── strelaysrv.conf │ │ ├── strelaysrv.init │ │ ├── syncthing.conf │ │ ├── syncthing.init │ │ └── syncthing.sysctl │ └── test.sh ├── udp2raw/ │ └── Makefile ├── upx-static/ │ └── Makefile └── webd/ └── Makefile ================================================ FILE CONTENTS ================================================ ================================================ FILE: LICENSE ================================================ GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . ================================================ FILE: README.md ================================================ - [个人脚本专用配套插件包](https://github.com/281677160/build-actions) ================================================ FILE: luci-app-adguardhome/Makefile ================================================ # This is free software, licensed under the Apache License, Version 2.0 . # include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-adguardhome PKG_RELEASE:=15 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME) include $(INCLUDE_DIR)/package.mk define Package/luci-app-adguardhome SECTION:=luci CATEGORY:=LuCI SUBMENU:=3. Applications TITLE:=LuCI app for adguardhome PKG_MAINTAINER:= PKGARCH:=all DEPENDS:=+!wget-ssl&&!curl:wget-ssl endef define Package/luci-app-adguardhome/description LuCI support for adguardhome endef define Build/Prepare endef define Build/Compile endef define Package/luci-app-adguardhome/conffiles /usr/share/AdGuardHome/links.txt /etc/config/AdGuardHome endef define Package/luci-app-adguardhome/install $(INSTALL_DIR) $(1)/usr/lib/lua/luci cp -pR ./luasrc/* $(1)/usr/lib/lua/luci $(INSTALL_DIR) $(1)/ cp -pR ./root/* $(1)/ $(INSTALL_DIR) $(1)/usr/lib/lua/luci/i18n po2lmo ./po/zh_Hans/AdGuardHome.po $(1)/usr/lib/lua/luci/i18n/AdGuardHome.zh-cn.lmo endef define Package/luci-app-adguardhome/postinst #!/bin/sh /etc/init.d/AdGuardHome enable >/dev/null 2>&1 enable=$(uci get AdGuardHome.AdGuardHome.enabled 2>/dev/null) if [ "$enable" == "1" ]; then /etc/init.d/AdGuardHome reload fi rm -f /tmp/luci-indexcache rm -f /tmp/luci-modulecache/* exit 0 endef define Package/luci-app-adguardhome/prerm #!/bin/sh if [ -z "$${IPKG_INSTROOT}" ]; then /etc/init.d/AdGuardHome disable /etc/init.d/AdGuardHome stop uci -q batch <<-EOF >/dev/null 2>&1 delete ucitrack.@AdGuardHome[-1] commit ucitrack EOF fi exit 0 endef $(eval $(call BuildPackage,luci-app-adguardhome)) ================================================ FILE: luci-app-adguardhome/luasrc/controller/AdGuardHome.lua ================================================ module("luci.controller.AdGuardHome", package.seeall) local fs = require "nixio.fs" local http = require "luci.http" local uci = require"luci.model.uci".cursor() function index() entry({"admin", "services", "AdGuardHome"}, alias("admin", "services", "AdGuardHome", "base"), _("AdGuard Home"), 10).dependent = true entry({"admin", "services", "AdGuardHome", "base"}, cbi("AdGuardHome/base"), _("Base Setting"), 1).leaf = true entry({"admin", "services", "AdGuardHome", "log"}, form("AdGuardHome/log"), _("Log"), 2).leaf = true entry({"admin", "services", "AdGuardHome", "manual"}, cbi("AdGuardHome/manual"), _("Manual Config"), 3).leaf = true entry({"admin", "services", "AdGuardHome", "status"}, call("act_status")).leaf = true entry({"admin", "services", "AdGuardHome", "check"}, call("check_update")) entry({"admin", "services", "AdGuardHome", "doupdate"}, call("do_update")) entry({"admin", "services", "AdGuardHome", "getlog"}, call("get_log")) entry({"admin", "services", "AdGuardHome", "dodellog"}, call("do_dellog")) entry({"admin", "services", "AdGuardHome", "reloadconfig"}, call("reload_config")) entry({"admin", "services", "AdGuardHome", "gettemplateconfig"}, call("get_template_config")) end function get_template_config() local b local d = "" local file = "/tmp/resolv.conf.d/resolv.conf.auto" if not fs.access(file) then file = "/tmp/resolv.conf.auto" end for cnt in io.lines(file) do b = string.match(cnt, "^[^#]*nameserver%s+([^%s]+)$") if (b ~= nil) then d = d .. " - " .. b .. "\n" end end local f = io.open("/usr/share/AdGuardHome/AdGuardHome_template.yaml", "r+") local tbl = {} local a = "" while (1) do a = f:read("*l") if (a == "#bootstrap_dns") then a = d elseif (a == "#upstream_dns") then a = d elseif (a == nil) then break end table.insert(tbl, a) end f:close() http.prepare_content("text/plain; charset=utf-8") http.write(table.concat(tbl, "\n")) end function reload_config() fs.remove("/tmp/AdGuardHometmpconfig.yaml") http.prepare_content("application/json") http.write('') end function act_status() local e = {} local binpath = uci:get("AdGuardHome", "AdGuardHome", "binpath") e.running = luci.sys.call("pgrep " .. binpath .. " >/dev/null") == 0 e.redirect = (fs.readfile("/var/run/AdGredir") == "1") http.prepare_content("application/json") http.write_json(e) end function do_update() fs.writefile("/var/run/lucilogpos", "0") http.prepare_content("application/json") http.write('') local arg if luci.http.formvalue("force") == "1" then arg = "force" else arg = "" end if fs.access("/var/run/update_core") then if arg == "force" then luci.sys.exec("kill $(pgrep /usr/share/AdGuardHome/update_core.sh) ; sh /usr/share/AdGuardHome/update_core.sh " .. arg .. " >/tmp/AdGuardHome_update.log 2>&1 &") end else luci.sys.exec("sh /usr/share/AdGuardHome/update_core.sh " .. arg .. " >/tmp/AdGuardHome_update.log 2>&1 &") end end function get_log() local logfile = uci:get("AdGuardHome", "AdGuardHome", "logfile") if (logfile == nil) then http.write("no log available\n") return elseif (logfile == "syslog") then if not fs.access("/var/run/AdGuardHomesyslog") then luci.sys.exec("(/usr/share/AdGuardHome/getsyslog.sh &); sleep 1;") end logfile = "/tmp/AdGuardHometmp.log" fs.writefile("/var/run/AdGuardHomesyslog", "1") elseif not fs.access(logfile) then http.write("") return end http.prepare_content("text/plain; charset=utf-8") local fdp = tonumber(fs.readfile("/var/run/lucilogpos")) or 0 local f = io.open(logfile, "r+") f:seek("set", fdp) local a = f:read(2048000) or "" fdp = f:seek() fs.writefile("/var/run/lucilogpos", tostring(fdp)) f:close() http.write(a) end function do_dellog() local logfile = uci:get("AdGuardHome", "AdGuardHome", "logfile") fs.writefile(logfile, "") http.prepare_content("application/json") http.write('') end function check_update() http.prepare_content("text/plain; charset=utf-8") local fdp = tonumber(fs.readfile("/var/run/lucilogpos")) or 0 local f = io.open("/tmp/AdGuardHome_update.log", "r+") f:seek("set", fdp) local a = f:read(2048000) or "" fdp = f:seek() fs.writefile("/var/run/lucilogpos", tostring(fdp)) f:close() if fs.access("/var/run/update_core") then http.write(a) else http.write(a .. "\0") end end ================================================ FILE: luci-app-adguardhome/luasrc/model/cbi/AdGuardHome/base.lua ================================================ require("luci.sys") require("luci.util") require("io") local m, s, o, o1 local fs = require "nixio.fs" local uci = require"luci.model.uci".cursor() local configpath = uci:get("AdGuardHome", "AdGuardHome", "configpath") or "/etc/config/AdGuardHome.yaml" local binpath = uci:get("AdGuardHome", "AdGuardHome", "binpath") or "/usr/bin/AdGuardHome/AdGuardHome" httpport = uci:get("AdGuardHome", "AdGuardHome", "httpport") or "3000" m = Map("AdGuardHome", "AdGuard Home") m.description = translate("Free and open source, powerful network-wide ads & trackers blocking DNS server.") m:section(SimpleSection).template = "AdGuardHome/AdGuardHome_status" s = m:section(TypedSection, "AdGuardHome") s.anonymous = true s.addremove = false ---- enable o = s:option(Flag, "enabled", translate("Enable")) o.default = 0 o.optional = false ---- httpport o = s:option(Value, "httpport", translate("Browser management port")) o.placeholder = 3000 o.default = 3000 o.datatype = "port" o.optional = false o.description = translate("") ---- update warning not safe local binmtime = uci:get("AdGuardHome", "AdGuardHome", "binmtime") or "0" local e = "" if not fs.access(configpath) then e = e .. " " .. translate("no config") end if not fs.access(binpath) then e = e .. " " .. translate("no core") else local version = uci:get("AdGuardHome", "AdGuardHome", "version") local testtime = fs.stat(binpath, "mtime") if testtime ~= tonumber(binmtime) or version == nil then -- local tmp=luci.sys.exec(binpath.." -c /dev/null --check-config 2>&1| grep -m 1 -E 'v[0-9.]+' -o") -- version=string.sub(tmp, 1, -2) version = luci.sys.exec(string.format("echo -n $(%s --version 2>&1 | awk -F 'version ' '{print $2}' | awk -F ',' '{print $1}')", binpath)) if version == "" then version = "core error" end uci:set("AdGuardHome", "AdGuardHome", "version", version) uci:set("AdGuardHome", "AdGuardHome", "binmtime", testtime) uci:commit("AdGuardHome") end e = version .. e end o = s:option(Button, "restart", translate("Update")) o.inputtitle = translate("Update core version") o.template = "AdGuardHome/AdGuardHome_check" o.showfastconfig = (not fs.access(configpath)) o.description = string.format(translate("core version:") .. "%s ", e) ---- port warning not safe local port = luci.sys.exec("awk '/ port:/{printf($2);exit;}' " .. configpath .. " 2>nul") if (port == "") then port = "?" end ---- Redirect o = s:option(ListValue, "redirect", port .. translate("Redirect"), translate("AdGuardHome redirect mode")) o.placeholder = "none" o:value("none", translate("none")) o:value("dnsmasq-upstream", translate("Run as dnsmasq upstream server")) o:value("redirect", translate("Redirect 53 port to AdGuardHome")) o:value("exchange", translate("Use port 53 replace dnsmasq")) o.default = "none" o.optional = true ---- bin path o = s:option(Value, "binpath", translate("Bin Path"), translate("AdGuardHome Bin path if no bin will auto download")) o.default = "/usr/bin/AdGuardHome/AdGuardHome" o.datatype = "string" o.optional = false o.rmempty = false o.validate = function(self, value) if value == "" then return nil end if fs.stat(value, "type") == "dir" then fs.rmdir(value) end if fs.stat(value, "type") == "dir" then if (m.message) then m.message = m.message .. "\nerror!bin path is a dir" else m.message = "error!bin path is a dir" end return nil end return value end --- upx o = s:option(ListValue, "upxflag", translate("use upx to compress bin after download")) o:value("", translate("none")) o:value("-1", translate("compress faster")) o:value("-9", translate("compress better")) o:value("--best", translate("compress best(can be slow for big files)")) o:value("--brute", translate("try all available compression methods & filters [slow]")) o:value("--ultra-brute", translate("try even more compression variants [very slow]")) o.default = "" o.description = translate("bin use less space,but may have compatibility issues") o.rmempty = true ---- config path o = s:option(Value, "configpath", translate("Config Path"), translate("AdGuardHome config path")) o.default = "/etc/config/AdGuardHome.yaml" o.datatype = "string" o.optional = false o.rmempty = false o.validate = function(self, value) if value == nil then return nil end if fs.stat(value, "type") == "dir" then fs.rmdir(value) end if fs.stat(value, "type") == "dir" then if m.message then m.message = m.message .. "\nerror!config path is a dir" else m.message = "error!config path is a dir" end return nil end return value end ---- work dir o = s:option(Value, "workdir", translate("Work dir"), translate("AdGuardHome work dir include rules,audit log and database")) o.default = "/usr/bin/AdGuardHome" o.datatype = "string" o.optional = false o.rmempty = false o.validate = function(self, value) if value == "" then return nil end if fs.stat(value, "type") == "reg" then if m.message then m.message = m.message .. "\nerror!work dir is a file" else m.message = "error!work dir is a file" end return nil end if string.sub(value, -1) == "/" then return string.sub(value, 1, -2) else return value end end ---- log file o = s:option(Value, "logfile", translate("Runtime log file"), translate("AdGuardHome runtime Log file if 'syslog': write to system log;if empty no log")) o.datatype = "string" o.rmempty = true o.validate = function(self, value) if fs.stat(value, "type") == "dir" then fs.rmdir(value) end if fs.stat(value, "type") == "dir" then if m.message then m.message = m.message .. "\nerror!log file is a dir" else m.message = "error!log file is a dir" end return nil end return value end ---- debug o = s:option(Flag, "verbose", translate("Verbose log")) o.default = 0 o.optional = true ---- gfwlist local a = luci.sys.call("grep -m 1 -q programadd " .. configpath) if (a == 0) then a = "Added" else a = "Not added" end o = s:option(Button, "gfwdel", translate("Del gfwlist"), translate(a)) o.optional = true o.inputtitle = translate("Del") o.write = function() luci.sys.exec("sh /usr/share/AdGuardHome/gfw2adg.sh del 2>&1") luci.http.redirect(luci.dispatcher.build_url("admin", "services", "AdGuardHome")) end o = s:option(Button, "gfwadd", translate("Add gfwlist"), translate(a)) o.optional = true o.inputtitle = translate("Add") o.write = function() luci.sys.exec("sh /usr/share/AdGuardHome/gfw2adg.sh 2>&1") luci.http.redirect(luci.dispatcher.build_url("admin", "services", "AdGuardHome")) end o = s:option(Value, "gfwupstream", translate("Gfwlist upstream dns server"), translate("Gfwlist domain upstream dns service") .. translate(a)) o.default = "tcp://208.67.220.220:5353" o.datatype = "string" o.optional = true ---- chpass o = s:option(Value, "hashpass", translate("Change browser management password"), translate("Press load culculate model and culculate finally save/apply")) o.default = "" o.datatype = "string" o.template = "AdGuardHome/AdGuardHome_chpass" o.optional = true ---- upgrade protect o = s:option(MultiValue, "upprotect", translate("Keep files when system upgrade")) o:value("$binpath", translate("core bin")) o:value("$configpath", translate("config file")) o:value("$logfile", translate("log file")) o:value("$workdir/data/sessions.db", translate("sessions.db")) o:value("$workdir/data/stats.db", translate("stats.db")) o:value("$workdir/data/querylog.json", translate("querylog.json")) o:value("$workdir/data/filters", translate("filters")) o.widget = "checkbox" o.default = nil o.optional = true ---- wait net on boot o = s:option(Flag, "waitonboot", translate("On boot when network ok restart")) o.default = 1 o.optional = true ---- backup workdir on shutdown local workdir = uci:get("AdGuardHome", "AdGuardHome", "workdir") or "/usr/bin/AdGuardHome" o = s:option(MultiValue, "backupfile", translate("Backup workdir files when shutdown")) o1 = s:option(Value, "backupwdpath", translate("Backup workdir path")) local name o:value("filters", "filters") o:value("stats.db", "stats.db") o:value("querylog.json", "querylog.json") o:value("sessions.db", "sessions.db") o1:depends("backupfile", "filters") o1:depends("backupfile", "stats.db") o1:depends("backupfile", "querylog.json") o1:depends("backupfile", "sessions.db") for name in fs.glob(workdir .. "/data/*") do name = fs.basename(name) if name ~= "filters" and name ~= "stats.db" and name ~= "querylog.json" and name ~= "sessions.db" then o:value(name, name) o1:depends("backupfile", name) end end o.widget = "checkbox" o.default = nil o.optional = false o.description = translate("Will be restore when workdir/data is empty") ----backup workdir path o1.default = "/usr/bin/AdGuardHome" o1.datatype = "string" o1.optional = false o1.validate = function(self, value) if fs.stat(value, "type") == "reg" then if m.message then m.message = m.message .. "\nerror!backup dir is a file" else m.message = "error!backup dir is a file" end return nil end if string.sub(value, -1) == "/" then return string.sub(value, 1, -2) else return value end end ----Crontab o = s:option(MultiValue, "crontab", translate("Crontab task"), translate("Please change time and args in crontab")) o:value("autoupdate", translate("Auto update core")) o:value("cutquerylog", translate("Auto tail querylog")) o:value("cutruntimelog", translate("Auto tail runtime log")) o:value("autohost", translate("Auto update ipv6 hosts and restart adh")) o:value("autogfw", translate("Auto update gfwlist and restart adh")) o.widget = "checkbox" o.default = nil o.optional = true ----downloadpath o = s:option(TextValue, "downloadlinks", translate("Download links for update")) o.optional = false o.rows = 4 o.wrap = "soft" o.cfgvalue = function(self, section) return fs.readfile("/usr/share/AdGuardHome/links.txt") end o.write = function(self, section, value) fs.writefile("/usr/share/AdGuardHome/links.txt", value:gsub("\r\n", "\n")) end fs.writefile("/var/run/lucilogpos", "0") function m.on_commit(map) if (fs.access("/var/run/AdGserverdis")) then io.popen("/etc/init.d/AdGuardHome reload &") return end local ucitracktest = uci:get("AdGuardHome", "AdGuardHome", "ucitracktest") if ucitracktest == "1" then return elseif ucitracktest == "0" then io.popen("/etc/init.d/AdGuardHome reload &") else if (fs.access("/var/run/AdGlucitest")) then uci:set("AdGuardHome", "AdGuardHome", "ucitracktest", "0") io.popen("/etc/init.d/AdGuardHome reload &") else fs.writefile("/var/run/AdGlucitest", "") if (ucitracktest == "2") then uci:set("AdGuardHome", "AdGuardHome", "ucitracktest", "1") else uci:set("AdGuardHome", "AdGuardHome", "ucitracktest", "2") end end uci:commit("AdGuardHome") end end return m ================================================ FILE: luci-app-adguardhome/luasrc/model/cbi/AdGuardHome/log.lua ================================================ local fs = require "nixio.fs" local uci = require"luci.model.uci".cursor() local f, t f = SimpleForm("logview") f.reset = false f.submit = false t = f:field(TextValue, "conf") t.rmempty = true t.rows = 20 t.template = "AdGuardHome/log" t.readonly = "readonly" local logfile = uci:get("AdGuardHome", "AdGuardHome", "logfile") or "" t.timereplace = (logfile ~= "syslog" and logfile ~= "") t.pollcheck = logfile ~= "" fs.writefile("/var/run/lucilogpos", "0") return f ================================================ FILE: luci-app-adguardhome/luasrc/model/cbi/AdGuardHome/manual.lua ================================================ local m, s, o local fs = require "nixio.fs" local uci = require"luci.model.uci".cursor() local sys = require "luci.sys" require("string") require("io") require("table") function gen_template_config() local b local d = "" local file = "/tmp/resolv.conf.d/resolv.conf.auto" if not fs.access(file) then file = "/tmp/resolv.conf.auto" end for cnt in io.lines(file) do b = string.match(cnt, "^[^#]*nameserver%s+([^%s]+)$") if (b ~= nil) then d = d .. " - " .. b .. "\n" end end local f = io.open("/usr/share/AdGuardHome/AdGuardHome_template.yaml", "r+") local tbl = {} local a = "" while (1) do a = f:read("*l") if (a == "#bootstrap_dns") then a = d elseif (a == "#upstream_dns") then a = d elseif (a == nil) then break end table.insert(tbl, a) end f:close() return table.concat(tbl, "\n") end m = Map("AdGuardHome") local configpath = uci:get("AdGuardHome", "AdGuardHome", "configpath") local binpath = uci:get("AdGuardHome", "AdGuardHome", "binpath") s = m:section(TypedSection, "AdGuardHome") s.anonymous = true s.addremove = false --- config o = s:option(TextValue, "escconf") o.rows = 66 o.wrap = "off" o.rmempty = true o.cfgvalue = function(self, section) return fs.readfile("/tmp/AdGuardHometmpconfig.yaml") or fs.readfile(configpath) or gen_template_config() or "" end o.validate = function(self, value) fs.writefile("/tmp/AdGuardHometmpconfig.yaml", value:gsub("\r\n", "\n")) if fs.access(binpath) then if (sys.call(binpath .. " -c /tmp/AdGuardHometmpconfig.yaml --check-config 2> /tmp/AdGuardHometest.log") == 0) then return value end else return value end luci.http.redirect(luci.dispatcher.build_url("admin", "services", "AdGuardHome", "manual")) return nil end o.write = function(self, section, value) fs.move("/tmp/AdGuardHometmpconfig.yaml", configpath) end o.remove = function(self, section, value) fs.writefile(configpath, "") end --- js and reload button o = s:option(DummyValue, "") o.anonymous = true o.template = "AdGuardHome/yamleditor" if not fs.access(binpath) then o.description = translate("WARNING!!! no bin found apply config will not be test") end --- log if (fs.access("/tmp/AdGuardHometmpconfig.yaml")) then local c = fs.readfile("/tmp/AdGuardHometest.log") if (c ~= "") then o = s:option(TextValue, "") o.readonly = true o.rows = 5 o.rmempty = true o.name = "" o.cfgvalue = function(self, section) return fs.readfile("/tmp/AdGuardHometest.log") end end end function m.on_commit(map) local ucitracktest = uci:get("AdGuardHome", "AdGuardHome", "ucitracktest") if ucitracktest == "1" then return elseif ucitracktest == "0" then io.popen("/etc/init.d/AdGuardHome reload &") else fs.writefile("/var/run/AdGlucitest", "") end end return m ================================================ FILE: luci-app-adguardhome/luasrc/view/AdGuardHome/AdGuardHome_check.htm ================================================ <%+cbi/valueheader%> <%local fs=require"nixio.fs"%> <% if self.showfastconfig then %> <%end%> <%+cbi/valuefooter%> ================================================ FILE: luci-app-adguardhome/luasrc/view/AdGuardHome/AdGuardHome_chpass.htm ================================================ <%+cbi/valueheader%> 0, "data-choices", { self.keylist, self.vallist }) %> /> <% if self.password then %><% end %> <%+cbi/valuefooter%> ================================================ FILE: luci-app-adguardhome/luasrc/view/AdGuardHome/AdGuardHome_status.htm ================================================

<%:Collecting data...%>

================================================ FILE: luci-app-adguardhome/luasrc/view/AdGuardHome/log.htm ================================================ <%+cbi/valueheader%> <%:reverse%> <%if self.timereplace then%> <%:localtime%>
<%end%> <%+cbi/valuefooter%> ================================================ FILE: luci-app-adguardhome/luasrc/view/AdGuardHome/yamleditor.htm ================================================ <%+cbi/valueheader%> <%fs=require"nixio.fs"%> <%if fs.access("/tmp/AdGuardHometmpconfig.yaml") then%> <%end%> <%+cbi/valuefooter%> ================================================ FILE: luci-app-adguardhome/po/zh_Hans/AdGuardHome.po ================================================ #/cgi-bin/luci/admin/services/AdGuardHome msgid "Base Setting" msgstr "基础设置" msgid "Log" msgstr "日志" msgid "Manual Config" msgstr "手动设置" msgid "Free and open source, powerful network-wide ads & trackers blocking DNS server." msgstr "免费去广告和跟踪程序拦截DNS服务器,网页管理初始账号和密码均为:admin" msgid "RUNNING" msgstr "运行中" msgid "NOT RUNNING" msgstr "未运行" msgid "Redirected" msgstr "已重定向" msgid "Not redirect" msgstr "未重定向" msgid "Collecting data..." msgstr "获取数据中..." msgid "Enable" msgstr "启用" msgid "Browser management port" msgstr "网页管理端口" msgid "Update" msgstr "更新" #button change msgid "Update core version" msgstr "更新核心版本" msgid "Check..." msgstr "检查中..." msgid "Updated" msgstr "已更新" #button hide msgid "Force update" msgstr "强制更新" msgid "Fast config" msgstr "快速配置" # msgid "core version:" msgstr "核心版本:" #description change msgid "no config" msgstr "没有配置文件" msgid "no core" msgstr "没有核心" # msgid "Redirect" msgstr "重定向" #inlist msgid "none" msgstr "无" msgid "Run as dnsmasq upstream server" msgstr "作为dnsmasq的上游服务器" msgid "Redirect 53 port to AdGuardHome" msgstr "重定向53端口到AdGuardHome" msgid "Use port 53 replace dnsmasq" msgstr "使用53端口替换dnsmasq" # msgid "AdGuardHome redirect mode" msgstr "AdGuardHome重定向模式" msgid "Bin Path" msgstr "执行文件路径" msgid "AdGuardHome Bin path if no bin will auto download" msgstr "AdGuardHome 执行文件路径 如果没有执行文件将自动下载" msgid "use upx to compress bin after download" msgstr "下载后使用upx压缩执行文件" #inlist msgid "compress faster" msgstr "快速压缩" msgid "compress better" msgstr "更好的压缩" msgid "compress best(can be slow for big files)" msgstr "最好的压缩(大文件可能慢)" msgid "try all available compression methods & filters [slow]" msgstr "尝试所有可能的压缩方法和过滤器[慢]" msgid "try even more compression variants [very slow]" msgstr "尝试更多变体压缩手段[很慢]" msgid "bin use less space,but may have compatibility issues" msgstr "减小执行文件空间占用,但是可能压缩后有兼容性问题" # msgid "Config Path" msgstr "配置文件路径" msgid "AdGuardHome config path" msgstr "AdGuardHome 配置文件路径" msgid "Work dir" msgstr "工作目录" msgid "AdGuardHome work dir include rules,audit log and database" msgstr "AdGuardHome 工作目录包含规则,审计日志和数据库" msgid "Runtime log file" msgstr "运行日志" msgid "AdGuardHome runtime Log file if 'syslog': write to system log;if empty no log" msgstr "AdGuardHome 运行日志 如果填syslog将写入系统日志;如果空则不记录日志" msgid "Verbose log" msgstr "详细日志" #hide div msgid "Add gfwlist" msgstr "加入gfw列表" msgid "Add" msgstr "添加" msgid "Added" msgstr "已添加" msgid "Not added" msgstr "未添加" #hide div msgid "Del gfwlist" msgstr "删除gfw列表" msgid "Del" msgstr "删除" #hide div msgid "Gfwlist upstream dns server" msgstr "gfw列表上游服务器" msgid "Gfwlist domain upstream dns service" msgstr "gfw列表域名上游服务器" #hide div msgid "Change browser management password" msgstr "改变网页登录密码" msgid "Culculate" msgstr "计算" ##button change msgid "Load culculate model" msgstr "载入计算模块" msgid "loading..." msgstr "载入中" msgid "Please save/apply" msgstr "请提交" msgid "is empty" msgstr "为空" msgid "Press load culculate model and culculate finally save/apply" msgstr "按载入计算模块 然后计算 最后保存/提交" # msgid "Keep files when system upgrade" msgstr "系统升级时保留文件" #checkbox msgid "core bin" msgstr "核心执行文件" msgid "config file" msgstr "配置文件" msgid "log file" msgstr "日志文件" msgid "querylog.json" msgstr "审计日志.json" # msgid "On boot when network ok restart" msgstr "开机后网络准备好时重启" msgid "Backup workdir files when shutdown" msgstr "在关机时备份工作目录文件" msgid "Will be restore when workdir/data is empty" msgstr "在工作目录/data为空的时候恢复" msgid "Backup workdir path" msgstr "工作目录备份路径" msgid "Crontab task" msgstr "计划任务" msgid "Auto update core" msgstr "自动升级核心" msgid "Auto tail querylog" msgstr "自动截短查询日志" msgid "Auto tail runtime log" msgstr "自动截短运行日志" msgid "Auto update ipv6 hosts and restart adh" msgstr "自动更新ipv6主机并重启adh" msgid "Auto update gfwlist and restart adh" msgstr "自动更新gfw列表并重启adh" msgid "Please change time and args in crontab" msgstr "请在计划任务中修改时间和参数" msgid "Download links for update" msgstr "升级用的下载链接" #/cgi-bin/luci/admin/services/AdGuardHome/log/ msgid "reverse" msgstr "逆序" msgid "localtime" msgstr "本地时间" msgid "Please add log path in config to enable log" msgstr "请在设置里填写日志路径以启用日志" msgid "dellog" msgstr "删除日志" msgid "download log" msgstr "下载日志" #/cgi-bin/luci//admin/services/AdGuardHome/manual/ msgid "Use template" msgstr "使用模板" #hide button msgid "Reload Config" msgstr "重新载入配置" msgid "WARNING!!! no bin found apply config will not be test" msgstr "警告!!!未找到执行文件,提交配置将不会进行校验" #unused msgid "Change browser management username" msgstr "改变网页登录用户名" msgid "Username" msgstr "用户名" msgid "Check Config" msgstr "检查配置" msgid "unknown" msgstr "未知" msgid "Keep database when system upgrade" msgstr "系统升级时保留数据" msgid "Boot delay until network ok" msgstr "开机时直到网络准备好再启动" ================================================ FILE: luci-app-adguardhome/root/etc/config/AdGuardHome ================================================ config AdGuardHome 'AdGuardHome' option enabled '0' option httpport '3000' option configpath '/etc/config/AdGuardHome.yaml' option workdir '/tmp/AdGuardHome' option logfile '/tmp/AdGuardHome.log' option verbose '0' option binpath '/usr/bin/AdGuardHome/AdGuardHome' option upxflag '' option redirect 'dnsmasq-upstream' option waitonboot '0' option ucitracktest '1' ================================================ FILE: luci-app-adguardhome/root/etc/config/AdGuardHome.yaml ================================================ http: address: 0.0.0.0:3000 session_ttl: 720h users: - name: admin password: $2y$10$vHRcARdPCieYG3RXWomV5evDYN.Nj/edtwEkQgQJZcK6z7qTLaIc6 auth_attempts: 5 block_auth_min: 15 http_proxy: "" language: zh-cn theme: auto debug_pprof: false dns: bind_hosts: - 0.0.0.0 port: 1745 anonymize_client_ip: false protection_enabled: true blocking_mode: default blocking_ipv4: "" blocking_ipv6: "" blocked_response_ttl: 10 protection_disabled_until: null parental_block_host: family-block.dns.adguard.com safebrowsing_block_host: standard-block.dns.adguard.com ratelimit: 0 ratelimit_whitelist: [] refuse_any: false upstream_dns: - 223.5.5.5 upstream_dns_file: "" bootstrap_dns: - 119.29.29.29 - 223.5.5.5 all_servers: false fastest_addr: false fastest_timeout: 1s allowed_clients: [] disallowed_clients: [] blocked_hosts: - version.bind - id.server - hostname.bind trusted_proxies: - 127.0.0.0/8 - ::1/128 cache_size: 4194304 cache_ttl_min: 0 cache_ttl_max: 0 cache_optimistic: true bogus_nxdomain: [] aaaa_disabled: false enable_dnssec: false edns_client_subnet: false max_goroutines: 300 ipset: [] filtering_enabled: true filters_update_interval: 24 parental_enabled: false safesearch_enabled: false safebrowsing_enabled: false safebrowsing_cache_size: 1048576 safesearch_cache_size: 1048576 parental_cache_size: 1048576 cache_time: 30 rewrites: [] blocked_services: [] upstream_timeout: 10s private_networks: [] use_private_ptr_resolvers: true local_ptr_upstreams: [] tls: enabled: false server_name: "" force_https: false port_https: 443 port_dns_over_tls: 853 port_dns_over_quic: 784 port_dnscrypt: 0 dnscrypt_config_file: "" allow_unencrypted_doh: false certificate_chain: "" private_key: "" certificate_path: "" private_key_path: "" filters: - enabled: true url: https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt name: AdGuard DNS filter id: 1228750870 - enabled: true url: http://sub.adtchrome.com/adt-chinalist-easylist.txt name: 广告终结者使用的拦截规则,基于ChinaList+EasyList修正维护 id: 139789181 - enabled: true url: https://easylist-downloads.adblockplus.org/easylist.txt name: EasyList-去除国际网页中大多数广告,包括不需要的框架、图像和对象 id: 139789112 - enabled: true url: https://easylist-downloads.adblockplus.org/easylistchina.txt name: EasyList China-EasyList针对国内的补充规则 id: 139789121 - enabled: true url: https://anti-ad.net/adguard.txt name: anti-AD命中率最高列表 id: 139789122 - enabled: false url: https://raw.iqiq.io/banbendalao/ADgk/master/ADgk.txt name: ADgk去广告easylistchina补充规则 id: 139789131 - enabled: false url: https://raw.iqiq.io/banbendalao/ADgk/master/kill-baidu-ad.txt name: ADgk百度广告过滤 id: 139789133 - enabled: false url: https://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=1&mimetype=plaintext name: Peter Lowe’s Ad and tracking server list​ id: 139789152 - enabled: false url: https://easylist.to/easylist/fanboy-social.txt name: Fanboy's Social Blocking List id: 139789153 - enabled: false url: https://easylist.to/easylist/fanboy-annoyance.txt name: Fanboy's Annoyance List id: 139789154 - enabled: false url: https://secure.fanboy.co.nz/fanboy-cookiemonster.txt name: EasyList Cookie List id: 139789155 - enabled: false url: https://fanboy.co.nz/fanboy-antifacebook.txt name: Anti-Facebook List id: 139789161 - enabled: false url: https://filters.adtidy.org/extension/ublock/filters/14.txt name: AdGuard Annoyances filter id: 139789162 - enabled: false url: https://www.fanboy.co.nz/enhancedstats.txt name: Fanboy's Enhanced Tracking List id: 139789164 - enabled: false url: https://filters.adtidy.org/extension/ublock/filters/3.txt name: AdGuard Tracking Protection filter id: 139789165 - enabled: false url: https://easylist.to/easylist/easylist.txt name: EasyList id: 139789171 - enabled: false url: https://filters.adtidy.org/extension/ublock/filters/11.txt name: AdGuard Mobile Ads filter id: 139789172 - enabled: false url: https://filters.adtidy.org/extension/ublock/filters/2_without_easylist.txt name: AdGuard Base filter id: 139789173 - enabled: false url: https://easylist-downloads.adblockplus.org/antiadblockfilters.txt name: Adblock Warning Removal List id: 139789174 - enabled: false url: https://fanboy.co.nz/fanboy-problematic-sites.txt name: Fanboy's problematic-sites id: 139789175 - enabled: false url: https://adaway.org/hosts.txt name: Adaway HOST id: 139789187 whitelist_filters: [] user_rules: - '@@||taobao.com^$important' - '@@||tmall.com^$important' - '@@||jd.com^important' - '@@||flyme.cn^$important' - '@@||meizu.com^$important' - '@@||wl.jd.com^$important' - '@@||flydigi.com^' - '@@||pv.sohu.com^$important' - /googleads.$~script,domain=~googleads.github.io - /pagead/lvz? - '||google.com/pagead/' - '||static.doubleclick.net^$domain=youtube.com' - '||youtube.com/get_midroll_' - '||5hz.org^' - '@@||000714.xyz^' - '@@||blueskyxn.com^' - '||topnewsfeeds.net^' - '||nbryb.com^' - '||superbdolly.com^' - '||salutationcheerlessdemote.com^' - '||buildingdoodlesquare.com^' - '||colonistnobilityheroic.com^' dhcp: enabled: false interface_name: "" dhcpv4: gateway_ip: "" subnet_mask: "" range_start: "" range_end: "" lease_duration: 86400 icmp_timeout_msec: 1000 options: [] dhcpv6: range_start: "" lease_duration: 86400 ra_slaac_only: false ra_allow_slaac: false clients: [] log_compress: false log_localtime: false log_max_backups: 0 log_max_size: 100 log_max_age: 3 log_file: "" verbose: false schema_version: 10 ================================================ FILE: luci-app-adguardhome/root/etc/init.d/AdGuardHome ================================================ #!/bin/sh /etc/rc.common USE_PROCD=1 START=95 STOP=01 CONFIGURATION=AdGuardHome CRON_FILE=/etc/crontabs/root EXTRA_COMMANDS="do_redirect testbackup test_crontab force_reload isrunning" EXTRA_HELP=" do_redirect 0 or 1\ testbackup backup or restore\ test_crontab force_reload isrunning" set_forward_dnsmasq() { local PORT="$1" addr="127.0.0.1#$PORT" OLD_SERVER="`uci get dhcp.@dnsmasq[0].server 2>/dev/null`" echo $OLD_SERVER | grep "^$addr" >/dev/null 2>&1 if [ $? -eq 0 ]; then return fi uci delete dhcp.@dnsmasq[0].server 2>/dev/null uci add_list dhcp.@dnsmasq[0].server=$addr for server in $OLD_SERVER; do if [ "$server" = "$addr" ]; then continue fi uci add_list dhcp.@dnsmasq[0].server=$server done uci delete dhcp.@dnsmasq[0].resolvfile 2>/dev/null uci set dhcp.@dnsmasq[0].noresolv=1 uci commit dhcp /etc/init.d/dnsmasq restart } stop_forward_dnsmasq() { local OLD_PORT="$1" addr="127.0.0.1#$OLD_PORT" OLD_SERVER="`uci get dhcp.@dnsmasq[0].server 2>/dev/null`" echo $OLD_SERVER | grep "^$addr" >/dev/null 2>&1 if [ $? -ne 0 ]; then return fi uci del_list dhcp.@dnsmasq[0].server=$addr 2>/dev/null addrlist="`uci get dhcp.@dnsmasq[0].server 2>/dev/null`" if [ -z "$addrlist" ] ; then resolvfile="/tmp/resolv.conf.d/resolv.conf.auto" [ ! -f "$resolvfile" ] && resolvfile="/tmp/resolv.conf.auto" uci set dhcp.@dnsmasq[0].resolvfile="$resolvfile" 2>/dev/null uci delete dhcp.@dnsmasq[0].noresolv 2>/dev/null fi uci commit dhcp /etc/init.d/dnsmasq restart } set_iptable() { local ipv6_server=$1 local tcp_server=$2 uci -q batch <<-EOF >/dev/null 2>&1 delete firewall.AdGuardHome set firewall.AdGuardHome=include set firewall.AdGuardHome.type=script set firewall.AdGuardHome.path=/usr/share/AdGuardHome/firewall.start set firewall.AdGuardHome.reload=1 commit firewall EOF [ "$tcp_server" == "1" ] && iptables -t nat -I PREROUTING 1 -m comment --comment "AdGuardHome" -p tcp --dport 53 -j REDIRECT --to-ports $AdGuardHome_PORT iptables -t nat -I PREROUTING 1 -m comment --comment "AdGuardHome" -p udp --dport 53 -j REDIRECT --to-ports $AdGuardHome_PORT [ "$ipv6_server" == 0 ] && return [ "$tcp_server" == "1" ] && ip6tables -t nat -I PREROUTING 1 -m comment --comment "AdGuardHome" -p tcp --dport 53 -j REDIRECT --to-ports $AdGuardHome_PORT ip6tables -t nat -I PREROUTING 1 -m comment --comment "AdGuardHome" -p udp --dport 53 -j REDIRECT --to-ports $AdGuardHome_PORT } clear_iptable() { uci -q batch <<-EOF >/dev/null 2>&1 delete firewall.AdGuardHome commit firewall EOF nums=$(iptables -t nat -n -L PREROUTING 2>/dev/null | grep -c "AdGuardHome") if [ -n "$nums" ]; then until [ "$nums" = 0 ] do rules=$(iptables -t nat -n -L PREROUTING --line-num 2>/dev/null | grep "AdGuardHome" | awk '{print $1}') for rule in $rules do iptables -t nat -D PREROUTING $rule 2> /dev/null break done nums=$(expr $nums - 1) done fi nums=$(ip6tables -t nat -n -L PREROUTING 2>/dev/null | grep -c "AdGuardHome") if [ -n "$nums" ]; then until [ "$nums" = 0 ] do rules=$(ip6tables -t nat -n -L PREROUTING --line-num 2>/dev/null | grep "AdGuardHome" | awk '{print $1}') for rule in $rules do ip6tables -t nat -D PREROUTING $rule 2> /dev/null break done nums=$(expr $nums - 1) done fi } service_triggers() { procd_add_reload_trigger "$CONFIGURATION" [ "$(uci get AdGuardHome.AdGuardHome.redirect)" == "redirect" ] && procd_add_reload_trigger firewall } isrunning(){ config_load "${CONFIGURATION}" _isrunning local r=$? ([ "$r" == "0" ] && echo "running") || ([ "$r" == "1" ] && echo "not run" ) || echo "no bin" return $r } _isrunning(){ config_get binpath $CONFIGURATION binpath "/usr/bin/AdGuardHome/AdGuardHome" [ ! -f "$binpath" ] && return 2 pgrep $binpath 2>&1 >/dev/null && return 0 return 1 } force_reload(){ config_load "${CONFIGURATION}" _isrunning && procd_send_signal "$CONFIGURATION" || start } get_tz() { SET_TZ="" if [ -e "/etc/localtime" ]; then return fi for tzfile in /etc/TZ /var/etc/TZ do if [ ! -e "$tzfile" ]; then continue fi tz="`cat $tzfile 2>/dev/null`" done if [ -z "$tz" ]; then return fi SET_TZ=$tz } rm_port53() { local AdGuardHome_PORT=$(config_editor "dns.port" "" "$configpath" "1") dnsmasq_port=$(uci get dhcp.@dnsmasq[0].port 2>/dev/null) if [ -z "$dnsmasq_port" ]; then dnsmasq_port="53" fi if [ "$dnsmasq_port" == "$AdGuardHome_PORT" ]; then if [ "$dnsmasq_port" == "53" ]; then dnsmasq_port="1745" fi elif [ "$dnsmasq_port" == "53" ]; then return fi config_editor "dns.port" "$dnsmasq_port" "$configpath" uci set dhcp.@dnsmasq[0].port="53" uci commit dhcp /etc/init.d/dnsmasq restart } use_port53() { local AdGuardHome_PORT=$(config_editor "dns.port" "" "$configpath" "1") dnsmasq_port=$(uci get dhcp.@dnsmasq[0].port 2>/dev/null) if [ -z "$dnsmasq_port" ]; then dnsmasq_port="53" fi if [ "$dnsmasq_port" == "$AdGuardHome_PORT" ]; then if [ "$dnsmasq_port" == "53" ]; then AdGuardHome_PORT="1745" fi elif [ "$AdGuardHome_PORT" == "53" ]; then return fi config_editor "dns.port" "53" "$configpath" uci set dhcp.@dnsmasq[0].port="$AdGuardHome_PORT" uci commit dhcp /etc/init.d/dnsmasq restart } do_redirect() { config_load "${CONFIGURATION}" _do_redirect $1 } _do_redirect() { local section="$CONFIGURATION" args="" ipv6_server=1 tcp_server=0 enabled=$1 if [ "$enabled" == "1" ]; then echo -n "1">/var/run/AdGredir else echo -n "0">/var/run/AdGredir fi config_get configpath $CONFIGURATION configpath "/etc/AdGuardHome.yaml" AdGuardHome_PORT=$(config_editor "dns.port" "" "$configpath" "1") if [ -z "$AdGuardHome_PORT" ]; then AdGuardHome_PORT="0" fi config_get "redirect" "$section" "redirect" "none" config_get "old_redirect" "$section" "old_redirect" "none" config_get "old_port" "$section" "old_port" "0" config_get "old_enabled" "$section" "old_enabled" "0" uci get dhcp.@dnsmasq[0].port >/dev/null 2>&1 || uci set dhcp.@dnsmasq[0].port="53" >/dev/null 2>&1 uci commit dhcp if [ "$old_enabled" = "1" -a "$old_redirect" == "exchange" ]; then AdGuardHome_PORT=$(uci get dhcp.@dnsmasq[0].port 2>/dev/null) fi if [ "$old_redirect" != "$redirect" ] || [ "$old_port" != "$AdGuardHome_PORT" ] || [ "$old_enabled" = "1" -a "$enabled" = "0" ]; then if [ "$old_redirect" != "none" ]; then if [ "$old_redirect" == "redirect" -a "$old_port" != "0" ]; then clear_iptable elif [ "$old_redirect" == "dnsmasq-upstream" ]; then stop_forward_dnsmasq "$old_port" elif [ "$old_redirect" == "exchange" ]; then rm_port53 fi fi elif [ "$old_enabled" = "1" -a "$enabled" = "1" ]; then if [ "$old_redirect" == "redirect" -a "$old_port" != "0" ]; then clear_iptable fi fi uci delete AdGuardHome.@AdGuardHome[0].old_redirect 2>/dev/null uci delete AdGuardHome.@AdGuardHome[0].old_port 2>/dev/null uci delete AdGuardHome.@AdGuardHome[0].old_enabled 2>/dev/null uci add_list AdGuardHome.@AdGuardHome[0].old_redirect="$redirect" 2>/dev/null uci add_list AdGuardHome.@AdGuardHome[0].old_port="$AdGuardHome_PORT" 2>/dev/null uci add_list AdGuardHome.@AdGuardHome[0].old_enabled="$enabled" 2>/dev/null uci commit AdGuardHome [ "$enabled" == "0" ] && return 1 if [ "$AdGuardHome_PORT" == "0" ]; then return 1 fi if [ "$redirect" = "redirect" ]; then set_iptable $ipv6_server $tcp_server elif [ "$redirect" = "dnsmasq-upstream" ]; then set_forward_dnsmasq "$AdGuardHome_PORT" elif [ "$redirect" == "exchange" -a "$(uci get dhcp.@dnsmasq[0].port 2>/dev/null)" == "53" ]; then use_port53 fi } get_filesystem() { # print out path filesystem echo $1 | awk ' BEGIN{ while (("mount"| getline ret) > 0) { split(ret,d); fs[d[3]]=d[5]; m=index(d[1],":") if (m==0) { pt[d[3]]=d[1] }else{ pt[d[3]]=substr(d[1],m+1) }}}{ split($0,d,"/"); if ("/" in fs) { result1=fs["/"]; } if ("/" in pt) { result2=pt["/"]; } for (i=2;i<=length(d);i++) { p[i]=p[i-1]"/"d[i]; if (p[i] in fs) { result1=fs[p[i]]; result2=pt[p[i]]; } } if (result2 in fs){ result=fs[result2]} else{ result=result1} print(result);}' } config_editor() { awk -v yaml="$1" -v value="$2" -v file="$3" -v ro="$4" ' BEGIN{split(yaml,part,"\.");s="";i=1;l=length(part);} { if (match($0,s""part[i]":")) { if (i==l) { split($0,t,": "); if (ro==""){ system("sed -i '\''"FNR"c \\"t[1]": "value"'\'' "file); }else{ print(t[2]); } exit; } s=s"[- ]{2}"; i++; } }' $3 } boot_service() { rm /var/run/AdGserverdis >/dev/null 2>&1 config_load "${CONFIGURATION}" config_get waitonboot $CONFIGURATION waitonboot "0" config_get_bool enabled $CONFIGURATION enabled 0 config_get binpath $CONFIGURATION binpath "/usr/bin/AdGuardHome/AdGuardHome" [ -f "$binpath" ] && start_service if [ "$enabled" == "1" ] && [ "$waitonboot" == "1" ]; then procd_open_instance "waitnet" procd_set_param command "/usr/share/AdGuardHome/waitnet.sh" procd_close_instance echo "no net start pinging" fi } testbackup(){ config_load "${CONFIGURATION}" if [ "$1" == "backup" ]; then backup elif [ "$1" == "restore" ]; then restore fi } restore() { config_get workdir $CONFIGURATION workdir "/usr/bin/AdGuardHome" config_get backupwdpath $CONFIGURATION backupwdpath "/usr/bin/AdGuardHome" cp -u -r -f $backupwdpath/data $workdir } backup() { config_get backupwdpath $CONFIGURATION backupwdpath "/usr/bin/AdGuardHome" mkdir -p $backupwdpath/data config_get workdir $CONFIGURATION workdir "/usr/bin/AdGuardHome" config_get backupfile $CONFIGURATION backupfile "" for one in $backupfile; do while : do if [ -d "$backupwdpath/data/$one" ]; then cpret=$(cp -u -r -f $workdir/data/$one $backupwdpath/data 2>&1) else cpret=$(cp -u -r -f $workdir/data/$one $backupwdpath/data/$one 2>&1) fi echo "$cpret" echo "$cpret" | grep "no space left on device" if [ "$?" == "0" ]; then echo "磁盘已满,删除log重试中" del_querylog && continue rm -f -r $backupwdpath/data/filters rm -f -r $workdir/data/filters && continue echo "backup failed" fi break done done } start_service() { # Reading config rm /var/run/AdGserverdis >/dev/null 2>&1 config_load "${CONFIGURATION}" # update password config_get hashpass $CONFIGURATION hashpass "" config_get configpath $CONFIGURATION configpath "/etc/AdGuardHome.yaml" if [ -n "$hashpass" ]; then config_editor "users.password" "$hashpass" "$configpath" uci set $CONFIGURATION.$CONFIGURATION.hashpass="" fi local enabled config_get_bool enabled $CONFIGURATION enabled 0 # update crontab do_crontab if [ "$enabled" == "0" ]; then _do_redirect 0 return fi #what need to do before reload config_get workdir $CONFIGURATION workdir "/usr/bin/AdGuardHome" config_get backupfile $CONFIGURATION backupfile "" mkdir -p $workdir/data if [ -n "$backupfile" ] && [ ! -d "$workdir/data" ]; then restore fi # for overlay data-stk-oo not suppport local cwdfs=$(get_filesystem $workdir) echo "workdir is a $cwdfs filesystem" if [ "$cwdfs" == "jffs2" ]; then echo "fs error ln db to tmp $workdir $cwdfs" logger "AdGuardHome" "warning db redirect to tmp" touch $workdir/data/stats.db if [ ! -L $workdir/data/stats.db ]; then mv -f $workdir/data/stats.db /tmp/stats.db 2>/dev/null ln -s /tmp/stats.db $workdir/data/stats.db 2>/dev/null fi touch $workdir/data/sessions.db if [ ! -L $workdir/data/sessions.db ]; then mv -f $workdir/data/sessions.db /tmp/sessions.db 2>/dev/null ln -s /tmp/sessions.db $workdir/data/sessions.db 2>/dev/null fi fi local ADDITIONAL_ARGS="" config_get binpath $CONFIGURATION binpath "/usr/bin/AdGuardHome/AdGuardHome" mkdir -p ${binpath%/*} ADDITIONAL_ARGS="$ADDITIONAL_ARGS -c $configpath" ADDITIONAL_ARGS="$ADDITIONAL_ARGS -w $workdir" config_get httpport $CONFIGURATION httpport 3000 ADDITIONAL_ARGS="$ADDITIONAL_ARGS -p $httpport" # hack to save config file when upgrade system config_get upprotect $CONFIGURATION upprotect "" eval upprotect=${upprotect// /\\\\n} echo -e "$upprotect">/lib/upgrade/keep.d/luci-app-adguardhome config_get logfile $CONFIGURATION logfile "" if [ -n "$logfile" ]; then ADDITIONAL_ARGS="$ADDITIONAL_ARGS -l $logfile" fi if [ ! -f "$binpath" ]; then _do_redirect 0 /usr/share/AdGuardHome/update_core.sh 2>&1 >/tmp/AdGuardHome_update.log & exit 0 fi config_get_bool verbose $CONFIGURATION verbose 0 if [ "$verbose" -eq 1 ]; then ADDITIONAL_ARGS="$ADDITIONAL_ARGS -v" fi procd_open_instance get_tz if [ -n "$SET_TZ" ]; then procd_set_param env TZ="$SET_TZ" fi procd_set_param respawn ${respawn_threshold:-3600} ${respawn_timeout:-5} ${respawn_retry:-5} procd_set_param limits core="unlimited" nofile="65535 65535" procd_set_param stderr 1 procd_set_param command $binpath $ADDITIONAL_ARGS procd_set_param file "$configpath" "/etc/hosts" "/etc/config/AdGuardHome" procd_close_instance if [ -f "$configpath" ]; then _do_redirect 1 else _do_redirect 0 config_get "redirect" "AdGuardHome" "redirect" "none" if [ "$redirect" != "none" ]; then procd_open_instance "waitconfig" procd_set_param command "/usr/share/AdGuardHome/watchconfig.sh" procd_close_instance echo "no config start watching" fi fi echo "AdGuardHome service enabled" echo "luci enable switch=$enabled" (sleep 10 && [ -z "$(pgrep $binpath)" ] && logger "AdGuardHome" "no process in 10s cancel redirect" && _do_redirect 0 )& } reload_service() { rm /var/run/AdGlucitest >/dev/null 2>&1 echo "AdGuardHome reloading" start } del_querylog(){ local btarget=$(ls $backupwdpath/data | grep -F "querylog.json" | sort -r | head -n 1) local wtarget=$(ls $workdir/data | grep -F "querylog.json" | sort -r | head -n 1) if [ "$btarget"x == "$wtarget"x ]; then [ -z "$btarget" ] && return 1 rm -f $workdir/data/$wtarget rm -f $backupwdpath/data/$btarget return 0 fi if [ "$btarget" \> "$wtarget" ]; then rm -f $backupwdpath/data/$btarget return 0 else rm -f $workdir/data/$wtarget return 0 fi } stop_service() { config_load "${CONFIGURATION}" _do_redirect 0 do_crontab if [ "$1" != "nobackup" ]; then config_get backupfile $CONFIGURATION backupfile "0" if [ -n "$backupfile" ]; then backup fi fi echo "AdGuardHome service disabled" touch /var/run/AdGserverdis } boot() { rc_procd boot_service "$@" if eval "type service_started" 2>/dev/null >/dev/null; then service_started fi } test_crontab(){ config_load "${CONFIGURATION}" do_crontab } do_crontab(){ config_get_bool enabled $CONFIGURATION enabled 0 config_get crontab $CONFIGURATION crontab "" local findstr default cronenable replace commit local cronreload=0 local commit=0 findstr="/usr/share/AdGuardHome/update_core.sh" default="30 3 * * * /usr/share/AdGuardHome/update_core.sh 2>&1" [ "$enabled" == "0" ] || [ "${crontab//autoupdate/}" == "$crontab" ] && cronenable=0 || cronenable=1 crontab_editor config_get workdir $CONFIGURATION workdir "/usr/bin/AdGuardHome" config_get lastworkdir $CONFIGURATION lastworkdir "/usr/bin/AdGuardHome" findstr="/usr/share/AdGuardHome/tailto.sh [0-9]* \$(uci get AdGuardHome.AdGuardHome.workdir)/data/querylog.json" #[ -n "$lastworkdir" ] && findstr="/usr/share/AdGuardHome/tailto.sh [0-9]* $lastworkdir/data/querylog.json" && [ "$lastworkdir" != "$workdir" ] && replace="${lastworkdir//\//\\/}/${workdir//\//\\/}" default="0 * * * * /usr/share/AdGuardHome/tailto.sh 2000 \$(uci get AdGuardHome.AdGuardHome.workdir)/data/querylog.json" [ "$enabled" == "0" ] || [ "${crontab//cutquerylog/}" == "$crontab" ] && cronenable=0 || cronenable=1 crontab_editor #[ "$lastworkdir" != "$workdir" ] && uci set AdGuardHome.AdGuardHome.lastworkdir="$workdir" && commit=1 config_get logfile $CONFIGURATION logfile "" config_get lastlogfile $CONFIGURATION lastlogfile "" findstr="/usr/share/AdGuardHome/tailto.sh [0-9]* \$(uci get AdGuardHome.AdGuardHome.logfile)" default="30 3 * * * /usr/share/AdGuardHome/tailto.sh 2000 \$(uci get AdGuardHome.AdGuardHome.logfile)" #[ -n "$lastlogfile" ] && findstr="/usr/share/AdGuardHome/tailto.sh [0-9]* $lastlogfile" && [ -n "$logfile" ] && [ "$lastlogfile" != "$logfile" ] && replace="${lastlogfile//\//\\/}/${logfile//\//\\/}" [ "$logfile" == "syslog" ] || [ "$logfile" == "" ] || [ "$enabled" == "0" ] || [ "${crontab//cutruntimelog/}" == "$crontab" ] && cronenable=0 || cronenable=1 crontab_editor #[ -n "$logfile" ] && [ "$lastlogfile" != "$logfile" ] && uci set AdGuardHome.AdGuardHome.lastlogfile="$logfile" && commit=1 findstr="/usr/share/AdGuardHome/addhost.sh" default="0 * * * * /usr/share/AdGuardHome/addhost.sh" [ "$enabled" == "0" ] || [ "${crontab//autohost/}" == "$crontab" ] && cronenable=0 || cronenable=1 crontab_editor [ "$cronenable" == "0" ] && /usr/share/AdGuardHome/addhost.sh "del" "noreload" || /usr/share/AdGuardHome/addhost.sh "" "noreload" findstr="/usr/share/AdGuardHome/gfw2adg.sh" default="30 3 * * * /usr/share/AdGuardHome/gfw2adg.sh" [ "$enabled" == "0" ] || [ "${crontab//autogfw/}" == "$crontab" ] && cronenable=0 || cronenable=1 crontab_editor [ "$cronreload" -gt 0 ] && /etc/init.d/cron restart #[ "$commit" -gt 0 ] && uci commit AdGuardHome } crontab_editor(){ #usage input: #findstr= #default= #cronenable= #replace="${last//\//\\/}/${now//\//\\/}" #output:cronreload:if >1 please /etc/init.d/cron restart manual local testline reload local line="$(grep "$findstr" $CRON_FILE)" [ -n "$replace" ] && [ -n "$line" ] && eval testline="\${line//$replace}" && [ "$testline" != "$line" ] && line="$testline" && reload="1" && replace="" if [ "${line:0:1}" != "#" ]; then if [ $cronenable -eq 1 ]; then [ -z "$line" ] && line="$default" && reload="1" if [ -n "$reload" ]; then sed -i "\,$findstr,d" $CRON_FILE echo "$line" >> $CRON_FILE cronreload=$((cronreload+1)) fi elif [ -n "$line" ]; then sed -i "\,$findstr,d" $CRON_FILE echo "#$line" >> $CRON_FILE cronreload=$((cronreload+1)) fi else if [ $cronenable -eq 1 ]; then sed -i "\,$findstr,d" $CRON_FILE echo "${line:1}" >> $CRON_FILE cronreload=$((cronreload+1)) elif [ -z "$reload" ]; then sed -i "\,$findstr,d" $CRON_FILE echo "$line" >> $CRON_FILE fi fi } ================================================ FILE: luci-app-adguardhome/root/etc/uci-defaults/40_luci-AdGuardHome ================================================ #!/bin/sh uci -q batch <<-EOF >/dev/null 2>&1 delete ucitrack.@AdGuardHome[-1] add ucitrack AdGuardHome set ucitrack.@AdGuardHome[-1].init=AdGuardHome commit ucitrack delete AdGuardHome.AdGuardHome.ucitracktest EOF rm -f /tmp/luci-indexcache exit 0 ================================================ FILE: luci-app-adguardhome/root/usr/share/AdGuardHome/AdGuardHome_template.yaml ================================================ bind_host: 0.0.0.0 bind_port: 3000 beta_bind_port: 0 users: - name: admin password: $2y$10$vHRcARdPCieYG3RXWomV5evDYN.Nj/edtwEkQgQJZcK6z7qTLaIc6 auth_attempts: 5 block_auth_min: 15 http_proxy: "" language: zh-cn theme: auto debug_pprof: false dns: bind_hosts: - 0.0.0.0 port: 1745 anonymize_client_ip: false protection_enabled: true blocking_mode: default blocking_ipv4: "" blocking_ipv6: "" blocked_response_ttl: 10 protection_disabled_until: null parental_block_host: family-block.dns.adguard.com safebrowsing_block_host: standard-block.dns.adguard.com ratelimit: 0 ratelimit_whitelist: [] refuse_any: false upstream_dns: - 223.5.5.5 upstream_dns_file: "" bootstrap_dns: - 119.29.29.29 - 223.5.5.5 all_servers: false fastest_addr: false fastest_timeout: 1s allowed_clients: [] disallowed_clients: [] blocked_hosts: - version.bind - id.server - hostname.bind trusted_proxies: - 127.0.0.0/8 - ::1/128 cache_size: 4194304 cache_ttl_min: 0 cache_ttl_max: 0 cache_optimistic: true bogus_nxdomain: [] aaaa_disabled: false enable_dnssec: false edns_client_subnet: false max_goroutines: 300 ipset: [] filtering_enabled: true filters_update_interval: 24 parental_enabled: false safesearch_enabled: false safebrowsing_enabled: false safebrowsing_cache_size: 1048576 safesearch_cache_size: 1048576 parental_cache_size: 1048576 cache_time: 30 rewrites: [] blocked_services: [] upstream_timeout: 10s private_networks: [] use_private_ptr_resolvers: true local_ptr_upstreams: [] tls: enabled: false server_name: "" force_https: false port_https: 443 port_dns_over_tls: 853 port_dns_over_quic: 784 port_dnscrypt: 0 dnscrypt_config_file: "" allow_unencrypted_doh: false certificate_chain: "" private_key: "" certificate_path: "" private_key_path: "" filters: - enabled: true url: https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt name: AdGuard DNS filter id: 1628750870 - enabled: true url: https://anti-ad.net/easylist.txt name: 'CHN: anti-AD' id: 1628750871 whitelist_filters: [] user_rules: - '@@||taobao.com^$important' - '@@||jd.com^important' - '@@||flyme.cn^$important' - '@@||meizu.com^$important' - '@@||wl.jd.com^$important' - '@@||flydigi.com^' - '@@||pv.sohu.com^$important' dhcp: enabled: false interface_name: "" dhcpv4: gateway_ip: "" subnet_mask: "" range_start: "" range_end: "" lease_duration: 86400 icmp_timeout_msec: 1000 options: [] dhcpv6: range_start: "" lease_duration: 86400 ra_slaac_only: false ra_allow_slaac: false clients: [] log_compress: false log_localtime: false log_max_backups: 0 log_max_size: 100 log_max_age: 3 log_file: "" verbose: false schema_version: 10 ================================================ FILE: luci-app-adguardhome/root/usr/share/AdGuardHome/addhost.sh ================================================ #!/bin/sh checkmd5(){ local nowmd5=$(md5sum /etc/hosts) nowmd5=${nowmd5%% *} local lastmd5=$(uci get AdGuardHome.AdGuardHome.hostsmd5 2>/dev/null) if [ "$nowmd5" != "$lastmd5" ]; then uci set AdGuardHome.AdGuardHome.hostsmd5="$nowmd5" uci commit AdGuardHome [ "$1" == "noreload" ] || /etc/init.d/AdGuardHome reload fi } [ "$1" == "del" ] && sed -i '/programaddstart/,/programaddend/d' /etc/hosts && checkmd5 "$2" && exit 0 /usr/bin/awk 'BEGIN{ while ((getline < "/tmp/dhcp.leases") > 0) { a[$2]=$4; } while (("ip -6 neighbor show | grep -v fe80" | getline) > 0) { if (a[$5]) {print $1" "a[$5] >"/tmp/tmphost"; } } print "#programaddend" >"/tmp/tmphost"; }' grep programaddstart /etc/hosts >/dev/null 2>&1 if [ "$?" == "0" ]; then sed -i '/programaddstart/,/programaddend/c\#programaddstart' /etc/hosts sed -i '/programaddstart/'r/tmp/tmphost /etc/hosts else echo "#programaddstart" >>/etc/hosts cat /tmp/tmphost >> /etc/hosts fi rm /tmp/tmphost checkmd5 "$2" ================================================ FILE: luci-app-adguardhome/root/usr/share/AdGuardHome/firewall.start ================================================ #!/bin/sh AdGuardHome_enable=$(uci get AdGuardHome.AdGuardHome.enabled) redirect=$(uci get AdGuardHome.AdGuardHome.redirect) if [ $AdGuardHome_enable -eq 1 -a "$redirect" == "redirect" ]; then /etc/init.d/AdGuardHome do_redirect 1 fi ================================================ FILE: luci-app-adguardhome/root/usr/share/AdGuardHome/getsyslog.sh ================================================ #!/bin/sh PATH="/usr/sbin:/usr/bin:/sbin:/bin" logread -e AdGuardHome > /tmp/AdGuardHometmp.log logread -e AdGuardHome -f >> /tmp/AdGuardHometmp.log & pid=$! echo "1">/var/run/AdGuardHomesyslog while true do sleep 12 watchdog=$(cat /var/run/AdGuardHomesyslog) if [ "$watchdog"x == "0"x ]; then kill $pid rm /tmp/AdGuardHometmp.log rm /var/run/AdGuardHomesyslog exit 0 else echo "0">/var/run/AdGuardHomesyslog fi done ================================================ FILE: luci-app-adguardhome/root/usr/share/AdGuardHome/gfw2adg.sh ================================================ #!/bin/sh PATH="/usr/sbin:/usr/bin:/sbin:/bin" checkmd5(){ local nowmd5=$(md5sum /tmp/adguard.list 2>/dev/null) nowmd5=${nowmd5%% *} local lastmd5=$(uci get AdGuardHome.AdGuardHome.gfwlistmd5 2>/dev/null) if [ "$nowmd5" != "$lastmd5" ]; then uci set AdGuardHome.AdGuardHome.gfwlistmd5="$nowmd5" uci commit AdGuardHome [ "$1" == "noreload" ] || /etc/init.d/AdGuardHome reload fi } configpath=$(uci get AdGuardHome.AdGuardHome.configpath 2>/dev/null) [ "$1" == "del" ] && sed -i '/programaddstart/,/programaddend/d' $configpath && checkmd5 "$2" && exit 0 gfwupstream=$(uci get AdGuardHome.AdGuardHome.gfwupstream 2>/dev/null) if [ -z $gfwupstream ]; then gfwupstream="tcp://208.67.220.220:5353" fi if [ ! -f "$configpath" ]; then echo "please make a config first" exit 1 fi wget --no-check-certificate https://cdn.jsdelivr.net/gh/gfwlist/gfwlist/gfwlist.txt -O- | base64 -d > /tmp/gfwlist.txt cat /tmp/gfwlist.txt | awk -v upst="$gfwupstream" 'BEGIN{getline;}{ s1=substr($0,1,1); if (s1=="!") {next;} if (s1=="@"){ $0=substr($0,3); s1=substr($0,1,1); white=1;} else{ white=0; } if (s1=="|") {s2=substr($0,2,1); if (s2=="|") { $0=substr($0,3); split($0,d,"/"); $0=d[1]; }else{ split($0,d,"/"); $0=d[3]; }} else{ split($0,d,"/"); $0=d[1]; } star=index($0,"*"); if (star!=0) { $0=substr($0,star+1); dot=index($0,"."); if (dot!=0) $0=substr($0,dot+1); else next; s1=substr($0,1,1); } if (s1==".") {fin=substr($0,2);} else{fin=$0;} if (index(fin,".")==0) next; if (index(fin,"%")!=0) next; if (index(fin,":")!=0) next; match(fin,"^[0-9\.]+") if (RSTART==1 && RLENGTH==length(fin)) {print "ipset add gfwlist "fin>"/tmp/doipset.sh";next;} if (fin=="" || finl==fin) next; finl=fin; if (white==0) {print(" - '\''[/"fin"/]"upst"'\''");} else{ print(" - '\''[/"fin"/]#'\''");} }END{print(" - '\''[/programaddend/]#'\''")}' > /tmp/adguard.list grep programaddstart $configpath if [ "$?" == "0" ]; then sed -i '/programaddstart/,/programaddend/c\ - '\''\[\/programaddstart\/\]#'\''' $configpath sed -i '/programaddstart/'r/tmp/adguard.list $configpath else sed -i '1i\ - '\''[/programaddstart/]#'\''' /tmp/adguard.list sed -i '/upstream_dns:/'r/tmp/adguard.list $configpath fi checkmd5 "$2" rm -f /tmp/gfwlist.txt /tmp/adguard.list ================================================ FILE: luci-app-adguardhome/root/usr/share/AdGuardHome/links.txt ================================================ https://static.adguard.com/adguardhome/release/AdGuardHome_linux_${Arch}.tar.gz #https://github.com/AdguardTeam/AdGuardHome/releases/download/${latest_ver}/AdGuardHome_linux_${Arch}.tar.gz #https://static.adguard.com/adguardhome/beta/AdGuardHome_linux_${Arch}.tar.gz ================================================ FILE: luci-app-adguardhome/root/usr/share/AdGuardHome/tailto.sh ================================================ #!/bin/sh tail -n $1 "$2" > /var/run/tailtmp cat /var/run/tailtmp > "$2" rm /var/run/tailtmp ================================================ FILE: luci-app-adguardhome/root/usr/share/AdGuardHome/update_core.sh ================================================ #!/bin/bash PATH="/usr/sbin:/usr/bin:/sbin:/bin" binpath=$(uci get AdGuardHome.AdGuardHome.binpath) if [ -z "$binpath" ]; then uci set AdGuardHome.AdGuardHome.binpath="/tmp/AdGuardHome/AdGuardHome" binpath="/tmp/AdGuardHome/AdGuardHome" fi mkdir -p ${binpath%/*} upxflag=$(uci get AdGuardHome.AdGuardHome.upxflag 2>/dev/null) check_if_already_running(){ running_tasks="$(ps |grep "AdGuardHome" |grep "update_core" |grep -v "grep" |awk '{print $1}' |wc -l)" [ "${running_tasks}" -gt "2" ] && echo -e "\nA task is already running." && EXIT 2 } check_wgetcurl(){ which curl && downloader="curl -L -k --retry 2 --connect-timeout 20 -o" && return which wget && downloader="wget --no-check-certificate -t 2 -T 20 -O" && return [ -z "$1" ] && opkg update || (echo error opkg && EXIT 1) [ -z "$1" ] && (opkg remove wget wget-nossl --force-depends ; opkg install wget ; check_wgetcurl 1 ;return) [ "$1" == "1" ] && (opkg install curl ; check_wgetcurl 2 ; return) echo error curl and wget && EXIT 1 } check_latest_version(){ check_wgetcurl latest_ver="$($downloader - https://api.github.com/repos/AdguardTeam/AdGuardHome/releases/latest 2>/dev/null|grep -E 'tag_name' |grep -E 'v[0-9.]+' -o 2>/dev/null)" if [ -z "${latest_ver}" ]; then echo -e "\nFailed to check latest version, please try again later." && EXIT 1 fi now_ver="$($binpath -c /dev/null --check-config 2>&1| grep -m 1 -E 'v[0-9.]+' -o)" if [ "${latest_ver}"x != "${now_ver}"x ] || [ "$1" == "force" ]; then echo -e "Local version: ${now_ver}., cloud version: ${latest_ver}." doupdate_core else echo -e "\nLocal version: ${now_ver}, cloud version: ${latest_ver}." echo -e "You're already using the latest version." if [ ! -z "$upxflag" ]; then filesize=$(ls -l $binpath | awk '{ print $5 }') if [ $filesize -gt 8000000 ]; then echo -e "start upx may take a long time" doupx mkdir -p "/tmp/AdGuardHomeupdate/AdGuardHome" >/dev/null 2>&1 rm -fr /tmp/AdGuardHomeupdate/AdGuardHome/${binpath##*/} /tmp/upx-${upx_latest_ver}-${Arch}_linux/upx $upxflag $binpath -o /tmp/AdGuardHomeupdate/AdGuardHome/${binpath##*/} rm -rf /tmp/upx-${upx_latest_ver}-${Arch}_linux /etc/init.d/AdGuardHome stop nobackup rm $binpath mv -f /tmp/AdGuardHomeupdate/AdGuardHome/${binpath##*/} $binpath /etc/init.d/AdGuardHome start echo -e "finished" fi fi EXIT 0 fi } doupx(){ Archt="$(opkg info kernel | grep Architecture | awk -F "[ _]" '{print($2)}')" case $Archt in "i386") Arch="i386" ;; "i686") Arch="i386" echo -e "i686 use $Arch may have bug" ;; "x86") Arch="amd64" ;; "mipsel") Arch="mipsel" ;; "mips64el") Arch="mips64el" Arch="mipsel" echo -e "mips64el use $Arch may have bug" ;; "mips") Arch="mips" ;; "mips64") Arch="mips64" Arch="mips" echo -e "mips64 use $Arch may have bug" ;; "arm") Arch="arm" ;; "armeb") Arch="armeb" ;; "aarch64") Arch="arm64" ;; "powerpc") Arch="powerpc" ;; "powerpc64") Arch="powerpc64" ;; *) echo -e "error not support $Archt if you can use offical release please issue a bug" EXIT 1 ;; esac upx_latest_ver="$($downloader - https://api.github.com/repos/upx/upx/releases/latest 2>/dev/null|grep -E 'tag_name' |grep -E '[0-9.]+' -o 2>/dev/null)" $downloader /tmp/upx-${upx_latest_ver}-${Arch}_linux.tar.xz "https://github.com/upx/upx/releases/download/v${upx_latest_ver}/upx-${upx_latest_ver}-${Arch}_linux.tar.xz" 2>&1 #tar xvJf which xz || (opkg list | grep ^xz || opkg update && opkg install xz) || (echo "xz download fail" && EXIT 1) mkdir -p /tmp/upx-${upx_latest_ver}-${Arch}_linux xz -d -c /tmp/upx-${upx_latest_ver}-${Arch}_linux.tar.xz| tar -x -C "/tmp" >/dev/null 2>&1 if [ ! -e "/tmp/upx-${upx_latest_ver}-${Arch}_linux/upx" ]; then echo -e "Failed to download upx." EXIT 1 fi rm /tmp/upx-${upx_latest_ver}-${Arch}_linux.tar.xz } doupdate_core(){ echo -e "Updating core..." mkdir -p "/tmp/AdGuardHomeupdate" rm -rf /tmp/AdGuardHomeupdate/* >/dev/null 2>&1 Archt="$(opkg info kernel | grep Architecture | awk -F "[ _]" '{print($2)}')" case $Archt in "i386") Arch="386" ;; "i686") Arch="386" ;; "x86") Arch="amd64" ;; "mipsel") Arch="mipsle" ;; "mips64el") Arch="mips64le" Arch="mipsle" echo -e "mips64el use $Arch may have bug" ;; "mips") Arch="mips" ;; "mips64") Arch="mips64" Arch="mips" echo -e "mips64 use $Arch may have bug" ;; "arm") Arch="arm" ;; "aarch64") Arch="arm64" ;; "powerpc") Arch="ppc" echo -e "error not support $Archt" EXIT 1 ;; "powerpc64") Arch="ppc64" echo -e "error not support $Archt" EXIT 1 ;; *) echo -e "error not support $Archt if you can use offical release please issue a bug" EXIT 1 ;; esac echo -e "start download" grep -v "^#" /usr/share/AdGuardHome/links.txt >/tmp/run/AdHlinks.txt while read link do eval link="$link" $downloader /tmp/AdGuardHomeupdate/${link##*/} "$link" 2>&1 if [ "$?" != "0" ]; then echo "download failed try another download" rm -f /tmp/AdGuardHomeupdate/${link##*/} else local success="1" break fi done < "/tmp/run/AdHlinks.txt" rm /tmp/run/AdHlinks.txt [ -z "$success" ] && echo "no download success" && EXIT 1 if [ "${link##*.}" == "gz" ]; then tar -zxf "/tmp/AdGuardHomeupdate/${link##*/}" -C "/tmp/AdGuardHomeupdate/" if [ ! -e "/tmp/AdGuardHomeupdate/AdGuardHome" ]; then echo -e "Failed to download core." rm -rf "/tmp/AdGuardHomeupdate" >/dev/null 2>&1 EXIT 1 fi downloadbin="/tmp/AdGuardHomeupdate/AdGuardHome/AdGuardHome" else downloadbin="/tmp/AdGuardHomeupdate/${link##*/}" fi chmod 755 $downloadbin echo -e "download success start copy" if [ -n "$upxflag" ]; then echo -e "start upx may take a long time" doupx /tmp/upx-${upx_latest_ver}-${Arch}_linux/upx $upxflag $downloadbin rm -rf /tmp/upx-${upx_latest_ver}-${Arch}_linux fi echo -e "start copy" /etc/init.d/AdGuardHome stop nobackup rm "$binpath" mv -f "$downloadbin" "$binpath" if [ "$?" == "1" ]; then echo "mv failed maybe not enough space please use upx or change bin to /tmp/AdGuardHome" EXIT 1 fi /etc/init.d/AdGuardHome start rm -rf "/tmp/AdGuardHomeupdate" >/dev/null 2>&1 echo -e "Succeeded in updating core." echo -e "Local version: ${latest_ver}, cloud version: ${latest_ver}.\n" EXIT 0 } EXIT(){ rm /var/run/update_core 2>/dev/null [ "$1" != "0" ] && touch /var/run/update_core_error exit $1 } main(){ check_if_already_running check_latest_version $1 } trap "EXIT 1" SIGTERM SIGINT touch /var/run/update_core rm /var/run/update_core_error 2>/dev/null main $1 ================================================ FILE: luci-app-adguardhome/root/usr/share/AdGuardHome/waitnet.sh ================================================ #!/bin/sh PATH="/usr/sbin:/usr/bin:/sbin:/bin" count=0 while : do ping -c 1 -W 1 -q www.baidu.com 1>/dev/null 2>&1 if [ "$?" == "0" ]; then /etc/init.d/AdGuardHome force_reload break fi ping -c 1 -W 1 -q 202.108.22.5 1>/dev/null 2>&1 if [ "$?" == "0" ]; then /etc/init.d/AdGuardHome force_reload break fi sleep 5 ping -c 1 -W 1 -q www.google.com 1>/dev/null 2>&1 if [ "$?" == "0" ]; then /etc/init.d/AdGuardHome force_reload break fi ping -c 1 -W 1 -q 8.8.8.8 1>/dev/null 2>&1 if [ "$?" == "0" ]; then /etc/init.d/AdGuardHome force_reload break fi sleep 5 count=$((count+1)) if [ $count -gt 18 ]; then /etc/init.d/AdGuardHome force_reload break fi done return 0 ================================================ FILE: luci-app-adguardhome/root/usr/share/AdGuardHome/watchconfig.sh ================================================ #!/bin/sh PATH="/usr/sbin:/usr/bin:/sbin:/bin" configpath=$(uci get AdGuardHome.AdGuardHome.configpath) while : do sleep 10 if [ -f "$configpath" ]; then /etc/init.d/AdGuardHome do_redirect 1 break fi done return 0 ================================================ FILE: luci-app-adguardhome/root/usr/share/rpcd/acl.d/luci-app-adguardhome.json ================================================ { "luci-app-adguardhome": { "description": "Grant UCI access for luci-app-adguardhome", "read": { "uci": [ "AdGuardHome" ] }, "write": { "uci": [ "AdGuardHome" ] } } } ================================================ FILE: luci-app-adguardhome/root/www/luci-static/resources/codemirror/addon/fold/foldcode.js ================================================ !function(n){"object"==typeof exports&&"object"==typeof module?n(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],n):n(CodeMirror)}(function(n){"use strict";function e(e,o,i,t){if(i&&i.call){var l=i;i=null}else l=r(e,i,"rangeFinder");"number"==typeof o&&(o=n.Pos(o,0));var f=r(e,i,"minFoldSize");function d(n){var r=l(e,o);if(!r||r.to.line-r.from.linee.firstLine();)o=n.Pos(o.line-1,0),u=d(!1);if(u&&!u.cleared&&"unfold"!==t){var a=function(n,e){var o=r(n,e,"widget");if("string"==typeof o){var i=document.createTextNode(o);(o=document.createElement("span")).appendChild(i),o.className="CodeMirror-foldmarker"}else o&&(o=o.cloneNode(!0));return o}(e,i);n.on(a,"mousedown",function(e){c.clear(),n.e_preventDefault(e)});var c=e.markText(u.from,u.to,{replacedWith:a,clearOnEnter:r(e,i,"clearOnEnter"),__isFold:!0});c.on("clear",function(o,r){n.signal(e,"unfold",e,o,r)}),n.signal(e,"fold",e,u.from,u.to)}}n.newFoldFunction=function(n,o){return function(r,i){e(r,i,{rangeFinder:n,widget:o})}},n.defineExtension("foldCode",function(n,o,r){e(this,n,o,r)}),n.defineExtension("isFolded",function(n){for(var e=this.findMarksAt(n),o=0;o=u){if(s&&f&&s.test(f.className))return;i=r(a.indicatorOpen)}}(i||f)&&t.setGutterMarker(n,a.gutter,i)})}function i(t){return new RegExp("(^|\\s)"+t+"(?:$|\\s)\\s*")}function f(t){var o=t.getViewport(),e=t.state.foldGutter;e&&(t.operation(function(){n(t,o.from,o.to)}),e.from=o.from,e.to=o.to)}function a(t,r,n){var i=t.state.foldGutter;if(i){var f=i.options;if(n==f.gutter){var a=e(t,r);a?a.clear():t.foldCode(o(r,0),f)}}}function d(t){var o=t.state.foldGutter;if(o){var e=o.options;o.from=o.to=0,clearTimeout(o.changeUpdate),o.changeUpdate=setTimeout(function(){f(t)},e.foldOnChangeTimeSpan||600)}}function u(t){var o=t.state.foldGutter;if(o){var e=o.options;clearTimeout(o.changeUpdate),o.changeUpdate=setTimeout(function(){var e=t.getViewport();o.from==o.to||e.from-o.to>20||o.from-e.to>20?f(t):t.operation(function(){e.fromo.to&&(n(t,o.to,e.to),o.to=e.to)})},e.updateViewportTimeSpan||400)}}function l(t,o){var e=t.state.foldGutter;if(e){var r=o.line;r>=e.from&&ro))break;r=l}}return r?{from:e.Pos(i.line,t.getLine(i.line).length),to:e.Pos(r,t.getLine(r).length)}:void 0}})}); ================================================ FILE: luci-app-adguardhome/root/www/luci-static/resources/codemirror/lib/codemirror.css ================================================ .CodeMirror{font-family:monospace;height:500px;color:black;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{background-color:white}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:black}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid black;border-right:0;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0 !important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor-mark{background-color:rgba(20,255,20,0.5);-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite}.cm-animate-fat-cursor{width:auto;border:0;-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite;background-color:#7e7}@-moz-keyframes blink{50%{background-color:transparent}}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:0;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:blue}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:bold}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-variable-3,.cm-s-default .cm-type{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta{color:#555}.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-s-default .cm-error{color:red}.cm-invalidchar{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:white}.CodeMirror-scroll{overflow:scroll !important;margin-bottom:-30px;margin-right:-30px;padding-bottom:30px;height:100%;outline:0;position:relative}.CodeMirror-sizer{position:relative;border-right:30px solid transparent}.CodeMirror-vscrollbar,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{position:absolute;z-index:6;display:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-30px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:none !important;border:none !important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:transparent;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:0}.CodeMirror-scroll,.CodeMirror-sizer,.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-focused div.CodeMirror-cursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:rgba(255,255,0,.4)}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:''}span.CodeMirror-selectedtext{background:0} ================================================ FILE: luci-app-adguardhome/root/www/luci-static/resources/codemirror/lib/codemirror.js ================================================ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.CodeMirror=t()}(this,function(){"use strict";var e=navigator.userAgent,t=navigator.platform,r=/gecko\/\d/i.test(e),n=/MSIE \d/.test(e),i=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(e),o=/Edge\/(\d+)/.exec(e),l=n||i||o,s=l&&(n?document.documentMode||6:+(o||i)[1]),a=!o&&/WebKit\//.test(e),u=a&&/Qt\/\d+\.\d+/.test(e),c=!o&&/Chrome\//.test(e),h=/Opera\//.test(e),f=/Apple Computer/.test(navigator.vendor),d=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(e),p=/PhantomJS/.test(e),g=!o&&/AppleWebKit/.test(e)&&/Mobile\/\w+/.test(e),v=/Android/.test(e),m=g||v||/webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(e),y=g||/Mac/.test(t),b=/\bCrOS\b/.test(e),w=/win/i.test(t),x=h&&e.match(/Version\/(\d*\.\d*)/);x&&(x=Number(x[1])),x&&x>=15&&(h=!1,a=!0);var C=y&&(u||h&&(null==x||x<12.11)),S=r||l&&s>=9;function L(e){return new RegExp("(^|\\s)"+e+"(?:$|\\s)\\s*")}var k,T=function(e,t){var r=e.className,n=L(t).exec(r);if(n){var i=r.slice(n.index+n[0].length);e.className=r.slice(0,n.index)+(i?n[1]+i:"")}};function M(e){for(var t=e.childNodes.length;t>0;--t)e.removeChild(e.firstChild);return e}function N(e,t){return M(e).appendChild(t)}function O(e,t,r,n){var i=document.createElement(e);if(r&&(i.className=r),n&&(i.style.cssText=n),"string"==typeof t)i.appendChild(document.createTextNode(t));else if(t)for(var o=0;o=t)return l+(t-o);l+=s-o,l+=r-l%r,o=s+1}}g?P=function(e){e.selectionStart=0,e.selectionEnd=e.value.length}:l&&(P=function(e){try{e.select()}catch(e){}});var R=function(){this.id=null,this.f=null,this.time=0,this.handler=E(this.onTimeout,this)};function B(e,t){for(var r=0;r=t)return n+Math.min(l,t-i);if(i+=o-n,n=o+1,(i+=r-i%r)>=t)return n}}var Y=[""];function _(e){for(;Y.length<=e;)Y.push($(Y)+" ");return Y[e]}function $(e){return e[e.length-1]}function q(e,t){for(var r=[],n=0;n"€"&&(e.toUpperCase()!=e.toLowerCase()||J.test(e))}function te(e,t){return t?!!(t.source.indexOf("\\w")>-1&&ee(e))||t.test(e):ee(e)}function re(e){for(var t in e)if(e.hasOwnProperty(t)&&e[t])return!1;return!0}var ne=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;function ie(e){return e.charCodeAt(0)>=768&&ne.test(e)}function oe(e,t,r){for(;(r<0?t>0:tr?-1:1;;){if(t==r)return t;var i=(t+r)/2,o=n<0?Math.ceil(i):Math.floor(i);if(o==t)return e(o)?t:r;e(o)?r=o:t=o+n}}var se=null;function ae(e,t,r){var n;se=null;for(var i=0;it)return i;o.to==t&&(o.from!=o.to&&"before"==r?n=i:se=i),o.from==t&&(o.from!=o.to&&"before"!=r?n=i:se=i)}return null!=n?n:se}var ue=function(){var e="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",t="nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111";var r=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,n=/[stwN]/,i=/[LRr]/,o=/[Lb1n]/,l=/[1n]/;function s(e,t,r){this.level=e,this.from=t,this.to=r}return function(a,u){var c="ltr"==u?"L":"R";if(0==a.length||"ltr"==u&&!r.test(a))return!1;for(var h,f=a.length,d=[],p=0;p-1&&(n[t]=i.slice(0,o).concat(i.slice(o+1)))}}}function ge(e,t){var r=de(e,t);if(r.length)for(var n=Array.prototype.slice.call(arguments,2),i=0;i0}function be(e){e.prototype.on=function(e,t){fe(this,e,t)},e.prototype.off=function(e,t){pe(this,e,t)}}function we(e){e.preventDefault?e.preventDefault():e.returnValue=!1}function xe(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0}function Ce(e){return null!=e.defaultPrevented?e.defaultPrevented:0==e.returnValue}function Se(e){we(e),xe(e)}function Le(e){return e.target||e.srcElement}function ke(e){var t=e.which;return null==t&&(1&e.button?t=1:2&e.button?t=3:4&e.button&&(t=2)),y&&e.ctrlKey&&1==t&&(t=3),t}var Te,Me,Ne=function(){if(l&&s<9)return!1;var e=O("div");return"draggable"in e||"dragDrop"in e}();function Oe(e){if(null==Te){var t=O("span","​");N(e,O("span",[t,document.createTextNode("x")])),0!=e.firstChild.offsetHeight&&(Te=t.offsetWidth<=1&&t.offsetHeight>2&&!(l&&s<8))}var r=Te?O("span","​"):O("span"," ",null,"display: inline-block; width: 1px; margin-right: -1px");return r.setAttribute("cm-text",""),r}function Ae(e){if(null!=Me)return Me;var t=N(e,document.createTextNode("AخA")),r=k(t,0,1).getBoundingClientRect(),n=k(t,1,2).getBoundingClientRect();return M(e),!(!r||r.left==r.right)&&(Me=n.right-r.right<3)}var De,We=3!="\n\nb".split(/\n/).length?function(e){for(var t=0,r=[],n=e.length;t<=n;){var i=e.indexOf("\n",t);-1==i&&(i=e.length);var o=e.slice(t,"\r"==e.charAt(i-1)?i-1:i),l=o.indexOf("\r");-1!=l?(r.push(o.slice(0,l)),t+=l+1):(r.push(o),t=i+1)}return r}:function(e){return e.split(/\r\n?|\n/)},He=window.getSelection?function(e){try{return e.selectionStart!=e.selectionEnd}catch(e){return!1}}:function(e){var t;try{t=e.ownerDocument.selection.createRange()}catch(e){}return!(!t||t.parentElement()!=e)&&0!=t.compareEndPoints("StartToEnd",t)},Fe="oncopy"in(De=O("div"))||(De.setAttribute("oncopy","return;"),"function"==typeof De.oncopy),Pe=null;var Ee={},Ie={};function ze(e){if("string"==typeof e&&Ie.hasOwnProperty(e))e=Ie[e];else if(e&&"string"==typeof e.name&&Ie.hasOwnProperty(e.name)){var t=Ie[e.name];"string"==typeof t&&(t={name:t}),(e=Q(t,e)).name=t.name}else{if("string"==typeof e&&/^[\w\-]+\/[\w\-]+\+xml$/.test(e))return ze("application/xml");if("string"==typeof e&&/^[\w\-]+\/[\w\-]+\+json$/.test(e))return ze("application/json")}return"string"==typeof e?{name:e}:e||{name:"null"}}function Re(e,t){t=ze(t);var r=Ee[t.name];if(!r)return Re(e,"text/plain");var n=r(e,t);if(Be.hasOwnProperty(t.name)){var i=Be[t.name];for(var o in i)i.hasOwnProperty(o)&&(n.hasOwnProperty(o)&&(n["_"+o]=n[o]),n[o]=i[o])}if(n.name=t.name,t.helperType&&(n.helperType=t.helperType),t.modeProps)for(var l in t.modeProps)n[l]=t.modeProps[l];return n}var Be={};function Ge(e,t){I(t,Be.hasOwnProperty(e)?Be[e]:Be[e]={})}function Ue(e,t){if(!0===t)return t;if(e.copyState)return e.copyState(t);var r={};for(var n in t){var i=t[n];i instanceof Array&&(i=i.concat([])),r[n]=i}return r}function Ve(e,t){for(var r;e.innerMode&&(r=e.innerMode(t))&&r.mode!=e;)t=r.state,e=r.mode;return r||{mode:e,state:t}}function Ke(e,t,r){return!e.startState||e.startState(t,r)}var je=function(e,t,r){this.pos=this.start=0,this.string=e,this.tabSize=t||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0,this.lineOracle=r};function Xe(e,t){if((t-=e.first)<0||t>=e.size)throw new Error("There is no line "+(t+e.first)+" in the document.");for(var r=e;!r.lines;)for(var n=0;;++n){var i=r.children[n],o=i.chunkSize();if(t=e.first&&tr?et(r,Xe(e,r).text.length):function(e,t){var r=e.ch;return null==r||r>t?et(e.line,t):r<0?et(e.line,0):e}(t,Xe(e,t.line).text.length)}function at(e,t){for(var r=[],n=0;n=this.string.length},je.prototype.sol=function(){return this.pos==this.lineStart},je.prototype.peek=function(){return this.string.charAt(this.pos)||void 0},je.prototype.next=function(){if(this.post},je.prototype.eatSpace=function(){for(var e=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e},je.prototype.skipToEnd=function(){this.pos=this.string.length},je.prototype.skipTo=function(e){var t=this.string.indexOf(e,this.pos);if(t>-1)return this.pos=t,!0},je.prototype.backUp=function(e){this.pos-=e},je.prototype.column=function(){return this.lastColumnPos0?null:(n&&!1!==t&&(this.pos+=n[0].length),n)}var i=function(e){return r?e.toLowerCase():e};if(i(this.string.substr(this.pos,e.length))==i(e))return!1!==t&&(this.pos+=e.length),!0},je.prototype.current=function(){return this.string.slice(this.start,this.pos)},je.prototype.hideFirstChars=function(e,t){this.lineStart+=e;try{return t()}finally{this.lineStart-=e}},je.prototype.lookAhead=function(e){var t=this.lineOracle;return t&&t.lookAhead(e)},je.prototype.baseToken=function(){var e=this.lineOracle;return e&&e.baseToken(this.pos)};var ut=function(e,t){this.state=e,this.lookAhead=t},ct=function(e,t,r,n){this.state=t,this.doc=e,this.line=r,this.maxLookAhead=n||0,this.baseTokens=null,this.baseTokenPos=1};function ht(e,t,r,n){var i=[e.state.modeGen],o={};wt(e,t.text,e.doc.mode,r,function(e,t){return i.push(e,t)},o,n);for(var l=r.state,s=function(n){r.baseTokens=i;var s=e.state.overlays[n],a=1,u=0;r.state=!0,wt(e,t.text,s.mode,r,function(e,t){for(var r=a;ue&&i.splice(a,1,e,i[a+1],n),a+=2,u=Math.min(e,n)}if(t)if(s.opaque)i.splice(r,a-r,e,"overlay "+t),a=r+2;else for(;re.options.maxHighlightLength&&Ue(e.doc.mode,n.state),o=ht(e,t,n);i&&(n.state=i),t.stateAfter=n.save(!i),t.styles=o.styles,o.classes?t.styleClasses=o.classes:t.styleClasses&&(t.styleClasses=null),r===e.doc.highlightFrontier&&(e.doc.modeFrontier=Math.max(e.doc.modeFrontier,++e.doc.highlightFrontier))}return t.styles}function dt(e,t,r){var n=e.doc,i=e.display;if(!n.mode.startState)return new ct(n,!0,t);var o=function(e,t,r){for(var n,i,o=e.doc,l=r?-1:t-(e.doc.mode.innerMode?1e3:100),s=t;s>l;--s){if(s<=o.first)return o.first;var a=Xe(o,s-1),u=a.stateAfter;if(u&&(!r||s+(u instanceof ut?u.lookAhead:0)<=o.modeFrontier))return s;var c=z(a.text,null,e.options.tabSize);(null==i||n>c)&&(i=s-1,n=c)}return i}(e,t,r),l=o>n.first&&Xe(n,o-1).stateAfter,s=l?ct.fromSaved(n,l,o):new ct(n,Ke(n.mode),o);return n.iter(o,t,function(r){pt(e,r.text,s);var n=s.line;r.stateAfter=n==t-1||n%5==0||n>=i.viewFrom&&nt.start)return o}throw new Error("Mode "+e.name+" failed to advance stream.")}ct.prototype.lookAhead=function(e){var t=this.doc.getLine(this.line+e);return null!=t&&e>this.maxLookAhead&&(this.maxLookAhead=e),t},ct.prototype.baseToken=function(e){if(!this.baseTokens)return null;for(;this.baseTokens[this.baseTokenPos]<=e;)this.baseTokenPos+=2;var t=this.baseTokens[this.baseTokenPos+1];return{type:t&&t.replace(/( |^)overlay .*/,""),size:this.baseTokens[this.baseTokenPos]-e}},ct.prototype.nextLine=function(){this.line++,this.maxLookAhead>0&&this.maxLookAhead--},ct.fromSaved=function(e,t,r){return t instanceof ut?new ct(e,Ue(e.mode,t.state),r,t.lookAhead):new ct(e,Ue(e.mode,t),r)},ct.prototype.save=function(e){var t=!1!==e?Ue(this.doc.mode,this.state):this.state;return this.maxLookAhead>0?new ut(t,this.maxLookAhead):t};var mt=function(e,t,r){this.start=e.start,this.end=e.pos,this.string=e.current(),this.type=t||null,this.state=r};function yt(e,t,r,n){var i,o,l=e.doc,s=l.mode,a=Xe(l,(t=st(l,t)).line),u=dt(e,t.line,r),c=new je(a.text,e.options.tabSize,u);for(n&&(o=[]);(n||c.pose.options.maxHighlightLength?(s=!1,l&&pt(e,t,n,h.pos),h.pos=t.length,a=null):a=bt(vt(r,h,n.state,f),o),f){var d=f[0].name;d&&(a="m-"+(a?d+" "+a:d))}if(!s||c!=a){for(;u=t:o.to>t);(n||(n=[])).push(new St(l,o.from,s?null:o.to))}}return n}(r,i,l),a=function(e,t,r){var n;if(e)for(var i=0;i=t:o.to>t)||o.from==t&&"bookmark"==l.type&&(!r||o.marker.insertLeft)){var s=null==o.from||(l.inclusiveLeft?o.from<=t:o.from0&&s)for(var b=0;bt)&&(!r||Wt(r,o.marker)<0)&&(r=o.marker)}return r}function It(e,t,r,n,i){var o=Xe(e,t),l=Ct&&o.markedSpans;if(l)for(var s=0;s=0&&h<=0||c<=0&&h>=0)&&(c<=0&&(a.marker.inclusiveRight&&i.inclusiveLeft?tt(u.to,r)>=0:tt(u.to,r)>0)||c>=0&&(a.marker.inclusiveRight&&i.inclusiveLeft?tt(u.from,n)<=0:tt(u.from,n)<0)))return!0}}}function zt(e){for(var t;t=Ft(e);)e=t.find(-1,!0).line;return e}function Rt(e,t){var r=Xe(e,t),n=zt(r);return r==n?t:qe(n)}function Bt(e,t){if(t>e.lastLine())return t;var r,n=Xe(e,t);if(!Gt(e,n))return t;for(;r=Pt(n);)n=r.find(1,!0).line;return qe(n)+1}function Gt(e,t){var r=Ct&&t.markedSpans;if(r)for(var n=void 0,i=0;it.maxLineLength&&(t.maxLineLength=r,t.maxLine=e)})}var Xt=function(e,t,r){this.text=e,Ot(this,t),this.height=r?r(this):1};function Yt(e){e.parent=null,Nt(e)}Xt.prototype.lineNo=function(){return qe(this)},be(Xt);var _t={},$t={};function qt(e,t){if(!e||/^\s*$/.test(e))return null;var r=t.addModeClass?$t:_t;return r[e]||(r[e]=e.replace(/\S+/g,"cm-$&"))}function Zt(e,t){var r=A("span",null,null,a?"padding-right: .1px":null),n={pre:A("pre",[r],"CodeMirror-line"),content:r,col:0,pos:0,cm:e,trailingSpace:!1,splitSpaces:e.getOption("lineWrapping")};t.measure={};for(var i=0;i<=(t.rest?t.rest.length:0);i++){var o=i?t.rest[i-1]:t.line,l=void 0;n.pos=0,n.addToken=Jt,Ae(e.display.measure)&&(l=ce(o,e.doc.direction))&&(n.addToken=er(n.addToken,l)),n.map=[],rr(o,n,ft(e,o,t!=e.display.externalMeasured&&qe(o))),o.styleClasses&&(o.styleClasses.bgClass&&(n.bgClass=F(o.styleClasses.bgClass,n.bgClass||"")),o.styleClasses.textClass&&(n.textClass=F(o.styleClasses.textClass,n.textClass||""))),0==n.map.length&&n.map.push(0,0,n.content.appendChild(Oe(e.display.measure))),0==i?(t.measure.map=n.map,t.measure.cache={}):((t.measure.maps||(t.measure.maps=[])).push(n.map),(t.measure.caches||(t.measure.caches=[])).push({}))}if(a){var s=n.content.lastChild;(/\bcm-tab\b/.test(s.className)||s.querySelector&&s.querySelector(".cm-tab"))&&(n.content.className="cm-tab-wrap-hack")}return ge(e,"renderLine",e,t.line,n.pre),n.pre.className&&(n.textClass=F(n.pre.className,n.textClass||"")),n}function Qt(e){var t=O("span","•","cm-invalidchar");return t.title="\\u"+e.charCodeAt(0).toString(16),t.setAttribute("aria-label",t.title),t}function Jt(e,t,r,n,i,o,a){if(t){var u,c=e.splitSpaces?function(e,t){if(e.length>1&&!/ /.test(e))return e;for(var r=t,n="",i=0;iu&&h.from<=u);f++);if(h.to>=c)return e(r,n,i,o,l,s,a);e(r,n.slice(0,h.to-u),i,o,null,s,a),o=null,n=n.slice(h.to-u),u=h.to}}}function tr(e,t,r,n){var i=!n&&r.widgetNode;i&&e.map.push(e.pos,e.pos+t,i),!n&&e.cm.display.input.needsContentAttribute&&(i||(i=e.content.appendChild(document.createElement("span"))),i.setAttribute("cm-marker",r.id)),i&&(e.cm.display.input.setUneditable(i),e.content.appendChild(i)),e.pos+=t,e.trailingSpace=!1}function rr(e,t,r){var n=e.markedSpans,i=e.text,o=0;if(n)for(var l,s,a,u,c,h,f,d=i.length,p=0,g=1,v="",m=0;;){if(m==p){a=u=c=s="",f=null,h=null,m=1/0;for(var y=[],b=void 0,w=0;wp||C.collapsed&&x.to==p&&x.from==p)){if(null!=x.to&&x.to!=p&&m>x.to&&(m=x.to,u=""),C.className&&(a+=" "+C.className),C.css&&(s=(s?s+";":"")+C.css),C.startStyle&&x.from==p&&(c+=" "+C.startStyle),C.endStyle&&x.to==m&&(b||(b=[])).push(C.endStyle,x.to),C.title&&((f||(f={})).title=C.title),C.attributes)for(var S in C.attributes)(f||(f={}))[S]=C.attributes[S];C.collapsed&&(!h||Wt(h.marker,C)<0)&&(h=x)}else x.from>p&&m>x.from&&(m=x.from)}if(b)for(var L=0;L=d)break;for(var T=Math.min(d,m);;){if(v){var M=p+v.length;if(!h){var N=M>T?v.slice(0,T-p):v;t.addToken(t,N,l?l+a:a,c,p+N.length==m?u:"",s,f)}if(M>=T){v=v.slice(T-p),p=T;break}p=M,c=""}v=i.slice(o,o=r[g++]),l=qt(r[g++],t.cm.options)}}else for(var O=1;Or)return{map:e.measure.maps[i],cache:e.measure.caches[i],before:!0}}function Or(e,t,r,n){return Wr(e,Dr(e,t),r,n)}function Ar(e,t){if(t>=e.display.viewFrom&&t=r.lineN&&t2&&o.push((a.bottom+u.top)/2-r.top)}}o.push(r.bottom-r.top)}}(e,t.view,t.rect),t.hasHeights=!0),(o=function(e,t,r,n){var i,o=Pr(t.map,r,n),a=o.node,u=o.start,c=o.end,h=o.collapse;if(3==a.nodeType){for(var f=0;f<4;f++){for(;u&&ie(t.line.text.charAt(o.coverStart+u));)--u;for(;o.coverStart+c1}(e))return t;var r=screen.logicalXDPI/screen.deviceXDPI,n=screen.logicalYDPI/screen.deviceYDPI;return{left:t.left*r,right:t.right*r,top:t.top*n,bottom:t.bottom*n}}(e.display.measure,i))}else{var d;u>0&&(h=n="right"),i=e.options.lineWrapping&&(d=a.getClientRects()).length>1?d["right"==n?d.length-1:0]:a.getBoundingClientRect()}if(l&&s<9&&!u&&(!i||!i.left&&!i.right)){var p=a.parentNode.getClientRects()[0];i=p?{left:p.left,right:p.left+tn(e.display),top:p.top,bottom:p.bottom}:Fr}for(var g=i.top-t.rect.top,v=i.bottom-t.rect.top,m=(g+v)/2,y=t.view.measure.heights,b=0;bt)&&(i=(o=a-s)-1,t>=a&&(l="right")),null!=i){if(n=e[u+2],s==a&&r==(n.insertLeft?"left":"right")&&(l=r),"left"==r&&0==i)for(;u&&e[u-2]==e[u-3]&&e[u-1].insertLeft;)n=e[2+(u-=3)],l="left";if("right"==r&&i==a-s)for(;u=0&&(r=e[i]).left==r.right;i--);return r}function Ir(e){if(e.measure&&(e.measure.cache={},e.measure.heights=null,e.rest))for(var t=0;t=n.text.length?(a=n.text.length,u="before"):a<=0&&(a=0,u="after"),!s)return l("before"==u?a-1:a,"before"==u);function c(e,t,r){return l(r?e-1:e,1==s[t].level!=r)}var h=ae(s,a,u),f=se,d=c(a,h,"before"==u);return null!=f&&(d.other=c(a,f,"before"!=u)),d}function Yr(e,t){var r=0;t=st(e.doc,t),e.options.lineWrapping||(r=tn(e.display)*t.ch);var n=Xe(e.doc,t.line),i=Vt(n)+Cr(e.display);return{left:r,right:r,top:i,bottom:i+n.height}}function _r(e,t,r,n,i){var o=et(e,t,r);return o.xRel=i,n&&(o.outside=n),o}function $r(e,t,r){var n=e.doc;if((r+=e.display.viewOffset)<0)return _r(n.first,0,null,-1,-1);var i=Ze(n,r),o=n.first+n.size-1;if(i>o)return _r(n.first+n.size-1,Xe(n,o).text.length,null,1,1);t<0&&(t=0);for(var l=Xe(n,i);;){var s=Jr(e,l,i,t,r),a=Et(l,s.ch+(s.xRel>0||s.outside>0?1:0));if(!a)return s;var u=a.find(1);if(u.line==i)return u;l=Xe(n,i=u.line)}}function qr(e,t,r,n){n-=Ur(t);var i=t.text.length,o=le(function(t){return Wr(e,r,t-1).bottom<=n},i,0);return{begin:o,end:i=le(function(t){return Wr(e,r,t).top>n},o,i)}}function Zr(e,t,r,n){return r||(r=Dr(e,t)),qr(e,t,r,Vr(e,t,Wr(e,r,n),"line").top)}function Qr(e,t,r,n){return!(e.bottom<=r)&&(e.top>r||(n?e.left:e.right)>t)}function Jr(e,t,r,n,i){i-=Vt(t);var o=Dr(e,t),l=Ur(t),s=0,a=t.text.length,u=!0,c=ce(t,e.doc.direction);if(c){var h=(e.options.lineWrapping?function(e,t,r,n,i,o,l){var s=qr(e,t,n,l),a=s.begin,u=s.end;/\s/.test(t.text.charAt(u-1))&&u--;for(var c=null,h=null,f=0;f=u||d.to<=a)){var p=1!=d.level,g=Wr(e,n,p?Math.min(u,d.to)-1:Math.max(a,d.from)).right,v=gv)&&(c=d,h=v)}}c||(c=i[i.length-1]);c.fromu&&(c={from:c.from,to:u,level:c.level});return c}:function(e,t,r,n,i,o,l){var s=le(function(s){var a=i[s],u=1!=a.level;return Qr(Xr(e,et(r,u?a.to:a.from,u?"before":"after"),"line",t,n),o,l,!0)},0,i.length-1),a=i[s];if(s>0){var u=1!=a.level,c=Xr(e,et(r,u?a.from:a.to,u?"after":"before"),"line",t,n);Qr(c,o,l,!0)&&c.top>l&&(a=i[s-1])}return a})(e,t,r,o,c,n,i);s=(u=1!=h.level)?h.from:h.to-1,a=u?h.to:h.from-1}var f,d,p=null,g=null,v=le(function(t){var r=Wr(e,o,t);return r.top+=l,r.bottom+=l,!!Qr(r,n,i,!1)&&(r.top<=i&&r.left<=n&&(p=t,g=r),!0)},s,a),m=!1;if(g){var y=n-g.left=w.bottom?1:0}return _r(r,v=oe(t.text,v,1),d,m,n-f)}function en(e){if(null!=e.cachedTextHeight)return e.cachedTextHeight;if(null==Hr){Hr=O("pre",null,"CodeMirror-line-like");for(var t=0;t<49;++t)Hr.appendChild(document.createTextNode("x")),Hr.appendChild(O("br"));Hr.appendChild(document.createTextNode("x"))}N(e.measure,Hr);var r=Hr.offsetHeight/50;return r>3&&(e.cachedTextHeight=r),M(e.measure),r||1}function tn(e){if(null!=e.cachedCharWidth)return e.cachedCharWidth;var t=O("span","xxxxxxxxxx"),r=O("pre",[t],"CodeMirror-line-like");N(e.measure,r);var n=t.getBoundingClientRect(),i=(n.right-n.left)/10;return i>2&&(e.cachedCharWidth=i),i||10}function rn(e){for(var t=e.display,r={},n={},i=t.gutters.clientLeft,o=t.gutters.firstChild,l=0;o;o=o.nextSibling,++l){var s=e.display.gutterSpecs[l].className;r[s]=o.offsetLeft+o.clientLeft+i,n[s]=o.clientWidth}return{fixedPos:nn(t),gutterTotalWidth:t.gutters.offsetWidth,gutterLeft:r,gutterWidth:n,wrapperWidth:t.wrapper.clientWidth}}function nn(e){return e.scroller.getBoundingClientRect().left-e.sizer.getBoundingClientRect().left}function on(e){var t=en(e.display),r=e.options.lineWrapping,n=r&&Math.max(5,e.display.scroller.clientWidth/tn(e.display)-3);return function(i){if(Gt(e.doc,i))return 0;var o=0;if(i.widgets)for(var l=0;l=e.display.viewTo)return null;if((t-=e.display.viewFrom)<0)return null;for(var r=e.display.view,n=0;nt)&&(i.updateLineNumbers=t),e.curOp.viewChanged=!0,t>=i.viewTo)Ct&&Rt(e.doc,t)i.viewFrom?hn(e):(i.viewFrom+=n,i.viewTo+=n);else if(t<=i.viewFrom&&r>=i.viewTo)hn(e);else if(t<=i.viewFrom){var o=fn(e,r,r+n,1);o?(i.view=i.view.slice(o.index),i.viewFrom=o.lineN,i.viewTo+=n):hn(e)}else if(r>=i.viewTo){var l=fn(e,t,t,-1);l?(i.view=i.view.slice(0,l.index),i.viewTo=l.lineN):hn(e)}else{var s=fn(e,t,t,-1),a=fn(e,r,r+n,1);s&&a?(i.view=i.view.slice(0,s.index).concat(ir(e,s.lineN,a.lineN)).concat(i.view.slice(a.index)),i.viewTo+=n):hn(e)}var u=i.externalMeasured;u&&(r=i.lineN&&t=n.viewTo)){var o=n.view[an(e,t)];if(null!=o.node){var l=o.changes||(o.changes=[]);-1==B(l,r)&&l.push(r)}}}function hn(e){e.display.viewFrom=e.display.viewTo=e.doc.first,e.display.view=[],e.display.viewOffset=0}function fn(e,t,r,n){var i,o=an(e,t),l=e.display.view;if(!Ct||r==e.doc.first+e.doc.size)return{index:o,lineN:r};for(var s=e.display.viewFrom,a=0;a0){if(o==l.length-1)return null;i=s+l[o].size-t,o++}else i=s-t;t+=i,r+=i}for(;Rt(e.doc,r)!=r;){if(o==(n<0?0:l.length-1))return null;r+=n*l[o-(n<0?1:0)].size,o+=n}return{index:o,lineN:r}}function dn(e){for(var t=e.display.view,r=0,n=0;n=e.display.viewTo||s.to().linet||t==r&&l.to==t)&&(n(Math.max(l.from,t),Math.min(l.to,r),1==l.level?"rtl":"ltr",o),i=!0)}i||n(t,r,"ltr")}(g,r||0,null==n?f:n,function(e,t,i,h){var v="ltr"==i,m=d(e,v?"left":"right"),y=d(t-1,v?"right":"left"),b=null==r&&0==e,w=null==n&&t==f,x=0==h,C=!g||h==g.length-1;if(y.top-m.top<=3){var S=(u?w:b)&&C,L=(u?b:w)&&x?s:(v?m:y).left,k=S?a:(v?y:m).right;c(L,m.top,k-L,m.bottom)}else{var T,M,N,O;v?(T=u&&b&&x?s:m.left,M=u?a:p(e,i,"before"),N=u?s:p(t,i,"after"),O=u&&w&&C?a:y.right):(T=u?p(e,i,"before"):s,M=!u&&b&&x?a:m.right,N=!u&&w&&C?s:y.left,O=u?p(t,i,"after"):a),c(T,m.top,M-T,m.bottom),m.bottom0?t.blinker=setInterval(function(){return t.cursorDiv.style.visibility=(r=!r)?"":"hidden"},e.options.cursorBlinkRate):e.options.cursorBlinkRate<0&&(t.cursorDiv.style.visibility="hidden")}}function wn(e){e.state.focused||(e.display.input.focus(),Cn(e))}function xn(e){e.state.delayingBlurEvent=!0,setTimeout(function(){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1,Sn(e))},100)}function Cn(e,t){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1),"nocursor"!=e.options.readOnly&&(e.state.focused||(ge(e,"focus",e,t),e.state.focused=!0,H(e.display.wrapper,"CodeMirror-focused"),e.curOp||e.display.selForContextMenu==e.doc.sel||(e.display.input.reset(),a&&setTimeout(function(){return e.display.input.reset(!0)},20)),e.display.input.receivedFocus()),bn(e))}function Sn(e,t){e.state.delayingBlurEvent||(e.state.focused&&(ge(e,"blur",e,t),e.state.focused=!1,T(e.display.wrapper,"CodeMirror-focused")),clearInterval(e.display.blinker),setTimeout(function(){e.state.focused||(e.display.shift=!1)},150))}function Ln(e){for(var t=e.display,r=t.lineDiv.offsetTop,n=0;n.005||f<-.005)&&($e(i.line,a),kn(i.line),i.rest))for(var d=0;de.display.sizerWidth){var p=Math.ceil(u/tn(e.display));p>e.display.maxLineLength&&(e.display.maxLineLength=p,e.display.maxLine=i.line,e.display.maxLineChanged=!0)}}}}function kn(e){if(e.widgets)for(var t=0;t=l&&(o=Ze(t,Vt(Xe(t,a))-e.wrapper.clientHeight),l=a)}return{from:o,to:Math.max(l,o+1)}}function Mn(e,t){var r=e.display,n=en(e.display);t.top<0&&(t.top=0);var i=e.curOp&&null!=e.curOp.scrollTop?e.curOp.scrollTop:r.scroller.scrollTop,o=Mr(e),l={};t.bottom-t.top>o&&(t.bottom=t.top+o);var s=e.doc.height+Sr(r),a=t.tops-n;if(t.topi+o){var c=Math.min(t.top,(u?s:t.bottom)-o);c!=i&&(l.scrollTop=c)}var h=e.curOp&&null!=e.curOp.scrollLeft?e.curOp.scrollLeft:r.scroller.scrollLeft,f=Tr(e)-(e.options.fixedGutter?r.gutters.offsetWidth:0),d=t.right-t.left>f;return d&&(t.right=t.left+f),t.left<10?l.scrollLeft=0:t.leftf+h-3&&(l.scrollLeft=t.right+(d?0:10)-f),l}function Nn(e,t){null!=t&&(Dn(e),e.curOp.scrollTop=(null==e.curOp.scrollTop?e.doc.scrollTop:e.curOp.scrollTop)+t)}function On(e){Dn(e);var t=e.getCursor();e.curOp.scrollToPos={from:t,to:t,margin:e.options.cursorScrollMargin}}function An(e,t,r){null==t&&null==r||Dn(e),null!=t&&(e.curOp.scrollLeft=t),null!=r&&(e.curOp.scrollTop=r)}function Dn(e){var t=e.curOp.scrollToPos;t&&(e.curOp.scrollToPos=null,Wn(e,Yr(e,t.from),Yr(e,t.to),t.margin))}function Wn(e,t,r,n){var i=Mn(e,{left:Math.min(t.left,r.left),top:Math.min(t.top,r.top)-n,right:Math.max(t.right,r.right),bottom:Math.max(t.bottom,r.bottom)+n});An(e,i.scrollLeft,i.scrollTop)}function Hn(e,t){Math.abs(e.doc.scrollTop-t)<2||(r||oi(e,{top:t}),Fn(e,t,!0),r&&oi(e),ei(e,100))}function Fn(e,t,r){t=Math.min(e.display.scroller.scrollHeight-e.display.scroller.clientHeight,t),(e.display.scroller.scrollTop!=t||r)&&(e.doc.scrollTop=t,e.display.scrollbars.setScrollTop(t),e.display.scroller.scrollTop!=t&&(e.display.scroller.scrollTop=t))}function Pn(e,t,r,n){t=Math.min(t,e.display.scroller.scrollWidth-e.display.scroller.clientWidth),(r?t==e.doc.scrollLeft:Math.abs(e.doc.scrollLeft-t)<2)&&!n||(e.doc.scrollLeft=t,ai(e),e.display.scroller.scrollLeft!=t&&(e.display.scroller.scrollLeft=t),e.display.scrollbars.setScrollLeft(t))}function En(e){var t=e.display,r=t.gutters.offsetWidth,n=Math.round(e.doc.height+Sr(e.display));return{clientHeight:t.scroller.clientHeight,viewHeight:t.wrapper.clientHeight,scrollWidth:t.scroller.scrollWidth,clientWidth:t.scroller.clientWidth,viewWidth:t.wrapper.clientWidth,barLeft:e.options.fixedGutter?r:0,docHeight:n,scrollHeight:n+kr(e)+t.barHeight,nativeBarWidth:t.nativeBarWidth,gutterWidth:r}}var In=function(e,t,r){this.cm=r;var n=this.vert=O("div",[O("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),i=this.horiz=O("div",[O("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");n.tabIndex=i.tabIndex=-1,e(n),e(i),fe(n,"scroll",function(){n.clientHeight&&t(n.scrollTop,"vertical")}),fe(i,"scroll",function(){i.clientWidth&&t(i.scrollLeft,"horizontal")}),this.checkedZeroWidth=!1,l&&s<8&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")};In.prototype.update=function(e){var t=e.scrollWidth>e.clientWidth+1,r=e.scrollHeight>e.clientHeight+1,n=e.nativeBarWidth;if(r){this.vert.style.display="block",this.vert.style.bottom=t?n+"px":"0";var i=e.viewHeight-(t?n:0);this.vert.firstChild.style.height=Math.max(0,e.scrollHeight-e.clientHeight+i)+"px"}else this.vert.style.display="",this.vert.firstChild.style.height="0";if(t){this.horiz.style.display="block",this.horiz.style.right=r?n+"px":"0",this.horiz.style.left=e.barLeft+"px";var o=e.viewWidth-e.barLeft-(r?n:0);this.horiz.firstChild.style.width=Math.max(0,e.scrollWidth-e.clientWidth+o)+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&e.clientHeight>0&&(0==n&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:r?n:0,bottom:t?n:0}},In.prototype.setScrollLeft=function(e){this.horiz.scrollLeft!=e&&(this.horiz.scrollLeft=e),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz,"horiz")},In.prototype.setScrollTop=function(e){this.vert.scrollTop!=e&&(this.vert.scrollTop=e),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert,"vert")},In.prototype.zeroWidthHack=function(){var e=y&&!d?"12px":"18px";this.horiz.style.height=this.vert.style.width=e,this.horiz.style.pointerEvents=this.vert.style.pointerEvents="none",this.disableHoriz=new R,this.disableVert=new R},In.prototype.enableZeroWidthBar=function(e,t,r){e.style.pointerEvents="auto",t.set(1e3,function n(){var i=e.getBoundingClientRect();("vert"==r?document.elementFromPoint(i.right-1,(i.top+i.bottom)/2):document.elementFromPoint((i.right+i.left)/2,i.bottom-1))!=e?e.style.pointerEvents="none":t.set(1e3,n)})},In.prototype.clear=function(){var e=this.horiz.parentNode;e.removeChild(this.horiz),e.removeChild(this.vert)};var zn=function(){};function Rn(e,t){t||(t=En(e));var r=e.display.barWidth,n=e.display.barHeight;Bn(e,t);for(var i=0;i<4&&r!=e.display.barWidth||n!=e.display.barHeight;i++)r!=e.display.barWidth&&e.options.lineWrapping&&Ln(e),Bn(e,En(e)),r=e.display.barWidth,n=e.display.barHeight}function Bn(e,t){var r=e.display,n=r.scrollbars.update(t);r.sizer.style.paddingRight=(r.barWidth=n.right)+"px",r.sizer.style.paddingBottom=(r.barHeight=n.bottom)+"px",r.heightForcer.style.borderBottom=n.bottom+"px solid transparent",n.right&&n.bottom?(r.scrollbarFiller.style.display="block",r.scrollbarFiller.style.height=n.bottom+"px",r.scrollbarFiller.style.width=n.right+"px"):r.scrollbarFiller.style.display="",n.bottom&&e.options.coverGutterNextToScrollbar&&e.options.fixedGutter?(r.gutterFiller.style.display="block",r.gutterFiller.style.height=n.bottom+"px",r.gutterFiller.style.width=t.gutterWidth+"px"):r.gutterFiller.style.display=""}zn.prototype.update=function(){return{bottom:0,right:0}},zn.prototype.setScrollLeft=function(){},zn.prototype.setScrollTop=function(){},zn.prototype.clear=function(){};var Gn={native:In,null:zn};function Un(e){e.display.scrollbars&&(e.display.scrollbars.clear(),e.display.scrollbars.addClass&&T(e.display.wrapper,e.display.scrollbars.addClass)),e.display.scrollbars=new Gn[e.options.scrollbarStyle](function(t){e.display.wrapper.insertBefore(t,e.display.scrollbarFiller),fe(t,"mousedown",function(){e.state.focused&&setTimeout(function(){return e.display.input.focus()},0)}),t.setAttribute("cm-not-content","true")},function(t,r){"horizontal"==r?Pn(e,t):Hn(e,t)},e),e.display.scrollbars.addClass&&H(e.display.wrapper,e.display.scrollbars.addClass)}var Vn=0;function Kn(e){var t;e.curOp={cm:e,viewChanged:!1,startHeight:e.doc.height,forceUpdate:!1,updateInput:0,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++Vn},t=e.curOp,or?or.ops.push(t):t.ownsGroup=or={ops:[t],delayedCallbacks:[]}}function jn(e){var t=e.curOp;t&&function(e,t){var r=e.ownsGroup;if(r)try{!function(e){var t=e.delayedCallbacks,r=0;do{for(;r=r.viewTo)||r.maxLineChanged&&t.options.lineWrapping,e.update=e.mustUpdate&&new ri(t,e.mustUpdate&&{top:e.scrollTop,ensure:e.scrollToPos},e.forceUpdate)}function Yn(e){var t=e.cm,r=t.display;e.updatedDisplay&&Ln(t),e.barMeasure=En(t),r.maxLineChanged&&!t.options.lineWrapping&&(e.adjustWidthTo=Or(t,r.maxLine,r.maxLine.text.length).left+3,t.display.sizerWidth=e.adjustWidthTo,e.barMeasure.scrollWidth=Math.max(r.scroller.clientWidth,r.sizer.offsetLeft+e.adjustWidthTo+kr(t)+t.display.barWidth),e.maxScrollLeft=Math.max(0,r.sizer.offsetLeft+e.adjustWidthTo-Tr(t))),(e.updatedDisplay||e.selectionChanged)&&(e.preparedSelection=r.input.prepareSelection())}function _n(e){var t=e.cm;null!=e.adjustWidthTo&&(t.display.sizer.style.minWidth=e.adjustWidthTo+"px",e.maxScrollLeft(window.innerHeight||document.documentElement.clientHeight)&&(i=!1),null!=i&&!p){var o=O("div","​",null,"position: absolute;\n top: "+(t.top-r.viewOffset-Cr(e.display))+"px;\n height: "+(t.bottom-t.top+kr(e)+r.barHeight)+"px;\n left: "+t.left+"px; width: "+Math.max(2,t.right-t.left)+"px;");e.display.lineSpace.appendChild(o),o.scrollIntoView(i),e.display.lineSpace.removeChild(o)}}}(t,function(e,t,r,n){var i;null==n&&(n=0),e.options.lineWrapping||t!=r||(r="before"==(t=t.ch?et(t.line,"before"==t.sticky?t.ch-1:t.ch,"after"):t).sticky?et(t.line,t.ch+1,"before"):t);for(var o=0;o<5;o++){var l=!1,s=Xr(e,t),a=r&&r!=t?Xr(e,r):s,u=Mn(e,i={left:Math.min(s.left,a.left),top:Math.min(s.top,a.top)-n,right:Math.max(s.left,a.left),bottom:Math.max(s.bottom,a.bottom)+n}),c=e.doc.scrollTop,h=e.doc.scrollLeft;if(null!=u.scrollTop&&(Hn(e,u.scrollTop),Math.abs(e.doc.scrollTop-c)>1&&(l=!0)),null!=u.scrollLeft&&(Pn(e,u.scrollLeft),Math.abs(e.doc.scrollLeft-h)>1&&(l=!0)),!l)break}return i}(t,st(n,e.scrollToPos.from),st(n,e.scrollToPos.to),e.scrollToPos.margin));var i=e.maybeHiddenMarkers,o=e.maybeUnhiddenMarkers;if(i)for(var l=0;l=e.display.viewTo)){var r=+new Date+e.options.workTime,n=dt(e,t.highlightFrontier),i=[];t.iter(n.line,Math.min(t.first+t.size,e.display.viewTo+500),function(o){if(n.line>=e.display.viewFrom){var l=o.styles,s=o.text.length>e.options.maxHighlightLength?Ue(t.mode,n.state):null,a=ht(e,o,n,!0);s&&(n.state=s),o.styles=a.styles;var u=o.styleClasses,c=a.classes;c?o.styleClasses=c:u&&(o.styleClasses=null);for(var h=!l||l.length!=o.styles.length||u!=c&&(!u||!c||u.bgClass!=c.bgClass||u.textClass!=c.textClass),f=0;!h&&fr)return ei(e,e.options.workDelay),!0}),t.highlightFrontier=n.line,t.modeFrontier=Math.max(t.modeFrontier,n.line),i.length&&qn(e,function(){for(var t=0;t=r.viewFrom&&t.visible.to<=r.viewTo&&(null==r.updateLineNumbers||r.updateLineNumbers>=r.viewTo)&&r.renderedView==r.view&&0==dn(e))return!1;ui(e)&&(hn(e),t.dims=rn(e));var i=n.first+n.size,o=Math.max(t.visible.from-e.options.viewportMargin,n.first),l=Math.min(i,t.visible.to+e.options.viewportMargin);r.viewFroml&&r.viewTo-l<20&&(l=Math.min(i,r.viewTo)),Ct&&(o=Rt(e.doc,o),l=Bt(e.doc,l));var s=o!=r.viewFrom||l!=r.viewTo||r.lastWrapHeight!=t.wrapperHeight||r.lastWrapWidth!=t.wrapperWidth;!function(e,t,r){var n=e.display;0==n.view.length||t>=n.viewTo||r<=n.viewFrom?(n.view=ir(e,t,r),n.viewFrom=t):(n.viewFrom>t?n.view=ir(e,t,n.viewFrom).concat(n.view):n.viewFromr&&(n.view=n.view.slice(0,an(e,r)))),n.viewTo=r}(e,o,l),r.viewOffset=Vt(Xe(e.doc,r.viewFrom)),e.display.mover.style.top=r.viewOffset+"px";var u=dn(e);if(!s&&0==u&&!t.force&&r.renderedView==r.view&&(null==r.updateLineNumbers||r.updateLineNumbers>=r.viewTo))return!1;var c=function(e){if(e.hasFocus())return null;var t=W();if(!t||!D(e.display.lineDiv,t))return null;var r={activeElt:t};if(window.getSelection){var n=window.getSelection();n.anchorNode&&n.extend&&D(e.display.lineDiv,n.anchorNode)&&(r.anchorNode=n.anchorNode,r.anchorOffset=n.anchorOffset,r.focusNode=n.focusNode,r.focusOffset=n.focusOffset)}return r}(e);return u>4&&(r.lineDiv.style.display="none"),function(e,t,r){var n=e.display,i=e.options.lineNumbers,o=n.lineDiv,l=o.firstChild;function s(t){var r=t.nextSibling;return a&&y&&e.display.currentWheelTarget==t?t.style.display="none":t.parentNode.removeChild(t),r}for(var u=n.view,c=n.viewFrom,h=0;h-1&&(d=!1),ur(e,f,c,r)),d&&(M(f.lineNumber),f.lineNumber.appendChild(document.createTextNode(Je(e.options,c)))),l=f.node.nextSibling}else{var p=vr(e,f,c,r);o.insertBefore(p,l)}c+=f.size}for(;l;)l=s(l)}(e,r.updateLineNumbers,t.dims),u>4&&(r.lineDiv.style.display=""),r.renderedView=r.view,function(e){if(e&&e.activeElt&&e.activeElt!=W()&&(e.activeElt.focus(),e.anchorNode&&D(document.body,e.anchorNode)&&D(document.body,e.focusNode))){var t=window.getSelection(),r=document.createRange();r.setEnd(e.anchorNode,e.anchorOffset),r.collapse(!1),t.removeAllRanges(),t.addRange(r),t.extend(e.focusNode,e.focusOffset)}}(c),M(r.cursorDiv),M(r.selectionDiv),r.gutters.style.height=r.sizer.style.minHeight=0,s&&(r.lastWrapHeight=t.wrapperHeight,r.lastWrapWidth=t.wrapperWidth,ei(e,400)),r.updateLineNumbers=null,!0}function ii(e,t){for(var r=t.viewport,n=!0;(n&&e.options.lineWrapping&&t.oldDisplayWidth!=Tr(e)||(r&&null!=r.top&&(r={top:Math.min(e.doc.height+Sr(e.display)-Mr(e),r.top)}),t.visible=Tn(e.display,e.doc,r),!(t.visible.from>=e.display.viewFrom&&t.visible.to<=e.display.viewTo)))&&ni(e,t);n=!1){Ln(e);var i=En(e);pn(e),Rn(e,i),si(e,i),t.force=!1}t.signal(e,"update",e),e.display.viewFrom==e.display.reportedViewFrom&&e.display.viewTo==e.display.reportedViewTo||(t.signal(e,"viewportChange",e,e.display.viewFrom,e.display.viewTo),e.display.reportedViewFrom=e.display.viewFrom,e.display.reportedViewTo=e.display.viewTo)}function oi(e,t){var r=new ri(e,t);if(ni(e,r)){Ln(e),ii(e,r);var n=En(e);pn(e),Rn(e,n),si(e,n),r.finish()}}function li(e){var t=e.gutters.offsetWidth;e.sizer.style.marginLeft=t+"px"}function si(e,t){e.display.sizer.style.minHeight=t.docHeight+"px",e.display.heightForcer.style.top=t.docHeight+"px",e.display.gutters.style.height=t.docHeight+e.display.barHeight+kr(e)+"px"}function ai(e){var t=e.display,r=t.view;if(t.alignWidgets||t.gutters.firstChild&&e.options.fixedGutter){for(var n=nn(t)-t.scroller.scrollLeft+e.doc.scrollLeft,i=t.gutters.offsetWidth,o=n+"px",l=0;ls.clientWidth,c=s.scrollHeight>s.clientHeight;if(i&&u||o&&c){if(o&&y&&a)e:for(var f=t.target,d=l.view;f!=s;f=f.parentNode)for(var p=0;p=0&&tt(e,n.to())<=0)return r}return-1};var bi=function(e,t){this.anchor=e,this.head=t};function wi(e,t,r){var n=e&&e.options.selectionsMayTouch,i=t[r];t.sort(function(e,t){return tt(e.from(),t.from())}),r=B(t,i);for(var o=1;o0:a>=0){var u=ot(s.from(),l.from()),c=it(s.to(),l.to()),h=s.empty()?l.from()==l.head:s.from()==s.head;o<=r&&--r,t.splice(--o,2,new bi(h?c:u,h?u:c))}}return new yi(t,r)}function xi(e,t){return new yi([new bi(e,t||e)],0)}function Ci(e){return e.text?et(e.from.line+e.text.length-1,$(e.text).length+(1==e.text.length?e.from.ch:0)):e.to}function Si(e,t){if(tt(e,t.from)<0)return e;if(tt(e,t.to)<=0)return Ci(t);var r=e.line+t.text.length-(t.to.line-t.from.line)-1,n=e.ch;return e.line==t.to.line&&(n+=Ci(t).ch-t.to.ch),et(r,n)}function Li(e,t){for(var r=[],n=0;n1&&e.remove(s.line+1,p-1),e.insert(s.line+1,m)}sr(e,"change",e,t)}function Ai(e,t,r){!function e(n,i,o){if(n.linked)for(var l=0;ls-(e.cm?e.cm.options.historyEventDelay:500)||"*"==t.origin.charAt(0)))&&(o=function(e,t){return t?(Pi(e.done),$(e.done)):e.done.length&&!$(e.done).ranges?$(e.done):e.done.length>1&&!e.done[e.done.length-2].ranges?(e.done.pop(),$(e.done)):void 0}(i,i.lastOp==n)))l=$(o.changes),0==tt(t.from,t.to)&&0==tt(t.from,l.to)?l.to=Ci(t):o.changes.push(Fi(e,t));else{var a=$(i.done);for(a&&a.ranges||zi(e.sel,i.done),o={changes:[Fi(e,t)],generation:i.generation},i.done.push(o);i.done.length>i.undoDepth;)i.done.shift(),i.done[0].ranges||i.done.shift()}i.done.push(r),i.generation=++i.maxGeneration,i.lastModTime=i.lastSelTime=s,i.lastOp=i.lastSelOp=n,i.lastOrigin=i.lastSelOrigin=t.origin,l||ge(e,"historyAdded")}function Ii(e,t,r,n){var i=e.history,o=n&&n.origin;r==i.lastSelOp||o&&i.lastSelOrigin==o&&(i.lastModTime==i.lastSelTime&&i.lastOrigin==o||function(e,t,r,n){var i=t.charAt(0);return"*"==i||"+"==i&&r.ranges.length==n.ranges.length&&r.somethingSelected()==n.somethingSelected()&&new Date-e.history.lastSelTime<=(e.cm?e.cm.options.historyEventDelay:500)}(e,o,$(i.done),t))?i.done[i.done.length-1]=t:zi(t,i.done),i.lastSelTime=+new Date,i.lastSelOrigin=o,i.lastSelOp=r,n&&!1!==n.clearRedo&&Pi(i.undone)}function zi(e,t){var r=$(t);r&&r.ranges&&r.equals(e)||t.push(e)}function Ri(e,t,r,n){var i=t["spans_"+e.id],o=0;e.iter(Math.max(e.first,r),Math.min(e.first+e.size,n),function(r){r.markedSpans&&((i||(i=t["spans_"+e.id]={}))[o]=r.markedSpans),++o})}function Bi(e){if(!e)return null;for(var t,r=0;r-1&&($(s)[h]=u[h],delete u[h])}}}return n}function Vi(e,t,r,n){if(n){var i=e.anchor;if(r){var o=tt(t,i)<0;o!=tt(r,i)<0?(i=t,t=r):o!=tt(t,r)<0&&(t=r)}return new bi(i,t)}return new bi(r||t,t)}function Ki(e,t,r,n,i){null==i&&(i=e.cm&&(e.cm.display.shift||e.extend)),$i(e,new yi([Vi(e.sel.primary(),t,r,i)],0),n)}function ji(e,t,r){for(var n=[],i=e.cm&&(e.cm.display.shift||e.extend),o=0;o=t.ch:s.to>t.ch))){if(i&&(ge(a,"beforeCursorEnter"),a.explicitlyCleared)){if(o.markedSpans){--l;continue}break}if(!a.atomic)continue;if(r){var h=a.find(n<0?1:-1),f=void 0;if((n<0?c:u)&&(h=ro(e,h,-n,h&&h.line==t.line?o:null)),h&&h.line==t.line&&(f=tt(h,r))&&(n<0?f<0:f>0))return eo(e,h,t,n,i)}var d=a.find(n<0?-1:1);return(n<0?u:c)&&(d=ro(e,d,n,d.line==t.line?o:null)),d?eo(e,d,t,n,i):null}}return t}function to(e,t,r,n,i){var o=n||1,l=eo(e,t,r,o,i)||!i&&eo(e,t,r,o,!0)||eo(e,t,r,-o,i)||!i&&eo(e,t,r,-o,!0);return l||(e.cantEdit=!0,et(e.first,0))}function ro(e,t,r,n){return r<0&&0==t.ch?t.line>e.first?st(e,et(t.line-1)):null:r>0&&t.ch==(n||Xe(e,t.line)).text.length?t.line0)){var c=[a,1],h=tt(u.from,s.from),f=tt(u.to,s.to);(h<0||!l.inclusiveLeft&&!h)&&c.push({from:u.from,to:s.from}),(f>0||!l.inclusiveRight&&!f)&&c.push({from:s.to,to:u.to}),i.splice.apply(i,c),a+=c.length-3}}return i}(e,t.from,t.to);if(n)for(var i=n.length-1;i>=0;--i)lo(e,{from:n[i].from,to:n[i].to,text:i?[""]:t.text,origin:t.origin});else lo(e,t)}}function lo(e,t){if(1!=t.text.length||""!=t.text[0]||0!=tt(t.from,t.to)){var r=Li(e,t);Ei(e,t,r,e.cm?e.cm.curOp.id:NaN),uo(e,t,r,Tt(e,t));var n=[];Ai(e,function(e,r){r||-1!=B(n,e.history)||(po(e.history,t),n.push(e.history)),uo(e,t,null,Tt(e,t))})}}function so(e,t,r){var n=e.cm&&e.cm.state.suppressEdits;if(!n||r){for(var i,o=e.history,l=e.sel,s="undo"==t?o.done:o.undone,a="undo"==t?o.undone:o.done,u=0;u=0;--d){var p=f(d);if(p)return p.v}}}}function ao(e,t){if(0!=t&&(e.first+=t,e.sel=new yi(q(e.sel.ranges,function(e){return new bi(et(e.anchor.line+t,e.anchor.ch),et(e.head.line+t,e.head.ch))}),e.sel.primIndex),e.cm)){un(e.cm,e.first,e.first-t,t);for(var r=e.cm.display,n=r.viewFrom;ne.lastLine())){if(t.from.lineo&&(t={from:t.from,to:et(o,Xe(e,o).text.length),text:[t.text[0]],origin:t.origin}),t.removed=Ye(e,t.from,t.to),r||(r=Li(e,t)),e.cm?function(e,t,r){var n=e.doc,i=e.display,o=t.from,l=t.to,s=!1,a=o.line;e.options.lineWrapping||(a=qe(zt(Xe(n,o.line))),n.iter(a,l.line+1,function(e){if(e==i.maxLine)return s=!0,!0}));n.sel.contains(t.from,t.to)>-1&&me(e);Oi(n,t,r,on(e)),e.options.lineWrapping||(n.iter(a,o.line+t.text.length,function(e){var t=Kt(e);t>i.maxLineLength&&(i.maxLine=e,i.maxLineLength=t,i.maxLineChanged=!0,s=!1)}),s&&(e.curOp.updateMaxLine=!0));(function(e,t){if(e.modeFrontier=Math.min(e.modeFrontier,t),!(e.highlightFrontierr;n--){var i=Xe(e,n).stateAfter;if(i&&(!(i instanceof ut)||n+i.lookAhead1||!(this.children[0]instanceof vo))){var s=[];this.collapse(s),this.children=[new vo(s)],this.children[0].parent=this}},collapse:function(e){for(var t=0;t50){for(var l=i.lines.length%25+25,s=l;s10);e.parent.maybeSpill()}},iterN:function(e,t,r){for(var n=0;n0||0==l&&!1!==o.clearWhenEmpty)return o;if(o.replacedWith&&(o.collapsed=!0,o.widgetNode=A("span",[o.replacedWith],"CodeMirror-widget"),n.handleMouseEvents||o.widgetNode.setAttribute("cm-ignore-events","true"),n.insertLeft&&(o.widgetNode.insertLeft=!0)),o.collapsed){if(It(e,t.line,t,r,o)||t.line!=r.line&&It(e,r.line,t,r,o))throw new Error("Inserting collapsed marker partially overlapping an existing one");Ct=!0}o.addToHistory&&Ei(e,{from:t,to:r,origin:"markText"},e.sel,NaN);var s,a=t.line,u=e.cm;if(e.iter(a,r.line+1,function(e){u&&o.collapsed&&!u.options.lineWrapping&&zt(e)==u.display.maxLine&&(s=!0),o.collapsed&&a!=t.line&&$e(e,0),function(e,t){e.markedSpans=e.markedSpans?e.markedSpans.concat([t]):[t],t.marker.attachLine(e)}(e,new St(o,a==t.line?t.ch:null,a==r.line?r.ch:null)),++a}),o.collapsed&&e.iter(t.line,r.line+1,function(t){Gt(e,t)&&$e(t,0)}),o.clearOnEnter&&fe(o,"beforeCursorEnter",function(){return o.clear()}),o.readOnly&&(xt=!0,(e.history.done.length||e.history.undone.length)&&e.clearHistory()),o.collapsed&&(o.id=++wo,o.atomic=!0),u){if(s&&(u.curOp.updateMaxLine=!0),o.collapsed)un(u,t.line,r.line+1);else if(o.className||o.startStyle||o.endStyle||o.css||o.attributes||o.title)for(var c=t.line;c<=r.line;c++)cn(u,c,"text");o.atomic&&Qi(u.doc),sr(u,"markerAdded",u,o)}return o}xo.prototype.clear=function(){if(!this.explicitlyCleared){var e=this.doc.cm,t=e&&!e.curOp;if(t&&Kn(e),ye(this,"clear")){var r=this.find();r&&sr(this,"clear",r.from,r.to)}for(var n=null,i=null,o=0;oe.display.maxLineLength&&(e.display.maxLine=u,e.display.maxLineLength=c,e.display.maxLineChanged=!0)}null!=n&&e&&this.collapsed&&un(e,n,i+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,e&&Qi(e.doc)),e&&sr(e,"markerCleared",e,this,n,i),t&&jn(e),this.parent&&this.parent.clear()}},xo.prototype.find=function(e,t){var r,n;null==e&&"bookmark"==this.type&&(e=1);for(var i=0;i=0;a--)oo(this,n[a]);s?_i(this,s):this.cm&&On(this.cm)}),undo:Jn(function(){so(this,"undo")}),redo:Jn(function(){so(this,"redo")}),undoSelection:Jn(function(){so(this,"undo",!0)}),redoSelection:Jn(function(){so(this,"redo",!0)}),setExtending:function(e){this.extend=e},getExtending:function(){return this.extend},historySize:function(){for(var e=this.history,t=0,r=0,n=0;n=e.ch)&&t.push(i.marker.parent||i.marker)}return t},findMarks:function(e,t,r){e=st(this,e),t=st(this,t);var n=[],i=e.line;return this.iter(e.line,t.line+1,function(o){var l=o.markedSpans;if(l)for(var s=0;s=a.to||null==a.from&&i!=e.line||null!=a.from&&i==t.line&&a.from>=t.ch||r&&!r(a.marker)||n.push(a.marker.parent||a.marker)}++i}),n},getAllMarks:function(){var e=[];return this.iter(function(t){var r=t.markedSpans;if(r)for(var n=0;ne)return t=e,!0;e-=o,++r}),st(this,et(r,t))},indexFromPos:function(e){var t=(e=st(this,e)).ch;if(e.linet&&(t=e.from),null!=e.to&&e.to-1)return t.state.draggingText(e),void setTimeout(function(){return t.display.input.focus()},20);try{var c=e.dataTransfer.getData("Text");if(c){var h;if(t.state.draggingText&&!t.state.draggingText.copy&&(h=t.listSelections()),qi(t.doc,xi(r,r)),h)for(var f=0;f=0;t--)co(e.doc,"",n[t].from,n[t].to,"+delete");On(e)})}function _o(e,t,r){var n=oe(e.text,t+r,r);return n<0||n>e.text.length?null:n}function $o(e,t,r){var n=_o(e,t.ch,r);return null==n?null:new et(t.line,n,r<0?"after":"before")}function qo(e,t,r,n,i){if(e){var o=ce(r,t.doc.direction);if(o){var l,s=i<0?$(o):o[0],a=i<0==(1==s.level)?"after":"before";if(s.level>0||"rtl"==t.doc.direction){var u=Dr(t,r);l=i<0?r.text.length-1:0;var c=Wr(t,u,l).top;l=le(function(e){return Wr(t,u,e).top==c},i<0==(1==s.level)?s.from:s.to-1,l),"before"==a&&(l=_o(r,l,1))}else l=i<0?s.to:s.from;return new et(n,l,a)}}return new et(n,i<0?r.text.length:0,i<0?"before":"after")}Ro.basic={Left:"goCharLeft",Right:"goCharRight",Up:"goLineUp",Down:"goLineDown",End:"goLineEnd",Home:"goLineStartSmart",PageUp:"goPageUp",PageDown:"goPageDown",Delete:"delCharAfter",Backspace:"delCharBefore","Shift-Backspace":"delCharBefore",Tab:"defaultTab","Shift-Tab":"indentAuto",Enter:"newlineAndIndent",Insert:"toggleOverwrite",Esc:"singleSelection"},Ro.pcDefault={"Ctrl-A":"selectAll","Ctrl-D":"deleteLine","Ctrl-Z":"undo","Shift-Ctrl-Z":"redo","Ctrl-Y":"redo","Ctrl-Home":"goDocStart","Ctrl-End":"goDocEnd","Ctrl-Up":"goLineUp","Ctrl-Down":"goLineDown","Ctrl-Left":"goGroupLeft","Ctrl-Right":"goGroupRight","Alt-Left":"goLineStart","Alt-Right":"goLineEnd","Ctrl-Backspace":"delGroupBefore","Ctrl-Delete":"delGroupAfter","Ctrl-S":"save","Ctrl-F":"find","Ctrl-G":"findNext","Shift-Ctrl-G":"findPrev","Shift-Ctrl-F":"replace","Shift-Ctrl-R":"replaceAll","Ctrl-[":"indentLess","Ctrl-]":"indentMore","Ctrl-U":"undoSelection","Shift-Ctrl-U":"redoSelection","Alt-U":"redoSelection",fallthrough:"basic"},Ro.emacsy={"Ctrl-F":"goCharRight","Ctrl-B":"goCharLeft","Ctrl-P":"goLineUp","Ctrl-N":"goLineDown","Alt-F":"goWordRight","Alt-B":"goWordLeft","Ctrl-A":"goLineStart","Ctrl-E":"goLineEnd","Ctrl-V":"goPageDown","Shift-Ctrl-V":"goPageUp","Ctrl-D":"delCharAfter","Ctrl-H":"delCharBefore","Alt-D":"delWordAfter","Alt-Backspace":"delWordBefore","Ctrl-K":"killLine","Ctrl-T":"transposeChars","Ctrl-O":"openLine"},Ro.macDefault={"Cmd-A":"selectAll","Cmd-D":"deleteLine","Cmd-Z":"undo","Shift-Cmd-Z":"redo","Cmd-Y":"redo","Cmd-Home":"goDocStart","Cmd-Up":"goDocStart","Cmd-End":"goDocEnd","Cmd-Down":"goDocEnd","Alt-Left":"goGroupLeft","Alt-Right":"goGroupRight","Cmd-Left":"goLineLeft","Cmd-Right":"goLineRight","Alt-Backspace":"delGroupBefore","Ctrl-Alt-Backspace":"delGroupAfter","Alt-Delete":"delGroupAfter","Cmd-S":"save","Cmd-F":"find","Cmd-G":"findNext","Shift-Cmd-G":"findPrev","Cmd-Alt-F":"replace","Shift-Cmd-Alt-F":"replaceAll","Cmd-[":"indentLess","Cmd-]":"indentMore","Cmd-Backspace":"delWrappedLineLeft","Cmd-Delete":"delWrappedLineRight","Cmd-U":"undoSelection","Shift-Cmd-U":"redoSelection","Ctrl-Up":"goDocStart","Ctrl-Down":"goDocEnd",fallthrough:["basic","emacsy"]},Ro.default=y?Ro.macDefault:Ro.pcDefault;var Zo={selectAll:no,singleSelection:function(e){return e.setSelection(e.getCursor("anchor"),e.getCursor("head"),V)},killLine:function(e){return Yo(e,function(t){if(t.empty()){var r=Xe(e.doc,t.head.line).text.length;return t.head.ch==r&&t.head.line0)i=new et(i.line,i.ch+1),e.replaceRange(o.charAt(i.ch-1)+o.charAt(i.ch-2),et(i.line,i.ch-2),i,"+transpose");else if(i.line>e.doc.first){var l=Xe(e.doc,i.line-1).text;l&&(i=new et(i.line,1),e.replaceRange(o.charAt(0)+e.doc.lineSeparator()+l.charAt(l.length-1),et(i.line-1,l.length-1),i,"+transpose"))}r.push(new bi(i,i))}e.setSelections(r)})},newlineAndIndent:function(e){return qn(e,function(){for(var t=e.listSelections(),r=t.length-1;r>=0;r--)e.replaceRange(e.doc.lineSeparator(),t[r].anchor,t[r].head,"+input");t=e.listSelections();for(var n=0;n-1&&(tt((i=u.ranges[i]).from(),t)<0||t.xRel>0)&&(tt(i.to(),t)>0||t.xRel<0)?function(e,t,r,n){var i=e.display,o=!1,u=Zn(e,function(t){a&&(i.scroller.draggable=!1),e.state.draggingText=!1,pe(i.wrapper.ownerDocument,"mouseup",u),pe(i.wrapper.ownerDocument,"mousemove",c),pe(i.scroller,"dragstart",h),pe(i.scroller,"drop",u),o||(we(t),n.addNew||Ki(e.doc,r,null,null,n.extend),a||l&&9==s?setTimeout(function(){i.wrapper.ownerDocument.body.focus(),i.input.focus()},20):i.input.focus())}),c=function(e){o=o||Math.abs(t.clientX-e.clientX)+Math.abs(t.clientY-e.clientY)>=10},h=function(){return o=!0};a&&(i.scroller.draggable=!0);e.state.draggingText=u,u.copy=!n.moveOnDrag,i.scroller.dragDrop&&i.scroller.dragDrop();fe(i.wrapper.ownerDocument,"mouseup",u),fe(i.wrapper.ownerDocument,"mousemove",c),fe(i.scroller,"dragstart",h),fe(i.scroller,"drop",u),xn(e),setTimeout(function(){return i.input.focus()},20)}(e,n,t,o):function(e,t,r,n){var i=e.display,o=e.doc;we(t);var l,s,a=o.sel,u=a.ranges;n.addNew&&!n.extend?(s=o.sel.contains(r),l=s>-1?u[s]:new bi(r,r)):(l=o.sel.primary(),s=o.sel.primIndex);if("rectangle"==n.unit)n.addNew||(l=new bi(r,r)),r=sn(e,t,!0,!0),s=-1;else{var c=dl(e,r,n.unit);l=n.extend?Vi(l,c.anchor,c.head,n.extend):c}n.addNew?-1==s?(s=u.length,$i(o,wi(e,u.concat([l]),s),{scroll:!1,origin:"*mouse"})):u.length>1&&u[s].empty()&&"char"==n.unit&&!n.extend?($i(o,wi(e,u.slice(0,s).concat(u.slice(s+1)),0),{scroll:!1,origin:"*mouse"}),a=o.sel):Xi(o,s,l,K):(s=0,$i(o,new yi([l],0),K),a=o.sel);var h=r;function f(t){if(0!=tt(h,t))if(h=t,"rectangle"==n.unit){for(var i=[],u=e.options.tabSize,c=z(Xe(o,r.line).text,r.ch,u),f=z(Xe(o,t.line).text,t.ch,u),d=Math.min(c,f),p=Math.max(c,f),g=Math.min(r.line,t.line),v=Math.min(e.lastLine(),Math.max(r.line,t.line));g<=v;g++){var m=Xe(o,g).text,y=X(m,d,u);d==p?i.push(new bi(et(g,y),et(g,y))):m.length>y&&i.push(new bi(et(g,y),et(g,X(m,p,u))))}i.length||i.push(new bi(r,r)),$i(o,wi(e,a.ranges.slice(0,s).concat(i),s),{origin:"*mouse",scroll:!1}),e.scrollIntoView(t)}else{var b,w=l,x=dl(e,t,n.unit),C=w.anchor;tt(x.anchor,C)>0?(b=x.head,C=ot(w.from(),x.anchor)):(b=x.anchor,C=it(w.to(),x.head));var S=a.ranges.slice(0);S[s]=function(e,t){var r=t.anchor,n=t.head,i=Xe(e.doc,r.line);if(0==tt(r,n)&&r.sticky==n.sticky)return t;var o=ce(i);if(!o)return t;var l=ae(o,r.ch,r.sticky),s=o[l];if(s.from!=r.ch&&s.to!=r.ch)return t;var a,u=l+(s.from==r.ch==(1!=s.level)?0:1);if(0==u||u==o.length)return t;if(n.line!=r.line)a=(n.line-r.line)*("ltr"==e.doc.direction?1:-1)>0;else{var c=ae(o,n.ch,n.sticky),h=c-l||(n.ch-r.ch)*(1==s.level?-1:1);a=c==u-1||c==u?h<0:h>0}var f=o[u+(a?-1:0)],d=a==(1==f.level),p=d?f.from:f.to,g=d?"after":"before";return r.ch==p&&r.sticky==g?t:new bi(new et(r.line,p,g),n)}(e,new bi(st(o,C),b)),$i(o,wi(e,S,s),K)}}var d=i.wrapper.getBoundingClientRect(),p=0;function g(t){e.state.selectingText=!1,p=1/0,t&&(we(t),i.input.focus()),pe(i.wrapper.ownerDocument,"mousemove",v),pe(i.wrapper.ownerDocument,"mouseup",m),o.history.lastSelOrigin=null}var v=Zn(e,function(t){0!==t.buttons&&ke(t)?function t(r){var l=++p;var s=sn(e,r,!0,"rectangle"==n.unit);if(!s)return;if(0!=tt(s,h)){e.curOp.focus=W(),f(s);var a=Tn(i,o);(s.line>=a.to||s.lined.bottom?20:0;u&&setTimeout(Zn(e,function(){p==l&&(i.scroller.scrollTop+=u,t(r))}),50)}}(t):g(t)}),m=Zn(e,g);e.state.selectingText=m,fe(i.wrapper.ownerDocument,"mousemove",v),fe(i.wrapper.ownerDocument,"mouseup",m)}(e,n,t,o)}(t,n,o,e):Le(e)==r.scroller&&we(e):2==i?(n&&Ki(t.doc,n),setTimeout(function(){return r.input.focus()},20)):3==i&&(S?t.display.input.onContextMenu(e):xn(t)))}}function dl(e,t,r){if("char"==r)return new bi(t,t);if("word"==r)return e.findWordAt(t);if("line"==r)return new bi(et(t.line,0),st(e.doc,et(t.line+1,0)));var n=r(e,t);return new bi(n.from,n.to)}function pl(e,t,r,n){var i,o;if(t.touches)i=t.touches[0].clientX,o=t.touches[0].clientY;else try{i=t.clientX,o=t.clientY}catch(t){return!1}if(i>=Math.floor(e.display.gutters.getBoundingClientRect().right))return!1;n&&we(t);var l=e.display,s=l.lineDiv.getBoundingClientRect();if(o>s.bottom||!ye(e,r))return Ce(t);o-=s.top-l.viewOffset;for(var a=0;a=i)return ge(e,r,e,Ze(e.doc,o),e.display.gutterSpecs[a].className,t),Ce(t)}}function gl(e,t){return pl(e,t,"gutterClick",!0)}function vl(e,t){xr(e.display,t)||function(e,t){if(!ye(e,"gutterContextMenu"))return!1;return pl(e,t,"gutterContextMenu",!1)}(e,t)||ve(e,t,"contextmenu")||S||e.display.input.onContextMenu(t)}function ml(e){e.display.wrapper.className=e.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+e.options.theme.replace(/(^|\s)\s*/g," cm-s-"),Rr(e)}hl.prototype.compare=function(e,t,r){return this.time+400>e&&0==tt(t,this.pos)&&r==this.button};var yl={toString:function(){return"CodeMirror.Init"}},bl={},wl={};function xl(e,t,r){if(!t!=!(r&&r!=yl)){var n=e.display.dragFunctions,i=t?fe:pe;i(e.display.scroller,"dragstart",n.start),i(e.display.scroller,"dragenter",n.enter),i(e.display.scroller,"dragover",n.over),i(e.display.scroller,"dragleave",n.leave),i(e.display.scroller,"drop",n.drop)}}function Cl(e){e.options.lineWrapping?(H(e.display.wrapper,"CodeMirror-wrap"),e.display.sizer.style.minWidth="",e.display.sizerWidth=null):(T(e.display.wrapper,"CodeMirror-wrap"),jt(e)),ln(e),un(e),Rr(e),setTimeout(function(){return Rn(e)},100)}function Sl(e,t){var n=this;if(!(this instanceof Sl))return new Sl(e,t);this.options=t=t?I(t):{},I(bl,t,!1);var i=t.value;"string"==typeof i?i=new Mo(i,t.mode,null,t.lineSeparator,t.direction):t.mode&&(i.modeOption=t.mode),this.doc=i;var o=new Sl.inputStyles[t.inputStyle](this),u=this.display=new function(e,t,n,i){var o=this;this.input=n,o.scrollbarFiller=O("div",null,"CodeMirror-scrollbar-filler"),o.scrollbarFiller.setAttribute("cm-not-content","true"),o.gutterFiller=O("div",null,"CodeMirror-gutter-filler"),o.gutterFiller.setAttribute("cm-not-content","true"),o.lineDiv=A("div",null,"CodeMirror-code"),o.selectionDiv=O("div",null,null,"position: relative; z-index: 1"),o.cursorDiv=O("div",null,"CodeMirror-cursors"),o.measure=O("div",null,"CodeMirror-measure"),o.lineMeasure=O("div",null,"CodeMirror-measure"),o.lineSpace=A("div",[o.measure,o.lineMeasure,o.selectionDiv,o.cursorDiv,o.lineDiv],null,"position: relative; outline: none");var u=A("div",[o.lineSpace],"CodeMirror-lines");o.mover=O("div",[u],null,"position: relative"),o.sizer=O("div",[o.mover],"CodeMirror-sizer"),o.sizerWidth=null,o.heightForcer=O("div",null,null,"position: absolute; height: "+G+"px; width: 1px;"),o.gutters=O("div",null,"CodeMirror-gutters"),o.lineGutter=null,o.scroller=O("div",[o.sizer,o.heightForcer,o.gutters],"CodeMirror-scroll"),o.scroller.setAttribute("tabIndex","-1"),o.wrapper=O("div",[o.scrollbarFiller,o.gutterFiller,o.scroller],"CodeMirror"),l&&s<8&&(o.gutters.style.zIndex=-1,o.scroller.style.paddingRight=0),a||r&&m||(o.scroller.draggable=!0),e&&(e.appendChild?e.appendChild(o.wrapper):e(o.wrapper)),o.viewFrom=o.viewTo=t.first,o.reportedViewFrom=o.reportedViewTo=t.first,o.view=[],o.renderedView=null,o.externalMeasured=null,o.viewOffset=0,o.lastWrapHeight=o.lastWrapWidth=0,o.updateLineNumbers=null,o.nativeBarWidth=o.barHeight=o.barWidth=0,o.scrollbarsClipped=!1,o.lineNumWidth=o.lineNumInnerWidth=o.lineNumChars=null,o.alignWidgets=!1,o.cachedCharWidth=o.cachedTextHeight=o.cachedPaddingH=null,o.maxLine=null,o.maxLineLength=0,o.maxLineChanged=!1,o.wheelDX=o.wheelDY=o.wheelStartX=o.wheelStartY=null,o.shift=!1,o.selForContextMenu=null,o.activeTouch=null,o.gutterSpecs=ci(i.gutters,i.lineNumbers),hi(o),n.init(o)}(e,i,o,t);for(var c in u.wrapper.CodeMirror=this,ml(this),t.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),Un(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:-1,cutIncoming:-1,selectingText:!1,draggingText:!1,highlight:new R,keySeq:null,specialChars:null},t.autofocus&&!m&&u.input.focus(),l&&s<11&&setTimeout(function(){return n.display.input.reset(!0)},20),function(e){var t=e.display;fe(t.scroller,"mousedown",Zn(e,fl)),fe(t.scroller,"dblclick",l&&s<11?Zn(e,function(t){if(!ve(e,t)){var r=sn(e,t);if(r&&!gl(e,t)&&!xr(e.display,t)){we(t);var n=e.findWordAt(r);Ki(e.doc,n.anchor,n.head)}}}):function(t){return ve(e,t)||we(t)});fe(t.scroller,"contextmenu",function(t){return vl(e,t)});var r,n={end:0};function i(){t.activeTouch&&(r=setTimeout(function(){return t.activeTouch=null},1e3),(n=t.activeTouch).end=+new Date)}function o(e,t){if(null==t.left)return!0;var r=t.left-e.left,n=t.top-e.top;return r*r+n*n>400}fe(t.scroller,"touchstart",function(i){if(!ve(e,i)&&!function(e){if(1!=e.touches.length)return!1;var t=e.touches[0];return t.radiusX<=1&&t.radiusY<=1}(i)&&!gl(e,i)){t.input.ensurePolled(),clearTimeout(r);var o=+new Date;t.activeTouch={start:o,moved:!1,prev:o-n.end<=300?n:null},1==i.touches.length&&(t.activeTouch.left=i.touches[0].pageX,t.activeTouch.top=i.touches[0].pageY)}}),fe(t.scroller,"touchmove",function(){t.activeTouch&&(t.activeTouch.moved=!0)}),fe(t.scroller,"touchend",function(r){var n=t.activeTouch;if(n&&!xr(t,r)&&null!=n.left&&!n.moved&&new Date-n.start<300){var l,s=e.coordsChar(t.activeTouch,"page");l=!n.prev||o(n,n.prev)?new bi(s,s):!n.prev.prev||o(n,n.prev.prev)?e.findWordAt(s):new bi(et(s.line,0),st(e.doc,et(s.line+1,0))),e.setSelection(l.anchor,l.head),e.focus(),we(r)}i()}),fe(t.scroller,"touchcancel",i),fe(t.scroller,"scroll",function(){t.scroller.clientHeight&&(Hn(e,t.scroller.scrollTop),Pn(e,t.scroller.scrollLeft,!0),ge(e,"scroll",e))}),fe(t.scroller,"mousewheel",function(t){return mi(e,t)}),fe(t.scroller,"DOMMouseScroll",function(t){return mi(e,t)}),fe(t.wrapper,"scroll",function(){return t.wrapper.scrollTop=t.wrapper.scrollLeft=0}),t.dragFunctions={enter:function(t){ve(e,t)||Se(t)},over:function(t){ve(e,t)||(!function(e,t){var r=sn(e,t);if(r){var n=document.createDocumentFragment();vn(e,r,n),e.display.dragCursor||(e.display.dragCursor=O("div",null,"CodeMirror-cursors CodeMirror-dragcursors"),e.display.lineSpace.insertBefore(e.display.dragCursor,e.display.cursorDiv)),N(e.display.dragCursor,n)}}(e,t),Se(t))},start:function(t){return function(e,t){if(l&&(!e.state.draggingText||+new Date-No<100))Se(t);else if(!ve(e,t)&&!xr(e.display,t)&&(t.dataTransfer.setData("Text",e.getSelection()),t.dataTransfer.effectAllowed="copyMove",t.dataTransfer.setDragImage&&!f)){var r=O("img",null,null,"position: fixed; left: 0; top: 0;");r.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",h&&(r.width=r.height=1,e.display.wrapper.appendChild(r),r._top=r.offsetTop),t.dataTransfer.setDragImage(r,0,0),h&&r.parentNode.removeChild(r)}}(e,t)},drop:Zn(e,Oo),leave:function(t){ve(e,t)||Ao(e)}};var a=t.input.getField();fe(a,"keyup",function(t){return sl.call(e,t)}),fe(a,"keydown",Zn(e,ll)),fe(a,"keypress",Zn(e,al)),fe(a,"focus",function(t){return Cn(e,t)}),fe(a,"blur",function(t){return Sn(e,t)})}(this),Ho(),Kn(this),this.curOp.forceUpdate=!0,Di(this,i),t.autofocus&&!m||this.hasFocus()?setTimeout(E(Cn,this),20):Sn(this),wl)wl.hasOwnProperty(c)&&wl[c](n,t[c],yl);ui(this),t.finishInit&&t.finishInit(this);for(var d=0;d150)){if(!n)return;r="prev"}}else u=0,r="not";"prev"==r?u=t>o.first?z(Xe(o,t-1).text,null,l):0:"add"==r?u=a+e.options.indentUnit:"subtract"==r?u=a-e.options.indentUnit:"number"==typeof r&&(u=a+r),u=Math.max(0,u);var h="",f=0;if(e.options.indentWithTabs)for(var d=Math.floor(u/l);d;--d)f+=l,h+="\t";if(fl,a=We(t),u=null;if(s&&n.ranges.length>1)if(Tl&&Tl.text.join("\n")==t){if(n.ranges.length%Tl.text.length==0){u=[];for(var c=0;c=0;f--){var d=n.ranges[f],p=d.from(),g=d.to();d.empty()&&(r&&r>0?p=et(p.line,p.ch-r):e.state.overwrite&&!s?g=et(g.line,Math.min(Xe(o,g.line).text.length,g.ch+$(a).length)):s&&Tl&&Tl.lineWise&&Tl.text.join("\n")==t&&(p=g=et(p.line,0)));var v={from:p,to:g,text:u?u[f%u.length]:a,origin:i||(s?"paste":e.state.cutIncoming>l?"cut":"+input")};oo(e.doc,v),sr(e,"inputRead",e,v)}t&&!s&&Al(e,t),On(e),e.curOp.updateInput<2&&(e.curOp.updateInput=h),e.curOp.typing=!0,e.state.pasteIncoming=e.state.cutIncoming=-1}function Ol(e,t){var r=e.clipboardData&&e.clipboardData.getData("Text");if(r)return e.preventDefault(),t.isReadOnly()||t.options.disableInput||qn(t,function(){return Nl(t,r,0,null,"paste")}),!0}function Al(e,t){if(e.options.electricChars&&e.options.smartIndent)for(var r=e.doc.sel,n=r.ranges.length-1;n>=0;n--){var i=r.ranges[n];if(!(i.head.ch>100||n&&r.ranges[n-1].head.line==i.head.line)){var o=e.getModeAt(i.head),l=!1;if(o.electricChars){for(var s=0;s-1){l=kl(e,i.head.line,"smart");break}}else o.electricInput&&o.electricInput.test(Xe(e.doc,i.head.line).text.slice(0,i.head.ch))&&(l=kl(e,i.head.line,"smart"));l&&sr(e,"electricInput",e,i.head.line)}}}function Dl(e){for(var t=[],r=[],n=0;n=t.text.length?(r.ch=t.text.length,r.sticky="before"):r.ch<=0&&(r.ch=0,r.sticky="after");var o=ae(i,r.ch,r.sticky),l=i[o];if("ltr"==e.doc.direction&&l.level%2==0&&(n>0?l.to>r.ch:l.from=l.from&&f>=c.begin)){var d=h?"before":"after";return new et(r.line,f,d)}}var p=function(e,t,n){for(var o=function(e,t){return t?new et(r.line,a(e,1),"before"):new et(r.line,e,"after")};e>=0&&e0==(1!=l.level),u=s?n.begin:a(n.end,-1);if(l.from<=u&&u0?c.end:a(c.begin,-1);return null==v||n>0&&v==t.text.length||!(g=p(n>0?0:i.length-1,n,u(v)))?null:g}(e.cm,s,t,r):$o(s,t,r))){if(n||(l=t.line+r)=e.first+e.size||(t=new et(l,t.ch,t.sticky),!(s=Xe(e,l))))return!1;t=qo(i,e.cm,s,t.line,r)}else t=o;return!0}if("char"==n)a();else if("column"==n)a(!0);else if("word"==n||"group"==n)for(var u=null,c="group"==n,h=e.cm&&e.cm.getHelper(t,"wordChars"),f=!0;!(r<0)||a(!f);f=!1){var d=s.text.charAt(t.ch)||"\n",p=te(d,h)?"w":c&&"\n"==d?"n":!c||/\s/.test(d)?null:"p";if(!c||f||p||(p="s"),u&&u!=p){r<0&&(r=1,a(),t.sticky="after");break}if(p&&(u=p),r>0&&!a(!f))break}var g=to(e,t,o,l,!0);return rt(o,g)&&(g.hitSide=!0),g}function Pl(e,t,r,n){var i,o,l=e.doc,s=t.left;if("page"==n){var a=Math.min(e.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight),u=Math.max(a-.5*en(e.display),3);i=(r>0?t.bottom:t.top)+r*u}else"line"==n&&(i=r>0?t.bottom+3:t.top-3);for(;(o=$r(e,s,i)).outside;){if(r<0?i<=0:i>=l.height){o.hitSide=!0;break}i+=5*r}return o}var El=function(e){this.cm=e,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new R,this.composing=null,this.gracePeriod=!1,this.readDOMTimeout=null};function Il(e,t){var r=Ar(e,t.line);if(!r||r.hidden)return null;var n=Xe(e.doc,t.line),i=Nr(r,n,t.line),o=ce(n,e.doc.direction),l="left";o&&(l=ae(o,t.ch)%2?"right":"left");var s=Pr(i.map,t.ch,l);return s.offset="right"==s.collapse?s.end:s.start,s}function zl(e,t){return t&&(e.bad=!0),e}function Rl(e,t,r){var n;if(t==e.display.lineDiv){if(!(n=e.display.lineDiv.childNodes[r]))return zl(e.clipPos(et(e.display.viewTo-1)),!0);t=null,r=0}else for(n=t;;n=n.parentNode){if(!n||n==e.display.lineDiv)return null;if(n.parentNode&&n.parentNode==e.display.lineDiv)break}for(var i=0;i=t.display.viewTo||o.line=t.display.viewFrom&&Il(t,i)||{node:a[0].measure.map[2],offset:0},c=o.linen.firstLine()&&(l=et(l.line-1,Xe(n.doc,l.line-1).length)),s.ch==Xe(n.doc,s.line).text.length&&s.linei.viewTo-1)return!1;l.line==i.viewFrom||0==(e=an(n,l.line))?(t=qe(i.view[0].line),r=i.view[0].node):(t=qe(i.view[e].line),r=i.view[e-1].node.nextSibling);var a,u,c=an(n,s.line);if(c==i.view.length-1?(a=i.viewTo-1,u=i.lineDiv.lastChild):(a=qe(i.view[c+1].line)-1,u=i.view[c+1].node.previousSibling),!r)return!1;for(var h=n.doc.splitLines(function(e,t,r,n,i){var o="",l=!1,s=e.doc.lineSeparator(),a=!1;function u(){l&&(o+=s,a&&(o+=s),l=a=!1)}function c(e){e&&(u(),o+=e)}function h(t){if(1==t.nodeType){var r=t.getAttribute("cm-text");if(r)return void c(r);var o,f=t.getAttribute("cm-marker");if(f){var d=e.findMarks(et(n,0),et(i+1,0),(v=+f,function(e){return e.id==v}));return void(d.length&&(o=d[0].find(0))&&c(Ye(e.doc,o.from,o.to).join(s)))}if("false"==t.getAttribute("contenteditable"))return;var p=/^(pre|div|p|li|table|br)$/i.test(t.nodeName);if(!/^br$/i.test(t.nodeName)&&0==t.textContent.length)return;p&&u();for(var g=0;g1&&f.length>1;)if($(h)==$(f))h.pop(),f.pop(),a--;else{if(h[0]!=f[0])break;h.shift(),f.shift(),t++}for(var d=0,p=0,g=h[0],v=f[0],m=Math.min(g.length,v.length);dl.ch&&y.charCodeAt(y.length-p-1)==b.charCodeAt(b.length-p-1);)d--,p++;h[h.length-1]=y.slice(0,y.length-p).replace(/^\u200b+/,""),h[0]=h[0].slice(d).replace(/\u200b+$/,"");var x=et(t,d),C=et(a,f.length?$(f).length-p:0);return h.length>1||h[0]||tt(x,C)?(co(n.doc,h,x,C,"+input"),!0):void 0},El.prototype.ensurePolled=function(){this.forceCompositionEnd()},El.prototype.reset=function(){this.forceCompositionEnd()},El.prototype.forceCompositionEnd=function(){this.composing&&(clearTimeout(this.readDOMTimeout),this.composing=null,this.updateFromDOM(),this.div.blur(),this.div.focus())},El.prototype.readFromDOMSoon=function(){var e=this;null==this.readDOMTimeout&&(this.readDOMTimeout=setTimeout(function(){if(e.readDOMTimeout=null,e.composing){if(!e.composing.done)return;e.composing=null}e.updateFromDOM()},80))},El.prototype.updateFromDOM=function(){var e=this;!this.cm.isReadOnly()&&this.pollContent()||qn(this.cm,function(){return un(e.cm)})},El.prototype.setUneditable=function(e){e.contentEditable="false"},El.prototype.onKeyPress=function(e){0==e.charCode||this.composing||(e.preventDefault(),this.cm.isReadOnly()||Zn(this.cm,Nl)(this.cm,String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),0))},El.prototype.readOnlyChanged=function(e){this.div.contentEditable=String("nocursor"!=e)},El.prototype.onContextMenu=function(){},El.prototype.resetPosition=function(){},El.prototype.needsContentAttribute=!0;var Gl=function(e){this.cm=e,this.prevInput="",this.pollingFast=!1,this.polling=new R,this.hasSelection=!1,this.composing=null};Gl.prototype.init=function(e){var t=this,r=this,n=this.cm;this.createField(e);var i=this.textarea;function o(e){if(!ve(n,e)){if(n.somethingSelected())Ml({lineWise:!1,text:n.getSelections()});else{if(!n.options.lineWiseCopyCut)return;var t=Dl(n);Ml({lineWise:!0,text:t.text}),"cut"==e.type?n.setSelections(t.ranges,null,V):(r.prevInput="",i.value=t.text.join("\n"),P(i))}"cut"==e.type&&(n.state.cutIncoming=+new Date)}}e.wrapper.insertBefore(this.wrapper,e.wrapper.firstChild),g&&(i.style.width="0px"),fe(i,"input",function(){l&&s>=9&&t.hasSelection&&(t.hasSelection=null),r.poll()}),fe(i,"paste",function(e){ve(n,e)||Ol(e,n)||(n.state.pasteIncoming=+new Date,r.fastPoll())}),fe(i,"cut",o),fe(i,"copy",o),fe(e.scroller,"paste",function(t){if(!xr(e,t)&&!ve(n,t)){if(!i.dispatchEvent)return n.state.pasteIncoming=+new Date,void r.focus();var o=new Event("paste");o.clipboardData=t.clipboardData,i.dispatchEvent(o)}}),fe(e.lineSpace,"selectstart",function(t){xr(e,t)||we(t)}),fe(i,"compositionstart",function(){var e=n.getCursor("from");r.composing&&r.composing.range.clear(),r.composing={start:e,range:n.markText(e,n.getCursor("to"),{className:"CodeMirror-composing"})}}),fe(i,"compositionend",function(){r.composing&&(r.poll(),r.composing.range.clear(),r.composing=null)})},Gl.prototype.createField=function(e){this.wrapper=Hl(),this.textarea=this.wrapper.firstChild},Gl.prototype.prepareSelection=function(){var e=this.cm,t=e.display,r=e.doc,n=gn(e);if(e.options.moveInputWithCursor){var i=Xr(e,r.sel.primary().head,"div"),o=t.wrapper.getBoundingClientRect(),l=t.lineDiv.getBoundingClientRect();n.teTop=Math.max(0,Math.min(t.wrapper.clientHeight-10,i.top+l.top-o.top)),n.teLeft=Math.max(0,Math.min(t.wrapper.clientWidth-10,i.left+l.left-o.left))}return n},Gl.prototype.showSelection=function(e){var t=this.cm.display;N(t.cursorDiv,e.cursors),N(t.selectionDiv,e.selection),null!=e.teTop&&(this.wrapper.style.top=e.teTop+"px",this.wrapper.style.left=e.teLeft+"px")},Gl.prototype.reset=function(e){if(!this.contextMenuPending&&!this.composing){var t=this.cm;if(t.somethingSelected()){this.prevInput="";var r=t.getSelection();this.textarea.value=r,t.state.focused&&P(this.textarea),l&&s>=9&&(this.hasSelection=r)}else e||(this.prevInput=this.textarea.value="",l&&s>=9&&(this.hasSelection=null))}},Gl.prototype.getField=function(){return this.textarea},Gl.prototype.supportsTouch=function(){return!1},Gl.prototype.focus=function(){if("nocursor"!=this.cm.options.readOnly&&(!m||W()!=this.textarea))try{this.textarea.focus()}catch(e){}},Gl.prototype.blur=function(){this.textarea.blur()},Gl.prototype.resetPosition=function(){this.wrapper.style.top=this.wrapper.style.left=0},Gl.prototype.receivedFocus=function(){this.slowPoll()},Gl.prototype.slowPoll=function(){var e=this;this.pollingFast||this.polling.set(this.cm.options.pollInterval,function(){e.poll(),e.cm.state.focused&&e.slowPoll()})},Gl.prototype.fastPoll=function(){var e=!1,t=this;t.pollingFast=!0,t.polling.set(20,function r(){t.poll()||e?(t.pollingFast=!1,t.slowPoll()):(e=!0,t.polling.set(60,r))})},Gl.prototype.poll=function(){var e=this,t=this.cm,r=this.textarea,n=this.prevInput;if(this.contextMenuPending||!t.state.focused||He(r)&&!n&&!this.composing||t.isReadOnly()||t.options.disableInput||t.state.keySeq)return!1;var i=r.value;if(i==n&&!t.somethingSelected())return!1;if(l&&s>=9&&this.hasSelection===i||y&&/[\uf700-\uf7ff]/.test(i))return t.display.input.reset(),!1;if(t.doc.sel==t.display.selForContextMenu){var o=i.charCodeAt(0);if(8203!=o||n||(n="​"),8666==o)return this.reset(),this.cm.execCommand("undo")}for(var a=0,u=Math.min(n.length,i.length);a1e3||i.indexOf("\n")>-1?r.value=e.prevInput="":e.prevInput=i,e.composing&&(e.composing.range.clear(),e.composing.range=t.markText(e.composing.start,t.getCursor("to"),{className:"CodeMirror-composing"}))}),!0},Gl.prototype.ensurePolled=function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},Gl.prototype.onKeyPress=function(){l&&s>=9&&(this.hasSelection=null),this.fastPoll()},Gl.prototype.onContextMenu=function(e){var t=this,r=t.cm,n=r.display,i=t.textarea;t.contextMenuPending&&t.contextMenuPending();var o=sn(r,e),u=n.scroller.scrollTop;if(o&&!h){r.options.resetSelectionOnContextMenu&&-1==r.doc.sel.contains(o)&&Zn(r,$i)(r.doc,xi(o),V);var c,f=i.style.cssText,d=t.wrapper.style.cssText,p=t.wrapper.offsetParent.getBoundingClientRect();if(t.wrapper.style.cssText="position: static",i.style.cssText="position: absolute; width: 30px; height: 30px;\n top: "+(e.clientY-p.top-5)+"px; left: "+(e.clientX-p.left-5)+"px;\n z-index: 1000; background: "+(l?"rgba(255, 255, 255, .05)":"transparent")+";\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);",a&&(c=window.scrollY),n.input.focus(),a&&window.scrollTo(null,c),n.input.reset(),r.somethingSelected()||(i.value=t.prevInput=" "),t.contextMenuPending=m,n.selForContextMenu=r.doc.sel,clearTimeout(n.detectingSelectAll),l&&s>=9&&v(),S){Se(e);var g=function(){pe(window,"mouseup",g),setTimeout(m,20)};fe(window,"mouseup",g)}else setTimeout(m,50)}function v(){if(null!=i.selectionStart){var e=r.somethingSelected(),o="​"+(e?i.value:"");i.value="⇚",i.value=o,t.prevInput=e?"":"​",i.selectionStart=1,i.selectionEnd=o.length,n.selForContextMenu=r.doc.sel}}function m(){if(t.contextMenuPending==m&&(t.contextMenuPending=!1,t.wrapper.style.cssText=d,i.style.cssText=f,l&&s<9&&n.scrollbars.setScrollTop(n.scroller.scrollTop=u),null!=i.selectionStart)){(!l||l&&s<9)&&v();var e=0,o=function(){n.selForContextMenu==r.doc.sel&&0==i.selectionStart&&i.selectionEnd>0&&"​"==t.prevInput?Zn(r,no)(r):e++<10?n.detectingSelectAll=setTimeout(o,500):(n.selForContextMenu=null,n.input.reset())};n.detectingSelectAll=setTimeout(o,200)}}},Gl.prototype.readOnlyChanged=function(e){e||this.reset(),this.textarea.disabled="nocursor"==e},Gl.prototype.setUneditable=function(){},Gl.prototype.needsContentAttribute=!1,function(e){var t=e.optionHandlers;function r(r,n,i,o){e.defaults[r]=n,i&&(t[r]=o?function(e,t,r){r!=yl&&i(e,t,r)}:i)}e.defineOption=r,e.Init=yl,r("value","",function(e,t){return e.setValue(t)},!0),r("mode",null,function(e,t){e.doc.modeOption=t,Ti(e)},!0),r("indentUnit",2,Ti,!0),r("indentWithTabs",!1),r("smartIndent",!0),r("tabSize",4,function(e){Mi(e),Rr(e),un(e)},!0),r("lineSeparator",null,function(e,t){if(e.doc.lineSep=t,t){var r=[],n=e.doc.first;e.doc.iter(function(e){for(var i=0;;){var o=e.text.indexOf(t,i);if(-1==o)break;i=o+t.length,r.push(et(n,o))}n++});for(var i=r.length-1;i>=0;i--)co(e.doc,t,r[i],et(r[i].line,r[i].ch+t.length))}}),r("specialChars",/[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b-\u200f\u2028\u2029\ufeff\ufff9-\ufffc]/g,function(e,t,r){e.state.specialChars=new RegExp(t.source+(t.test("\t")?"":"|\t"),"g"),r!=yl&&e.refresh()}),r("specialCharPlaceholder",Qt,function(e){return e.refresh()},!0),r("electricChars",!0),r("inputStyle",m?"contenteditable":"textarea",function(){throw new Error("inputStyle can not (yet) be changed in a running editor")},!0),r("spellcheck",!1,function(e,t){return e.getInputField().spellcheck=t},!0),r("autocorrect",!1,function(e,t){return e.getInputField().autocorrect=t},!0),r("autocapitalize",!1,function(e,t){return e.getInputField().autocapitalize=t},!0),r("rtlMoveVisually",!w),r("wholeLineUpdateBefore",!0),r("theme","default",function(e){ml(e),fi(e)},!0),r("keyMap","default",function(e,t,r){var n=Xo(t),i=r!=yl&&Xo(r);i&&i.detach&&i.detach(e,n),n.attach&&n.attach(e,i||null)}),r("extraKeys",null),r("configureMouse",null),r("lineWrapping",!1,Cl,!0),r("gutters",[],function(e,t){e.display.gutterSpecs=ci(t,e.options.lineNumbers),fi(e)},!0),r("fixedGutter",!0,function(e,t){e.display.gutters.style.left=t?nn(e.display)+"px":"0",e.refresh()},!0),r("coverGutterNextToScrollbar",!1,function(e){return Rn(e)},!0),r("scrollbarStyle","native",function(e){Un(e),Rn(e),e.display.scrollbars.setScrollTop(e.doc.scrollTop),e.display.scrollbars.setScrollLeft(e.doc.scrollLeft)},!0),r("lineNumbers",!1,function(e,t){e.display.gutterSpecs=ci(e.options.gutters,t),fi(e)},!0),r("firstLineNumber",1,fi,!0),r("lineNumberFormatter",function(e){return e},fi,!0),r("showCursorWhenSelecting",!1,pn,!0),r("resetSelectionOnContextMenu",!0),r("lineWiseCopyCut",!0),r("pasteLinesPerSelection",!0),r("selectionsMayTouch",!1),r("readOnly",!1,function(e,t){"nocursor"==t&&(Sn(e),e.display.input.blur()),e.display.input.readOnlyChanged(t)}),r("disableInput",!1,function(e,t){t||e.display.input.reset()},!0),r("dragDrop",!0,xl),r("allowDropFileTypes",null),r("cursorBlinkRate",530),r("cursorScrollMargin",0),r("cursorHeight",1,pn,!0),r("singleCursorHeightPerLine",!0,pn,!0),r("workTime",100),r("workDelay",100),r("flattenSpans",!0,Mi,!0),r("addModeClass",!1,Mi,!0),r("pollInterval",100),r("undoDepth",200,function(e,t){return e.doc.history.undoDepth=t}),r("historyEventDelay",1250),r("viewportMargin",10,function(e){return e.refresh()},!0),r("maxHighlightLength",1e4,Mi,!0),r("moveInputWithCursor",!0,function(e,t){t||e.display.input.resetPosition()}),r("tabindex",null,function(e,t){return e.display.input.getField().tabIndex=t||""}),r("autofocus",null),r("direction","ltr",function(e,t){return e.doc.setDirection(t)},!0),r("phrases",null)}(Sl),function(e){var t=e.optionHandlers,r=e.helpers={};e.prototype={constructor:e,focus:function(){window.focus(),this.display.input.focus()},setOption:function(e,r){var n=this.options,i=n[e];n[e]==r&&"mode"!=e||(n[e]=r,t.hasOwnProperty(e)&&Zn(this,t[e])(this,r,i),ge(this,"optionChange",this,e))},getOption:function(e){return this.options[e]},getDoc:function(){return this.doc},addKeyMap:function(e,t){this.state.keyMaps[t?"push":"unshift"](Xo(e))},removeKeyMap:function(e){for(var t=this.state.keyMaps,r=0;rr&&(kl(this,i.head.line,e,!0),r=i.head.line,n==this.doc.sel.primIndex&&On(this));else{var o=i.from(),l=i.to(),s=Math.max(r,o.line);r=Math.min(this.lastLine(),l.line-(l.ch?0:1))+1;for(var a=s;a0&&Xi(this.doc,n,new bi(o,u[n].to()),V)}}}),getTokenAt:function(e,t){return yt(this,e,t)},getLineTokens:function(e,t){return yt(this,et(e),t,!0)},getTokenTypeAt:function(e){e=st(this.doc,e);var t,r=ft(this,Xe(this.doc,e.line)),n=0,i=(r.length-1)/2,o=e.ch;if(0==o)t=r[2];else for(;;){var l=n+i>>1;if((l?r[2*l-1]:0)>=o)i=l;else{if(!(r[2*l+1]o&&(e=o,i=!0),n=Xe(this.doc,e)}else n=e;return Vr(this,n,{top:0,left:0},t||"page",r||i).top+(i?this.doc.height-Vt(n):0)},defaultTextHeight:function(){return en(this.display)},defaultCharWidth:function(){return tn(this.display)},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(e,t,r,n,i){var o,l,s,a=this.display,u=(e=Xr(this,st(this.doc,e))).bottom,c=e.left;if(t.style.position="absolute",t.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(t),a.sizer.appendChild(t),"over"==n)u=e.top;else if("above"==n||"near"==n){var h=Math.max(a.wrapper.clientHeight,this.doc.height),f=Math.max(a.sizer.clientWidth,a.lineSpace.clientWidth);("above"==n||e.bottom+t.offsetHeight>h)&&e.top>t.offsetHeight?u=e.top-t.offsetHeight:e.bottom+t.offsetHeight<=h&&(u=e.bottom),c+t.offsetWidth>f&&(c=f-t.offsetWidth)}t.style.top=u+"px",t.style.left=t.style.right="","right"==i?(c=a.sizer.clientWidth-t.offsetWidth,t.style.right="0px"):("left"==i?c=0:"middle"==i&&(c=(a.sizer.clientWidth-t.offsetWidth)/2),t.style.left=c+"px"),r&&(o=this,l={left:c,top:u,right:c+t.offsetWidth,bottom:u+t.offsetHeight},null!=(s=Mn(o,l)).scrollTop&&Hn(o,s.scrollTop),null!=s.scrollLeft&&Pn(o,s.scrollLeft))},triggerOnKeyDown:Qn(ll),triggerOnKeyPress:Qn(al),triggerOnKeyUp:sl,triggerOnMouseDown:Qn(fl),execCommand:function(e){if(Zo.hasOwnProperty(e))return Zo[e].call(null,this)},triggerElectric:Qn(function(e){Al(this,e)}),findPosH:function(e,t,r,n){var i=1;t<0&&(i=-1,t=-t);for(var o=st(this.doc,e),l=0;l0&&l(t.charAt(r-1));)--r;for(;n.5)&&ln(this),ge(this,"refresh",this)}),swapDoc:Qn(function(e){var t=this.doc;return t.cm=null,this.state.selectingText&&this.state.selectingText(),Di(this,e),Rr(this),this.display.input.reset(),An(this,e.scrollLeft,e.scrollTop),this.curOp.forceScroll=!0,sr(this,"swapDoc",this,t),t}),phrase:function(e){var t=this.options.phrases;return t&&Object.prototype.hasOwnProperty.call(t,e)?t[e]:e},getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},be(e),e.registerHelper=function(t,n,i){r.hasOwnProperty(t)||(r[t]=e[t]={_global:[]}),r[t][n]=i},e.registerGlobalHelper=function(t,n,i,o){e.registerHelper(t,n,o),r[t]._global.push({pred:i,val:o})}}(Sl);var Ul="iter insert remove copy getEditor constructor".split(" ");for(var Vl in Mo.prototype)Mo.prototype.hasOwnProperty(Vl)&&B(Ul,Vl)<0&&(Sl.prototype[Vl]=function(e){return function(){return e.apply(this.doc,arguments)}}(Mo.prototype[Vl]));return be(Mo),Sl.inputStyles={textarea:Gl,contenteditable:El},Sl.defineMode=function(e){Sl.defaults.mode||"null"==e||(Sl.defaults.mode=e),function(e,t){arguments.length>2&&(t.dependencies=Array.prototype.slice.call(arguments,2)),Ee[e]=t}.apply(this,arguments)},Sl.defineMIME=function(e,t){Ie[e]=t},Sl.defineMode("null",function(){return{token:function(e){return e.skipToEnd()}}}),Sl.defineMIME("text/plain","null"),Sl.defineExtension=function(e,t){Sl.prototype[e]=t},Sl.defineDocExtension=function(e,t){Mo.prototype[e]=t},Sl.fromTextArea=function(e,t){if((t=t?I(t):{}).value=e.value,!t.tabindex&&e.tabIndex&&(t.tabindex=e.tabIndex),!t.placeholder&&e.placeholder&&(t.placeholder=e.placeholder),null==t.autofocus){var r=W();t.autofocus=r==e||null!=e.getAttribute("autofocus")&&r==document.body}function n(){e.value=s.getValue()}var i;if(e.form&&(fe(e.form,"submit",n),!t.leaveSubmitMethodAlone)){var o=e.form;i=o.submit;try{var l=o.submit=function(){n(),o.submit=i,o.submit(),o.submit=l}}catch(e){}}t.finishInit=function(r){r.save=n,r.getTextArea=function(){return e},r.toTextArea=function(){r.toTextArea=isNaN,n(),e.parentNode.removeChild(r.getWrapperElement()),e.style.display="",e.form&&(pe(e.form,"submit",n),t.leaveSubmitMethodAlone||"function"!=typeof e.form.submit||(e.form.submit=i))}},e.style.display="none";var s=Sl(function(t){return e.parentNode.insertBefore(t,e.nextSibling)},t);return s},function(e){e.off=pe,e.on=fe,e.wheelEventPixels=vi,e.Doc=Mo,e.splitLines=We,e.countColumn=z,e.findColumn=X,e.isWordChar=ee,e.Pass=U,e.signal=ge,e.Line=Xt,e.changeEnd=Ci,e.scrollbarModel=Gn,e.Pos=et,e.cmpPos=tt,e.modes=Ee,e.mimeModes=Ie,e.resolveMode=ze,e.getMode=Re,e.modeExtensions=Be,e.extendMode=Ge,e.copyState=Ue,e.startState=Ke,e.innerMode=Ve,e.commands=Zo,e.keyMap=Ro,e.keyName=jo,e.isModifierKey=Vo,e.lookupKey=Uo,e.normalizeKeyMap=Go,e.StringStream=je,e.SharedTextMarker=So,e.TextMarker=xo,e.LineWidget=yo,e.e_preventDefault=we,e.e_stopPropagation=xe,e.e_stop=Se,e.addClass=H,e.contains=D,e.rmClass=T,e.keyNames=Po}(Sl),Sl.version="5.49.2",Sl}); ================================================ FILE: luci-app-adguardhome/root/www/luci-static/resources/codemirror/mode/yaml/yaml.js ================================================ !function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)}(function(e){"use strict";e.defineMode("yaml",function(){var e=new RegExp("\\b(("+["true","false","on","off","yes","no"].join(")|(")+"))$","i");return{token:function(i,t){var r=i.peek(),n=t.escaped;if(t.escaped=!1,"#"==r&&(0==i.pos||/\s/.test(i.string.charAt(i.pos-1))))return i.skipToEnd(),"comment";if(i.match(/^('([^']|\\.)*'?|"([^"]|\\.)*"?)/))return"string";if(t.literal&&i.indentation()>t.keyCol)return i.skipToEnd(),"string";if(t.literal&&(t.literal=!1),i.sol()){if(t.keyCol=0,t.pair=!1,t.pairStart=!1,i.match(/---/))return"def";if(i.match(/\.\.\./))return"def";if(i.match(/\s*-\s+/))return"meta"}if(i.match(/^(\{|\}|\[|\])/))return"{"==r?t.inlinePairs++:"}"==r?t.inlinePairs--:"["==r?t.inlineList++:t.inlineList--,"meta";if(t.inlineList>0&&!n&&","==r)return i.next(),"meta";if(t.inlinePairs>0&&!n&&","==r)return t.keyCol=0,t.pair=!1,t.pairStart=!1,i.next(),"meta";if(t.pairStart){if(i.match(/^\s*(\||\>)\s*/))return t.literal=!0,"meta";if(i.match(/^\s*(\&|\*)[a-z0-9\._-]+\b/i))return"variable-2";if(0==t.inlinePairs&&i.match(/^\s*-?[0-9\.\,]+\s?$/))return"number";if(t.inlinePairs>0&&i.match(/^\s*-?[0-9\.\,]+\s?(?=(,|}))/))return"number";if(i.match(e))return"keyword"}return!t.pair&&i.match(/^\s*(?:[,\[\]{}&*!|>'"%@`][^\s'":]|[^,\[\]{}#&*!|>'"%@`])[^#]*?(?=\s*:($|\s))/)?(t.pair=!0,t.keyCol=i.indentation(),"atom"):t.pair&&i.match(/^:\s*/)?(t.pairStart=!0,"meta"):(t.pairStart=!1,t.escaped="\\"==r,i.next(),null)},startState:function(){return{pair:!1,pairStart:!1,keyCol:0,inlinePairs:0,inlineList:0,literal:!1,escaped:!1}},lineComment:"#",fold:"indent"}}),e.defineMIME("text/x-yaml","yaml"),e.defineMIME("text/yaml","yaml")}); ================================================ FILE: luci-app-adguardhome/root/www/luci-static/resources/codemirror/theme/dracula.css ================================================ .cm-s-dracula.CodeMirror,.cm-s-dracula .CodeMirror-gutters{background-color:#282a36 !important;color:#f8f8f2 !important;border:0}.cm-s-dracula .CodeMirror-gutters{color:#282a36}.cm-s-dracula .CodeMirror-cursor{border-left:solid thin #f8f8f0}.cm-s-dracula .CodeMirror-linenumber{color:#6d8a88}.cm-s-dracula .CodeMirror-selected{background:rgba(255,255,255,0.10)}.cm-s-dracula .CodeMirror-line::selection,.cm-s-dracula .CodeMirror-line>span::selection,.cm-s-dracula .CodeMirror-line>span>span::selection{background:rgba(255,255,255,0.10)}.cm-s-dracula .CodeMirror-line::-moz-selection,.cm-s-dracula .CodeMirror-line>span::-moz-selection,.cm-s-dracula .CodeMirror-line>span>span::-moz-selection{background:rgba(255,255,255,0.10)}.cm-s-dracula span.cm-comment{color:#6272a4}.cm-s-dracula span.cm-string,.cm-s-dracula span.cm-string-2{color:#f1fa8c}.cm-s-dracula span.cm-number{color:#bd93f9}.cm-s-dracula span.cm-variable{color:#50fa7b}.cm-s-dracula span.cm-variable-2{color:white}.cm-s-dracula span.cm-def{color:#50fa7b}.cm-s-dracula span.cm-operator{color:#ff79c6}.cm-s-dracula span.cm-keyword{color:#ff79c6}.cm-s-dracula span.cm-atom{color:#bd93f9}.cm-s-dracula span.cm-meta{color:#f8f8f2}.cm-s-dracula span.cm-tag{color:#ff79c6}.cm-s-dracula span.cm-attribute{color:#50fa7b}.cm-s-dracula span.cm-qualifier{color:#50fa7b}.cm-s-dracula span.cm-property{color:#66d9ef}.cm-s-dracula span.cm-builtin{color:#50fa7b}.cm-s-dracula span.cm-variable-3,.cm-s-dracula span.cm-type{color:#ffb86c}.cm-s-dracula .CodeMirror-activeline-background{background:rgba(255,255,255,0.1)}.cm-s-dracula .CodeMirror-matchingbracket{text-decoration:underline;color:white !important} ================================================ FILE: luci-app-amlogic/Makefile ================================================ #===================================================================================================== # This file is licensed under the terms of the GNU General Public # License version 2. This program is licensed "as is" without any # warranty of any kind, whether express or implied. # # This file is a part of the luci-app-amlogic plugin # https://github.com/ophub/luci-app-amlogic # # Description: Supports install/update/backup/restore/snapshot operations using OpenWrt on many boxes # Copyright (C) 2021- https://github.com/unifreq/openwrt_packit # Copyright (C) 2021- https://github.com/ophub/luci-app-amlogic # # Command: curl -fsSL git.io/luci-app-amlogic | bash #===================================================================================================== include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-amlogic PKG_VERSION:=3.1.301 PKG_RELEASE:=1 PKG_LICENSE:=GPL-2.0 License PKG_MAINTAINER:=ophub LUCI_TITLE:=LuCI support for custom TV boxes LUCI_PKGARCH:=all LUCI_DEPENDS:= \ @(aarch64||arm) +bash +blkid +block-mount +curl +dosfstools +e2fsprogs \ +fdisk +jq +losetup +lsblk +parted +perl +pv +uuidgen define Package/$(PKG_NAME)/conffiles /etc/config/amlogic endef include $(TOPDIR)/feeds/luci/luci.mk # call BuildPackage - OpenWrt buildroot signature ================================================ FILE: luci-app-amlogic/luasrc/controller/amlogic.lua ================================================ module("luci.controller.amlogic", package.seeall) local sys = require "luci.sys" local PKG_NAME = "luci-app-amlogic" function index() if not nixio.fs.access("/etc/config/amlogic") then return end local page = entry({ "admin", "system", "amlogic" }, alias("admin", "system", "amlogic", "info"), _("Amlogic Service"), 88) page.dependent = true page.acl_depends = { PKG_NAME } local platfrom = luci.sys.exec("cat /etc/flippy-openwrt-release 2>/dev/null | grep PLATFORM | awk -F'=' '{print $2}' | grep -oE '(amlogic|rockchip|allwinner|qemu)' | xargs") or "Unknown" local install_menu = luci.sys.exec("cat /etc/flippy-openwrt-release 2>/dev/null | grep SHOW_INSTALL_MENU | awk -F'=' '{print $2}' | grep -oE '(yes|no)' | xargs") or "Unknown" -- Detect whether root fs is already on internal storage (eMMC/NVMe/disk). -- If so, OpenWrt is already installed and the Install menu should be hidden. local root_pt = luci.sys.exec("df / | tail -n1 | awk '{print $1}' | awk -F'/' '{print $3}'") or "" root_pt = root_pt:gsub("%s+", "") local is_installed = (root_pt ~= "" and ( root_pt:match("^mmcblk%d+p%d+$") or root_pt:match("^[hsv]d[a-z]%d+$") or root_pt:match("^nvme%d+n%d+p%d+$") )) and true or false entry({ "admin", "system", "amlogic", "info" }, form("amlogic/amlogic_info"), _("Amlogic Service"), 1).leaf = true local can_install = (string.find(platfrom, "amlogic") ~= nil or string.find(platfrom, "allwinner") ~= nil or string.find(install_menu, "yes") ~= nil) if can_install and not is_installed then entry({ "admin", "system", "amlogic", "install" }, form("amlogic/amlogic_install"), _("Install OpenWrt"), 2).leaf = true end entry({ "admin", "system", "amlogic", "upload" }, form("amlogic/amlogic_upload"), _("Manually Upload Update"), 3).leaf = true entry({ "admin", "system", "amlogic", "check" }, form("amlogic/amlogic_check"), _("Online Download Update"), 4).leaf = true entry({ "admin", "system", "amlogic", "backup" }, form("amlogic/amlogic_backup"), _("Backup Firmware Config"), 5).leaf = true entry({ "admin", "system", "amlogic", "backuplist" }, form("amlogic/amlogic_backuplist")).leaf = true if (string.find(platfrom, "qemu")) == nil then entry({ "admin", "system", "amlogic", "armcpu" }, cbi("amlogic/amlogic_armcpu"), _("CPU Settings"), 6).leaf = true end entry({ "admin", "system", "amlogic", "config" }, cbi("amlogic/amlogic_config"), _("Plugin Settings"), 7).leaf = true entry({ "admin", "system", "amlogic", "log" }, form("amlogic/amlogic_log"), _("Server Logs"), 8).leaf = true entry({ "admin", "system", "amlogic", "poweroff" }, form("amlogic/amlogic_poweroff"), _("PowerOff"), 9).leaf = true entry({ "admin", "system", "amlogic", "check_firmware" }, call("action_check_firmware")) entry({ "admin", "system", "amlogic", "check_plugin" }, call("action_check_plugin")) entry({ "admin", "system", "amlogic", "check_plugin_download" }, call("action_check_plugin_download")).leaf = true entry({ "admin", "system", "amlogic", "check_kernel" }, call("action_check_kernel")) entry({ "admin", "system", "amlogic", "refresh_log" }, call("action_refresh_log")) entry({ "admin", "system", "amlogic", "del_log" }, call("action_del_log")) entry({ "admin", "system", "amlogic", "start_model_database" }, call("action_check_model_database")).leaf = true entry({ "admin", "system", "amlogic", "start_check_install" }, call("action_start_check_install")).leaf = true entry({ "admin", "system", "amlogic", "start_check_firmware" }, call("action_start_check_firmware")).leaf = true entry({ "admin", "system", "amlogic", "start_check_plugin" }, call("action_start_check_plugin")).leaf = true entry({ "admin", "system", "amlogic", "start_check_kernel" }, call("action_start_check_kernel")).leaf = true entry({ "admin", "system", "amlogic", "start_check_rescue" }, call("action_start_check_rescue")).leaf = true entry({ "admin", "system", "amlogic", "start_check_upfiles" }, call("action_start_check_upfiles")).leaf = true entry({ "admin", "system", "amlogic", "start_amlogic_install" }, call("action_start_amlogic_install")).leaf = true entry({ "admin", "system", "amlogic", "start_amlogic_update" }, call("action_start_amlogic_update")).leaf = true entry({ "admin", "system", "amlogic", "start_amlogic_kernel" }, call("action_start_amlogic_kernel")).leaf = true entry({ "admin", "system", "amlogic", "start_amlogic_plugin" }, call("action_start_amlogic_plugin")).leaf = true entry({ "admin", "system", "amlogic", "start_amlogic_rescue" }, call("action_start_amlogic_rescue")).leaf = true entry({ "admin", "system", "amlogic", "start_snapshot_delete" }, call("action_start_snapshot_delete")).leaf = true entry({ "admin", "system", "amlogic", "start_snapshot_restore" }, call("action_start_snapshot_restore")).leaf = true entry({ "admin", "system", "amlogic", "start_snapshot_list" }, call("action_check_snapshot")).leaf = true entry({ "admin", "system", "amlogic", "start_openwrt_author" }, call("action_openwrt_author")).leaf = true entry({ "admin", "system", "amlogic", "state" }, call("action_state")).leaf = true entry({ "admin", "system", "amlogic", "start_poweroff" }, call("action_poweroff")).leaf = true entry({ "admin", "system", "amlogic", "start_switch" }, call("action_switch")).leaf = true end --Remove the spaces in the string function trim(str) --return (string.gsub(str, "^%s*(.-)%s*$", "%1")) return (string.gsub(str, "%s+", "")) end --Create a temporary folder (fire-and-forget, result not needed) luci.sys.exec("[ -d /tmp/upload ] || mkdir -p /tmp/upload >/dev/null") luci.sys.exec("[ -d /tmp/amlogic ] || mkdir -p /tmp/amlogic >/dev/null") -- Read per-request UCI config and platform info. -- Defined as a function so values are always fresh (not stale from module load). local function get_config() local amlogic_firmware_config = luci.sys.exec("uci get amlogic.config.amlogic_firmware_config 2>/dev/null") or "1" local update_restore_config = (tonumber(amlogic_firmware_config) == 0) and "no-restore" or "restore" local amlogic_write_bootloader = luci.sys.exec("uci get amlogic.config.amlogic_write_bootloader 2>/dev/null") or "1" local auto_write_bootloader = (tonumber(amlogic_write_bootloader) == 0) and "no" or "yes" local amlogic_shared_fstype = trim(luci.sys.exec("uci get amlogic.config.amlogic_shared_fstype 2>/dev/null") or "") local auto_shared_fstype = (amlogic_shared_fstype == "") and "ext4" or amlogic_shared_fstype local device_platfrom = luci.sys.exec("cat /etc/flippy-openwrt-release 2>/dev/null | grep PLATFORM | awk -F'=' '{print $2}' | grep -oE '(amlogic|rockchip|allwinner|qemu)' | xargs") or "Unknown" local device_install_script, device_update_script, device_kernel_script if string.find(device_platfrom, "rockchip") then device_install_script = "" device_update_script = "openwrt-update-rockchip" device_kernel_script = "openwrt-kernel" elseif string.find(device_platfrom, "allwinner") then device_install_script = "openwrt-install-allwinner" device_update_script = "openwrt-update-allwinner" device_kernel_script = "openwrt-kernel" elseif string.find(device_platfrom, "qemu") then device_install_script = "" device_update_script = "openwrt-update-kvm" device_kernel_script = "openwrt-kernel" else device_install_script = "openwrt-install-amlogic" device_update_script = "openwrt-update-amlogic" device_kernel_script = "openwrt-kernel" end return { update_restore_config = update_restore_config, auto_write_bootloader = auto_write_bootloader, auto_shared_fstype = auto_shared_fstype, device_platfrom = device_platfrom, device_install_script = device_install_script, device_update_script = device_update_script, device_kernel_script = device_kernel_script, } end --General array functions function string.split(input, delimiter) input = tostring(input) delimiter = tostring(delimiter) if (delimiter == '') then return false end local pos, arr = 0, {} -- for each divider found for st, sp in function() return string.find(input, delimiter, pos, true) end do table.insert(arr, string.sub(input, pos, st - 1)) pos = sp + 1 end table.insert(arr, string.sub(input, pos)) return arr end --Refresh the log function action_refresh_log() local logfile = "/tmp/amlogic/amlogic.log" if not nixio.fs.access(logfile) then luci.sys.exec("uname -a > /tmp/amlogic/amlogic.log && sync") luci.sys.exec("echo '' > /tmp/amlogic/amlogic_check_install.log && sync >/dev/null 2>&1") luci.sys.exec("echo '' > /tmp/amlogic/amlogic_check_upfiles.log && sync >/dev/null 2>&1") luci.sys.exec("echo '' > /tmp/amlogic/amlogic_check_plugin.log && sync >/dev/null 2>&1") luci.sys.exec("echo '' > /tmp/amlogic/amlogic_check_kernel.log && sync >/dev/null 2>&1") luci.sys.exec("echo '' > /tmp/amlogic/amlogic_check_firmware.log && sync >/dev/null 2>&1") luci.sys.exec("echo '' > /tmp/amlogic/amlogic_check_rescue.log && sync >/dev/null 2>&1") luci.sys.exec("echo '' > /tmp/amlogic/amlogic_running_script.log && sync >/dev/null 2>&1") end luci.http.prepare_content("text/plain; charset=utf-8") local f = io.open(logfile, "r+") f:seek("set") local a = f:read(2048000) or "" f:close() luci.http.write(a) end --Delete the logs function action_del_log() luci.sys.exec(": > /tmp/amlogic/amlogic.log") luci.sys.exec(": > /tmp/amlogic/amlogic_check_install.log") luci.sys.exec(": > /tmp/amlogic/amlogic_check_upfiles.log") luci.sys.exec(": > /tmp/amlogic/amlogic_check_plugin.log") luci.sys.exec(": > /tmp/amlogic/amlogic_check_kernel.log") luci.sys.exec(": > /tmp/amlogic/amlogic_check_firmware.log") luci.sys.exec(": > /tmp/amlogic/amlogic_check_rescue.log") luci.sys.exec(": > /tmp/amlogic/amlogic_running_script.log") end --Upgrade luci-app-amlogic plugin function start_amlogic_plugin() local log_file = "/tmp/amlogic/amlogic_check_plugin.log" local running_lock = "/tmp/amlogic/amlogic_running_script.log" local config_file = "/etc/config/amlogic" local config_bak = "/etc/config/amlogic_bak" -- 1. Create a running lock and clear previous log luci.sys.call("echo '1@Plugin update in progress, try again later!' > " .. running_lock .. " && > " .. log_file) -- 2. Backup config file luci.sys.call(string.format("[ -f %s ] && cp -vf %s %s >> %s 2>&1", config_file, config_file, config_bak, log_file)) -- 3. Detect and install local install_status = 1 if luci.sys.call("command -v opkg >/dev/null") == 0 then luci.sys.call("echo 'System uses opkg. Attempting to install .ipk package...' >> " .. log_file) local install_cmd = string.format("opkg --force-reinstall install /tmp/amlogic/*.ipk >> %s 2>&1", log_file) install_status = luci.sys.call(install_cmd) elseif luci.sys.call("command -v apk >/dev/null") == 0 then luci.sys.call("echo 'System uses apk. Attempting to install .apk package...' >> " .. log_file) local install_cmd = string.format("apk add --force-overwrite --allow-untrusted /tmp/amlogic/*.apk >> %s 2>&1", log_file) install_status = luci.sys.call(install_cmd) else luci.sys.call("echo 'Error: Neither opkg nor apk found. Aborting.' >> " .. log_file) end -- 4. Check result and finalize if install_status == 0 then -- SUCCESS luci.sys.call("echo 'Installation successful. Finalizing...' >> " .. log_file) luci.sys.call(string.format("[ -f %s ] && cp -vf %s %s >> %s 2>&1", config_bak, config_bak, config_file, log_file)) luci.sys.call("rm -f /etc/config/amlogic.apk-new /etc/config/amlogic.ipk-old >> " .. log_file .. " 2>&1") luci.sys.call("rm -rf /tmp/luci-indexcache /tmp/luci-modulecache/* " .. config_bak) luci.sys.call("echo '' > " .. running_lock) luci.sys.call("echo 'Successful Update' > " .. log_file) -- Cross-branch cleanup: run in background after a delay so the browser -- can poll "Successful Update" before any files are removed. local cleanup_cmd = table.concat({ "(sleep 3", "new_release=''", "if command -v opkg >/dev/null 2>&1; then", " new_release=\"$(opkg list-installed | grep '^luci-app-amlogic ' | awk '{print $3}' | cut -d'-' -f2)\"", "elif command -v apk >/dev/null 2>&1; then", " new_release=\"$(apk list --installed 2>/dev/null | grep '^luci-app-amlogic-' | awk '{print $1}' | cut -d'-' -f5 | sed 's/^r//')\"", "fi", "if [ \"${new_release}\" = '2' ]; then", " rm -f /usr/lib/lua/luci/controller/amlogic.lua", " rm -rf /usr/lib/lua/luci/model/cbi/amlogic", " rm -rf /usr/lib/lua/luci/view/amlogic", "elif [ \"${new_release}\" = '1' ]; then", " rm -f /usr/share/rpcd/ucode/luci.amlogic", " rm -f /www/luci-static/resources/view/amlogic/*.js", " rm -f /usr/share/luci/menu.d/luci-app-amlogic.json", "fi) &" }, "\n") luci.sys.call(cleanup_cmd) return 0 else -- FAILURE luci.sys.call("echo '--- INSTALLATION FAILED! ---' >> " .. log_file) luci.sys.call("echo 'Restoring configuration and aborting.' >> " .. log_file) luci.sys.call(string.format("[ -f %s ] && cp -vf %s %s >> %s 2>&1", config_bak, config_bak, config_file, log_file)) luci.sys.call("rm -f " .. config_bak) luci.sys.call("echo '' > " .. running_lock) return install_status end end --Upgrade the kernel function start_amlogic_kernel() local cfg = get_config() luci.sys.call("echo '2@Kernel update in progress, try again later!' > /tmp/amlogic/amlogic_running_script.log && sync >/dev/null 2>&1") luci.sys.call("chmod +x /usr/sbin/" .. cfg.device_kernel_script .. " >/dev/null 2>&1") local state = luci.sys.call("/usr/sbin/" .. cfg.device_kernel_script .. " " .. cfg.auto_write_bootloader .. " > /tmp/amlogic/amlogic_check_kernel.log && sync >/dev/null 2>&1") return state end --Upgrade amlogic openwrt firmware function start_amlogic_update() local cfg = get_config() luci.sys.call("echo '3@OpenWrt update in progress, try again later!' > /tmp/amlogic/amlogic_running_script.log && sync >/dev/null 2>&1") luci.sys.call("chmod +x /usr/sbin/" .. cfg.device_update_script .. " >/dev/null 2>&1") local amlogic_update_sel = luci.http.formvalue("amlogic_update_sel") local res = string.split(amlogic_update_sel, "@") local update_firmware_name = res[1] or "auto" local update_firmware_updated = res[2] or "updated" local update_write_path = res[3] or "/tmp" luci.sys.call("echo " .. update_firmware_updated .. " > " .. update_write_path .. "/.luci-app-amlogic/op_release_code 2>/dev/null && sync") local state = luci.sys.call("/usr/sbin/" .. cfg.device_update_script .. " " .. update_firmware_name .. " " .. cfg.auto_write_bootloader .. " " .. cfg.update_restore_config .. " > /tmp/amlogic/amlogic_check_firmware.log && sync 2>/dev/null") return state end --Rescue kernel local function start_amlogic_rescue() local cfg = get_config() luci.sys.call("echo '4@Kernel rescue in progress, try again later!' > /tmp/amlogic/amlogic_running_script.log && sync >/dev/null 2>&1") luci.sys.call("chmod +x /usr/sbin/" .. cfg.device_kernel_script .. " >/dev/null 2>&1") local state = luci.sys.call("/usr/sbin/" .. cfg.device_kernel_script .. " -s > /tmp/amlogic/amlogic_check_rescue.log && sync >/dev/null 2>&1") luci.sys.call("echo '' > /tmp/amlogic/amlogic_running_script.log && sync >/dev/null 2>&1") return state end --Install amlogic openwrt firmware function start_amlogic_install() local cfg = get_config() luci.sys.exec("chmod +x /usr/sbin/" .. cfg.device_install_script .. " >/dev/null 2>&1") local amlogic_install_sel = luci.http.formvalue("amlogic_install_sel") local res = string.split(amlogic_install_sel, "@") local soc_id = res[1] or "99" local dtb_filename if tonumber(res[1]) == 99 then dtb_filename = res[2] or "auto_dtb" else dtb_filename = "auto_dtb" end local state = luci.sys.call("/usr/sbin/" .. cfg.device_install_script .. " " .. cfg.auto_write_bootloader .. " " .. soc_id .. " " .. dtb_filename .. " " .. cfg.auto_shared_fstype .. " > /tmp/amlogic/amlogic_check_install.log && sync 2>/dev/null") return state end --Delets the snapshot function start_snapshot_delete() local snapshot_delete_sel = luci.http.formvalue("snapshot_delete_sel") local state = luci.sys.exec("btrfs subvolume delete -c /.snapshots/" .. snapshot_delete_sel .. " 2>/dev/null && sync") return state end --Restore to this snapshot function start_snapshot_restore() local snapshot_restore_sel = luci.http.formvalue("snapshot_restore_sel") local state = luci.sys.exec("btrfs subvolume snapshot /.snapshots/etc-" .. snapshot_restore_sel .. " /etc 2>/dev/null && sync") local state_nowreboot = luci.sys.exec("echo 'b' > /proc/sysrq-trigger 2>/dev/null") return state end --Check the plugin (phase 1: query latest version, output Download button to log) function action_check_plugin() luci.sys.exec("chmod +x /usr/share/amlogic/amlogic_check_plugin.sh >/dev/null 2>&1") return luci.sys.call("/usr/share/amlogic/amlogic_check_plugin.sh -c >/dev/null 2>&1") end --Check the plugin (phase 2: download the given version, output Update button to log) function action_check_plugin_download() luci.sys.exec("chmod +x /usr/share/amlogic/amlogic_check_plugin.sh >/dev/null 2>&1") local plugin_options = luci.http.formvalue("plugin_options") or "" luci.http.prepare_content("application/json") luci.http.write_json({ check_plugin_status = luci.sys.call("/usr/share/amlogic/amlogic_check_plugin.sh -d " .. plugin_options .. " >/dev/null 2>&1"); }) end --Check and download the kernel function check_kernel() luci.sys.exec("chmod +x /usr/share/amlogic/amlogic_check_kernel.sh >/dev/null 2>&1") local kernel_options = luci.http.formvalue("kernel_options") local state if kernel_options == "check" then state = luci.sys.call("/usr/share/amlogic/amlogic_check_kernel.sh -check >/dev/null 2>&1") else state = luci.sys.call("/usr/share/amlogic/amlogic_check_kernel.sh -download " .. kernel_options .. " >/dev/null 2>&1") end return state end --Check the kernel function action_check_kernel() luci.http.prepare_content("application/json") luci.http.write_json({ check_kernel_status = check_kernel(); }) end --Check the firmware function check_firmware() luci.sys.exec("chmod +x /usr/share/amlogic/amlogic_check_firmware.sh >/dev/null 2>&1") local firmware_options = luci.http.formvalue("firmware_options") local state if firmware_options == "check" then state = luci.sys.call("/usr/share/amlogic/amlogic_check_firmware.sh -check >/dev/null 2>&1") else state = luci.sys.call("/usr/share/amlogic/amlogic_check_firmware.sh -download " .. firmware_options .. " >/dev/null 2>&1") end return state end --Check the openwrt firmware version online function action_check_firmware() luci.http.prepare_content("application/json") luci.http.write_json({ check_firmware_status = check_firmware(); }) end --Read upload files log local function start_check_upfiles() return luci.sys.exec("sed -n '$p' /tmp/amlogic/amlogic_check_upfiles.log 2>/dev/null") end --Read plug-in check log local function start_check_plugin() return luci.sys.exec("sed -n '$p' /tmp/amlogic/amlogic_check_plugin.log 2>/dev/null") end --Read kernel check log local function start_check_kernel() return luci.sys.exec("sed -n '$p' /tmp/amlogic/amlogic_check_kernel.log 2>/dev/null") end --Read openwrt firmware check log local function start_check_firmware() return luci.sys.exec("sed -n '$p' /tmp/amlogic/amlogic_check_firmware.log 2>/dev/null") end --Read rescue kernel log local function start_check_rescue() return luci.sys.exec("sed -n '$p' /tmp/amlogic/amlogic_check_rescue.log 2>/dev/null") end --Read openwrt install log local function start_check_install() return luci.sys.exec("sed -n '$p' /tmp/amlogic/amlogic_check_install.log 2>/dev/null") end --Return online check plugin result function action_start_check_plugin() luci.http.prepare_content("application/json") luci.http.write_json({ start_check_plugin = start_check_plugin(); }) end --Return online check kernel result function action_start_check_kernel() luci.http.prepare_content("application/json") luci.http.write_json({ start_check_kernel = start_check_kernel(); }) end --Return online check openwrt firmware result function action_start_check_firmware() luci.http.prepare_content("application/json") luci.http.write_json({ start_check_firmware = start_check_firmware(); }) end --Return online check rescue kernel result function action_start_check_rescue() luci.http.prepare_content("application/json") luci.http.write_json({ start_check_rescue = start_check_rescue(); }) end --Return online install openwrt result function action_start_check_install() luci.http.prepare_content("application/json") luci.http.write_json({ start_check_install = start_check_install(); }) end --Return online install openwrt result for amlogic function action_start_amlogic_install() luci.http.prepare_content("application/json") luci.http.write_json({ rule_install_status = start_amlogic_install(); }) end --Return snapshot delete result function action_start_snapshot_delete() luci.http.prepare_content("application/json") luci.http.write_json({ rule_delete_status = start_snapshot_delete(); }) end --Return snapshot restore result function action_start_snapshot_restore() luci.http.prepare_content("application/json") luci.http.write_json({ rule_restore_status = start_snapshot_restore(); }) end --Return openwrt update result for amlogic function action_start_amlogic_update() luci.http.prepare_content("application/json") luci.http.write_json({ rule_update_status = start_amlogic_update(); }) end --Return kernel update result function action_start_amlogic_kernel() luci.http.prepare_content("application/json") luci.http.write_json({ rule_kernel_status = start_amlogic_kernel(); }) end --Return plugin update result function action_start_amlogic_plugin() luci.http.prepare_content("application/json") luci.http.write_json({ rule_plugin_status = start_amlogic_plugin(); }) end --Return rescue kernel result function action_start_amlogic_rescue() luci.http.prepare_content("application/json") luci.http.write_json({ start_amlogic_rescue = start_amlogic_rescue(); }) end --Return files upload result function action_start_check_upfiles() luci.http.prepare_content("application/json") luci.http.write_json({ start_check_upfiles = start_check_upfiles(); }) end --Return the current openwrt firmware version local function current_firmware_version() return luci.sys.exec("uname -r 2>/dev/null | grep -oE '^[1-9].[0-9]{1,3}.[0-9]+'") or "Invalid value." end --Return the current plugin version local function current_plugin_version() local version_str = "" -- Check if opkg command exists if sys.call("command -v opkg >/dev/null") == 0 then local opkg_cmd = string.format("opkg list-installed | grep '^%s' | awk '{print $3}' | cut -d'-' -f1", PKG_NAME) version_str = trim(sys.exec(opkg_cmd)) end -- If opkg failed or not found, check if apk command exists if version_str == "" and sys.call("command -v apk >/dev/null") == 0 then local apk_cmd = string.format("apk list --installed 2>/dev/null | grep '^%s' | awk '{print $1}' | cut -d'-' -f4", PKG_NAME) version_str = trim(sys.exec(apk_cmd)) end if version_str ~= "" then return version_str else return "Invalid value." end end --Return the current kernel version local function current_kernel_version() return luci.sys.exec("uname -r 2>/dev/null | grep -oE '^[1-9].[0-9]{1,3}.[0-9]+'") or "Invalid value." end --Return the current kernel branch local function current_kernel_branch() local default_kernel_branch = luci.sys.exec("uname -r 2>/dev/null | grep -oE '^[1-9].[0-9]{1,3}'") local amlogic_kernel_branch = luci.sys.exec("uci get amlogic.config.amlogic_kernel_branch 2>/dev/null | grep -oE '^[1-9].[0-9]{1,3}'") or "" if trim(amlogic_kernel_branch) == "" then return default_kernel_branch else return amlogic_kernel_branch end end --Return current version information function action_state() luci.http.prepare_content("application/json") luci.http.write_json({ current_firmware_version = current_firmware_version(), current_plugin_version = current_plugin_version(), current_kernel_version = current_kernel_version(), current_kernel_branch = current_kernel_branch(); }) end --Read external model database local function my_model_database() local cfg = get_config() if string.find(cfg.device_platfrom, "allwinner") then return luci.sys.exec("cat /etc/model_database.txt 2>/dev/null | grep -E '^w[0-9]{1,9}.*:' | awk -F ':' '{print $1,$2}' OFS='###' ORS='@@@' | tr ' ' '~' 2>&1") else return luci.sys.exec("cat /etc/model_database.txt 2>/dev/null | grep -E '^[0-9]{1,9}.*:' | awk -F ':' '{print $1,$2}' OFS='###' ORS='@@@' | tr ' ' '~' 2>&1") end end --Return external model database function action_check_model_database() luci.http.prepare_content("application/json") luci.http.write_json({ my_model_database = my_model_database(); }) end --Return the current snapshot list local function current_snapshot() return luci.sys.exec("btrfs subvolume list -rt / | awk '{print $4}' | grep .snapshots") or "Invalid value." end --Return current snapshot information function action_check_snapshot() luci.http.prepare_content("application/json") luci.http.write_json({ current_snapshot = current_snapshot(); }) end --Return the openwrt compile author local function openwrt_author() return luci.sys.exec("uci get amlogic.config.amlogic_firmware_repo 2>/dev/null") or "Invalid value." end --Return current snapshot information function action_openwrt_author() luci.http.prepare_content("application/json") luci.http.write_json({ openwrt_author = openwrt_author(); }) end --Shut down the router function action_poweroff() luci.sys.exec("/sbin/poweroff") end --Switching dual partition function action_switch() luci.sys.exec("[ -f /boot/efi/EFI/BOOT/grub.cfg.prev ] && (cd /boot/efi/EFI/BOOT/ && mv -f grub.cfg grub.cfg.bak && mv -f grub.cfg.prev grub.cfg && mv -f grub.cfg.bak grub.cfg.prev)") luci.sys.exec("sync && reboot") end ================================================ FILE: luci-app-amlogic/luasrc/model/cbi/amlogic/amlogic_armcpu.lua ================================================ --Copyright: https://github.com/coolsnowwolf/luci/tree/master/applications/luci-app-cpufreq --Planner: https://github.com/unifreq/openwrt_packit --Extended support: https://github.com/ophub/luci-app-amlogic --Function: Support multi-core local mp --Remove the spaces in the string function trim(str) --return (string.gsub(str, "^%s*(.-)%s*$", "%1")) return (string.gsub(str, "%s+", "")) end --split function string.split(e, t) e = tostring(e) t = tostring(t) if (t == '') then return false end local a, o = 0, {} for i, t in function() return string.find(e, t, a, true) end do table.insert(o, string.sub(e, a, i - 1)) a = t + 1 end table.insert(o, string.sub(e, a)) return o end --Auto-complete node local check_config_settings = luci.sys.exec("uci get amlogic.@settings[0].governor0 2>/dev/null") or "" if (trim(check_config_settings) == "") then luci.sys.exec("uci delete amlogic.@settings[0] 2>/dev/null") luci.sys.exec("uci set amlogic.armcpu='settings' 2>/dev/null") luci.sys.exec("uci commit amlogic 2>/dev/null") end mp = Map("amlogic") mp.title = translate("CPU Freq Settings") mp.description = translate("Set CPU Scaling Governor to Max Performance or Balance Mode") s = mp:section(NamedSection, "armcpu", "settings") s.anonymouse = true local cpu_policys = luci.sys.exec("ls /sys/devices/system/cpu/cpufreq | grep -E 'policy[0-9]{1,3}' | xargs") or "policy0" policy_array = string.split(cpu_policys, " ") for tt, policy_name in ipairs(policy_array) do --Dynamic tab, automatically changes according to the number of cores, begin ------ policy_name = tostring(trim(policy_name)) policy_id = tostring(trim(string.gsub(policy_name, "policy", ""))) tab_name = policy_name tab_id = tostring(trim("tab" .. policy_id)) cpu_freqs = nixio.fs.readfile(trim("/sys/devices/system/cpu/cpufreq/" .. policy_name .. "/scaling_available_frequencies")) or "100000" cpu_freqs = string.sub(cpu_freqs, 1, -3) cpu_governors = nixio.fs.readfile(trim("/sys/devices/system/cpu/cpufreq/" .. policy_name .. "/scaling_available_governors")) or "performance" cpu_governors = string.sub(cpu_governors, 1, -3) freq_array = string.split(cpu_freqs, " ") governor_array = string.split(cpu_governors, " ") s:tab(tab_id, tab_name) tab_core_type = s:taboption(tab_id, DummyValue, trim("core_type" .. policy_id), translate("Microarchitectures:")) tab_core_type.default = luci.sys.exec("cat /sys/devices/system/cpu/cpu" .. policy_id .. "/uevent | grep -E '^OF_COMPATIBLE_0.*' | tr -d 'OF_COMPATIBLE_0=' | xargs") or "Unknown" tab_core_type.rmempty = false governor = s:taboption(tab_id, ListValue, trim("governor" .. policy_id), translate("CPU Scaling Governor:")) for t, e in ipairs(governor_array) do if e ~= "" then governor:value(e, translate(e, string.upper(e))) end end governor.default = "schedutil" governor.rmempty = false minfreq = s:taboption(tab_id, ListValue, trim("minfreq" .. policy_id), translate("Min Freq:")) for t, e in ipairs(freq_array) do if e ~= "" then minfreq:value(e) end end minfreq.default = "500000" minfreq.rmempty = false maxfreq = s:taboption(tab_id, ListValue, trim("maxfreq" .. policy_id), translate("Max Freq:")) for t, e in ipairs(freq_array) do if e ~= "" then maxfreq:value(e) end end maxfreq.default = "1512000" maxfreq.rmempty = false --Dynamic tab, automatically changes according to the number of cores, end ------ end -- Apply the settings to the system function mp.on_after_commit(self) luci.sys.exec("(sleep 2 && /etc/init.d/amlogic start) >/dev/null 2>&1 &") end return mp ================================================ FILE: luci-app-amlogic/luasrc/model/cbi/amlogic/amlogic_backup.lua ================================================ --Copyright: https://github.com/coolsnowwolf/luci/tree/master/applications/luci-app-filetransfer --Extended support: https://github.com/ophub/luci-app-amlogic --Function: Download files local io = require "io" local os = require "os" local fs = require "nixio.fs" local b, c, x -- Checks wheather the given path exists and points to a directory. function isdirectory(dirname) return fs.stat(dirname, "type") == "dir" end -- Check if a file or directory exists function file_exists(path) local file = io.open(path, "rb") if file then file:close() end return file ~= nil end --SimpleForm for Backup Config b = SimpleForm("backup", nil) b.title = translate("Backup Firmware Config") b.description = translate("Backup OpenWrt config (openwrt_config.tar.gz). Use this file to restore the config in [Manually Upload Update].") b.reset = false b.submit = false s = b:section(SimpleSection, "", "") -- Button for customize backup list my = s:option(Button, "customize", translate("Edit List:")) my.template = "amlogic/other_button" my.render = function(self, section, scope) self.section = true scope.display = "" self.inputtitle = translate("Open List") self.inputstyle = "save" Button.render(self, section, scope) end my.write = function(self, section, scope) local handle = io.popen("[[ -s /etc/amlogic_backup_list.conf ]] || sed -n \"/BACKUP_LIST='/,/.*'$/p\" /usr/sbin/openwrt-backup | sed -e \"s/BACKUP_LIST=\\(.*\\)/\\1/; s/'//g; s/\\\\\\\\//g; s/ //g\" > /etc/amlogic_backup_list.conf 2>/dev/null") handle:close() luci.http.redirect(luci.dispatcher.build_url("admin", "system", "amlogic", "backuplist")) end -- Button for download backup config o = s:option(Button, "download", translate("Backup Config:")) o.template = "amlogic/other_button" um = s:option(DummyValue, "", nil) um.template = "amlogic/other_dvalue" o.render = function(self, section, scope) self.section = true scope.display = "" self.inputtitle = translate("Download Backup") self.inputstyle = "save" Button.render(self, section, scope) end o.write = function(self, section, scope) local x = luci.sys.exec("chmod +x /usr/sbin/openwrt-backup 2>/dev/null") local r = luci.sys.exec("/usr/sbin/openwrt-backup -b > /tmp/amlogic/amlogic.log && sync 2>/dev/null") local sPath, sFile, fd, block sPath = "/.reserved/openwrt_config.tar.gz" sFile = fs.basename(sPath) if isdirectory(sPath) then fd = io.popen('tar -C "%s" -cz .' % { sPath }, "r") sFile = sFile .. ".tar.gz" else fd = nixio.open(sPath, "r") end if not fd then um.value = translate("Couldn't open file:") .. sPath return else um.value = translate("The file Will download automatically.") .. sPath end luci.http.header('Content-Disposition', 'attachment; filename="%s"' % { sFile }) luci.http.prepare_content("application/octet-stream") while true do block = fd:read(nixio.const.buffersize) if (not block) or (#block == 0) then break else luci.http.write(block) end end fd:close() luci.http.close() end -- Button for restore backup list r = s:option(Button, "restore", translate("Restore Backup:")) r.template = "amlogic/other_button" r.render = function(self, section, scope) self.section = true scope.display = "" self.inputtitle = translate("Upload Backup") self.inputstyle = "save" Button.render(self, section, scope) end r.write = function(self, section, scope) luci.http.redirect(luci.dispatcher.build_url("admin", "system", "amlogic", "upload")) end -- SimpleForm for Create Snapshot c = SimpleForm("snapshot", nil) c.title = translate("Snapshot Management") c.description = translate("Create a snapshot of the current system configuration, or restore to a snapshot.") c.reset = false c.submit = false d = c:section(SimpleSection, "", nil) w = d:option(Button, "create_snapshot", "") w.template = "amlogic/other_button" w.render = function(self, section, scope) self.section = true scope.display = "" self.inputtitle = translate("Create Snapshot") self.inputstyle = "save" Button.render(self, section, scope) end w.write = function(self, section, scope) local x = luci.sys.exec("btrfs subvolume snapshot -r /etc /.snapshots/etc-" .. os.date("%m.%d.%H%M%S") .. " 2>/dev/null && sync") luci.http.redirect(luci.dispatcher.build_url("admin", "system", "amlogic", "backup")) end w = d:option(TextValue, "snapshot_list", nil) w.template = "amlogic/other_snapshot" --KVM virtual machine switching dual partition if file_exists("/boot/efi/EFI/BOOT/grub.cfg.prev") then x = SimpleForm("kvm", nil) x.title = translate("KVM dual system switching") x.description = translate("You can freely switch between KVM dual partitions, using OpenWrt systems in different partitions.") x.reset = false x.submit = false x:section(SimpleSection).template = "amlogic/other_kvm" end return b, c, x ================================================ FILE: luci-app-amlogic/luasrc/model/cbi/amlogic/amlogic_backuplist.lua ================================================ local fs = require "nixio.fs" local backup_list_conf = "/etc/amlogic_backup_list.conf" -- Delete all spaces and tabs at the beginning of the line, and the unified line break is \n function remove_spaces(value) local lines = {} for line in value:gmatch("[^\r\n]+") do line = line:gsub("^%s*", "") if line ~= "" then table.insert(lines, line) end end value = table.concat(lines, "\n") value = value:gsub("[\r\n]+", "\n") return value end -- Remove backslash at the end of each line function remove_backslash_at_end(value) local lines = {} for line in value:gmatch("[^\r\n]+") do line = line:gsub("%s*\\%s*$", "") table.insert(lines, line) end return table.concat(lines, "\n") end local f = SimpleForm("customize", translate("Backup Configuration - Custom List"), translate("Write one configuration item per line, and directories should end with a /.")) local o = f:field(Value, "_custom") o.template = "cbi/tvalue" o.rows = 30 function o.cfgvalue(self, section) local readconf = fs.readfile(backup_list_conf) local value = remove_spaces(readconf) local value = remove_backslash_at_end(value) return value end function o.write(self, section, value) local value = remove_spaces(value) local value = remove_backslash_at_end(value) fs.writefile(backup_list_conf, value) luci.http.redirect(luci.dispatcher.build_url("admin", "system", "amlogic", "backup")) end return f ================================================ FILE: luci-app-amlogic/luasrc/model/cbi/amlogic/amlogic_check.lua ================================================ local b, c --SimpleForm for Check b = SimpleForm("amlogic", nil) b.title = translate("Check Update") b.description = translate("Provide OpenWrt Firmware, Kernel and Plugin online check, download and update service.") b.reset = false b.submit = false b:section(SimpleSection).template = "amlogic/other_check" --SimpleForm for Rescue Kernel c = SimpleForm("rescue", nil) c.title = translate("Rescue Kernel") c.description = translate("When a kernel update fails and causes the OpenWrt system to be unbootable, the kernel can be restored by mutual recovery from eMMC/NVMe/sdX.") c.reset = false c.submit = false c:section(SimpleSection).template = "amlogic/other_rescue" return b, c ================================================ FILE: luci-app-amlogic/luasrc/model/cbi/amlogic/amlogic_config.lua ================================================ --Remove the spaces in the string function trim(str) --return (string.gsub(str, "^%s*(.-)%s*$", "%1")) return (string.gsub(str, "%s+", "")) end --Auto-complete node local check_config_amlogic = luci.sys.exec("uci get amlogic.@amlogic[0].amlogic_firmware_repo 2>/dev/null") or "" if (trim(check_config_amlogic) == "") then luci.sys.exec("uci delete amlogic.@amlogic[0] 2>/dev/null") luci.sys.exec("uci set amlogic.config='amlogic' 2>/dev/null") luci.sys.exec("uci commit amlogic 2>/dev/null") end b = Map("amlogic") b.title = translate("Plugin Settings") local des_content = translate("You can customize the github.com download repository of OpenWrt files and kernels in [Online Download Update].") local des_content = des_content .. "
" .. translate("Tip: The same files as the current OpenWrt system's BOARD (such as rock5b) and kernel (such as 5.10) will be downloaded.") b.description = des_content o = b:section(NamedSection, "config", "amlogic") o.anonymouse = true --1.Set OpenWrt Firmware Repository mydevice = o:option(DummyValue, "mydevice", translate("Current Device:")) mydevice.description = translate("Display the PLATFORM classification of the device.") mydevice_platfrom = trim(luci.sys.exec("cat /etc/flippy-openwrt-release 2>/dev/null | grep PLATFORM | awk -F'=' '{print $2}' | grep -oE '(amlogic|rockchip|allwinner|qemu)'")) or "Unknown" mydevice.default = "PLATFORM: " .. mydevice_platfrom mydevice.rmempty = false --2.Set OpenWrt Firmware Repository firmware_repo = o:option(Value, "amlogic_firmware_repo", translate("OpenWrt download repository:")) firmware_repo.description = translate("Set the OpenWrt files download repository on github.com in [Online Download Update].") firmware_repo.default = "https://github.com/breakingbadboy/OpenWrt" firmware_repo.rmempty = false --3.Set OpenWrt Releases's Tag Keywords firmware_tag = o:option(Value, "amlogic_firmware_tag", translate("OpenWrt download tags keyword:")) firmware_tag.description = translate("Set the OpenWrt files download tags keyword for github.com in [Online Download Update].") firmware_tag.default = "ARMv8" firmware_tag.rmempty = false --4.Set OpenWrt Firmware Suffix firmware_suffix = o:option(Value, "amlogic_firmware_suffix", translate("OpenWrt files suffix:")) firmware_suffix.description = translate("Set the OpenWrt files download suffix for github.com in [Online Download Update].") firmware_suffix:value(".7z", translate(".7z")) firmware_suffix:value(".zip", translate(".zip")) firmware_suffix:value(".img.gz", translate(".img.gz")) firmware_suffix:value(".img.xz", translate(".img.xz")) firmware_suffix.default = ".img.gz" firmware_suffix.rmempty = false --5.Set OpenWrt Kernel DownLoad Path kernel_path = o:option(Value, "amlogic_kernel_path", translate("Kernel download repository:")) kernel_path.description = translate("Set the kernel files download repository on github.com in [Online Download Update].") kernel_path:value("https://github.com/breakingbadboy/OpenWrt") kernel_path:value("https://github.com/ophub/kernel") kernel_path.default = "https://github.com/breakingbadboy/OpenWrt" kernel_path.rmempty = false --6. Set OpenWrt Kernel Tags -- Read the currently SAVED value of the kernel path. local current_kernel_path = trim(luci.sys.exec("uci get amlogic.config.amlogic_kernel_path 2>/dev/null") or "") -- If it's not set yet, use its default value for the logic below. if current_kernel_path == "" then current_kernel_path = kernel_path.default end -- Define the tag lists. -- The base list, available for all repositories. local known_tags = { kernel_rk3588 = "kernel_rk3588 [Rockchip RK3588 Kernel]", kernel_rk35xx = "kernel_rk35xx [Rockchip RK35xx Kernel]", kernel_stable = "kernel_stable [Mainline Stable Kernel]", } -- Additional tags only available for the 'ophub/kernel' repository. local ophub_extra_tags = { kernel_flippy = "kernel_flippy [Mainline Stable Kernel by Flippy]", kernel_h6 = "kernel_h6 [Allwinner H6 Kernel]", kernel_beta = "kernel_beta [Beta Kernel]", } -- Conditionally add the extra tags to the list. if (string.find(current_kernel_path, "ophub/kernel")) then for value, display_name in pairs(ophub_extra_tags) do known_tags[value] = display_name end end -- Determine the default kernel tag based on existing config or system info. local kernel_tagsname local existing_tag = trim(luci.sys.exec("uci get amlogic.config.amlogic_kernel_tags 2>/dev/null") or "") if existing_tag ~= "" then kernel_tagsname = existing_tag else local kernel_release_info = trim(luci.sys.exec("uname -r 2>/dev/null")) or "" if (string.find(kernel_release_info, "-rk3588")) then kernel_tagsname = "kernel_rk3588" elseif (string.find(kernel_release_info, "-rk35xx")) then kernel_tagsname = "kernel_rk35xx" elseif (string.find(kernel_release_info, "-h6") or string.find(kernel_release_info, "-zicai")) then kernel_tagsname = "kernel_h6" else kernel_tagsname = "kernel_stable" end end -- Create the kernel tags option. kernel_tags = o:option(Value, "amlogic_kernel_tags", translate("Kernel download tags:")) kernel_tags.description = translate("Set the kernel files download tags on github.com in [Online Download Update].") -- Populate the dropdown with the known tags. for value, display_name in pairs(known_tags) do kernel_tags:value(value, translate(display_name)) end -- Ensure the default tag is included in the options. if not known_tags[kernel_tagsname] then kernel_tags:value(kernel_tagsname, kernel_tagsname) end -- Set the default and other properties. kernel_tags.default = kernel_tagsname kernel_tags.rmempty = false --7.Set kernel version branch kernel_branch = o:option(Value, "amlogic_kernel_branch", translate("Set version branch:")) kernel_branch.description = translate("Set the version branch of the OpenWrt files and kernel selected in [Online Download Update].") kernel_branch:value("5.4", translate("5.4")) kernel_branch:value("5.10", translate("5.10")) kernel_branch:value("5.15", translate("5.15")) kernel_branch:value("6.1", translate("6.1")) kernel_branch:value("6.6", translate("6.6")) kernel_branch:value("6.12", translate("6.12")) kernel_branch:value("6.18", translate("6.18")) local default_kernel_branch = luci.sys.exec("uname -r | grep -oE '^[1-9].[0-9]{1,3}'") kernel_branch.default = trim(default_kernel_branch) kernel_branch.rmempty = false --8.Set plugin branch plugin_branch = o:option(Value, "amlogic_plugin_branch", translate("Set plugin branch:")) plugin_branch.description = translate("Set the branch of the luci-app-amlogic plugin used in [Only update Amlogic Service]. Default (empty) uses the main (Lua) branch.") plugin_branch:value("", translate("main [Lua version]")) plugin_branch:value("js", translate("js [JavaScript version]")) plugin_branch.default = "" plugin_branch.rmempty = true --9.Restore configuration firmware_config = o:option(Flag, "amlogic_firmware_config", translate("Keep config update:")) firmware_config.description = translate("Set whether to keep the current config during [Online Download Update] and [Manually Upload Update].") firmware_config.default = "1" firmware_config.rmempty = false --9.Write bootloader write_bootloader = o:option(Flag, "amlogic_write_bootloader", translate("Auto write bootloader:")) write_bootloader.description = translate("[Recommended choice] Set whether to auto write bootloader during install and update OpenWrt.") write_bootloader.default = "0" write_bootloader.rmempty = false --10.Set the file system type of the shared partition shared_fstype = o:option(ListValue, "amlogic_shared_fstype", translate("Set the file system type:")) shared_fstype.description = translate("[Default ext4] Set the file system type of the shared partition (/mnt/mmcblk*p4) when install OpenWrt.") shared_fstype:value("ext4", translate("ext4")) shared_fstype:value("f2fs", translate("f2fs")) shared_fstype:value("btrfs", translate("btrfs")) shared_fstype:value("xfs", translate("xfs")) shared_fstype.default = "ext4" shared_fstype.rmempty = false return b ================================================ FILE: luci-app-amlogic/luasrc/model/cbi/amlogic/amlogic_info.lua ================================================ local b --SimpleForm for Info b = SimpleForm("amlogic", nil) b.title = translate("Amlogic Service") b.description = translate("Supports management of Amlogic s9xxx, Allwinner (V-Plus Cloud), and Rockchip (BeikeYun, Chainedbox L1 Pro) boxes.") b.reset = false b.submit = false b:section(SimpleSection).template = "amlogic/other_info" return b ================================================ FILE: luci-app-amlogic/luasrc/model/cbi/amlogic/amlogic_install.lua ================================================ local b --SimpleForm for Install OpenWrt to Amlogic EMMC b = SimpleForm("amlogic_install", nil) b.title = translate("Install OpenWrt") b.description = translate("Install OpenWrt to EMMC, Please select the device model, Or enter the dtb file name.") b.reset = false b.submit = false b:section(SimpleSection).template = "amlogic/other_install" return b ================================================ FILE: luci-app-amlogic/luasrc/model/cbi/amlogic/amlogic_log.lua ================================================ local b --SimpleForm for Server Logs b = SimpleForm("amlogic_log", nil) b.title = translate("Server Logs") b.description = translate("Display the execution log of the current operation.") b.reset = false b.submit = false s = b:section(SimpleSection, "", nil) o = s:option(TextValue, "") o.template = "amlogic/other_log" return b ================================================ FILE: luci-app-amlogic/luasrc/model/cbi/amlogic/amlogic_poweroff.lua ================================================ local b --SimpleForm for PowerOff b = SimpleForm("poweroff", nil) b.title = translate("PowerOff") b.description = translate("Shut down your router device.") b.reset = false b.submit = false b:section(SimpleSection).template = "amlogic/other_poweroff" return b ================================================ FILE: luci-app-amlogic/luasrc/model/cbi/amlogic/amlogic_upload.lua ================================================ --Copyright: https://github.com/coolsnowwolf/luci/tree/master/applications/luci-app-filetransfer --Extended support: https://github.com/ophub/luci-app-amlogic --Function: Upload files local os = require "os" local fs = require "nixio.fs" local nutil = require "nixio.util" local type = type local b, form --Remove the spaces in the string function trim(str) --return (string.gsub(str, "^%s*(.-)%s*$", "%1")) return (string.gsub(str, "%s+", "")) end -- Evaluate given shell glob pattern and return a table containing all matching function glob(...) local iter, code, msg = fs.glob(...) if iter then return nutil.consume(iter) else return nil, code, msg end end -- Checks wheather the given path exists and points to a regular file. function isfile(filename) return fs.stat(filename, "type") == "reg" end -- Get the last modification time of given file path in Unix epoch format. function mtime(path) return fs.stat(path, "mtime") end local stat_tr = { reg = "regular", dir = "directory", lnk = "link", chr = "character device", blk = "block device", fifo = "fifo", sock = "socket" } -- Get information about given file or directory. function stat(path, key) local data, code, msg = fs.stat(path) if data then data.mode = data.modestr data.type = stat_tr[data.type] or "?" end return key and data and data[key] or data, code, msg end --Set default upload path local ROOT_PTNAME = trim(luci.sys.exec("df / | tail -n1 | awk '{print $1}' | awk -F '/' '{print $3}'")) if ROOT_PTNAME then if (string.find(ROOT_PTNAME, "mmcblk[0-4]p[1-4]")) then local EMMC_NAME = trim(luci.sys.exec("echo " .. ROOT_PTNAME .. " | awk '{print substr($1, 1, length($1)-2)}'")) upload_path = trim("/mnt/" .. EMMC_NAME .. "p4/") elseif (string.find(ROOT_PTNAME, "[hsv]d[a-z]")) then local EMMC_NAME = trim(luci.sys.exec("echo " .. ROOT_PTNAME .. " | awk '{print substr($1, 1, length($1)-1)}'")) upload_path = trim("/mnt/" .. EMMC_NAME .. "4/") else upload_path = "/tmp/upload/" end else upload_path = "/tmp/upload/" end --Clear the version check log luci.sys.exec("echo '' > /tmp/amlogic/amlogic_check_plugin.log && sync >/dev/null 2>&1") luci.sys.exec("echo '' > /tmp/amlogic/amlogic_check_kernel.log && sync >/dev/null 2>&1") --SimpleForm for Update OpenWrt firmware/kernel b = SimpleForm("upload", nil) b.title = translate("Upload") local des_content = translate("Update plugins first, then update the kernel or firmware.") local des_content = des_content .. "
" .. translate("After uploading [Firmware], [Kernel], [IPK] or [Backup Config], the operation buttons will be displayed.") b.description = des_content b.reset = false b.submit = false s = b:section(SimpleSection, "", "") o = s:option(FileUpload, "") o.template = "amlogic/other_upload" um = s:option(DummyValue, "", nil) um.template = "amlogic/other_dvalue" local dir, fd dir = upload_path fs.mkdir(dir) luci.http.setfilehandler( function(meta, chunk, eof) if not fd then if not meta then return end if meta and chunk then fd = nixio.open(dir .. meta.file, "w") end if not fd then um.value = translate("Create upload file error.") .. " Error Info: " .. trim(upload_path .. meta.file) return end end if chunk and fd then fd:write(chunk) end if eof and fd then fd:close() fd = nil um.value = translate("File saved to") .. trim(upload_path .. meta.file) end end ) if luci.http.formvalue("upload") then local f = luci.http.formvalue("ulfile") if #f <= 0 then um.value = translate("No specify upload file.") end end local function getSizeStr(size) local i = 0 local byteUnits = { ' kB', ' MB', ' GB', ' TB' } repeat size = size / 1024 i = i + 1 until (size <= 1024) return string.format("%.1f", size) .. byteUnits[i] end local inits, attr = {} for i, f in ipairs(glob(trim(upload_path .. "*"))) do attr = stat(f) itisfile = isfile(f) if attr and itisfile then inits[i] = {} inits[i].name = fs.basename(f) inits[i].mtime = os.date("%Y-%m-%d %H:%M:%S", attr.mtime) inits[i].modestr = attr.modestr inits[i].size = getSizeStr(attr.size) inits[i].remove = 0 inits[i].ipk = false --Check whether the openwrt firmware file -- openwrt_s905d_v5.10.16_2021.05.31.1958.img.gz if (string.lower(string.sub(fs.basename(f), -7, -1)) == ".img.gz") then openwrt_firmware_file = true end -- openwrt_s905d_n1_R21.7.15_k5.4.134-flippy-62+o.img.xz if (string.lower(string.sub(fs.basename(f), -7, -1)) == ".img.xz") then openwrt_firmware_file = true end -- openwrt_s905d_n1_R21.7.15_k5.13.2-flippy-62+.7z if (string.lower(string.sub(fs.basename(f), -3, -1)) == ".7z") then openwrt_firmware_file = true end -- openwrt_s905d_n1_R21.7.15_k5.13.2-flippy-62+.img if (string.lower(string.sub(fs.basename(f), -4, -1)) == ".img") then openwrt_firmware_file = true end --Check whether the three kernel files -- boot-5.10.16-flippy-53+.tar.gz if (string.lower(string.sub(fs.basename(f), 1, 5)) == "boot-") then boot_file = true end -- dtb-amlogic-5.10.16-flippy-53+.tar.gz if (string.lower(string.sub(fs.basename(f), 1, 4)) == "dtb-") then dtb_file = true end -- modules-5.10.16-flippy-53+.tar.gz if (string.lower(string.sub(fs.basename(f), 1, 8)) == "modules-") then modules_file = true end --Check whether the backup file -- openwrt_config.tar.gz if (string.lower(string.sub(fs.basename(f), 1, -1)) == "openwrt_config.tar.gz") then backup_config_file = true end end end --SimpleForm for Upload file list form = SimpleForm("filelist", translate("Upload file list"), nil) form.reset = false form.submit = false description_info = "" luci.sys.exec("echo '' > /tmp/amlogic/amlogic_check_upfiles.log && sync >/dev/null 2>&1") if backup_config_file then description_info = description_info .. translate("There are config file in the upload directory, and you can restore the config. ") end if boot_file and dtb_file and modules_file then description_info = description_info .. translate("There are kernel files in the upload directory, and you can replace the kernel.") luci.sys.exec("echo 'kernel' > /tmp/amlogic/amlogic_check_upfiles.log && sync >/dev/null 2>&1") end if openwrt_firmware_file then description_info = description_info .. translate("There are openwrt firmware file in the upload directory, and you can update the openwrt.") luci.sys.exec("echo 'firmware' > /tmp/amlogic/amlogic_check_upfiles.log && sync >/dev/null 2>&1") end if description_info ~= "" then form.description = ' Tip: ' .. description_info .. ' ' end tb = form:section(Table, inits) nm = tb:option(DummyValue, "name", translate("File name")) mt = tb:option(DummyValue, "mtime", translate("Modify time")) ms = tb:option(DummyValue, "modestr", translate("Attributes")) sz = tb:option(DummyValue, "size", translate("Size")) btnrm = tb:option(Button, "remove", translate("Remove")) btnrm.render = function(self, section, scope) self.inputstyle = "remove" Button.render(self, section, scope) end btnrm.write = function(self, section) local v = fs.unlink(trim(upload_path .. fs.basename(inits[section].name))) if v then table.remove(inits, section) end return v end function IsConfigFile(name) name = name or "" local config_file = string.lower(string.sub(name, 1, -1)) return config_file == "openwrt_config.tar.gz" end -- Check if the file is a known package type (.ipk or .apk) function IsPackageFile(name) name = name or "" local lname = string.lower(name) return string.sub(lname, -4) == ".ipk" or string.sub(lname, -4) == ".apk" end --Add Button for *.ipk btnis = tb:option(Button, "ipk", translate("Install")) btnis.template = "amlogic/other_button" btnis.render = function(self, section, scope) if not inits[section] then return false end if IsPackageFile(inits[section].name) then scope.display = "" self.inputtitle = translate("Install") elseif IsConfigFile(inits[section].name) then scope.display = "" self.inputtitle = translate("Restore") else scope.display = "none" end self.inputstyle = "apply" Button.render(self, section, scope) end btnis.write = function(self, section) local file_to_install = inits[section].name local full_path = upload_path .. file_to_install if IsPackageFile(file_to_install) then local r = "" local install_cmd = "" -- Check for opkg first if luci.sys.call("command -v opkg >/dev/null") == 0 then install_cmd = string.format('opkg --force-reinstall install %s', full_path) r = luci.sys.exec(install_cmd) -- If opkg is not found, check for apk elseif luci.sys.call("command -v apk >/dev/null") == 0 then -- NOTE: --allow-untrusted is required for local packages install_cmd = string.format('apk add --force-overwrite --allow-untrusted %s', full_path) r = luci.sys.exec(install_cmd) -- If neither is found else r = "Error: Neither 'opkg' nor 'apk' package manager found on the system." end -- Clean LuCI cache after installation luci.sys.exec("rm -rf /tmp/luci-indexcache /tmp/luci-modulecache/* >/dev/null 2>&1") -- Display the result message -- We add a message to prompt the user to refresh the page to see changes. local result_msg = r .. "
" .. translate("Please refresh the page to see the changes.") .. "" form.description = string.format('%s', result_msg) elseif IsConfigFile(inits[section].name) then form.description = ' ' .. translate("Tip: The config is being restored, and it will automatically restart after completion.") .. ' ' luci.sys.exec("chmod +x /usr/sbin/openwrt-backup 2>/dev/null") luci.sys.exec("/usr/sbin/openwrt-backup -r > /tmp/amlogic/amlogic.log && sync 2>/dev/null") end end --SimpleForm for Check upload files form:section(SimpleSection).template = "amlogic/other_upfiles" return b, form ================================================ FILE: luci-app-amlogic/luasrc/view/amlogic/other_button.htm ================================================ <%+cbi/valueheader%> <% if self:cfgvalue(section) ~= false then %> " style="display: <%= display %>" type="submit" <%= attr("name", cbid) .. attr("id", cbid) .. attr("value", self.inputtitle or self.title)%> /> <% else %> - <% end %> <%+cbi/valuefooter%> ================================================ FILE: luci-app-amlogic/luasrc/view/amlogic/other_check.htm ================================================

<%:Update plugins first, then update the kernel or firmware. More options can be configured in [Plugin Settings].%>

<%:Collecting data...%> 
<%:Collecting data...%> 
<%:Collecting data...%> 
================================================ FILE: luci-app-amlogic/luasrc/view/amlogic/other_dvalue.htm ================================================ <%+cbi/valueheader%> <% local val = self:cfgvalue(section) or self.default or "" write(pcdata(val)) %> <%+cbi/valuefooter%> ================================================ FILE: luci-app-amlogic/luasrc/view/amlogic/other_info.htm ================================================
Logo
Packit    Author    luci-app-amlogic
<%:Supported functions:%> <%:Provide services such as install to EMMC, Update Firmware and Kernel, Backup and Recovery Config, Snapshot management, etc.%>
<%:Supported Boxes:%> <%:Amlogic s922x --- [ Beelink, Beelink-Pro, Ugoos-AM6-Plus, ODROID-N2, Khadas-VIM3, Ali-CT2000 ]%>
<%:Amlogic s905x3 -- [ X96-Max+, HK1-Box, H96-Max-X3, Ugoos-X3, TX3, X96-Air, A95XF3-Air ]%>
<%:Amlogic s905x2 -- [ X96Max-4G, X96Max-2G, MECOOL-KM3-4G, Tanix-Tx5-Max, A95X-F2 ]%>
<%:Amlogic s912 ---- [ H96-Pro-Plus, Octopus-Planet, A1, A2, Z6-Plus, TX92, X92, TX8-MAX, TX9-Pro ]%>
<%:Amlogic s905x --- [ HG680P, B860H, TBee, T95, TX9, XiaoMI-3S, X96 ]%>
<%:Amlogic s905w --- [ X96-Mini, TX3-Mini, W95, X96W/FunTV, MXQ-Pro-4K ]%>
<%:Amlogic s905d --- [ Phicomm-N1, MECOOL-KI-Pro, SML-5442TW ]%>
<%:Amlogic s905l --- [ UNT402A, M201-S ]%>
<%:Amlogic s905l2 -- [ MGV2000, MGV3000, Wojia-TV-IPBS9505, M301A, E900v21E ]%>
<%:Amlogic s905l3 -- [ CM211-1, CM311-1, HG680-LC, M401A, UNT400G1, UNT402A, ZXV10-BV310 ]%>
<%:Amlogic s905l3a - [ E900V22C/D, CM311-1a-YST, M401A, M411A, UNT403A, UNT413A, IP112H ]%>
<%:Amlogic s905l3b - [ CM211-1, CM311-1, E900V22D, E900V21E, E900V22E, M302A/M304A ]%>
<%:Amlogic s905 ---- [ Beelink-Mini-MX-2G, Sunvell-T95M, MXQ-Pro+4K, SumaVision-Q5 ]%>
<%:Allwinner H6 ---- [ V-Plus Cloud ]%>
<%:Rockchip -------- [ BeikeYun, L1-Pro, FastRhino R66S/R68S, Radxa 5B/E25 ]%>
<%:Used in KVM ----- [ Can be used in KVM virtual machine of Armbian system. ]%>
================================================ FILE: luci-app-amlogic/luasrc/view/amlogic/other_install.htm ================================================
<%:Select the device model:%>
<%:Install OpenWrt:%>  
================================================ FILE: luci-app-amlogic/luasrc/view/amlogic/other_kvm.htm ================================================

<%:Loading%> <%:System is switching...%>

================================================ FILE: luci-app-amlogic/luasrc/view/amlogic/other_log.htm ================================================ <%+cbi/valueheader%>
<%+cbi/valuefooter%> ================================================ FILE: luci-app-amlogic/luasrc/view/amlogic/other_poweroff.htm ================================================

<%:Loading%> <%:Device is shutting down...%>

================================================ FILE: luci-app-amlogic/luasrc/view/amlogic/other_rescue.htm ================================================
<%:Collecting data...%> 
================================================ FILE: luci-app-amlogic/luasrc/view/amlogic/other_snapshot.htm ================================================
<%:Collecting data...%>
================================================ FILE: luci-app-amlogic/luasrc/view/amlogic/other_upfiles.htm ================================================

<%:After uploading firmware (.img/.img.gz/.img.xz/.7z suffix) or kernel files (3 kernel files), the update button will be displayed.%>

<%:Collecting data...%> 
================================================ FILE: luci-app-amlogic/luasrc/view/amlogic/other_upload.htm ================================================ <%+cbi/valueheader%> <%+cbi/valuefooter%> ================================================ FILE: luci-app-amlogic/po/ru/amlogic.po ================================================ msgid "" msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Project-Id-Version: \n" "POT-Creation-Date: \n" "PO-Revision-Date: \n" "Last-Translator: https://github.com/ophub/luci-app-amlogic\n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" "Language: ru_RU\n" "X-Generator: Poedit 2.3.1\n" msgid "Choose local file:" msgstr "Выберите локальный файл:" msgid "Couldn't open file:" msgstr "Не удалось открыть файл:" msgid "The file Will download automatically." msgstr "Файл будет загружен автоматически." msgid "Create upload file error." msgstr "Ошибка создания загружаемого файла." msgid "Download" msgstr "Скачать" msgid "Download file" msgstr "Скачать файл" msgid "File name" msgstr "Имя файла" msgid "File saved to" msgstr "Файл сохранён в" msgid "FileTransfer" msgstr "Передача файлов" msgid "Install" msgstr "Установить" msgid "Attributes" msgstr "Атрибуты" msgid "Modify time" msgstr "Время изменения" msgid "No specify upload file." msgstr "Не указан файл для загрузки." msgid "Path on Route:" msgstr "Путь на маршрутизаторе:" msgid "Remove" msgstr "Удалить" msgid "Size" msgstr "Размер" msgid "Upload" msgstr "Загрузить" msgid "Upload file list" msgstr "Список загруженных файлов" msgid "There are config file in the upload directory, and you can restore the config. " msgstr "В каталоге загрузки есть файл конфигурации — вы можете восстановить настройки." msgid "There are kernel files in the upload directory, and you can replace the kernel." msgstr "В каталоге загрузки находятся файлы ядра — вы можете заменить ядро." msgid "There are openwrt firmware file in the upload directory, and you can update the openwrt." msgstr "В каталоге загрузки есть файл прошивки OpenWrt — вы можете обновить OpenWrt." msgid "Update plugins first, then update the kernel or firmware." msgstr "Сначала обновите плагины, затем ядро или прошивку." msgid "After uploading [Firmware], [Kernel], [IPK] or [Backup Config], the operation buttons will be displayed." msgstr "После загрузки [прошивки], [ядра], [IPK-пакета] или [резервной конфигурации] появятся соответствующие кнопки управления." msgid "After uploading firmware (.img/.img.gz/.img.xz/.7z suffix) or kernel files (3 kernel files), the update button will be displayed." msgstr "После загрузки файлов прошивки (с расширениями .img/.img.gz/.img.xz/.7z) или файлов ядра (3 файла), появится кнопка обновления." msgid "Amlogic Service" msgstr "Сервис Amlogic" msgid "Restore Config / Replace OpenWrt Kernel" msgstr "Восстановить конфигурацию / Заменить ядро OpenWrt" msgid "Manually Upload Update" msgstr "Обновление вручную" msgid "Install OpenWrt" msgstr "Установить OpenWrt" msgid "Select the device model:" msgstr "Выберите модель устройства:" msgid "Select List" msgstr "Выбрать из списка" msgid "Enter the dtb file name" msgstr "Введите имя файла DTB" msgid "Enter the soc name:" msgstr "Введите имя SoC:" msgid "Enter the uboot_overload name:" msgstr "Введите имя uboot_overload:" msgid "Invalid value." msgstr "Недопустимое значение." msgid "Install OpenWrt:" msgstr "Установка OpenWrt:" msgid "Install OpenWrt to EMMC, Please select the device model, Or enter the dtb file name." msgstr "Установка OpenWrt на eMMC. Пожалуйста, выберите модель устройства или введите имя файла DTB." msgid "Tip: Writing is in progress, and it will automatically restart after completion." msgstr "Подсказка: идёт запись — после завершения устройство автоматически перезагрузится." msgid "You have chosen:" msgstr "Вы выбрали:" msgid "Start install?" msgstr "Начать установку?" msgid "Installing..." msgstr "Установка..." msgid "Install Failed" msgstr "Установка не удалась" msgid "Successful Install" msgstr "Установка завершена успешно" msgid "Update" msgstr "Обновить" msgid "Updating..." msgstr "Обновление..." msgid "Update Failed" msgstr "Обновление не удалось" msgid "Successful Update" msgstr "Обновление завершено успешно" msgid "Update OpenWrt firmware" msgstr "Обновить прошивку OpenWrt" msgid "kernel" msgstr "ядро" msgid "Replace OpenWrt Kernel" msgstr "Заменить ядро OpenWrt" msgid "Tip: The kernel is being replaced, and it will automatically restart after completion." msgstr "Подсказка: идёт замена ядра — после завершения устройство автоматически перезагрузится." msgid "Supports management of Amlogic s9xxx, Allwinner (V-Plus Cloud), and Rockchip (BeikeYun, Chainedbox L1 Pro) boxes." msgstr "Поддерживает управление устройствами на базе Amlogic s9xxx, Allwinner (V-Plus Cloud) и Rockchip (BeikeYun, Chainedbox L1 Pro)." msgid "Supported functions:" msgstr "Поддерживаемые функции:" msgid "Provide services such as install to EMMC, Update Firmware and Kernel, Backup and Recovery Config, Snapshot management, etc." msgstr "Позволяет устанавливать OpenWrt на eMMC, обновлять прошивку и ядро, выполнять резервное копирование и восстановление конфигурации, а также управлять снапшотами (мгновенными снимками системы)." msgid "Supported Boxes:" msgstr "Поддерживаемые устройства:" msgid "Amlogic s922x --- [ Beelink, Beelink-Pro, Ugoos-AM6-Plus, ODROID-N2, Khadas-VIM3, Ali-CT2000 ]" msgstr "Amlogic s922x — [Beelink, Beelink-Pro, Ugoos-AM6-Plus, ODROID-N2, Khadas-VIM3, Ali-CT2000]" msgid "Amlogic s905x3 -- [ X96-Max+, HK1-Box, H96-Max-X3, Ugoos-X3, TX3, X96-Air, A95XF3-Air ]" msgstr "Amlogic s905x3 — [X96-Max+, HK1-Box, H96-Max-X3, Ugoos-X3, TX3, X96-Air, A95XF3-Air]" msgid "Amlogic s905x2 -- [ X96Max-4G, X96Max-2G, MECOOL-KM3-4G, Tanix-Tx5-Max, A95X-F2 ]" msgstr "Amlogic s905x2 — [X96Max-4G, X96Max-2G, MECOOL-KM3-4G, Tanix-Tx5-Max, A95X-F2]" msgid "Amlogic s912 ---- [ H96-Pro-Plus, Octopus-Planet, A1, A2, Z6-Plus, TX92, X92, TX8-MAX, TX9-Pro ]" msgstr "Amlogic s912 — [H96-Pro-Plus, Octopus-Planet, A1, A2, Z6-Plus, TX92, X92, TX8-MAX, TX9-Pro]" msgid "Amlogic s905x --- [ HG680P, B860H, TBee, T95, TX9, XiaoMI-3S, X96 ]" msgstr "Amlogic s905x — [HG680P, B860H, TBee, T95, TX9, XiaoMI-3S, X96]" msgid "Amlogic s905w --- [ X96-Mini, TX3-Mini, W95, X96W/FunTV, MXQ-Pro-4K ]" msgstr "Amlogic s905w — [X96-Mini, TX3-Mini, W95, X96W/FunTV, MXQ-Pro-4K]" msgid "Amlogic s905d --- [ Phicomm-N1, MECOOL-KI-Pro, SML-5442TW ]" msgstr "Amlogic s905d — [Phicomm-N1, MECOOL-KI-Pro, SML-5442TW]" msgid "Amlogic s905l --- [ UNT402A, M201-S ]" msgstr "Amlogic s905l — [UNT402A, M201-S]" msgid "Amlogic s905l2 -- [ MGV2000, MGV3000, Wojia-TV-IPBS9505, M301A, E900v21E ]" msgstr "Amlogic s905l2 — [MGV2000, MGV3000, Wojia-TV-IPBS9505, M301A, E900v21E]" msgid "Amlogic s905l3 -- [ CM211-1, CM311-1, HG680-LC, M401A, UNT400G1, UNT402A, ZXV10-BV310 ]" msgstr "Amlogic s905l3 — [CM211-1, CM311-1, HG680-LC, M401A, UNT400G1, UNT402A, ZXV10-BV310]" msgid "Amlogic s905l3a - [ E900V22C/D, CM311-1a-YST, M401A, M411A, UNT403A, UNT413A, IP112H ]" msgstr "Amlogic s905l3a — [E900V22C/D, CM311-1a-YST, M401A, M411A, UNT403A, UNT413A, IP112H]" msgid "Amlogic s905l3b - [ CM211-1, CM311-1, E900V22D, E900V21E, E900V22E, M302A/M304A ]" msgstr "Amlogic s905l3b — [CM211-1, CM311-1, E900V22D, E900V21E, E900V22E, M302A/M304A]" msgid "Amlogic s905 ---- [ Beelink-Mini-MX-2G, Sunvell-T95M, MXQ-Pro+4K, SumaVision-Q5 ]" msgstr "Amlogic s905 — [Beelink-Mini-MX-2G, Sunvell-T95M, MXQ-Pro+4K, SumaVision-Q5]" msgid "Allwinner H6 ---- [ V-Plus Cloud ]" msgstr "Allwinner H6 — [V-Plus Cloud]" msgid "Rockchip -------- [ BeikeYun, L1-Pro, FastRhino R66S/R68S, Radxa 5B/E25 ]" msgstr "Rockchip — [BeikeYun, L1-Pro, FastRhino R66S/R68S, Radxa 5B/E25]" msgid "Used in KVM ----- [ Can be used in KVM virtual machine of Armbian system. ]" msgstr "Используется в KVM — [можно использовать в виртуальной машине KVM на базе Armbian]." msgid "KVM dual system switching" msgstr "Переключение между двумя системами в KVM" msgid "You can freely switch between KVM dual partitions, using OpenWrt systems in different partitions." msgstr "Вы можете свободно переключаться между двумя разделами KVM, используя OpenWrt из разных разделов." msgid "Switch System" msgstr "Переключить систему" msgid "System is switching..." msgstr "Переключение системы..." msgid "Waiting for system switching..." msgstr "Ожидание завершения переключения..." msgid "System switchover succeeded, restarting..." msgstr "Переключение успешно, перезагрузка..." msgid "Are you sure you want to switch systems?" msgstr "Вы уверены, что хотите переключить систему?" msgid "Install Ipk" msgstr "Установить IPK" msgid "Plugin Settings" msgstr "Настройки плагина" msgid "Backup Firmware Config" msgstr "Резервное копирование конфигурации" msgid "Backup Config:" msgstr "Резервная копия конфигурации:" msgid "Download Backup" msgstr "Скачать резервную копию" msgid "Backup OpenWrt config (openwrt_config.tar.gz). Use this file to restore the config in [Manually Upload Update]." msgstr "Создать резервную копию конфигурации OpenWrt (openwrt_config.tar.gz). Используйте этот файл для восстановления в разделе [Обновление вручную]." msgid "Edit List:" msgstr "Редактировать список:" msgid "Open List" msgstr "Открыть список" msgid "Backup Configuration - Custom List" msgstr "Резервная копия — пользовательский список" msgid "Write one configuration item per line, and directories should end with a /." msgstr "По одному элементу на строку. Имена каталогов должны оканчиваться на «/»." msgid "Restore Backup:" msgstr "Восстановить из резервной копии:" msgid "Upload Backup" msgstr "Загрузить резервную копию" msgid "Restore" msgstr "Восстановить" msgid "Restore Config" msgstr "Восстановить конфигурацию" msgid "Restore configuration" msgstr "Восстановление конфигурации" msgid "Config File" msgstr "Файл конфигурации" msgid "Tip: The config is being restored, and it will automatically restart after completion." msgstr "Подсказка: идёт восстановление конфигурации — после завершения устройство автоматически перезагрузится." msgid "Snapshot Management" msgstr "Управление снапшотами" msgid "Create Snapshot" msgstr "Создать снапшот" msgid "Creating..." msgstr "Создание..." msgid "Created successfully" msgstr "Создано успешно" msgid "Creation failed" msgstr "Ошибка создания" msgid "Initialize Snapshot" msgstr "Инициализировать снапшот" msgid "Update Snapshot" msgstr "Обновить снапшот" msgid "Restore Snap" msgstr "Восстановить снапшот" msgid "Restoring..." msgstr "Восстановление..." msgid "Restore Failed" msgstr "Восстановление не удалось" msgid "Successfully Restored" msgstr "Восстановлено успешно" msgid "Delete Snap" msgstr "Удалить снапшот" msgid "You selected a snapshot:" msgstr "Вы выбрали снапшот:" msgid "Confirm delete?" msgstr "Подтвердить удаление?" msgid "Confirm recovery and restart OpenWrt?" msgstr "Подтвердить восстановление и перезагрузку OpenWrt?" msgid "Delete Failed" msgstr "Удаление не удалось" msgid "Successfully Deleted" msgstr "Удалено успешно" msgid "Create a snapshot of the current system configuration, or restore to a snapshot." msgstr "Создать снапшот текущей конфигурации системы или восстановиться из снапшота." msgid "Currently OpenWrt does not support the snapshot function." msgstr "В текущей версии OpenWrt функция снапшотов не поддерживается." msgid "Please use this plugin to reinstall or upgrade OpenWrt to enable the snapshot function." msgstr "Пожалуйста, используйте этот плагин для переустановки или обновления OpenWrt, чтобы включить поддержку снапшотов." msgid "Deleting..." msgstr "Удаление..." msgid "Online Download Update" msgstr "Обновление через интернет" msgid "Config Source" msgstr "Источник конфигурации" msgid "You can customize the github.com download repository of OpenWrt files and kernels in [Online Download Update]." msgstr "Вы можете настроить репозиторий на github.com для загрузки файлов OpenWrt и ядер в разделе [Обновление через интернет]." msgid "Tip: The same files as the current OpenWrt system's BOARD (such as rock5b) and kernel (such as 5.10) will be downloaded." msgstr "Подсказка: будут загружены файлы, соответствующие текущей платформе (например, rock5b) и версии ядра (например, 5.10)." msgid "OpenWrt download repository:" msgstr "Репозиторий OpenWrt:" msgid "Set the OpenWrt files download repository on github.com in [Online Download Update]." msgstr "Укажите репозиторий на github.com для загрузки файлов OpenWrt в разделе [Обновление через интернет]." msgid "OpenWrt download tags keyword:" msgstr "Ключевое слово тега OpenWrt:" msgid "Set the OpenWrt files download tags keyword for github.com in [Online Download Update]." msgstr "Укажите ключевое слово тега для загрузки файлов OpenWrt на github.com в разделе [Обновление через интернет]." msgid "OpenWrt files suffix:" msgstr "Расширение файлов OpenWrt:" msgid "Set the OpenWrt files download suffix for github.com in [Online Download Update]." msgstr "Укажите расширение файлов OpenWrt, загружаемых с github.com, в разделе [Обновление через интернет]." msgid "Kernel download repository:" msgstr "Репозиторий ядра:" msgid "Set the kernel files download repository on github.com in [Online Download Update]." msgstr "Укажите репозиторий на github.com для загрузки файлов ядра в разделе [Обновление через интернет]." msgid "Kernel download tags:" msgstr "Теги ядра:" msgid "Set the kernel files download tags on github.com in [Online Download Update]." msgstr "Укажите теги для загрузки файлов ядра на github.com в разделе [Обновление через интернет]." msgid "kernel_rk3588 [Rockchip RK3588 Kernel]" msgstr "kernel_rk3588 [Ядро для Rockchip RK3588]" msgid "kernel_rk35xx [Rockchip RK35xx Kernel]" msgstr "kernel_rk35xx [Ядро для Rockchip RK35xx]" msgid "kernel_stable [Mainline Stable Kernel]" msgstr "kernel_stable [Стабильное ядро из mainline]" msgid "kernel_flippy [Mainline Stable Kernel by Flippy]" msgstr "kernel_flippy [Стабильное ядро от Flippy]" msgid "kernel_h6 [Allwinner H6 Kernel]" msgstr "kernel_h6 [Ядро для Allwinner H6]" msgid "kernel_beta [Beta Kernel]" msgstr "kernel_beta [Бета-версия ядра]" msgid "Set version branch:" msgstr "Ветка версии:" msgid "Set the version branch of the OpenWrt files and kernel selected in [Online Download Update]." msgstr "Укажите ветку версии для файлов OpenWrt и ядра в разделе [Обновление через интернет]." msgid "Set plugin branch:" msgstr "Ветка плагина:" msgid "Set the branch of the luci-app-amlogic plugin used in [Only update Amlogic Service]. Default (empty) uses the main (Lua) branch." msgstr "Укажите ветку плагина luci-app-amlogic для раздела [Только обновить сервис Amlogic]. По умолчанию (пусто) используется ветка main (Lua)." msgid "main [Lua version]" msgstr "main [Lua версия]" msgid "js [JavaScript version]" msgstr "js [JavaScript версия]" msgid "Keep config update:" msgstr "Сохранять конфигурацию при обновлении:" msgid "Set whether to keep the current config during [Online Download Update] and [Manually Upload Update]." msgstr "Выберите, сохранять ли текущую конфигурацию при обновлении через интернет или вручную." msgid "Auto write bootloader:" msgstr "Автоматически записывать bootloader:" msgid "[Recommended choice] Set whether to auto write bootloader during install and update OpenWrt." msgstr "[Рекомендуется] Указывает, записывать ли автоматически bootloader при установке или обновлении OpenWrt." msgid "Set the file system type:" msgstr "Тип файловой системы:" msgid "[Default ext4] Set the file system type of the shared partition (/mnt/mmcblk*p4) when install OpenWrt." msgstr "[По умолчанию ext4] Укажите тип файловой системы для общего раздела (/mnt/mmcblk*p4) при установке OpenWrt." msgid "Save Config:" msgstr "Сохранить конфигурацию:" msgid "Save" msgstr "Сохранить" msgid "Check All Components Update" msgstr "Проверка обновлений" msgid "Provide OpenWrt Firmware, Kernel and Plugin online check, download and update service." msgstr "Предоставляет онлайн-проверку, загрузку и обновление прошивки OpenWrt, ядра и плагинов." msgid "Only update Amlogic Service" msgstr "Обновить только сервис Amlogic" msgid "Update system kernel only" msgstr "Обновить только ядро системы" msgid "Complete system update" msgstr "Полное обновление системы" msgid "Check Update" msgstr "Проверить обновления" msgid "Checking..." msgstr "Проверка..." msgid "Current Version" msgstr "Текущая версия" msgid "Latest Version" msgstr "Последняя версия" msgid "Rescue Kernel" msgstr "Аварийное восстановление ядра" msgid "When a kernel update fails and causes the OpenWrt system to be unbootable, the kernel can be restored by mutual recovery from eMMC/NVMe/sdX." msgstr "Если обновление ядра привело к невозможности загрузки OpenWrt, его можно восстановить с другого носителя (eMMC/NVMe/sdX)." msgid "Rescue the original system kernel" msgstr "Восстановить исходное ядро системы" msgid "Rescuing..." msgstr "Восстановление..." msgid "Current Device:" msgstr "Текущее устройство:" msgid "Display the PLATFORM classification of the device." msgstr "Отображает класс PLATFORM устройства." msgid "Update plugins first, then update the kernel or firmware. More options can be configured in [Plugin Settings]." msgstr "Сначала обновите плагины, затем ядро или прошивку. Дополнительные настройки доступны в [Настройках плагина]." msgid "Collecting data..." msgstr "Сбор данных..." msgid "Server Logs" msgstr "Журнал операций" msgid "Display the execution log of the current operation." msgstr "Отображает журнал выполнения текущей операции." msgid "Stop Refresh Log" msgstr "Остановить обновление журнала" msgid "Start Refresh Log" msgstr "Начать обновление журнала" msgid "Clean Log" msgstr "Очистить журнал" msgid "Download Log" msgstr "Скачать журнал" msgid "CPU Settings" msgstr "Настройки CPU" msgid "CPU Freq" msgstr "Частота CPU" msgid "CPU Freq Settings" msgstr "Настройки частоты CPU" msgid "Set CPU Scaling Governor to Max Performance or Balance Mode" msgstr "Выберите режим управления частотой CPU: максимальная производительность или баланс." msgid "CPU Scaling Governor:" msgstr "Режим управления частотой:" msgid "ondemand" msgstr "Ondemand — автоматический баланс" msgid "performance" msgstr "Performance — максимальная производительность" msgid "schedutil" msgstr "Schedutil — умный планировщик" msgid "CPU Freq from 48000 to 716000 (Khz)" msgstr "Диапазон частоты CPU: от 48000 до 716000 КГц" msgid "Min Freq:" msgstr "Мин. частота:" msgid "Max Freq:" msgstr "Макс. частота:" msgid "CPU Switching Threshold:" msgstr "Порог переключения частоты CPU:" msgid "Kernel make a decision on whether it should increase the frequency (%)" msgstr "При загрузке CPU выше указанного процента (%), ядро увеличит частоту." msgid "CPU Switching Sampling rate:" msgstr "Период проверки частоты CPU:" msgid "The sampling rate determines how frequently the governor checks to tune the CPU (ms)" msgstr "Частота проверки загрузки CPU (мс). Примечание: слишком частое переключение может вызвать дрожание задержек в сети." msgid "Microarchitectures:" msgstr "Микроархитектура:" msgid "Loading" msgstr "Загрузка" msgid "PowerOff" msgstr "Выключить" msgid "Shut down your router device." msgstr "Выключить устройство маршрутизатора." msgid "Perform PowerOff" msgstr "Выполнить выключение" msgid "Are you sure you want to shut down?" msgstr "Вы уверены, что хотите выключить устройство?" msgid "Device is shutting down..." msgstr "Устройство выключается..." msgid "Waiting for the device to shut down..." msgstr "Ожидание завершения выключения..." msgid "The device has been turned off" msgstr "Устройство выключено" ================================================ FILE: luci-app-amlogic/po/zh_Hans/amlogic.po ================================================ msgid "" msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Project-Id-Version: \n" "POT-Creation-Date: \n" "PO-Revision-Date: \n" "Last-Translator: https://github.com/ophub/luci-app-amlogic \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" "Language: zh_Hans\n" "X-Generator: Poedit 2.3.1\n" msgid "Choose local file:" msgstr "选择本地文件:" msgid "Couldn't open file:" msgstr "无法打开文件:" msgid "The file Will download automatically." msgstr "文件将自动下载" msgid "Create upload file error." msgstr "创建上传文件失败。" msgid "Download" msgstr "下载" msgid "Download file" msgstr "下载文件" msgid "File name" msgstr "文件名" msgid "File saved to" msgstr "文件保存到" msgid "FileTransfer" msgstr "文件传输" msgid "Install" msgstr "安装" msgid "Attributes" msgstr "属性" msgid "Modify time" msgstr "修改时间" msgid "No specify upload file." msgstr "未指定上传文件。" msgid "Path on Route:" msgstr "路由根目录:" msgid "Remove" msgstr "移除" msgid "Size" msgstr "大小" msgid "Upload" msgstr "上传" msgid "Upload file list" msgstr "上传文件列表" msgid "There are config file in the upload directory, and you can restore the config. " msgstr "上传文件列表中有配置文件,你可以恢复配置。" msgid "There are kernel files in the upload directory, and you can replace the kernel." msgstr "上传文件列表中有内核文件,你可以升级内核。" msgid "There are openwrt firmware file in the upload directory, and you can update the openwrt." msgstr "上传文件列表中有 OpenWrt 固件文件,你可以升级 OpenWrt。" msgid "Update plugins first, then update the kernel or firmware." msgstr "首先更新插件,再更新内核或固件。" msgid "After uploading [Firmware], [Kernel], [IPK] or [Backup Config], the operation buttons will be displayed." msgstr "当上传 [固件文件],[内核文件],[IPK文件],[配置文件] 后,将自动显示相关操作按钮。" msgid "After uploading firmware (.img/.img.gz/.img.xz/.7z suffix) or kernel files (3 kernel files), the update button will be displayed." msgstr "当上传文件列表中有 OpenWrt 固件(.img/.img.gz/.img.xz/.7z 后缀)或内核文件(3个内核文件)时,将自动显示相关操作按钮。" msgid "Amlogic Service" msgstr "晶晨宝盒" msgid "Restore Config / Replace OpenWrt Kernel" msgstr "恢复配置 / 升级 OpenWrt 内核" msgid "Manually Upload Update" msgstr "手动上传更新" msgid "Install OpenWrt" msgstr "安装 OpenWrt" msgid "Select the device model:" msgstr "选择设备型号:" msgid "Select List" msgstr "选择列表" msgid "Enter the dtb file name" msgstr "输入自定义 dtb 文件名" msgid "Enter the soc name:" msgstr "输入自定义 soc 名称:" msgid "Enter the uboot_overload name:" msgstr "输入自定义 uboot_overload 名称:" msgid "Invalid value." msgstr "无效值" msgid "Install OpenWrt:" msgstr "安装 OpenWrt:" msgid "Install OpenWrt to EMMC, Please select the device model, Or enter the dtb file name." msgstr "将 OpenWrt 安装到 EMMC,请选择设备型号,或输入 dtb 文件名。" msgid "Tip: Writing is in progress, and it will automatically restart after completion." msgstr "提示:正在写入,完成后将自动重启。" msgid "You have chosen:" msgstr "你选择了:" msgid "Start install?" msgstr "开始安装吗?" msgid "Installing..." msgstr "正在安装..." msgid "Install Failed" msgstr "安装失败" msgid "Successful Install" msgstr "安装成功" msgid "Update" msgstr "升级" msgid "Updating..." msgstr "正在更新..." msgid "Update Failed" msgstr "更新失败" msgid "Successful Update" msgstr "更新成功" msgid "Update OpenWrt firmware" msgstr "升级 OpenWrt 固件" msgid "kernel" msgstr "内核" msgid "Replace OpenWrt Kernel" msgstr "更换 OpenWrt 内核" msgid "Tip: The kernel is being replaced, and it will automatically restart after completion." msgstr "提示:正在替换内核,完成后将自动重启。" msgid "Supports management of Amlogic s9xxx, Allwinner (V-Plus Cloud), and Rockchip (BeikeYun, Chainedbox L1 Pro) boxes." msgstr "支持对晶晨 s9xxx 系列(斐讯N1、HK1等),全志(微加云),以及瑞芯微(贝壳云、我家云)的盒子进行在线管理。" msgid "Supported functions:" msgstr "支持的功能:" msgid "Provide services such as install to EMMC, Update Firmware and Kernel, Backup and Recovery Config, Snapshot management, etc." msgstr "支持将 OpenWrt 系统写入 EMMC、升级固件与内核,备份与恢复自定义配置,快照管理等功能。" msgid "Supported Boxes:" msgstr "支持的盒子:" msgid "Amlogic s922x --- [ Beelink, Beelink-Pro, Ugoos-AM6-Plus, ODROID-N2, Khadas-VIM3, Ali-CT2000 ]" msgstr "晶晨 s922x --- [ Beelink, Beelink-Pro, Ugoos-AM6-Plus, ODROID-N2, Khadas-VIM3, Ali-CT2000 ]" msgid "Amlogic s905x3 -- [ X96-Max+, HK1-Box, H96-Max-X3, Ugoos-X3, TX3, X96-Air, A95XF3-Air ]" msgstr "晶晨 s905x3 -- [ X96-Max+, HK1-Box, H96-Max-X3, Ugoos-X3, TX3, X96-Air, A95XF3-Air ]" msgid "Amlogic s905x2 -- [ X96Max-4G, X96Max-2G, MECOOL-KM3-4G, Tanix-Tx5-Max, A95X-F2 ]" msgstr "晶晨 s905x2 -- [ X96Max-4G, X96Max-2G, MECOOL-KM3-4G, Tanix-Tx5-Max, A95X-F2 ]" msgid "Amlogic s912 ---- [ H96-Pro-Plus, Octopus-Planet, A1, A2, Z6-Plus, TX92, X92, TX8-MAX, TX9-Pro ]" msgstr "晶晨 s912 ---- [ H96-Pro-Plus, 章鱼星球, A1, A2, Z6-Plus, TX92, X92, TX8-MAX, TX9-Pro ]" msgid "Amlogic s905x --- [ HG680P, B860H, TBee, T95, TX9, XiaoMI-3S, X96 ]" msgstr "晶晨 s905x --- [ 烽火HG680, 中兴B860H, TBee, T95, TX9, XiaoMI-3S, X96 ]" msgid "Amlogic s905w --- [ X96-Mini, TX3-Mini, W95, X96W/FunTV, MXQ-Pro-4K ]" msgstr "晶晨 s905w --- [ X96-Mini, TX3-Mini, W95, X96W/FunTV, MXQ-Pro-4K ]" msgid "Amlogic s905d --- [ Phicomm-N1, MECOOL-KI-Pro, SML-5442TW ]" msgstr "晶晨 s905d --- [ 斐讯-N1, MECOOL-KI-Pro, SML-5442TW ]" msgid "Amlogic s905l --- [ UNT402A, M201-S ]" msgstr "晶晨 s905l --- [ UNT402A, M201-S ]" msgid "Amlogic s905l2 -- [ MGV2000, MGV3000, Wojia-TV-IPBS9505, M301A, E900v21E ]" msgstr "晶晨 s905l2 -- [ MGV2000, MGV3000, Wojia-TV-IPBS9505, M301A, E900v21E ]" msgid "Amlogic s905l3 -- [ CM211-1, CM311-1, HG680-LC, M401A, UNT400G1, UNT402A, ZXV10-BV310 ]" msgstr "晶晨 s905l3 -- [ CM211-1, CM311-1, HG680-LC, M401A, UNT400G1, UNT402A, ZXV10-BV310 ]" msgid "Amlogic s905l3a - [ E900V22C/D, CM311-1a-YST, M401A, M411A, UNT403A, UNT413A, IP112H ]" msgstr "晶晨 s905l3a - [ E900V22C/D, CM311-1a-YST, M401A, M411A, UNT403A, UNT413A, IP112H ]" msgid "Amlogic s905l3b - [ CM211-1, CM311-1, E900V22D, E900V21E, E900V22E, M302A/M304A ]" msgstr "晶晨 s905l3b - [ CM211-1, CM311-1, E900V22D, E900V21E, E900V22E, M302A/M304A ]" msgid "Amlogic s905 ---- [ Beelink-Mini-MX-2G, Sunvell-T95M, MXQ-Pro+4K, SumaVision-Q5 ]" msgstr "晶晨 s905 ---- [ Beelink-Mini-MX-2G, Sunvell-T95M, MXQ-Pro+4K, SumaVision-Q5 ]" msgid "Allwinner H6 ---- [ V-Plus Cloud ]" msgstr "全志 H6 ------ [ 微加云 ]" msgid "Rockchip -------- [ BeikeYun, L1-Pro, FastRhino R66S/R68S, Radxa 5B/E25 ]" msgstr "瑞芯微 ------- [ 贝壳云, 我家云, 电犀牛R66S/R68S, 瑞莎5B/E25 ]" msgid "Used in KVM ----- [ Can be used in KVM virtual machine of Armbian system. ]" msgstr "KVM 中使用 --- [ 可以在 Armbian 系统的 KVM 虚拟机中使用。 ]" msgid "KVM dual system switching" msgstr "KVM 双系统切换" msgid "You can freely switch between KVM dual partitions, using OpenWrt systems in different partitions." msgstr "您可以在 KVM 双分区之间自由切换,使用不同分区中的 OpenWrt 系统。" msgid "Switch System" msgstr "切换系统" msgid "System is switching..." msgstr "系统切换中..." msgid "Waiting for system switching..." msgstr "等待系统完成切换..." msgid "System switchover succeeded, restarting..." msgstr "系统切换成功,正在重启..." msgid "Are you sure you want to switch systems?" msgstr "你确定要切换系统吗?" msgid "Install Ipk" msgstr "安装Ipk" msgid "Plugin Settings" msgstr "插件设置" msgid "Backup Firmware Config" msgstr "备份固件配置" msgid "Backup Config:" msgstr "备份配置:" msgid "Download Backup" msgstr "下载备份" msgid "Backup OpenWrt config (openwrt_config.tar.gz). Use this file to restore the config in [Manually Upload Update]." msgstr "备份当前 OpenWrt 的相关配置信息(openwrt_config.tar.gz)。使用此文件可在 [手动上传更新] 中恢复配置。" msgid "Edit List:" msgstr "编辑列表:" msgid "Open List" msgstr "打开列表" msgid "Backup Configuration - Custom List" msgstr "备份配置 - 自定义列表" msgid "Write one configuration item per line, and directories should end with a /." msgstr "每行写一个配置项,目录需要以/结尾。" msgid "Restore Backup:" msgstr "恢复备份:" msgid "Upload Backup" msgstr "上传备份" msgid "Restore" msgstr "恢复" msgid "Restore Config" msgstr "恢复配置" msgid "Restore configuration" msgstr "还原配置" msgid "Config File" msgstr "配置文件" msgid "Tip: The config is being restored, and it will automatically restart after completion." msgstr "提示:正在还原配置,完成后将自动重启。" msgid "Snapshot Management" msgstr "快照管理" msgid "Create Snapshot" msgstr "创建快照" msgid "Creating..." msgstr "正在创建" msgid "Created successfully" msgstr "创建成功" msgid "Creation failed" msgstr "创建失败" msgid "Initialize Snapshot" msgstr "初始化快照" msgid "Update Snapshot" msgstr "更新点快照" msgid "Restore Snap" msgstr "还原快照" msgid "Restoring..." msgstr "正在还原" msgid "Restore Failed" msgstr "还原失败" msgid "Successfully Restored" msgstr "还原成功" msgid "Delete Snap" msgstr "删除快照" msgid "You selected a snapshot:" msgstr "你选择了快照:" msgid "Confirm delete?" msgstr "确定删除吗?" msgid "Confirm recovery and restart OpenWrt?" msgstr "确定恢复并重启 OpenWrt 吗?" msgid "Delete Failed" msgstr "删除失败" msgid "Successfully Deleted" msgstr "删除成功" msgid "Create a snapshot of the current system configuration, or restore to a snapshot." msgstr "创建当前系统配置的快照,或还原到某个快照。" msgid "Currently OpenWrt does not support the snapshot function." msgstr "当前 OpenWrt 不支持快照功能。" msgid "Please use this plugin to reinstall or upgrade OpenWrt to enable the snapshot function." msgstr "请使用本插件重新安装或升级 OpenWrt 开启快照功能。" msgid "Deleting..." msgstr "正在删除..." msgid "Online Download Update" msgstr "在线下载更新" msgid "Config Source" msgstr "配置来源" msgid "You can customize the github.com download repository of OpenWrt files and kernels in [Online Download Update]." msgstr "您可以自定义 [在线下载和更新] 中 OpenWrt 固件和内核的 github.com 下载仓库。" msgid "Tip: The same files as the current OpenWrt system's BOARD (such as rock5b) and kernel (such as 5.10) will be downloaded." msgstr "提示:将下载与当前 OpenWrt 系统的 BOARD(如:rock5b)和内核(如:5.10)相同的文件。" msgid "OpenWrt download repository:" msgstr "OpenWrt 文件的下载仓库:" msgid "Set the OpenWrt files download repository on github.com in [Online Download Update]." msgstr "设置 [在线下载更新] 中 github.com 的 OpenWrt 文件的下载仓库。" msgid "OpenWrt download tags keyword:" msgstr "OpenWrt 下载标签关键字:" msgid "Set the OpenWrt files download tags keyword for github.com in [Online Download Update]." msgstr "设置 [在线下载更新] 中 github.com 的 OpenWrt 文件下载标签关键字。" msgid "OpenWrt files suffix:" msgstr "OpenWrt 文件的后缀:" msgid "Set the OpenWrt files download suffix for github.com in [Online Download Update]." msgstr "设置 [在线下载更新] 中 github.com 的 OpenWrt 文件的后缀。" msgid "Kernel download repository:" msgstr "内核的下载仓库:" msgid "Set the kernel files download repository on github.com in [Online Download Update]." msgstr "设置 [在线下载更新] 中 github.com 的内核文件下载仓库。" msgid "Kernel download tags:" msgstr "内核的下载标签:" msgid "Set the kernel files download tags on github.com in [Online Download Update]." msgstr "设置 [在线下载更新] 中 github.com 的内核文件下载标签。" msgid "kernel_rk3588 [Rockchip RK3588 Kernel]" msgstr "kernel_rk3588 [Rockchip RK3588 内核]" msgid "kernel_rk35xx [Rockchip RK35xx Kernel]" msgstr "kernel_rk35xx [Rockchip RK35xx 内核]" msgid "kernel_stable [Mainline Stable Kernel]" msgstr "kernel_stable [主线稳定内核]" msgid "kernel_flippy [Mainline Stable Kernel by Flippy]" msgstr "kernel_flippy [Flippy 的主线稳定内核]" msgid "kernel_h6 [Allwinner H6 Kernel]" msgstr "kernel_h6 [Allwinner H6 内核]" msgid "kernel_beta [Beta Kernel]" msgstr "kernel_beta [测试版内核]" msgid "Set version branch:" msgstr "设置版本分支:" msgid "Set the version branch of the OpenWrt files and kernel selected in [Online Download Update]." msgstr "设置 [在线下载更新] 时 OpenWrt 文件与内核所选用的版本分支。" msgid "Set plugin branch:" msgstr "设置插件分支:" msgid "Set the branch of the luci-app-amlogic plugin used in [Only update Amlogic Service]. Default (empty) uses the main (Lua) branch." msgstr "设置 [仅更新晶晨宝盒] 时使用的插件分支。默认(空)使用 main (Lua) 分支。" msgid "main [Lua version]" msgstr "main [Lua 版本]" msgid "js [JavaScript version]" msgstr "js [JavaScript 版本]" msgid "Keep config update:" msgstr "保留配置更新:" msgid "Set whether to keep the current config during [Online Download Update] and [Manually Upload Update]." msgstr "设置是否在 [在线下载更新] 和 [手动上传更新] 时保留当前的配置。" msgid "Auto write bootloader:" msgstr "自动写入 bootloader:" msgid "[Recommended choice] Set whether to auto write bootloader during install and update OpenWrt." msgstr "[推荐选择] 设置在安装和更新 OpenWrt 固件时是否自动写入 bootloader 文件。" msgid "Set the file system type:" msgstr "设置文件系统类型:" msgid "[Default ext4] Set the file system type of the shared partition (/mnt/mmcblk*p4) when install OpenWrt." msgstr "[默认 ext4] 设置安装 OpenWrt 时共享分区 (/mnt/mmcblk*p4) 的文件系统类型。" msgid "Save Config:" msgstr "保存配置:" msgid "Save" msgstr "保存" msgid "Check All Components Update" msgstr "插件和内核检查更新" msgid "Provide OpenWrt Firmware, Kernel and Plugin online check, download and update service." msgstr "提供 OpenWrt 固件,内核和插件在线检查,下载和更新服务。" msgid "Only update Amlogic Service" msgstr "仅更新晶晨宝盒" msgid "Update system kernel only" msgstr "仅更新系统内核" msgid "Complete system update" msgstr "完整更新全系统" msgid "Check Update" msgstr "检查更新" msgid "Checking..." msgstr "正在检查更新..." msgid "Current Version" msgstr "当前版本" msgid "Latest Version" msgstr "最新版本" msgid "Rescue Kernel" msgstr "救援内核" msgid "When a kernel update fails and causes the OpenWrt system to be unbootable, the kernel can be restored by mutual recovery from eMMC/NVMe/sdX." msgstr "当内核更新失败造成 OpenWrt 系统无法启动时,可以从 eMMC/NVME/sdX 相互恢复内核。" msgid "Rescue the original system kernel" msgstr "救援原系统内核" msgid "Rescuing..." msgstr "正在救援..." msgid "Current Device:" msgstr "当前设备:" msgid "Display the PLATFORM classification of the device." msgstr "显示设备的 PLATFORM 分类。" msgid "Update plugins first, then update the kernel or firmware. More options can be configured in [Plugin Settings]." msgstr "首先更新插件,再更新内核或固件。更多选项可以在插件设置中配置。" msgid "Collecting data..." msgstr "正在收集数据…" msgid "Check All Components Update" msgstr "插件和内核检查更新" msgid "Server Logs" msgstr "操作日志" msgid "Display the execution log of the current operation." msgstr "显示当前操作的执行日志。" msgid "Stop Refresh Log" msgstr "停止刷新" msgid "Start Refresh Log" msgstr "开始刷新" msgid "Clean Log" msgstr "清理日志" msgid "Download Log" msgstr "下载日志" msgid "CPU Settings" msgstr "CPU 设置" msgid "CPU Freq" msgstr "CPU 性能优化调节" msgid "CPU Freq Settings" msgstr "CPU 性能优化调节设置" msgid "Set CPU Scaling Governor to Max Performance or Balance Mode" msgstr "设置路由器的 CPU 性能模式(高性能/均衡省电)" msgid "CPU Scaling Governor:" msgstr "CPU 调速器:" msgid "ondemand" msgstr "Ondemand 自动平衡模式" msgid "performance" msgstr "Performance 高性能模式" msgid "schedutil" msgstr "Schedutil 敏捷调度器模式" msgid "CPU Freq from 48000 to 716000 (Khz)" msgstr "CPU 频率范围为 48000 到 716000 (Khz)" msgid "Min Freq:" msgstr "最小频率:" msgid "Max Freq:" msgstr "最大频率:" msgid "CPU Switching Threshold:" msgstr "CPU 切换频率触发阈值:" msgid "Kernel make a decision on whether it should increase the frequency (%)" msgstr "当 CPU 占用率超过 (%) 的情况下触发内核切换频率" msgid "CPU Switching Sampling rate:" msgstr "CPU 切换周期:" msgid "The sampling rate determines how frequently the governor checks to tune the CPU (ms)" msgstr "CPU 检查切换的周期 (ms) 。注意:过于频繁的切换频率会引起网络延迟抖动" msgid "Microarchitectures:" msgstr "微架构:" msgid "Loading" msgstr "载入中" msgid "PowerOff" msgstr "关机" msgid "Shut down your router device." msgstr "关闭你的路由器设备。" msgid "Perform PowerOff" msgstr "执行关机" msgid "Are you sure you want to shut down?" msgstr "你确定要关机吗?" msgid "Device is shutting down..." msgstr "设备正在关机..." msgid "Waiting for the device to shut down..." msgstr "等待设备关机..." msgid "The device has been turned off" msgstr "设备已经关机" ================================================ FILE: luci-app-amlogic/root/etc/config/amlogic ================================================ config amlogic 'config' option enable '1' option amlogic_firmware_repo 'https://github.com/breakingbadboy/OpenWrt' option amlogic_firmware_tag 'ARMv8' option amlogic_firmware_suffix '.img.gz' option amlogic_kernel_path 'https://github.com/ophub/kernel' option amlogic_kernel_tags '' option amlogic_kernel_branch '' option amlogic_plugin_branch 'main' option amlogic_firmware_config '1' option amlogic_write_bootloader '0' option amlogic_shared_fstype 'ext4' config settings 'armcpu' option governor0 'schedutil' option minfreq0 '500000' option maxfreq0 '1512000' ================================================ FILE: luci-app-amlogic/root/etc/init.d/amlogic ================================================ #!/bin/sh /etc/rc.common START=60 NAME=amlogic uci_get_by_type() { local ret=$(uci get $NAME.@$1[0].$2 2>/dev/null) echo ${ret:=$3} } uci_set_by_type() { uci set $NAME.@$1[0].$2=$3 2>/dev/null uci commit $NAME } start() { [ -x "/usr/sbin/fixcpufreq.pl" ] && /usr/sbin/fixcpufreq.pl && sync local cpu_policys=$(ls /sys/devices/system/cpu/cpufreq 2>/dev/null | grep -E 'policy[0-9]{1,3}' | xargs) if [ "${cpu_policys}" = "" ]; then cpu_policys="policy0" fi config_load $NAME for policy_name in ${cpu_policys}; do local policy_id="${policy_name//policy/}" # Get an optional value list for the current device local governor_list="$(cat /sys/devices/system/cpu/cpufreq/${policy_name}/scaling_available_frequencies 2>/dev/null | xargs)" local second_place_order="$(echo ${governor_list} | awk '{print $1}')" local second_place_reverse="$(echo ${governor_list} | awk '{print $NF}')" # Get the default value in the Config file local governor=$(uci_get_by_type settings governor${policy_id} schedutil) local minfreq=$(uci_get_by_type settings minfreq${policy_id} ${second_place_order}) local maxfreq=$(uci_get_by_type settings maxfreq${policy_id} ${second_place_reverse}) # Update result to the corresponding file echo $governor >/sys/devices/system/cpu/cpufreq/${policy_name}/scaling_governor echo $minfreq >/sys/devices/system/cpu/cpufreq/${policy_name}/scaling_min_freq echo $maxfreq >/sys/devices/system/cpu/cpufreq/${policy_name}/scaling_max_freq # If the governor is ondemand, configure its specific parameters. if [ "$governor" = "ondemand" ]; then local ondemand_dir="/sys/devices/system/cpu/cpufreq/${policy_name}/ondemand" # Check if the per-policy ondemand directory exists. if [ -d "$ondemand_dir" ]; then # Read ondemand parameters from UCI, or use default values (e.g., 80 and 20) if not set. local up_threshold=$(uci_get_by_type settings up_threshold${policy_id} 80) local sampling_down_factor=$(uci_get_by_type settings sampling_down_factor${policy_id} 20) # Write the values to the system files. echo $up_threshold > "${ondemand_dir}/up_threshold" echo $sampling_down_factor > "${ondemand_dir}/sampling_down_factor" fi fi done } reload() { start return 0 } ================================================ FILE: luci-app-amlogic/root/etc/uci-defaults/luci-amlogic ================================================ #!/bin/sh sed -i 's/cbi.submit\"] = true/cbi.submit\"] = \"1\"/g' /usr/lib/lua/luci/dispatcher.lua uci -q batch <<-EOF >/dev/null delete ucitrack.@amlogic[-1] add ucitrack amlogic set ucitrack.@amlogic[-1].init=amlogic commit ucitrack EOF rm -rf /tmp/luci-* exit 0 ================================================ FILE: luci-app-amlogic/root/usr/sbin/fixcpufreq.pl ================================================ #!/usr/bin/perl use strict; use File::Basename; my $uci_config_name; if(-f "/etc/config/amlogic") { $uci_config_name="amlogic"; } elsif(-f "/etc/config/cpufreq") { $uci_config_name="cpufreq"; } else { print "Can not found amlogic or cpufreq config file!\n"; exit(0); } my @policy_ids; my @policy_homes = ; if(@policy_homes) { foreach my $policy_home (@policy_homes) { push @policy_ids, substr($policy_home, -1); } } else { print "Can not found any policy!\n"; exit 0; } our $need_commit = 0; for(my $i=0; $i <= $#policy_ids; $i++) { &fix_invalid_value($uci_config_name, $policy_ids[$i], $policy_homes[$i]); } if($need_commit > 0) { &uci_commit($uci_config_name); } exit 0; ################################# function #################################### sub fix_invalid_value { my($uci_config, $policy_id, $policy_home) = @_; my %gove_hash = &get_gove_hash($policy_home); my @freqs = &get_freq_list($policy_home); my %freq_hash = &get_freq_hash(@freqs); my $min_freq = &get_min_freq(@freqs); my $max_freq = &get_max_freq(@freqs); my $uci_section = "settings"; my $uci_option; if($uci_config eq "cpufreq" ) { $uci_option = "governor"; } else { $uci_option = "governor" . $policy_id; } # 如果未设置 governor, 或该 goveernor 不存在, 则修败默认值为 schedutil my $config_gove = &uci_get_by_type($uci_config, $uci_section, $uci_option, "NA"); if( ($config_gove eq "NA") || ($gove_hash{$config_gove} != 1)) { &uci_set_by_type($uci_config, $uci_section, $uci_option, "schedutil"); $need_commit++; } # 如果出现不存在的 minfreq, 则修改为实际的 min_freq if($uci_config eq "cpufreq" ) { # "minifreq" is a spelling error that has always existed in the upstream source code $uci_option = "minifreq"; } else { $uci_option = "minfreq" . $policy_id; } my $config_min_freq = &uci_get_by_type($uci_config, $uci_section, $uci_option, "0"); if($freq_hash{$config_min_freq} != 1) { &uci_set_by_type($uci_config, $uci_section, $uci_option, $min_freq); $need_commit++; } # 如果出现不存在的 maxfreq # 或 maxfreq < minfreq, 则修改为实际的 max_freq if($uci_config eq "cpufreq" ) { $uci_option = "maxfreq"; } else { $uci_option = "maxfreq" . $policy_id; } my $config_max_freq = &uci_get_by_type($uci_config, $uci_section, $uci_option, "0"); if( ( $freq_hash{$config_max_freq} != 1) || ( $config_max_freq < $config_min_freq)) { &uci_set_by_type($uci_config, $uci_section, $uci_option, $max_freq); $need_commit++; } } sub get_freq_list { my $policy_home = shift; my @ret_ary; open my $fh, "<", "${policy_home}/scaling_available_frequencies" or die; $_ = <$fh>; chomp; @ret_ary = split /\s+/; close($fh); return @ret_ary; } sub get_freq_hash { my @freq_ary = @_; my %ret_hash; foreach my $freq (@freq_ary) { if($freq =~ m/\d+/) { $ret_hash{$freq} = 1; } } return %ret_hash; } sub get_min_freq { my @freq_ary = @_; return (sort {$a<=>$b} @freq_ary)[0]; } sub get_max_freq { my @freq_ary = @_; return (sort {$a<=>$b} @freq_ary)[-1]; } sub get_gove_hash { my $policy_home = shift; my %ret_hash; open my $fh, "<", "${policy_home}/scaling_available_governors" or die; $_ = <$fh>; chomp; my @gov_ary = split /\s+/; foreach my $gov (@gov_ary) { #print "gov: $gov\n"; if($gov =~ m/\w+/) { $ret_hash{$gov} = 1; } } close($fh); return %ret_hash; } sub uci_get_by_type { my($config,$section,$option,$default) = @_; my $ret; $ret=`uci get ${config}.\@${section}\[0\].${option} 2>/dev/null`; # 消除回车换行 $ret =~ s/[\n\r]//g; if($ret eq '') { return $default; } else { return $ret; } } sub uci_set_by_type { my($config,$section,$option,$value) = @_; my $ret; system("uci set ${config}.\@${section}\[0\].${option}=${value}"); return; } sub uci_commit { my $config = shift; system("uci commit ${config}"); return; } ================================================ FILE: luci-app-amlogic/root/usr/sbin/openwrt-backup ================================================ #!/bin/bash #====================================================================== # Function: Backup and restore config files in the /etc directory # Copyright (C) 2020-- https://github.com/unifreq/openwrt_packit # Copyright (C) 2021-- https://github.com/ophub/luci-app-amlogic #====================================================================== VERSION="v1.3" ZSTD_LEVEL=6 SNAPSHOT_PRESTR=".snapshots/" BACKUP_DIR="/.reserved" BACKUP_NAME="openwrt_config.tar.gz" BACKUP_FILE="${BACKUP_DIR}/${BACKUP_NAME}" # Customize backup list backup_list_conf="/etc/amlogic_backup_list.conf" if [[ -s "${backup_list_conf}" ]]; then while IFS= read -r line; do BACKUP_LIST+="${line} " done <"${backup_list_conf}" else BACKUP_LIST='./etc/AdGuardHome.yaml \ ./etc/amlogic_backup_list.conf \ ./etc/adblocklist/ \ ./etc/amule/ \ ./etc/balance_irq \ ./etc/bluetooth/ \ ./etc/china_ssr.txt \ ./etc/cifs/cifsdpwd.db \ ./etc/smbd/smbdpwd.db \ ./etc/ksmbd/ksmbdpwd.db \ ./etc/config/ \ ./etc/crontabs/ \ ./etc/dae/ \ ./etc/daed/ \ ./usr/share/openclash/core/ \ ./etc/openclash/backup/ \ ./etc/openclash/config/ \ ./etc/openclash/custom/ \ ./etc/openclash/game_rules/ \ ./etc/openclash/rule_provider/ \ ./etc/openclash/proxy_provider/ \ ./etc/dnsforwarder/ \ ./etc/dnsmasq.conf \ ./etc/dnsmasq.d/ \ ./etc/dnsmasq.oversea/ \ ./etc/dnsmasq.ssr/ \ ./etc/docker/daemon.json \ ./etc/docker/key.json \ ./etc/dropbear/ \ ./etc/easy-rsa/ \ ./etc/environment \ ./etc/exports \ ./etc/firewall.user \ ./etc/gfwlist/ \ ./etc/haproxy.cfg \ ./etc/hosts \ ./etc/ipsec.conf \ ./etc/ipsec.d/ \ ./etc/ipsec.secrets \ ./etc/ipsec.user \ ./etc/ipset/ \ ./etc/mosdns/config.yaml \ ./etc/mwan3.user \ ./etc/nginx/nginx.conf \ ./etc/ocserv/ \ ./etc/openvpn/ \ ./etc/pptpd.conf \ ./etc/qBittorrent/ \ ./etc/rc.local \ ./etc/samba/smbpasswd \ ./etc/shadow \ ./etc/smartdns/ \ ./etc/sqm/ \ ./etc/ssh/*key* \ ./etc/ssl/private/ \ ./etc/ssrplus/ \ ./etc/sysupgrade.conf \ ./etc/tailscale/ \ ./etc/transmission/ \ ./etc/uhttpd.crt \ ./etc/uhttpd.key \ ./etc/urandom.seed \ ./etc/v2raya/ \ ./etc/verysync/ \ ./root/.ssh/' fi error_msg() { echo -e " [ERROR] ${1}" exit 1 } if dmesg | grep 'meson' >/dev/null 2>&1; then PLATFORM="amlogic" elif dmesg | grep 'rockchip' >/dev/null 2>&1; then PLATFORM="rockchip" elif dmesg | grep 'sun50i-h6' >/dev/null 2>&1; then PLATFORM="allwinner" else source /etc/flippy-openwrt-release case ${PLATFORM} in amlogic | rockchip | allwinner | qemu-aarch64) : ;; *) error_msg "Unknown platform, only support amlogic or rockchip or allwinner h6 or qemu-aarch64!" ;; esac fi get_root_partition_name() { local paths=("/" "/overlay" "/rom") local partition_name for path in "${paths[@]}"; do partition_name=$(df "${path}" | awk 'NR==2 {print $1}' | awk -F '/' '{print $3}') [[ -n "${partition_name}" ]] && break done [[ -z "${partition_name}" ]] && error_msg "Cannot find the root partition!" echo "${partition_name}" } # Get the partition message of the root file system get_root_partition_msg() { local paths=("/" "/overlay" "/rom") local partition_name for path in "${paths[@]}"; do partition_msg=$(lsblk -l -o NAME,PATH,MOUNTPOINT,UUID,FSTYPE,LABEL | awk '$3 ~ "^" "'"${path}"'" "$" {print $0}') [[ -n "${partition_msg}" ]] && break done [[ -z "${partition_msg}" ]] && error_msg "Cannot find the root partition message!" echo "${partition_msg}" } backup() { cd / echo -n "Backup config files ... " [ -d "${BACKUP_DIR}" ] || mkdir -p "${BACKUP_DIR}" eval tar czf "${BACKUP_FILE}" "${BACKUP_LIST}" 2>/dev/null sync if [ -f "${BACKUP_FILE}" ]; then echo "Has been backed up to [ ${BACKUP_FILE} ], please download and save." exit 0 else error_msg "Backup failed!" fi } restore() { # Find the partition where root is located ROOT_PTNAME="$(get_root_partition_name)" # Find the disk where the partition is located, only supports mmcblk?p? sd?? hd?? vd?? and other formats case ${ROOT_PTNAME} in mmcblk?p[1-4]) EMMC_NAME=$(echo ${ROOT_PTNAME} | awk '{print substr($1, 1, length($1)-2)}') PARTITION_NAME="p" LB_PRE="EMMC_" ;; [hsv]d[a-z][1-4]) EMMC_NAME=$(echo ${ROOT_PTNAME} | awk '{print substr($1, 1, length($1)-1)}') PARTITION_NAME="" LB_PRE="" ;; *) error_msg "Unable to recognize the disk type of ${ROOT_PTNAME}!" ;; esac [ -d "${BACKUP_DIR}" ] || mkdir -p "${BACKUP_DIR}" [ -f "/tmp/upload/${BACKUP_NAME}" ] && mv -f "/tmp/upload/${BACKUP_NAME}" ${BACKUP_FILE} [ -f "/mnt/${EMMC_NAME}${PARTITION_NAME}4/${BACKUP_NAME}" ] && mv -f "/mnt/${EMMC_NAME}${PARTITION_NAME}4/${BACKUP_NAME}" ${BACKUP_FILE} sync if [ -f "${BACKUP_FILE}" ]; then echo -n "restore config files ... " cd / tar xzf "${BACKUP_FILE}" 2>/dev/null && sync echo "Successful recovery. Will start automatically, please refresh later!" sleep 3 reboot exit 0 else error_msg "The backup file [ ${BACKUP_FILE} ] not found!" fi } gen_fstab() { # Find the partition where root is located ROOT_PTNAME="$(get_root_partition_name)" # Find the disk where the partition is located, only supports mmcblk?p? sd?? hd?? vd?? and other formats case ${ROOT_PTNAME} in mmcblk?p[1-4]) EMMC_NAME=$(echo ${ROOT_PTNAME} | awk '{print substr($1, 1, length($1)-2)}') PARTITION_NAME="p" ;; [hsv]d[a-z][1-4]) EMMC_NAME=$(echo ${ROOT_PTNAME} | awk '{print substr($1, 1, length($1)-1)}') PARTITION_NAME="" ;; *) error_msg "Unable to recognize the disk type of ${ROOT_PTNAME}!" ;; esac ROOT_MSG="$(get_root_partition_msg)" ROOT_NAME=$(echo $ROOT_MSG | awk '{print $1}') ROOT_DEV=$(echo $ROOT_MSG | awk '{print $2}') ROOT_UUID=$(echo $ROOT_MSG | awk '{print $4}') ROOT_FSTYPE=$(echo $ROOT_MSG | awk '{print $5}') ROOT_LABEL=$(echo $ROOT_MSG | awk '{print $6}') BOOT_NAME="${EMMC_NAME}${PARTITION_NAME}1" BOOT_MSG=$(lsblk -l -o NAME,UUID,FSTYPE,LABEL | grep "${BOOT_NAME}") BOOT_DEV="/dev/${BOOT_NAME}" BOOT_UUID=$(echo $BOOT_MSG | awk '{print $2}') BOOT_FSTYPE=$(echo $BOOT_MSG | awk '{print $3}') BOOT_LABEL=$(echo $BOOT_MSG | awk '{print $4}') cat >/etc/config/fstab <>/etc/config/fstab fi cat >>/etc/config/fstab <>/etc/config/fstab else echo " option uuid '${BOOT_UUID}'" >>/etc/config/fstab fi cat >>/etc/config/fstab </dev/null; then echo "The name [${nname}] contains spaces, please re-enter!" continue elif [ "${nname}" == "q" ] || [ "${nname}" == "Q" ]; then return else if btrfs subvolume list -rt / | awk '{print $4}' | grep "^\\${SNAPSHOT_PRESTR}${nname}$" >/dev/null; then echo "Name: [ ${nname} ] has been used, please re-enter!" continue else snap_name="${nname}" break fi fi done ( cd / chattr -ia etc/config/fstab btrfs subvolume snapshot -r /etc "${SNAPSHOT_PRESTR}${snap_name}" if [[ "$?" -eq "0" ]]; then echo "The snapshot is created successfully: ${snap_name}" else echo "Snapshot creation failed!" fi ) read -p "Press [ enter ] to return." q } restore_snapshot() { echo "Below are the existing etc snapshots, please enter the name of one of them." echo "Tip: [ etc-000 ] This is the factory initial configuration." echo " [ etc-001 ] if it exists, it is the initial configuration after upgrading from the previous version." echo "----------------------------------------------------------------" btrfs subvolume list -rt / echo "----------------------------------------------------------------" read -p "Please enter the name of the snapshot to be restored (only the part after ${SNAPSHOT_PRESTR} needs to be entered): " snap_name if btrfs subvolume list -rt / | grep "${SNAPSHOT_PRESTR}${snap_name}" >/dev/null; then while :; do echo "Once the snapshot is restored, the current [ /etc ] will be overwritten!" read -p "Are you sure you want to restore the snapshot: [$snap_name]? y/n [n] " yn case $yn in y | Y) ( cd / chattr -ia etc/config/fstab mv etc etc.backup btrfs subvolume snapshot "${SNAPSHOT_PRESTR}${snap_name}" etc if [[ "$?" -eq "0" ]]; then btrfs subvolume delete -c etc.backup echo "Successfully restored, please enter [ reboot ] to restart the openwrt." else rm -rf etc mv etc.backup etc echo "Recovery failed, [ etc ] has not changed!" fi ) read -p "Press [ enter ] to return." q break ;; *) break ;; esac done else read -p "The snapshot name is incorrect, please run the program again! Press [ Enter ] to go back." q fi } delete_snapshot() { echo "Below are the existing [ etc ] snapshots, please enter the name of one of them." echo "Tip: [ etc-000 ] This is the factory initial configuration (cannot be deleted)" echo " [ etc-001 ] if it exists, it is the initial configuration after upgrading from the previous version (cannot be deleted)" echo "----------------------------------------------------------------" btrfs subvolume list -rt / echo "----------------------------------------------------------------" read -p "Please enter the name of the snapshot to be deleted (only the part after ${SNAPSHOT_PRESTR} needs to be entered): " snap_name if [ "${snap_name}" == "etc-000" ] || [ "${snap_name}" == "etc-001" ]; then read -p "The key snapshot cannot be deleted! Press [ enter ] to return." q elif [ "${snap_name}" == "" ]; then read -p "Name is empty! Press [ enter ] to return." q else if btrfs subvolume list -rt / | grep "${SNAPSHOT_PRESTR}${snap_name}" >/dev/null; then read -p "Are you sure you want to delete ${snap_name}? y/n [n] " yn case $yn in y | Y) ( cd / btrfs subvolume delete -c "${SNAPSHOT_PRESTR}${snap_name}" if [[ "$?" -eq "0" ]]; then echo "Snapshot [ ${snap_name} ] has been deleted." else echo "Snapshot [ ${snap_name} ] failed to delete!" fi ) read -p "Press [ Enter ] to return." q ;; *) break ;; esac else read -p "The name of the snapshot is incorrect, press [ Enter ] to return." q fi fi } migrate_snapshot() { cur_rootdev="$(get_root_partition_name)" dev_pre=$(echo "${cur_rootdev}" | awk '{print substr($1, 1, length($1)-1);}') rootdev_idx=$(echo "${cur_rootdev}" | awk '{print substr($1, length($1),1);}') case $rootdev_idx in 2) old_rootpath="/mnt/${dev_pre}3" ;; 3) old_rootpath="/mnt/${dev_pre}2" ;; *) echo "Judge the old version of rootfs path failed!" read -p "Press [ enter ] to return." q return ;; esac echo "The following are snapshots of etc found from the old version of rootfs, please enter the name of one of them." echo "Tip: Automatically exclude etc-000 and etc-001" echo "-----------------------------------------------------------------------------------" btrfs subvolume list -rt "${old_rootpath}" | grep -v "${SNAPSHOT_PRESTR}etc-000" | grep -v "${SNAPSHOT_PRESTR}etc-001" echo "-----------------------------------------------------------------------------------" read -p "Please enter the name of the snapshot to be migrated (only the part after $(SNAPSHOT_PRESTR) needs to be entered): " old_snap_name if [ "${old_snap_name}" == "" ]; then read -p "The name is empty, Press [ enter ] to return." q return elif ! btrfs subvolume list -rt "${old_rootpath}" | awk '{print $4}' | grep "^${SNAPSHOT_PRESTR}${old_snap_name}$" >/dev/null; then echo "The name was entered incorrectly, and the corresponding snapshot was not found!" read -p "Press [ enter ] to return." q return elif [ "${old_snap_name}" == "etc-000" ] || [ "${old_snap_name}" == "etc-001" ]; then echo "Critical snapshots are not allowed to migrate!" read -p "Press [ enter ] to return." q return fi # Find out if there is a snapshot with the same name under the current rootfs if btrfs subvolume list -rt / | awk '{print $4}' | grep "^\\${SNAPSHOT_PRESTR}${old_snap_name}$" >/dev/null; then echo "A snapshot with the name [ ${old_snap_name} ] already exists and cannot be migrated! (But you can delete the existing snapshot with the same name and then migrate)" read -p "Press [ enter ] to return." q return fi need_size=$(du -h -d0 ${old_rootpath}/${SNAPSHOT_PRESTR}${old_snap_name} | tail -n1 | awk '{print $1}') echo "----------------------------------------------------------------------------------------------" df -h echo "----------------------------------------------------------------------------------------------" echo -e "Note: To migrate the snapshot [ ${old_snap_name} ] of [ ${old_rootpath} ] to the current rootfs, it takes about [ ${need_size} ] space," echo -e " Please confirm whether the partition [/dev/${cur_rootdev}] where [/] is located has enough free space (Available)?" read -p "Are you sure to migrate? y/n [n] " yn if [ "$yn" == "y" ] || [ "$yn" == "Y" ]; then ( cd / btrfs send ${old_rootpath}/${SNAPSHOT_PRESTR}${old_snap_name} | btrfs receive ${SNAPSHOT_PRESTR} if [ $? -eq 0 ]; then btrfs property set -ts ${SNAPSHOT_PRESTR}${old_snap_name} ro false cp ${SNAPSHOT_PRESTR}etc-000/config/fstab ${SNAPSHOT_PRESTR}${old_snap_name}/config/ cp ${SNAPSHOT_PRESTR}etc-000/fstab ${SNAPSHOT_PRESTR}${old_snap_name}/ cp ${SNAPSHOT_PRESTR}etc-000/openwrt_release ${SNAPSHOT_PRESTR}${old_snap_name}/ cp ${SNAPSHOT_PRESTR}etc-000/openwrt_version ${SNAPSHOT_PRESTR}${old_snap_name}/ cp ${SNAPSHOT_PRESTR}etc-000/flippy-openwrt-release ${SNAPSHOT_PRESTR}${old_snap_name}/ cp ${SNAPSHOT_PRESTR}etc-000/banner ${SNAPSHOT_PRESTR}${old_snap_name}/banner btrfs property set -ts ${SNAPSHOT_PRESTR}${old_snap_name} ro true echo "The migration is complete, if you want to apply the snapshot [ ${old_snap_name} ], please use the restore snapshot function." else echo "The migration failed!" fi read -p "Press [ enter ] to return." q return ) fi } snapshot_help() { clear cat </dev/null; then error_msg "The current system is running on emmc. Please perform backup/restore operation in [ SD/TF/USB ]!" fi link_ptname="p" ;; [hsv]d[a-z][1-4]) disk_name="$(echo ${root_ptname} | awk '{print substr($1, 1, length($1)-1)}')" link_ptname="" ;; nvme?n?p[1-4]) disk_name="$(echo ${root_ptname} | awk '{print substr($1, 1, length($1)-2)}')" link_ptname="p" ;; *) error_msg "Unable to recognize the disk type of ${root_ptname}!" ;; esac # Set check parameters out_path="/mnt/${disk_name}${link_ptname}4" dev_intsize="$(fdisk -s /dev/${emmc})" [[ -z "$(echo "${dev_intsize}" | sed -n "/^[0-9]\+$/p")" ]] && error_msg "Unable to get EMMC size." echo -e "${INFO} The device EMMC size: [ $(($dev_intsize / 1024 / 1024))GB ]" # check directory [[ -d "${out_path}" ]] || mkdir -p ${out_path} echo -e "${INFO} The ddbr file path: [ ${out_path}/${ddbr_image} ]\n" } # Check the remaining space do_checkspace() { remaining_space="$(df -Tk ${out_path} | grep '/dev/' | awk '{print $5}' | echo $(($(xargs) / 1024 / 1024)))" if [[ -z "$(echo "${remaining_space}" | sed -n "/^[0-9]\+$/p")" ]]; then error_msg "The path is not available, the remaining space cannot be obtained." fi if [[ "${remaining_space}" -lt "${need_space}" ]]; then error_msg "The remaining space is [ ${remaining_space} ] Gb, and more than [ ${need_space} ] Gb space is required." fi } # Backup the emmc system do_backup() { echo -e "${STEPS} Start to backup the system in emmc." do_checkspace echo -e "Saving and Compressing [ /dev/${emmc} ] to [ ${out_path}/${ddbr_image} ], Please wait..." rm -f ${out_path}/${ddbr_image} 2>/dev/null && sync dd if=/dev/${emmc} | pv -s ${dev_intsize}"K" | gzip >${out_path}/${ddbr_image} [[ "${?}" -eq "0" ]] && sync && echo -e "${SUCCESS} Backup is complete." } # Restore the emmc system do_restore() { echo -e "${STEPS} Start to restore the system in emmc." [[ ! -f ${out_path}/${ddbr_image} ]] && error_msg "The [ ${out_path}/${ddbr_image} ] File not found." echo -e "Restoring [ ${out_path}/${ddbr_image} ] to [ /dev/${emmc} ], Please wait..." gunzip -c ${out_path}/${ddbr_image} | pv -s ${dev_intsize}"K" | dd of=/dev/${emmc} [[ "${?}" -eq "0" ]] && sync && echo -e "${SUCCESS} Restore is complete." } echo -e "${STEPS} Welcome to use the EMMC system backup/restore service." # Check script permission [[ -x "/usr/sbin/openwrt-ddbr" ]] || error_msg "Please grant execution permission: [ chmod +x /usr/sbin/openwrt-ddbr ]" # Check emmc do_checkemmc # Prompt the user to select backup/restore echo -ne "${OPT} Do you want to backup or restore? Backup=(b) Restore=(r): " read br case "${br}" in b | B | backup) do_backup ;; r | R | restore) do_restore ;; *) exit 0 ;; esac ================================================ FILE: luci-app-amlogic/root/usr/sbin/openwrt-install-amlogic ================================================ #!/bin/bash #====================================================================================== # Function: Install openwrt to emmc for Amlogic S9xxx STB # Copyright (C) 2020-- https://github.com/unifreq/openwrt_packit # Copyright (C) 2021-- https://github.com/ophub/luci-app-amlogic #====================================================================================== # # The script supports directly setting parameters for installation, skipping interactive selection # openwrt-install-amlogic ${AUTO_MAINLINE_UBOOT} ${ID} ${FDTFILE}:${SOC}:${UBOOT_OVERLOAD} ${SHARED_FSTYPE} # E.g: openwrt-install-amlogic yes 11 auto ext4 # E.g: openwrt-install-amlogic no 99 meson-gxl-s905d-phicomm-n1.dtb:s905d:u-boot-n1.bin ext4 # Tip: When custom dtb file, set ${SOC_ID} to 99, and parameter ${FDTFILE}:${SOC}:${UBOOT_OVERLOAD} must be set # Tip: ${SHARED_FSTYPE}: Shared partition can be ext4, xfs, btrfs, f2fs # You can also execute the script directly, and interactively select related functions # E.g: openwrt-install-amlogic # #====================================================================================== # Encountered a serious error, abort the script execution error_msg() { echo -e "[ERROR] ${1}" exit 1 } # Get the partition name of the root file system get_root_partition_name() { local paths=("/" "/overlay" "/rom") local partition_name for path in "${paths[@]}"; do partition_name=$(df "${path}" | awk 'NR==2 {print $1}' | awk -F '/' '{print $3}') [[ -n "${partition_name}" ]] && break done [[ -z "${partition_name}" ]] && error_msg "Cannot find the root partition!" echo "${partition_name}" } # Receive one-key command related parameters AUTO_MAINLINE_UBOOT="${1}" ZSTD_LEVEL="6" op_release="/etc/flippy-openwrt-release" # For [luci-app-amlogic] input parameter: DTB, SOC & UBOOT_OVERLOAD # When there is no input parameter, select manually SPECIFY_ID="" SPECIFY_SOC="" SPECIFY_DTB="" SPECIFY_UBOOT="" [[ -n "${2}" ]] && { SPECIFY_ID="${2}" if [[ "${2}" -eq "99" ]]; then if [[ -n "${3}" ]]; then # E.g: meson-gxl-s905d-phicomm-n1.dtb:s905d:u-boot-n1.bin SPECIFY_DTB="$(echo "${3}" | awk -F ':' '{print $1}')" SPECIFY_SOC="$(echo "${3}" | awk -F ':' '{print $2}')" SPECIFY_UBOOT="$(echo "${3}" | awk -F ':' '{print $3}')" else error_msg "Please enter the DTB file name!" fi fi } # shared partition can be ext4, xfs, btrfs, f2fs SHARED_FSTYPE="${4}" echo "AUTO_MAINLINE_UBOOT: ${AUTO_MAINLINE_UBOOT}" echo "SPECIFY_DTB: ${SPECIFY_DTB}" echo "SPECIFY_SOC: ${SPECIFY_SOC}" echo "SPECIFY_UBOOT: ${SPECIFY_UBOOT}" echo "SHARED_FSTYPE: ${SHARED_FSTYPE}" # Current device model MYDEVICE_NAME=$(cat /proc/device-tree/model | tr -d '\000') if [[ -z "${MYDEVICE_NAME}" ]]; then error_msg "The device name is empty and cannot be recognized." elif [[ ! -f "${op_release}" ]]; then error_msg "The [ ${op_release} ] file is missing." else echo -e "Current device: ${MYDEVICE_NAME} [ amlogic ]" sleep 3 fi # Find the device name of / root_devname="$(get_root_partition_name)" if lsblk -l | grep -E "^${root_devname}boot0" >/dev/null; then error_msg "you are running in emmc mode, please boot system with usb or tf card!" fi install_emmc="$(lsblk -l -o NAME | grep -oE '(mmcblk[0-9]?boot0)' | sed "s/boot0//g")" if [[ "${install_emmc}" == "" ]]; then error_msg "No emmc can be found to install the openwrt system!" fi # EMMC DEVICE NAME EMMC_NAME="${install_emmc}" EMMC_DEVPATH="/dev/${EMMC_NAME}" echo ${EMMC_DEVPATH} EMMC_SIZE=$(lsblk -l -b -o NAME,SIZE | grep ${EMMC_NAME} | sort | uniq | head -n1 | awk '{print $2}') echo "${EMMC_NAME} : ${EMMC_SIZE} bytes" ROOT_NAME=$(lsblk -l -o NAME,MAJ:MIN,MOUNTPOINT | grep -e '/$' | awk '{print $1}') echo "ROOTFS: ${ROOT_NAME}" BOOT_NAME=$(lsblk -l -o NAME,MAJ:MIN,MOUNTPOINT | grep -e '/boot$' | awk '{print $1}') echo "BOOT: ${BOOT_NAME}" # box model database # The field separator is : # " " or "" or NA or NULL means this field is null # The fields list: # 1. id # 2. model name # 3. SOC # 4. FDTFILE # 5. UBOOT_OVERLOAD # 6. MAINLINE_UBOOT # 7. ANDROID_UBOOT # 8. brief description # # allow use external modal database if [[ -f "/etc/model_database.txt" ]]; then model_database="$(cat /etc/model_database.txt)" else error_msg "[ /etc/model_database.txt ] file is missing." fi function display_database() { while read -r line; do if [[ "$line" =~ ^# ]]; then # Process comment lines, starting with # line="${line/#+\s+/}" echo "$line >>>" else # Process data lines, starting with id IFS=':' read -r -a fields <<<"$line" printf "%5s %-48s%-10s%-s\n" "${fields[0]}" "${fields[1]}" "${fields[2]}" "${fields[7]}" fi done < <(echo "${model_database}") } function search_model() { local id="${1}" local ret_count="$(echo "${model_database}" | awk -F ':' "\$1~/^$id\$/ {print \$0}" | wc -l)" if [[ "${ret_count}" -eq "1" ]]; then echo "${model_database}" | awk -F ':' "\$1~/^$id\$/ {print \$0}" | sed -e 's/NA//g' -e 's/NULL//g' -e 's/[ ][ ]*//g' fi } echo "Please select s9xxx box model:" echo "----------------------------------------------------------------------------------------------------" display_database echo "----------------------------------------------------------------------------------------------------" # For [luci-app-amlogic] input parameter: SOC & DTB # When there is no input parameter, select manually if [[ -n "${SPECIFY_ID}" ]]; then boxtype="${SPECIFY_ID}" else echo -n "Please choose: " read boxtype fi if [[ "${boxtype}" -eq "99" ]]; then FDTFILE="${SPECIFY_DTB}" AMLOGIC_SOC="${SPECIFY_SOC}" UBOOT_OVERLOAD="${SPECIFY_UBOOT}" MAINLINE_UBOOT="" ANDROID_UBOOT="" elif [[ "${boxtype}" -eq "0" ]]; then read -p "Please Input SoC Name(such as s9xxx): " AMLOGIC_SOC AMLOGIC_SOC="${AMLOGIC_SOC}" read -p "Please Input DTB Name(such as meson-xxx.dtb): " FDTFILE FDTFILE="${FDTFILE}" read -p "Please Input UBOOT_OVERLOAD Name(such as u-boot-xxx.bin): " UBOOT_OVERLOAD UBOOT_OVERLOAD="${UBOOT_OVERLOAD}" read -p "Please Input MAINLINE_UBOOT Name(such as /lib/u-boot/xxx-u-boot.bin.sd.bin): " MAINLINE_UBOOT MAINLINE_UBOOT="${MAINLINE_UBOOT}" read -p "Please Input ANDROID_UBOOT Name(such as /lib/u-boot/xxx-bootloader.img): " ANDROID_UBOOT ANDROID_UBOOT="${ANDROID_UBOOT}" else ret="$(search_model ${boxtype})" if [[ -z "${ret}" ]]; then error_msg "Input error, exit!" fi # 3. soc # 4. FDTFILE # 5. UBOOT_OVERLOAD # 6. MAINLINE_UBOOT # 7. ANDROID_UBOOT AMLOGIC_SOC="$(echo "${ret}" | awk -F ':' '{print $3}')" FDTFILE="$(echo "${ret}" | awk -F ':' '{print $4}')" UBOOT_OVERLOAD="$(echo "${ret}" | awk -F ':' '{print $5}')" MAINLINE_UBOOT="$(echo "${ret}" | awk -F ':' '{print $6}')" ANDROID_UBOOT="$(echo "${ret}" | awk -F ':' '{print $7}')" fi if [[ -z "${FDTFILE}" || ! -f "/boot/dtb/amlogic/${FDTFILE}" ]]; then error_msg "/boot/dtb/amlogic/${FDTFILE} does not exist!" fi echo "AMLOGIC_SOC Value [ ${AMLOGIC_SOC} ]" echo "FDTFILE Value [ ${FDTFILE} ]" echo "UBOOT_OVERLOAD Value [ ${UBOOT_OVERLOAD} ]" echo "MAINLINE_UBOOT Value [ ${MAINLINE_UBOOT} ]" echo "ANDROID_UBOOT Value [ ${ANDROID_UBOOT} ]" sed -i "s|^SOC=.*|SOC='${AMLOGIC_SOC}'|g" ${op_release} 2>/dev/null sed -i "s|^FDTFILE=.*|FDTFILE='${FDTFILE}'|g" ${op_release} 2>/dev/null sed -i "s|^UBOOT_OVERLOAD=.*|UBOOT_OVERLOAD='${UBOOT_OVERLOAD}'|g" ${op_release} 2>/dev/null sed -i "s|^MAINLINE_UBOOT=.*|MAINLINE_UBOOT='${MAINLINE_UBOOT}'|g" ${op_release} 2>/dev/null sed -i "s|^ANDROID_UBOOT=.*|ANDROID_UBOOT='${ANDROID_UBOOT}'|g" ${op_release} 2>/dev/null K510="1" [[ "$(hexdump -n 15 -x "/boot/zImage" 2>/dev/null | head -n 1 | awk '{print $7}')" == "0108" ]] && K510="0" echo -e "K510 [ ${K510} ]" # backup old bootloader if [[ ! -f "/root/BackupOldBootloader.img" ]]; then echo "Backup bootloader -> [ BackupOldBootloader.img ] ... " dd if=/dev/$EMMC_NAME of=/root/BackupOldBootloader.img bs=1M count=4 conv=fsync echo "Backup bootloader complete." echo fi swapoff -a # umount all other mount points MOUNTS=$(lsblk -l -o MOUNTPOINT) for mnt in $MOUNTS; do if [ "$mnt" == "MOUNTPOINT" ]; then continue fi if [ "$mnt" == "" ]; then continue fi if [ "$mnt" == "/" ]; then continue fi if [ "$mnt" == "/boot" ]; then continue fi if [ "$mnt" == "/opt" ]; then continue fi if [ "$mnt" == "[SWAP]" ]; then echo "swapoff -a" swapoff -a continue fi if echo $mnt | grep $EMMC_NAME; then echo "umount -f $mnt" umount -f $mnt if [ $? -ne 0 ]; then error_msg "$mnt Cannot be uninstalled, the installation process is aborted." fi fi done # Delete old partition if exists p=$(lsblk -l | grep -e "${EMMC_NAME}p" | wc -l) echo "A total of [ $p ] old partitions on EMMC will be deleted" >/tmp/fdisk.script while [ $p -ge 1 ]; do echo "d" >>/tmp/fdisk.script if [ $p -gt 1 ]; then echo "$p" >>/tmp/fdisk.script fi p=$((p - 1)) done # you can change ROOT size(MB) >= 320 ROOT1="1280" ROOT2="1280" if [[ "${AMLOGIC_SOC}" == "s912" ]] && [[ "${boxtype}" == "213" || "${boxtype}" == "2e" ]]; then BOOT="512" BLANK1="700" BLANK2="220" BLANK3="0" BLANK4="0" elif [[ "${AMLOGIC_SOC}" == "s912" || "${AMLOGIC_SOC}" == "s905d" ]]; then BOOT="512" BLANK1="68" BLANK2="220" BLANK3="0" BLANK4="0" elif [[ "${AMLOGIC_SOC}" == "s905x" ]]; then BOOT="160" BLANK1="700" BLANK2="0" BLANK3="0" BLANK4="0" elif [[ "${FDTFILE}" == "meson-sm1-skyworth-lb2004-a4091.dtb" ]]; then BOOT="512" BLANK1="108" BLANK2="562" BLANK3="0" BLANK4="0" elif [[ "${AMLOGIC_SOC}" == "s905l3a" ]] && [[ "${boxtype}" == "304" || "${boxtype}" == "34" ]]; then # e900v22c/d(s905l3a) BOOT="256" BLANK1="570" BLANK2="0" BLANK3="0" BLANK4="0" elif [[ "${AMLOGIC_SOC}" == "s905l3a" ]] && [[ "${boxtype}" == "305" || "${boxtype}" == "33" ]]; then # CM311-1a-YST(s905l3a) BOOT="512" BLANK1="108" BLANK2="778" BLANK3="0" BLANK4="0" elif [[ "${AMLOGIC_SOC}" == "s905l3b" ]]; then # M302A/M304A(s905l3b) BOOT="512" BLANK1="128" BLANK2="720" BLANK3="0" BLANK4="0" elif [[ "${AMLOGIC_SOC}" == "s905x3" ]] && [[ "${boxtype}" == "525" || "${boxtype}" == "5n" ]]; then # Whale(s905x3) BOOT="512" BLANK1="108" BLANK2="650" BLANK3="0" BLANK4="0" elif [[ "${boxtype}" =~ ^(409|410|49|4a)$ ]]; then # WXY-OES(A311D):409/49, WXY-OES-PLUS(S922X):410/4a BOOT="512" BLANK1="700" BLANK2="0" BLANK3="0" BLANK4="0" else BOOT="160" BLANK1="68" BLANK2="0" BLANK3="162" BLANK4="0" fi DST_TOTAL_MB=$((EMMC_SIZE / 1024 / 1024)) start1=$((BLANK1 * 2048)) end1=$((start1 + (BOOT * 2048) - 1)) start2=$(((BLANK2 * 2048) + end1 + 1)) end2=$((start2 + (ROOT1 * 2048) - 1)) start3=$(((BLANK3 * 2048) + end2 + 1)) end3=$((start3 + (ROOT2 * 2048) - 1)) start4=$(((BLANK4 * 2048) + end3 + 1)) end4=$((DST_TOTAL_MB * 2048 - 1)) cat >>/tmp/fdisk.script </dev/null if [ $? -ne 0 ]; then echo "The fdisk partition fails, Please try again." dd if=/root/BackupOldBootloader.img of=/dev/${EMMC_NAME} conv=fsync && sync dd if=/dev/zero of=/dev/${EMMC_NAME} bs=512 count=1 && sync exit 1 fi echo "Partition complete." # write some zero data to part begin seek=$((start1 / 2048)) dd if=/dev/zero of=/dev/${EMMC_NAME} bs=1M count=1 seek=$seek conv=fsync seek=$((start2 / 2048)) dd if=/dev/zero of=/dev/${EMMC_NAME} bs=1M count=1 seek=$seek conv=fsync seek=$((start3 / 2048)) dd if=/dev/zero of=/dev/${EMMC_NAME} bs=1M count=1 seek=$seek conv=fsync seek=$((start4 / 2048)) dd if=/dev/zero of=/dev/${EMMC_NAME} bs=1M count=1 seek=$seek conv=fsync #Mainline U-BOOT detection FLASH_MAINLINE_UBOOT=0 if [[ -n "${MAINLINE_UBOOT}" && -f "${MAINLINE_UBOOT}" ]]; then cat </dev/null echo "format rootfs1 partiton..." ROOTFS1_UUID=$(/usr/bin/uuidgen) mkfs.btrfs -f -U ${ROOTFS1_UUID} -L EMMC_ROOTFS1 -m single /dev/${EMMC_NAME}p2 mkdir -p /mnt/${EMMC_NAME}p2 sleep 2 umount -f /mnt/${EMMC_NAME}p2 2>/dev/null echo "format rootfs2 partiton..." ROOTFS2_UUID=$(/usr/bin/uuidgen) mkfs.btrfs -f -U ${ROOTFS2_UUID} -L EMMC_ROOTFS2 -m single /dev/${EMMC_NAME}p3 mkdir -p /mnt/${EMMC_NAME}p3 sleep 2 umount -f /mnt/${EMMC_NAME}p3 2>/dev/null # mount and copy echo "Wait for the boot file system to mount ... " i=1 max_try=10 while [ $i -le $max_try ]; do mount -t vfat /dev/${EMMC_NAME}p1 /mnt/${EMMC_NAME}p1 2>/dev/null sleep 2 mnt=$(lsblk -l -o MOUNTPOINT | grep /mnt/${EMMC_NAME}p1) if [ "$mnt" == "" ]; then if [ $i -lt $max_try ]; then echo "Not mounted successfully, try again ..." i=$((i + 1)) else error_msg "Cannot mount the boot file system, give up!" fi else echo "Successfully mounted." echo "copy boot ..." cd /mnt/${EMMC_NAME}p1 rm -rf /boot/'System Volume Information/' (cd /boot && tar cf - .) | tar xf - sync echo "Edit uEnv.txt ..." [[ -f "uEnv.txt" ]] && { sed -i -E \ -e "s|/dtb/amlogic.*|/dtb/amlogic/${FDTFILE}|" \ -e "s|UUID=[^ ]*|UUID=${ROOTFS1_UUID}|" \ -e "s|rootflags=compress=zstd:[^ ]*|rootflags=compress=zstd:${ZSTD_LEVEL}|" \ uEnv.txt } # Replace the extlinux/extlinux.conf if it exists [[ -f "extlinux/extlinux.conf" ]] && { sed -i -E \ -e "s|/dtb/amlogic.*|/dtb/amlogic/${FDTFILE}|" \ -e "s|UUID=[^ ]*|UUID=${ROOTFS1_UUID}|" \ -e "s|rootflags=compress=zstd:[^ ]*|rootflags=compress=zstd:${ZSTD_LEVEL}|" \ extlinux/extlinux.conf } rm -f s905_autoscript* aml_autoscript* if [ ${K510} -eq 1 ]; then if [ -f ${UBOOT_OVERLOAD} ]; then cp -f -v ${UBOOT_OVERLOAD} u-boot.emmc elif [ -f "u-boot.ext" ]; then cp -f -v u-boot.ext u-boot.emmc fi fi mv -f boot-emmc.ini boot.ini mv -f boot-emmc.cmd boot.cmd mv -f boot-emmc.scr boot.scr sync echo "complete." cd / umount -f /mnt/${EMMC_NAME}p1 break fi done echo "complete." echo "Wait for the rootfs file system to mount ... " i=1 while [ $i -le $max_try ]; do mount -t btrfs -o compress=zstd:${ZSTD_LEVEL} /dev/${EMMC_NAME}p2 /mnt/${EMMC_NAME}p2 2>/dev/null sleep 2 mnt=$(lsblk -l -o MOUNTPOINT | grep /mnt/${EMMC_NAME}p2) if [ "$mnt" == "" ]; then if [ $i -lt $max_try ]; then echo "Not mounted successfully, try again ..." i=$((i + 1)) else error_msg "Cannot mount rootfs file system, give up!" fi else echo "Successfully mounted" echo "Create folder ... " cd /mnt/${EMMC_NAME}p2 btrfs subvolume create etc mkdir -p bin boot dev lib opt mnt overlay proc rom root run sbin sys tmp usr www .reserved .snapshots ln -sf lib/ lib64 ln -sf tmp/ var sync echo "complete." COPY_SRC="root etc bin sbin lib opt usr www" echo "Copy data ... " for src in $COPY_SRC; do echo "copy [ $src ] ..." (cd / && tar cf - $src) | tar xf - sync done echo "Copy complete." sync cat >etc/docker/daemon.json </dev/null rm -rf usr/bin/AdGuardHome && ln -sf /mnt/${EMMC_NAME}p4/AdGuardHome usr/bin/ >/dev/null echo "Edit configuration file ..." #cd /mnt/${EMMC_NAME}p2/usr/bin/ #rm -f openwrt-install-amlogic openwrt-update-amlogic cd /mnt/${EMMC_NAME}p2/etc/rc.d ln -sf ../init.d/dockerd S99dockerd rm -f S??shortcut-fe if grep "sfe_flow '1'" ../config/turboacc >/dev/null; then if find ../../lib/modules -name 'shortcut-fe-cm.ko'; then ln -sf ../init.d/shortcut-fe S99shortcut-fe fi fi cd /mnt/${EMMC_NAME}p2/etc cat >fstab <fstab < .snapshots/etc-000" cd /mnt/${EMMC_NAME}p2 && btrfs subvolume snapshot -r etc .snapshots/etc-000 sync cd / umount -f /mnt/${EMMC_NAME}p2 break fi done echo "complete." echo "Create a shared file system." mkdir -p /mnt/${EMMC_NAME}p4 # When there is no input parameter, select manually if [[ -n "${SHARED_FSTYPE}" ]]; then TARGET_SHARED_FSTYPE=${SHARED_FSTYPE} else cat </dev/null mount -t btrfs /dev/${EMMC_NAME}p4 /mnt/${EMMC_NAME}p4 ;; 3 | f2fs) mkfs.f2fs -f -l EMMC_SHARED /dev/${EMMC_NAME}p4 >/dev/null mount -t f2fs /dev/${EMMC_NAME}p4 /mnt/${EMMC_NAME}p4 ;; 4 | xfs) mkfs.xfs -f -L EMMC_SHARED /dev/${EMMC_NAME}p4 >/dev/null mount -t xfs /dev/${EMMC_NAME}p4 /mnt/${EMMC_NAME}p4 ;; *) mkfs.ext4 -F -L EMMC_SHARED /dev/${EMMC_NAME}p4 >/dev/null mount -t ext4 /dev/${EMMC_NAME}p4 /mnt/${EMMC_NAME}p4 ;; esac mkdir -p /mnt/${EMMC_NAME}p4/docker /mnt/${EMMC_NAME}p4/AdGuardHome/data sync echo "Successful installed, please unplug the USB, re-insert the power supply to start the openwrt." exit 0 ================================================ FILE: luci-app-amlogic/root/usr/sbin/openwrt-kernel ================================================ #!/bin/bash #==================================================================================== # # Function: Update the kernel for OpenWrt (Amlogic s9xxx, Allwinner, Rockchip) # Copyright (C) 2020-- https://github.com/unifreq/openwrt_packit # Copyright (C) 2021-- https://github.com/ophub/luci-app-amlogic # # Support the kernel: boot-*.tar.gz, dtb-*.tar.gz, modules-*.tar.gz # It is recommended to install MAINLINE_UBOOT for kernel versions above 5.10.y # openwrt-kernel ${AUTO_MAINLINE_UBOOT} # E.g: openwrt-kernel yes # openwrt-kernel no # #================================== Functions list ================================== # # error_msg : Output error message # get_textoffset : Get kernel TEXT_OFFSET # init_var : Initialize all variables # check_kernel : Check kernel files list # chech_files_same : Check file consistency # restore_kernel : Restore current kernel # update_kernel : Update the kernel # update_uboot : Update the uboot # #============================== Set default parameters ============================== # # Receive one-key command related parameters AUTO_MAINLINE_UBOOT="no" # Set the release check file release_file="/etc/flippy-openwrt-release" # #==================================================================================== # Encountered a serious error, abort the script execution error_msg() { echo -e "[Error] ${1}" exit 1 } # Get the partition name of the /boot file system get_boot_partition_name() { local paths="/boot" local partition_name partition_name=$(df "${paths}" | awk 'NR==2 {print $1}' | awk -F '/' '{print $3}') echo "${partition_name}" } # Get the partition name of the root file system get_root_partition_name() { local paths=("/" "/overlay" "/rom") local partition_name for path in "${paths[@]}"; do partition_name=$(df "${path}" | awk 'NR==2 {print $1}' | awk -F '/' '{print $3}') [[ -n "${partition_name}" ]] && break done echo "${partition_name}" } # Get kernel TEXT_OFFSET, For u-boot.ext and u-boot.emmc get_textoffset() { boot_tgz_file="${1}" vmlinuz_name="${2}" K510="1" temp_dir="$(mktemp -d)" ( cd ${temp_dir} tar -xf "${boot_tgz_file}" "${vmlinuz_name}" ) # With TEXT_OFFSET patch is [ 0108 ], without TEXT_OFFSET patch is [ 0000 ] [[ "$(hexdump -n 15 -x "${temp_dir}/${vmlinuz_name}" 2>/dev/null | head -n 1 | awk '{print $7}')" == "0108" ]] && K510="0" } init_var() { # Receive one-key command related parameters [[ "${1}" == "yes" ]] && AUTO_MAINLINE_UBOOT="yes" # Check dependencies [[ -n "$(busybox which tar)" ]] || error_msg "Missing [ tar ] in OpenWrt firmware, unable to update kernel" # Check release file if [[ -s "${release_file}" ]]; then source "${release_file}" PLATFORM="${PLATFORM}" MODEL_ID="${MODEL_ID}" UBOOT_OVERLOAD="${UBOOT_OVERLOAD}" MAINLINE_UBOOT="${MAINLINE_UBOOT}" ANDROID_UBOOT="${ANDROID_UBOOT}" SOC="${SOC}" LOCK_KERNEL="${LOCK_KERNEL}" else error_msg "${release_file} file is missing!" fi [[ -n "${PLATFORM}" ]] || error_msg "Missing ${PLATFORM} value in ${release_file} file." # Define supported platforms support_platform=("allwinner" "rockchip" "amlogic" "qemu-aarch64") [[ -n "$(echo "${support_platform[@]}" | grep -w "${PLATFORM}")" ]] || error_msg "[ ${PLATFORM} ] is not supported." # Check and repair partition mount points [[ -z "$(get_boot_partition_name)" || -z "$(get_root_partition_name)" ]] && { echo -e "Partition mount point error, start repairing..." openwrt-backup -g } # Set /boot/vmlinuz-* replication names for different SoCs MYBOOT_VMLINUZ="$(ls -l /boot/*Image 2>/dev/null | awk '{print $9}' | head -n 1)" MYBOOT_VMLINUZ="${MYBOOT_VMLINUZ##*/}" [[ -n "${MYBOOT_VMLINUZ}" ]] || error_msg "Failed to get Image name: [ ${MYBOOT_VMLINUZ} ]" # Find the partition where root is located ROOT_PTNAME="$(get_root_partition_name)" # Find the disk where the partition is located, only supports mmcblk?p? sd?? hd?? vd?? and other formats case "${ROOT_PTNAME}" in mmcblk?p[1-9]) EMMC_NAME="$(echo ${ROOT_PTNAME} | awk '{print substr($1, 1, length($1)-2)}')" PARTITION_NAME="p" ;; [hsv]d[a-z][1-9]) EMMC_NAME="$(echo ${ROOT_PTNAME} | awk '{print substr($1, 1, length($1)-1)}')" PARTITION_NAME="" ;; nvme?n?p[1-9]) EMMC_NAME="$(echo ${ROOT_PTNAME} | awk '{print substr($1, 1, length($1)-2)}')" PARTITION_NAME="p" ;; *) error_msg "Unable to recognize the disk type of ${ROOT_PTNAME}!" ;; esac P4_PATH="/mnt/${EMMC_NAME}${PARTITION_NAME}4" # Move kernel related files to the ${P4_PATH} directory mv -f /tmp/upload/* ${P4_PATH} 2>/dev/null # Current device model MYDEVICE_NAME="$(cat /proc/device-tree/model | tr -d '\000')" [[ "${PLATFORM}" == "qemu-aarch64" ]] && MYDEVICE_NAME="KVM Virtual Machine" echo -e "Current device: ${MYDEVICE_NAME} [ ${PLATFORM} ], Use in [ ${EMMC_NAME} ]" sync && echo "" } # Check kernel files list check_kernel() { cd ${P4_PATH} # Determine custom kernel filename kernel_boot="$(ls boot-*.tar.gz 2>/dev/null | head -n 1)" kernel_name="${kernel_boot:5:-7}" KERNEL_VERSION="$(echo ${kernel_name} | grep -oE '^[1-9].[0-9]{1,3}.[0-9]+')" echo -e "Kernel name: ${kernel_name}" # check if kernel is locked if [ -n "${LOCK_KERNEL}" ]; then if [ "${LOCK_KERNEL}" != "${kernel_name}" ]; then if ! echo "${kernel_name}" | grep -E '^5.10.\d+-.*?rk35.*?$' >/dev/null; then error_msg "The kernel version is locked to [ ${LOCK_KERNEL} ], but your kernel is [ ${kernel_name} ]. " fi fi fi # Check if the file is added with TEXT_OFFSET patch get_textoffset "${P4_PATH}/${kernel_boot}" "vmlinuz-${kernel_name}" echo -e "K510 [ ${K510} ]" if [[ "${PLATFORM}" == "amlogic" && "${K510}" -eq "1" ]]; then [[ -n "${UBOOT_OVERLOAD}" && -f "/boot/${UBOOT_OVERLOAD}" ]] || error_msg "The UBOOT_OVERLOAD file is missing and cannot be update." fi # Check the sha256sums file sha256sums_file="sha256sums" sha256sums_check="1" [[ -s "${sha256sums_file}" && -n "$(cat ${sha256sums_file})" ]] || sha256sums_check="0" [[ -n "$(busybox which sha256sum)" ]] || sha256sums_check="0" [[ "${sha256sums_check}" -eq "1" ]] && echo -e "Enable sha256sum checking..." # Loop check file i="1" if [[ "${PLATFORM}" == "qemu-aarch64" ]]; then kernel_list=("boot" "modules") else kernel_list=("boot" "dtb-${PLATFORM}" "modules") fi for kernel_file in ${kernel_list[*]}; do # Set check filename tmp_file="${kernel_file}-${kernel_name}.tar.gz" # Check if file exists [[ -s "${tmp_file}" ]] || error_msg "The [ ${kernel_file} ] file is missing." # Check if the file sha256sum is correct if [[ "${sha256sums_check}" -eq "1" ]]; then tmp_sha256sum="$(sha256sum "${tmp_file}" | awk '{print $1}')" tmp_checkcode="$(cat ${sha256sums_file} | grep ${tmp_file} | awk '{print $1}')" [[ "${tmp_sha256sum}" == "${tmp_checkcode}" ]] || error_msg "${tmp_file}: sha256sum verification failed." echo -e "(${i}/3) [ ${tmp_file} ] file sha256sum check same." fi let i++ done sync && echo "" } # Check the consistency of amlogic device files chech_files_same() { i="0" max_try="5" while [[ "${i}" -le "${max_try}" ]]; do if [[ "$(sha256sum "${1}" | awk '{print $1}')" == "$(sha256sum "${2}" | awk '{print $1}')" ]]; then echo "" && break else cp -f ${1} ${2} i="$((i + 1))" fi done [[ "${i}" -gt "${max_try}" ]] && echo "God, it's different after ${max_try} copies: [ ${1} ]" } # Restore the kernel when the update fails restore_kernel() { ( cd /boot rm -rf \ config-${kernel_name} \ System.map-${kernel_name} \ initrd.img-${kernel_name} \ uInitrd-${kernel_name} \ vmlinuz-${kernel_name} \ initrd.img \ uInitrd \ zImage \ Image \ vmlinuz \ dtb* 2>/dev/null tar -xzf /tmp/boot-backup.tar.gz 2>/dev/null ) error_msg "Kernel update failed and has been reverted." } # Update the kernel update_kernel() { local cur_kernel_name=$(uname -r) local boot_fstype=$(df -T /boot | tail -n1 | awk '{print $2}') echo -e "Start unpacking the kernel..." # 01. for /boot five files # Backup the current_kernel ( cd /boot tar -czf /tmp/boot-backup.tar.gz \ config-${cur_kernel_name} \ System.map-${cur_kernel_name} \ initrd.img-${cur_kernel_name} \ uInitrd-${cur_kernel_name} \ vmlinuz-${cur_kernel_name} \ initrd.img \ uInitrd \ zImage \ Image \ vmlinuz \ dtb* 2>/dev/null rm -rf \ config-${cur_kernel_name} \ System.map-${cur_kernel_name} \ initrd.img-${cur_kernel_name} \ uInitrd-${cur_kernel_name} \ vmlinuz-${cur_kernel_name} \ initrd.img \ uInitrd \ zImage \ Image \ vmlinuz \ dtb* 2>/dev/null ) # Extract the new kernel tar -xf ${P4_PATH}/boot-${kernel_name}.tar.gz -C /boot # Check if the file exists local valid_files if [[ "${PLATFORM}" == "qemu-aarch64" ]]; then valid_files="vmlinuz-${kernel_name} initrd.img-${kernel_name} config-${kernel_name} System.map-${kernel_name}" rm -f /boot/uInitrd* else valid_files="vmlinuz-${kernel_name} uInitrd-${kernel_name} config-${kernel_name} System.map-${kernel_name}" # wxy-oect: MODEL_ID numbers r306,r307 and w[0-9]{3}, require special handling of uInitrd [[ "${MODEL_ID}" =~ ^(r306|r307|w[0-9]{3})$ ]] || rm -f /boot/initrd.img* fi for f in ${valid_files}; do [[ -f "/boot/${f}" ]] || restore_kernel; done # Check if the files are the same ( cd /boot if [[ "${PLATFORM}" == "qemu-aarch64" ]]; then ln -sf initrd.img-${kernel_name} initrd.img ln -sf vmlinuz-${kernel_name} ${MYBOOT_VMLINUZ} elif [[ "$boot_fstype" == "vfat" ]]; then cp -f uInitrd-${kernel_name} uInitrd [[ -z "$(chech_files_same uInitrd-${kernel_name} uInitrd)" ]] || restore_kernel cp -f vmlinuz-${kernel_name} ${MYBOOT_VMLINUZ} [[ -z "$(chech_files_same vmlinuz-${kernel_name} ${MYBOOT_VMLINUZ})" ]] || restore_kernel else ln -sf uInitrd-${kernel_name} uInitrd ln -sf vmlinuz-${kernel_name} ${MYBOOT_VMLINUZ} fi # wxy-oect: MODEL_ID numbers r306 and r307, require special handling of uInitrd [[ "${MODEL_ID}" =~ ^(r306|r307)$ ]] && ln -sf initrd.img-${kernel_name} uInitrd ) echo -e "(1/3) Unpacking [ boot-${kernel_name}.tar.gz ] done." if [[ "${PLATFORM}" == "qemu-aarch64" ]]; then echo -e "(2/3) skip unpack dtb files." else # 02. for /boot/dtb/${PLATFORM}/* if [[ "${boot_fstype}" == "vfat" ]]; then (cd /boot && mkdir -p dtb/${PLATFORM}) else (cd /boot && mkdir -p dtb-${kernel_name}/${PLATFORM} && ln -sf dtb-${kernel_name} dtb) fi tar -xf ${P4_PATH}/dtb-${PLATFORM}-${kernel_name}.tar.gz -C /boot/dtb/${PLATFORM} [[ "$(ls /boot/dtb/${PLATFORM} -l 2>/dev/null | grep "^-" | wc -l)" -ge "1" ]] || error_msg "/boot/dtb/${PLATFORM} file is missing." echo -e "(2/3) Unpacking [ dtb-${PLATFORM}-${kernel_name}.tar.gz ] done." fi # 03. for /lib/modules/* rm -rf /lib/modules/* tar -xf ${P4_PATH}/modules-${kernel_name}.tar.gz -C /lib/modules ( cd /lib/modules/${kernel_name} rm -f *.ko find ./ -type f -name '*.ko' -exec ln -s {} ./ \; sync && sleep 3 x=$(ls *.ko -l 2>/dev/null | grep "^l" | wc -l) [[ "${x}" -eq "0" ]] && error_msg "Error *.ko Files not found." ) echo -e "(3/3) Unpacking [ modules-${kernel_name}.tar.gz ] done." # Delete kernel tmpfiles rm -f ${P4_PATH}/*-${kernel_name}.tar.gz rm -f ${P4_PATH}/sha256sums sync && echo "" } # Update the uboot update_uboot() { # Only amlogic SoCs needs to be updated if [[ "${PLATFORM}" == "amlogic" ]]; then # Copy u-boot.ext and u-boot.emmc if [[ "${K510}" -eq "1" && -n "${UBOOT_OVERLOAD}" && -f "/boot/${UBOOT_OVERLOAD}" ]]; then [[ ! -f "/boot/u-boot.ext" ]] && cp -f "/boot/${UBOOT_OVERLOAD}" /boot/u-boot.ext && chmod +x /boot/u-boot.ext [[ ! -f "/boot/u-boot.emmc" ]] && cp -f "/boot/u-boot.ext" /boot/u-boot.emmc && chmod +x /boot/u-boot.emmc echo -e "The ${UBOOT_OVERLOAD} file copy is complete." elif [[ "${K510}" -eq "0" ]]; then rm -f "/boot/u-boot.ext" "/boot/u-boot.emmc" fi # Write Mainline bootloader if [[ -f "${MAINLINE_UBOOT}" && "${AUTO_MAINLINE_UBOOT}" == "yes" ]]; then echo -e "Write Mainline bootloader: [ ${MAINLINE_UBOOT} ] to [ /dev/${EMMC_NAME} ]" dd if=${MAINLINE_UBOOT} of=/dev/${EMMC_NAME} bs=1 count=442 conv=fsync dd if=${MAINLINE_UBOOT} of=/dev/${EMMC_NAME} bs=512 skip=1 seek=1 conv=fsync echo -e "The MAINLINE_UBOOT file write is complete." fi fi # Update release file sed -i "s|^KERNEL_VERSION=.*|KERNEL_VERSION='${kernel_name}'|g" ${release_file} 2>/dev/null # Update banner file sed -i "s| Kernel.*| Kernel: ${kernel_name}|g" /etc/banner 2>/dev/null sync && echo "" } # Rescue the kernel sos_kernel() { echo -e "Start rescuing kernel..." # Supports specifying disks, such as: [ openwrt-kernel -s mmcblk1 ] box_disk="${2}" if [[ -n "${box_disk}" ]]; then # Format the disk names box_disk="${box_disk//\/dev\//}" # Check if the disk exists [[ -b "/dev/${box_disk}" ]] || error_msg "The specified disk [ ${box_disk} ] does not exist." # Check if the disk is the same as the current system disk [[ "${box_disk}" == "${EMMC_NAME}" ]] && error_msg "The specified disk [ ${box_disk} ] is the same as the current system disk [ ${EMMC_NAME} ]." echo -e "The device name of the specified disk: [ ${box_disk} ]" else # Find emmc disk, first find emmc containing boot0 partition box_disk="$(lsblk -l -o NAME | grep -oE '(mmcblk[0-9]?|nvme[0-9]?n[0-9]?|[hsv]d[a-z])' | grep -vE ^${EMMC_NAME} | sort -u | head -n 1)" # Check if disk exists [[ -z "${box_disk}" ]] && error_msg "Unable to locate the storage requiring rescue." echo -e "The device name of the target disk: [ ${box_disk} ]" fi rescue_disk="/dev/${box_disk}" echo -e "The current OpenWrt is running on [ /dev/${EMMC_NAME} ], and the target disk for restoration is [ ${rescue_disk} ]." # Create a temporary mount directory umount ${P4_PATH}/bootfs 2>/dev/null umount ${P4_PATH}/rootfs 2>/dev/null rm -rf ${P4_PATH}/bootfs ${P4_PATH}/rootfs 2>/dev/null mkdir -p ${P4_PATH}/{bootfs/,rootfs/} && sync [[ "${?}" -ne "0" ]] && error_msg "Failed to create temporary mount directory [ ${P4_PATH} ]" # Mount target bootfs partition [[ "${box_disk}" =~ ^([hsv]d[a-z]) ]] && rescue_disk_partition_name="" || rescue_disk_partition_name="p" mount ${rescue_disk}${rescue_disk_partition_name}1 ${P4_PATH}/bootfs [[ "${?}" -ne "0" ]] && error_msg "mount ${rescue_disk}${PARTITION_NAME}1 failed!" echo -e "The [ ${rescue_disk}${rescue_disk_partition_name}1 ] partition is mounted on [ ${P4_PATH}/bootfs ]." # Search uuid file if [[ -f "${P4_PATH}/bootfs/uEnv.txt" ]]; then search_file="uEnv.txt" elif [[ -f "${P4_PATH}/bootfs/armbianEnv.txt" ]]; then search_file="armbianEnv.txt" elif [[ -f "${P4_PATH}/bootfs/extlinux/extlinux.conf" ]]; then search_file="extlinux/extlinux.conf" else error_msg "The [ uEnv.txt, armbianEnv.txt, extlinux/extlinux.conf ] file does not exist, stop rescuing." fi # Get the target partition uuid and rootfs target_parttion_uuid="$(grep '=UUID=' ${P4_PATH}/bootfs/${search_file} | sed -n 's/.*=UUID=\([a-f0-9-]*\).*/\1/p')" [[ -z "${target_parttion_uuid}" ]] && error_msg "The [ ${search_file} ] file does not contain the UUID value." target_rootfs="$(blkid | grep ${target_parttion_uuid} | awk -F':' '{print $1;}')" [[ -z "${target_rootfs}" ]] && error_msg "The [ ${target_parttion_uuid} ] UUID does not exist in the system." # Mount target rootfs partition mount ${target_rootfs} ${P4_PATH}/rootfs [[ "${?}" -ne "0" ]] && error_msg "mount ${rescue_disk}${PARTITION_NAME}2 failed!" echo -e "The [ ${target_rootfs} ] partition is mounted on [ ${P4_PATH}/rootfs ]." # Identify the current kernel files kernel_signature="$(uname -r)" # 01. For /boot files [[ -d "${P4_PATH}/bootfs" ]] && { cd ${P4_PATH}/bootfs rm -rf config-* initrd.img-* System.map-* vmlinuz-* uInitrd* *Image dtb* u-boot.ext u-boot.emmc [[ -f "/boot/u-boot.ext" ]] && { cp -f /boot/u-boot.ext . cp -f /boot/u-boot.ext u-boot.emmc chmod +x u-boot.ext u-boot.emmc } cp -rf /boot/{*-${kernel_signature},uInitrd,*Image,dtb} . [[ "${?}" -ne "0" ]] && error_msg "(1/2) [ boot ] kernel files rescue failed." echo -e "(1/2) [ boot ] kernel files rescue succeeded." [[ -f "/boot/emmc_autoscript.cmd" ]] && cp -f /boot/emmc_autoscript.cmd . [[ -f "/boot/emmc_autoscript" ]] && cp -f /boot/emmc_autoscript . [[ -f "/boot/s905_autoscript.cmd" ]] && cp -f /boot/s905_autoscript.cmd . [[ -f "/boot/s905_autoscript" ]] && cp -f /boot/s905_autoscript . } || error_msg "(1/2) The [ ${P4_PATH}/bootfs ] folder does not exist, stop rescuing." # 02. For /lib/modules/${kernel_signature} [[ -d "${P4_PATH}/rootfs/lib/modules" ]] && { cd ${P4_PATH}/rootfs/lib/modules rm -rf * cp -rf /lib/modules/${kernel_signature} . [[ "${?}" -ne "0" ]] && error_msg "(2/2) [ modules ] kernel files rescue failed." echo -e "(2/2) [ modules ] kernel files rescue succeeded." } || error_msg "(2/2) The [ ${P4_PATH}/rootfs/lib/modules ] folder does not exist, stop rescuing." # Unmount the emmc partition cd ${P4_PATH} umount -f ${P4_PATH}/bootfs [[ "${?}" -ne "0" ]] && error_msg "Failed to umount [ ${P4_PATH}/bootfs ]" umount -f ${P4_PATH}/rootfs [[ "${?}" -ne "0" ]] && error_msg "Failed to umount [ ${P4_PATH}/rootfs ]" # Remove the temporary mount directory rm -rf ${P4_PATH}/bootfs ${P4_PATH}/rootfs sync && echo "" } echo -e "Welcome to the OpenWrt Kernel Management Tool." # Operation environment check [[ -x "/usr/sbin/openwrt-kernel" ]] || error_msg "Please grant execution permission: chmod +x /usr/sbin/openwrt-kernel" # Execute relevant functions based on the options if [[ "${@}" =~ ^-s(\s)* ]]; then # Initialize all variables init_var "${@}" # Start rescuing the kernel sos_kernel "${@}" # Kernel restore successful sync && sleep 3 echo -e "Kernel rescue successful, please remove the disk and restart the OpenWrt system." exit 0 else # Initialize all variables init_var "${@}" # Check kernel files list check_kernel # Update the kernel update_kernel # Update the uboot update_uboot # Kernel update successful sync && sleep 3 echo "Successfully updated, automatic restarting..." reboot exit 0 fi ================================================ FILE: luci-app-amlogic/root/usr/sbin/openwrt-update-allwinner ================================================ #!/bin/bash #====================================================================================== # Function: Update openwrt to emmc for Allwinner STB # Copyright (C) 2020-- https://github.com/unifreq/openwrt_packit # Copyright (C) 2021-- https://github.com/ophub/luci-app-amlogic #====================================================================================== # # The script supports directly setting parameters for update, skipping interactive selection # openwrt-update-allwinner ${OPENWRT_FILE} ${AUTO_MAINLINE_UBOOT} ${RESTORE_CONFIG} # E.g: openwrt-update-allwinner openwrt_s905d.img.gz yes restore # E.g: openwrt-update-allwinner openwrt_s905d.img.gz no no-restore # You can also execute the script directly, and interactively select related functions # E.g: openwrt-update-allwinner # #====================================================================================== # Encountered a serious error, abort the script execution error_msg() { echo -e "[ERROR] ${1}" exit 1 } # Get the partition name of the /boot file system get_boot_partition_name() { local paths="/boot" local partition_name partition_name=$(df "${paths}" | awk 'NR==2 {print $1}' | awk -F '/' '{print $3}') echo "${partition_name}" } # Get the partition name of the root file system get_root_partition_name() { local paths=("/" "/overlay" "/rom") local partition_name for path in "${paths[@]}"; do partition_name=$(df "${path}" | awk 'NR==2 {print $1}' | awk -F '/' '{print $3}') [[ -n "${partition_name}" ]] && break done echo "${partition_name}" } # Get the partition message of the root file system get_root_partition_msg() { local paths=("/" "/overlay" "/rom") local partition_name for path in "${paths[@]}"; do partition_msg=$(lsblk -l -o NAME,PATH,TYPE,UUID,MOUNTPOINT | awk '$3~/^part$/ && $5 ~ "^" "'"${path}"'" "$" {print $0}') [[ -n "${partition_msg}" ]] && break done [[ -z "${partition_msg}" ]] && error_msg "Cannot find the root partition message!" echo "${partition_msg}" } # Receive one-key command related parameters IMG_NAME=${1} AUTO_MAINLINE_UBOOT=${2} BACKUP_RESTORE_CONFIG=${3} # Current FDT file if [[ -f "/boot/uEnv.txt" ]]; then source /boot/uEnv.txt 2>/dev/null MYDTB_FDTFILE=$(basename $FDT) elif [[ -f "/boot/armbianEnv.txt" ]]; then source /boot/armbianEnv.txt 2>/dev/null MYDTB_FDTFILE="$(basename $fdtfile)" elif [[ -f "/etc/flippy-openwrt-release" ]]; then source /etc/flippy-openwrt-release 2>/dev/null MYDTB_FDTFILE="${FDTFILE}" fi [[ -z "${MYDTB_FDTFILE}" ]] && error_msg "Invalid FDTFILE: [ ${MYDTB_FDTFILE} ]" # Current device model MYDEVICE_NAME=$(cat /proc/device-tree/model | tr -d '\000') if [[ -z "${MYDEVICE_NAME}" ]]; then error_msg "The device name is empty and cannot be recognized." elif [[ "$(echo ${MYDEVICE_NAME} | grep "V-Plus Cloud")" == "" ]]; then error_msg "[ ${MYDEVICE_NAME} ] is not [ V-Plus Cloud ] device, please select the correct script." else echo -e "Current device: ${MYDEVICE_NAME} [ vplus ]" sleep 3 fi # Check and repair partition mount points [[ -z "$(get_boot_partition_name)" || -z "$(get_root_partition_name)" ]] && { echo -e "Partition mount point error, start repairing..." openwrt-backup -g } # Find the partition where root is located ROOT_PTNAME="$(get_root_partition_name)" # Find the disk where the partition is located, only supports mmcblk?p? sd?? hd?? vd?? and other formats case ${ROOT_PTNAME} in mmcblk?p[1-4]) EMMC_NAME=$(echo ${ROOT_PTNAME} | awk '{print substr($1, 1, length($1)-2)}') PARTITION_NAME="p" LB_PRE="EMMC_" ;; [hsv]d[a-z][1-4]) EMMC_NAME=$(echo ${ROOT_PTNAME} | awk '{print substr($1, 1, length($1)-1)}') PARTITION_NAME="" LB_PRE="" ;; *) error_msg "Unable to recognize the disk type of ${ROOT_PTNAME}!" ;; esac cd /mnt/${EMMC_NAME}${PARTITION_NAME}4/ mv -f /tmp/upload/* . 2>/dev/null && sync if [[ "${IMG_NAME}" == *.img ]]; then echo -e "Update using [ ${IMG_NAME} ] file. Please wait a moment ..." elif [ $(ls *.img -l 2>/dev/null | grep "^-" | wc -l) -ge 1 ]; then IMG_NAME=$(ls *.img | head -n 1) echo -e "Update using [ ${IMG_NAME} ] ] file. Please wait a moment ..." elif [ $(ls *.img.xz -l 2>/dev/null | grep "^-" | wc -l) -ge 1 ]; then xz_file=$(ls *.img.xz | head -n 1) echo -e "Update using [ ${xz_file} ] file. Please wait a moment ..." xz -d ${xz_file} 2>/dev/null IMG_NAME=$(ls *.img | head -n 1) elif [ $(ls *.img.gz -l 2>/dev/null | grep "^-" | wc -l) -ge 1 ]; then gz_file=$(ls *.img.gz | head -n 1) echo -e "Update using [ ${gz_file} ] file. Please wait a moment ..." gzip -df ${gz_file} 2>/dev/null IMG_NAME=$(ls *.img | head -n 1) elif [ $(ls *.7z -l 2>/dev/null | grep "^-" | wc -l) -ge 1 ]; then gz_file=$(ls *.7z | head -n 1) echo -e "Update using [ ${gz_file} ] file. Please wait a moment ..." bsdtar -xmf ${gz_file} 2>/dev/null [ $? -eq 0 ] || 7z x ${gz_file} -aoa -y 2>/dev/null IMG_NAME=$(ls *.img | head -n 1) elif [ $(ls *.zip -l 2>/dev/null | grep "^-" | wc -l) -ge 1 ]; then zip_file=$(ls *.zip | head -n 1) echo -e "Update using [ ${zip_file} ] file. Please wait a moment ..." unzip -o ${zip_file} 2>/dev/null IMG_NAME=$(ls *.img | head -n 1) else echo -e "Please upload or specify the update openwrt firmware file." echo -e "Upload method: system menu → Amlogic Service → Manually Upload Update" echo -e "Specify method: Place the openwrt firmware file in [ /mnt/${EMMC_NAME}${PARTITION_NAME}4/ ]" echo -e "The supported file suffixes are: *.img, *.img.xz, *.img.gz, *.7z, *.zip" echo -e "After upload the openwrt firmware file, run again." exit 1 fi sync # check file if [ ! -f "${IMG_NAME}" ]; then error_msg "No update file found." else echo "Start update from [ ${IMG_NAME} ]" fi # find boot partition BOOT_PART_MSG=$(lsblk -l -o NAME,PATH,TYPE,UUID,MOUNTPOINT | awk '$3~/^part$/ && $5 ~ /^\/boot$/ {print $0}') if [ "${BOOT_PART_MSG}" == "" ]; then error_msg "The boot partition is not exists or not mounted, so it cannot be upgraded with this script!" fi BR_FLAG=1 echo -ne "Whether to backup and restore the current config files? y/n [y]\b\b" if [[ ${BACKUP_RESTORE_CONFIG} == "restore" ]]; then yn="y" elif [[ ${BACKUP_RESTORE_CONFIG} == "no-restore" ]]; then yn="n" else read yn fi case $yn in n* | N*) BR_FLAG=0 ;; esac BOOT_NAME=$(echo ${BOOT_PART_MSG} | awk '{print $1}') BOOT_PATH=$(echo ${BOOT_PART_MSG} | awk '{print $2}') BOOT_UUID=$(echo ${BOOT_PART_MSG} | awk '{print $4}') # find root partition ROOT_PART_MSG="$(get_root_partition_msg)" ROOT_NAME=$(echo ${ROOT_PART_MSG} | awk '{print $1}') ROOT_PATH=$(echo ${ROOT_PART_MSG} | awk '{print $2}') ROOT_UUID=$(echo ${ROOT_PART_MSG} | awk '{print $4}') case ${ROOT_NAME} in ${EMMC_NAME}${PARTITION_NAME}2) NEW_ROOT_NAME="${EMMC_NAME}${PARTITION_NAME}3" NEW_ROOT_LABEL="${LB_PRE}ROOTFS2" ;; ${EMMC_NAME}${PARTITION_NAME}3) NEW_ROOT_NAME="${EMMC_NAME}${PARTITION_NAME}2" NEW_ROOT_LABEL="${LB_PRE}ROOTFS1" ;; *) error_msg "The root partition location is invalid, so it cannot be upgraded with this script!" ;; esac # find new root partition NEW_ROOT_PART_MSG=$(lsblk -l -o NAME,PATH,TYPE,UUID,MOUNTPOINT | grep "${NEW_ROOT_NAME}" | awk '$3 ~ /^part$/ && $5 !~ /^\/$/ && $5 !~ /^\/boot$/ {print $0}') if [ "${NEW_ROOT_PART_MSG}" == "" ]; then error_msg "The new root partition is not exists, so it cannot be upgraded with this script!" fi NEW_ROOT_NAME=$(echo $NEW_ROOT_PART_MSG | awk '{print $1}') NEW_ROOT_PATH=$(echo $NEW_ROOT_PART_MSG | awk '{print $2}') NEW_ROOT_UUID=$(echo $NEW_ROOT_PART_MSG | awk '{print $4}') NEW_ROOT_MP=$(echo $NEW_ROOT_PART_MSG | awk '{print $5}') # losetup losetup -f -P $IMG_NAME if [ $? -eq 0 ]; then LOOP_DEV=$(losetup | grep "$IMG_NAME" | awk '{print $1}') if [ "$LOOP_DEV" == "" ]; then error_msg "loop device not found!" fi else error_msg "losetup $IMG_FILE failed!" fi # fix loopdev issue in kernel 5.19 function fix_loopdev() { local parentdev=${1##*/} if [ ! -d /sys/block/${parentdev} ]; then return fi subdevs=$(lsblk -l -o NAME | grep -E "^${parentdev}.+\$") for subdev in $subdevs; do if [ ! -d /sys/block/${parentdev}/${subdev} ]; then return elif [ -b /dev/${sub_dev} ]; then continue fi source /sys/block/${parentdev}/${subdev}/uevent mknod /dev/${subdev} b ${MAJOR} ${MINOR} unset MAJOR MINOR DEVNAME DEVTYPE DISKSEQ PARTN PARTNAME done } fix_loopdev ${LOOP_DEV} WAIT=3 echo -n "The loopdev is $LOOP_DEV, wait ${WAIT} seconds " while [ $WAIT -ge 1 ]; do echo -n "." sleep 1 WAIT=$((WAIT - 1)) done echo # umount loop devices (openwrt will auto mount some partition) MOUNTED_DEVS=$(lsblk -l -o NAME,PATH,MOUNTPOINT | grep "$LOOP_DEV" | awk '$3 !~ /^$/ {print $2}') for dev in $MOUNTED_DEVS; do while :; do echo -n "umount $dev ... " umount -f $dev sleep 1 mnt=$(lsblk -l -o NAME,PATH,MOUNTPOINT | grep "$dev" | awk '$3 !~ /^$/ {print $2}') if [ "$mnt" == "" ]; then echo "ok" break else echo "try again ..." fi done done # mount src part WORK_DIR=$PWD P1=${WORK_DIR}/boot P2=${WORK_DIR}/root mkdir -p $P1 $P2 echo -n "mount ${LOOP_DEV}p1 -> ${P1} ... " mount -t vfat -o ro ${LOOP_DEV}p1 ${P1} if [ $? -ne 0 ]; then echo "mount failed" losetup -D exit 1 else echo "ok" fi echo -n "mount ${LOOP_DEV}p2 -> ${P2} ... " ZSTD_LEVEL=6 mount -t btrfs -o ro,compress=zstd:${ZSTD_LEVEL} ${LOOP_DEV}p2 ${P2} if [ $? -ne 0 ]; then echo "mount failed" umount -f ${P1} losetup -D exit 1 else echo "ok" fi # Prepare the dockerman config file if [ -f ${P2}/etc/init.d/dockerman ] && [ -f ${P2}/etc/config/dockerd ]; then flg=0 # get current docker data root data_root=$(uci get dockerd.globals.data_root 2>/dev/null) if [ "$data_root" == "" ]; then flg=1 # get current config from /etc/docker/daemon.json if [ -f "/etc/docker/daemon.json" ] && [ -x "/usr/bin/jq" ]; then data_root=$(jq -r '."data-root"' /etc/docker/daemon.json) bip=$(jq -r '."bip"' /etc/docker/daemon.json) [ "$bip" == "null" ] && bip="172.31.0.1/24" log_level=$(jq -r '."log-level"' /etc/docker/daemon.json) [ "$log_level" == "null" ] && log_level="warn" _iptables=$(jq -r '."iptables"' /etc/docker/daemon.json) [ "$_iptables" == "null" ] && _iptables="true" registry_mirrors=$(jq -r '."registry-mirrors"[]' /etc/docker/daemon.json 2>/dev/null) fi fi if [ "$data_root" == "" ]; then data_root="/opt/docker/" # the default data root fi if ! uci get dockerd.globals >/dev/null 2>&1; then uci set dockerd.globals='globals' uci commit fi # delete alter config , use inner config if uci get dockerd.globals.alt_config_file >/dev/null 2>&1; then uci delete dockerd.globals.alt_config_file uci commit fi if [ $flg -eq 1 ]; then uci set dockerd.globals.data_root=$data_root [ "$bip" != "" ] && uci set dockerd.globals.bip=$bip [ "$log_level" != "" ] && uci set dockerd.globals.log_level=$log_level [ "$_iptables" != "" ] && uci set dockerd.globals.iptables=$_iptables if [ "$registry_mirrors" != "" ]; then for reg in $registry_mirrors; do uci add_list dockerd.globals.registry_mirrors=$reg done fi uci set dockerd.globals.auto_start='1' uci commit fi fi #format NEW_ROOT echo "umount ${NEW_ROOT_MP}" umount -f "${NEW_ROOT_MP}" if [ $? -ne 0 ]; then echo "umount failed, please reboot and try again!" umount -f ${P1} umount -f ${P2} losetup -D exit 1 fi echo "format ${NEW_ROOT_PATH}" NEW_ROOT_UUID=$(uuidgen) mkfs.btrfs -f -U ${NEW_ROOT_UUID} -L ${NEW_ROOT_LABEL} ${NEW_ROOT_PATH} if [ $? -ne 0 ]; then echo "format ${NEW_ROOT_PATH} failed!" umount -f ${P1} umount -f ${P2} losetup -D exit 1 fi echo "mount ${NEW_ROOT_PATH} to ${NEW_ROOT_MP}" mount -t btrfs -o compress=zstd:${ZSTD_LEVEL} ${NEW_ROOT_PATH} ${NEW_ROOT_MP} if [ $? -ne 0 ]; then echo "mount ${NEW_ROOT_PATH} to ${NEW_ROOT_MP} failed!" umount -f ${P1} umount -f ${P2} losetup -D exit 1 fi # begin copy rootfs cd ${NEW_ROOT_MP} echo "Start copy data from ${P2} to ${NEW_ROOT_MP} ..." ENTRYS=$(ls) for entry in $ENTRYS; do if [ "$entry" == "lost+found" ]; then continue fi echo -n "remove old $entry ... " rm -rf $entry if [ $? -eq 0 ]; then echo "ok" else error_msg "failed" fi done echo echo "create etc subvolume ..." btrfs subvolume create etc echo -n "make dirs ... " mkdir -p .snapshots .reserved bin boot dev lib opt mnt overlay proc rom root run sbin sys tmp usr www ln -sf lib/ lib64 ln -sf tmp/ var echo "done" echo COPY_SRC="root etc bin sbin lib opt usr www" echo "copy data ... " for src in $COPY_SRC; do echo -n "copy $src ... " (cd ${P2} && tar cf - $src) | tar xf - sync echo "done" done SHFS="/mnt/${EMMC_NAME}${PARTITION_NAME}4" echo "Modify config files ... " rm -f "./etc/rc.local.orig" "./etc/first_run.sh" "./etc/part_size" rm -f ./etc/bench.log if [ -x ./usr/sbin/balethirq.pl ]; then if grep "balethirq.pl" "./etc/rc.local"; then echo "balance irq is enabled" else echo "enable balance irq" sed -e "/exit/i\/usr/sbin/balethirq.pl" -i ./etc/rc.local fi fi cat >./etc/fstab <./etc/config/fstab </dev/null; then if find ../../lib/modules -name 'shortcut-fe-cm.ko'; then ln -sf ../init.d/shortcut-fe S99shortcut-fe fi fi ) # move /etc/config/balance_irq to /etc/balance_irq [ -f "./etc/config/balance_irq" ] && mv ./etc/config/balance_irq ./etc/ sync echo "create the first etc snapshot -> .snapshots/etc-000" btrfs subvolume snapshot -r etc .snapshots/etc-000 [ -d ${SHFS}/docker ] || mkdir -p ${SHFS}/docker rm -rf opt/docker && ln -sf ${SHFS}/docker/ opt/docker if [ -f /mnt/${NEW_ROOT_NAME}/etc/config/AdGuardHome ]; then [ -d ${SHFS}/AdGuardHome/data ] || mkdir -p ${SHFS}/AdGuardHome/data if [ ! -L /usr/bin/AdGuardHome ]; then [ -d /usr/bin/AdGuardHome ] && cp -a /usr/bin/AdGuardHome/* ${SHFS}/AdGuardHome/ fi ln -sf ${SHFS}/AdGuardHome /mnt/${NEW_ROOT_NAME}/usr/bin/AdGuardHome fi BOOTLOADER="./lib/u-boot/u-boot-sunxi-with-spl.bin" if [ -f ${BOOTLOADER} ]; then echo "update u-boot ... " # erase from 8kb to 4mb dd if=/dev/zero of=/dev/${EMMC_NAME} bs=1024 seek=8 count=4088 conv=fsync # write u-boot dd if=${BOOTLOADER} of=/dev/${EMMC_NAME} bs=1024 seek=8 conv=fsync echo "done" fi sync echo "copy done" echo BACKUP_LIST=$(${P2}/usr/sbin/openwrt-backup -p) if [ $BR_FLAG -eq 1 ]; then echo -n "Restore your old config files ... " ( cd / eval tar czf ${NEW_ROOT_MP}/.reserved/openwrt_config.tar.gz "${BACKUP_LIST}" 2>/dev/null ) tar xzf ${NEW_ROOT_MP}/.reserved/openwrt_config.tar.gz [ -f ./etc/config/dockerman ] && sed -e "s/option wan_mode 'false'/option wan_mode 'true'/" -i ./etc/config/dockerman 2>/dev/null [ -f ./etc/config/dockerd ] && sed -e "s/option wan_mode '0'/option wan_mode '1'/" -i ./etc/config/dockerd 2>/dev/null [ -f ./etc/config/verysync ] && sed -e 's/config setting/config verysync/' -i ./etc/config/verysync # 还原 fstab cp -f .snapshots/etc-000/fstab ./etc/fstab cp -f .snapshots/etc-000/config/fstab ./etc/config/fstab # 还原 luci cp -f .snapshots/etc-000/config/luci ./etc/config/luci # 还原/etc/config/rpcd cp -f .snapshots/etc-000/config/rpcd ./etc/config/rpcd sync echo "done" echo fi rm -f ./etc/bench.log cat >>./etc/crontabs/root </dev/null; then echo "sshd:x:22:sshd" >>./etc/group fi if ! grep "sshd:x:22:22:sshd:" ./etc/passwd >/dev/null; then echo "sshd:x:22:22:sshd:/var/run/sshd:/bin/false" >>./etc/passwd fi if ! grep "sshd:x:" ./etc/shadow >/dev/null; then echo "sshd:x:${ddd}:0:99999:7:::" >>./etc/shadow fi if [ $BR_FLAG -eq 1 ]; then if [ -x ./bin/bash ] && [ -f ./etc/profile.d/30-sysinfo.sh ]; then sed -e 's/\/bin\/ash/\/bin\/bash/' -i ./etc/passwd fi sync echo "done" echo fi sed -e "s/option hw_flow '1'/option hw_flow '0'/" -i ./etc/config/turboacc ( cd etc/rc.d rm -f S??shortcut-fe if grep "sfe_flow '1'" ../config/turboacc >/dev/null; then if find ../../lib/modules -name 'shortcut-fe-cm.ko'; then ln -sf ../init.d/shortcut-fe S99shortcut-fe fi fi ) sync eval tar czf .reserved/openwrt_config.tar.gz "${BACKUP_LIST}" 2>/dev/null rm -f ./etc/part_size ./etc/first_run.sh mv ./etc/rc.local ./etc/rc.local.orig cat >"./etc/rc.local" </dev/null 2>&1;then /etc/init.d/dockerd enable /etc/init.d/dockerd start fi if ! ls /etc/rc.d/S??dockerman >/dev/null 2>&1 && [ -f /etc/init.d/dockerman ];then /etc/init.d/dockerman enable /etc/init.d/dockerman start fi opkg remove --force-removal-of-dependent-packages shairport-sync-openssl mv /etc/rc.local.orig /etc/rc.local chmod 755 /etc/rc.local exec /etc/rc.local exit EOF chmod 755 ./etc/rc.local* # move /etc/config/balance_irq to /etc/balance_irq [ -f "./etc/config/balance_irq" ] && mv ./etc/config/balance_irq ./etc/ echo "create the second etc snapshot -> .snapshots/etc-001" btrfs subvolume snapshot -r etc .snapshots/etc-001 # 2021.04.01添加 # 强制锁定fstab,防止用户擅自修改挂载点 # 开启了快照功能之后,不再需要锁定fstab #chattr +ia ./etc/config/fstab cd ${WORK_DIR} echo "Start copy data from ${P1} to /boot ..." cd /boot echo -n "remove old boot files ..." rm -rf * echo "done" echo -n "copy new boot files ... " (cd ${P1} && tar cf - .) | tar xf - sync echo "done" echo echo -n "Update boot args ... " cat >uEnv.txt </dev/null } sync echo "done" echo cd $WORK_DIR umount -f ${P1} ${P2} 2>/dev/null losetup -D 2>/dev/null rmdir ${P1} ${P2} 2>/dev/null rm -f ${IMG_NAME} 2>/dev/null rm -f sha256sums 2>/dev/null sync echo "Successfully updated, automatic restarting..." sleep 3 reboot exit 0 ================================================ FILE: luci-app-amlogic/root/usr/sbin/openwrt-update-amlogic ================================================ #!/bin/bash #====================================================================================== # Function: Update openwrt to emmc for Amlogic S9xxx STB # Copyright (C) 2020-- https://github.com/unifreq/openwrt_packit # Copyright (C) 2021-- https://github.com/ophub/luci-app-amlogic #====================================================================================== # # The script supports directly setting parameters for update, skipping interactive selection # openwrt-update-amlogic ${OPENWRT_FILE} ${AUTO_MAINLINE_UBOOT} ${RESTORE_CONFIG} # E.g: openwrt-update-amlogic openwrt_s905d.img.gz yes restore # E.g: openwrt-update-amlogic openwrt_s905d.img.gz no no-restore # You can also execute the script directly, and interactively select related functions # E.g: openwrt-update-amlogic # #====================================================================================== # Encountered a serious error, abort the script execution error_msg() { echo -e "[ERROR] ${1}" exit 1 } # Get the partition name of the /boot file system get_boot_partition_name() { local paths="/boot" local partition_name partition_name=$(df "${paths}" | awk 'NR==2 {print $1}' | awk -F '/' '{print $3}') echo "${partition_name}" } # Get the partition name of the root file system get_root_partition_name() { local paths=("/" "/overlay" "/rom") local partition_name for path in "${paths[@]}"; do partition_name=$(df "${path}" | awk 'NR==2 {print $1}' | awk -F '/' '{print $3}') [[ -n "${partition_name}" ]] && break done echo "${partition_name}" } # Get the partition message of the root file system get_root_partition_msg() { local paths=("/" "/overlay" "/rom") local partition_name for path in "${paths[@]}"; do partition_msg=$(lsblk -l -o NAME,PATH,TYPE,UUID,MOUNTPOINT | awk '$3~/^part$/ && $5 ~ "^" "'"${path}"'" "$" {print $0}') [[ -n "${partition_msg}" ]] && break done [[ -z "${partition_msg}" ]] && error_msg "Cannot find the root partition message!" echo "${partition_msg}" } # Receive one-key command related parameters IMG_NAME="${1}" AUTO_MAINLINE_UBOOT="${2}" BACKUP_RESTORE_CONFIG="${3}" # Current device model MYDEVICE_NAME=$(cat /proc/device-tree/model | tr -d '\000') if [[ -z "${MYDEVICE_NAME}" ]]; then error_msg "The device name is empty and cannot be recognized." elif [[ ! -f "/etc/flippy-openwrt-release" ]]; then error_msg "The [ /etc/flippy-openwrt-release ] file is missing." else echo -e "Current device: ${MYDEVICE_NAME} [ amlogic ]" sleep 3 fi # Check and repair partition mount points [[ -z "$(get_boot_partition_name)" || -z "$(get_root_partition_name)" ]] && { echo -e "Partition mount point error, start repairing..." openwrt-backup -g } # Find the partition where root is located ROOT_PTNAME="$(get_root_partition_name)" # Find the disk where the partition is located, only supports mmcblk?p? sd?? hd?? vd?? and other formats case ${ROOT_PTNAME} in mmcblk?p[1-4]) EMMC_NAME=$(echo ${ROOT_PTNAME} | awk '{print substr($1, 1, length($1)-2)}') if lsblk -l -o NAME | grep "${EMMC_NAME}boot0" >/dev/null; then ROOT_DISK_TYPE="EMMC" else ROOT_DISK_TYPE="SD" fi PARTITION_NAME="p" LB_PRE="${ROOT_DISK_TYPE}_" ;; [hsv]d[a-z][1-4]) EMMC_NAME=$(echo ${ROOT_PTNAME} | awk '{print substr($1, 1, length($1)-1)}') ROOT_DISK_TYPE="USB" PARTITION_NAME="" LB_PRE="${ROOT_DISK_TYPE}_" ;; *) error_msg "Unable to recognize the disk type of ${ROOT_PTNAME}!" ;; esac DOCKER_ROOT="/mnt/${EMMC_NAME}${PARTITION_NAME}4/docker/" cd /mnt/${EMMC_NAME}${PARTITION_NAME}4/ mv -f /tmp/upload/* . 2>/dev/null && sync if [[ "${IMG_NAME}" == *.img ]]; then echo -e "Update using [ ${IMG_NAME} ] file. Please wait a moment ..." elif [ $(ls *.img -l 2>/dev/null | grep "^-" | wc -l) -ge 1 ]; then IMG_NAME=$(ls *.img | head -n 1) echo -e "Update using [ ${IMG_NAME} ] ] file. Please wait a moment ..." elif [ $(ls *.img.xz -l 2>/dev/null | grep "^-" | wc -l) -ge 1 ]; then xz_file=$(ls *.img.xz | head -n 1) echo -e "Update using [ ${xz_file} ] file. Please wait a moment ..." xz -d ${xz_file} 2>/dev/null IMG_NAME=$(ls *.img | head -n 1) elif [ $(ls *.img.gz -l 2>/dev/null | grep "^-" | wc -l) -ge 1 ]; then gz_file=$(ls *.img.gz | head -n 1) echo -e "Update using [ ${gz_file} ] file. Please wait a moment ..." gzip -df ${gz_file} 2>/dev/null IMG_NAME=$(ls *.img | head -n 1) elif [ $(ls *.7z -l 2>/dev/null | grep "^-" | wc -l) -ge 1 ]; then gz_file=$(ls *.7z | head -n 1) echo -e "Update using [ ${gz_file} ] file. Please wait a moment ..." bsdtar -xmf ${gz_file} 2>/dev/null [ $? -eq 0 ] || 7z x ${gz_file} -aoa -y 2>/dev/null IMG_NAME=$(ls *.img | head -n 1) elif [ $(ls *.zip -l 2>/dev/null | grep "^-" | wc -l) -ge 1 ]; then zip_file=$(ls *.zip | head -n 1) echo -e "Update using [ ${zip_file} ] file. Please wait a moment ..." unzip -o ${zip_file} 2>/dev/null IMG_NAME=$(ls *.img | head -n 1) else echo -e "Please upload or specify the update openwrt firmware file." echo -e "Upload method: system menu → Amlogic Service → Manually Upload Update" echo -e "Specify method: Place the openwrt firmware file in [ /mnt/${EMMC_NAME}${PARTITION_NAME}4/ ]" echo -e "The supported file suffixes are: *.img, *.img.xz, *.img.gz, *.7z, *.zip" echo -e "After upload the openwrt firmware file, run again." exit 1 fi sync # check file if [ ! -f "${IMG_NAME}" ]; then error_msg "No update file found." else echo "Start update from [ ${IMG_NAME} ]" fi # Check the necessary dependencies DEPENDS="lsblk uuidgen grep awk btrfs mkfs.fat mkfs.btrfs md5sum fatlabel" echo "Check the necessary dependencies..." for dep in ${DEPENDS}; do WITCH=$(busybox which ${dep}) if [ "${WITCH}" == "" ]; then error_msg "Dependent command: ${dep} does not exist, upgrade cannot be performed, only flash through U disk/TF card!" else echo "${dep} path: ${WITCH}" fi done echo "Check passed" # find boot partition BOOT_PART_MSG=$(lsblk -l -o NAME,PATH,TYPE,UUID,MOUNTPOINT | awk '$3~/^part$/ && $5 ~ /^\/boot$/ {print $0}') if [ "${BOOT_PART_MSG}" == "" ]; then error_msg "Boot The partition does not exist, so the update cannot be continued!" fi BOOT_NAME=$(echo ${BOOT_PART_MSG} | awk '{print $1}') BOOT_PATH=$(echo ${BOOT_PART_MSG} | awk '{print $2}') BOOT_UUID=$(echo ${BOOT_PART_MSG} | awk '{print $4}') BR_FLAG=1 echo -ne "Whether to backup and restore the current config files? y/n [y]\b\b" if [[ ${BACKUP_RESTORE_CONFIG} == "restore" ]]; then yn="y" elif [[ ${BACKUP_RESTORE_CONFIG} == "no-restore" ]]; then yn="n" else read yn fi case $yn in n* | N*) BR_FLAG=0 ;; esac # find root partition ROOT_PART_MSG="$(get_root_partition_msg)" ROOT_NAME=$(echo ${ROOT_PART_MSG} | awk '{print $1}') ROOT_PATH=$(echo ${ROOT_PART_MSG} | awk '{print $2}') ROOT_UUID=$(echo ${ROOT_PART_MSG} | awk '{print $4}') case ${ROOT_NAME} in ${EMMC_NAME}${PARTITION_NAME}2) NEW_ROOT_NAME="${EMMC_NAME}${PARTITION_NAME}3" NEW_ROOT_LABEL="${LB_PRE}ROOTFS2" ;; ${EMMC_NAME}${PARTITION_NAME}3) NEW_ROOT_NAME="${EMMC_NAME}${PARTITION_NAME}2" NEW_ROOT_LABEL="${LB_PRE}ROOTFS1" ;; *) error_msg "ROOTFS The partition location is incorrect, so the update cannot continue!" ;; esac echo "NEW_ROOT_NAME: [ ${NEW_ROOT_NAME} ]" # find new root partition NEW_ROOT_PART_MSG=$(lsblk -l -o NAME,PATH,TYPE,UUID,MOUNTPOINT | grep "${NEW_ROOT_NAME}" | awk '$3 ~ /^part$/ && $5 !~ /^\/$/ && $5 !~ /^\/boot$/ {print $0}') if [ "${NEW_ROOT_PART_MSG}" == "" ]; then error_msg "The new ROOTFS partition does not exist, so the update cannot continue!" fi NEW_ROOT_NAME=$(echo ${NEW_ROOT_PART_MSG} | awk '{print $1}') NEW_ROOT_PATH=$(echo ${NEW_ROOT_PART_MSG} | awk '{print $2}') NEW_ROOT_UUID=$(echo ${NEW_ROOT_PART_MSG} | awk '{print $4}') NEW_ROOT_MP=$(echo ${NEW_ROOT_PART_MSG} | awk '{print $5}') echo "NEW_ROOT_MP: [ ${NEW_ROOT_MP} ]" # backup old bootloader if [ ! -f /root/BackupOldBootloader.img ]; then echo "Backup bootloader -> [ BackupOldBootloader.img ] ... " dd if=/dev/${EMMC_NAME} of=/root/BackupOldBootloader.img bs=1M count=4 conv=fsync echo "Backup bootloader complete." echo fi # losetup losetup -f -P ${IMG_NAME} if [ ${?} -eq 0 ]; then LOOP_DEV=$(losetup | grep "${IMG_NAME}" | awk '{print $1}') if [ "${LOOP_DEV}" == "" ]; then error_msg "loop device not found!" fi else error_msg "losetup [ ${IMG_FILE} ] failed!" fi # fix loopdev issue in kernel 5.19 function fix_loopdev() { local parentdev=${1##*/} if [ ! -d /sys/block/${parentdev} ]; then return fi subdevs=$(lsblk -l -o NAME | grep -E "^${parentdev}.+\$") for subdev in ${subdevs}; do if [ ! -d /sys/block/${parentdev}/${subdev} ]; then return elif [ -b /dev/${sub_dev} ]; then continue fi source /sys/block/${parentdev}/${subdev}/uevent mknod /dev/${subdev} b ${MAJOR} ${MINOR} unset MAJOR MINOR DEVNAME DEVTYPE DISKSEQ PARTN PARTNAME done } fix_loopdev ${LOOP_DEV} WAIT=3 echo "The loopdev is [ $LOOP_DEV ], wait [ ${WAIT} ] seconds. " while [[ "${WAIT}" -ge "1" ]]; do sleep 1 WAIT=$((WAIT - 1)) done # umount loop devices (openwrt will auto mount some partition) MOUNTED_DEVS=$(lsblk -l -o NAME,PATH,MOUNTPOINT | grep "${LOOP_DEV}" | awk '$3 !~ /^$/ {print $2}') for dev in ${MOUNTED_DEVS}; do while :; do echo "umount [ ${dev} ] ... " umount -f ${dev} sleep 1 mnt=$(lsblk -l -o NAME,PATH,MOUNTPOINT | grep "${dev}" | awk '$3 !~ /^$/ {print $2}') if [ "${mnt}" == "" ]; then break else echo "Retry ..." fi done done # mount src part WORK_DIR=${PWD} P1=${WORK_DIR}/boot P2=${WORK_DIR}/root mkdir -p $P1 $P2 echo "Mount [ ${LOOP_DEV}p1 ] -> [ ${P1} ] ... " mount -t vfat -o ro ${LOOP_DEV}p1 ${P1} if [ $? -ne 0 ]; then echo "Mount p1 [ ${LOOP_DEV}p1 ] failed!" losetup -D exit 1 fi echo "Mount [ ${LOOP_DEV}p2 ] -> [ ${P2} ] ... " ZSTD_LEVEL=6 mount -t btrfs -o ro,compress=zstd:${ZSTD_LEVEL} ${LOOP_DEV}p2 ${P2} if [ $? -ne 0 ]; then echo "Mount p2 [ ${LOOP_DEV}p2 ] failed!" umount -f ${P1} losetup -D exit 1 fi # Prepare the dockerman config file if [ -f ${P2}/etc/init.d/dockerman ] && [ -f ${P2}/etc/config/dockerd ]; then flg=0 # get current docker data root data_root=$(uci get dockerd.globals.data_root 2>/dev/null) if [ "${data_root}" == "" ]; then flg=1 # get current config from /etc/docker/daemon.json if [ -f "/etc/docker/daemon.json" ] && [ -x "/usr/bin/jq" ]; then data_root=$(jq -r '."data-root"' /etc/docker/daemon.json) bip=$(jq -r '."bip"' /etc/docker/daemon.json) [ "${bip}" == "null" ] && bip="172.31.0.1/24" log_level=$(jq -r '."log-level"' /etc/docker/daemon.json) [ "${log_level}" == "null" ] && log_level="warn" _iptables=$(jq -r '."iptables"' /etc/docker/daemon.json) [ "${_iptables}" == "null" ] && _iptables="true" registry_mirrors=$(jq -r '."registry-mirrors"[]' /etc/docker/daemon.json 2>/dev/null) fi fi if [ "${data_root}" == "" ]; then data_root="/opt/docker/" # the default data root fi if ! uci get dockerd.globals >/dev/null 2>&1; then uci set dockerd.globals='globals' uci commit fi # delete alter config , use inner config if uci get dockerd.globals.alt_config_file >/dev/null 2>&1; then uci delete dockerd.globals.alt_config_file uci commit fi if [ ${flg} -eq 1 ]; then uci set dockerd.globals.data_root=${data_root} [ "${bip}" != "" ] && uci set dockerd.globals.bip=${bip} [ "${log_level}" != "" ] && uci set dockerd.globals.log_level=${log_level} [ "${_iptables}" != "" ] && uci set dockerd.globals.iptables=${_iptables} if [ "${registry_mirrors}" != "" ]; then for reg in ${registry_mirrors}; do uci add_list dockerd.globals.registry_mirrors=${reg} done fi uci set dockerd.globals.auto_start='1' uci commit fi fi #update version prompt source /boot/uEnv.txt 2>/dev/null CUR_FDTFILE=${FDT} echo -e "FDT Value [ ${CUR_FDTFILE} ]" cp /boot/uEnv.txt /tmp/uEnv.txt && sync K510="1" [[ "$(hexdump -n 15 -x "${P1}/zImage" 2>/dev/null | head -n 1 | awk '{print $7}')" == "0108" ]] && K510="0" echo -e "K510 [ ${K510} ]" # flippy-openwrt-release info UBOOT_OVERLOAD="" MAINLINE_UBOOT="" ANDROID_UBOOT="" env_openwrt_file="" if [ -f "${P2}/etc/flippy-openwrt-release" ]; then env_openwrt_file="${P2}/etc/flippy-openwrt-release" elif [ -f "/etc/flippy-openwrt-release" ]; then env_openwrt_file="/etc/flippy-openwrt-release" else env_openwrt_file="" fi if [ -n "${env_openwrt_file}" ]; then source "${env_openwrt_file}" 2>/dev/null # Update the parameters used UBOOT_OVERLOAD=${UBOOT_OVERLOAD} MAINLINE_UBOOT=${MAINLINE_UBOOT} ANDROID_UBOOT=${ANDROID_UBOOT} # Unused parameters FDTFILE=${FDTFILE} U_BOOT_EXT=${U_BOOT_EXT} KERNEL_VERSION=${KERNEL_VERSION} SOC=${SOC} fi #format NEW_ROOT echo "umount [ ${NEW_ROOT_MP} ]" umount -f "${NEW_ROOT_MP}" if [[ "${?}" -ne "0" ]]; then echo "Umount [ ${NEW_ROOT_MP} ] failed, Please restart and try again!" umount -f ${P1} umount -f ${P2} losetup -D exit 1 fi # check and fix partition function check_and_fix_partition() { local target_dev_name=${1} # mmcblk2 local target_pt_name=${2} # p2 local target_pt_idx=${3} # 2 local safe_pt_begin_mb=${4} # 800 local safe_pt_begin_byte=$((${safe_pt_begin_mb} * 1024 * 1024)) local cur_pt_begin_sector=$(fdisk -l /dev/${target_dev_name} | grep ${target_dev_name}${target_pt_name} | awk '{printf $2}') local cur_pt_begin_mb=$((${cur_pt_begin_sector} * 512 / 1024 / 1024)) if [ ${cur_pt_begin_mb} -ge ${safe_pt_begin_mb} ]; then # check pass return fi local cur_pt_end_sector=$(fdisk -l /dev/${target_dev_name} | grep ${target_dev_name}${target_pt_name} | awk '{printf $3}') local cur_pt_end_byte=$(((${cur_pt_end_sector} + 1) * 512 - 1)) echo "Unsafe partition found, repairing ... " parted /dev/${target_dev_name} rm ${target_pt_idx} || ( error_msg "rm partion ${target_pt_idx} failed" ) parted /dev/${target_dev_name} mkpart primary btrfs "${safe_pt_begin_byte}b" "${cur_pt_end_byte}b" || ( error_msg "create new partion ${target_pt_idx} failed" ) echo "Partition repaired" } # check if need fix partition if [ "${NEW_ROOT_NAME}" == "mmcblk2p2" ]; then if [ "${MYDEVICE_NAME}" == "Phicomm N1" ] || [ "${MYDEVICE_NAME}" == "Octopus Planet" ]; then # 最新研究结果: # Phicomm N1当采用官方 "天天链" 固件底包时, # 796MB开始的 12 字节在每次重启后会被 bootloader 覆写, # 因此把安全位置设定在800MB之后 # The latest research results: # When Phicomm N1 uses the official "tian tian lian" firmware bottom package, # the 12 bytes starting from 796MB will be overwritten by bootloader after each reboot, # so the safe location is set after 800MB SAFE_PT_BEGIN_MB=800 check_and_fix_partition "${EMMC_NAME}" "p2" 2 ${SAFE_PT_BEGIN_MB} fi fi echo "Format [ ${NEW_ROOT_PATH} ]" NEW_ROOT_UUID=$(uuidgen) mkfs.btrfs -f -U ${NEW_ROOT_UUID} -L ${NEW_ROOT_LABEL} -m single ${NEW_ROOT_PATH} if [ $? -ne 0 ]; then echo "Format [ ${NEW_ROOT_PATH} ] failed!" umount -f ${P1} umount -f ${P2} losetup -D exit 1 fi echo "Mount [ ${NEW_ROOT_PATH} ] -> [ ${NEW_ROOT_MP} ]" mount -t btrfs -o compress=zstd:${ZSTD_LEVEL} ${NEW_ROOT_PATH} ${NEW_ROOT_MP} if [ $? -ne 0 ]; then echo "Mount [ ${NEW_ROOT_PATH} ] -> [ ${NEW_ROOT_MP} ] failed!" umount -f ${P1} umount -f ${P2} losetup -D exit 1 fi # begin copy rootfs cd ${NEW_ROOT_MP} echo "Start copying data, From [ ${P2} ] TO [ ${NEW_ROOT_MP} ] ..." ENTRYS=$(ls) for entry in ${ENTRYS}; do if [[ "${entry}" == "lost+found" ]]; then continue fi echo "Remove old [ ${entry} ] ... " rm -rf ${entry} if [[ "${?}" -ne "0" ]]; then error_msg "failed." fi done echo "Create folder ... " btrfs subvolume create etc mkdir -p .snapshots .reserved bin boot dev lib opt mnt overlay proc rom root run sbin sys tmp usr www ln -sf lib/ lib64 ln -sf tmp/ var sync COPY_SRC="root etc bin sbin lib opt usr www" echo "Copy data begin ... " for src in ${COPY_SRC}; do echo "Copy [ ${src} ] ... " (cd ${P2} && tar cf - ${src}) | tar xf - sync done # if not backup, then force rewrite the etc/docker/daemon.json if [ "${BR_FLAG}" -eq 0 ]; then cat >./etc/docker/daemon.json <./etc/fstab <./etc/config/fstab </dev/null; then if find ../../lib/modules -name 'shortcut-fe-cm.ko'; then ln -sf ../init.d/shortcut-fe S99shortcut-fe fi fi ) # move /etc/config/balance_irq to /etc/balance_irq [ -f "./etc/config/balance_irq" ] && mv ./etc/config/balance_irq ./etc/ sync echo "Create initial etc snapshot -> .snapshots/etc-000" btrfs subvolume snapshot -r etc .snapshots/etc-000 sync [ -d /mnt/${EMMC_NAME}${PARTITION_NAME}4/docker ] || mkdir -p /mnt/${EMMC_NAME}${PARTITION_NAME}4/docker rm -rf opt/docker && ln -sf /mnt/${EMMC_NAME}${PARTITION_NAME}4/docker/ opt/docker if [ -f /mnt/${NEW_ROOT_NAME}/etc/config/AdGuardHome ]; then [ -d /mnt/${EMMC_NAME}${PARTITION_NAME}4/AdGuardHome/data ] || mkdir -p /mnt/${EMMC_NAME}${PARTITION_NAME}4/AdGuardHome/data if [ ! -L /usr/bin/AdGuardHome ]; then [ -d /usr/bin/AdGuardHome ] && cp -a /usr/bin/AdGuardHome/* /mnt/${EMMC_NAME}${PARTITION_NAME}4/AdGuardHome/ fi ln -sf /mnt/${EMMC_NAME}${PARTITION_NAME}4/AdGuardHome /mnt/${NEW_ROOT_NAME}/usr/bin/AdGuardHome fi #rm -f /mnt/${NEW_ROOT_NAME}/usr/sbin/openwrt-install-amlogic #rm -f /mnt/${NEW_ROOT_NAME}/usr/sbin/openwrt-update-amlogic rm -f /mnt/${NEW_ROOT_NAME}/root/install-to-emmc.sh sync echo "Copy data complete ..." BACKUP_LIST=$(${P2}/usr/sbin/openwrt-backup -p) if [[ "${BR_FLAG}" -eq "1" && -n "${BACKUP_LIST}" ]]; then echo -n "Start restoring configuration files ... " ( cd / eval tar czf ${NEW_ROOT_MP}/.reserved/openwrt_config.tar.gz "${BACKUP_LIST}" 2>/dev/null ) tar xzf ${NEW_ROOT_MP}/.reserved/openwrt_config.tar.gz [ -f ./etc/config/dockerman ] && sed -e "s/option wan_mode 'false'/option wan_mode 'true'/" -i ./etc/config/dockerman 2>/dev/null [ -f ./etc/config/dockerd ] && sed -e "s/option wan_mode '0'/option wan_mode '1'/" -i ./etc/config/dockerd 2>/dev/null [ -f ./etc/config/verysync ] && sed -e 's/config setting/config verysync/' -i ./etc/config/verysync 2>/dev/null # Restore fstab cp -f .snapshots/etc-000/fstab ./etc/fstab cp -f .snapshots/etc-000/config/fstab ./etc/config/fstab # 还原 luci cp -f .snapshots/etc-000/config/luci ./etc/config/luci # 还原/etc/config/rpcd cp -f .snapshots/etc-000/config/rpcd ./etc/config/rpcd sync echo "Restore configuration information complete." fi echo "Modify the configuration file ... " rm -f "./etc/rc.local.orig" "./etc/first_run.sh" "./etc/part_size" rm -rf "./opt/docker" && ln -sf "/mnt/${EMMC_NAME}${PARTITION_NAME}4/docker" "./opt/docker" rm -f ./etc/bench.log cat >>./etc/crontabs/root </dev/null; then echo "sshd:x:22:sshd" >>./etc/group fi if ! grep "sshd:x:22:22:sshd:" ./etc/passwd >/dev/null; then echo "sshd:x:22:22:sshd:/var/run/sshd:/bin/false" >>./etc/passwd fi if ! grep "sshd:x:" ./etc/shadow >/dev/null; then echo "sshd:x:${ddd}:0:99999:7:::" >>./etc/shadow fi if [ "${BR_FLAG}" -eq "1" ]; then if [ -x ./bin/bash ] && [ -f ./etc/profile.d/30-sysinfo.sh ]; then sed -e 's/\/bin\/ash/\/bin\/bash/' -i ./etc/passwd fi sync fi sed -e "s/option hw_flow '1'/option hw_flow '0'/" -i ./etc/config/turboacc ( cd etc/rc.d rm -f S??shortcut-fe if grep "sfe_flow '1'" ../config/turboacc >/dev/null; then if find ../../lib/modules -name 'shortcut-fe-cm.ko'; then ln -sf ../init.d/shortcut-fe S99shortcut-fe fi fi ) eval tar czf .reserved/openwrt_config.tar.gz "${BACKUP_LIST}" 2>/dev/null rm -f ./etc/part_size ./etc/first_run.sh if [ -x ./usr/sbin/balethirq.pl ]; then if grep "balethirq.pl" "./etc/rc.local"; then echo "balance irq is enabled" else echo "enable balance irq" sed -e "/exit/i\/usr/sbin/balethirq.pl" -i ./etc/rc.local fi fi mv ./etc/rc.local ./etc/rc.local.orig cat >"./etc/rc.local" </dev/null 2>&1;then /etc/init.d/dockerd enable /etc/init.d/dockerd start fi if ! ls /etc/rc.d/S??dockerman >/dev/null 2>&1 && [ -f /etc/init.d/dockerman ];then /etc/init.d/dockerman enable /etc/init.d/dockerman start fi mv /etc/rc.local.orig /etc/rc.local chmod 755 /etc/rc.local exec /etc/rc.local exit EOF chmod 755 ./etc/rc.local* #Mainline U-BOOT detection FLASH_MAINLINE_UBOOT=0 if [[ -n "${MAINLINE_UBOOT}" && -f "${P2}${MAINLINE_UBOOT}" ]]; then cat < .snapshots/etc-001" btrfs subvolume snapshot -r etc .snapshots/etc-001 cd ${WORK_DIR} echo "Change the label of ${BOOT_PATH} ... " fatlabel ${BOOT_PATH} "${LB_PRE}BOOT" echo "Start copying data, from [ ${P1} ] to [ /boot ] ..." cd /boot echo "Delete the old boot file ..." rm -rf * && sync echo "Copy the new boot file ... " (cd ${P1} && tar cf - .) | tar xf - 2>/dev/null sync if [ -f ${P1}/uInitrd ]; then i=1 max_try=10 while [ "${i}" -le "${max_try}" ]; do uInitrd_original=$(md5sum ${P1}/uInitrd | awk '{print $1}') uInitrd_new=$(md5sum uInitrd | awk '{print $1}') if [ "${uInitrd_original}" = "${uInitrd_new}" ]; then break else rm -f uInitrd && sync cp -f ${P1}/uInitrd uInitrd 2>/dev/null && sync let i++ continue fi done [ "${i}" -eq "10" ] && error_msg "uInitrd file copy failed." else echo "uInitrd file is missing." fi if [ -f ${P1}/zImage ]; then i=1 max_try=10 while [ "${i}" -le "${max_try}" ]; do zImage_original=$(md5sum ${P1}/zImage | awk '{print $1}') zImage_new=$(md5sum zImage | awk '{print $1}') if [ "${zImage_original}" = "${zImage_new}" ]; then break else rm -f zImage && sync cp -f ${P1}/zImage zImage 2>/dev/null && sync let i++ continue fi done [ "${i}" -eq "10" ] && error_msg "zImage file copy failed." else error_msg "zImage file is missing." fi if [ ${ROOT_DISK_TYPE} == "EMMC" ]; then rm -f s905_autoscript* aml_autoscript* mv -f boot-emmc.ini boot.ini mv -f boot-emmc.cmd boot.cmd mv -f boot-emmc.scr boot.scr fi if [ "${K510}" -eq "1" ]; then if [ -f "u-boot.ext" ]; then cp -vf u-boot.ext u-boot.emmc elif [ -f ${P1}/${UBOOT_OVERLOAD} ]; then cp -vf ${P1}/${UBOOT_OVERLOAD} ${UBOOT_OVERLOAD} cp -vf ${P1}/${UBOOT_OVERLOAD} u-boot.ext cp -vf ${P1}/${UBOOT_OVERLOAD} u-boot.emmc chmod +x u-boot* fi else rm -f u-boot.ext 2>/dev/null rm -f u-boot.emmc 2>/dev/null fi sync echo "Update boot parameters ... " if [ -f /tmp/uEnv.txt ]; then lines=$(wc -l uEnv.txt cat >>uEnv.txt <uEnv.txt </dev/null } cd $WORK_DIR umount -f ${P1} ${P2} 2>/dev/null losetup -D 2>/dev/null rm -rf ${P1} ${P2} 2>/dev/null rm -f ${IMG_NAME} 2>/dev/null rm -f sha256sums 2>/dev/null sync wait echo "Successfully updated, automatic restarting..." sleep 3 reboot exit 0 ================================================ FILE: luci-app-amlogic/root/usr/sbin/openwrt-update-kvm ================================================ #!/bin/bash #====================================================================================== # Function: Update the QEMU AARCH64 KVM vitual machine openwrt firmware # Copyright (C) 2022-- https://github.com/unifreq/openwrt_packit # Copyright (C) 2022-- https://github.com/ophub #====================================================================================== # # The script supports directly setting parameters for update, skipping interactive selection # openwrt-update-amlogic ${OPENWRT_FILE} ${AUTO_MAINLINE_UBOOT} ${RESTORE_CONFIG} ${WORK_DIR} # E.g: openwrt-update-kvm openwrt_qemu-aarch64.img.gz no restore /mnt/vda4 # E.g: openwrt-update-kvm openwrt_qemu-aarch64.img.gz no no-restore /mnt/data # You can also execute the script directly, and interactively select related functions # E.g: openwrt-update-kvm # #====================================================================================== # Encountered a serious error, abort the script execution error_msg() { echo -e "[ERROR] ${1}" exit 1 } # Get the partition name of the /boot file system get_boot_partition_name() { local paths="/boot" local partition_name partition_name=$(df "${paths}" | awk 'NR==2 {print $1}' | awk -F '/' '{print $3}') echo "${partition_name}" } # Get the partition name of the root file system get_root_partition_name() { local paths=("/" "/overlay" "/rom") local partition_name for path in "${paths[@]}"; do partition_name=$(df "${path}" | awk 'NR==2 {print $1}' | awk -F '/' '{print $3}') [[ -n "${partition_name}" ]] && break done echo "${partition_name}" } # Get the partition message of the root file system get_root_partition_msg() { local paths=("/" "/overlay" "/rom") local partition_name for path in "${paths[@]}"; do partition_msg=$(lsblk -l -o NAME,PATH,TYPE,UUID,MOUNTPOINT | awk '$3~/^part$/ && $5 ~ "^" "'"${path}"'" "$" {print $0}') [[ -n "${partition_msg}" ]] && break done [[ -z "${partition_msg}" ]] && error_msg "Cannot find the root partition message!" echo "${partition_msg}" } # Receive one-key command related parameters IMG_NAME="${1}" AUTO_MAINLINE_UBOOT="${2}" BACKUP_RESTORE_CONFIG="${3}" WORK_DIR="${4}" # Check the necessary dependencies DEPENDS="lsblk uuidgen grep awk btrfs mkfs.fat mkfs.btrfs md5sum fatlabel jq" echo "Check the necessary dependencies..." for dep in ${DEPENDS}; do WITCH=$(busybox which ${dep}) if [ "${WITCH}" == "" ]; then error_msg "Dependent command: ${dep} does not exist, upgrade cannot be performed!" else echo "${dep} path: ${WITCH}" fi done echo "Check passed" # Current device model source /etc/flippy-openwrt-release if [[ -z "${PLATFORM}" ]]; then error_msg "The platform is empty." elif [[ "${PLATFORM}" != "qemu-aarch64" ]]; then error_msg "The platform is missing, only support qemu-aarch64." else echo -e "Current platform: [ ${PLATFORM} ]" sleep 3 fi # Check and repair partition mount points [[ -z "$(get_boot_partition_name)" || -z "$(get_root_partition_name)" ]] && { echo -e "Partition mount point error, start repairing..." openwrt-backup -g } # Find the partition where root is located # vda2 or vda3 ROOT_PTNAME="$(get_root_partition_name)" # Find the disk where the partition is located, only supports sd?? hd?? vd?? case ${ROOT_PTNAME} in [hsv]d[a-z][1-4]) DISK_NAME=$(echo ${ROOT_PTNAME} | awk '{print substr($1, 1, length($1)-1)}') PART_PRESTR="" LABEL_PRESTR="" ;; *) error_msg "Unable to recognize the disk type of ${ROOT_PTNAME}!" ;; esac function get_docker_root { local data_root if [[ -f /etc/config/dockerd ]]; then data_root=$(uci get dockerd.globals.data_root) fi if [[ -z "${data_root}" ]] && [[ -f /etc/docker/daemon.json ]]; then data_root=$(jq -r '."data-root"' /etc/docker/daemon.json) fi echo "$data_root" } DOCKER_ROOT=$(get_docker_root) if [[ -z "${WORK_DIR}" ]]; then WORK_DIR="/mnt/${DISK_NAME}${PART_PRESTR}4/" fi if [[ ! -d "${WORK_DIR}" ]]; then error_msg "the work directory is not exists. [ ${WORK_DIR} ]" fi cd "${WORK_DIR}" if [[ -d "/tmp/upload" ]] && [[ -f "/tmp/upload/*img*" ]]; then mv -f /tmp/upload/*img* . if [[ $? -ne 0 ]]; then error_msg "move file failed." fi fi sync if [[ "${IMG_NAME}" == *.img ]]; then echo -e "Update using [ ${IMG_NAME} ] file. Please wait a moment ..." elif [ $(ls *.img -l 2>/dev/null | grep "^-" | wc -l) -ge 1 ]; then IMG_NAME=$(ls *.img | head -n 1) echo -e "Update using [ ${IMG_NAME} ] ] file. Please wait a moment ..." elif [ $(ls *.img.xz -l 2>/dev/null | grep "^-" | wc -l) -ge 1 ]; then xz_file=$(ls *.img.xz | head -n 1) echo -e "Update using [ ${xz_file} ] file. Please wait a moment ..." xz -d ${xz_file} 2>/dev/null IMG_NAME=$(ls *.img | head -n 1) elif [ $(ls *.img.gz -l 2>/dev/null | grep "^-" | wc -l) -ge 1 ]; then gz_file=$(ls *.img.gz | head -n 1) echo -e "Update using [ ${gz_file} ] file. Please wait a moment ..." gzip -df ${gz_file} 2>/dev/null IMG_NAME=$(ls *.img | head -n 1) elif [ $(ls *.7z -l 2>/dev/null | grep "^-" | wc -l) -ge 1 ]; then gz_file=$(ls *.7z | head -n 1) echo -e "Update using [ ${gz_file} ] file. Please wait a moment ..." bsdtar -xmf ${gz_file} 2>/dev/null [ $? -eq 0 ] || 7z x ${gz_file} -aoa -y 2>/dev/null IMG_NAME=$(ls *.img | head -n 1) elif [ $(ls *.zip -l 2>/dev/null | grep "^-" | wc -l) -ge 1 ]; then zip_file=$(ls *.zip | head -n 1) echo -e "Update using [ ${zip_file} ] file. Please wait a moment ..." unzip -o ${zip_file} 2>/dev/null IMG_NAME=$(ls *.img | head -n 1) else echo -e "Please upload or specify the update openwrt firmware file." #echo -e "Upload method: system menu → Amlogic Service → Manually Upload Update" echo -e "Specify method: Place the openwrt firmware file in [ ${WORK_DIR} ]" echo -e "The supported file suffixes are: *.img, *.img.xz, *.img.gz, *.7z, *.zip" echo -e "After upload the openwrt firmware file, run again." exit 1 fi sync # check file if [ ! -f "${IMG_NAME}" ]; then error_msg "No update file found." else echo "Start update from [ ${IMG_NAME} ]" fi # find efi partition EFI_PART_MSG=$(lsblk -l -o NAME,PATH,TYPE,UUID,MOUNTPOINT | awk '$3~/^part$/ && $5 ~ /^\/boot\/efi$/ {print $0}') if [ "${EFI_PART_MSG}" == "" ]; then error_msg "The EFI partition does not exist, so the update cannot be continued!" fi EFI_NAME=$(echo $EFI_PART_MSG | awk '{print $1}') EFI_DEV=$(echo $EFI_PART_MSG | awk '{print $2}') EFI_UUID=$(echo $EFI_PART_MSG | awk '{print $4}') BR_FLAG=1 if [[ ${BACKUP_RESTORE_CONFIG} == "restore" ]]; then BR_FLAG=1 elif [[ ${BACKUP_RESTORE_CONFIG} == "no-restore" ]]; then BR_FLAG=0 else echo -ne "Whether to backup and restore the current config files? y/n [y]\b\b" read yn case $yn in n* | N*) BR_FLAG=0 ;; esac fi # find root partition ROOT_PART_MSG="$(get_root_partition_msg)" ROOT_NAME=$(echo ${ROOT_PART_MSG} | awk '{print $1}') ROOT_DEV=$(echo ${ROOT_PART_MSG} | awk '{print $2}') ROOT_UUID=$(echo ${ROOT_PART_MSG} | awk '{print $4}') case ${ROOT_NAME} in ${DISK_NAME}${PART_PRESTR}2) NEW_ROOT_NAME="${DISK_NAME}${PART_PRESTR}3" NEW_ROOT_LABEL="${LABEL_PRESTR}ROOTFS2" ;; ${DISK_NAME}${PART_PRESTR}3) NEW_ROOT_NAME="${DISK_NAME}${PART_PRESTR}2" NEW_ROOT_LABEL="${LABEL_PRESTR}ROOTFS1" ;; *) error_msg "ROOTFS The partition location is incorrect, so the update cannot continue!" ;; esac echo "NEW_ROOT_NAME: [ ${NEW_ROOT_NAME} ]" # find new root partition NEW_ROOT_PART_MSG=$(lsblk -l -o NAME,PATH,TYPE,UUID,MOUNTPOINT | grep "${NEW_ROOT_NAME}" | awk '$3 ~ /^part$/ && $5 !~ /^\/$/ && $5 !~ /^\/boot$/ {print $0}') if [ "${NEW_ROOT_PART_MSG}" == "" ]; then error_msg "The new ROOTFS partition does not exist, so the update cannot continue!" fi NEW_ROOT_NAME=$(echo $NEW_ROOT_PART_MSG | awk '{print $1}') NEW_ROOT_DEV=$(echo $NEW_ROOT_PART_MSG | awk '{print $2}') NEW_ROOT_UUID=$(echo $NEW_ROOT_PART_MSG | awk '{print $4}') NEW_ROOT_MOUNTPOINT=$(echo $NEW_ROOT_PART_MSG | awk '{print $5}') echo "NEW_ROOT_MOUNTPOINT: [ ${NEW_ROOT_MOUNTPOINT} ]" # losetup losetup -f -P $IMG_NAME if [ $? -eq 0 ]; then LOOP_DEV=$(losetup | grep "$IMG_NAME" | awk '{print $1}') if [ "$LOOP_DEV" == "" ]; then error_msg "loop device not found!" fi else error_msg "losetup [ $IMG_FILE ] failed!" fi # fix loopdev issue in kernel 5.19 function fix_loopdev() { local parentdev=${1##*/} if [ ! -d /sys/block/${parentdev} ]; then return fi subdevs=$(lsblk -l -o NAME | grep -E "^${parentdev}.+\$") for subdev in $subdevs; do if [ ! -d /sys/block/${parentdev}/${subdev} ]; then return elif [ -b /dev/${sub_dev} ]; then continue fi source /sys/block/${parentdev}/${subdev}/uevent mknod /dev/${subdev} b ${MAJOR} ${MINOR} unset MAJOR MINOR DEVNAME DEVTYPE DISKSEQ PARTN PARTNAME done } fix_loopdev ${LOOP_DEV} WAIT=3 echo "The loopdev is [ $LOOP_DEV ], wait [ ${WAIT} ] seconds. " while [ $WAIT -ge 1 ]; do sleep 1 WAIT=$((WAIT - 1)) done # umount loop devices (openwrt will auto mount some partition) MOUNTED_DEVS=$(lsblk -l -o NAME,PATH,MOUNTPOINT | grep "$LOOP_DEV" | awk '$3 !~ /^$/ {print $2}') for dev in $MOUNTED_DEVS; do while :; do echo "umount [ $dev ] ... " umount -f $dev sleep 1 mnt=$(lsblk -l -o NAME,PATH,MOUNTPOINT | grep "$dev" | awk '$3 !~ /^$/ {print $2}') if [ "$mnt" == "" ]; then break else echo "Retry ..." fi done done # mount src part P1=${WORK_DIR}/efi P2=${WORK_DIR}/root mkdir -p $P1 $P2 echo "Mount [ ${LOOP_DEV}p1 ] -> [ ${P1} ] ... " mount -t vfat -o ro ${LOOP_DEV}p1 ${P1} if [ $? -ne 0 ]; then echo "Mount p1 [ ${LOOP_DEV}p1 ] failed!" losetup -D exit 1 fi echo "Mount [ ${LOOP_DEV}p2 ] -> [ ${P2} ] ... " ZSTD_LEVEL="6" mount -t btrfs -o ro,compress=zstd:${ZSTD_LEVEL} ${LOOP_DEV}p2 ${P2} if [ $? -ne 0 ]; then echo "Mount p2 [ ${LOOP_DEV}p2 ] failed!" umount -f ${P1} losetup -D exit 1 fi # Prepare the dockerman config file if [ -f ${P2}/etc/init.d/dockerman ] && [ -f ${P2}/etc/config/dockerd ]; then flg=0 # get current docker data root data_root=$(uci get dockerd.globals.data_root 2>/dev/null) if [ "$data_root" == "" ]; then flg=1 # get current config from /etc/docker/daemon.json if [ -f "/etc/docker/daemon.json" ] && [ -x "/usr/bin/jq" ]; then data_root=$(jq -r '."data-root"' /etc/docker/daemon.json) bip=$(jq -r '."bip"' /etc/docker/daemon.json) [ "$bip" == "null" ] && bip="172.31.0.1/24" log_level=$(jq -r '."log-level"' /etc/docker/daemon.json) [ "$log_level" == "null" ] && log_level="warn" _iptables=$(jq -r '."iptables"' /etc/docker/daemon.json) [ "$_iptables" == "null" ] && _iptables="true" registry_mirrors=$(jq -r '."registry-mirrors"[]' /etc/docker/daemon.json 2>/dev/null) fi fi if [ "$data_root" == "" ]; then data_root="/opt/docker/" # the default data root fi if ! uci get dockerd.globals >/dev/null 2>&1; then uci set dockerd.globals='globals' uci commit fi # delete alter config , use inner config if uci get dockerd.globals.alt_config_file >/dev/null 2>&1; then uci delete dockerd.globals.alt_config_file uci commit fi if [ $flg -eq 1 ]; then uci set dockerd.globals.data_root=$data_root [ "$bip" != "" ] && uci set dockerd.globals.bip=$bip [ "$log_level" != "" ] && uci set dockerd.globals.log_level=$log_level [ "$_iptables" != "" ] && uci set dockerd.globals.iptables=$_iptables if [ "$registry_mirrors" != "" ]; then for reg in $registry_mirrors; do uci add_list dockerd.globals.registry_mirrors=$reg done fi uci set dockerd.globals.auto_start='1' uci commit fi fi #format NEW_ROOT echo "umount [ ${NEW_ROOT_MOUNTPOINT} ]" umount -f "${NEW_ROOT_MOUNTPOINT}" if [ $? -ne 0 ]; then echo "Umount [ ${NEW_ROOT_MOUNTPOINT} ] failed, Please restart and try again!" umount -f ${P1} umount -f ${P2} losetup -D exit 1 fi echo "Format [ ${NEW_ROOT_DEV} ]" NEW_ROOT_UUID=$(uuidgen) mkfs.btrfs -f -U ${NEW_ROOT_UUID} -L ${NEW_ROOT_LABEL} ${NEW_ROOT_DEV} if [ $? -ne 0 ]; then echo "Format [ ${NEW_ROOT_DEV} ] failed!" umount -f ${P1} umount -f ${P2} losetup -D exit 1 fi echo "Mount [ ${NEW_ROOT_DEV} ] -> [ ${NEW_ROOT_MOUNTPOINT} ]" mount -t btrfs -o compress=zstd:${ZSTD_LEVEL} ${NEW_ROOT_DEV} ${NEW_ROOT_MOUNTPOINT} if [ $? -ne 0 ]; then echo "Mount [ ${NEW_ROOT_DEV} ] -> [ ${NEW_ROOT_MOUNTPOINT} ] failed!" umount -f ${P1} umount -f ${P2} losetup -D exit 1 fi # begin copy rootfs cd ${NEW_ROOT_MOUNTPOINT} echo "Start copying data, From [ ${P2} ] TO [ ${NEW_ROOT_MOUNTPOINT} ] ..." ENTRYS=$(ls) for entry in $ENTRYS; do if [ "$entry" == "lost+found" ]; then continue fi echo "Remove old [ $entry ] ... " rm -rf $entry if [ $? -ne 0 ]; then error_msg "failed." fi done echo "Create folder ... " btrfs subvolume create etc mkdir -p .snapshots .reserved bin boot dev lib opt mnt overlay proc rom root run sbin sys tmp usr www ln -sf lib/ lib64 ln -sf tmp/ var sync COPY_SRC="boot root etc bin sbin lib opt usr www" echo "Copy data begin ... " for src in $COPY_SRC; do echo "Copy [ $src ] ... " (cd ${P2} && tar cf - $src) | tar xf - sync done # if not backup, then force rewrite the etc/docker/daemon.json if [ "${BR_FLAG}" -eq 0 ]; then cat >./etc/docker/daemon.json <./etc/fstab <./etc/config/fstab </dev/null; then if find ../../lib/modules -name 'shortcut-fe-cm.ko'; then ln -sf ../init.d/shortcut-fe S99shortcut-fe fi fi ) # move /etc/config/balance_irq to /etc/balance_irq [ -f "./etc/config/balance_irq" ] && mv ./etc/config/balance_irq ./etc/ sync echo "Create initial etc snapshot -> .snapshots/etc-000" btrfs subvolume snapshot -r etc .snapshots/etc-000 sync [ -d /mnt/${DISK_NAME}${PART_PRESTR}4/docker ] || mkdir -p /mnt/${DISK_NAME}${PART_PRESTR}4/docker rm -rf opt/docker && ln -sf /mnt/${DISK_NAME}${PART_PRESTR}4/docker/ opt/docker if [ -f /mnt/${NEW_ROOT_NAME}/etc/config/AdGuardHome ]; then [ -d /mnt/${DISK_NAME}${PART_PRESTR}4/AdGuardHome/data ] || mkdir -p /mnt/${DISK_NAME}${PART_PRESTR}4/AdGuardHome/data if [ ! -L /usr/bin/AdGuardHome ]; then [ -d /usr/bin/AdGuardHome ] && cp -a /usr/bin/AdGuardHome/* /mnt/${DISK_NAME}${PART_PRESTR}4/AdGuardHome/ fi ln -sf /mnt/${DISK_NAME}${PART_PRESTR}4/AdGuardHome /mnt/${NEW_ROOT_NAME}/usr/bin/AdGuardHome fi sync echo "Copy data complete ..." BACKUP_LIST=$(${P2}/usr/sbin/openwrt-backup -p) if [[ "${BR_FLAG}" -eq "1" && -n "${BACKUP_LIST}" ]]; then echo -n "Start restoring configuration files ... " ( cd / eval tar czf ${NEW_ROOT_MOUNTPOINT}/.reserved/openwrt_config.tar.gz "${BACKUP_LIST}" 2>/dev/null ) tar xzf ${NEW_ROOT_MOUNTPOINT}/.reserved/openwrt_config.tar.gz [ -f ./etc/config/dockerman ] && sed -e "s/option wan_mode 'false'/option wan_mode 'true'/" -i ./etc/config/dockerman 2>/dev/null [ -f ./etc/config/dockerd ] && sed -e "s/option wan_mode '0'/option wan_mode '1'/" -i ./etc/config/dockerd 2>/dev/null [ -f ./etc/config/verysync ] && sed -e 's/config setting/config verysync/' -i ./etc/config/verysync 2>/dev/null # Restore fstab cp -f .snapshots/etc-000/fstab ./etc/fstab cp -f .snapshots/etc-000/config/fstab ./etc/config/fstab # 还原 luci cp -f .snapshots/etc-000/config/luci ./etc/config/luci # 还原/etc/config/rpcd cp -f .snapshots/etc-000/config/rpcd ./etc/config/rpcd sync echo "Restore configuration information complete." fi echo "Modify the configuration file ... " rm -f "./etc/rc.local.orig" "./etc/first_run.sh" "./etc/part_size" rm -rf "./opt/docker" && ln -sf "/mnt/${DISK_NAME}${PART_PRESTR}4/docker" "./opt/docker" rm -f ./etc/bench.log cat >>./etc/crontabs/root </dev/null; then echo "sshd:x:22:sshd" >>./etc/group fi if ! grep "sshd:x:22:22:sshd:" ./etc/passwd >/dev/null; then echo "sshd:x:22:22:sshd:/var/run/sshd:/bin/false" >>./etc/passwd fi if ! grep "sshd:x:" ./etc/shadow >/dev/null; then echo "sshd:x:${ddd}:0:99999:7:::" >>./etc/shadow fi if [ "${BR_FLAG}" -eq "1" ]; then if [ -x ./bin/bash ] && [ -f ./etc/profile.d/30-sysinfo.sh ]; then sed -e 's/\/bin\/ash/\/bin\/bash/' -i ./etc/passwd fi sync fi sed -e "s/option hw_flow '1'/option hw_flow '0'/" -i ./etc/config/turboacc ( cd etc/rc.d rm -f S??shortcut-fe if grep "sfe_flow '1'" ../config/turboacc >/dev/null; then if find ../../lib/modules -name 'shortcut-fe-cm.ko'; then ln -sf ../init.d/shortcut-fe S99shortcut-fe fi fi ) eval tar czf .reserved/openwrt_config.tar.gz "${BACKUP_LIST}" 2>/dev/null rm -f ./etc/part_size ./etc/first_run.sh if [ -x ./usr/sbin/balethirq.pl ]; then if grep "balethirq.pl" "./etc/rc.local"; then echo "balance irq is enabled" else echo "enable balance irq" sed -e "/exit/i\/usr/sbin/balethirq.pl" -i ./etc/rc.local fi fi mv ./etc/rc.local ./etc/rc.local.orig cat >"./etc/rc.local" </dev/null 2>&1;then /etc/init.d/dockerd enable /etc/init.d/dockerd start fi if ! ls /etc/rc.d/S??dockerman >/dev/null 2>&1 && [ -f /etc/init.d/dockerman ];then /etc/init.d/dockerman enable /etc/init.d/dockerman start fi mv /etc/rc.local.orig /etc/rc.local chmod 755 /etc/rc.local exec /etc/rc.local exit EOF chmod 755 ./etc/rc.local* # move /etc/config/balance_irq to /etc/balance_irq [ -f "./etc/config/balance_irq" ] && mv ./etc/config/balance_irq ./etc/ echo "Create etc snapshot -> .snapshots/etc-001" btrfs subvolume snapshot -r etc .snapshots/etc-001 cd ${WORK_DIR} echo "Copy efi files ..." fatlabel ${EFI_DEV} "EFI" cd /boot/efi mv ./EFI/BOOT/grub.cfg /tmp/grub.cfg.prev rm -rf * cp -a ${P1}/* . # 如果想启动上一个版本的openwrt,可以把 /boot/efi/EFI/BOOT/grub.cfg.prev 复制成 /boot/efi/EFI/BOOT/grub.cfg mv /tmp/grub.cfg.prev ./EFI/BOOT/ echo "Modify efi configuration ... " cd /boot/efi/EFI/BOOT cat >grub.cfg <grub.cfg </dev/null losetup -D 2>/dev/null rm -rf ${P1} ${P2} 2>/dev/null rm -f ${IMG_NAME} 2>/dev/null rm -f sha256sums 2>/dev/null sync wait echo "Successfully updated, automatic restarting..." sleep 3 reboot exit 0 ================================================ FILE: luci-app-amlogic/root/usr/sbin/openwrt-update-rockchip ================================================ #!/bin/bash #====================================================================================== # Function: Update openwrt to emmc for Rockchip STB # Copyright (C) 2020-- https://github.com/unifreq/openwrt_packit # Copyright (C) 2021-- https://github.com/ophub/luci-app-amlogic #====================================================================================== # # The script supports directly setting parameters for update, skipping interactive selection # openwrt-update-rockchip ${OPENWRT_FILE} ${AUTO_MAINLINE_UBOOT} ${RESTORE_CONFIG} # E.g: openwrt-update-rockchip openwrt_s905d.img.gz yes restore # E.g: openwrt-update-rockchip openwrt_s905d.img.gz no no-restore # You can also execute the script directly, and interactively select related functions # E.g: openwrt-update-rockchip # #====================================================================================== # Encountered a serious error, abort the script execution error_msg() { echo -e "[ERROR] ${1}" exit 1 } # Get the partition name of the /boot file system get_boot_partition_name() { local paths="/boot" local partition_name partition_name=$(df "${paths}" | awk 'NR==2 {print $1}' | awk -F '/' '{print $3}') echo "${partition_name}" } # Get the partition name of the root file system get_root_partition_name() { local paths=("/" "/overlay" "/rom") local partition_name for path in "${paths[@]}"; do partition_name=$(df "${path}" | awk 'NR==2 {print $1}' | awk -F '/' '{print $3}') [[ -n "${partition_name}" ]] && break done echo "${partition_name}" } # Get the partition message of the root file system get_root_partition_msg() { local paths=("/" "/overlay" "/rom") local partition_name for path in "${paths[@]}"; do partition_msg=$(lsblk -l -o NAME,PATH,TYPE,UUID,MOUNTPOINT | awk '$3~/^part$/ && $5 ~ "^" "'"${path}"'" "$" {print $0}') [[ -n "${partition_msg}" ]] && break done [[ -z "${partition_msg}" ]] && error_msg "Cannot find the root partition message!" echo "${partition_msg}" } # Receive one-key command related parameters IMG_NAME="${1}" AUTO_MAINLINE_UBOOT="${2}" BACKUP_RESTORE_CONFIG="${3}" # Current device model if [ -f /boot/armbianEnv.txt ]; then source /boot/armbianEnv.txt 2>/dev/null CURRENT_FDTFILE=$(basename ${fdtfile}) fi MYDEVICE_NAME=$(cat /proc/device-tree/model | tr -d '\000') case $MYDEVICE_NAME in "") error_msg "The device name is empty and cannot be recognized." ;; "Chainedbox L1 Pro") if [ -n "${CURRENT_FDTFILE}" ]; then MYDTB_FDTFILE="${CURRENT_FDTFILE}" else MYDTB_FDTFILE="rk3328-l1pro-1296mhz.dtb" fi SOC="l1pro" ;; "BeikeYun") if [ -n "${CURRENT_FDTFILE}" ]; then MYDTB_FDTFILE="${CURRENT_FDTFILE}" else MYDTB_FDTFILE="rk3328-beikeyun-1296mhz.dtb" fi SOC="beikeyun" ;; "ZCuble1 Max") if [ -n "${CURRENT_FDTFILE}" ]; then MYDTB_FDTFILE="${CURRENT_FDTFILE}" else MYDTB_FDTFILE="rk3399-zcube1-max.dtb" fi SOC="zcube1 max" ;; "JP TVbox 3566") if [ -n "${CURRENT_FDTFILE}" ]; then MYDTB_FDTFILE="${CURRENT_FDTFILE}" else MYDTB_FDTFILE="rk3566-jp-tvbox.dtb" fi SOC="jp-tvbox" ;; "Radxa CM3 RPI CM4 IO") if [ -n "${CURRENT_FDTFILE}" ]; then MYDTB_FDTFILE="${CURRENT_FDTFILE}" else MYDTB_FDTFILE="rk3566-radxa-cm3-rpi-cm4-io.dtb" fi SOC="radxa-cm3-rpi-cm4-io" ;; "FastRhino R66S" | "Lunzn FastRhino R66S") if [ -n "${CURRENT_FDTFILE}" ]; then MYDTB_FDTFILE="${CURRENT_FDTFILE}" else MYDTB_FDTFILE="rk3568-fastrhino-r66s.dtb" fi SOC="r66s" ;; "FastRhino R68S" | "Lunzn FastRhino R68S") if [ -n "${CURRENT_FDTFILE}" ]; then MYDTB_FDTFILE="${CURRENT_FDTFILE}" else MYDTB_FDTFILE="rk3568-fastrhino-r68s.dtb" fi SOC="r68s" ;; "RK3568 EC-X") if [ -n "${CURRENT_FDTFILE}" ]; then MYDTB_FDTFILE="${CURRENT_FDTFILE}" else MYDTB_FDTFILE="rk3568-ec-x.dtb" fi SOC="ec-x" ;; "HINLINK OPC-H66K Board" | "Hlink H66K") if [ -n "${CURRENT_FDTFILE}" ] && [ "${CURRENT_FDTFILE}" != "rk3568-opc-h66k.dtb" ]; then MYDTB_FDTFILE="${CURRENT_FDTFILE}" else MYDTB_FDTFILE="rk3568-hlink-h66k.dtb" fi SOC="h66k" ;; "HINLINK OPC-H68K Board" | "Hlink H68K") if [ -n "${CURRENT_FDTFILE}" ] && [ "${CURRENT_FDTFILE}" != "rk3568-opc-h68k.dtb" ]; then MYDTB_FDTFILE="${CURRENT_FDTFILE}" else MYDTB_FDTFILE="rk3568-hlink-h68k.dtb" fi SOC="h68k" ;; "HINLINK OPC-H69K Board" | "Hlink H69K") if [ -n "${CURRENT_FDTFILE}" ] && [ "${CURRENT_FDTFILE}" != "rk3568-opc-h69k.dtb" ]; then MYDTB_FDTFILE="${CURRENT_FDTFILE}" else MYDTB_FDTFILE="rk3568-hlink-h69k.dtb" fi SOC="h69k" ;; "Radxa E25" | "Radxa E25 Carrier Board") if [ -n "${CURRENT_FDTFILE}" ]; then MYDTB_FDTFILE="${CURRENT_FDTFILE}" else MYDTB_FDTFILE="rk3568-radxa-e25.dtb" fi SOC="e25" ;; "HINLINK OWL H88K-V3 Board" | "Hlink H88K-V3") if [ -n "${CURRENT_FDTFILE}" ] && [ "${CURRENT_FDTFILE}" != "rk3568-hinlink-h88k-v3.dtb" ]; then MYDTB_FDTFILE="${CURRENT_FDTFILE}" else MYDTB_FDTFILE="rk3588-hlink-h88k-v3.dtb" fi SOC="h88k-v3" ;; "Hlink H88K V3.1") if [ -n "${CURRENT_FDTFILE}" ] && [ "${CURRENT_FDTFILE}" != "rk3568-hinlink-h88k-v31.dtb" ]; then MYDTB_FDTFILE="${CURRENT_FDTFILE}" else MYDTB_FDTFILE="rk3588-hlink-h88k-v31.dtb" fi SOC="h88k-v3" ;; "HINLINK OWL H88K Board" | "Hlink H88K") if [ -n "${CURRENT_FDTFILE}" ] && [ "${CURRENT_FDTFILE}" != "rk3568-hinlink-h88k.dtb" ]; then MYDTB_FDTFILE="${CURRENT_FDTFILE}" else MYDTB_FDTFILE="rk3588-hlink-h88k.dtb" fi SOC="ak88/h88k" ;; "Hlink H28K") if [ -n "${CURRENT_FDTFILE}" ]; then MYDTB_FDTFILE="${CURRENT_FDTFILE}" else MYDTB_FDTFILE="rk3528-hlink-h28k.dtb" fi SOC="h28k" ;; "Hlink HT2") if [ -n "${CURRENT_FDTFILE}" ]; then MYDTB_FDTFILE="${CURRENT_FDTFILE}" else MYDTB_FDTFILE="rk3528-hlink-ht2.dtb" fi SOC="ht2" ;; "Radxa E20C") if [ -n "${CURRENT_FDTFILE}" ]; then MYDTB_FDTFILE="${CURRENT_FDTFILE}" else MYDTB_FDTFILE="rk3528-radxa-e20c.dtb" fi SOC="e20c" ;; "Radxa E24C") if [ -n "${CURRENT_FDTFILE}" ]; then MYDTB_FDTFILE="${CURRENT_FDTFILE}" else MYDTB_FDTFILE="rk3528-radxa-e24c.dtb" fi SOC="e24c" ;; "YiXun Rs6Pro") if [ -n "${CURRENT_FDTFILE}" ]; then MYDTB_FDTFILE="${CURRENT_FDTFILE}" else MYDTB_FDTFILE="rk3528-yixun-rs6pro.dtb" fi SOC="rs6pro" ;; "Ariaboard Photonicat") if [ -n "${CURRENT_FDTFILE}" ]; then MYDTB_FDTFILE="${CURRENT_FDTFILE}" else MYDTB_FDTFILE="rk3568-photonicat.dtb" fi SOC="photonicat" ;; "NLnet Watermelon Pi V3") if [ -n "${CURRENT_FDTFILE}" ]; then MYDTB_FDTFILE="${CURRENT_FDTFILE}" else MYDTB_FDTFILE="rk3568-watermelon-pi-v3.dtb" fi SOC="watermelon-pi-v3" ;; "NLnet Watermelon Pi") if [ -n "${CURRENT_FDTFILE}" ]; then MYDTB_FDTFILE="${CURRENT_FDTFILE}" else MYDTB_FDTFILE="rk3568-watermelon-pi.dtb" fi SOC="watermelon-pi" ;; "Rockchip RK3576 DshanPi A1 Board") if [ -n "${CURRENT_FDTFILE}" ]; then MYDTB_FDTFILE="${CURRENT_FDTFILE}" else MYDTB_FDTFILE="rk3576-100ask-dshanpi-a1.dtb" fi SOC="100ask-dshanpi-a1" ;; "Radxa ROCK 5B" | "Radxa ROCK 5 Model B") if [ -n "${CURRENT_FDTFILE}" ]; then MYDTB_FDTFILE="${CURRENT_FDTFILE}" else MYDTB_FDTFILE="rk3588-rock-5b.dtb" fi SOC="rock5b" ;; "Radxa ROCK 5C" | "Radxa ROCK 5 Model C") if [ -n "${CURRENT_FDTFILE}" ]; then MYDTB_FDTFILE="${CURRENT_FDTFILE}" else MYDTB_FDTFILE="rk3588s-rock-5c.dtb" fi SOC="rock5c" ;; "Radxa E52C") if [ -n "${CURRENT_FDTFILE}" ]; then MYDTB_FDTFILE="${CURRENT_FDTFILE}" else MYDTB_FDTFILE="rk3588s-radxa-e52c.dtb" fi SOC="e52c" ;; "Radxa E54C") if [ -n "${CURRENT_FDTFILE}" ]; then MYDTB_FDTFILE="${CURRENT_FDTFILE}" else MYDTB_FDTFILE="rk3588s-radxa-e54c.dtb" fi SOC="e54c" ;; *) #default if [ -f "/etc/flippy-openwrt-release" ]; then source /etc/flippy-openwrt-release 2>/dev/null if [ -n "${CURRENT_FDTFILE}" ]; then MYDTB_FDTFILE="${CURRENT_FDTFILE}" else MYDTB_FDTFILE="${FDTFILE}" fi SOC="${SOC}" else error_msg "Unknown device: [ ${MYDEVICE_NAME} ], Not supported." fi ;; esac [[ -z "${MYDTB_FDTFILE}" || -z "${SOC}" ]] && { error_msg "Invalid FDTFILE or SOC: [ ${MYDTB_FDTFILE} / ${SOC} ]" } echo -e "Current device: ${MYDEVICE_NAME} [ ${SOC} ]" sleep 3 # Check and repair partition mount points [[ -z "$(get_boot_partition_name)" || -z "$(get_root_partition_name)" ]] && { echo -e "Partition mount point error, start repairing..." openwrt-backup -g } # Find the partition where root is located ROOT_PTNAME="$(get_root_partition_name)" # Find the disk where the partition is located, only supports mmcblk?p? sd?? hd?? vd?? and other formats case ${ROOT_PTNAME} in mmcblk?p[1-4]) EMMC_NAME=$(echo ${ROOT_PTNAME} | awk '{print substr($1, 1, length($1)-2)}') PARTITION_NAME="p" LB_PRE="EMMC_" ;; nvme?n?p?) EMMC_NAME=$(echo ${ROOT_PTNAME} | awk '{print substr($1, 1, length($1)-2)}') PARTITION_NAME="p" LB_PRE="NVME_" ;; [hsv]d[a-z][1-4]) EMMC_NAME=$(echo ${ROOT_PTNAME} | awk '{print substr($1, 1, length($1)-1)}') PARTITION_NAME="" LB_PRE="USB_" ;; *) error_msg "Unable to recognize the disk type of ${ROOT_PTNAME}!" ;; esac cd /mnt/${EMMC_NAME}${PARTITION_NAME}4/ mv -f /tmp/upload/* . 2>/dev/null && sync if [[ "${IMG_NAME}" == *.img ]]; then echo -e "Update using [ ${IMG_NAME} ] file. Please wait a moment ..." elif [ $(ls *.img -l 2>/dev/null | grep "^-" | wc -l) -ge 1 ]; then IMG_NAME=$(ls *.img | head -n 1) echo -e "Update using [ ${IMG_NAME} ] ] file. Please wait a moment ..." elif [ $(ls *.img.xz -l 2>/dev/null | grep "^-" | wc -l) -ge 1 ]; then xz_file=$(ls *.img.xz | head -n 1) echo -e "Update using [ ${xz_file} ] file. Please wait a moment ..." xz -d ${xz_file} 2>/dev/null IMG_NAME=$(ls *.img | head -n 1) elif [ $(ls *.img.gz -l 2>/dev/null | grep "^-" | wc -l) -ge 1 ]; then gz_file=$(ls *.img.gz | head -n 1) echo -e "Update using [ ${gz_file} ] file. Please wait a moment ..." gzip -df ${gz_file} 2>/dev/null IMG_NAME=$(ls *.img | head -n 1) elif [ $(ls *.7z -l 2>/dev/null | grep "^-" | wc -l) -ge 1 ]; then gz_file=$(ls *.7z | head -n 1) echo -e "Update using [ ${gz_file} ] file. Please wait a moment ..." bsdtar -xmf ${gz_file} 2>/dev/null [ $? -eq 0 ] || 7z x ${gz_file} -aoa -y 2>/dev/null IMG_NAME=$(ls *.img | head -n 1) elif [ $(ls *.zip -l 2>/dev/null | grep "^-" | wc -l) -ge 1 ]; then zip_file=$(ls *.zip | head -n 1) echo -e "Update using [ ${zip_file} ] file. Please wait a moment ..." unzip -o ${zip_file} 2>/dev/null IMG_NAME=$(ls *.img | head -n 1) else echo -e "Please upload or specify the update openwrt firmware file." echo -e "Upload method: system menu → Amlogic Service → Manually Upload Update" echo -e "Specify method: Place the openwrt firmware file in [ /mnt/${EMMC_NAME}${PARTITION_NAME}4/ ]" echo -e "The supported file suffixes are: *.img, *.img.xz, *.img.gz, *.7z, *.zip" echo -e "After upload the openwrt firmware file, run again." exit 1 fi sync # check file if [ ! -f "${IMG_NAME}" ]; then error_msg "No update file found." else echo "Start update from [ ${IMG_NAME} ]" fi # find boot partition BOOT_PART_MSG=$(lsblk -l -o NAME,PATH,TYPE,UUID,MOUNTPOINT | awk '$3~/^part$/ && $5 ~ /^\/boot$/ {print $0}') if [ "${BOOT_PART_MSG}" == "" ]; then error_msg "The boot partition is not exists or not mounted, so it cannot be upgraded with this script!" fi BR_FLAG=1 echo -ne "Whether to backup and restore the current config files? y/n [y]\b\b" if [[ ${BACKUP_RESTORE_CONFIG} == "restore" ]]; then yn="y" elif [[ ${BACKUP_RESTORE_CONFIG} == "no-restore" ]]; then yn="n" else read yn fi case ${yn} in n* | N*) BR_FLAG=0 ;; esac BOOT_NAME=$(echo ${BOOT_PART_MSG} | awk '{print $1}') BOOT_PATH=$(echo ${BOOT_PART_MSG} | awk '{print $2}') BOOT_UUID=$(echo ${BOOT_PART_MSG} | awk '{print $4}') # find root partition ROOT_PART_MSG="$(get_root_partition_msg)" ROOT_NAME=$(echo ${ROOT_PART_MSG} | awk '{print $1}') ROOT_PATH=$(echo ${ROOT_PART_MSG} | awk '{print $2}') ROOT_UUID=$(echo ${ROOT_PART_MSG} | awk '{print $4}') case ${ROOT_NAME} in ${EMMC_NAME}${PARTITION_NAME}2) NEW_ROOT_NAME="${EMMC_NAME}${PARTITION_NAME}3" NEW_ROOT_LABEL="${LB_PRE}ROOTFS2" ;; ${EMMC_NAME}${PARTITION_NAME}3) NEW_ROOT_NAME="${EMMC_NAME}${PARTITION_NAME}2" NEW_ROOT_LABEL="${LB_PRE}ROOTFS1" ;; *) error_msg "The root partition location is invalid, so it cannot be upgraded with this script!" ;; esac # find new root partition NEW_ROOT_PART_MSG=$(lsblk -l -o NAME,PATH,TYPE,UUID,MOUNTPOINT | grep "${NEW_ROOT_NAME}" | awk '$3 ~ /^part$/ && $5 !~ /^\/$/ && $5 !~ /^\/boot$/ {print $0}') if [ "${NEW_ROOT_PART_MSG}" == "" ]; then error_msg "The new root partition is not exists, so it cannot be upgraded with this script!" fi NEW_ROOT_NAME=$(echo ${NEW_ROOT_PART_MSG} | awk '{print $1}') NEW_ROOT_PATH=$(echo ${NEW_ROOT_PART_MSG} | awk '{print $2}') NEW_ROOT_UUID=$(echo ${NEW_ROOT_PART_MSG} | awk '{print $4}') NEW_ROOT_MP=$(echo ${NEW_ROOT_PART_MSG} | awk '{print $5}') # losetup losetup -f -P ${IMG_NAME} if [[ "${?}" -eq "0" ]]; then LOOP_DEV=$(losetup | grep "${IMG_NAME}" | awk '{print $1}') if [ "$LOOP_DEV" == "" ]; then error_msg "loop device not found!" fi else error_msg "losetup ${IMG_FILE} failed!" fi # fix loopdev issue in kernel 5.19 function fix_loopdev() { local parentdev=${1##*/} if [ ! -d /sys/block/${parentdev} ]; then return fi subdevs=$(lsblk -l -o NAME | grep -E "^${parentdev}.+\$") for subdev in ${subdevs}; do if [ ! -d /sys/block/${parentdev}/${subdev} ]; then return elif [ -b /dev/${sub_dev} ]; then continue fi source /sys/block/${parentdev}/${subdev}/uevent mknod /dev/${subdev} b ${MAJOR} ${MINOR} unset MAJOR MINOR DEVNAME DEVTYPE DISKSEQ PARTN PARTNAME done } fix_loopdev ${LOOP_DEV} WAIT=3 echo -n "The loopdev is ${LOOP_DEV}, wait ${WAIT} seconds " while [ ${WAIT} -ge 1 ]; do echo -n "." sleep 1 WAIT=$((WAIT - 1)) done echo # umount loop devices (openwrt will auto mount some partition) MOUNTED_DEVS=$(lsblk -l -o NAME,PATH,MOUNTPOINT | grep "${LOOP_DEV}" | awk '$3 !~ /^$/ {print $2}') for dev in ${MOUNTED_DEVS}; do while :; do echo -n "umount ${dev} ... " umount -f ${dev} sleep 1 mnt=$(lsblk -l -o NAME,PATH,MOUNTPOINT | grep "${dev}" | awk '$3 !~ /^$/ {print $2}') if [ "${mnt}" == "" ]; then echo "ok" break else echo "try again ..." fi done done # mount src part WORK_DIR=${PWD} P1=${WORK_DIR}/boot P2=${WORK_DIR}/root mkdir -p $P1 $P2 echo -n "mount ${LOOP_DEV}p1 -> ${P1} ... " mount -t ext4 -o ro ${LOOP_DEV}p1 ${P1} if [[ "${?}" -ne "0" ]]; then echo "mount failed" losetup -D exit 1 else echo "ok" fi echo -n "mount ${LOOP_DEV}p2 -> ${P2} ... " ZSTD_LEVEL=6 mount -t btrfs -o ro,compress=zstd:${ZSTD_LEVEL} ${LOOP_DEV}p2 ${P2} if [[ "${?}" -ne "0" ]]; then echo "mount failed" umount -f ${P1} losetup -D exit 1 else echo "ok" fi # Prepare the dockerman config file if [ -f ${P2}/etc/init.d/dockerman ] && [ -f ${P2}/etc/config/dockerd ]; then flg=0 # get current docker data root data_root=$(uci get dockerd.globals.data_root 2>/dev/null) if [ "${data_root}" == "" ]; then flg=1 # get current config from /etc/docker/daemon.json if [ -f "/etc/docker/daemon.json" ] && [ -x "/usr/bin/jq" ]; then data_root=$(jq -r '."data-root"' /etc/docker/daemon.json) bip=$(jq -r '."bip"' /etc/docker/daemon.json) [ "${bip}" == "null" ] && bip="172.31.0.1/24" log_level=$(jq -r '."log-level"' /etc/docker/daemon.json) [ "${log_level}" == "null" ] && log_level="warn" _iptables=$(jq -r '."iptables"' /etc/docker/daemon.json) [ "${_iptables}" == "null" ] && _iptables="true" registry_mirrors=$(jq -r '."registry-mirrors"[]' /etc/docker/daemon.json 2>/dev/null) fi fi if [ "${data_root}" == "" ]; then data_root="/opt/docker/" # the default data root fi if ! uci get dockerd.globals >/dev/null 2>&1; then uci set dockerd.globals='globals' uci commit fi # delete alter config , use inner config if uci get dockerd.globals.alt_config_file >/dev/null 2>&1; then uci delete dockerd.globals.alt_config_file uci commit fi if [[ "${flg}" -eq "1" ]]; then uci set dockerd.globals.data_root=${data_root} [ "${bip}" != "" ] && uci set dockerd.globals.bip=${bip} [ "${log_level}" != "" ] && uci set dockerd.globals.log_level=${log_level} [ "${_iptables}" != "" ] && uci set dockerd.globals.iptables=${_iptables} if [ "${registry_mirrors}" != "" ]; then for reg in ${registry_mirrors}; do uci add_list dockerd.globals.registry_mirrors=${reg} done fi uci set dockerd.globals.auto_start='1' uci commit fi fi #format NEW_ROOT echo "umount ${NEW_ROOT_MP}" umount -f "${NEW_ROOT_MP}" if [[ "${?}" -ne "0" ]]; then echo "umount failed, please reboot and try again!" umount -f ${P1} umount -f ${P2} losetup -D exit 1 fi echo "format ${NEW_ROOT_PATH}" NEW_ROOT_UUID=$(uuidgen) mkfs.btrfs -f -U ${NEW_ROOT_UUID} -L ${NEW_ROOT_LABEL} -m single ${NEW_ROOT_PATH} if [[ "${?}" -ne "0" ]]; then echo "format ${NEW_ROOT_PATH} failed!" umount -f ${P1} umount -f ${P2} losetup -D exit 1 fi echo "mount ${NEW_ROOT_PATH} to ${NEW_ROOT_MP}" mount -t btrfs -o compress=zstd:${ZSTD_LEVEL} ${NEW_ROOT_PATH} ${NEW_ROOT_MP} if [[ "${?}" -ne "0" ]]; then echo "mount ${NEW_ROOT_PATH} to ${NEW_ROOT_MP} failed!" umount -f ${P1} umount -f ${P2} losetup -D exit 1 fi # begin copy rootfs cd ${NEW_ROOT_MP} echo "Start copy data from ${P2} to ${NEW_ROOT_MP} ..." ENTRYS=$(ls) for entry in ${ENTRYS}; do if [ "${entry}" == "lost+found" ]; then continue fi echo -n "remove old ${entry} ... " rm -rf ${entry} if [ $? -eq 0 ]; then echo "ok" else echo "failed" exit 1 fi done echo echo "create etc subvolume ..." btrfs subvolume create etc echo -n "make dirs ... " mkdir -p .snapshots .reserved bin boot dev lib opt mnt overlay proc rom root run sbin sys tmp usr www ln -sf lib/ lib64 ln -sf tmp/ var echo "done" echo COPY_SRC="root etc bin sbin lib opt usr www" echo "copy data ... " for src in ${COPY_SRC}; do echo -n "copy ${src} ... " (cd ${P2} && tar cf - ${src}) | tar xf - sync echo "done" done SHFS="/mnt/${EMMC_NAME}${PARTITION_NAME}4" echo "Modify config files ... " if [ -x ./usr/sbin/balethirq.pl ]; then if grep "balethirq.pl" "./etc/rc.local"; then echo "balance irq is enabled" else echo "enable balance irq" sed -e "/exit/i\/usr/sbin/balethirq.pl" -i ./etc/rc.local fi fi rm -f ./etc/bench.log cat >./etc/fstab <./etc/config/fstab </dev/null; then if find ../../lib/modules -name 'shortcut-fe-cm.ko'; then ln -sf ../init.d/shortcut-fe S99shortcut-fe fi fi ) # move /etc/config/balance_irq to /etc/balance_irq [ -f "./etc/config/balance_irq" ] && mv ./etc/config/balance_irq ./etc/ sync echo "create the first etc snapshot -> .snapshots/etc-000" btrfs subvolume snapshot -r etc .snapshots/etc-000 [ -d ${SHFS}/docker ] || mkdir -p ${SHFS}/docker rm -rf opt/docker && ln -sf ${SHFS}/docker/ opt/docker if [ -f /mnt/${NEW_ROOT_NAME}/etc/config/AdGuardHome ]; then [ -d ${SHFS}/AdGuardHome/data ] || mkdir -p ${SHFS}/AdGuardHome/data if [ ! -L /usr/bin/AdGuardHome ]; then [ -d /usr/bin/AdGuardHome ] && cp -a /usr/bin/AdGuardHome/* ${SHFS}/AdGuardHome/ fi ln -sf ${SHFS}/AdGuardHome /mnt/${NEW_ROOT_NAME}/usr/bin/AdGuardHome fi sync echo "copy done" echo BACKUP_LIST=$(${P2}/usr/sbin/openwrt-backup -p) if [ $BR_FLAG -eq 1 ]; then echo -n "Restore your old config files ... " ( cd / eval tar czf ${NEW_ROOT_MP}/.reserved/openwrt_config.tar.gz "${BACKUP_LIST}" 2>/dev/null ) tar xzf ${NEW_ROOT_MP}/.reserved/openwrt_config.tar.gz [ -f ./etc/config/dockerman ] && sed -e "s/option wan_mode 'false'/option wan_mode 'true'/" -i ./etc/config/dockerman 2>/dev/null [ -f ./etc/config/dockerd ] && sed -e "s/option wan_mode '0'/option wan_mode '1'/" -i ./etc/config/dockerd 2>/dev/null [ -f ./etc/config/verysync ] && sed -e 's/config setting/config verysync/' -i ./etc/config/verysync # 还原 fstab cp -f .snapshots/etc-000/fstab ./etc/fstab cp -f .snapshots/etc-000/config/fstab ./etc/config/fstab # 还原 luci cp -f .snapshots/etc-000/config/luci ./etc/config/luci # 还原/etc/config/rpcd cp -f .snapshots/etc-000/config/rpcd ./etc/config/rpcd sync echo "done" echo fi cat >>./etc/crontabs/root </dev/null; then echo "sshd:x:22:sshd" >>./etc/group fi if ! grep "sshd:x:22:22:sshd:" ./etc/passwd >/dev/null; then echo "sshd:x:22:22:sshd:/var/run/sshd:/bin/false" >>./etc/passwd fi if ! grep "sshd:x:" ./etc/shadow >/dev/null; then echo "sshd:x:${ddd}:0:99999:7:::" >>./etc/shadow fi if [ $BR_FLAG -eq 1 ]; then if [ -x ./bin/bash ] && [ -f ./etc/profile.d/30-sysinfo.sh ]; then sed -e 's/\/bin\/ash/\/bin\/bash/' -i ./etc/passwd fi sync echo "done" echo fi sed -e "s/option hw_flow '1'/option hw_flow '0'/" -i ./etc/config/turboacc ( cd etc/rc.d rm -f S??shortcut-fe if grep "sfe_flow '1'" ../config/turboacc >/dev/null; then if find ../../lib/modules -name 'shortcut-fe-cm.ko'; then ln -sf ../init.d/shortcut-fe S99shortcut-fe fi fi ) # move /etc/config/balance_irq to /etc/balance_irq [ -f "./etc/config/balance_irq" ] && mv ./etc/config/balance_irq ./etc/ rm -f "./etc/rc.local.orig" "./etc/first_run.sh" "./etc/part_size" eval tar czf .reserved/openwrt_config.tar.gz "${BACKUP_LIST}" 2>/dev/null sync mv ./etc/rc.local ./etc/rc.local.orig cat >"./etc/rc.local" </dev/null 2>&1;then /etc/init.d/dockerd enable /etc/init.d/dockerd start fi if ! ls /etc/rc.d/S??dockerman >/dev/null 2>&1 && [ -f /etc/init.d/dockerman ];then /etc/init.d/dockerman enable /etc/init.d/dockerman start fi mv /etc/rc.local.orig /etc/rc.local chmod 755 /etc/rc.local exec /etc/rc.local exit EOF chmod 755 ./etc/rc.local* echo "create the second etc snapshot -> .snapshots/etc-001" btrfs subvolume snapshot -r etc .snapshots/etc-001 # 2021.04.01添加 # 强制锁定fstab,防止用户擅自修改挂载点 # 开启了快照功能之后,不再需要锁定fstab #chattr +ia ./etc/config/fstab cd ${WORK_DIR} echo "Start copy data from ${P2} to /boot ..." cd /boot echo -n "backup armbianEnv.txt ..." cp armbianEnv.txt /tmp/ echo -n "backup current dtb file ..." cp -v dtb/rockchip/${CURRENT_FDTFILE} /tmp/ echo -n "remove old boot files ..." rm -rf * echo "done" echo -n "copy new boot files ... " (cd ${P1} && tar cf - .) | tar xf - sync echo "done" echo echo -n "Update boot args ... " if [ -f /tmp/armbianEnv.txt ]; then ORIG_OVERLAYS=$(grep '^overlays=' /tmp/armbianEnv.txt) ORIG_USER_OVERLAYS=$(grep '^user_overlays=' /tmp/armbianEnv.txt) sed -e '/user_overlays=/d' -i armbianEnv.txt sed -e '/overlays=/d' -i armbianEnv.txt echo "$ORIG_OVERLAYS" >>armbianEnv.txt echo "$ORIG_USER_OVERLAYS" >>armbianEnv.txt fi sed -e '/fdtfile=/d' -i armbianEnv.txt sed -e '/rootdev=/d' -i armbianEnv.txt sed -e '/rootfstype=/d' -i armbianEnv.txt sed -e '/rootflags=/d' -i armbianEnv.txt case $SOC in l1pro | beikeyun) echo "fdtfile=/dtb/rockchip/${MYDTB_FDTFILE}" >>armbianEnv.txt ;; *) echo "fdtfile=rockchip/${MYDTB_FDTFILE}" >>armbianEnv.txt ;; esac cat >>armbianEnv.txt </dev/null } # 如果新的dtb文件不存在,则用旧的代替 if [ ! -f "dtb/rockchip/${MYDTB_FDTFILE}" ]; then echo "The new dtb file does not exist, replace it with the old one." cp -v /tmp/${CURRENT_FDTFILE} dtb/rockchip/${MYDTB_FDTFILE} fi sync echo "done" echo cd $WORK_DIR umount -f ${P1} ${P2} 2>/dev/null losetup -D 2>/dev/null rmdir ${P1} ${P2} 2>/dev/null rm -f ${IMG_NAME} 2>/dev/null rm -f sha256sums 2>/dev/null sync echo "Successfully updated, automatic restarting..." sleep 3 reboot exit 0 ================================================ FILE: luci-app-amlogic/root/usr/share/amlogic/amlogic_check_firmware.sh ================================================ #!/bin/bash #================================================================== # This file is licensed under the terms of the GNU General Public # License version 2. This program is licensed "as is" without any # warranty of any kind, whether express or implied. # # This file is a part of the luci-app-amlogic plugin # https://github.com/ophub/luci-app-amlogic # # Description: Check and update OpenWrt firmware # Copyright (C) 2021- https://github.com/unifreq/openwrt_packit # Copyright (C) 2021- https://github.com/ophub/luci-app-amlogic #================================================================== # Set a fixed value check_option="${1}" download_version="${2}" TMP_CHECK_DIR="/tmp/amlogic" AMLOGIC_SOC_FILE="/etc/flippy-openwrt-release" START_LOG="${TMP_CHECK_DIR}/amlogic_check_firmware.log" RUNNING_LOG="${TMP_CHECK_DIR}/amlogic_running_script.log" LOG_FILE="${TMP_CHECK_DIR}/amlogic.log" support_platform=("allwinner" "rockchip" "amlogic" "qemu-aarch64") LOGTIME="$(date "+%Y-%m-%d %H:%M:%S")" [[ -d ${TMP_CHECK_DIR} ]] || mkdir -p ${TMP_CHECK_DIR} # Clean the running log clean_running() { echo -e '' >${RUNNING_LOG} 2>/dev/null && sync } # Add log tolog() { echo -e "${1}" >${START_LOG} echo -e "${LOGTIME} ${1}" >>${LOG_FILE} [[ -n "${2}" && "${2}" -eq "1" ]] && clean_running && exit 1 } # Get the partition name of the root file system get_root_partition_name() { local paths=("/" "/overlay" "/rom") local partition_name for path in "${paths[@]}"; do partition_name=$(df "${path}" | awk 'NR==2 {print $1}' | awk -F '/' '{print $3}') [[ -n "${partition_name}" ]] && break done [[ -z "${partition_name}" ]] && tolog "Cannot find the root partition!" "1" echo "${partition_name}" } # Check running scripts, prohibit running concurrently this_running_log="3@OpenWrt update in progress, try again later!" running_script="$(cat ${RUNNING_LOG} 2>/dev/null | xargs)" if [[ -n "${running_script}" ]]; then run_num="$(echo "${running_script}" | awk -F "@" '{print $1}')" run_log="$(echo "${running_script}" | awk -F "@" '{print $2}')" fi if [[ -n "${run_log}" && "${run_num}" -ne "3" ]]; then echo -e "${run_log}" >${START_LOG} 2>/dev/null && sync && exit 1 else echo -e "${this_running_log}" >${RUNNING_LOG} 2>/dev/null && sync fi # Find the partition where root is located ROOT_PTNAME="$(get_root_partition_name)" # Find the disk where the partition is located, only supports mmcblk?p? sd?? hd?? vd?? and other formats case "${ROOT_PTNAME}" in mmcblk?p[1-4]) EMMC_NAME="$(echo ${ROOT_PTNAME} | awk '{print substr($1, 1, length($1)-2)}')" PARTITION_NAME="p" ;; [hsv]d[a-z][1-4]) EMMC_NAME="$(echo ${ROOT_PTNAME} | awk '{print substr($1, 1, length($1)-1)}')" PARTITION_NAME="" ;; nvme?n?p[1-4]) EMMC_NAME="$(echo ${ROOT_PTNAME} | awk '{print substr($1, 1, length($1)-2)}')" PARTITION_NAME="p" ;; *) tolog "Unable to recognize the disk type of ${ROOT_PTNAME}!" "1" ;; esac # Set the default download path FIRMWARE_DOWNLOAD_PATH="/mnt/${EMMC_NAME}${PARTITION_NAME}4" [ -d "${FIRMWARE_DOWNLOAD_PATH}/.luci-app-amlogic" ] || mkdir -p "${FIRMWARE_DOWNLOAD_PATH}/.luci-app-amlogic" # Check release file if [[ -s "${AMLOGIC_SOC_FILE}" ]]; then source "${AMLOGIC_SOC_FILE}" 2>/dev/null PLATFORM="${PLATFORM}" BOARD="${BOARD}" else tolog "${AMLOGIC_SOC_FILE} file is missing!" "1" fi if [[ -z "${PLATFORM}" || -z "$(echo "${support_platform[@]}" | grep -w "${PLATFORM}")" || -z "${BOARD}" ]]; then tolog "Missing [ PLATFORM / BOARD ] value in ${AMLOGIC_SOC_FILE} file." "1" fi tolog "PLATFORM: [ ${PLATFORM} ], BOARD: [ ${BOARD} ], Use in [ ${EMMC_NAME} ]" sleep 2 # 01. Query local version information tolog "01. Query version information..." # 01.01 Query the current version current_kernel_v="$(uname -r 2>/dev/null | grep -oE '^[1-9].[0-9]{1,3}.[0-9]+')" tolog "01.01 current version: ${current_kernel_v}" sleep 2 # 01.01 Version comparison main_line_version="$(echo ${current_kernel_v} | awk -F '.' '{print $1"."$2}')" # 01.02. Query the selected branch in the settings server_kernel_branch="$(uci get amlogic.config.amlogic_kernel_branch 2>/dev/null | grep -oE '^[1-9].[0-9]{1,3}')" if [[ -z "${server_kernel_branch}" ]]; then server_kernel_branch="${main_line_version}" uci set amlogic.config.amlogic_kernel_branch="${main_line_version}" 2>/dev/null uci commit amlogic 2>/dev/null fi if [[ "${server_kernel_branch}" != "${main_line_version}" ]]; then main_line_version="${server_kernel_branch}" tolog "01.02 Select branch: ${main_line_version}" sleep 2 fi # 01.03. Download server version documentation server_firmware_url="$(uci get amlogic.config.amlogic_firmware_repo 2>/dev/null)" [[ ! -z "${server_firmware_url}" ]] || tolog "01.03 The custom firmware download repo is invalid." "1" releases_tag_keywords="$(uci get amlogic.config.amlogic_firmware_tag 2>/dev/null)" [[ ! -z "${releases_tag_keywords}" ]] || tolog "01.04 The custom firmware tag keywords is invalid." "1" firmware_suffix="$(uci get amlogic.config.amlogic_firmware_suffix 2>/dev/null)" [[ ! -z "${firmware_suffix}" ]] || tolog "01.05 The custom firmware suffix is invalid." "1" if [[ "${server_firmware_url}" == http* ]]; then server_firmware_url="${server_firmware_url#*com\/}" fi # 02. Check Updated check_updated() { tolog "02.01 Search for tags in the first 5 pages of releases..." # Get the tags list firmware_tags_array=() for i in {1..5}; do while IFS= read -r firmware_tags_name; do firmware_tags_name="$(echo "${firmware_tags_name}" | sed 's/releases\/tag\///g')" if [[ -n "${firmware_tags_name}" ]]; then firmware_tags_array+=("${firmware_tags_name}") fi done < <( curl -fsSL -m 10 \ https://github.com/${server_firmware_url}/releases?page=${i} | grep -oE 'releases/tag/([^" ]+)' ) done if [[ "${#firmware_tags_array[*]}" -eq "0" ]]; then tolog "02.01.01 Unable to retrieve a list of firmware tags." "1" fi tolog "02.02 Search for tags containing the keyword..." # Search for tags containing the keyword for i in "${firmware_tags_array[@]}"; do if [[ "${i}" == *"${releases_tag_keywords}"* ]]; then firmware_releases_tag="${i}" break fi done if [[ -n "${firmware_releases_tag}" ]]; then tolog "02.02.01 Tags: ${firmware_releases_tag}" sleep 2 else tolog "02.02.01 No matching tags found." "1" fi tolog "02.03 Start searching for firmware download links..." # Retrieve the HTML code of the tags list page html_code="$( curl -fsSL -m 10 \ https://github.com/${server_firmware_url}/releases/expanded_assets/${firmware_releases_tag} )" # Set the regular expression for the OpenWrt filename op_file_pattern=".*_${BOARD}_.*k${main_line_version}\.[0-9]+.*${firmware_suffix}" # Find the
  • list item where the OpenWrt file is located li_block=$(awk -v pattern="${op_file_pattern}" -v RS='
  • ' '$0 ~ pattern { print $0 ""; exit }' <<<"${html_code}") [[ -z "${li_block}" ]] && tolog "02.03.01 No matching download links found." "1" # Find the OpenWrt filename latest_url=$(echo "${li_block}" | grep -oE "/[^\"]*_${BOARD}_.*k${main_line_version}\.[0-9]+[^\"]*${firmware_suffix}" | sort -urV | head -n 1 | xargs basename 2>/dev/null) tolog "02.03.02 OpenWrt file: ${latest_url}" # Find the date of the latest update latest_updated_at=$(echo "${li_block}" | grep -o 'datetime="[^"]*"' | sed 's/datetime="//; s/"//') tolog "02.03.03 Latest updated at: ${latest_updated_at}" # Format the date for display date_display_format="$(echo ${latest_updated_at} | tr 'T' '(' | tr 'Z' ')')" [[ -z "${latest_url}" || -z "${latest_updated_at}" ]] && tolog "02.03.04 The download URL or date is invalid." "1" # Find the firmware sha256 value latest_firmware_sha256="$(echo "${li_block}" | grep -o 'value="sha256:[^"]*' | sed 's/value="sha256://')" tolog "02.03.05 OpenWrt sha256: ${latest_firmware_sha256}" # Check the firmware update code down_check_code="${latest_updated_at}.${main_line_version}" op_release_code="${FIRMWARE_DOWNLOAD_PATH}/.luci-app-amlogic/op_release_code" if [[ -s "${op_release_code}" ]]; then update_check_code="$(cat ${op_release_code} | xargs)" if [[ -n "${update_check_code}" && "${update_check_code}" == "${down_check_code}" ]]; then tolog "02.04 Already the latest version, no need to update." "1" fi fi # Prompt to update if [[ -n "${latest_url}" ]]; then tolog ' Latest updated: '${date_display_format}'' "1" else tolog "02.05 No OpenWrt available, please use another kernel branch." "1" fi exit 0 } # 03. Download Openwrt download_firmware() { tolog "03. Start download the Openwrt..." # Get the openwrt firmware download path if [[ "${download_version}" == "download_"* ]]; then tolog "03.01 Start downloading..." else tolog "03.01 Invalid parameter." "1" fi # Delete other residual firmware files rm -f ${FIRMWARE_DOWNLOAD_PATH}/*${firmware_suffix} 2>/dev/null && sync rm -f ${FIRMWARE_DOWNLOAD_PATH}/*.img 2>/dev/null && sync rm -f ${FIRMWARE_DOWNLOAD_PATH}/sha256sums 2>/dev/null && sync # OpenWrt make data latest_updated_at="$(echo ${download_version} | awk -F'@' '{print $1}' | sed -e s'|download_||'g)" down_check_code="${latest_updated_at}.${main_line_version}" # Download firmware opfile_path="$(echo ${download_version} | awk -F'@' '{print $2}')" # Restore converted characters in file names(%2B to +) firmware_download_oldname="${opfile_path//%2B/+}" latest_url="https://github.com/${server_firmware_url}/releases/download/${firmware_download_oldname}" # Find the firmware sha256 value releases_firmware_sha256sums="$(echo ${download_version} | awk -F'@' '{print $3}')" # Download to OpenWrt file firmware_download_name="openwrt_${BOARD}_k${main_line_version}_github${firmware_suffix}" curl -fsSL "${latest_url}" -o "${FIRMWARE_DOWNLOAD_PATH}/${firmware_download_name}" if [[ "$?" -eq "0" && -s "${FIRMWARE_DOWNLOAD_PATH}/${firmware_download_name}" ]]; then tolog "03.02 OpenWrt downloaded successfully." else tolog "03.02 OpenWrt download failed." "1" fi # Verify sha256sums if available if [[ -n "${releases_firmware_sha256sums}" ]]; then tolog "03.03 Perform sha256 checksum verification." # If there is a sha256sum file, compare it download_firmware_sha256sums="$(sha256sum ${FIRMWARE_DOWNLOAD_PATH}/${firmware_download_name} | awk '{print $1}')" if [[ "${releases_firmware_sha256sums}" != "${download_firmware_sha256sums}" ]]; then tolog "03.03.01 sha256sum verification mismatched." "1" else tolog "03.03.02 sha256sum verification succeeded." fi fi sync && sleep 3 tolog "You can update." tolog '' "1" exit 0 } getopts 'cd' opts case "${opts}" in c | check) check_updated ;; * | download) download_firmware ;; esac ================================================ FILE: luci-app-amlogic/root/usr/share/amlogic/amlogic_check_kernel.sh ================================================ #!/bin/bash #================================================================== # This file is licensed under the terms of the GNU General Public # License version 2. This program is licensed "as is" without any # warranty of any kind, whether express or implied. # # This file is a part of the luci-app-amlogic plugin # https://github.com/ophub/luci-app-amlogic # # Description: Check and update OpenWrt Kernel # Copyright (C) 2021- https://github.com/unifreq/openwrt_packit # Copyright (C) 2021- https://github.com/ophub/luci-app-amlogic #================================================================== # Set a fixed value check_option="${1}" download_version="${2}" TMP_CHECK_DIR="/tmp/amlogic" AMLOGIC_SOC_FILE="/etc/flippy-openwrt-release" START_LOG="${TMP_CHECK_DIR}/amlogic_check_kernel.log" RUNNING_LOG="${TMP_CHECK_DIR}/amlogic_running_script.log" LOG_FILE="${TMP_CHECK_DIR}/amlogic.log" support_platform=("allwinner" "rockchip" "amlogic" "qemu-aarch64") LOGTIME="$(date "+%Y-%m-%d %H:%M:%S")" [[ -d ${TMP_CHECK_DIR} ]] || mkdir -p ${TMP_CHECK_DIR} # Clean the running log clean_running() { echo -e '' >${RUNNING_LOG} 2>/dev/null && sync } # Add log tolog() { echo -e "${1}" >${START_LOG} echo -e "${LOGTIME} ${1}" >>${LOG_FILE} [[ -n "${2}" && "${2}" -eq "1" ]] && clean_running && exit 1 } # Get the partition name of the root file system get_root_partition_name() { local paths=("/" "/overlay" "/rom") local partition_name for path in "${paths[@]}"; do partition_name=$(df "${path}" | awk 'NR==2 {print $1}' | awk -F '/' '{print $3}') [[ -n "${partition_name}" ]] && break done [[ -z "${partition_name}" ]] && tolog "Cannot find the root partition!" "1" echo "${partition_name}" } # Check running scripts, prohibit running concurrently this_running_log="2@Kernel update in progress, try again later!" running_script="$(cat ${RUNNING_LOG} 2>/dev/null | xargs)" if [[ -n "${running_script}" ]]; then run_num="$(echo "${running_script}" | awk -F "@" '{print $1}')" run_log="$(echo "${running_script}" | awk -F "@" '{print $2}')" fi if [[ -n "${run_log}" && "${run_num}" -ne "2" ]]; then echo -e "${run_log}" >${START_LOG} 2>/dev/null && sync && exit 1 else echo -e "${this_running_log}" >${RUNNING_LOG} 2>/dev/null && sync fi # Find the partition where root is located ROOT_PTNAME="$(get_root_partition_name)" # Find the disk where the partition is located, only supports mmcblk?p? sd?? hd?? vd?? and other formats case "${ROOT_PTNAME}" in mmcblk?p[1-4]) EMMC_NAME="$(echo ${ROOT_PTNAME} | awk '{print substr($1, 1, length($1)-2)}')" PARTITION_NAME="p" ;; [hsv]d[a-z][1-4]) EMMC_NAME="$(echo ${ROOT_PTNAME} | awk '{print substr($1, 1, length($1)-1)}')" PARTITION_NAME="" ;; nvme?n?p[1-4]) EMMC_NAME="$(echo ${ROOT_PTNAME} | awk '{print substr($1, 1, length($1)-2)}')" PARTITION_NAME="p" ;; *) tolog "Unable to recognize the disk type of ${ROOT_PTNAME}!" "1" ;; esac # Set the default download path KERNEL_DOWNLOAD_PATH="/mnt/${EMMC_NAME}${PARTITION_NAME}4" # Check release file if [[ -s "${AMLOGIC_SOC_FILE}" ]]; then source "${AMLOGIC_SOC_FILE}" 2>/dev/null PLATFORM="${PLATFORM}" else tolog "${AMLOGIC_SOC_FILE} file is missing!" "1" fi if [[ -z "${PLATFORM}" || -z "$(echo "${support_platform[@]}" | grep -w "${PLATFORM}")" ]]; then tolog "Missing [ PLATFORM ] value in ${AMLOGIC_SOC_FILE} file." "1" fi tolog "PLATFORM: [ ${PLATFORM} ], Use in [ ${EMMC_NAME} ]" sleep 2 # Step 1. Set the kernel query api tolog "01. Start checking the kernel repository." firmware_repo="$(uci get amlogic.config.amlogic_firmware_repo 2>/dev/null)" [[ -n "${firmware_repo}" ]] || tolog "01.01 The custom kernel download repo is invalid." "1" kernel_repo="$(uci get amlogic.config.amlogic_kernel_path 2>/dev/null)" [[ -n "${kernel_repo}" ]] || tolog "01.02 The custom kernel download repo is invalid." "1" if [[ "${kernel_repo}" == "opt/kernel" ]]; then uci set amlogic.config.amlogic_kernel_path="${firmware_repo}" 2>/dev/null uci commit amlogic 2>/dev/null kernel_repo="${firmware_repo}" fi # Convert kernel repo to api format [[ "${kernel_repo}" =~ ^https: ]] && kernel_repo="$(echo ${kernel_repo} | awk -F'/' '{print $4"/"$5}')" kernel_api="https://github.com/${kernel_repo}" tolog "01.03 Kernel repo: ${kernel_repo}" # Get the current kernel uname kernel_uname="$(uname -r 2>/dev/null)" tolog "01.04 Current kernel uname: ${kernel_uname}" # Get the kernel tag from uci config op_kernel_tags="$(uci get amlogic.config.amlogic_kernel_tags 2>/dev/null)" # Determine the kernel tag if [[ -n "${op_kernel_tags}" ]]; then kernel_tag="${op_kernel_tags/kernel_/}" else # Determine the kernel tag based on the current kernel uname if [[ "${kernel_uname}" =~ -rk3588 ]]; then kernel_tag="rk3588" elif [[ "${kernel_uname}" =~ -rk35xx ]]; then kernel_tag="rk35xx" elif [[ "${kernel_uname}" =~ -flippy ]]; then kernel_tag="flippy" elif [[ "${kernel_uname}" =~ -h6|-zicai ]]; then kernel_tag="h6" else kernel_tag="stable" fi # Save the kernel tag to uci config uci set amlogic.config.amlogic_kernel_tags="kernel_${kernel_tag}" 2>/dev/null uci commit amlogic 2>/dev/null fi tolog "01.05 Kernel tag: kernel_${kernel_tag}" sleep 2 # Step 2: Check if there is the latest kernel version check_kernel() { # 02. Query local version information tolog "02. Start checking the kernel version." # 02.01 Get current kernel version [[ ! "${kernel_tag}" =~ ^(rk3588|rk35xx)$ ]] && kernel_uname="$(echo "${kernel_uname}" | cut -d'-' -f1)" [[ -n "${kernel_uname}" ]] || tolog "02.01 The current kernel version is not detected." "1" tolog "02.01 current version: ${kernel_uname}" sleep 2 # 02.02 Version comparison main_line_version="$(echo ${kernel_uname} | awk -F '.' '{print $1"."$2}')" # 02.03 Query the selected branch in the settings server_kernel_branch="$(uci get amlogic.config.amlogic_kernel_branch 2>/dev/null | grep -oE '^[1-9].[0-9]{1,3}')" if [[ -z "${server_kernel_branch}" ]]; then server_kernel_branch="${main_line_version}" uci set amlogic.config.amlogic_kernel_branch="${main_line_version}" 2>/dev/null uci commit amlogic 2>/dev/null fi if [[ "${server_kernel_branch}" != "${main_line_version}" ]]; then main_line_version="${server_kernel_branch}" main_line_now="0" tolog "02.02 Select branch: ${main_line_version}" sleep 2 fi # Check the version on the server latest_version="$( curl -fsSL -m 10 \ ${kernel_api}/releases/expanded_assets/kernel_${kernel_tag} | grep -oE "${main_line_version}\.[0-9]+[^\"]*\.tar\.gz" | sed 's/.tar.gz//' | sort -urV | head -n 1 )" [[ -n "${latest_version}" ]] || tolog "02.03 No kernel available, please use another kernel branch." "1" tolog "02.04 current version: ${kernel_uname}, Latest version: ${latest_version}" sleep 2 # Get the sha256 value of the latest version latest_kernel_sha256="$( curl -fsSL -m 10 \ ${kernel_api}/releases/expanded_assets/kernel_${kernel_tag} | awk -v pattern="${latest_version}\.tar\.gz" -v RS='' '$0 ~ pattern { print $0 ""; exit }' | grep -o 'value="sha256:[^"]*' | sed 's/value="sha256://' )" [[ -n "${latest_kernel_sha256}" ]] && tolog "02.05 Kernel sha256: ${latest_kernel_sha256}" if [[ "${latest_version}" == "${kernel_uname}" ]]; then tolog "02.06 Already the latest version, no need to update." "1" sleep 2 else tolog ' Latest version: '${latest_version}'' "1" fi exit 0 } # Step 3: Download the latest kernel version download_kernel() { tolog "03. Start download the kernel file." if [[ "${download_version}" == "download_"* ]]; then tolog "03.01 Start downloading..." else tolog "03.01 Invalid parameter" "1" fi # Get the kernel file name kernel_file_name="$(echo "${download_version}" | cut -d '_' -f2)" # Restore converted characters in file names(%2B to +) kernel_file_name="${kernel_file_name//%2B/+}" # Get the sha256 value kernel_file_sha256="$(echo "${download_version}" | cut -d '_' -f3)" # Delete other residual kernel files rm -f ${KERNEL_DOWNLOAD_PATH}/*.tar.gz rm -f ${KERNEL_DOWNLOAD_PATH}/sha256sums rm -rf ${KERNEL_DOWNLOAD_PATH}/${kernel_file_name}* kernel_down_from="https://github.com/${kernel_repo}/releases/download/kernel_${kernel_tag}/${kernel_file_name}.tar.gz" curl -fsSL "${kernel_down_from}" -o ${KERNEL_DOWNLOAD_PATH}/${kernel_file_name}.tar.gz [[ "${?}" -ne "0" ]] && tolog "03.02 The kernel download failed." "1" # Verify sha256 if [[ -n "${kernel_file_sha256}" ]]; then tolog "03.03 Perform sha256 checksum verification." download_kernel_sha256sums="$(sha256sum ${KERNEL_DOWNLOAD_PATH}/${kernel_file_name}.tar.gz | awk '{print $1}')" if [[ "${kernel_file_sha256}" != "${download_kernel_sha256sums}" ]]; then tolog "03.03.01 sha256sum verification mismatched." "1" else tolog "03.03.02 sha256sum verification succeeded." fi fi # Decompress the kernel package tolog "03.04 Start decompressing the kernel package..." tar -xf ${KERNEL_DOWNLOAD_PATH}/${kernel_file_name}.tar.gz -C ${KERNEL_DOWNLOAD_PATH} [[ "${?}" -ne "0" ]] && tolog "03.05 Kernel decompression failed." "1" mv -f ${KERNEL_DOWNLOAD_PATH}/${kernel_file_name}/* ${KERNEL_DOWNLOAD_PATH}/ sync && sleep 3 # Delete the downloaded kernel file rm -f ${KERNEL_DOWNLOAD_PATH}/${kernel_file_name}.tar.gz rm -rf ${KERNEL_DOWNLOAD_PATH}/${kernel_file_name} tolog "03.06 The kernel is ready, you can update." sleep 2 #echo 'Update' >$START_LOG tolog '' "1" exit 0 } getopts 'cd' opts case "${opts}" in c | check) check_kernel ;; * | download) download_kernel ;; esac ================================================ FILE: luci-app-amlogic/root/usr/share/amlogic/amlogic_check_plugin.sh ================================================ #!/bin/bash #================================================================== # This file is licensed under the terms of the GNU General Public # License version 2. This program is licensed "as is" without any # warranty of any kind, whether express or implied. # # This file is a part of the luci-app-amlogic plugin # https://github.com/ophub/luci-app-amlogic # # Description: Check and update luci-app-amlogic plugin # Copyright (C) 2021- https://github.com/unifreq/openwrt_packit # Copyright (C) 2021- https://github.com/ophub/luci-app-amlogic #================================================================== # Set a fixed value check_option="${1}" download_version="${2}" TMP_CHECK_DIR="/tmp/amlogic" AMLOGIC_SOC_FILE="/etc/flippy-openwrt-release" AMLOGIC_CONFIG_FILE="/etc/config/amlogic" START_LOG="${TMP_CHECK_DIR}/amlogic_check_plugin.log" RUNNING_LOG="${TMP_CHECK_DIR}/amlogic_running_script.log" LOG_FILE="${TMP_CHECK_DIR}/amlogic.log" support_platform=("allwinner" "rockchip" "amlogic" "qemu-aarch64") LOGTIME="$(date "+%Y-%m-%d %H:%M:%S")" [[ -d ${TMP_CHECK_DIR} ]] || mkdir -p ${TMP_CHECK_DIR} # Clean the running log clean_running() { echo -e '' >${RUNNING_LOG} 2>/dev/null && sync } # Add log tolog() { echo -e "${1}" >${START_LOG} echo -e "${LOGTIME} ${1}" >>${LOG_FILE} [[ -n "${2}" && "${2}" -eq "1" ]] && clean_running && exit 1 } # Check running scripts, prohibit running concurrently this_running_log="1@Plugin update in progress, try again later!" running_script="$(cat ${RUNNING_LOG} 2>/dev/null | xargs)" if [[ -n "${running_script}" ]]; then run_num="$(echo "${running_script}" | awk -F "@" '{print $1}')" run_log="$(echo "${running_script}" | awk -F "@" '{print $2}')" fi if [[ -n "${run_log}" && "${run_num}" -ne "1" ]]; then echo -e "${run_log}" >${START_LOG} 2>/dev/null && sync && exit 1 else echo -e "${this_running_log}" >${RUNNING_LOG} 2>/dev/null && sync fi # Check release file if [[ -s "${AMLOGIC_SOC_FILE}" ]]; then source "${AMLOGIC_SOC_FILE}" 2>/dev/null PLATFORM="${PLATFORM}" else tolog "${AMLOGIC_SOC_FILE} file is missing!" "1" fi if [[ -z "${PLATFORM}" || -z "$(echo "${support_platform[@]}" | grep -w "${PLATFORM}")" ]]; then tolog "Missing [ PLATFORM ] value in ${AMLOGIC_SOC_FILE} file." "1" fi tolog "PLATFORM: [ ${PLATFORM} ]" sleep 2 # Read plugin branch from UCI config; default to "" (main-lua) when missing or empty # When amlogic_plugin_branch is missing, add it with empty value (main-lua default) if [[ -f "${AMLOGIC_CONFIG_FILE}" ]]; then plugin_branch="$(uci get amlogic.config.amlogic_plugin_branch 2>/dev/null | xargs)" if ! grep -q "amlogic_plugin_branch" "${AMLOGIC_CONFIG_FILE}" 2>/dev/null; then uci set amlogic.config.amlogic_plugin_branch='' 2>/dev/null uci commit amlogic 2>/dev/null plugin_branch="" fi else plugin_branch="" fi tolog "Plugin branch: [ ${plugin_branch:-main-lua} ]" sleep 1 get_plugin_info() { package_manager="" current_plugin_v="" current_plugin_release="" if command -v opkg >/dev/null 2>&1; then package_manager="ipk" # Full version string e.g. "3.1.295-1" or "3.1.295-2" local full_v full_v="$(opkg list-installed | grep '^luci-app-amlogic ' | awk '{print $3}')" current_plugin_v="$(echo "${full_v}" | cut -d'-' -f1)" current_plugin_release="$(echo "${full_v}" | cut -d'-' -f2)" elif command -v apk >/dev/null 2>&1; then package_manager="apk" # Package name e.g. "luci-app-amlogic-3.1.295-r2" # Fields: luci(1) app(2) amlogic(3) 3.1.295(4) r2(5) local pkg_name pkg_name="$(apk list --installed | grep '^luci-app-amlogic-' | awk '{print $1}')" current_plugin_v="$(echo "${pkg_name}" | cut -d'-' -f4)" # Extract release number: "r2" -> "2" current_plugin_release="$(echo "${pkg_name}" | cut -d'-' -f5 | sed 's/^r//')" fi } # Step 2: Check if there is the latest plugin version check_plugin() { tolog "01. Query current version information." get_plugin_info if [[ -z "${package_manager}" || -z "${current_plugin_v}" ]]; then tolog "01.01 Plugin 'luci-app-amlogic' not found or package manager unknown." "1" else tolog "01.01 Using [${package_manager}]. Current version: ${current_plugin_v}, Release: ${current_plugin_release:-unknown}" fi sleep 2 tolog "02. Start querying plugin version..." if [[ "${plugin_branch}" == "js" ]]; then latest_version="$( curl -fsSL -m 10 \ https://github.com/ophub/luci-app-amlogic/releases | grep -oE 'expanded_assets/[0-9]+\.[0-9]+\.[0-9]+-js' | sed 's|expanded_assets/||g' | sort -urV | head -n 1 )" else latest_version="$( curl -fsSL -m 10 \ https://github.com/ophub/luci-app-amlogic/releases | grep -oE 'expanded_assets/[0-9]+\.[0-9]+\.[0-9]+' | sed 's|expanded_assets/||g' | grep -v '\-js' | sort -urV | head -n 1 )" fi if [[ -z "${latest_version}" ]]; then tolog "02.01 Query failed, please try again." "1" fi tolog "02.01 Current version: ${current_plugin_v}, Latest version: ${latest_version}" sleep 2 # Strip variant suffix (e.g. "-js") from latest_version to get the numeric part. latest_version_base="${latest_version%%-*}" # Determine target PKG_RELEASE for the selected branch: # js branch -> release 2 # lua branch -> release 1 if [[ "${plugin_branch}" == "js" ]]; then target_release="2" else target_release="1" fi # Only report "already latest" when BOTH the version number AND the installed # branch (PKG_RELEASE) match the selected branch. If the user switched branches # (same version number but different release), we still offer an update. if [[ "${current_plugin_v}" == "${latest_version_base}" && "${current_plugin_release}" == "${target_release}" ]]; then tolog "02.02 Already the latest version, no need to update." "1" else tolog ' Latest version: '${latest_version}'' "1" fi exit 0 } # Step 3: Download the latest plugin version download_plugin() { tolog "03. Start downloading the plugin file." if [[ "${download_version}" == "download_"* ]]; then tolog "03.01 Start downloading..." else tolog "03.01 Invalid parameter." "1" fi # Extract version from parameter (e.g. "download_3.1.290" -> "3.1.290") latest_version="$(echo "${download_version}" | cut -d '_' -f2-)" get_plugin_info if [[ -z "${package_manager}" ]]; then tolog "03.02 Package manager not found." "1" fi tolog "03.02 Package manager: ${package_manager}, Version to download: ${latest_version}" # Clean up previous downloads rm -f ${TMP_CHECK_DIR}/*.ipk 2>/dev/null rm -f ${TMP_CHECK_DIR}/*.apk 2>/dev/null rm -f ${TMP_CHECK_DIR}/sha256sums 2>/dev/null sync download_repo="https://github.com/ophub/luci-app-amlogic/releases/download" # Use GitHub API to find exact filenames if ! command -v jq >/dev/null 2>&1; then tolog "03.03 jq not found, cannot query GitHub API." "1" fi tolog "03.03 Querying GitHub API for release assets..." api_url="https://api.github.com/repos/ophub/luci-app-amlogic/releases/tags/${latest_version}" asset_list="$(curl -fsSL -m 15 "${api_url}" | jq -r '.assets[].name' | xargs)" if [[ -z "${asset_list}" ]]; then tolog "03.03 Failed to fetch release assets from GitHub API." "1" fi plugin_file_name="$(echo "${asset_list}" | tr ' ' '\n' | grep -oE "^luci-app-amlogic.*${package_manager}$" | head -n 1)" lang_file_list=($(echo "${asset_list}" | tr ' ' '\n' | grep -oE "^luci-i18n-amlogic.*${package_manager}$")) if [[ -z "${plugin_file_name}" ]]; then tolog "03.04 Could not find plugin file (.${package_manager}) in release assets." "1" fi tolog "03.04 Plugin file: ${plugin_file_name}" # Download the main plugin file plugin_full_url="${download_repo}/${latest_version}/${plugin_file_name}" tolog "03.05 Downloading main plugin..." curl -fsSL "${plugin_full_url}" -o "${TMP_CHECK_DIR}/${plugin_file_name}" [[ "${?}" -ne "0" ]] && tolog "03.05 Plugin [ ${plugin_file_name} ] download failed." "1" # Download language packs for langfile in "${lang_file_list[@]}"; do lang_full_url="${download_repo}/${latest_version}/${langfile}" tolog "03.06 Downloading language pack [ ${langfile} ]..." curl -fsSL "${lang_full_url}" -o "${TMP_CHECK_DIR}/${langfile}" [[ "${?}" -ne "0" ]] && tolog "03.06 Language pack [ ${langfile} ] download failed." "1" done # The .apk filename uses tilde (~) instead of dot before the hash suffix for file in ${TMP_CHECK_DIR}/*.apk; do [[ -f "${file}" ]] || continue base_name="$(basename "${file}")" new_name="$(echo "${base_name}" | sed -E 's/\.([a-f0-9]{7}\.apk)/~\1/')" if [[ "${base_name}" != "${new_name}" ]]; then mv -f "${file}" "${TMP_CHECK_DIR}/${new_name}" || true fi done sync && sleep 2 tolog "03.07 The plugin is ready, you can update." sleep 2 tolog ' Latest version: '${latest_version}'' "1" exit 0 } getopts 'cd' opts case "${opts}" in c | check) check_plugin ;; * | download) download_plugin ;; esac ================================================ FILE: luci-app-amlogic/root/usr/share/rpcd/acl.d/luci-app-amlogic.json ================================================ { "luci-app-amlogic": { "description": "Grant UCI access for luci-app-amlogic", "read": { "uci": [ "amlogic" ] }, "write": { "uci": [ "amlogic" ] } } } ================================================ FILE: luci-app-autoipsetadder/Makefile ================================================ # Copyright (C) 2018-2019 Lienol # # This is free software, licensed under the Apache License, Version 2.0 . # include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-autoipsetadder PKG_VERSION:=1.0 PKG_RELEASE:=7 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME) include $(INCLUDE_DIR)/package.mk define Package/luci-app-autoipsetadder SECTION:=luci CATEGORY:=LuCI SUBMENU:=3. Applications TITLE:=LuCI Support for autoipsetadder PKGARCH:=all DEPENDS:= +httping +curl endef define Package/luci-app-autoipsetadder/description LuCI support for autoipsetadder endef define Build/Prepare endef define Build/Compile endef define Package/luci-app-autoipsetadder/conffiles /etc/config/autoipsetadder endef define Package/luci-app-autoipsetadder/install $(INSTALL_DIR) $(1)/usr/lib/lua/luci cp -pR ./luasrc/* $(1)/usr/lib/lua/luci $(INSTALL_DIR) $(1)/ cp -pR ./root/* $(1)/ endef define Package/luci-app-autoipsetadder/postinst #!/bin/sh /etc/init.d/autoipsetadder enable >/dev/null 2>&1 /etc/init.d/autoipsetadder start rm -f /tmp/luci-indexcache rm -f /tmp/luci-modulecache/* exit 0 endef define Package/luci-app-autoipsetadder/prerm #!/bin/sh if [ -z "$${IPKG_INSTROOT}" ]; then /etc/init.d/autoipsetadder disable /etc/init.d/autoipsetadder stop fi exit 0 endef $(eval $(call BuildPackage,luci-app-autoipsetadder)) ================================================ FILE: luci-app-autoipsetadder/luasrc/controller/autoipsetadder.lua ================================================ module("luci.controller.autoipsetadder",package.seeall) local io = require "io" local fs=require"nixio.fs" local sys=require"luci.sys" local uci=require"luci.model.uci".cursor() function index() entry({"admin","services","autoipsetadder"},firstchild(),_("autoipsetadder"),30).dependent=true entry({"admin","services","autoipsetadder","autoipsetadder"},cbi("autoipsetadder"),_("Base Setting"),1) entry({"admin","services","autoipsetadder","status"},call("act_status")).leaf=true entry({"admin", "services", "autoipsetadder", "getlog"}, call("get_log")) entry({"admin", "services", "autoipsetadder", "dodellog"}, call("do_del_log")) entry({"admin", "services", "autoipsetadder", "debugip"}, call("do_debug_ip")) end function act_status() local e={} e.running=luci.sys.call("pgrep -f /usr/bin/autoipsetadder/autoaddlist.sh >/dev/null")==0 luci.http.prepare_content("application/json") luci.http.write_json(e) end function do_del_log() local logfile=uci:get("autoipsetadder","autoipsetadder","logfile") or "/tmp/addlist.log" nixio.fs.writefile(logfile,"") luci.http.prepare_content("application/json") luci.http.write('') end function do_debug_ip() luci.http.prepare_content("text/plain; charset=utf-8") local a=sys.exec("/usr/bin/autoipsetadder/debugip.sh") if (a=="") then a="noproblem" end luci.http.write(a) end function get_log() local logfile,fdp logfile=uci:get("autoipsetadder","autoipsetadder","logfile") or "/tmp/addlist.log" luci.http.prepare_content("text/plain; charset=utf-8") if not fs.access(logfile) then luci.http.write("") return end if fs.access("/var/run/lucilogreload") then fdp=0 fs.remove("/var/run/lucilogreload") else fdp=tonumber(fs.readfile("/var/run/lucilogpos")) or 0 end local f=io.open(logfile, "r+") f:seek("set",fdp) local a=f:read(2048000) or "" fdp=f:seek() fs.writefile("/var/run/lucilogpos",tostring(fdp)) f:close() luci.http.write(a) end ================================================ FILE: luci-app-autoipsetadder/luasrc/model/cbi/autoipsetadder.lua ================================================ require("luci.sys") require("luci.util") local fs=require"nixio.fs" local uci=require"luci.model.uci".cursor() local m,s,o m = Map("autoipsetadder", translate("ipsetautoadder")) m.description = translate("自动将联不通的域名加入ipset") m:section(SimpleSection).template = "autoipsetadder/status" s = m:section(TypedSection, "autoipsetadder") s.anonymous=true s.addremove=false ---- enable o = s:option(Flag, "enabled", translate("启用")) o.default = 0 o.rmempty = false ---- logview o=s:option(TextValue, "show", "日志") o.template = "autoipsetadder/check" ---- logpath o = s:option(Value, "logfile", translate("Runtime log file")) o.datatype = "string" o.default="/tmp/addlist.log" o.optional = false o.validate=function(self, value) if fs.stat(value,"type")=="dir" then fs.rmdir(value) end if fs.stat(value,"type")=="dir" then if m.message then m.message =m.message.."\nerror!log file is a dir" else m.message ="error!log file is a dir" end return nil end return value end ---- dnsmasq log o = s:option(Value, "dnslogfile", translate("dnsmasq log file")) o.datatype = "string" o.optional = false o.default="/tmp/dnsmasq.log" o.validate=function(self, value) if fs.stat(value,"type")=="dir" then fs.rmdir(value) end if fs.stat(value,"type")=="dir" then if m.message then m.message =m.message.."\nerror!log file is a dir" else m.message ="error!log file is a dir" end return nil end return value end ---- crontab o = s:option(MultiValue, "crontab", translate("Crontab task"),translate("Please change time and args in crontab")) o:value("autodeldnslog",translate("Auto del dnsmasq log")) o:value("autotaillog",translate("Auto tail runtime log")) o.widget = "checkbox" o.default = "autodeldnslog autotaillog" o.rmempty= true o = s:option(MultiValue, "config", translate("the way add to gfwlist")) o:value("nochina",translate("no china ip")) o:value("pingadd",translate("5ping loss1-4")) o:value("packetpass",translate("packet >12 pass")) o.widget = "checkbox" o.default = "nochina pingadd packetpass" o.rmempty=true ---- apply nixio.fs.writefile("/var/run/lucilogreload","") function m.on_commit(map) local ucitracktest=uci:get("autoipsetadder","autoipsetadder","ucitracktest") if ucitracktest=="1" then return elseif ucitracktest=="0" then io.popen("/etc/init.d/autoipsetadder reload &") else if (fs.access("/var/run/AdGucitest")) then uci:set("autoipsetadder","autoipsetadder","ucitracktest","0") io.popen("/etc/init.d/autoipsetadder reload &") else fs.writefile("/var/run/AdGucitest","") if (ucitracktest=="2") then uci:set("autoipsetadder","autoipsetadder","ucitracktest","1") else uci:set("autoipsetadder","autoipsetadder","ucitracktest","2") end end uci:save("autoipsetadder") uci:commit("autoipsetadder") end end return m ================================================ FILE: luci-app-autoipsetadder/luasrc/view/autoipsetadder/check.htm ================================================ <%+cbi/valueheader%> <%uci=require"luci.model.uci".cursor()%> <%nixio=require"nixio"%> <%if uci:get("autoipsetadder","autoipsetadder","enabled")=="1" then%> <%:reverse%> <%end%> <%+cbi/valuefooter%> ================================================ FILE: luci-app-autoipsetadder/luasrc/view/autoipsetadder/status.htm ================================================

    <%:Collecting data...%>

    ================================================ FILE: luci-app-autoipsetadder/root/etc/config/autoipsetadder ================================================ config autoipsetadder 'autoipsetadder' option enabled '0' ================================================ FILE: luci-app-autoipsetadder/root/etc/init.d/autoipsetadder ================================================ #!/bin/sh /etc/rc.common USE_PROCD=1 START=99 STOP=01 CRON_FILE=/etc/crontabs/root CONFIGURATION=autoipsetadder EXTRA_COMMANDS="test_crontab" EXTRA_HELP=" test_crontab" set_dnsmasq_log() { sed -i '/log-facility/d' /etc/dnsmasq.conf sed -i '/log-queries/d' /etc/dnsmasq.conf uci set dhcp.@dnsmasq[0].logfacility='/tmp/dnsmasq.log' uci delete dhcp.@dnsmasq[0].logqueries echo log-queries >> /etc/dnsmasq.conf uci commit dhcp /etc/init.d/dnsmasq reload } stop_dnsmasq_log() { sed -i '/log-queries/d' /etc/dnsmasq.conf uci delete dhcp.@dnsmasq[0].logfacility uci commit dhcp /etc/init.d/dnsmasq reload } reload_service() { rm -f /var/run/AdGucitest 2>/dev/null kill $(cat /var/run/autoipsetadder.pid) start } service_triggers() { procd_add_reload_trigger "$CONFIGURATION" } start_service() { # Reading config config_load "${CONFIGURATION}" mkdir -p /tmp/run/autoipsetadder local enabled config_get_bool enabled $CONFIGURATION enabled 0 do_crontab if [ "$enabled" == "1" ]; then set_dnsmasq_log procd_open_instance procd_set_param respawn # pass config to script on start procd_set_param command sh /usr/bin/autoipsetadder/autoaddlist.sh procd_close_instance echo "autoipsetadder turn on" echo "enabled=$enabled" else stop_dnsmasq_log echo "autoipsetadder turn off" echo "enabled=$enabled" fi } stop_service() { config_load "${CONFIGURATION}" stop_dnsmasq_log do_crontab kill $(cat /var/run/autoipsetadder.pid) echo "autoipsetadder turn off" echo "enabled="$enabled"" } do_crontab(){ config_get_bool enabled $CONFIGURATION enabled 0 #config_get logfile $CONFIGURATION logfile "/tmp/addlist.log" #config_get dnslogfile $CONFIGURATION dnslogfile "/tmp/dnsmasq.log" config_get crontab $CONFIGURATION crontab "" cronreload=0 findstr="echo qingkong > \$(uci get autoipsetadder.autoipsetadder.dnslogfile)" default="0 * * * * echo qingkong > \$(uci get autoipsetadder.autoipsetadder.dnslogfile)" #[ -n "$lastdnslogfile" ] && findstr="echo qingkong > $lastdnslogfile" && [ "$lastdnslogfile" != "$dnslogfile" ] && replace="${lastdnslogfile//\//\\/}/${dnslogfile//\//\\/}" [ "$enabled" == "0" ] || [ "${crontab//autodeldnslog/}" == "$crontab" ] && cronenable=0 || cronenable=1 crontab_editor #[ "$lastdnslogfile" != "$dnslogfile" ] && uci set autoipsetadder.autoipsetadder.lastdnslogfile="$dnslogfile" && commit=1 findstr="/usr/bin/autoipsetadder/tailto.sh [0-9]* \$(uci get autoipsetadder.autoipsetadder.logfile)" default="0 0 * * * /usr/bin/autoipsetadder/tailto.sh 2000 \$(uci get autoipsetadder.autoipsetadder.logfile)" #[ -n "$lastlogfile" ] && findstr="/usr/bin/autoipsetadder/tailto.sh [0-9]* $lastlogfile" && [ "$lastlogfile" != "$logfile" ] && replace="${lastlogfile//\//\\/}/${logfile//\//\\/}" [ "$enabled" == "0" ] || [ "${crontab//autotaillog/}" == "$crontab" ] && cronenable=0 || cronenable=1 crontab_editor #[ -n "$logfile" ] && [ "$lastlogfile" != "$logfile" ] && uci set autoipsetadder.autoipsetadder.lastlogfile="$logfile" && commit=1 [ "$cronreload" -gt 0 ] && /etc/init.d/cron restart #[ "$commit" -gt 0 ] && uci commit autoipsetadder } crontab_editor(){ local testline reload local line="$(grep "$findstr" $CRON_FILE)" [ -n "$replace" ] && [ -n "$line" ] && eval testline="\${line//$replace}" && [ "$testline" != "$line" ] && line="$testline" && reload="1" && replace="" if [ "${line:0:1}" != "#" ]; then if [ $cronenable -eq 1 ]; then [ -z "$line" ] && line="$default" && reload="1" if [ -n "$reload" ]; then sed -i "\,$findstr,d" $CRON_FILE echo "$line" >> $CRON_FILE cronreload=$((cronreload+1)) fi elif [ -n "$line" ]; then sed -i "\,$findstr,d" $CRON_FILE echo "#$line" >> $CRON_FILE cronreload=$((cronreload+1)) fi else if [ $cronenable -eq 1 ]; then sed -i "\,$findstr,d" $CRON_FILE echo "${line:1}" >> $CRON_FILE cronreload=$((cronreload+1)) elif [ -z "$reload" ]; then sed -i "\,$findstr,d" $CRON_FILE echo "$line" >> $CRON_FILE fi fi } test_crontab(){ config_load "${CONFIGURATION}" do_crontab } ================================================ FILE: luci-app-autoipsetadder/root/etc/uci-defaults/40_luci-autoipsetadder ================================================ #!/bin/sh uci -q batch <<-EOF >/dev/null delete ucitrack.@autoipsetadder[-1] add ucitrack autoipsetadder set ucitrack.@autoipsetadder[-1].init=autoipsetadder commit ucitrack EOF rm -f /tmp/luci-indexcache exit 0 ================================================ FILE: luci-app-autoipsetadder/root/usr/bin/autoipsetadder/autoaddlist.sh ================================================ #!/bin/sh PATH="/usr/sbin:/usr/bin:/sbin:/bin" logfile=$(uci get autoipsetadder.autoipsetadder.logfile) [ -z "$logfile" ] && logfile="/tmp/addlist.log" dnslogfile=$(uci get autoipsetadder.autoipsetadder.dnslogfile) [ -z "$logfile" ] && dnslogfile="/tmp/dnsmasq.log" config=$(uci get autoipsetadder.autoipsetadder.config 2>/dev/null) [ "${config//nochina/}" == "$config" ] && nochina="0" || nochina="1" [ "${config//packetpass/}" == "$config" ] && packetpass="0" || packetpass="1" (tail -F $dnslogfile & echo $! >/var/run/autoipsetadder.pid ) | awk -v nochina="$nochina" -v packetpass="$packetpass" -F "[, ]+" '/reply/{ ip=$8; if (ip=="" || ip=="127.0.0.1"|| ip=="0.0.0.0") { next; } if (index(ip,"")!=0) { if (cname==1) { next; } cname=1; domain=$6; #第一次cname时锁定域名,防止解析cname对其改动 next; } #以上获得上行是否为cname,本行不是cname执行以下内容 #lastdomain记录上次非cname的域名,与本次域名对比 if(lastdomain!=$6){ for (ipindex in ipcache) { delete ipcache[ipindex]; } ipcount=0; createpid=1; #上行非cname,并且不是同cname解析域名的多个ip,更新域名,清理同域名免试flag if (cname!=1) { domain=$6; testall=0; }} ipcount++; cname=0; lastdomain=$6 #去除非ipv4 if (index(ip,".")==0) { next; } #不重复探测ip if (!(ip in a)) { #包数>12的同域名放过 if (passdomain==domain) { print(ip" "domain" pass by same domain ok"); a[ip]=domain; next; } if (nochina==1){ "ipset test china "ip" 2>&1"| getline ipset; close("ipset test china "ip" 2>&1"); if (index(ipset,"Warning")!=0){ print("china "ip" pass"); a[ip]=domain; next; }} "ipset test gfwlist "ip" 2>&1"| getline ipset; close("ipset test gfwlist "ip" 2>&1"); if (index(ipset,"Warning")!=0){ print("gfwlist "ip" pass"); a[ip]=domain; next; } #ip压入缓存,用于未检测到443/80的缓存 ipcache[ipcount]=ip; if (testall==0){ tryhttps=0; tryhttp=0; #探测 nf_conntrack 的443/80 while ("grep "ip" /proc/net/nf_conntrack"| getline ret > 0) { split(ret, b," +"); split(b[11], pagnum,"="); #包数>12的放过 if (packetpass==1 && pagnum[2]>12) { print("pass by packets="pagnum[2]" "ip" "domain); for (ipindex in ipcache) { a[ipcache[ipindex]]=domain; delete ipcache[ipindex]; } passdomain=domain; close("grep "ip" /proc/net/nf_conntrack"); ipcount--; next; } if (b[8]=="dst="ip) { if (b[10]=="dport=443"){ tryhttps=1; break; } else if (b[10]=="dport=80"){ tryhttp=1; } } } close("grep "ip" /proc/net/nf_conntrack"); }else{ if (testall==443) { tryhttps=1 }else{ tryhttp=1 } } if (tryhttps==1) { if (createpid==1) { print "">"/tmp/run/autoipsetadder/"domain close("/tmp/run/autoipsetadder/"domain); print("create"domain); print(ip" "domain" 443"ipcount-1); a[ip]=domain; #正在使用的ip用最大延迟,最后探测,减少打断tcp的可能 system("/usr/bin/autoipsetadder/testip.sh "ip" "domain" 443 "ipcount-1" &"); delete ipcache[ipcount]; createpid=0; } #未检测到443/80同域名缓存的ip进行测试,ipindex-1为测试延迟时间 for (ipindex in ipcache){ print(ipcache[ipindex]" "domain" 443 "ipindex-1); a[ipcache[ipindex]]=domain; system("/usr/bin/autoipsetadder/testip.sh "ipcache[ipindex]" "domain" 443 "ipindex-1" &"); delete ipcache[ipindex]; } #后续同域名ip免nf_conntrack测试 testall=443; } else if (tryhttp==1) { if (createpid==1) { print "">"/tmp/run/autoipsetadder/"domain close("/tmp/run/autoipsetadder/"domain); print("create"domain); print(ip" "domain" 80 "ipcount-1); a[ip]=domain; system("/usr/bin/autoipsetadder/testip.sh "ip" "domain" 80 "ipcount-1" &"); delete ipcache[ipcount]; createpid=0; } for (ipindex in ipcache){ print(ipcache[ipindex]" "domain" 80 "ipindex-1); a[ipcache[ipindex]]=domain; system("/usr/bin/autoipsetadder/testip.sh "ipcache[ipindex]" "domain" 80 "ipindex-1" &"); delete ipcache[ipindex]; } testall=80; }} }' >> $logfile ================================================ FILE: luci-app-autoipsetadder/root/usr/bin/autoipsetadder/debugip.sh ================================================ #!/bin/sh PATH="/usr/sbin:/usr/bin:/sbin:/bin" dlchina=$1; logfile=$(uci get autoipsetadder.autoipsetadder.logfile) [ -z "$logfile" ] && logfile="/tmp/addlist.log" dnslogfile=$(uci get autoipsetadder.autoipsetadder.dnslogfile) [ -z "$logfile" ] && dnslogfile="/tmp/dnsmasq.log" ipset list gfwlist | awk -v dlchina="$dlchina" -v dnslogfile="$dnslogfile" -v logfile="$logfile" '{ if (index($0,".")==0) { next; } if ($0=="127.0.0.1") {system("ipset d gfwlist 127.0.0.1");next;} "ipset test whitelist "$0" 2>&1"| getline ipset; close("ipset test whitelist "$0" 2>&1"); if (index(ipset,"Warning")==0){ white=0; }else{ white=1; } "ipset test china "$0" 2>&1"| getline ipset; close("ipset test china "$0" 2>&1"); if (index(ipset,"Warning")!=0){ china=1; } else{ china=0; } if (white==1) { if (china==0) { print("warning white ip not china"$0); ret=system("grep "$0" "logfile); if (ret!=0) { ret=system("grep "$0" "dnslogfile); } } }else if (china==1) { print("warning china ip not white"$0); ret=system("grep "$0" "logfile) if (ret!=0) { ret=system("grep "$0" "dnslogfile); } if (dlchina) { system("ipset del gfwlist "$0); } } }' ================================================ FILE: luci-app-autoipsetadder/root/usr/bin/autoipsetadder/tailto.sh ================================================ #!/bin/sh tail -n $1 "$2" > /var/run/tailtmp cat /var/run/tailtmp > "$2" rm /var/run/tailtmp ================================================ FILE: luci-app-autoipsetadder/root/usr/bin/autoipsetadder/testip.sh ================================================ #!/bin/sh config=$(uci get autoipsetadder.autoipsetadder.config 2>/dev/null) [ "${config//pingadd/}" == "$config" ] && pingadd="0" || pingadd="1" echo $* | awk -v pingadd="$pingadd" '{ if ($4=="") { wait=0; }else {wait=$4;} system("sleep "wait); ERRNO=""; pidfile="/tmp/run/autoipsetadder/"$2 getline drop< pidfile; close(pidfile); if (ERRNO) { addlist=0; print("bypass"$1" "$2); next;} if ($3=="443") { cmd=("httping -c 1 -t 4 -l "$2" --divert-connect "$1); } else if ($3=="80") { cmd=("httping -c 1 -t 4 "$2" --divert-connect "$1); } addlist=0; slow=0; while ((cmd | getline ret) > 0) { if (addlist!=0) { continue; } else if (index(ret,"short read")!=0) { if (system("httping -q -c 1 -t 4 -l "$2" --divert-connect "$1)==0) { addlist=-1; break; }else{ print("doname rst autoaddip "$1" "$2); addlist=1; } } else if (index(ret,"timeout")!=0) { while ((cmd | getline ret) > 0) { if (index(ret,"timeout")!=0) { print("direct so slow autoaddip "$1" "$2); addlist=1; slow=1; } } }else if (index(ret,"SSL handshake error: (null)")!=0) { if(system("curl -m 10 --resolve "$2":443:"$1" https://"$2" -o /dev/null 2>/dev/null")==0){ addlist=-1; break; } }else if (index(ret,"Connection refused")!=0){ print("direct Connection refused autoaddip"$1" "$2); addlist=1; } } close(cmd); if (addlist!=1) { if (addlist==0){ split(ret, c,"[ /]+"); print(c[6]); if (c[6]=="failed,"){ print("can not connect autoaddip "$1" "$2); addlist=1; } else if (c[6]+0>10000) { print("direct ssl so slow autoaddip "$1" "$2); addlist=1; }else{ addlist=-1;} } if (addlist==-1 && pingadd==1) { while (("ping -c 5 -q -A "$1 | getline ret) > 0) { if (index(ret,"packet loss")!=0) { split(ret, p,"[ ]+"); if (p[4]>0 && p[4]<5) { print("ping packet loss autoaddip "$1" "$2); pingloss=1; addlist=1; }else{pingloss=0;} break; } } close("ping -c 5 -q "$1); } } ERRNO=""; if (pingloss!=1){ getline drop< pidfile; close(pidfile); } if (ERRNO) {addlist=0;next;} if (addlist==1){ system("ipset add gfwlist "$1); while ((cmd | getline ret) > 0) { if (addlist==1) { if (index(ret,"short read")!=0) { system("ipset del gfwlist "$1); print("doname proxy rst autodelip "$1" "$2); addlist=-2; } else if (index(ret,"SSL handshake error: (null)")!=0) { if(system("curl -m 10 --resolve "$2":443:"$1" https://"$2" -o /dev/null 2>/dev/null")==0) { addlist=2; } } } } close(cmd); if (addlist==1){ split(ret, c,"[ /]+"); print(c[6]); if (c[6]=="failed,") { system("ipset del gfwlist "$1); print("proxy can not connect autodelip "$1" "$2); addlist=-2; }else{ addlist=2; } } } }END{ if (addlist==2) { if (pingloss==0){ ERRNO=""; getline drop< pidfile; if (ERRNO) { system("ipset del gfwlist "$1); print("cancel add myself "$1" "$2" due to one ip success direct"); }else{ print $1"\n">>pidfile; } close(pidfile);} }else if (addlist==-1) { print($1" "$2" direct success"); while ((getline ret< pidfile) > 0) { if (ret!=""){ system("ipset del gfwlist "ret); print("cancel add someone "ret" "$2" due to me"$1" success direct"); } } close(pidfile); system("rm "pidfile" 2>/dev/null"); print($1" del "$2); }else if (addlist==-2) { system("sleep 10"); while ((getline ret< pidfile) > 0) { if (ret!=""){ system("ipset add gfwlist "$1); print("add "ret" "$2" due to one ip success proxy"); break;} } close(pidfile); }}' ================================================ FILE: luci-app-beardropper/Makefile ================================================ # # Copyright (C) 2020 Nate Ding # # This is free software, licensed under the GNU General Public License v3. # See /LICENSE for more information. # include $(TOPDIR)/rules.mk LUCI_Title:=LuCI Support for BearDropper LUCI_PKGARCH=all PKG_VERSION:=1.1 PKG_RELEASE:=20200522 PKG_MAINTANINER:=Nate Ding PKG_LICENSE:=GLPv3 PKG_LICENSE_FILES:=LICENSE include $(TOPDIR)/feeds/luci/luci.mk # call BuildPackage - OpenWrt buildroot signature ================================================ FILE: luci-app-beardropper/luasrc/controller/beardropper.lua ================================================ module("luci.controller.beardropper", package.seeall) function index() if not nixio.fs.access("/etc/config/beardropper") then return end local page = entry({"admin", "services", "beardropper"}, alias("admin", "services", "beardropper", "setting"), _("BearDropper")) page.order = 20 page.dependent = true page.acl_depends = { "luci-app-beardropper" } entry({"admin", "services", "beardropper", "setting"}, cbi("beardropper/setting"), _("Setting"), 30).leaf = true entry({"admin", "services", "beardropper", "log"}, form("beardropper/log"), _("Log"), 40).leaf = true entry({"admin", "services", "beardropper", "status"}, call("act_status")) end function act_status() local e = {} e.running = luci.sys.call("pgrep -f /usr/sbin/beardropper >/dev/null") == 0 luci.http.prepare_content("application/json") luci.http.write_json(e) end ================================================ FILE: luci-app-beardropper/luasrc/model/cbi/beardropper/log.lua ================================================ f = SimpleForm("logview") f.reset = false f.submit = false t = f:field(TextValue, "conf") t.rmempty = true t.rows = 20 function t.cfgvalue() local logs = luci.util.execi("logread | grep authpriv | grep beardropper") local s = "" for line in logs do s = line .. "\n" .. s end return s end t.readonly="readonly" return f ================================================ FILE: luci-app-beardropper/luasrc/model/cbi/beardropper/setting.lua ================================================ m = Map("beardropper", translate("BearDropper"), translate("luci-app-beardropper, the LuCI app built with the elegant firewall rule generation on-the-fly script bearDropper.

    Should you have any questions, please refer to the repo: ")..[[luci-app-beardropper]] ) m:chain("luci") m:section(SimpleSection).template = "beardropper/beardropper_status" s = m:section(TypedSection, "beardropper", translate("")) s.anonymous = true s.addremove = false -- TABS s:tab("options", translate("Options")) s:tab("blocked", translate("Blocked IP")) o = s:taboption("options", Flag, "enabled", translate("Enabled")) o.default = 0 -- OPTIONS o = s:taboption("options", ListValue, "defaultMode", translate("Running Mode")) o.default = "follow" o:value("follow", translate("Follow")) o:value("entire", translate("Entire")) o:value("today", translate("Today")) o:value("wipe", translate("Wipe")) o = s:taboption("options", Value, "attemptCount", translate("Attempt Tolerance"), translate("failure attempts from a given IP required to trigger a ban")) o = s:taboption("options", Value, "attemptPeriod", translate("Attempt Cycle"), translate("time period during which attemptCount must be exceeded in order to trigger a ban
    Format: 1w2d3h4m5s represents 1week 2days 3hours 4minutes 5 seconds")) o = s:taboption("options", Value, "banLength", translate("Ban Period"), translate("how long a ban exist once the attempt threshold is exceeded")) o = s:taboption("options", ListValue, "logLevel", translate("Log Level")) o.default = "1" o:value("0", translate("Silent")) o:value("1", translate("Default")) o:value("2", translate("Verbose")) o:value("3", translate("Debug")) o = s:taboption("blocked", Value, "blocked", translate("Blocked IP List")) o.template = "cbi/tvalue" o.rows = 40 o.wrap = "off" o.readonly = "true" function o.cfgvalue(e, e) return luci.sys.exec("cat /tmp/beardropper.bddb | awk /'=1/'| awk -F '=' '{print $1}' | awk '{print substr($0,6)}' | awk 'gsub(/_/,\":\",$0)'") end return m ================================================ FILE: luci-app-beardropper/luasrc/view/beardropper/beardropper_status.htm ================================================

    <%:Collecting data...%>

    ================================================ FILE: luci-app-beardropper/po/zh_Hans/beardropper.po ================================================ bearDropper#: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:36 msgid "Attempt Cycle" msgstr "尝试登录时间段" msgid "Setting" msgstr "设置" msgid "Log" msgstr "日志" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:34 msgid "Attempt Tolerance" msgstr "最大尝试登录次数" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:38 msgid "Ban Period" msgstr "封禁IP时长" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/controller/bearDropper.lua:7 #: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:7 msgid "BearDropper" msgstr "" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:20 msgid "Blocked IP" msgstr "屏蔽列表" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:52 msgid "Blocked IP List" msgstr "已屏蔽IP列表" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/view/bearDropper/status.htm:20 msgid "Collecting data..." msgstr "" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:45 msgid "Debug" msgstr "调试" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:43 msgid "Default" msgstr "默认" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:22 msgid "Enabled" msgstr "启用" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:29 msgid "Entire" msgstr "已有记录" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:28 msgid "Follow" msgstr "后台监控" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:40 msgid "Log Level" msgstr "日志等级" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/view/bearDropper/status.htm:10 msgid "NOT RUNNING" msgstr "" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:19 msgid "Options" msgstr "选项" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/view/bearDropper/status.htm:7 msgid "RUNNING" msgstr "" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:26 msgid "Running Mode" msgstr "运行模式" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:42 msgid "Silent" msgstr "安静" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:30 msgid "Today" msgstr "仅今日" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:44 msgid "Verbose" msgstr "详细" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:31 msgid "Wipe" msgstr "清除所有" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:34 msgid "failure attempts from a given IP required to trigger a ban" msgstr "尝试登录超过设定值次数的IP将被封禁" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:38 msgid "how long a ban exist once the attempt threshold is exceeded" msgstr "IP将被封禁设定的时间" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:8 msgid "" "luci-app-beardropper, the LuCI app built with the elegant firewall rule " "generation on-the-fly script bearDropper.

    Should you have any " "questions, please refer to the repo:" msgstr "" "luci-app-beardropper, 是一款能够在开启公网访问之后对潜在的ssh attack进行防御" "的脚本.

    如果你在使用中有任何问题,请到项目中提问: " #: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:36 msgid "" "time period during which attemptCount must be exceeded in order to trigger a " "ban
    Format: 1w2d3h4m5s represents 1week 2days 3hours 4minutes 5 seconds" msgstr "" "在设定的时间段内连续尝试失败
    格式:1w2d3h4m5s代表1周2天3小时4分5秒" ================================================ FILE: luci-app-beardropper/po/zh_Hant/beardropper.po ================================================ bearDropper#: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:36 msgid "Attempt Cycle" msgstr "嘗試登錄時間段" msgid "Setting" msgstr "設置" msgid "Log" msgstr "日誌" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:34 msgid "Attempt Tolerance" msgstr "最大嘗試登錄次數" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:38 msgid "Ban Period" msgstr "封禁IP時長" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/controller/bearDropper.lua:7 #: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:7 msgid "BearDropper" msgstr "" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:20 msgid "Blocked IP" msgstr "屏蔽列表" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:52 msgid "Blocked IP List" msgstr "已屏蔽IP列表" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/view/bearDropper/status.htm:20 msgid "Collecting data..." msgstr "" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:45 msgid "Debug" msgstr "調試" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:43 msgid "Default" msgstr "默認" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:22 msgid "Enabled" msgstr "啟用" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:29 msgid "Entire" msgstr "已有記錄" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:28 msgid "Follow" msgstr "後臺監控" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:40 msgid "Log Level" msgstr "日誌等級" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/view/bearDropper/status.htm:10 msgid "NOT RUNNING" msgstr "" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:19 msgid "Options" msgstr "選項" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/view/bearDropper/status.htm:7 msgid "RUNNING" msgstr "" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:26 msgid "Running Mode" msgstr "運行模式" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:42 msgid "Silent" msgstr "安靜" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:30 msgid "Today" msgstr "僅今日" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:44 msgid "Verbose" msgstr "詳細" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:31 msgid "Wipe" msgstr "清除所有" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:34 msgid "failure attempts from a given IP required to trigger a ban" msgstr "嘗試登錄超過設定值次數的IP將被封禁" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:38 msgid "how long a ban exist once the attempt threshold is exceeded" msgstr "IP將被封禁設定的時間" #: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:8 msgid "" "luci-app-beardropper, the LuCI app built with the elegant firewall rule " "generation on-the-fly script bearDropper.

    Should you have any " "questions, please refer to the repo:" msgstr "" "luci-app-beardropper, 是壹款能夠在開啟公網訪問之後對潛在的ssh attack進行防禦" "的腳本.

    如果妳在使用中有任何問題,請到項目中提問: " #: ../../package/feeds/luci/luci-app-beardropper/luasrc/model/cbi/bearDropper/setting.lua:36 msgid "" "time period during which attemptCount must be exceeded in order to trigger a " "ban
    Format: 1w2d3h4m5s represents 1week 2days 3hours 4minutes 5 seconds" msgstr "" "在設定的時間段內連續嘗試失敗
    格式:1w2d3h4m5s代表1周2天3小時4分5秒" ================================================ FILE: luci-app-beardropper/root/etc/config/beardropper ================================================ config beardropper option attemptCount '5' option attemptPeriod '12h' option banLength '1w' option logFacility 'authpriv.notice' option fileStateType 'bddb' option fileStateTempPrefix '/tmp/beardropper' option fileStatePersistPrefix '/etc/beardropper' list firewallHookChain 'input_wan_rule:1' list firewallHookChain 'forwarding_wan_rule:1' option firewallTarget 'DROP' list logRegex 's/[`$"\'\'']//g' list logRegex '/has invalid shell, rejected$/d' list logRegex '/^[A-Za-z ]+[0-9: ]+authpriv.warn dropbear\[.+([0-9]+\.){3}[0-9]+/p' list logRegex '/^[A-Za-z ]+[0-9: ]+authpriv.info dropbear\[.+:\ Exit before auth:.*/p' option defaultMode 'follow' option enabled '1' option logLevel '2' ================================================ FILE: luci-app-beardropper/root/etc/init.d/beardropper ================================================ #!/bin/sh /etc/rc.common START=98 PROG=/usr/sbin/beardropper SERVICE_DAEMONIZE=1 SERVICE_WRITE_PID=1 getKids() { egrep "^PPid: *$1$" /proc/[0-9]*/s*s 2>/dev/null | cut -f3 -d/ | xargs echo } start() { service_start ${PROG} -m follow echo "beardropper started!" } stop() { #PID=`cat /var/run/bearDropper.pid` #kill `getKids $PID` kill -9 `pgrep -f /usr/sbin/beardropper` sleep 1 service_stop ${PROG} echo "beardropper exit...." } restart() { enabled=$(uci get beardropper.@beardropper[0].enabled) pgrep -f ${PROG} >/dev/null if [ $? -eq 0 ];then #running if [ $enabled -eq 1 ]; then stop sleep 1 echo "beardropper is restarting..." start else stop fi else if [ $enabled -eq 1 ]; then start else exit 0 fi fi } ================================================ FILE: luci-app-beardropper/root/etc/uci-defaults/luci-beardropper ================================================ #!/bin/sh uci -q batch <<-EOF >/dev/null delete ucitrack.@beardropper[-1] add ucitrack beardropper set ucitrack.@beardropper[-1].init=beardropper commit ucitrack EOF touch /tmp/beardropper.bddb rm -rf /tmp/luci-* exit 0 ================================================ FILE: luci-app-beardropper/root/usr/sbin/beardropper ================================================ #!/bin/ash # # beardropper - dropbear log parsing ban agent for OpenWRT (Chaos Calmer rewrite of dropBrute.sh) # http://github.com/robzr/bearDropper -- Rob Zwissler 11/2015 # # - lightweight, no dependencies, busybox ash + native OpenWRT commands # - uses uci for configuration, overrideable via command line arguments # - runs continuously in background (via init script) or periodically (via cron) # - uses BIND time shorthand, ex: 1w5d3h1m8s is 1 week, 5 days, 3 hours, 1 minute, 8 seconds # - Whitelist IP or CIDR entries (TBD) in uci config file # - Records state file to tmpfs and intelligently syncs to persistent storage (can disable) # - Persistent sync routines are optimized to avoid excessive writes (persistentStateWritePeriod) # - Every run occurs in one of the following modes. If not specified, interval mode (24 hours) is # the default when not specified (the init script specifies follow mode via command line) # # "follow" mode follows syslog to process entries as they happen; generally launched via init # script. Responds the fastest, runs the most efficiently, but is always in memory. # "interval" mode only processes entries going back the specified interval; requires # more processing than today mode, but responds more accurately. Use with cron. # "today" mode looks at log entries from the day it is being run, simple and lightweight, # generally run from cron periodically (same simplistic behavior as dropBrute.sh) # "entire" mode runs through entire contents of the syslog ring buffer # "wipe" mode tears down the firewall rules and removes the state files # Load UCI config variable, or use default if not set # Args: $1 = variable name (also uci option name), $2 = default_value uciSection='beardropper.@[0]' uciLoadVar () { local getUci getUci=`uci -q get ${uciSection}."$1"` || getUci="$2" eval $1=\'$getUci\'; } uciLoad() { local tFile=`mktemp` delim=" " [ "$1" = -d ] && { delim="$2"; shift 2; } uci -q -d"$delim" get "$uciSection.$1" 2>/dev/null >$tFile if [ $? = 0 ] ; then sed -e s/^\'// -e s/\'$// <$tFile else while [ -n "$2" ]; do echo $2; shift; done fi rm -f $tFile } # Common config variables - edit these in /etc/config/beardropper # or they can be overridden at runtime with command line options # uciLoadVar defaultMode entire uciLoadVar enabled 0 uciLoadVar attemptCount 10 uciLoadVar attemptPeriod 12h uciLoadVar banLength 1w uciLoadVar logLevel 1 uciLoadVar logFacility authpriv.notice uciLoadVar persistentStateWritePeriod -1 uciLoadVar fileStateType bddb uciLoadVar fileStateTempPrefix /tmp/beardropper uciLoadVar fileStatePersistPrefix /etc/beardropper firewallHookChains="`uciLoad -d \ firewallHookChain input_wan_rule:1 forwarding_wan_rule:1`" uciLoadVar firewallTarget DROP # Not commonly changed, but changeable via uci or cmdline (primarily # to enable multiple parallel runs with different parameters) uciLoadVar firewallChain beardropper # Advanced variables, changeable via uci only (no cmdline), it is # unlikely that these will need to be changed, but just in case... # uciLoadVar syslogTag "beardropper[$$]" # how often to attempt to expire bans when in follow mode uciLoadVar followModeCheckInterval 30m uciLoadVar cmdLogread 'logread' # for tuning, ex: "logread -l250" uciLoadVar cmdLogreadEba 'logread' # for "Exit before auth:" backscanning uciLoadVar formatLogDate '%b %e %H:%M:%S %Y' # used to convert syslog dates uciLoadVar formatTodayLogDateRegex '^%a %b %e ..:..:.. %Y' # filter for today mode # Begin functions # # Clear bddb entries from environment bddbClear () { local bddbVar for bddbVar in `set | egrep '^bddb_[0-9_]*=' | cut -f1 -d= | xargs echo -n` ; do eval unset $bddbVar ; done bddbStateChange=1 } # Returns count of unique IP entries in environment bddbCount () { set | egrep '^bddb_[0-9_]*=' | wc -l ; } # Loads existing bddb file into environment # Arg: $1 = file, $2 = type (bddb/bddbz), $3 = bddbLoad () { local loadFile="$1.$2" fileType="$2" if [ "$fileType" = bddb -a -f "$loadFile" ] ; then . "$loadFile" elif [ "$fileType" = bddbz -a -f "$loadFile" ] ; then local tmpFile="`mktemp`" zcat $loadFile > "$tmpFile" . "$tmpFile" rm -f "$tmpFile" fi bddbStateChange=0 } # Saves environment bddb entries to file, Arg: $1 = file to save in bddbSave () { local saveFile="$1.$2" fileType="$2" if [ "$fileType" = bddb ] ; then set | egrep '^bddb_[0-9_]*=' | sed s/\'//g > "$saveFile" elif [ "$fileType" = bddbz ] ; then set | egrep '^bddb_[0-9_]*=' | sed s/\'//g | gzip -c > "$saveFile" fi bddbStateChange=0 } # Set bddb record status=1, update ban time flag with newest # Args: $1=IP Address $2=timeFlag bddbEnableStatus () { local record=`echo $1 | sed -e 's/\./_/g' -e 's/^/bddb_/'` local newestTime=`bddbGetTimes $1 | sed 's/.* //' | xargs echo $2 | tr \ '\n' | sort -n | tail -1 ` eval $record="1,$newestTime" bddbStateChange=1 } # Args: $1=IP Address bddbGetStatus () { bddbGetRecord $1 | cut -d, -f1 } # Args: $1=IP Address bddbGetTimes () { bddbGetRecord $1 | cut -d, -f2- } # Args: $1 = IP address, $2 [$3 ...] = timestamp (seconds since epoch) bddbAddRecord () { local ip="`echo "$1" | tr . _`" ; shift local newEpochList="$@" status="`eval echo \\\$bddb_$ip | cut -f1 -d,`" local oldEpochList="`eval echo \\\$bddb_$ip | cut -f2- -d, | tr , \ `" local epochList=`echo $oldEpochList $newEpochList | xargs -n 1 echo | sort -un | xargs echo -n | tr \ ,` [ -z "$status" ] && status=0 eval "bddb_$ip"\=\"$status,$epochList\" bddbStateChange=1 } # Args: $1 = IP address bddbRemoveRecord () { local ip="`echo "$1" | tr . _`" eval unset bddb_$ip bddbStateChange=1 } # Returns all IPs (not CIDR) present in records bddbGetAllIPs () { local ipRaw record set | egrep '^bddb_[0-9_]*=' | tr \' \ | while read record ; do ipRaw=`echo $record | cut -f1 -d= | sed 's/^bddb_//'` if [ `echo $ipRaw | tr _ \ | wc -w` -eq 4 ] ; then echo $ipRaw | tr _ . fi done } # retrieve single IP record, Args: $1=IP bddbGetRecord () { local record record=`echo $1 | sed -e 's/\./_/g' -e 's/^/bddb_/'` eval echo \$$record } isValidBindTime () { echo "$1" | egrep -q '^[0-9]+$|^([0-9]+[wdhms]?)+$' ; } # expands Bind time syntax into seconds (ex: 3w6d23h59m59s), Arg: $1=time string expandBindTime () { isValidBindTime "$1" || { logLine 0 "Error: Invalid time specified ($1)" >&2 ; exit 254 ; } echo $((`echo "$1" | sed -e 's/w+*/*7d+/g' -e 's/d+*/*24h+/g' -e 's/h+*/*60m+/g' -e 's/m+*/*60+/g' \ -e s/s//g -e s/+\$//`)) } # Args: $1 = loglevel, $2 = info to log logLine () { [ $1 -gt $logLevel ] && return shift if [ "$logFacility" = "stdout" ] ; then echo "$@" elif [ "$logFacility" = "stderr" ] ; then echo "$@" >&2 else logger -t "$syslogTag" -p "$logFacility" "$@" fi } # extra validation, fails safe. Args: $1=log line getLogTime () { local logDateString=`echo "$1" | sed -n \ 's/^[A-Z][a-z]* \([A-Z][a-z]* *[0-9][0-9]* *[0-9][0-9]*:[0-9][0-9]:[0-9][0-9] [0-9][0-9]*\) .*$/\1/p'` date -d"$logDateString" -D"$formatLogDate" +%s || logLine 1 \ "Error: logDateString($logDateString) malformed line ($1)" } # extra validation, fails safe. Args: $1=log line getLogIP () { local logLine="$1" local ebaPID=`echo "$logLine" | sed -n 's/^.*authpriv.info \(dropbear\[[0-9]*\]:\) Exit before auth:.*/\1/p'` [ -n "$ebaPID" ] && logLine=`$cmdLogreadEba | fgrep "${ebaPID} Child connection from "` echo "$logLine" | sed -n 's/^.*[^0-9]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*$/\1/p' } # Args: $1=IP unBanIP () { if iptables -C $firewallChain -s $ip -j "$firewallTarget" 2>/dev/null ; then logLine 1 "Removing ban rule for IP $ip from iptables" iptables -D $firewallChain -s $ip -j "$firewallTarget" else logLine 3 "unBanIP() Ban rule for $ip not present in iptables" fi } # Args: $1=IP banIP () { local ip="$1" x chain position if ! iptables -nL $firewallChain >/dev/null 2>/dev/null ; then logLine 1 "Creating iptables chain $firewallChain" iptables -N $firewallChain fi for x in $firewallHookChains ; do chain="${x%:*}" ; position="${x#*:}" if [ $position -ge 0 ] && ! iptables -C $chain -j $firewallChain 2>/dev/null ; then logLine 1 "Inserting hook into iptables chain $chain" if [ $position = 0 ] ; then iptables -A $chain -j $firewallChain else iptables -I $chain $position -j $firewallChain fi ; fi done if ! iptables -C $firewallChain -s $ip -j "$firewallTarget" 2>/dev/null ; then logLine 1 "Inserting ban rule for IP $ip into iptables chain $firewallChain" iptables -A $firewallChain -s $ip -j "$firewallTarget" else logLine 3 "banIP() rule for $ip already present in iptables chain" fi } wipeFirewall () { local x chain position for x in $firewallHookChains ; do chain="${x%:*}" ; position="${x#*:}" if [ $position -ge 0 ] ; then if iptables -C $chain -j $firewallChain 2>/dev/null ; then logLine 1 "Removing hook from iptables chain $chain" iptables -D $chain -j $firewallChain fi ; fi done if iptables -nL $firewallChain >/dev/null 2>/dev/null ; then logLine 1 "Flushing and removing iptables chain $firewallChain" iptables -F $firewallChain 2>/dev/null iptables -X $firewallChain 2>/dev/null fi } # review state file for expired records - we could add the bantime to # the rule via --comment but I can't think of a reason why that would # be necessary unless there is a bug in the expiration logic. The # state db should be more resiliant than the firewall in practice. # bddbCheckStatusAll () { local now=`date +%s` bddbGetAllIPs | while read ip ; do if [ `bddbGetStatus $ip` -eq 1 ] ; then logLine 3 "bddbCheckStatusAll($ip) testing banLength:$banLength + bddbGetTimes:`bddbGetTimes $ip` vs. now:$now" if [ $((banLength + `bddbGetTimes $ip`)) -lt $now ] ; then logLine 1 "Ban expired for $ip, removing from iptables" unBanIP $ip bddbRemoveRecord $ip else logLine 3 "bddbCheckStatusAll($ip) not expired yet" banIP $ip fi elif [ `bddbGetStatus $ip` -eq 0 ] ; then local times=`bddbGetTimes $ip | tr , \ ` local timeCount=`echo $times | wc -w` local lastTime=`echo $times | cut -d\ -f$timeCount` if [ $((lastTime + attemptPeriod)) -lt $now ] ; then bddbRemoveRecord $ip fi ; fi saveState done loadState } # Only used when status is already 0 and possibly going to 1, Args: $1=IP bddbEvaluateRecord () { local ip=$1 firstTime lastTime local times=`bddbGetRecord $1 | cut -d, -f2- | tr , \ ` local timeCount=`echo $times | wc -w` local didBan=0 # 1: not enough attempts => do nothing and exit # 2: attempts exceed threshold in time period => ban # 3: attempts exceed threshold but time period is too long => trim oldest time, recalculate while [ $timeCount -ge $attemptCount ] ; do firstTime=`echo $times | cut -d\ -f1` lastTime=`echo $times | cut -d\ -f$timeCount` timeDiff=$((lastTime - firstTime)) logLine 3 "bddbEvaluateRecord($ip) count=$timeCount timeDiff=$timeDiff/$attemptPeriod" if [ $timeDiff -le $attemptPeriod ] ; then bddbEnableStatus $ip $lastTime logLine 2 "bddbEvaluateRecord($ip) exceeded ban threshold, adding to iptables" banIP $ip didBan=1 fi times=`echo $times | cut -d\ -f2-` timeCount=`echo $times | wc -w` done [ $didBan = 0 ] && logLine 2 "bddbEvaluateRecord($ip) does not exceed threshhold, skipping" } # Reads filtered log line and evaluates for action Args: $1=log line processLogLine () { local time=`getLogTime "$1"` local ip=`getLogIP "$1"` local status="`bddbGetStatus $ip`" if [ "$status" = -1 ] ; then logLine 2 "processLogLine($ip,$time) IP is whitelisted" elif [ "$status" = 1 ] ; then if [ "`bddbGetTimes $ip`" -ge $time ] ; then logLine 2 "processLogLine($ip,$time) already banned, ban timestamp already equal or newer" else logLine 2 "processLogLine($ip,$time) already banned, updating ban timestamp" bddbEnableStatus $ip $time fi banIP $ip elif [ -n "$ip" -a -n "$time" ] ; then bddbAddRecord $ip $time logLine 2 "processLogLine($ip,$time) Added record, comparing" bddbEvaluateRecord $ip else logLine 1 "processLogLine($ip,$time) malformed line ($1)" fi } # Args, $1=-f to force a persistent write (unless lastPersistentStateWrite=-1) saveState () { local forcePersistent=0 [ "$1" = "-f" ] && forcePersistent=1 if [ $bddbStateChange -gt 0 ] ; then logLine 3 "saveState() saving to temp state file" bddbSave "$fileStateTempPrefix" "$fileStateType" logLine 3 "saveState() now=`date +%s` lPSW=$lastPersistentStateWrite pSWP=$persistentStateWritePeriod fP=$forcePersistent" fi if [ $persistentStateWritePeriod -gt 1 ] || [ $persistentStateWritePeriod -eq 0 -a $forcePersistent -eq 1 ] ; then if [ $((`date +%s` - lastPersistentStateWrite)) -ge $persistentStateWritePeriod ] || [ $forcePersistent -eq 1 ] ; then if [ ! -f "$fileStatePersist" ] || ! cmp -s "$fileStateTemp" "$fileStatePersist" ; then logLine 2 "saveState() writing to persistent state file" bddbSave "$fileStatePersistPrefix" "$fileStateType" lastPersistentStateWrite="`date +%s`" fi ; fi ; fi } loadState () { bddbClear bddbLoad "$fileStatePersistPrefix" "$fileStateType" bddbLoad "$fileStateTempPrefix" "$fileStateType" logLine 2 "loadState() loaded `bddbCount` entries" } printUsage () { cat <<-_EOF_ Usage: beardropper [-m mode] [-a #] [-b #] [-c ...] [-C ...] [-f ...] [-l #] [-j ...] [-p #] [-P #] [-s ...] Running Modes (-m) (def: $defaultMode) follow constantly monitors log entire processes entire log contents today processes log entries from same day only # interval mode, specify time string or seconds wipe wipe state files, unhook and remove firewall chain Options -a # attempt count before banning (def: $attemptCount) -b # ban length once attempts hit threshold (def: $banLength) -c ... firewall chain to record bans (def: $firewallChain) -C ... firewall chains/positions to hook into (def: $firewallHookChains) -f ... log facility (syslog facility or stdout/stderr) (def: $logFacility) -j ... firewall target (def: $firewallTarget) -l # log level - 0=off, 1=standard, 2=verbose (def: $logLevel) -p # attempt period which attempt counts must happen in (def: $attemptPeriod) -P # persistent state file write period (def: $persistentStateWritePeriod) -s ... persistent state file prefix (def: $fileStatePersistPrefix) -t ... temporary state file prefix (def: $fileStateTempPrefix) All time strings can be specified in seconds, or using BIND style time strings, ex: 1w2d3h5m30s is 1 week, 2 days, 3 hours, etc... _EOF_ } # Begin main logic # unset logMode while getopts a:b:c:C:f:hj:l:m:p:P:s:t: arg ; do case "$arg" in a) attemptCount="$OPTARG" ;; b) banLength="$OPTARG" ;; c) firewallChain="$OPTARG" ;; C) firewallHookChains="$OPTARG" ;; f) logFacility="$OPTARG" ;; j) firewallTarget="$OPTARG" ;; l) logLevel="$OPTARG" ;; m) logMode="$OPTARG" ;; p) attemptPeriod="$OPTARG" ;; P) persistentStateWritePeriod="$OPTARG" ;; s) fileStatePersistPrefix="$OPTARG" ;; s) fileStatePersistPrefix="$OPTARG" ;; *) printUsage exit 254 esac shift `expr $OPTIND - 1` done [ -z $logMode ] && logMode="$defaultMode" fileStateTemp="$fileStateTempPrefix.$fileStateType" fileStatePersist="$fileStatePersistPrefix.$fileStateType" attemptPeriod=`expandBindTime $attemptPeriod` banLength=`expandBindTime $banLength` [ $persistentStateWritePeriod != -1 ] && persistentStateWritePeriod=`expandBindTime $persistentStateWritePeriod` followModeCheckInterval=`expandBindTime $followModeCheckInterval` exitStatus=0 # Here we convert the logRegex list into a sed -f file fileRegex="/tmp/beardropper.$$.regex" uciLoad logRegex 's/[`$"'\\\'']//g' '/has invalid shell, rejected$/d' \ '/^[A-Za-z ]+[0-9: ]+authpriv.warn dropbear\[.+([0-9]+\.){3}[0-9]+/p' \ '/^[A-Za-z ]+[0-9: ]+authpriv.info dropbear\[.+:\ Exit before auth:.*/p' > "$fileRegex" lastPersistentStateWrite="`date +%s`" loadState bddbCheckStatusAll # main event loops if [ "$logMode" = follow ] ; then logLine 1 "Running in follow mode" readsSinceSave=0 lastCheckAll=0 worstCaseReads=1 tmpFile="/tmp/beardropper.$$.1" # Verify if these do any good - try saving to a temp. Scope may make saveState useless. trap "rm -f "$tmpFile" "$fileRegex" ; exit " SIGINT [ $persistentStateWritePeriod -gt 1 ] && worstCaseReads=$((persistentStateWritePeriod / followModeCheckInterval)) firstRun=1 $cmdLogread -f | while read -t $followModeCheckInterval line || true ; do if [ $firstRun -eq 1 ] ; then trap "saveState -f" SIGHUP trap "saveState -f; exit" SIGINT firstRun=0 fi sed -nEf "$fileRegex" > "$tmpFile" <<-_EOF_ $line _EOF_ line="`cat $tmpFile`" [ -n "$line" ] && processLogLine "$line" logLine 3 "ReadComp:$readsSinceSave/$worstCaseReads" if [ $((++readsSinceSave)) -ge $worstCaseReads ] ; then now="`date +%s`" if [ $((now - lastCheckAll)) -ge $followModeCheckInterval ] ; then bddbCheckStatusAll lastCheckAll="$now" saveState readsSinceSave=0 fi fi done elif [ "$logMode" = entire ] ; then logLine 1 "Running in entire mode" $cmdLogread | sed -nEf "$fileRegex" | while read line ; do processLogLine "$line" saveState done loadState bddbCheckStatusAll saveState -f elif [ "$logMode" = today ] ; then logLine 1 "Running in today mode" # merge the egrep into sed with -e /^$formatTodayLogDateRegex/!d $cmdLogread | egrep "`date +\'$formatTodayLogDateRegex\'`" | sed -nEf "$fileRegex" | while read line ; do processLogLine "$line" saveState done loadState bddbCheckStatusAll saveState -f elif isValidBindTime "$logMode" ; then logInterval=`expandBindTime $logMode` logLine 1 "Running in interval mode (reviewing $logInterval seconds of log entries)..." timeStart=$((`date +%s` - logInterval)) $cmdLogread | sed -nEf "$fileRegex" | while read line ; do timeWhen=`getLogTime "$line"` [ $timeWhen -ge $timeStart ] && processLogLine "$line" saveState done loadState bddbCheckStatusAll saveState -f elif [ "$logMode" = wipe ] ; then logLine 2 "Wiping state files, unhooking and removing iptables chains" wipeFirewall if [ -f "$fileStateTemp" ] ; then logLine 1 "Removing non-persistent statefile ($fileStateTemp)" rm -f "$fileStateTemp" fi if [ -f "$fileStatePersist" ] ; then logLine 1 "Removing persistent statefile ($fileStatePersist)" rm -f "$fileStatePersist" fi else logLine 0 "Error: invalid log mode ($logMode)" exitStatus=254 fi rm -f "$fileRegex" exit $exitStatus ================================================ FILE: luci-app-beardropper/root/usr/share/rpcd/acl.d/luci-app-beardropper.json ================================================ { "luci-app-beardropper": { "description": "Grant UCI access for luci-app-beardropper", "read": { "uci": [ "beardropper" ] }, "write": { "uci": [ "beardropper" ] } } } ================================================ FILE: luci-app-cloudflarespeedtest/Makefile ================================================ # Author: mingxiaoyu (fengying0347@163.com) # # Licensed to the public under the GNU General Public License v3. # include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-cloudflarespeedtest LUCI_TITLE:=LuCI support for Cloudflares Speed Test LUCI_DEPENDS:=+cdnspeedtest +openssl-util +curl LUCI_PKGARCH:=all PKG_VERSION:=1.4.9 PKG_RELEASE:=0 PKG_LICENSE:=AGPL-3.0 PKG_MAINTAINER:=mingxiaoyu include $(TOPDIR)/feeds/luci/luci.mk # call BuildPackage - OpenWrt buildroot signature ================================================ FILE: luci-app-cloudflarespeedtest/luasrc/controller/cloudflarespeedtest.lua ================================================ -- Copyright (C) 2020 mingxiaoyu -- Licensed to the public under the GNU General Public License v3. module("luci.controller.cloudflarespeedtest",package.seeall) function index() if not nixio.fs.access('/etc/config/cloudflarespeedtest') then return end local page page = entry({"admin", "services", "cloudflarespeedtest"}, firstchild(), _("Cloudflare Speed Test"), 99) page.dependent = false page.acl_depends = { "luci-app-cloudflarespeedtest" } entry({"admin", "services", "cloudflarespeedtest", "general"}, cbi("cloudflarespeedtest/cloudflarespeedtest"), _("Base Setting"), 1) entry({"admin", "services", "cloudflarespeedtest", "logread"}, form("cloudflarespeedtest/logread"), _("Logs"), 2) entry({"admin", "services", "cloudflarespeedtest", "status"}, call("act_status")).leaf = true entry({"admin", "services", "cloudflarespeedtest", "stop"}, call("act_stop")) entry({"admin", "services", "cloudflarespeedtest", "start"}, call("act_start")) entry({"admin", "services", "cloudflarespeedtest", "getlog"}, call("get_log")) end function act_status() local e = {} e.running = luci.sys.call("busybox ps -w | grep cdnspeedtest | grep -v grep >/dev/null") == 0 luci.http.prepare_content("application/json") luci.http.write_json(e) end function act_stop() luci.sys.call("busybox ps -w | grep cdnspeedtest | grep -v grep | xargs kill -9 >/dev/null") luci.http.write('') end function act_start() act_stop() luci.sys.call("/usr/bin/cloudflarespeedtest/cloudflarespeedtest.sh start") luci.http.write('') end function get_log() local fs = require "nixio.fs" local e = {} e.running = luci.sys.call("busybox ps -w | grep cdnspeedtest | grep -v grep >/dev/null") == 0 e.log= fs.readfile("/var/log/cloudflarespeedtest.log") or "" luci.http.prepare_content("application/json") luci.http.write_json(e) end ================================================ FILE: luci-app-cloudflarespeedtest/luasrc/model/cbi/cloudflarespeedtest/cloudflarespeedtest.lua ================================================ require("luci.sys") local uci = luci.model.uci.cursor() m = Map('cloudflarespeedtest') m.title = translate('Cloudflare Speed Test') m.description = 'GitHub' -- [[ 基本设置 ]]-- s = m:section(NamedSection, 'global') s.addremove = false s.anonymous = true o=s:option(Flag,"enabled",translate("Enabled")) o.description = translate("Enabled scheduled task test Cloudflare IP") o.rmempty=false o.default = 0 o=s:option(Flag,"ipv6_enabled",translate("IPv6 Enabled")) o.description = translate("Provides only one method, if IPv6 is enabled, IPv4 will not be tested") o.default = 0 o.rmempty=false o=s:option(Value,"speed",translate("Broadband speed")) o.description =translate("100M broadband download speed is about 12M/s. It is not recommended to fill in an excessively large value, and it may run all the time."); o.datatype ="uinteger" o.rmempty=false o=s:option(Value,"custome_url",translate("Custome Url")) o.description = translate("How to create") o.rmempty=false o=s:option(Flag,"custome_cors_enabled",translate("Custome Cron Enabled")) o.default = 0 o.rmempty=false o = s:option(Value, "custome_cron", translate("Custome Cron")) o:depends("custome_cors_enabled", 1) hour = s:option(Value, "hour", translate("Hour")) hour.datatype = "range(0,23)" hour:depends("custome_cors_enabled", 0) minute = s:option(Value, "minute", translate("Minute")) minute.datatype = "range(0,59)" minute:depends("custome_cors_enabled", 0) o = s:option(ListValue, "proxy_mode", translate("Proxy Mode")) o:value("nil", translate("HOLD")) o.description = translate("during the speed testing, swith to which mode") o:value("gfw", translate("GFW List")) o:value("close", translate("CLOSE")) o.default = "gfw" o=s:option(Flag,"advanced",translate("Advanced")) o.description = translate("Not recommended") o.default = 0 o.rmempty=false o = s:option(Value, "threads", translate("Thread")) o.datatype ="uinteger" o.default = 200 o.rmempty=true o:depends("advanced", 1) o = s:option(Value, "tl", translate("Average Latency Cap")) o.datatype ="uinteger" o.default = 200 o.rmempty=true o:depends("advanced", 1) o = s:option(Value, "tll", translate("Average Latency Lower Bound")) o.datatype ="uinteger" o.default = 40 o.rmempty=true o:depends("advanced", 1) o = s:option(Value, "t", translate("Delayed speed measurement time")) o.datatype ="uinteger" o.default = 4 o.rmempty=true o:depends("advanced", 1) o = s:option(Value, "dt", translate("Download speed test time")) o.datatype ="uinteger" o.default = 10 o.rmempty=true o:depends("advanced", 1) o = s:option(Value, "dn", translate("Number of download speed tests")) o.datatype ="uinteger" o.default = 1 o.rmempty=true o:depends("advanced", 1) o = s:option(Flag, "dd", translate("Disable download speed test")) o.default = 0 o.rmempty=true o:depends("advanced", 1) o = s:option(Value, "tp", translate("Port")) o.rmempty=true o.default = 443 o.datatype ="port" o:depends("advanced", 1) o = s:option(DummyValue, '', '') o.rawhtml = true o.template = "cloudflarespeedtest/actions" s = m:section(NamedSection, "servers", "section", translate("Third party applications settings")) if nixio.fs.access("/etc/config/shadowsocksr") then s:tab("ssr", translate("Shadowsocksr Plus+")) o=s:taboption("ssr", Flag, "ssr_enabled",translate("Shadowsocksr Plus+ Enabled")) o.rmempty=true local ssr_server_table = {} uci:foreach("shadowsocksr", "servers", function(s) if s.alias then ssr_server_table[s[".name"]] = "[%s]:%s" % {string.upper(s.v2ray_protocol or s.type), s.alias} elseif s.server and s.server_port then ssr_server_table[s[".name"]] = "[%s]:%s:%s" % {string.upper(s.v2ray_protocol or s.type), s.server, s.server_port} end end) local ssr_key_table = {} for key, _ in pairs(ssr_server_table) do table.insert(ssr_key_table, key) end table.sort(ssr_key_table) o = s:taboption("ssr", DynamicList, "ssr_services", translate("Shadowsocksr Servers"), translate("Please select a service")) for _, key in pairs(ssr_key_table) do o:value(key, ssr_server_table[key]) end o:depends("ssr_enabled", 1) o.forcewrite = true end if nixio.fs.access("/etc/config/passwall") then s:tab("passwalltab", translate("passwall")) o=s:taboption("passwalltab", Flag, "passwall_enabled",translate("Passwall Enabled")) o.rmempty=true local passwall_server_table = {} uci:foreach("passwall", "nodes", function(s) if s.remarks then passwall_server_table[s[".name"]] = "[%s]:%s" % {string.upper(s.protocol or s.type), s.remarks} end end) local passwall_key_table = {} for key, _ in pairs(passwall_server_table) do table.insert(passwall_key_table, key) end table.sort(passwall_key_table) o = s:taboption("passwalltab", DynamicList, "passwall_services", translate("Passwall Servers"), translate("Please select a service")) for _, key in pairs(passwall_key_table) do o:value(key, passwall_server_table[key]) end o:depends("passwall_enabled", 1) o.forcewrite = true end if nixio.fs.access("/etc/config/passwall2") then s:tab("passwall2tab", translate("passwall2")) o=s:taboption("passwall2tab", Flag, "passwall2_enabled",translate("PassWall2 Enabled")) o.rmempty=true local passwall2_server_table = {} uci:foreach("passwall2", "nodes", function(s) if s.remarks then passwall2_server_table[s[".name"]] = "[%s]:%s" % {string.upper(s.protocol or s.type), s.remarks} end end) local passwall2_key_table = {} for key, _ in pairs(passwall2_server_table) do table.insert(passwall2_key_table, key) end table.sort(passwall2_key_table) o = s:taboption("passwall2tab", DynamicList, "passwall2_services", translate("Passwall2 Servers"), translate("Please select a service")) for _, key in pairs(passwall2_key_table) do o:value(key, passwall2_server_table[key]) end o:depends("passwall2_enabled", 1) o.forcewrite = true end s:tab("bypasstab", translate("Bypass")) if nixio.fs.access("/etc/config/bypass") then o=s:taboption("bypasstab", Flag, "bypass_enabled",translate("Bypass Enabled")) o.rmempty=true local bypass_server_table = {} uci:foreach("bypass", "servers", function(s) if s.alias then bypass_server_table[s[".name"]] = "[%s]:%s" % {string.upper(s.protocol or s.type), s.alias} elseif s.server and s.server_port then bypass_server_table[s[".name"]] = "[%s]:%s:%s" % {string.upper(s.protocol or s.type), s.server, s.server_port} end end) local bypass_key_table = {} for key, _ in pairs(bypass_server_table) do table.insert(bypass_key_table, key) end table.sort(bypass_key_table) o = s:taboption("bypasstab", DynamicList, "bypass_services", translate("Bypass Servers"), translate("Please select a service")) for _, key in pairs(bypass_key_table) do o:value(key, bypass_server_table[key]) end o:depends("bypass_enabled", 1) o.forcewrite = true end s:tab("vssrtab", translate("Vssr")) if nixio.fs.access("/etc/config/vssr") then o=s:taboption("vssrtab", Flag, "vssr_enabled",translate("Vssr Enabled")) o.rmempty=true local vssr_server_table = {} uci:foreach("vssr", "servers", function(s) if s.alias then vssr_server_table[s[".name"]] = "[%s]:%s" % {string.upper(s.protocol or s.type), s.alias} elseif s.server and s.server_port then vssr_server_table[s[".name"]] = "[%s]:%s:%s" % {string.upper(s.protocol or s.type), s.server, s.server_port} end end) local vssr_key_table = {} for key, _ in pairs(vssr_server_table) do table.insert(vssr_key_table, key) end table.sort(vssr_key_table) o = s:taboption("vssrtab", DynamicList, "vssr_services", translate("Vssr Servers"), translate("Please select a service")) for _, key in pairs(vssr_key_table) do o:value(key, vssr_server_table[key]) end o:depends("vssr_enabled", 1) o.forcewrite = true end s:tab("dnstab", translate("DNS")) o=s:taboption("dnstab", Flag, "DNS_enabled",translate("DNS Enabled")) o=s:taboption("dnstab", ListValue, "DNS_type", translate("DNS Type")) o:value("aliyu", translate("AliyuDNS")) o:depends("DNS_enabled", 1) o=s:taboption("dnstab", Value,"app_key",translate("Access Key ID")) o.rmempty=true o:depends("DNS_enabled", 1) o=s:taboption("dnstab", Value,"app_secret",translate("Access Key Secret")) o.rmempty=true o:depends("DNS_enabled", 1) o=s:taboption("dnstab", Value,"main_domain",translate("Main Domain"),translate("For example: test.github.com -> github.com")) o.rmempty=true o:depends("DNS_enabled", 1) o=s:taboption("dnstab", Value,"sub_domain",translate("Sub Domain"),translate("For example: test.github.com -> test")) o.rmempty=true o:depends("DNS_enabled", 1) o=s:taboption("dnstab", ListValue, "line", translate("Lines")) o:value("default", translate("default")) o:value("telecom", translate("telecom")) o:value("unicom", translate("unicom")) o:value("mobile", translate("mobile")) o:depends("DNS_enabled", 1) o.default ="telecom" s:tab("dnshost", translate("HOST")) o=s:taboption("dnshost", Flag, "HOST_enabled",translate("HOST Enabled")) o=s:taboption("dnshost", Value,"host_domain",translate("Domain")) o.rmempty=true o:depends("HOST_enabled", 1) e=m:section(TypedSection,"global",translate("Best IP")) e.anonymous=true local a="/usr/share/cloudflarespeedtestresult.txt" tvIPs=e:option(TextValue,"syipstext") tvIPs.rows=8 tvIPs.readonly="readonly" tvIPs.wrap="off" function tvIPs.cfgvalue(e,e) sylogtext="" if a and nixio.fs.access(a) then sylogtext=luci.sys.exec("tail -n 100 %s"%a) end return sylogtext end tvIPs.write=function(e,e,e) end return m ================================================ FILE: luci-app-cloudflarespeedtest/luasrc/model/cbi/cloudflarespeedtest/logread.lua ================================================ log = SimpleForm("logview") log.submit = false log.reset = false t = log:field(DummyValue, '', '') t.rawhtml = true t.template = 'cloudflarespeedtest/logread' return log ================================================ FILE: luci-app-cloudflarespeedtest/luasrc/view/cloudflarespeedtest/actions.htm ================================================ <%+cbi/valueheader%>

    <%:Collecting data...%>

    <%+cbi/valuefooter%> ================================================ FILE: luci-app-cloudflarespeedtest/luasrc/view/cloudflarespeedtest/logread.htm ================================================ <%+cbi/valueheader%> <%:Auto refresh%> <%+cbi/valuefooter%> ================================================ FILE: luci-app-cloudflarespeedtest/po/zh_Hans/cloudflarespeedtest.po ================================================ msgid "" msgstr "" "Project-Id-Version: \n" "POT-Creation-Date: \n" "PO-Revision-Date: 2022-02-10 20:44+0000\n" "Last-Translator: mingxiaoyu \n" "Language: zh_Hans\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 4.8-dev\n" msgid "GitHub" msgstr "GitHub项目地址" msgid "Cloudflare Speed Test" msgstr "Cloudflare速度测试" msgid "Base Setting" msgstr "基本设置" msgid "Logs" msgstr "日志" msgid "Enabled" msgstr "启用" msgid "Enabled scheduled task test Cloudflare IP" msgstr "启用计划任务测试 Cloudflare IP" msgid "Broadband speed" msgstr "宽带速度" msgid "Custome Url Enabled" msgstr "启用自定义地址" msgid "Custome Url" msgstr "自定义地址" msgid "Custome Cron Enabled" msgstr "启用自定义Cron" msgid "Custome Cron" msgstr "自定义Cron" msgid "Hour" msgstr "小时" msgid "Minute" msgstr "分钟" msgid "100M broadband download speed is about 12M/s. It is not recommended to fill in an excessively large value, and it may run all the time." msgstr "100M的宽带下载大概为速度12M/s。不推荐填过大的值,可能出现一直运行。" msgid "Shadowsocksr Plus+ Enabled" msgstr "启用ShadowSocksR Plus+" msgid "Passwall Enabled" msgstr "启用Passwall" msgid "PassWall2 Enabled" msgstr "启用PassWall2" msgid "Bypass Enabled" msgstr "启用Bypass" msgid "Vssr Enabled" msgstr "启用Vssr" msgid "Shadowsocksr Servers" msgstr "ShadowSocksR Plus+服务" msgid "Passwall Servers" msgstr "Passwall服务" msgid "Passwall2 Servers" msgstr "Passwall2服务" msgid "Bypass Servers" msgstr "Bypass服务" msgid "Vssr Servers" msgstr "Vssr服务" msgid "Please select a service" msgstr "请选择一项服务" msgid "Speed Test" msgstr "速度测试" msgid "Best IP" msgstr "最佳IP" msgid "TEST AND APPLY" msgstr "测试并应用" msgid "STOP" msgstr "停止" msgid "Advanced" msgstr "高级模式" msgid "Thread" msgid "线程数" msgid "Average Latency Cap" msgstr "平均延迟上限" msgid "Average Latency Lower Bound" msgstr "平均延迟下限" msgid "IPv6 Enabled" msgstr "启用IPv6" msgid "Delayed speed measurement time" msgstr "延迟测速次数" msgid "Download speed test time" msgstr "下载测速时间" msgid "Number of download speed tests" msgstr "下载测速数量" msgid "Disable download speed test" msgstr "禁用下载测速" msgid "Port" msgstr "端口" msgid "Not recommended" msgstr "不推荐" msgid "Provides only one method, if IPv6 is enabled, IPv4 will not be tested" msgstr "IPv4和IPv6只能选一个!!!!!!" msgid "How to create" msgstr "如何创建" msgid "RUNNING" msgstr "运行中" msgid "NOT RUNNING" msgstr "未运行" msgid "Collecting data..." msgstr "收集数据中..." msgid "Third party applications settings" msgstr "第三方应用设置" msgid "Auto refresh" msgstr "自动刷新" msgid "Status" msgstr "状态" msgid "Proxy Mode" msgstr "代理模式" msgid "HOLD" msgstr "保持" msgid "GFW List" msgid "GFW列表" msgid "CLOSE" msgstr "关闭" msgid "during the speed testing, swith to which mode" msgstr "在速度测试期间,切换到哪种模式" msgid "DNS" msgstr "DNS" msgid "DNS Enabled" msgstr "启用DNS" msgid "DNS Type" msgstr "DNS类型" msgid "AliyuDNS" msgstr "阿里云DNS" msgid "Access Key ID" msgstr "Access Key ID" msgid "Access Key Secret" msgstr "Access Key Secret" msgid "Main Domain" msgstr "主域名" msgid "Sub Domain" msgstr "子域名" msgid "For example: test.github.com -> github.com" msgstr "例如: test.github.com 则填: github.com" msgid "For example: test.github.com -> test" msgstr "例如: test.github.com, 则填: test" msgid "Lines" msgstr "解析线路" msgid "default" msgstr "默认" msgid "telecom" msgstr "电信" msgid "unicom" msgstr "联通" msgid "mobile" msgstr "移动" msgid "HOST Enabled" msgstr "启用HOST" msgid "Domain" msgstr "域名" ================================================ FILE: luci-app-cloudflarespeedtest/root/etc/config/cloudflarespeedtest ================================================ config global 'global' option hour '5' option minute '0' option enabled '0' option ipv6_enabled '0' option advanced '0' option tl '200' option tll '40' option custome_url 'https://speed.cloudflare.com/__down?bytes=300000000' option threads '200' option speed '100' config servers 'servers' option ssr_enabled '0' option passwall_enabled '0' option passwall2_enabled '0' option bypass_enabled '0' option vssr_enabled '0' option DNS_enabled '0' ================================================ FILE: luci-app-cloudflarespeedtest/root/etc/init.d/cloudflarespeedtest ================================================ #!/bin/sh /etc/rc.common START=99 USE_PROCD=1 CRON_FILE=/etc/crontabs/root service_triggers() { procd_add_reload_trigger "cloudflarespeedtest" } add_cron(){ local enabled config_get_bool enabled $1 enabled del_cron if [ $enabled = 1 ] ; then local minute local hour local custome_cors_enabled local custome_cron config_get minute $1 minute config_get hour $1 hour config_get_bool custome_cors_enabled $1 custome_cors_enabled config_get custome_cron $1 custome_cron if [ $custome_cors_enabled = 1 ] ; then echo "$custome_cron /usr/bin/cloudflarespeedtest/cloudflarespeedtest.sh start" >> $CRON_FILE else echo "$minute $hour * * * /usr/bin/cloudflarespeedtest/cloudflarespeedtest.sh start" >> $CRON_FILE fi crontab $CRON_FILE fi } del_cron(){ sed -i '/cloudflarespeedtest/d' $CRON_FILE /etc/init.d/cron restart } stop_instance(){ del_cron } stop_service() { config_load cloudflarespeedtest config_foreach stop_instance global } start_service() { config_load cloudflarespeedtest config_foreach add_cron global } reload_service() { stop start } ================================================ FILE: luci-app-cloudflarespeedtest/root/usr/bin/cloudflarespeedtest/aliddns.sh ================================================ #!/bin/sh LOG_FILE='/var/log/cloudflarespeedtest.log' echolog() { local d="$(date "+%Y-%m-%d %H:%M:%S")" echo -e "$d: $*" >>$LOG_FILE } urlencode() { # urlencode url out='' for c in $(echo -n $1 | sed 's/[^\n]/&\n/g'); do case $c in [a-zA-Z0-9._-]) out="$out$c" ;; *) out="$out$(printf '%%%02X' "'$c")" ;; esac done echo -n $out } send_request() { # send_request action args local args="AccessKeyId=$ak_id&Action=$1&Format=json&$2&Version=2015-01-09" local hash=$(urlencode $(echo -n "GET&%2F&$(urlencode $args)" | openssl dgst -sha1 -hmac "$ak_sec&" -binary | openssl base64)) curl -sSL --connect-timeout 5 "http://alidns.aliyuncs.com/?$args&Signature=$hash" } get_recordid() { sed 's/RR/\n/g' | sed -n 's/.*RecordId[^0-9]*\([0-9]*\).*/\1\n/p' | sort -ru | sed /^$/d } query_recordid() { send_request "DescribeSubDomainRecords" "SignatureMethod=HMAC-SHA1&SignatureNonce=$timestamp&SignatureVersion=1.0&SubDomain=$sub_dm.$main_dm&Timestamp=$timestamp&Type=A" } update_record() { send_request "UpdateDomainRecord" "Line=$line&RR=$sub_dm&RecordId=$1&SignatureMethod=HMAC-SHA1&SignatureNonce=$timestamp&SignatureVersion=1.0&Timestamp=$timestamp&Type=$type&Value=$ip" } add_record() { send_request "AddDomainRecord&DomainName=$main_dm" "Line=$line&RR=$sub_dm&SignatureMethod=HMAC-SHA1&SignatureNonce=$timestamp&SignatureVersion=1.0&Timestamp=$timestamp&Type=$type&Value=$ip" } del_record() { send_request "DeleteDomainRecord" "RecordId=$1&SignatureMethod=HMAC-SHA1&SignatureNonce=$timestamp&SignatureVersion=1.0&Timestamp=$timestamp" } aliddns() { ak_id=$1 ak_sec=$2 main_dm=$3 sub_dm=$4 line=$5 isIpv6=$6 ip=$7 type=A if [ $isIpv6 -eq "1" ] ;then type=AAAA fi echo $ip echo $type rrid=`query_recordid | get_recordid` if [ -z "$rrid" ]; then rrid=`add_record | get_recordid` echolog "ADD record $rrid" else update_record $rrid echolog "UPDATE record $rrid" fi if [ -z "$rrid" ]; then # failed echolog "# ERROR, Please Check Config/Time" fi } timestamp=$(date -u "+%Y-%m-%dT%H%%3A%M%%3A%SZ") aliddns "$@" ================================================ FILE: luci-app-cloudflarespeedtest/root/usr/bin/cloudflarespeedtest/cloudflarespeedtest.sh ================================================ #!/bin/sh LOG_FILE='/var/log/cloudflarespeedtest.log' IP_FILE='/usr/share/cloudflarespeedtestresult.txt' IPV4_TXT='/usr/share/CloudflareSpeedTest/ip.txt' IPV6_TXT='/usr/share/CloudflareSpeedTest/ipv6.txt' function get_global_config(){ while [[ "$*" != "" ]]; do eval ${1}='`uci get cloudflarespeedtest.global.$1`' 2>/dev/null shift done } function get_servers_config(){ while [[ "$*" != "" ]]; do eval ${1}='`uci get cloudflarespeedtest.servers.$1`' 2>/dev/null shift done } echolog() { local d="$(date "+%Y-%m-%d %H:%M:%S")" echo -e "$d: $*" echo -e "$d: $*" >>$LOG_FILE } function read_config(){ get_global_config "enabled" "speed" "custome_url" "threads" "custome_cors_enabled" "custome_cron" "t" "tp" "dt" "dn" "dd" "tl" "tll" "ipv6_enabled" "advanced" "proxy_mode" get_servers_config "ssr_services" "ssr_enabled" "passwall_enabled" "passwall_services" "passwall2_enabled" "passwall2_services" "bypass_enabled" "bypass_services" "vssr_enabled" "vssr_services" "DNS_enabled" "HOST_enabled" } function appinit(){ ssr_started=''; passwall_started=''; passwall2_started=''; bypass_started=''; vssr_started=''; } function speed_test(){ rm -rf $LOG_FILE command="/usr/bin/cdnspeedtest -sl $((speed*125/1000)) -url ${custome_url} -o ${IP_FILE}" if [ $ipv6_enabled -eq "1" ] ;then command="${command} -f ${IPV6_TXT}" else command="${command} -f ${IPV4_TXT}" fi if [ $advanced -eq "1" ] ; then command="${command} -tl ${tl} -tll ${tll} -n ${threads} -t ${t} -dt ${dt} -dn ${dn}" if [ $dd -eq "1" ] ; then command="${command} -dd" fi if [ $tp -ne "443" ] ; then command="${command} -tp ${tp}" fi else command="${command} -tl 200 -tll 40 -n 200 -t 4 -dt 10 -dn 1" fi appinit ssr_original_server=$(uci get shadowsocksr.@global[0].global_server 2>/dev/null) ssr_original_run_mode=$(uci get shadowsocksr.@global[0].run_mode 2>/dev/null) if [ "x${ssr_original_server}" != "xnil" ] && [ "x${ssr_original_server}" != "x" ] ;then if [ $proxy_mode == "close" ] ;then uci set shadowsocksr.@global[0].global_server="nil" elif [ $proxy_mode == "gfw" ] ;then uci set shadowsocksr.@global[0].run_mode="gfw" fi ssr_started='1'; uci commit shadowsocksr /etc/init.d/shadowsocksr restart fi passwall_server_enabled=$(uci get passwall.@global[0].enabled 2>/dev/null) passwall_original_run_mode=$(uci get passwall.@global[0].tcp_proxy_mode 2>/dev/null) if [ "x${passwall_server_enabled}" == "x1" ] ;then if [ $proxy_mode == "close" ] ;then uci set passwall.@global[0].enabled="0" elif [ $proxy_mode == "gfw" ] ;then uci set passwall.@global[0].tcp_proxy_mode="gfwlist" fi passwall_started='1'; uci commit passwall /etc/init.d/passwall restart 2>/dev/null fi passwall2_server_enabled=$(uci get passwall2.@global[0].enabled 2>/dev/null) passwall2_original_run_mode=$(uci get passwall2.@global[0].tcp_proxy_mode 2>/dev/null) if [ "x${passwall2_server_enabled}" == "x1" ] ;then if [ $proxy_mode == "close" ] ;then uci set passwall2.@global[0].enabled="0" elif [ $proxy_mode == "gfw" ] ;then uci set passwall2.@global[0].tcp_proxy_mode="gfwlist" fi passwall2_started='1'; uci commit passwall2 /etc/init.d/passwall2 restart 2>/dev/null fi vssr_original_server=$(uci get vssr.@global[0].global_server 2>/dev/null) vssr_original_run_mode=$(uci get vssr.@global[0].run_mode 2>/dev/null) if [ "x${vssr_original_server}" != "xnil" ] && [ "x${vssr_original_server}" != "x" ] ;then if [ $proxy_mode == "close" ] ;then uci set vssr.@global[0].global_server="nil" elif [ $proxy_mode == "gfw" ] ;then uci set vssr.@global[0].run_mode="gfw" fi vssr_started='1'; uci commit vssr /etc/init.d/vssr restart fi bypass_original_server=$(uci get bypass.@global[0].global_server 2>/dev/null) bypass_original_run_mode=$(uci get bypass.@global[0].run_mode 2>/dev/null) if [ "x${bypass_original_server}" != "x" ] ;then if [ $proxy_mode == "close" ] ;then uci set bypass.@global[0].global_server="" elif [ $proxy_mode == "gfw" ] ;then uci set bypass.@global[0].run_mode="gfw" fi bypass_started='1'; uci commit bypass /etc/init.d/bypass restart fi echo $command >> $LOG_FILE 2>&1 echolog "-----------start----------" $command >> $LOG_FILE 2>&1 echolog "-----------end------------" } function ip_replace(){ # 获取最快 IP(从 result.csv 结果文件中获取第一个 IP) bestip=$(sed -n "2,1p" $IP_FILE | awk -F, '{print $1}') if [[ -z "${bestip}" ]]; then echolog "CloudflareST 测速结果 IP 数量为 0,跳过下面步骤..." else alidns_ip ssr_best_ip vssr_best_ip bypass_best_ip passwall_best_ip passwall2_best_ip restart_app host_ip fi } function passwall_best_ip(){ if [ "x${passwall_enabled}" == "x1" ] ;then echolog "设置passwall IP" for ssrname in $passwall_services do echo $ssrname uci set passwall.$ssrname.address="${bestip}" done uci commit passwall fi } function passwall2_best_ip(){ if [ "x${passwall2_enabled}" == "x1" ] ;then echolog "设置passwall2 IP" for ssrname in $passwall2_services do echo $ssrname uci set passwall2.$ssrname.address="${bestip}" done uci commit passwall2 fi } function ssr_best_ip(){ if [ "x${ssr_enabled}" == "x1" ] ;then echolog "设置ssr IP" for ssrname in $ssr_services do echo $ssrname uci set shadowsocksr.$ssrname.server="${bestip}" uci set shadowsocksr.$ssrname.ip="${bestip}" done uci commit shadowsocksr fi } function vssr_best_ip(){ if [ "x${vssr_enabled}" == "x1" ] ;then echolog "设置Vssr IP" for ssrname in $vssr_services do echo $ssrname uci set vssr.$ssrname.server="${bestip}" done uci commit vssr fi } function bypass_best_ip(){ if [ "x${bypass_enabled}" == "x1" ] ;then echolog "设置Bypass IP" for ssrname in $bypass_services do echo $ssrname uci set bypass.$ssrname.server="${bestip}" done uci commit bypass fi } function restart_app(){ if [ "x${ssr_started}" == "x1" ] ;then if [ $proxy_mode == "close" ] ;then uci set shadowsocksr.@global[0].global_server="${ssr_original_server}" elif [ $proxy_mode == "gfw" ] ;then uci set shadowsocksr.@global[0].run_mode="${ssr_original_run_mode}" fi uci commit shadowsocksr /etc/init.d/shadowsocksr restart &>/dev/null echolog "ssr重启完成" fi if [ "x${passwall_started}" == "x1" ] ;then if [ $proxy_mode == "close" ] ;then uci set passwall.@global[0].enabled="${passwall_server_enabled}" elif [ $proxy_mode == "gfw" ] ;then uci set passwall.@global[0].tcp_proxy_mode="${passwall_original_run_mode}" fi uci commit passwall /etc/init.d/passwall restart 2>/dev/null echolog "passwall重启完成" fi if [ "x${passwall2_started}" == "x1" ] ;then if [ $proxy_mode == "close" ] ;then uci set passwall2.@global[0].enabled="${passwall2_server_enabled}" elif [ $proxy_mode == "gfw" ] ;then uci set passwall2.@global[0].tcp_proxy_mode="${passwall2_original_run_mode}" fi uci commit passwall2 /etc/init.d/passwall2 restart 2>/dev/null echolog "passwall2重启完成" fi if [ "x${bypass_started}" == "x1" ] ;then if [ $proxy_mode == "close" ] ;then uci set vssr.@global[0].global_server="${vssr_original_server}" elif [ $proxy_mode == "gfw" ] ;then uci set vssr.@global[0].run_mode="${vssr_original_run_mode}" fi uci commit vssr /etc/init.d/vssr restart &>/dev/null echolog "Vssr重启完成" fi if [ "x${vssr_started}" == "x1" ] ;then if [ $proxy_mode == "close" ] ;then uci set bypass.@global[0].global_server="${bypass_original_server}" elif [ $proxy_mode == "gfw" ] ;then uci set bypass.@global[0].run_mode="${bypass_original_run_mode}" fi uci commit bypass /etc/init.d/bypass restart &>/dev/null echolog "Bypass重启完成" fi } function alidns_ip(){ if [ "x${DNS_enabled}" == "x1" ] ;then get_servers_config "DNS_type" "app_key" "app_secret" "main_domain" "sub_domain" "line" if [ $DNS_type == "aliyu" ] ;then for sub in $sub_domain do /usr/bin/cloudflarespeedtest/aliddns.sh $app_key $app_secret $main_domain $sub $line $ipv6_enabled $bestip echolog "更新域名${sub}阿里云DNS完成" sleep 1s done fi echo "aliyun done" fi } function host_ip() { if [ "x${HOST_enabled}" == "x1" ] ;then get_servers_config "host_domain" HOSTS_LINE="$bestip $host_domain" if [ -n "$(grep $host_domain /etc/hosts)" ] then sed -i".bak" "/$host_domain/d" /etc/hosts echo $HOSTS_LINE >> /etc/hosts; else echo $HOSTS_LINE >> /etc/hosts; fi /etc/init.d/dnsmasq reload &>/dev/null echolog "HOST 完成" fi } read_config # 启动参数 if [ "$1" ] ;then [ $1 == "start" ] && speed_test && ip_replace [ $1 == "test" ] && speed_test [ $1 == "replace" ] && ip_replace exit fi ================================================ FILE: luci-app-cloudflarespeedtest/root/usr/share/rpcd/acl.d/luci-app-cloudflarespeedtest.json ================================================ { "luci-app-cloudflarespeedtest": { "description": "Grant UCI access for luci-app-cloudflarespeedtest", "read": { "uci": [ "cloudflarespeedtest" ] }, "write": { "uci": [ "cloudflarespeedtest" ] } } } ================================================ FILE: luci-app-control-timewol/Makefile ================================================ # Copyright (C) 2016 Openwrt.org # # This is free software, licensed under the Apache License, Version 2.0 . # include $(TOPDIR)/rules.mk LUCI_TITLE:=LuCI support for Timewol LUCI_DEPENDS:=+etherwake LUCI_PKGARCH:=all PKG_VERSION:=1.1 PKG_RELEASE:=2 include $(TOPDIR)/feeds/luci/luci.mk # call BuildPackage - OpenWrt buildroot signature ================================================ FILE: luci-app-control-timewol/luasrc/controller/timewol.lua ================================================ module("luci.controller.timewol", package.seeall) function index() if not nixio.fs.access("/etc/config/luci-app-control-timewol") then return end entry({"admin", "control"}, firstchild(), "Control", 44).dependent = false entry({"admin", "control", "timewol"}, cbi("timewol"), _("Timed Wakeup"), 95).dependent = true entry({"admin", "control", "timewol", "status"}, call("status")).leaf = true end function status() local e = {} e.status = luci.sys.call("cat /etc/crontabs/root | grep etherwake >/dev/null") == 0 luci.http.prepare_content("application/json") luci.http.write_json(e) end ================================================ FILE: luci-app-control-timewol/luasrc/model/cbi/timewol.lua ================================================ local i = require "luci.sys" t = Map("luci-app-control-timewol", translate("Timed network wake-up"), translate("Wake up your LAN device regularly")) e = t:section(TypedSection, "basic", translate("Basic setting")) e.anonymous = true o = e:option(Flag, "enable", translate("Enable")) o.rmempty = false e = t:section(TypedSection, "macclient", translate("Client setting")) e.template = "cbi/tblsection" e.anonymous = true e.addremove = true nolimit_mac = e:option(Value, "macaddr", translate("MAC Address")) nolimit_mac.rmempty = false i.net.mac_hints(function(e, t) nolimit_mac:value(e, "%s (%s)" % {e, t}) end) nolimit_eth = e:option(Value, "maceth", translate("Network interface")) nolimit_eth.rmempty = false for t, e in ipairs(i.net.devices()) do if e ~= "lo" then nolimit_eth:value(e) end end a = e:option(Value, "minute", translate("minutes")) a.optional = false a = e:option(Value, "hour", translate("hour")) a.optional = false a = e:option(Value, "day", translate("day")) a.optional = false a = e:option(Value, "month", translate("month")) a.optional = false a = e:option(Value, "weeks", translate("weeks")) a.optional = false return t ================================================ FILE: luci-app-control-timewol/luasrc/view/timewol/index.htm ================================================ <%# Copyright 2016 Chen RuiWei Licensed to the public under the Apache License 2.0. -%> <% include("cbi/map") %> ================================================ FILE: luci-app-control-timewol/luasrc/view/timewol/timewol.htm ================================================ <%+cbi/valueheader%> <%=pcdata(self:cfgvalue(section) or self.default or "")%> <%+cbi/valuefooter%> ================================================ FILE: luci-app-control-timewol/po/zh_Hans/timewol.po ================================================ msgid "Control" msgstr "管控" msgid "Running Status" msgstr "运行状态" msgid "Collecting data..." msgstr "正在收集数据..." msgid "NOT RUNNING" msgstr "未运行" msgid "RUNNING" msgstr "运行中" msgid "Timed Wakeup" msgstr "定时唤醒" msgid "Timed network wake-up" msgstr "定时网络唤醒" msgid "Wake up your LAN device regularly" msgstr "定时唤醒你的局域网设备" msgid "Basic setting" msgstr "基本设置" msgid "Enable" msgstr "开启" msgid "Client setting" msgstr "客户端设置" msgid "MAC Address" msgstr "MAC 地址" msgid "Network interface" msgstr "网络接口" msgid "minutes" msgstr "分钟" msgid "hour" msgstr "小时" msgid "day" msgstr "日" msgid "month" msgstr "月" msgid "weeks" msgstr "星期" ================================================ FILE: luci-app-control-timewol/root/etc/config/luci-app-control-timewol ================================================ config basic option enable '0' ================================================ FILE: luci-app-control-timewol/root/etc/init.d/luci-app-control-timewol ================================================ #!/bin/sh /etc/rc.common # # Copyright (C) 2015 OpenWrt-dist # Copyright (C) 2016 fw867 # # This is free software, licensed under the GNU General Public License v3. # See /LICENSE for more information. # START=99 CONFIG="luci-app-control-timewol" uci_get_by_type() { local index=0 if [ -n $4 ]; then index=$4 fi local ret=$(uci get $CONFIG.@$1[$index].$2 2>/dev/null) echo ${ret:=$3} } is_true() { case $1 in 1|on|true|yes|enabled) echo 0;; *) echo 1;; esac } load_config() { ENABLED=$(uci_get_by_type basic enable) return $(is_true $ENABLED) } add_rule(){ local items=$(uci show ${CONFIG} | grep "=macclient" | cut -d '.' -sf 2 | cut -d '=' -sf 1) for i in $items; do local macaddr=$(uci -q get ${CONFIG}.${i}.macaddr) local maceth=$(uci -q get ${CONFIG}.${i}.maceth) local minute=$(uci -q get ${CONFIG}.${i}.minute) local hour=$(uci -q get ${CONFIG}.${i}.hour) local day=$(uci -q get ${CONFIG}.${i}.day) local month=$(uci -q get ${CONFIG}.${i}.month) local weeks=$(uci -q get ${CONFIG}.${i}.weeks) if [ -z $macaddr ] || [ -z $maceth ]; then continue fi if [ -z $minute ] ; then minute="0" fi if [ -z $hour ] ; then hour="*" fi if [ -z $day ] ; then day="*" fi if [ -z $month ] ; then month="*" fi if [ -z $weeks ] ; then weeks="*" fi echo "$minute $hour $day $month $weeks /usr/bin/etherwake -D -i $maceth $macaddr" >> /etc/crontabs/root unset macaddr maceth minute hour day month weeks done } start() { stop ! load_config && exit 0 add_rule } stop() { sed -i '/etherwake/d' /etc/crontabs/root >/dev/null 2>&1 } ================================================ FILE: luci-app-control-timewol/root/etc/uci-defaults/luci-app-control-timewol ================================================ #!/bin/sh uci -q batch <<-EOF >/dev/null delete ucitrack.@luci_app_control_timewol[-1] add ucitrack luci_app_control_timewol set ucitrack.@luci_app_control_timewol[-1].init=luci-app-control-timewol commit ucitrack EOF rm -rf /tmp/luci-*cache exit 0 ================================================ FILE: luci-app-control-timewol/root/usr/share/rpcd/acl.d/luci-app-control-timewol.json ================================================ { "luci-app-control-timewol": { "description": "Grant UCI access for luci-app-control-timewol", "read": { "uci": [ "luci-app-control-timewol" ] }, "write": { "uci": [ "luci-app-control-timewol" ] } } } ================================================ FILE: luci-app-control-timewol/root/usr/share/ucitrack/luci-app-control-timewol.json ================================================ { "config": "luci-app-control-timewol", "init": "luci-app-control-timewol" } ================================================ FILE: luci-app-control-webrestriction/Makefile ================================================ # Copyright (C) 2016 Openwrt.org # # This is free software, licensed under the Apache License, Version 2.0 . # include $(TOPDIR)/rules.mk LUCI_TITLE:=LuCI support for Webrestriction LUCI_PKGARCH:=all PKG_VERSION:=1.1 PKG_RELEASE:=2 include $(TOPDIR)/feeds/luci/luci.mk # call BuildPackage - OpenWrt buildroot signature ================================================ FILE: luci-app-control-webrestriction/luasrc/controller/webrestriction.lua ================================================ module("luci.controller.webrestriction", package.seeall) function index() if not nixio.fs.access("/etc/config/luci-app-control-webrestriction") then return end entry({"admin", "control"}, firstchild(), "Control", 44).dependent = false entry({"admin", "control", "webrestriction"}, cbi("webrestriction"), _("Access Control"), 11).dependent = true entry({"admin", "control", "webrestriction", "status"}, call("status")).leaf = true end function status() local e = {} e.status = luci.sys.call("iptables -w -L FORWARD | grep WEB_RESTRICTION >/dev/null") == 0 luci.http.prepare_content("application/json") luci.http.write_json(e) end ================================================ FILE: luci-app-control-webrestriction/luasrc/model/cbi/webrestriction.lua ================================================ local o = require "luci.sys" a = Map("luci-app-control-webrestriction", translate("Access Control"), translate( "Use the blacklist or whitelist mode to control whether a client in the list can connect to the Internet.")) a.template = "webrestriction/index" e = a:section(TypedSection, "basic", translate("Running Status")) e.anonymous = true t = e:option(DummyValue, "webrestriction_status", translate("Running Status")) t.template = "webrestriction/webrestriction" t.value = translate("Collecting data...") e = a:section(TypedSection, "basic", translate("Global setting")) e.anonymous = true t = e:option(Flag, "enable", translate("Enable")) t.rmempty = false t = e:option(ListValue, "limit_type", translate("Limit mode")) t.default = "blacklist" t:value("whitelist", translate("Whitelist")) t:value("blacklist", translate("Blacklist")) e = a:section(TypedSection, "macbind", translate("List setting"), translate( "In blacklist mode, the client in the list is prohibited from connecting to the Internet. In whitelist mode, only the clients in the list can connect to the Internet.")) e.template = "cbi/tblsection" e.anonymous = true e.addremove = true t = e:option(Flag, "enable", translate("Enable")) t.rmempty = false t = e:option(Value, "macaddr", translate("MAC Address")) t.rmempty = true o.net.mac_hints(function(e, a) t:value(e, "%s (%s)" % {e, a}) end) return a ================================================ FILE: luci-app-control-webrestriction/luasrc/view/webrestriction/index.htm ================================================ <%# Copyright 2016 Chen RuiWei Licensed to the public under the Apache License 2.0. -%> <% include("cbi/map") %> ================================================ FILE: luci-app-control-webrestriction/luasrc/view/webrestriction/webrestriction.htm ================================================ <%+cbi/valueheader%> <%=pcdata(self:cfgvalue(section) or self.default or "")%> <%+cbi/valuefooter%> ================================================ FILE: luci-app-control-webrestriction/po/zh_Hans/webrestriction.po ================================================ msgid "Control" msgstr "管控" msgid "Running Status" msgstr "运行状态" msgid "Collecting data..." msgstr "正在收集数据..." msgid "NOT RUNNING" msgstr "未运行" msgid "RUNNING" msgstr "运行中" msgid "Access Control" msgstr "访问限制" msgid "Use the blacklist or whitelist mode to control whether a client in the list can connect to the Internet." msgstr "使用黑名单或者白名单模式控制列表中的客户端是否能够连接到互联网。" msgid "Global setting" msgstr "全局设置" msgid "Enable" msgstr "开启" msgid "Limit mode" msgstr "限制模式" msgid "Whitelist" msgstr "白名单" msgid "Blacklist" msgstr "黑名单" msgid "List setting" msgstr "名单设置" msgid "In blacklist mode, the client in the list is prohibited from connecting to the Internet. In whitelist mode, only the clients in the list can connect to the Internet." msgstr "如果是黑名单模式,列表中的客户端将被禁止连接到互联网;白名单模式表示仅有列表中的客户端可以连接到互联网。" msgid "MAC Address" msgstr "MAC 地址" ================================================ FILE: luci-app-control-webrestriction/root/etc/config/luci-app-control-webrestriction ================================================ config basic option enable '0' option limit_type 'blacklist' ================================================ FILE: luci-app-control-webrestriction/root/etc/init.d/luci-app-control-webrestriction ================================================ #!/bin/sh /etc/rc.common # Copyright (C) 2016 fw867 # Copyright (C) 2024 Lienol START=99 CONFIG="luci-app-control-webrestriction" ipt="iptables -w" ip6t="ip6tables -w" iptables_w(){ $ipt 1 "$@" $ip6t 1 "$@" } add_rule(){ action=$1 local items=$(uci show ${CONFIG} | grep "=macbind" | cut -d '.' -sf 2 | cut -d '=' -sf 1) for i in $items; do enable=$(uci -q get ${CONFIG}.${i}.enable) macaddr=$(uci -q get ${CONFIG}.${i}.macaddr) if [ -z $enable ] || [ -z $macaddr ]; then continue fi if [ "$enable" == "1" ]; then iptables_w -A WEB_RESTRICTION -m mac --mac-source $macaddr -j $action [ "$limit_type" == "blacklist" ] && { iptables_w -t nat -A WEB_RESTRICTION -m mac --mac-source $macaddr -j RETURN } fi unset enable macaddr done } start(){ stop ENABLED=$(uci -q get ${CONFIG}.@basic[0].enable || echo "0") [ "${ENABLED}" != "1" ] && exit 0 limit_type=$(uci -q get ${CONFIG}.@basic[0].limit_type) iptables_w -N WEB_RESTRICTION if [ "$limit_type" == "blacklist" ]; then iptables_w -t nat -N WEB_RESTRICTION add_rule DROP else add_rule ACCEPT iptables_w -A WEB_RESTRICTION -j DROP fi FW3_INDEX_4=$($ipt -L FORWARD --line-numbers | tail -n +3 | grep -E ACCEPT | grep ctstate | grep fw3 | awk '{print $1}') [ -n "$FW3_INDEX_4" ] && let FW3_INDEX_4+=1 $ipt -I FORWARD $FW3_INDEX_4 -j WEB_RESTRICTION FW3_INDEX_6=$($ip6t -L FORWARD --line-numbers | tail -n +3 | grep -E ACCEPT | grep ctstate | grep fw3 | awk '{print $1}') [ -n "$FW3_INDEX_6" ] && let FW3_INDEX_6+=1 $ip6t -I FORWARD $FW3_INDEX_6 -j WEB_RESTRICTION [ "$limit_type" == "blacklist" ] && { iptables_w -t nat -I PREROUTING 1 -j WEB_RESTRICTION } } stop(){ ipt_del() { for i in $(seq 1 $($1 -nL $2 | grep -c "WEB_RESTRICTION")); do local index=$($1 --line-number -nL $2 | grep "WEB_RESTRICTION" | head -1 | awk '{print $1}') $1 -w -D $2 $index 2>/dev/null done } ipt_del "$ipt" "FORWARD" ipt_del "$ipt" "INPUT" ipt_del "$ipt -t nat" "PREROUTING" ipt_del "$ip6t" "FORWARD" ipt_del "$ip6t" "INPUT" ipt_del "$ip6t -t nat" "PREROUTING" iptables_w -F WEB_RESTRICTION 2>/dev/null iptables_w -X WEB_RESTRICTION 2>/dev/null iptables_w -t nat -F WEB_RESTRICTION 2>/dev/null iptables_w -t nat -X WEB_RESTRICTION 2>/dev/null } ================================================ FILE: luci-app-control-webrestriction/root/etc/uci-defaults/luci-app-control-webrestriction ================================================ #!/bin/sh uci -q batch <<-EOF >/dev/null delete ucitrack.@luci_app_control_webrestriction[-1] add ucitrack luci_app_control_webrestriction set ucitrack.@luci_app_control_webrestriction[-1].init=luci-app-control-webrestriction commit ucitrack EOF rm -rf /tmp/luci-*cache exit 0 ================================================ FILE: luci-app-control-webrestriction/root/usr/share/rpcd/acl.d/luci-app-control-webrestriction.json ================================================ { "luci-app-control-webrestriction": { "description": "Grant UCI access for luci-app-control-webrestriction", "read": { "uci": [ "luci-app-control-webrestriction" ] }, "write": { "uci": [ "luci-app-control-webrestriction" ] } } } ================================================ FILE: luci-app-control-webrestriction/root/usr/share/ucitrack/luci-app-control-webrestriction.json ================================================ { "config": "luci-app-control-webrestriction", "init": "luci-app-control-webrestriction" } ================================================ FILE: luci-app-control-weburl/Makefile ================================================ # Copyright (C) 2016 Openwrt.org # # This is free software, licensed under the Apache License, Version 2.0 . # include $(TOPDIR)/rules.mk LUCI_TITLE:=LuCI support for Weburl LUCI_DEPENDS:=+iptables-mod-filter +kmod-ipt-filter LUCI_PKGARCH:=all PKG_VERSION:=1.1 PKG_RELEASE:=2 include $(TOPDIR)/feeds/luci/luci.mk # call BuildPackage - OpenWrt buildroot signature ================================================ FILE: luci-app-control-weburl/luasrc/controller/weburl.lua ================================================ module("luci.controller.weburl", package.seeall) function index() if not nixio.fs.access("/etc/config/luci-app-control-weburl") then return end entry({"admin", "control"}, firstchild(), "Control", 44).dependent = false entry({"admin", "control", "weburl"}, cbi("weburl"), _("URL Filter"), 12).dependent = true entry({"admin", "control", "weburl", "status"}, call("status")).leaf = true end function status() local e = {} e.status = luci.sys.call("iptables -w -L FORWARD | grep WEBURL >/dev/null") == 0 luci.http.prepare_content("application/json") luci.http.write_json(e) end ================================================ FILE: luci-app-control-weburl/luasrc/model/cbi/weburl.lua ================================================ local o = require "luci.sys" a = Map("luci-app-control-weburl", translate("URL Filter"), translate( "Set keyword filtering here, can be any character in the URL, can filter such as video sites, QQ, thunder, Taobao...")) a.template = "weburl/index" t = a:section(TypedSection, "basic", translate("Running Status")) t.anonymous = true e = t:option(DummyValue, "weburl_status", translate("Running Status")) e.template = "weburl/weburl" e.value = translate("Collecting data...") t = a:section(TypedSection, "basic", translate("Basic setting"), translate( "In general, normal filtering works fine, but forced filtering uses more complex algorithms and leads to higher CPU usage.")) t.anonymous = true e = t:option(Flag, "enable", translate("Enable")) e.rmempty = false e = t:option(Flag, "algos", translate("Forced filter")) e.rmempty = false t = a:section(TypedSection, "macbind", translate("Keyword setting"), translate( "MAC addresses do not filter out all clients. For example, only specified clients are filtered out. Filtering time is optional.")) t.template = "cbi/tblsection" t.anonymous = true t.addremove = true e = t:option(Flag, "enable", translate("Enable")) e.rmempty = false e = t:option(Value, "macaddr", translate("MAC Address")) e.rmempty = true o.net.mac_hints(function(t, a) e:value(t, "%s (%s)" % {t, a}) end) e = t:option(Value, "timeon", translate("Start time")) e.placeholder = "00:00" e.rmempty = true e = t:option(Value, "timeoff", translate("End time")) e.placeholder = "23:59" e.rmempty = true e = t:option(Value, "keyword", translate("Keyword")) e.rmempty = false return a ================================================ FILE: luci-app-control-weburl/luasrc/view/weburl/index.htm ================================================ <%# Copyright 2016 Chen RuiWei Licensed to the public under the Apache License 2.0. -%> <% include("cbi/map") %> ================================================ FILE: luci-app-control-weburl/luasrc/view/weburl/weburl.htm ================================================ <%+cbi/valueheader%> <%=pcdata(self:cfgvalue(section) or self.default or "")%> <%+cbi/valuefooter%> ================================================ FILE: luci-app-control-weburl/po/zh_Hans/weburl.po ================================================ msgid "Control" msgstr "管控" msgid "Running Status" msgstr "运行状态" msgid "Collecting data..." msgstr "正在收集数据..." msgid "NOT RUNNING" msgstr "未运行" msgid "RUNNING" msgstr "运行中" msgid "URL Filter" msgstr "网址过滤" msgid "Set keyword filtering here, can be any character in the URL, can filter such as video sites, QQ, thunder, Taobao..." msgstr "在这里设置关键词过滤,可以是URL里任意字符,可以过滤如视频网站、QQ、迅雷、淘宝。。。" msgid "Basic setting" msgstr "基本设置" msgid "In general, normal filtering works fine, but forced filtering uses more complex algorithms and leads to higher CPU usage." msgstr "一般来说普通过滤效果就很好了,强制过滤会使用更复杂的算法导致更高的CPU占用。" msgid "Enable" msgstr "启用" msgid "Forced filter" msgstr "强效过滤" msgid "Keyword setting" msgstr "关键词设置" msgid "MAC addresses do not filter out all clients. For example, only specified clients are filtered out. Filtering time is optional." msgstr "MAC不设置为全客户端过滤,如设置只过滤指定的客户端。过滤时间可不设置。" msgid "MAC Address" msgstr "MAC 地址" msgid "Start time" msgstr "开始时间" msgid "End time" msgstr "结束时间" msgid "Keyword" msgstr "关键字" ================================================ FILE: luci-app-control-weburl/root/etc/config/luci-app-control-weburl ================================================ config basic option enable '0' option algos '0' config macbind option keyword 'qq.com' option enable '0' option macaddr '00:0C:29:C8:99:9E' config macbind option keyword 'taobao.com' option enable '0' config macbind option enable '0' option keyword 'youku.com' config macbind option enable '0' option keyword 'www' ================================================ FILE: luci-app-control-weburl/root/etc/init.d/luci-app-control-weburl ================================================ #!/bin/sh /etc/rc.common # Copyright (C) 2016 fw867 # Copyright (C) 2024 Lienol START=99 CONFIG="luci-app-control-weburl" iptables_w(){ iptables -w 1 "$@" ip6tables -w 1 "$@" } start(){ stop ENABLED=$(uci -q get ${CONFIG}.@basic[0].enable || echo "0") [ "${ENABLED}" != "1" ] && exit 0 ALGOS=$(uci -q get ${CONFIG}.@basic[0].algos || echo "0") WEBURL_ALGOS="bm" [ "${ALGOS}" = "1" ] && WEBURL_ALGOS="kmp" # resolve interface local interface=$( . /lib/functions/network.sh network_is_up "lan" && network_get_device device "lan" echo "${device:-br-lan}" ) iptables_w -t filter -N WEBURL_REJECT iptables_w -t filter -I WEBURL_REJECT -j DROP iptables_w -t filter -I WEBURL_REJECT -p tcp -j REJECT --reject-with tcp-reset iptables_w -t filter -N WEBURL_RULES iptables_w -t filter -N WEBURL iptables_w -t filter -I WEBURL -i $interface -m length --length 53:768 -j WEBURL_RULES # iptables_w -t filter -I WEBURL -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT iptables_w -t filter -I FORWARD -j WEBURL local items=$(uci show ${CONFIG} | grep "=macbind" | cut -d '.' -sf 2 | cut -d '=' -sf 1) for i in $items; do enable=$(uci -q get ${CONFIG}.${i}.enable || echo "0") macaddr=$(uci -q get ${CONFIG}.${i}.macaddr) timeon=$(uci -q get ${CONFIG}.${i}.timeon) timeoff=$(uci -q get ${CONFIG}.${i}.timeoff) keyword=$(uci -q get ${CONFIG}.${i}.keyword) if [ "$enable" == "0" ] || [ -z "$keyword" ]; then continue fi if [ -z "$timeon" ] || [ -z "$timeoff" ]; then settime="" else settime="-m time --kerneltz --timestart $timeon --timestop $timeoff" fi if [ -z "$macaddr" ]; then iptables_w -t filter -I WEBURL_RULES $settime -m string --string "$keyword" --algo $WEBURL_ALGOS -j WEBURL_REJECT else iptables_w -t filter -I WEBURL_RULES $settime -m mac --mac-source $macaddr -m string --string "$keyword" --algo $WEBURL_ALGOS -j WEBURL_REJECT fi unset enable macaddr timeon timeoff keyword done logger -t weburl "weburl filter on $interface" } stop(){ iptables_w -t filter -D FORWARD -j WEBURL 2>/dev/null iptables_w -t filter -F WEBURL 2>/dev/null iptables_w -t filter -X WEBURL 2>/dev/null iptables_w -t filter -F WEBURL_RULES 2>/dev/null iptables_w -t filter -X WEBURL_RULES 2>/dev/null iptables_w -t filter -F WEBURL_REJECT 2>/dev/null iptables_w -t filter -X WEBURL_REJECT 2>/dev/null } ================================================ FILE: luci-app-control-weburl/root/etc/uci-defaults/luci-app-control-weburl ================================================ #!/bin/sh uci -q batch <<-EOF >/dev/null delete ucitrack.@luci_app_control_weburl[-1] add ucitrack luci_app_control_weburl set ucitrack.@luci_app_control_weburl[-1].init=luci-app-control-weburl commit ucitrack EOF rm -rf /tmp/luci-*cache exit 0 ================================================ FILE: luci-app-control-weburl/root/usr/share/rpcd/acl.d/luci-app-control-weburl.json ================================================ { "luci-app-control-weburl": { "description": "Grant UCI access for luci-app-control-weburl", "read": { "uci": [ "luci-app-control-weburl" ] }, "write": { "uci": [ "luci-app-control-weburl" ] } } } ================================================ FILE: luci-app-control-weburl/root/usr/share/ucitrack/luci-app-control-weburl.json ================================================ { "config": "luci-app-control-weburl", "init": "luci-app-control-weburl" } ================================================ FILE: luci-app-cpulimit/Makefile ================================================ # # Copyright (C) 2008-2014 The LuCI Team # # This is free software, licensed under the Apache License, Version 2.0 . # include $(TOPDIR)/rules.mk LUCI_TITLE:=cpulimit configuration module LUCI_DEPENDS:=+cpulimit include $(TOPDIR)/feeds/luci/luci.mk # call BuildPackage - OpenWrt buildroot signature ================================================ FILE: luci-app-cpulimit/luasrc/controller/cpulimit.lua ================================================ module("luci.controller.cpulimit", package.seeall) function index() if not nixio.fs.access("/etc/config/cpulimit") then return end local page = entry({"admin", "system", "cpulimit"}, cbi("cpulimit"), _("cpulimit"), 65) page.dependent = true page.acl_depends = { "luci-app-cpulimit" } end ================================================ FILE: luci-app-cpulimit/luasrc/model/cbi/cpulimit.lua ================================================ m = Map("cpulimit", translate("cpulimit")) m.description = translate("cpulimit ") s = m:section(TypedSection, "list", translate("Settings")) s.template = "cbi/tblsection" s.anonymous = true s.addremove = true enable = s:option(Flag, "enabled", translate("enable", "enable")) enable.optional = false enable.rmempty = false exename = s:option(Value, "exename", translate("exename"), translate("name of the executable program file or path name")) exename.optional = false exename.rmempty = false exename.default = "/usr/bin/transmission-daemon" exename:value("transmission","/usr/bin/transmission-daemon") exename:value("samba","/usr/sbin/smbd") exename:value("mount.ntfs-3g","mount.ntfs-3g") exename:value("vsftpd","/usr/sbin/vsftpd") exename:value("pure-ftpd","/usr/sbin/pure-ftpd") limit = s:option(Value, "limit", translate("limit")) limit.optional = false limit.rmempty = false limit.default = "50" limit:value("100","100%") limit:value("90","90%") limit:value("80","80%") limit:value("70","70%") limit:value("60","60%") limit:value("50","50%") limit:value("40","40%") limit:value("30","30%") limit:value("20","20%") limit:value("10","10%") return m ================================================ FILE: luci-app-cpulimit/po/zh_Hans/cpulimit.po ================================================ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-06-28\n" "PO-Revision-Date: 2014-06-28\n" "Last-Translator: Syrone Wong \n" "Language: zh_Hans\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" msgid "cpulimit" msgstr "CPU占用率限制" msgid "Use cpulimit to restrict app's cpu usage." msgstr "利用cpulimit限制应用程序的CPU使用率" msgid "Usage restrictions" msgstr "使用率限制" msgid "exename" msgstr "进程名称" msgid "name of the executable program file or path name" msgstr "可执行文件名称。不能是应用程序路径!" msgid "limit" msgstr "占用率限制" ================================================ FILE: luci-app-cpulimit/root/etc/config/cpulimit ================================================ config 'list' option 'exename' '/usr/bin/transmission-daemon' option 'limit' '50' option 'enabled' '0' ================================================ FILE: luci-app-cpulimit/root/etc/init.d/cpulimit ================================================ #!/bin/sh /etc/rc.common # Copyright (C) 2006-2011 OpenWrt.org . /lib/functions.sh START=50 DEFAULT=/etc/default/cpulimit start() { /usr/bin/cpulimit.sh start & } stop() { killall -9 cpulimit } ================================================ FILE: luci-app-cpulimit/root/etc/uci-defaults/luci-cpulimit ================================================ #!/bin/sh uci -q batch <<-EOF >/dev/null delete ucitrack.@cpulimit[-1] add ucitrack cpulimit set ucitrack.@cpulimit[-1].init=cpulimit commit ucitrack EOF /etc/init.d/cpulimit enable rm -f /tmp/luci-indexcache exit 0 ================================================ FILE: luci-app-cpulimit/root/usr/bin/cpulimit.sh ================================================ #!/bin/sh . /lib/functions.sh cpulimit_get(){ echo cpulimit_get config_get enabled $1 enabled [ $enabled -gt 0 ] || return 1 config_get limit $1 limit config_get exename $1 exename cpulimit -l $limit -e $exename & echo cpulimit -l $limit -e $exename } stop() { killall -9 cpulimit # ps -a|grep cpulimit|while read line # do # killall cpulimit>/dev/null 2>&1 # done } case "$1" in "start") echo start killall -9 cpulimit config_load cpulimit config_foreach cpulimit_get list echo end exit 0 ;; "stop")echo stop; killall -9 cpulimit;; esac ================================================ FILE: luci-app-cpulimit/root/usr/share/rpcd/acl.d/luci-app-cpulimit.json ================================================ { "luci-app-cpulimit": { "description": "Grant UCI access for luci-app-cpulimit", "read": { "uci": [ "cpulimit" ] }, "write": { "uci": [ "cpulimit" ] } } } ================================================ FILE: luci-app-ddns-go/ddns-go/Makefile ================================================ # SPDX-License-Identifier: GPL-3.0-only # # Copyright (C) 2021-2026 sirpdboy # include $(TOPDIR)/rules.mk PKG_NAME:=ddns-go PKG_VERSION:=6.16.2 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://codeload.github.com/jeessy2/ddns-go/tar.gz/v$(PKG_VERSION)? PKG_HASH:=1a92f53e50c8ca81e20c15c6dbaf490544f1a7b7b8c8d1c4c60ad8f1bc890276 PKG_LICENSE:=MIT PKG_LICENSE_FILES:=LICENSE PKG_MAINTAINER:=sirpdboy PKG_BUILD_DEPENDS:=golang/host PKG_BUILD_PARALLEL:=1 PKG_BUILD_FLAGS:=no-mips16 GO_PKG:=github.com/jeessy2/ddns-go/v6 GO_PKG_LDFLAGS_X:=main.Version=$(PKG_VERSION) GO_PKG_LDFLAGS:=$(GO_PKG_LDFLAGS_X) include $(INCLUDE_DIR)/package.mk include $(TOPDIR)/feeds/packages/lang/golang/golang-package.mk define Package/ddns-go SECTION:=net CATEGORY:=Network SUBMENU:=IP Addresses and Names TITLE:=Support IPV4 and IPV6 simple and easy-to-use IP binding domain name tool URL:=https://github.com/jeessy2/ddns-go DEPENDS:=$(GO_ARCH_DEPENDS) +ca-bundle USERID:=ddns-go:ddns-go endef define Package/ddns-go/description A simple and easy-to-use IP binding domain name tool that supports IPV4 and IPV6. endef define Package/ddns-go/conffiles /etc/config/ddns-go /etc/ddns-go/ddns-go-config.yaml endef define Package/ddns-go/install $(call GoPackage/Package/Install/Bin,$(1)) $(INSTALL_DIR) $(1)/etc/init.d $(INSTALL_DIR) $(1)/etc/config $(INSTALL_BIN) $(CURDIR)/files/ddns-go.init $(1)/etc/init.d/ddns-go $(INSTALL_CONF) $(CURDIR)/files/ddns-go.conf $(1)/etc/config/ddns-go endef $(eval $(call GoBinPackage,ddns-go)) $(eval $(call BuildPackage,ddns-go)) ================================================ FILE: luci-app-ddns-go/ddns-go/files/ddns-go.conf ================================================ config basic 'config' option enabled '0' option logger '1' option port '9876' option time '300' option ctimes '5' option skipverify '0' option delay '0' option dns '223.5.5.5' ================================================ FILE: luci-app-ddns-go/ddns-go/files/ddns-go.init ================================================ #!/bin/sh /etc/rc.common # # Copyright (C) 2021-2026 sirpdboy # # This file is part of ddns-go . # # This is free software, licensed under the Apache License, Version 2.0 . # START=99 USE_PROCD=1 NAME=ddns-go PROG=/usr/bin/ddns-go CONFDIR=/etc/ddns-go CONF=$CONFDIR/ddns-go-config.yaml init_yaml() { [ -d "$CONFDIR" ] || mkdir -p "$CONFDIR" chown -R ddns-go:ddns-go "$CONFDIR" chmod 755 "$CONFDIR" [ -f "$CONF" ] && chmod 644 "$CONF" } build_args() { local cfg="$1" local args="-c $CONF" config_get port "$cfg" port '9876' args="$args -l :$port" config_get time "$cfg" time '300' [ -n "$time" ] && args="$args -f $time" config_get ctimes "$cfg" ctimes '5' [ -n "$ctimes" ] && args="$args -cacheTimes $ctimes" config_get dns "$cfg" dns '223.5.5.5' [ -n "$dns" ] && args="$args -dns $dns" config_get_bool noweb "$cfg" noweb 0 [ "$noweb" -eq 1 ] && args="$args -noweb" config_get_bool skipverify "$cfg" skipverify 0 [ "$skipverify" -eq 1 ] && args="$args -skipVerify" echo "$args" } start_instance() { local cfg="$1" config_get_bool enabled "$cfg" enabled 0 [ "$enabled" -eq 0 ] && return 0 config_get delay "$cfg" delay 0 if [ "$delay" -gt 0 ]; then local uptime=$(awk -F. '{print $1}' /proc/uptime) [ "$uptime" -lt 120 ] && sleep "$delay" fi init_yaml local args=$(build_args "$cfg") procd_open_instance procd_set_param command $PROG $args procd_set_param stdout 1 procd_set_param stderr 1 procd_set_param log_level 7 procd_set_param user ddns-go procd_set_param respawn procd_close_instance } start_service() { config_load "$NAME" config_foreach start_instance 'basic' } service_triggers() { procd_add_reload_trigger "$NAME" } ================================================ FILE: luci-app-ddns-go/luci-app-ddns-go/Makefile ================================================ # SPDX-License-Identifier: GPL-3.0-only # # Copyright (C) 2021-2026 sirpdboy # # This is free software, licensed under the Apache License, Version 2.0 . # include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-ddns-go PKG_VERSION:=1.6.8 PKG_RELEASE:=20260323 PKG_MAINTAINER:=sirpdboy PKG_CONFIG_DEPENDS:= LUCI_TITLE:=LuCI Support for Dynamic ddns-go Client LUCI_DEPENDS:=+ddns-go LUCI_PKGARCH:=all include $(TOPDIR)/feeds/luci/luci.mk # call BuildPackage - OpenWrt buildroot signature ================================================ FILE: luci-app-ddns-go/luci-app-ddns-go/htdocs/luci-static/resources/view/ddns-go/config.js ================================================ /* Copyright (C) 2022-2026 sirpdboy herboy2008@gmail.com*/ 'use strict'; 'require view'; 'require fs'; 'require ui'; 'require uci'; 'require form'; 'require poll'; 'require rpc'; const getDDNSGoInfo = rpc.declare({ object: 'luci.ddns-go', method: 'get_ver', expect: { 'ver': {} } }); const getUpdateInfo = rpc.declare({ object: 'luci.ddns-go', method: 'last_update', expect: { 'update': {} } }); const updateMessageMap = { 'Already the latest version': _('Already the latest version'), 'New version available': _('New version available'), 'Update successful': _('Update successful'), 'Download update failed': _('Download update failed'), 'Update check failed': _('Update check failed'), 'Update status unknown': _('Update status unknown') }; async function checkProcess() { try { const pidofRes = await fs.exec('/bin/pidof', ['ddns-go']); if (pidofRes.code === 0) { return { running: true, pid: pidofRes.stdout.trim() }; } } catch (err) { } try { const psRes = await fs.exec('/bin/ps', ['-C', 'ddns-go', '-o', 'pid=']); const pid = psRes.stdout.trim(); return { running: pid !== '', pid: pid || null }; } catch (err) { return { running: false, pid: null }; } } function getVersionInfo() { return L.resolveDefault(getDDNSGoInfo(), {}).then(function(result) { return result || {}; }).catch(function(error) { console.error('Failed to get version:', error); return {}; }); } function checkUpdateStatus() { return L.resolveDefault(getUpdateInfo(), {}).then(function(result) { return result || {}; }).catch(function(error) { console.error('Failed to get update info:', error); return {}; }); } function extractPortNumber(portValue) { if (!portValue) return '9876'; if (portValue.includes(':')) { var parts = portValue.split(':'); return parts[parts.length - 1]; } return portValue; } function renderStatus(isRunning, listen_port, noweb, version) { var statusText = isRunning ? _('RUNNING') : _('NOT RUNNING'); var color = isRunning ? 'green' : 'red'; var icon = isRunning ? '✓' : '✗'; var versionText = version ? `v${version}` : ''; var html = String.format( '%s %s %s - %s', color, icon, _('DDNS-Go'), versionText, statusText ); if (isRunning) { html += String.format(' %s', window.location.hostname, listen_port, _('Open Web Interface')); } return html; } function renderUpdateStatus(updateInfo) { if (!updateInfo || !updateInfo.status) { return ' ⚠ ' + _('Update status unknown') + ''; } var status = updateInfo.status; var message = updateInfo.message || ''; for (let [en, zh] of Object.entries(updateMessageMap)) { if (message.includes(en)) { message = message.replace(en, zh); break; } } switch(status) { case 'updated': return String.format('✓ %s', message); case 'update_available': return String.format('↻ %s', message); case 'latest': return String.format('✓ %s', message); case 'download_failed': case 'check_failed': return String.format('✗ %s', message); default: return String.format('? %s', message); } } return view.extend({ load: function() { return Promise.all([ uci.load('ddns-go') ]); }, handleResetPassword: async function () { try { ui.showModal(_('Resetting Password'), [ E('p', { 'class': 'spinning' }, _('Resetting admin username and password, please wait...')) ]); const result = await fs.exec('/usr/bin/ddns-go', ['-resetPassword', 'admin12345', '-c', '/etc/ddns-go/ddns-go-config.yaml']); const configFile = '/etc/ddns-go/ddns-go-config.yaml'; const readResult = await fs.read(configFile); if (readResult && readResult.trim() !== '') { let configContent = readResult; configContent = configContent.replace(/(username:\s*).*/g, '$1admin'); if (!configContent.includes('user:')) { configContent += '\nuser:\n username: admin\n password: $2a$10$G1xO1cVUYtSpPYwV/Jk3l.u7PxLUxo03wntWG6VA9BxAftNWfZEhK'; } await fs.write(configFile, configContent); } ui.hideModal(); if (result.code === 0) { ui.showModal(_('Username and Password Reset Successful'), [ E('p', _('Username: admin, Password: admin12345')), E('p', _('You need to restart DDNS-Go service for the changes to take effect.')), E('div', { 'class': 'right' }, [ E('button', { 'class': 'btn cbi-button cbi-button-positive', 'click': ui.createHandlerFn(this, function() { ui.hideModal(); this.handleRestartService(); }) }, _('Restart Service Now')), ' ', E('button', { 'class': 'btn cbi-button cbi-button-neutral', 'click': ui.hideModal }, _('Restart Later')) ]) ]); } else { ui.showModal(_('Partial Reset'), [ E('p', _('DDNS-Go command reset may have failed, but configuration file has been updated.')), E('p', _('Username: admin, Password: admin12345')), E('p', _('You may need to restart DDNS-Go service manually.')), E('div', { 'class': 'right' }, [ E('button', { 'class': 'btn cbi-button cbi-button-positive', 'click': ui.createHandlerFn(this, function() { ui.hideModal(); this.handleRestartService(); }) }, _('Restart Service Now')), ' ', E('button', { 'class': 'btn cbi-button cbi-button-neutral', 'click': ui.hideModal }, _('Close')) ]) ]); } } catch (error) { ui.hideModal(); alert(_('ERROR:') + '\n' + _('Reset username/password failed:') + '\n' + error.message); } }, handleRestartService: async function() { try { // const enabledValue = document.querySelector('input[name="cfg001c48.enabled"]')?.checked ? '1' : '0'; const enabledValue = document.querySelectorAll('input[id="widget.cbid.ddns-go.config.enabled"]')?.checked ? '1' : '0'; await uci.set('ddns-go', 'config', 'enabled', enabledValue); await uci.save('ddns-go'); await uci.apply(); await fs.exec('/etc/init.d/ddns-go', ['stop']); await new Promise(resolve => setTimeout(resolve, 1000)); if (enabledValue === '1') { await fs.exec('/etc/init.d/ddns-go', ['start']); } alert(_('SUCCESS:') + '\n' + _('DDNS-Go service restarted successfully')); if (window.statusPoll) { window.statusPoll(); } } catch (error) { alert(_('ERROR:') + '\n' + _('Failed to restart service:') + '\n' + error.message); } }, handleUpdate: async function () { try { var updateView = document.getElementById('update_status'); if (updateView) { updateView.innerHTML = ' ' + _('Updating, please wait...'); } const updateInfo = await checkUpdateStatus(); if (updateView) { updateView.innerHTML = renderUpdateStatus(updateInfo); } if (updateInfo.update_successful || updateInfo.status === 'updated') { if (window.statusPoll) { window.statusPoll(); } setTimeout(() => { var updateView = document.getElementById('update_status'); if (updateView) { getVersionInfo().then(function(versionInfo) { var version = versionInfo.version || ''; updateView.innerHTML = String.format('✓ %s v%s', _('Current Version'), version); }); } }, 3000); } } catch (error) { console.error('Update failed:', error); var updateView = document.getElementById('update_status'); if (updateView) { updateView.innerHTML = '✗ ' + _('Update failed') + ''; setTimeout(() => { getVersionInfo().then(function(versionInfo) { var version = versionInfo.version || ''; updateView.innerHTML = String.format('%s v%s', _('Current Version'), version); }); }, 5000); } } }, render: function(data) { var m, s, o; var portValue = uci.get('ddns-go', 'config', 'port') || '[::]:9876'; var listen_port = extractPortNumber(portValue); var noweb = uci.get('ddns-go', 'config', 'noweb') || '0'; m = new form.Map('ddns-go', _('DDNS-GO'), _('DDNS-GO automatically obtains your public IPv4 or IPv6 address and resolves it to the corresponding domain name service.')); s = m.section(form.TypedSection); s.anonymous = true; s.render = function() { var statusView = E('p', { id: 'control_status' }, ' ' + _('Checking status...')); window.statusPoll = function() { return Promise.all([ checkProcess(), getVersionInfo() ]).then(function(results) { var [processInfo, versionInfo] = results; var version = versionInfo.version || ''; statusView.innerHTML = renderStatus(processInfo.running, listen_port, noweb, version); }).catch(function(err) { console.error('Status check failed:', err); statusView.innerHTML = '⚠ ' + _('Status check error') + ''; }); }; poll.add(window.statusPoll, 5); return E('div', { class: 'cbi-section', id: 'status_bar' }, [ statusView ]); }; s = m.section(form.NamedSection, 'config', 'basic'); o = s.option(form.Flag, 'enabled', _('Enable')); o.default = o.disabled; o.rmempty = false; o = s.option(form.Value, 'port', _('Listen port')); o.default = '9876'; o.rmempty = false; o.datatype = 'string'; o.description = _('Port number (1-65535)'); o = s.option(form.Value, 'time', _('Update interval (seconds)')); o.default = '300'; o.datatype = 'range(60,86400)'; o.description = _('Update interval in seconds (60-86400)'); o = s.option(form.Value, 'ctimes', _('Provider comparison interval')); o.default = '5'; o.datatype = 'range(1,60)'; o.description = _('Number of times to compare with service provider (1-60)'); o = s.option(form.Value, 'skipverify', _('Skip verifying certificates')); o.default = '0'; o.value('0', _('No')); o.value('1', _('Yes')); o = s.option(form.Value, 'dns', _('Specify DNS resolution server')); o.value('223.5.5.5', _('Ali DNS 223.5.5.5')); o.value('223.6.6.6', _('Ali DNS 223.6.6.6')); o.value('119.29.29.29', _('Tencent DNS 119.29.29.29')); o.value('1.1.1.1', _('CloudFlare DNS 1.1.1.1')); o.value('8.8.8.8', _('Google DNS 8.8.8.8')); o.value('8.8.4.4', _('Google DNS 8.8.4.4')); o.datatype = 'ipaddr'; o = s.option(form.Flag, 'noweb', _('Do not start web services')); o.default = '0'; o.rmempty = false; o = s.option(form.Value, 'delay', _('Delayed Start (seconds)')); o.default = '60'; o = s.option(form.Button, '_newpassword', _('Reset account password')); o.inputtitle = _('Reset'); o.inputstyle = 'apply'; o.onclick = L.bind(this.handleResetPassword, this, data); o = s.option(form.Button, '_update', _('Check Update')); o.inputtitle = _('Check'); o.inputstyle = 'apply'; o.onclick = L.bind(this.handleUpdate, this, data); o = s.option(form.DummyValue, '_update_status', _('Current Version')); o.rawhtml = true; var currentVersion = ''; getVersionInfo().then(function(versionInfo) { currentVersion = versionInfo.version || ''; var updateView = document.getElementById('update_status'); if (updateView) { updateView.innerHTML = String.format('v%s', currentVersion); } }); o.cfgvalue = function() { return E('div', { style: 'margin: 5px 0;' }, [ E('span', { id: 'update_status' }, currentVersion ? String.format('v%s', currentVersion) : _('Loading...')) ]); }; return m.render(); } }); ================================================ FILE: luci-app-ddns-go/luci-app-ddns-go/htdocs/luci-static/resources/view/ddns-go/ddns-go.js ================================================ /* Copyright (C) 2022-2026 sirpdboy herboy2008@gmail.com */ 'use strict'; 'require view'; 'require fs'; 'require ui'; 'require uci'; 'require form'; 'require poll'; return view.extend({ load: function() { return uci.load('ddns-go'); }, checkRunning: function() { return fs.exec('/bin/pidof', ['ddns-go']).then(function(pidRes) { if (pidRes.code === 0) return { isRunning: true }; return fs.exec('/bin/ash', ['-c', 'ps | grep -q "[d]dns-go"']).then(function(grepRes) { return { isRunning: grepRes.code === 0 }; }); }); }, render: function() { var self = this; return this.checkRunning().then(function(checkResult) { var isRunning = checkResult.isRunning; var port = uci.get('ddns-go', 'config', 'port') || '[::]:9876'; var noweb = uci.get('ddns-go', 'config', 'noweb'); port = port.split(':').pop(); var container = E('div'); if (!isRunning || noweb === '1') { if (!isRunning) { var message = _('DDNS-GO Service Not Running'); } if (noweb === '1') { var message = _('DDNS-GO Web Interface Disabled'); } container.appendChild(E('div', { style: 'text-align: center; padding: 2em;' }, [ E('img', { src: 'data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMjQiIGhlaWdodD0iMTAyNCIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCI+PHBhdGggZmlsbD0iI2RmMDAwMCIgZD0iTTk0Mi40MjEgMjM0LjYyNGw4MC44MTEtODAuODExLTE1My4wNDUtMTUzLjA0NS04MC44MTEgODAuODExYy03OS45NTctNTEuNjI3LTE3NS4xNDctODEuNTc5LTI3Ny4zNzYtODEuNTc5LTI4Mi43NTIgMC01MTIgMjI5LjI0OC01MTIgNTEyIDAgMTAyLjIyOSAyOS45NTIgMTk3LjQxOSA4MS41NzkgMjc3LjM3NmwtODAuODExIDgwLjgxMSAxNTMuMDQ1IDE1My4wNDUgODAuODExLTgwLjgxMWM3OS45NTcgNTEuNjI3IDE3NS4xNDcgODEuNTc5IDI3Ny4zNzYgODEuNTc5IDI4Mi43NTIgMCA1MTItMjI5LjI0OCA1MTItNTEyIDAtMTAyLjIyOS0yOS45NTItMTk3LjQxOS04MS41NzktMjc3LjM3NnpNMTk0Ljk0NCA1MTJjMC0xNzUuMTA0IDE0MS45NTItMzE3LjA1NiAzMTcuMDU2LTMxNy4wNTYgNDggMCA5My40ODMgMTAuNjY3IDEzNC4yMjkgMjkuNzgxbC00MjEuNTQ3IDQyMS41NDdjLTE5LjA3Mi00MC43ODktMjkuNzM5LTg2LjI3Mi0yOS43MzktMTM0LjI3MnpNNTEyIDgyOS4wNTZjLTQ4IDAtOTMuNDgzLTEwLjY2Ny0xMzQuMjI5LTI5Ljc4MWw0MjEuNTQ3LTQyMS41NDdjMTkuMDcyIDQwLjc4OSAyOS43ODEgODYuMjcyIDI5Ljc4MSAxMzQuMjI5LTAuMDQzIDE3NS4xNDctMTQxLjk5NSAzMTcuMDk5LTMxNy4wOTkgMzE3LjA5OXoiLz48L3N2Zz4=', style: 'width: 100px; height: 100px; margin-bottom: 1em;' }), E('h2', {}, message) ])); } else { var isHttps = window.location.protocol === 'https:'; if (isHttps) { var buttonContainer = E('div', { style: 'text-align: center; padding: 2em;' }, [ E('h2', {}, _('DDNS-GO Control panel')), E('p', {}, _('Due to browser security policies, the DDNS-GO interface https cannot be embedded directly.')), E('a', { href: 'http://' + window.location.hostname + ':' + port, target: '_blank', class: 'cbi-button cbi-button-apply', style: 'display: inline-block; margin-top: 1em; padding: 10px 20px; font-size: 16px; text-decoration: none; color: white;' }, _('Open Web Interface')), ]); container.appendChild(buttonContainer); } else { var iframe = E('iframe', { src: 'http://' + window.location.hostname + ':' + port, style: 'width: 100%; min-height: 100vh; border: none;' }); container.appendChild(iframe); } } poll.add(function() { return self.checkRunning().then(function(checkResult) { var newStatus = checkResult.isRunning; if (newStatus !== isRunning) { window.location.reload(); } }); }, 5); poll.start(); return container; }); }, handleSaveApply: null, handleSave: null, handleReset: null }); ================================================ FILE: luci-app-ddns-go/luci-app-ddns-go/htdocs/luci-static/resources/view/ddns-go/log.js ================================================ // SPDX-License-Identifier: Apache-2.0 /* * Copyright (C) 2022-2026 sirpdboy */ 'use strict'; 'require dom'; 'require fs'; 'require poll'; 'require uci'; 'require view'; 'require form'; return view.extend({ render: function () { var css = ` .log-container { max-height: 1200px; overflow-y: auto; border-radius: 3px; margin-top: 10px; padding: 5px; background-color: var(--background-color); font-family: monospace; font-size: 12px; border: 1px solid var(--border-color); } .log-line { padding: 3px 5px; font-family: monospace; font-size: 12px; line-height: 1.4; border-bottom: 1px solid var(--border-color-light); white-space: pre-wrap; word-break: break-all; } .log-line:last-child { border-bottom: none; } .log-timestamp { color: #0066cc; margin-right: 10px; font-weight: bold; } .log-error { color: #cc0000; } .log-warning { color: #ff9900; } .control-buttons { margin-bottom: 10px; display: flex; gap: 5px; } `; var log_container = E('div', { 'class': 'log-container', 'id': 'log_container', 'style': 'min-height: 200px;' }, E('div', { 'class': 'log-line' }, _('Loading logs...'))); var lastLogContent = ''; var lastScrollTop = 0; var isScrolledToTop = true; function extractDDNSGoMessage(line) { if (!line || !line.includes('ddns-go')) return null; var regex = /^(.*?ddns-go.*?):\s*(.*)$/; var match = line.match(regex); if (match) { var timestampMatch = line.match(/^([A-Z][a-z]{2}\s+[A-Z][a-z]{2}\s+\d{1,2}\s+\d{2}:\d{2}:\d{2}\s+\d{4})/); if (timestampMatch) { return { timestamp: timestampMatch[1], message: match[2] }; } } var selfTimestampMatch = line.match(/(\d{4}\/\d{2}\/\d{2}\s+\d{2}:\d{2}:\d{2})\s+(.*)$/); if (selfTimestampMatch) { return { timestamp: selfTimestampMatch[1], message: selfTimestampMatch[2] }; } return { timestamp: null, message: line }; } function formatLogLine(line) { if (!line || line.trim() === '') return null; var extracted = extractDDNSGoMessage(line); if (!extracted) return null; var lineClass = ['log-line']; if (line.includes('err') || line.includes('ERROR') || line.includes('failed')) { lineClass.push('log-error'); } else if (line.includes('warn') || line.includes('WARNING')) { lineClass.push('log-warning'); } if (extracted.timestamp) { return E('div', { 'class': lineClass.join(' ') }, [ E('span', { 'class': 'log-timestamp' }, extracted.timestamp + ' '), E('span', { 'class': 'log-message' }, extracted.message) ]); } else { return E('div', { 'class': lineClass.join(' ') }, extracted.message); } } function formatLogContent(logContent) { if (!logContent || logContent.trim() === '') { return E('div', { 'class': 'log-line' }, _('No ddns-go logs found.')); } var lines = logContent.split('\n'); var formattedLines = []; for (var i = 0; i < lines.length; i++) { var line = lines[i].trim(); if (line === '' || line.includes('No ddns-go logs found')) continue; var formattedLine = formatLogLine(line); if (formattedLine) { formattedLines.push(formattedLine); } } if (formattedLines.length === 0) { return E('div', { 'class': 'log-line' }, _('No ddns-go logs found.')); } formattedLines.reverse(); return E('div', {}, formattedLines); } function clearLogs(button) { button.disabled = true; button.textContent = _('Clearing...'); return fs.exec('/usr/libexec/ddns-go-call', ['clear_logs']) .then(function(res) { button.textContent = _('Logs cleared!'); lastLogContent = ''; return fetchLogs(); }) .catch(function(err) { console.error('Clear logs error:', err); button.textContent = _('Failed to clear'); }) .finally(function() { setTimeout(function() { button.disabled = false; button.textContent = _('Clear Logs'); }, 2000); }); } function fetchLogs() { return fs.exec('/usr/libexec/ddns-go-call', ['get_logs']) .then(function(res) { var logContent = ''; if (res === null || res === undefined) { logContent = ''; } else if (typeof res === 'string') { logContent = res; } else if (res.stdout !== undefined) { logContent = res.stdout; } else if (res.data !== undefined) { logContent = res.data; } else if (typeof res === 'object') { logContent = JSON.stringify(res); } logContent = logContent.trim(); var lineCount = logContent.split('\n').filter(l => l.trim() !== '' && !l.includes('No ddns-go logs found') ).length; if (logContent !== lastLogContent) { var formattedLog = formatLogContent(logContent); var prevScrollHeight = log_container.scrollHeight; var prevScrollTop = log_container.scrollTop; dom.content(log_container, formattedLog); lastLogContent = logContent; if (!isScrolledToTop) { var newScrollHeight = log_container.scrollHeight; var heightDiff = newScrollHeight - prevScrollHeight; log_container.scrollTop = prevScrollTop + heightDiff; } } return Promise.resolve(); }) .catch(function(err) { console.error('Log fetch error:', err); var errorMsg = _('Failed to read logs: %s').format(err.message || 'Resource not found'); dom.content(log_container, E('div', { 'class': 'log-line log-error' }, errorMsg)); return Promise.reject(err); }); } var clear_button = E('button', { 'class': 'cbi-button cbi-button-remove', 'click': function(ev) { ev.preventDefault(); clearLogs(ev.target); } }, _('Clear Logs')); log_container.addEventListener('scroll', function() { lastScrollTop = this.scrollTop; isScrolledToTop = this.scrollTop <= 1; }); setTimeout(fetchLogs, 200); poll.add(L.bind(function() { return fetchLogs().catch(function(err) { console.error('Poll error:', err); }); })); poll.start(); return E('div', { 'class': 'cbi-map' }, [ E('style', [css]), E('div', { 'class': 'cbi-section' }, [ E('div', { 'class': 'control-buttons' }, [ clear_button]), log_container, E('small', {}, [ _('Refresh every 5 seconds.').format(L.env.pollinterval), ]) ]) ]); }, handleSaveApply: null, handleSave: null, handleReset: null }); ================================================ FILE: luci-app-ddns-go/luci-app-ddns-go/po/templates/ddns-go.pot ================================================ msgid "" msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Project-Id-Version: ddns-go\n" msgid "DDNS-GO" msgstr "" msgid "DDNS-GO automatically obtains your public IPv4 or IPv6 address and resolves it to the corresponding domain name service." msgstr "" msgid "Enable" msgstr "" msgid "Listen port" msgstr "" msgid "DDNS-GO Service Not Running" msgstr "" msgid "DDNS-GO Web Interface Disabled" msgstr "" msgid "DDNS-GO Control panel" msgstr "" msgid "Update interval(seconds)" msgstr "" msgid "Compare with service provider N times intervals" msgstr "" msgid "Skip verifying certificates" msgstr "" msgid "Specify DNS resolution server" msgstr "" msgid "Do not start web services" msgstr "" msgid "Delayed Start (seconds)" msgstr "" msgid "Reset account password" msgstr "" msgid "Check Update" msgstr "" msgid "Current Version:" msgstr "" msgid "Reset" msgstr "" msgid "RUNNING" msgstr "" msgid "NOT RUNNING" msgstr "" msgid "Open Web Interface" msgstr "" msgid "Checking status..." msgstr "" msgid "Status check error" msgstr "" msgid "Already the latest version" msgstr "" msgid "New version available" msgstr "" msgid "Update successful" msgstr "" msgid "Download update failed" msgstr "" msgid "Update check failed" msgstr "" msgid "Update status unknown" msgstr "" msgid "Update failed" msgstr "" msgid "Updating, please wait..." msgstr "" msgid "Loading..." msgstr "" msgid "Unknown" msgstr "" msgid "Failed to load" msgstr "" msgid "Log is clean." msgstr "" msgid "Clear Logs" msgstr "" msgid "Logs cleared!" msgstr "" msgid "Refresh every 5 seconds." msgstr "" msgid "No ddns-go logs found" msgstr "" msgid "Resetting Password" msgstr "" msgid "Resetting admin username and password, please wait..." msgstr "" msgid "Username and Password Reset Successful" msgstr "" msgid "Username: admin, Password: admin12345" msgstr "" msgid "You need to restart DDNS-Go service for the changes to take effect." msgstr "" msgid "Restart Service Now" msgstr "" msgid "Restart Later" msgstr "" msgid "Partial Reset" msgstr "" msgid "DDNS-Go command reset may have failed, but configuration file has been updated." msgstr "" msgid "You may need to restart DDNS-Go service manually." msgstr "" msgid "Close" msgstr "" msgid "ERROR:" msgstr "" msgid "Reset username/password failed:" msgstr "" msgid "SUCCESS:" msgstr "" msgid "DDNS-Go service restarted successfully" msgstr "" msgid "Failed to restart service:" msgstr "" msgid "Ali DNS 223.5.5.5" msgstr "" msgid "Ali DNS 223.6.6.6" msgstr "" msgid "Tencent DNS 119.29.29.29" msgstr "" msgid "CloudFlare DNS 1.1.1.1" msgstr "" msgid "Google DNS 8.8.8.8" msgstr "" msgid "Google DNS 8.8.4.4" msgstr "" msgid "Found %d ddns-go entries. Last updated: %s" msgstr "" ================================================ FILE: luci-app-ddns-go/luci-app-ddns-go/po/zh_Hans/ddns-go.po ================================================ msgid "" msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Project-Id-Version: ddns-go\n" msgid "DDNS-GO" msgstr "DDNS-GO" msgid "DDNS-GO automatically obtains your public IPv4 or IPv6 address and resolves it to the corresponding domain name service." msgstr "DDNS-GO 自动获取您的公网 IPv4 或 IPv6 地址,并解析到对应的域名服务。" msgid "Enable" msgstr "启用" msgid "Listen port" msgstr "监听端口" msgid "DDNS-GO Service Not Running" msgstr "DDNS-GO服务未启用" msgid "DDNS-GO Web Interface Disabled" msgstr "DDNS-GO WEB服务禁用" msgid "DDNS-GO Control panel" msgstr "DDNS-GO操作台" msgid "Update interval (seconds)" msgstr "更新间隔(秒)" msgid "Provider comparison interval" msgstr "提供商比较间隔" msgid "Number of times to compare with service provider (1-60)" msgstr "与服务提供商间隔比较的次数(1-60)" msgid "Skip verifying certificates" msgstr "跳过证书验证" msgid "Specify DNS resolution server" msgstr "指定DNS解析服务器" msgid "Do not start web services" msgstr "不启动Web服务" msgid "Delayed Start (seconds)" msgstr "延迟启动(秒)" msgid "Reset account password" msgstr "重置账户密码" msgid "Check Update" msgstr "检查更新" msgid "Port number (1-65535)" msgstr "端口范围(1-65535)" msgid "Check" msgstr "检查" msgid "Update interval in seconds (60-86400)" msgstr "更新间隔范围(60-86400)秒" msgid "Current Version" msgstr "当前版本" msgid "Reset" msgstr "重置" msgid "RUNNING" msgstr "运行中" msgid "NOT RUNNING" msgstr "未运行" msgid "Open Web Interface" msgstr "打开Web界面" msgid "Checking status..." msgstr "检查状态中..." msgid "Status check error" msgstr "状态检查错误" msgid "Already the latest version" msgstr "已是最新版本" msgid "New version available" msgstr "有新版本可用" msgid "Update successful" msgstr "更新成功" msgid "Download update failed" msgstr "下载更新失败" msgid "Update check failed" msgstr "检查更新失败" msgid "Update status unknown" msgstr "更新状态未知" msgid "Update failed" msgstr "更新失败" msgid "Updating, please wait..." msgstr "正在更新,请稍候..." msgid "Loading..." msgstr "加载中..." msgid "Unknown" msgstr "未知" msgid "Failed to load" msgstr "加载失败" msgid "Log is clean." msgstr "日志清除" msgid "Clear Logs" msgstr "清除日志" msgid "Logs cleared!" msgstr "已清除" msgid "Refresh every 5 seconds." msgstr "每 5 秒刷新" msgid "No ddns-go logs found" msgstr "没有日志" msgid "Resetting Password" msgstr "重置密码" msgid "Resetting admin username and password, please wait..." msgstr "正在重置管理员用户名和密码,请稍候..." msgid "Username and Password Reset Successful" msgstr "用户名和密码重置成功" msgid "Username: admin, Password: admin12345" msgstr "用户名: admin, 密码: admin12345" msgid "You need to restart DDNS-Go service for the changes to take effect." msgstr "您需要重启 DDNS-Go 服务以使更改生效。" msgid "Restart Service Now" msgstr "立即重启服务" msgid "Restart Later" msgstr "稍后重启" msgid "Partial Reset" msgstr "部分重置" msgid "DDNS-Go command reset may have failed, but configuration file has been updated." msgstr "DDNS-Go 命令重置可能失败,但配置文件已更新。" msgid "You may need to restart DDNS-Go service manually." msgstr "您可能需要手动重启 DDNS-Go 服务。" msgid "Close" msgstr "关闭" msgid "ERROR:" msgstr "错误:" msgid "Reset username/password failed:" msgstr "重置用户名/密码失败:" msgid "SUCCESS:" msgstr "成功:" msgid "DDNS-Go service restarted successfully" msgstr "DDNS-Go 服务重启成功" msgid "Failed to restart service:" msgstr "重启服务失败:" msgid "Ali DNS 223.5.5.5" msgstr "阿里 DNS 223.5.5.5" msgid "Ali DNS 223.6.6.6" msgstr "阿里 DNS 223.6.6.6" msgid "Tencent DNS 119.29.29.29" msgstr "腾讯 DNS 119.29.29.29" msgid "CloudFlare DNS 1.1.1.1" msgstr "CloudFlare DNS 1.1.1.1" msgid "Google DNS 8.8.8.8" msgstr "谷歌 DNS 8.8.8.8" msgid "Google DNS 8.8.4.4" msgstr "谷歌 DNS 8.8.4.4" msgid "Found %d ddns-go entries. Last updated: %s" msgstr "找到 %d ddns-go记录,最近时间: %s" ================================================ FILE: luci-app-ddns-go/luci-app-ddns-go/root/etc/uci-defaults/99-luci-ddns-go ================================================ #!/bin/sh chmod +x /usr/share/rpcd/ucode/luci.ddns-go chown root:www-data /usr/libexec/ddns-go-call chmod 750 /usr/libexec/ddns-go-call rm -f /tmp/luci-indexcache /etc/init.d/rpcd restart exit 0 ================================================ FILE: luci-app-ddns-go/luci-app-ddns-go/root/usr/libexec/ddns-go-call ================================================ #!/bin/sh case "$1" in "get_logs") logread -l 200 2>/dev/null | grep ddns-go || echo "No ddns-go logs found" ;; "clear_logs") /etc/init.d/log restart >/dev/null 2>&1 echo "Logs cleared" ;; esac ================================================ FILE: luci-app-ddns-go/luci-app-ddns-go/root/usr/share/luci/menu.d/luci-app-ddns-go.json ================================================ { "admin/services/ddns-go": { "title": "DDNS-GO", "order": 58, "action": { "type": "firstchild" }, "depends": { "acl": [ "luci-app-ddns-go" ], "uci": { "ddns-go": true } } }, "admin/services/ddns-go/ddns-go": { "title": "DDNS-GO Control panel", "order": 10, "action": { "type": "view", "path": "ddns-go/ddns-go" } }, "admin/services/ddns-go/config": { "title": "Base Setting", "order": 20, "action": { "type": "view", "path": "ddns-go/config" } }, "admin/services/ddns-go/log": { "title": "Log", "order": 30, "action": { "type": "view", "path": "ddns-go/log" } } } ================================================ FILE: luci-app-ddns-go/luci-app-ddns-go/root/usr/share/rpcd/acl.d/luci-app-ddns-go.json ================================================ { "luci-app-ddns-go": { "description": "Grant UCI access for luci-app-ddns-go", "read": { "uci": [ "ddns-go" ], "file": { "/etc/init.d/ddns-go": [ "exec" ], "/usr/libexec/ddns-go-call": [ "exec" ], "/usr/share/rpcd/ucode/luci.ddns-go": [ "exec" ], "/bin/pidof": [ "exec" ], "/bin/ps": [ "exec" ], "/bin/ash": [ "exec" ], "/etc/ddns-go/ddns-go-config.yaml": [ "read" ], "/var/log/*": [ "read" ], "/bin/logread": [ "exec" ] }, "ubus": { "rc": [ "*" ], "service": [ "list" ], "luci.ddns-go": [ "*" ], "network.interface.*": [ "status" ], "network": [ "*" ] } }, "write": { "uci": [ "ddns-go" ], "file": { "/etc/ddns-go/ddns-go-config.yaml": [ "write" ] }, "ubus": { "luci.ddns-go": [ "*" ] } } } } ================================================ FILE: luci-app-ddns-go/luci-app-ddns-go/root/usr/share/rpcd/ucode/luci.ddns-go ================================================ #!/usr/bin/ucode /* * SPDX-License-Identifier: GPL-2.0-only * * Copyright (C) 2022-2026 sirpdboy */ 'use strict'; import { access, error, lstat, popen, readfile, writefile } from 'fs'; /* Kanged from ucode/luci */ function shellquote(s) { return `'${replace(s, "'", "'\\''")}'`; } function get_current_version() { if (!access('/usr/bin/ddns-go')) return null; const fd = popen('/usr/bin/ddns-go -v'); if (fd) { let version_output = fd.read('all'); fd.close(); if (!version_output || length(version_output) === 0) return null; try { version_output = replace(trim(version_output), /^v/, ''); return version_output; } catch(e) { return null; } } return null; } const methods = { get_ver: { call: function() { let current_version = get_current_version(); if (!current_version) return { ver: {}, error: 'ddns-go not found or version check failed' }; return { ver: { version: current_version } }; } }, last_update: { call: function() { if (!access('/usr/bin/ddns-go')) return { update: {}, error: 'ddns-go not found' }; let version_before = get_current_version(); const fd = popen('/usr/bin/ddns-go -u'); if (fd) { let output = fd.read('all'); fd.close(); if (!output || length(output) === 0) return { update: {}, error: 'empty response' }; try { output = trim(output); let update_info = { raw_output: output, version_before: version_before, version_after: null, has_update: false, update_successful: false, current_version: '', latest_version: '', status: 'unknown', message: output }; update_info.version_after = get_current_version(); if (version_before && update_info.version_after && version_before !== update_info.version_after) { update_info.update_successful = true; update_info.has_update = false; update_info.status = 'updated'; update_info.message = `Update successful: ${version_before} → ${update_info.version_after}`; } else if (match(output, /Current version.*is the latest/)) { update_info.status = 'latest'; update_info.has_update = false; let version_match = match(output, /v[\d.]+/); if (version_match) { update_info.current_version = replace(version_match[0], /^v/, ''); update_info.latest_version = update_info.current_version; } update_info.message = 'Already the latest version ' + (update_info.current_version || ''); } else if (match(output, /new version.*available/)) { update_info.status = 'update_available'; update_info.has_update = true; let versions = match(output, /v[\d.]+/, 'g'); if (versions && length(versions) >= 2) { update_info.current_version = replace(versions[0], /^v/, ''); update_info.latest_version = replace(versions[1], /^v/, ''); } else if (version_before) { update_info.current_version = version_before; } update_info.message = 'New version available: ' + (update_info.latest_version || ''); } else if (match(output, /download.*failed/)) { update_info.status = 'download_failed'; update_info.has_update = false; update_info.message = 'Download update failed'; } else if (match(output, /check.*failed/)) { update_info.status = 'check_failed'; update_info.has_update = false; update_info.message = 'Update check failed'; } else { update_info.status = 'unknown'; update_info.message = output; } return { update: update_info }; } catch(e) { return { update: {}, error: 'Parse error: ' + e }; } } else { return { update: {}, error: 'failed to execute ddns-go command' }; } } } }; return { 'luci.ddns-go': methods }; ================================================ FILE: luci-app-ddnsto/Makefile ================================================ # Copyright (C) 2016 Openwrt.org # # This is free software, licensed under the Apache License, Version 2.0 . # include $(TOPDIR)/rules.mk LUCI_TITLE:=LuCI support for ddnsto LUCI_DEPENDS:=+ddnsto +block-mount LUCI_PKGARCH:=all PKG_VERSION:=3.2.0-r5 PKG_RELEASE:= include $(TOPDIR)/feeds/luci/luci.mk # call BuildPackage - OpenWrt buildroot signature ================================================ FILE: luci-app-ddnsto/luasrc/controller/ddnsto.lua ================================================ --[[ DDNSTO LuCI Controller + JSON API ================================= ---- 为 ddnsto 的 LuCI 页面(可用原生 JS/React/Vue)提供稳定的后端接口: 1) 读取/更新 UCI 配置:/etc/config/ddnsto 2) 控制 init.d 服务:/etc/init.d/ddnsto start|stop|restart|reload 3) 查询运行状态:ddnstod 是否在运行、PID、enabled/token 是否就绪 4) (可选)读取最近日志:logread 过滤 ddnsto/ddnstod 路由说明 -------- 默认挂载在: /cgi-bin/luci/admin/services/ddnsto/page -- LuCI 页面入口(模板) /cgi-bin/luci/admin/services/ddnsto/api/config -- GET/POST 配置 /c.../ddnsto/api/service -- POST 服务控制 /c.../ddnsto/api/status -- GET 状态 /c.../ddnsto/api/logs -- GET 日志(可选) CSRF 说明 --------- LuCI 对 POST 通常要求 token 校验。这里提供两种方式(二选一): - Header: X-LuCI-Token: - Form字段: token=<...>(application/x-www-form-urlencoded 时常用) 对于前端(React)最佳实践是: - 在 LuCI 模板里注入 window.ddnstoCsrfToken = "<%=luci.dispatcher.context.token%>" - 所有 POST 带上该 token 前端对接建议 ------------ - GET config/status: fetch(url, {credentials: 'same-origin'}) - POST config/service: JSON body + X-LuCI-Token,或表单 token 开发/调试注意 ------------ 1) 修改 controller 后,LuCI 可能缓存索引: - rm -f /tmp/luci-indexcache - /etc/init.d/uhttpd restart (或重启设备) 2) 确保 /etc/config/ddnsto 存在;否则 index() 会直接 return。 3) 若想扩展更多字段(如 address),建议在 GET 返回里带出,但 POST 仅允许白名单字段写入。 安全边界 -------- 本接口位于 LuCI admin 路径下,默认需要登录 LuCI。 此外: - service action 做了白名单限制,避免命令注入 - config 写入做了基本校验(bool/number) --]] module("luci.controller.ddnsto", package.seeall) -- ========== -- Utilities -- ========== local function write_json(tbl) local http = require "luci.http" local jsonc = require "luci.jsonc" http.prepare_content("application/json") http.write(jsonc.stringify(tbl)) end local function bad_request(msg) write_json({ ok = false, error = msg or "bad request" }) end local function method_not_allowed() write_json({ ok = false, error = "method not allowed" }) end local function read_json_body() local http = require "luci.http" local jsonc = require "luci.jsonc" local ctype = http.getenv("CONTENT_TYPE") or "" if not ctype:match("^application/json") then return nil end local raw = http.content() or "" if #raw == 0 then return nil end local obj = jsonc.parse(raw) if type(obj) ~= "table" then return nil end return obj end local function get_command(cmd) local handle = io.popen(cmd, "r") if handle then local res = string.gsub(handle:read("*a"), "\n", "") handle:close() return res end return "" end local function parse_device_id(raw) local cleaned = tostring(raw or "") cleaned = cleaned:gsub("%s+", " "):gsub("^%s+", ""):gsub("%s+$", "") if cleaned == "" then return "" end local _, did = cleaned:match("^(%S+)%s+(%S+)$") return did or cleaned end local function normalize_index(index) local idx = index if not (idx and tostring(idx):match("^%d+$")) then idx = "0" end return idx end local function fetch_device_id(index) local idx = normalize_index(index) local cmd = string.format("/usr/sbin/ddnstod -x %s -w", idx) return parse_device_id(get_command(cmd)) end local function param(body, key) local http = require "luci.http" if type(body) == "table" and body[key] ~= nil then return tostring(body[key]) end return http.formvalue(key) end local function is_bool01(v) return v == "0" or v == "1" end local function is_uint(v) return v ~= nil and tostring(v):match("^%d+$") ~= nil end local function is_empty(v) return v == nil or tostring(v):match("^%s*$") ~= nil end local function has_space(v) return v ~= nil and tostring(v):find("%s") ~= nil end -- LuCI CSRF Check local function require_csrf() local http = require "luci.http" local disp = require "luci.dispatcher" local method = http.getenv("REQUEST_METHOD") or "" if method ~= "POST" then return true end local ctx = disp.context -- 1. Ensure user is authenticated (session exists) if not (ctx and ctx.authsession) then write_json({ ok = false, error = "auth session missing" }) return false end local expected = ctx.token local header_token = http.getenv("HTTP_X_LUCI_TOKEN") local form_token = http.formvalue("token") local body = read_json_body() local body_token = (type(body) == "table") and body["token"] or nil local provided = header_token or form_token or body_token -- 2. If server has a token, enforce strict match if expected then if provided ~= expected then write_json({ ok = false, error = "bad csrf token" }) return false end else -- 3. If server lost the token (common in some envs), -- just ensure the client sent *something* (e.g. via custom header) -- This protects against basic CSRF because attackers can't easily set custom headers. if not provided or #provided == 0 then write_json({ ok = false, error = "csrf token missing" }) return false end end return true end local function ensure_ddnsto_section() local uci = require "luci.model.uci".cursor() local sid = nil uci:foreach("ddnsto", "ddnsto", function(s) sid = s[".name"] end) if not sid then sid = uci:add("ddnsto", "ddnsto") end return sid end local function read_config() local uci = require "luci.model.uci".cursor() local sys = require "luci.sys" local cfg = { enabled = "1", token = "", index = "0", logger = "0", feat_enabled = "0", feat_port = "3033", feat_username = "", feat_password = "", feat_disk_path_selected = "", address = "", mounts = {}, device_id = "", deviceId = "", } uci:foreach("ddnsto", "ddnsto", function(s) cfg.enabled = s.enabled or cfg.enabled cfg.token = s.token or cfg.token cfg.index = s.index or cfg.index cfg.logger = s.logger or cfg.logger cfg.feat_enabled = s.feat_enabled or cfg.feat_enabled cfg.feat_port = s.feat_port or cfg.feat_port cfg.feat_username = s.feat_username or cfg.feat_username cfg.feat_password = s.feat_password or cfg.feat_password cfg.feat_disk_path_selected = s.feat_disk_path_selected or cfg.feat_disk_path_selected cfg.address = s.address or cfg.address end) do local did = fetch_device_id(cfg.index) cfg.device_id = did cfg.deviceId = did end -- Get mounts (via block info) local mounts = {} local block = io.popen("/sbin/block info", "r") if block then while true do local ln = block:read("*l") if not ln then break end local dev = ln:match("^/dev/(.-):") if dev then for key, val in ln:gmatch([[(%w+)="(.-)"]]) do if key:lower() == "mount" then table.insert(mounts, val) end end end end block:close() end cfg.mounts = mounts return cfg end -- ========== -- LuCI index -- ========== function index() local ok_fs, fs = pcall(require, "nixio.fs") if not (ok_fs and fs) then local ok_lfs, lfs = pcall(require, "luci.fs") if ok_lfs then fs = lfs end end local has_config = true if fs and fs.access then has_config = fs.access("/etc/config/ddnsto") end if has_config == false then return end entry({"admin", "services", "ddnsto"}, firstchild(), _("DDNSTO 远程控制"), 60).dependent = false entry({"admin", "services", "ddnsto", "page"}, call("action_page"), _("Settings"), 10).leaf = true -- entry({"admin", "ddnsto_dev"}, call("action_ddnsto_dev"), _("DDNSTO (Dev)"), 99).leaf = true entry({"admin", "services", "ddnsto", "api", "config"}, call("api_config")).leaf = true entry({"admin", "services", "ddnsto", "api", "service"}, call("api_service")).leaf = true entry({"admin", "services", "ddnsto", "api", "run"}, call("api_run")).leaf = true entry({"admin", "services", "ddnsto", "api", "restart"}, call("api_restart")).leaf = true entry({"admin", "services", "ddnsto", "api", "stop"}, call("api_stop")).leaf = true entry({"admin", "services", "ddnsto", "api", "onboarding", "start"}, call("api_onboarding_start")).leaf = true entry({"admin", "services", "ddnsto", "api", "onboarding", "address"}, call("api_onboarding_address")).leaf = true entry({"admin", "services", "ddnsto", "api", "connectivity"}, call("api_connectivity")).leaf = true entry({"admin", "services", "ddnsto", "api", "status"}, call("api_status")).leaf = true entry({"admin", "services", "ddnsto", "api", "logs"}, call("api_logs")).leaf = true end function action_page() local template = require "luci.template" local dsp = require "luci.dispatcher" local i18n = require "luci.i18n" local ctx = dsp.context or {} local data = { token = ctx.token or "", prefix = dsp.build_url("admin", "services", "ddnsto"), api_base = dsp.build_url(), lang = i18n.context.lang or "zh-cn" } template.render("ddnsto/main", data) end -- ========== -- API: config -- ========== function api_config() local http = require "luci.http" local uci = require "luci.model.uci".cursor() local method = http.getenv("REQUEST_METHOD") or "" if method == "GET" then write_json({ ok = true, data = read_config() }) return end if method ~= "POST" then method_not_allowed() return end if not require_csrf() then return end local body = read_json_body() local enabled = param(body, "enabled") local ddnsto_token = param(body, "ddnsto_token") local index = param(body, "index") local logger = param(body, "logger") local feat_enabled = param(body, "feat_enabled") local feat_port = param(body, "feat_port") local feat_username = param(body, "feat_username") local feat_password = param(body, "feat_password") local feat_disk_path_selected = param(body, "feat_disk_path_selected") -- 基本校验(按需扩展) if enabled and not is_bool01(enabled) then return bad_request("bad enabled") end if logger and not is_bool01(logger) then return bad_request("bad logger") end if feat_enabled and not is_bool01(feat_enabled) then return bad_request("bad feat_enabled") end local has_payload = enabled ~= nil or ddnsto_token ~= nil or index ~= nil or logger ~= nil or feat_enabled ~= nil or feat_port ~= nil or feat_username ~= nil or feat_password ~= nil or feat_disk_path_selected ~= nil if not has_payload then return bad_request("invalid request") end local enabled_on = enabled == "1" local feat_on = feat_enabled == "1" if enabled_on and is_empty(ddnsto_token) then return bad_request("请填写正确用户Token(令牌)") end if ddnsto_token ~= nil and has_space(ddnsto_token) then return bad_request("令牌勿包含空格") end if not is_uint(index) then return bad_request("请填写正确的设备编号,仅允许数字") end local index_num = tonumber(index) if index_num < 0 or index_num > 99 then return bad_request("请填写正确的设备编号,仅允许数字") end if feat_on then if not is_uint(feat_port) then return bad_request("请填写正确的端口") end local port_num = tonumber(feat_port) if not port_num or port_num == 0 or port_num > 65535 then return bad_request("请填写正确的端口") end if is_empty(feat_username) then return bad_request("请填写授权用户名") end if has_space(feat_username) then return bad_request("用户名请勿包含空格") end if is_empty(feat_password) then return bad_request("请填写授权用户密码") end if has_space(feat_password) then return bad_request("用户密码请勿包含空格") end if is_empty(feat_disk_path_selected) then return bad_request("请填写共享磁盘路径") end end local sid = ensure_ddnsto_section() -- 白名单写入:只写我们明确允许前端控制的字段 if enabled then uci:set("ddnsto", sid, "enabled", enabled) end if ddnsto_token ~= nil then uci:set("ddnsto", sid, "token", ddnsto_token) end if index then uci:set("ddnsto", sid, "index", index) end if logger then uci:set("ddnsto", sid, "logger", logger) end if feat_enabled then uci:set("ddnsto", sid, "feat_enabled", feat_enabled) end if feat_port then uci:set("ddnsto", sid, "feat_port", feat_port) end if feat_username then uci:set("ddnsto", sid, "feat_username", feat_username) end if feat_password then uci:set("ddnsto", sid, "feat_password", feat_password) end if feat_disk_path_selected then uci:set("ddnsto", sid, "feat_disk_path_selected", feat_disk_path_selected) end uci:commit("ddnsto") -- Restart service to apply changes local sys = require "luci.sys" sys.call("/etc/init.d/ddnsto restart >/dev/null 2>&1") write_json({ ok = true }) end -- ========== -- API: service -- ========== local function run_service_action(action, allow_reload) local http = require "luci.http" local sys = require "luci.sys" local method = http.getenv("REQUEST_METHOD") or "" if method ~= "POST" then method_not_allowed() return end if not require_csrf() then return end if not action then local body = read_json_body() action = param(body, "action") or "" end local allow = { start = true, stop = true, restart = true, reload = allow_reload == true, } if not allow[action] then return bad_request("bad action") end local cmd = string.format("/etc/init.d/ddnsto %s >/dev/null 2>&1", action) local rc = sys.call(cmd) write_json({ ok = (rc == 0), rc = rc }) end function api_service() return run_service_action(nil, true) end function api_run() return run_service_action("start") end function api_restart() return run_service_action("restart") end function api_stop() return run_service_action("stop") end -- ========== -- API: onboarding helpers -- ========== function api_onboarding_start() local http = require "luci.http" local uci = require "luci.model.uci".cursor() local sys = require "luci.sys" local method = http.getenv("REQUEST_METHOD") or "" if method ~= "POST" then method_not_allowed() return end if not require_csrf() then return end local body = read_json_body() local token = param(body, "token") if is_empty(token) then return bad_request("token required") end if has_space(token) then return bad_request("token must not contain spaces") end local sid = ensure_ddnsto_section() uci:set("ddnsto", sid, "token", token) uci:set("ddnsto", sid, "enabled", "1") uci:set("ddnsto", sid, "feat_enabled", "0") uci:commit("ddnsto") local rc = sys.call("/etc/init.d/ddnsto restart >/dev/null 2>&1") write_json({ ok = (rc == 0), rc = rc }) end function api_onboarding_address() local http = require "luci.http" local uci = require "luci.model.uci".cursor() local method = http.getenv("REQUEST_METHOD") or "" if method ~= "POST" then method_not_allowed() return end if not require_csrf() then return end local body = read_json_body() local url = param(body, "url") or param(body, "address") if is_empty(url) then return bad_request("address required") end local sid = ensure_ddnsto_section() uci:set("ddnsto", sid, "address", url) uci:commit("ddnsto") write_json({ ok = true }) end -- ========== -- API: status -- ========== function api_status() local sys = require "luci.sys" local uci = require "luci.model.uci".cursor() local jsonc = require "luci.jsonc" local enabled, token = "0", "" local address, index = "", "0" uci:foreach("ddnsto", "ddnsto", function(s) enabled = s.enabled or "0" token = s.token or "" address = s.address or "" index = s.index or index end) local raw = sys.exec([[ubus call service list '{"name":"ddnsto"}' 2>/dev/null]]) or "" local pid, running = "", false local ok, obj = pcall(jsonc.parse, raw) if ok and type(obj) == "table" and type(obj.ddnsto) == "table" and type(obj.ddnsto.instances) == "table" then for _, inst in pairs(obj.ddnsto.instances) do if type(inst) == "table" and inst.running == true then running = true pid = tostring(inst.pid or "") break end end end local board_raw = sys.exec("ubus call system board 2>/dev/null") or "" local hostname = "OpenWrt" local ok_board, board_obj = pcall(jsonc.parse, board_raw) if ok_board and type(board_obj) == "table" and board_obj.hostname then hostname = board_obj.hostname end local version = get_command("/usr/sbin/ddnstod -v") local did = "" do did = fetch_device_id(index) end write_json({ ok = true, data = { enabled = enabled, running = running, pid = pid, token_set = (token and #token > 0) or false, address = address, device_id = did, deviceId = did, hostname = hostname, version = version, } }) end -- ========== -- API: connectivity (tunnel server reachability) -- ========== function api_connectivity() local sys = require "luci.sys" local function resolve_host(host) local out = sys.exec(string.format("nslookup %s 223.5.5.5 2>/dev/null", host)) or "" if out == "" then out = sys.exec(string.format("nslookup %s 8.8.8.8 2>/dev/null", host)) or "" end if out == "" then out = sys.exec(string.format("nslookup %s 2>/dev/null", host)) or "" end local ip = out:match("Address 1:%s*([%d%.]+)") or out:match("Address:%s*([%d%.]+)") return ip or "" end local tunnel_targets = {} local resolved_ip = resolve_host("tunnel.kooldns.cn") if resolved_ip ~= "" then table.insert(tunnel_targets, resolved_ip) end table.insert(tunnel_targets, "tunnel.kooldns.cn") table.insert(tunnel_targets, "125.39.21.43") do local seen = {} local uniq = {} for _, t in ipairs(tunnel_targets) do if not seen[t] then seen[t] = true table.insert(uniq, t) end end tunnel_targets = uniq end local function connect_target(target) local ret = sys.call(string.format("ping -c 1 -W 2 %s >/dev/null 2>&1", target)) if ret == 0 then return 0, nil end return ret, string.format("ping exit %d to %s", ret, target) end local tunnel_ok = false local tunnel_err = nil if #tunnel_targets == 0 then tunnel_err = "resolve tunnel.kooldns.cn failed" else for _, target in ipairs(tunnel_targets) do local ret, err = connect_target(target) if ret == 0 then tunnel_ok = true tunnel_err = nil break else tunnel_err = err end end end write_json({ ok = true, data = { tunnel_ok = tunnel_ok, tunnel_ret = tunnel_ok and nil or tunnel_err, targets = tunnel_targets, } }) end -- ========== -- API: logs -- ========== function api_logs() local http = require "luci.http" local sys = require "luci.sys" local method = http.getenv("REQUEST_METHOD") or "" if method ~= "GET" then method_not_allowed() return end local lines = tonumber(http.formvalue("lines") or "200") or 200 if lines < 10 then lines = 10 end if lines > 2000 then lines = 2000 end local cmd = string.format("logread 2>/dev/null | grep -E 'ddnsto|ddnstod' | tail -n %d", lines) local out = sys.exec(cmd) or "" local arr = {} for line in out:gmatch("([^\n]*)\n?") do if line and #line > 0 then arr[#arr + 1] = line end end write_json({ ok = true, data = { lines = arr, total = #arr } }) end function action_ddnsto_dev() local dsp = require "luci.dispatcher" local i18n = require "luci.i18n" local template = require "luci.template" local ctx = dsp.context or {} local data = { token = ctx.token or "", prefix = dsp.build_url("admin", "ddnsto_dev"), api_base= dsp.build_url(), lang = i18n.context.lang or "zh-cn" } template.render("ddnsto/dev", data) end ================================================ FILE: luci-app-ddnsto/luasrc/model/cbi/ddnsto.lua ================================================ --wulishui ,20200911 --jjm2473 ,20210127 local m, s m = Map("ddnsto", translate("DDNS.to"), translate("DDNS.to is a reverse proxy.") .. " " .. translate("Official Website") .. "") m:section(SimpleSection).template = "ddnsto_status" s=m:section(TypedSection, "ddnsto", translate("Global settings")) s.addremove=false s.anonymous=true s:option(Flag, "enabled", translate("Enable")).rmempty=false s:option(Value, "token", translate("Token")).rmempty=false return m ================================================ FILE: luci-app-ddnsto/luasrc/view/ddnsto/main.htm ================================================ <%+header%>
    <% local cache_bust = os.time() %> <%+footer%> ================================================ FILE: luci-app-ddnsto/po/zh_Hans/ddnsto.po ================================================ msgid "DDNS.to" msgstr "DDNS.to内网穿透" msgid "Running state" msgstr "运行状态" msgid "Click to open DDNS.to" msgstr "点击打开DDNSTO控制台" msgid "DDNS.to is a reverse proxy." msgstr "DDNS.to是一个内网穿透工具。" msgid "Official Website" msgstr "官网" msgid "Token" msgstr "令牌" msgid "The DDNS.to service is running." msgstr "DDNS.to服务已启动" msgid "The DDNS.to service is not running." msgstr "DDNS.to服务未启动" msgid "DDNS.to Status" msgstr "DDNS.to服务状态" msgid "Collecting data..." msgstr "收集数据..." msgid "Global settings" msgstr "全局设置" ================================================ FILE: luci-app-ddnsto/root/etc/uci-defaults/50_luci-ddnsto ================================================ #!/bin/sh rm -f /tmp/luci-indexcache /tmp/luci-indexcache.* exit 0 ================================================ FILE: luci-app-ddnsto/root/www/luci-static/ddnsto/index.js ================================================ (function(){const E=document.createElement("link").relList;if(E&&E.supports&&E.supports("modulepreload"))return;for(const T of document.querySelectorAll('link[rel="modulepreload"]'))U(T);new MutationObserver(T=>{for(const L of T)if(L.type==="childList")for(const B of L.addedNodes)B.tagName==="LINK"&&B.rel==="modulepreload"&&U(B)}).observe(document,{childList:!0,subtree:!0});function d(T){const L={};return T.integrity&&(L.integrity=T.integrity),T.referrerPolicy&&(L.referrerPolicy=T.referrerPolicy),T.crossOrigin==="use-credentials"?L.credentials="include":T.crossOrigin==="anonymous"?L.credentials="omit":L.credentials="same-origin",L}function U(T){if(T.ep)return;T.ep=!0;const L=d(T);fetch(T.href,L)}})();function Vd(y){return y&&y.__esModule&&Object.prototype.hasOwnProperty.call(y,"default")?y.default:y}var Mi={exports:{}},Nr={},Oi={exports:{}},J={};/** * @license React * react.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */var Iu;function Wd(){if(Iu)return J;Iu=1;var y=Symbol.for("react.element"),E=Symbol.for("react.portal"),d=Symbol.for("react.fragment"),U=Symbol.for("react.strict_mode"),T=Symbol.for("react.profiler"),L=Symbol.for("react.provider"),B=Symbol.for("react.context"),G=Symbol.for("react.forward_ref"),A=Symbol.for("react.suspense"),Q=Symbol.for("react.memo"),Z=Symbol.for("react.lazy"),W=Symbol.iterator;function H(u){return u===null||typeof u!="object"?null:(u=W&&u[W]||u["@@iterator"],typeof u=="function"?u:null)}var q={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},ae=Object.assign,V={};function Y(u,v,M){this.props=u,this.context=v,this.refs=V,this.updater=M||q}Y.prototype.isReactComponent={},Y.prototype.setState=function(u,v){if(typeof u!="object"&&typeof u!="function"&&u!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,u,v,"setState")},Y.prototype.forceUpdate=function(u){this.updater.enqueueForceUpdate(this,u,"forceUpdate")};function we(){}we.prototype=Y.prototype;function ze(u,v,M){this.props=u,this.context=v,this.refs=V,this.updater=M||q}var ke=ze.prototype=new we;ke.constructor=ze,ae(ke,Y.prototype),ke.isPureReactComponent=!0;var fe=Array.isArray,Ce=Object.prototype.hasOwnProperty,K={current:null},Re={key:!0,ref:!0,__self:!0,__source:!0};function he(u,v,M){var b,X={},O=null,re=null;if(v!=null)for(b in v.ref!==void 0&&(re=v.ref),v.key!==void 0&&(O=""+v.key),v)Ce.call(v,b)&&!Re.hasOwnProperty(b)&&(X[b]=v[b]);var ee=arguments.length-2;if(ee===1)X.children=M;else if(1>>1,v=x[u];if(0>>1;uT(X,g))OT(re,X)?(x[u]=re,x[O]=g,u=O):(x[u]=X,x[b]=g,u=b);else if(OT(re,g))x[u]=re,x[O]=g,u=O;else break e}}return I}function T(x,I){var g=x.sortIndex-I.sortIndex;return g!==0?g:x.id-I.id}if(typeof performance=="object"&&typeof performance.now=="function"){var L=performance;y.unstable_now=function(){return L.now()}}else{var B=Date,G=B.now();y.unstable_now=function(){return B.now()-G}}var A=[],Q=[],Z=1,W=null,H=3,q=!1,ae=!1,V=!1,Y=typeof setTimeout=="function"?setTimeout:null,we=typeof clearTimeout=="function"?clearTimeout:null,ze=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function ke(x){for(var I=d(Q);I!==null;){if(I.callback===null)U(Q);else if(I.startTime<=x)U(Q),I.sortIndex=I.expirationTime,E(A,I);else break;I=d(Q)}}function fe(x){if(V=!1,ke(x),!ae)if(d(A)!==null)ae=!0,Ne(Ce);else{var I=d(Q);I!==null&&ie(fe,I.startTime-x)}}function Ce(x,I){ae=!1,V&&(V=!1,we(he),he=-1),q=!0;var g=H;try{for(ke(I),W=d(A);W!==null&&(!(W.expirationTime>I)||x&&!Qe());){var u=W.callback;if(typeof u=="function"){W.callback=null,H=W.priorityLevel;var v=u(W.expirationTime<=I);I=y.unstable_now(),typeof v=="function"?W.callback=v:W===d(A)&&U(A),ke(I)}else U(A);W=d(A)}if(W!==null)var M=!0;else{var b=d(Q);b!==null&&ie(fe,b.startTime-I),M=!1}return M}finally{W=null,H=g,q=!1}}var K=!1,Re=null,he=-1,xe=5,ue=-1;function Qe(){return!(y.unstable_now()-uex||125u?(x.sortIndex=g,E(Q,x),d(A)===null&&x===d(Q)&&(V?(we(he),he=-1):V=!0,ie(fe,g-u))):(x.sortIndex=v,E(A,x),ae||q||(ae=!0,Ne(Ce))),x},y.unstable_shouldYield=Qe,y.unstable_wrapCallback=function(x){var I=H;return function(){var g=H;H=I;try{return x.apply(this,arguments)}finally{H=g}}}})(bi)),bi}var bu;function Xd(){return bu||(bu=1,Fi.exports=Yd()),Fi.exports}/** * @license React * react-dom.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */var Uu;function Gd(){if(Uu)return Je;Uu=1;var y=Ai(),E=Xd();function d(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),A=Object.prototype.hasOwnProperty,Q=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,Z={},W={};function H(e){return A.call(W,e)?!0:A.call(Z,e)?!1:Q.test(e)?W[e]=!0:(Z[e]=!0,!1)}function q(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function ae(e,t,n,r){if(t===null||typeof t>"u"||q(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function V(e,t,n,r,l,o,i){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=l,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=i}var Y={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){Y[e]=new V(e,0,!1,e,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];Y[t]=new V(t,1,!1,e[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){Y[e]=new V(e,2,!1,e.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){Y[e]=new V(e,2,!1,e,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){Y[e]=new V(e,3,!1,e.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(e){Y[e]=new V(e,3,!0,e,null,!1,!1)}),["capture","download"].forEach(function(e){Y[e]=new V(e,4,!1,e,null,!1,!1)}),["cols","rows","size","span"].forEach(function(e){Y[e]=new V(e,6,!1,e,null,!1,!1)}),["rowSpan","start"].forEach(function(e){Y[e]=new V(e,5,!1,e.toLowerCase(),null,!1,!1)});var we=/[\-:]([a-z])/g;function ze(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(we,ze);Y[t]=new V(t,1,!1,e,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(we,ze);Y[t]=new V(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(we,ze);Y[t]=new V(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(e){Y[e]=new V(e,1,!1,e.toLowerCase(),null,!1,!1)}),Y.xlinkHref=new V("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(e){Y[e]=new V(e,1,!1,e.toLowerCase(),null,!0,!0)});function ke(e,t,n,r){var l=Y.hasOwnProperty(t)?Y[t]:null;(l!==null?l.type!==0:r||!(2a||l[i]!==o[a]){var s=` `+l[i].replace(" at new "," at ");return e.displayName&&s.includes("")&&(s=s.replace("",e.displayName)),s}while(1<=i&&0<=a);break}}}finally{M=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?v(e):""}function X(e){switch(e.tag){case 5:return v(e.type);case 16:return v("Lazy");case 13:return v("Suspense");case 19:return v("SuspenseList");case 0:case 2:case 15:return e=b(e.type,!1),e;case 11:return e=b(e.type.render,!1),e;case 1:return e=b(e.type,!0),e;default:return""}}function O(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Re:return"Fragment";case K:return"Portal";case xe:return"Profiler";case he:return"StrictMode";case me:return"Suspense";case ge:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case Qe:return(e.displayName||"Context")+".Consumer";case ue:return(e._context.displayName||"Context")+".Provider";case Le:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Ie:return t=e.displayName||null,t!==null?t:O(e.type)||"Memo";case Ne:t=e._payload,e=e._init;try{return O(e(t))}catch{}}return null}function re(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return O(t);case 8:return t===he?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function ee(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function oe(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function Ue(e){var t=oe(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var l=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return l.call(this)},set:function(i){r=""+i,o.call(this,i)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(i){r=""+i},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function fn(e){e._valueTracker||(e._valueTracker=Ue(e))}function Un(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=oe(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function Tt(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function An(e,t){var n=t.checked;return g({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function Zt(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=ee(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function $i(e,t){t=t.checked,t!=null&&ke(e,"checked",t,!1)}function $l(e,t){$i(e,t);var n=ee(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?Hl(e,t.type,n):t.hasOwnProperty("defaultValue")&&Hl(e,t.type,ee(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Hi(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function Hl(e,t,n){(t!=="number"||Tt(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var $n=Array.isArray;function pn(e,t,n,r){if(e=e.options,t){t={};for(var l=0;l"+t.valueOf().toString()+"",t=Pr.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Hn(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var Vn={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Ku=["Webkit","ms","Moz","O"];Object.keys(Vn).forEach(function(e){Ku.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Vn[t]=Vn[e]})});function Yi(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||Vn.hasOwnProperty(e)&&Vn[e]?(""+t).trim():t+"px"}function Xi(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,l=Yi(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,l):e[n]=l}}var Yu=g({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Bl(e,t){if(t){if(Yu[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(d(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(d(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(d(61))}if(t.style!=null&&typeof t.style!="object")throw Error(d(62))}}function Ql(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Kl=null;function Yl(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Xl=null,hn=null,mn=null;function Gi(e){if(e=dr(e)){if(typeof Xl!="function")throw Error(d(280));var t=e.stateNode;t&&(t=Jr(t),Xl(e.stateNode,e.type,t))}}function Zi(e){hn?mn?mn.push(e):mn=[e]:hn=e}function Ji(){if(hn){var e=hn,t=mn;if(mn=hn=null,Gi(e),t)for(e=0;e>>=0,e===0?32:31-(oc(e)/ic|0)|0}var Mr=64,Or=4194304;function Kn(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Dr(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,l=e.suspendedLanes,o=e.pingedLanes,i=n&268435455;if(i!==0){var a=i&~l;a!==0?r=Kn(a):(o&=i,o!==0&&(r=Kn(o)))}else i=n&~l,i!==0?r=Kn(i):o!==0&&(r=Kn(o));if(r===0)return 0;if(t!==0&&t!==r&&(t&l)===0&&(l=r&-r,o=t&-t,l>=o||l===16&&(o&4194240)!==0))return t;if((r&4)!==0&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function Yn(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-ut(t),e[t]=n}function cc(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=nr),Na=" ",ja=!1;function za(e,t){switch(e){case"keyup":return bc.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Pa(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var yn=!1;function Ac(e,t){switch(e){case"compositionend":return Pa(t);case"keypress":return t.which!==32?null:(ja=!0,Na);case"textInput":return e=t.data,e===Na&&ja?null:e;default:return null}}function $c(e,t){if(yn)return e==="compositionend"||!ho&&za(e,t)?(e=ka(),$r=ao=Ot=null,yn=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=Da(n)}}function ba(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?ba(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Ua(){for(var e=window,t=Tt();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Tt(e.document)}return t}function vo(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function Gc(e){var t=Ua(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&ba(n.ownerDocument.documentElement,n)){if(r!==null&&vo(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var l=n.textContent.length,o=Math.min(r.start,l);r=r.end===void 0?o:Math.min(r.end,l),!e.extend&&o>r&&(l=r,r=o,o=l),l=Fa(n,o);var i=Fa(n,r);l&&i&&(e.rangeCount!==1||e.anchorNode!==l.node||e.anchorOffset!==l.offset||e.focusNode!==i.node||e.focusOffset!==i.offset)&&(t=t.createRange(),t.setStart(l.node,l.offset),e.removeAllRanges(),o>r?(e.addRange(t),e.extend(i.node,i.offset)):(t.setEnd(i.node,i.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,wn=null,yo=null,ir=null,wo=!1;function Aa(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;wo||wn==null||wn!==Tt(r)||(r=wn,"selectionStart"in r&&vo(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),ir&&or(ir,r)||(ir=r,r=Xr(yo,"onSelect"),0En||(e.current=Ro[En],Ro[En]=null,En--)}function se(e,t){En++,Ro[En]=e.current,e.current=t}var Ut={},Ae=bt(Ut),Ke=bt(!1),en=Ut;function Cn(e,t){var n=e.type.contextTypes;if(!n)return Ut;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var l={},o;for(o in n)l[o]=t[o];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=l),l}function Ye(e){return e=e.childContextTypes,e!=null}function qr(){de(Ke),de(Ae)}function ts(e,t,n){if(Ae.current!==Ut)throw Error(d(168));se(Ae,t),se(Ke,n)}function ns(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var l in r)if(!(l in t))throw Error(d(108,re(e)||"Unknown",l));return g({},n,r)}function el(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Ut,en=Ae.current,se(Ae,e),se(Ke,Ke.current),!0}function rs(e,t,n){var r=e.stateNode;if(!r)throw Error(d(169));n?(e=ns(e,t,en),r.__reactInternalMemoizedMergedChildContext=e,de(Ke),de(Ae),se(Ae,e)):de(Ke),se(Ke,n)}var _t=null,tl=!1,Lo=!1;function ls(e){_t===null?_t=[e]:_t.push(e)}function sd(e){tl=!0,ls(e)}function At(){if(!Lo&&_t!==null){Lo=!0;var e=0,t=le;try{var n=_t;for(le=1;e>=i,l-=i,Et=1<<32-ut(t)+l|n<$?(De=F,F=null):De=F.sibling;var ne=w(f,F,p[$],_);if(ne===null){F===null&&(F=De);break}e&&F&&ne.alternate===null&&t(f,F),c=o(ne,c,$),D===null?R=ne:D.sibling=ne,D=ne,F=De}if($===p.length)return n(f,F),pe&&nn(f,$),R;if(F===null){for(;$$?(De=F,F=null):De=F.sibling;var Xt=w(f,F,ne.value,_);if(Xt===null){F===null&&(F=De);break}e&&F&&Xt.alternate===null&&t(f,F),c=o(Xt,c,$),D===null?R=Xt:D.sibling=Xt,D=Xt,F=De}if(ne.done)return n(f,F),pe&&nn(f,$),R;if(F===null){for(;!ne.done;$++,ne=p.next())ne=S(f,ne.value,_),ne!==null&&(c=o(ne,c,$),D===null?R=ne:D.sibling=ne,D=ne);return pe&&nn(f,$),R}for(F=r(f,F);!ne.done;$++,ne=p.next())ne=N(F,f,$,ne.value,_),ne!==null&&(e&&ne.alternate!==null&&F.delete(ne.key===null?$:ne.key),c=o(ne,c,$),D===null?R=ne:D.sibling=ne,D=ne);return e&&F.forEach(function(Hd){return t(f,Hd)}),pe&&nn(f,$),R}function Ee(f,c,p,_){if(typeof p=="object"&&p!==null&&p.type===Re&&p.key===null&&(p=p.props.children),typeof p=="object"&&p!==null){switch(p.$$typeof){case Ce:e:{for(var R=p.key,D=c;D!==null;){if(D.key===R){if(R=p.type,R===Re){if(D.tag===7){n(f,D.sibling),c=l(D,p.props.children),c.return=f,f=c;break e}}else if(D.elementType===R||typeof R=="object"&&R!==null&&R.$$typeof===Ne&&cs(R)===D.type){n(f,D.sibling),c=l(D,p.props),c.ref=fr(f,D,p),c.return=f,f=c;break e}n(f,D);break}else t(f,D);D=D.sibling}p.type===Re?(c=dn(p.props.children,f.mode,_,p.key),c.return=f,f=c):(_=Pl(p.type,p.key,p.props,null,f.mode,_),_.ref=fr(f,c,p),_.return=f,f=_)}return i(f);case K:e:{for(D=p.key;c!==null;){if(c.key===D)if(c.tag===4&&c.stateNode.containerInfo===p.containerInfo&&c.stateNode.implementation===p.implementation){n(f,c.sibling),c=l(c,p.children||[]),c.return=f,f=c;break e}else{n(f,c);break}else t(f,c);c=c.sibling}c=Pi(p,f.mode,_),c.return=f,f=c}return i(f);case Ne:return D=p._init,Ee(f,c,D(p._payload),_)}if($n(p))return z(f,c,p,_);if(I(p))return P(f,c,p,_);ol(f,p)}return typeof p=="string"&&p!==""||typeof p=="number"?(p=""+p,c!==null&&c.tag===6?(n(f,c.sibling),c=l(c,p),c.return=f,f=c):(n(f,c),c=zi(p,f.mode,_),c.return=f,f=c),i(f)):n(f,c)}return Ee}var Pn=ds(!0),fs=ds(!1),il=bt(null),al=null,Tn=null,bo=null;function Uo(){bo=Tn=al=null}function Ao(e){var t=il.current;de(il),e._currentValue=t}function $o(e,t,n){for(;e!==null;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,r!==null&&(r.childLanes|=t)):r!==null&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function Rn(e,t){al=e,bo=Tn=null,e=e.dependencies,e!==null&&e.firstContext!==null&&((e.lanes&t)!==0&&(Xe=!0),e.firstContext=null)}function ot(e){var t=e._currentValue;if(bo!==e)if(e={context:e,memoizedValue:t,next:null},Tn===null){if(al===null)throw Error(d(308));Tn=e,al.dependencies={lanes:0,firstContext:e}}else Tn=Tn.next=e;return t}var rn=null;function Ho(e){rn===null?rn=[e]:rn.push(e)}function ps(e,t,n,r){var l=t.interleaved;return l===null?(n.next=n,Ho(t)):(n.next=l.next,l.next=n),t.interleaved=n,Nt(e,r)}function Nt(e,t){e.lanes|=t;var n=e.alternate;for(n!==null&&(n.lanes|=t),n=e,e=e.return;e!==null;)e.childLanes|=t,n=e.alternate,n!==null&&(n.childLanes|=t),n=e,e=e.return;return n.tag===3?n.stateNode:null}var $t=!1;function Vo(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function hs(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function jt(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function Ht(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,(te&2)!==0){var l=r.pending;return l===null?t.next=t:(t.next=l.next,l.next=t),r.pending=t,Nt(e,n)}return l=r.interleaved,l===null?(t.next=t,Ho(r)):(t.next=l.next,l.next=t),r.interleaved=t,Nt(e,n)}function sl(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194240)!==0)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,no(e,n)}}function ms(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var l=null,o=null;if(n=n.firstBaseUpdate,n!==null){do{var i={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};o===null?l=o=i:o=o.next=i,n=n.next}while(n!==null);o===null?l=o=t:o=o.next=t}else l=o=t;n={baseState:r.baseState,firstBaseUpdate:l,lastBaseUpdate:o,shared:r.shared,effects:r.effects},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function ul(e,t,n,r){var l=e.updateQueue;$t=!1;var o=l.firstBaseUpdate,i=l.lastBaseUpdate,a=l.shared.pending;if(a!==null){l.shared.pending=null;var s=a,h=s.next;s.next=null,i===null?o=h:i.next=h,i=s;var k=e.alternate;k!==null&&(k=k.updateQueue,a=k.lastBaseUpdate,a!==i&&(a===null?k.firstBaseUpdate=h:a.next=h,k.lastBaseUpdate=s))}if(o!==null){var S=l.baseState;i=0,k=h=s=null,a=o;do{var w=a.lane,N=a.eventTime;if((r&w)===w){k!==null&&(k=k.next={eventTime:N,lane:0,tag:a.tag,payload:a.payload,callback:a.callback,next:null});e:{var z=e,P=a;switch(w=t,N=n,P.tag){case 1:if(z=P.payload,typeof z=="function"){S=z.call(N,S,w);break e}S=z;break e;case 3:z.flags=z.flags&-65537|128;case 0:if(z=P.payload,w=typeof z=="function"?z.call(N,S,w):z,w==null)break e;S=g({},S,w);break e;case 2:$t=!0}}a.callback!==null&&a.lane!==0&&(e.flags|=64,w=l.effects,w===null?l.effects=[a]:w.push(a))}else N={eventTime:N,lane:w,tag:a.tag,payload:a.payload,callback:a.callback,next:null},k===null?(h=k=N,s=S):k=k.next=N,i|=w;if(a=a.next,a===null){if(a=l.shared.pending,a===null)break;w=a,a=w.next,w.next=null,l.lastBaseUpdate=w,l.shared.pending=null}}while(!0);if(k===null&&(s=S),l.baseState=s,l.firstBaseUpdate=h,l.lastBaseUpdate=k,t=l.shared.interleaved,t!==null){l=t;do i|=l.lane,l=l.next;while(l!==t)}else o===null&&(l.shared.lanes=0);an|=i,e.lanes=i,e.memoizedState=S}}function gs(e,t,n){if(e=t.effects,t.effects=null,e!==null)for(t=0;tn?n:4,e(!0);var r=Yo.transition;Yo.transition={};try{e(!1),t()}finally{le=n,Yo.transition=r}}function Os(){return it().memoizedState}function fd(e,t,n){var r=Qt(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},Ds(e))Fs(t,n);else if(n=ps(e,t,n,r),n!==null){var l=Be();mt(n,e,r,l),bs(n,t,r)}}function pd(e,t,n){var r=Qt(e),l={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(Ds(e))Fs(t,l);else{var o=e.alternate;if(e.lanes===0&&(o===null||o.lanes===0)&&(o=t.lastRenderedReducer,o!==null))try{var i=t.lastRenderedState,a=o(i,n);if(l.hasEagerState=!0,l.eagerState=a,ct(a,i)){var s=t.interleaved;s===null?(l.next=l,Ho(t)):(l.next=s.next,s.next=l),t.interleaved=l;return}}catch{}finally{}n=ps(e,t,l,r),n!==null&&(l=Be(),mt(n,e,r,l),bs(n,t,r))}}function Ds(e){var t=e.alternate;return e===ye||t!==null&&t===ye}function Fs(e,t){gr=fl=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function bs(e,t,n){if((n&4194240)!==0){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,no(e,n)}}var ml={readContext:ot,useCallback:$e,useContext:$e,useEffect:$e,useImperativeHandle:$e,useInsertionEffect:$e,useLayoutEffect:$e,useMemo:$e,useReducer:$e,useRef:$e,useState:$e,useDebugValue:$e,useDeferredValue:$e,useTransition:$e,useMutableSource:$e,useSyncExternalStore:$e,useId:$e,unstable_isNewReconciler:!1},hd={readContext:ot,useCallback:function(e,t){return kt().memoizedState=[e,t===void 0?null:t],e},useContext:ot,useEffect:js,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,pl(4194308,4,Ts.bind(null,t,e),n)},useLayoutEffect:function(e,t){return pl(4194308,4,e,t)},useInsertionEffect:function(e,t){return pl(4,2,e,t)},useMemo:function(e,t){var n=kt();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=kt();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=fd.bind(null,ye,e),[r.memoizedState,e]},useRef:function(e){var t=kt();return e={current:e},t.memoizedState=e},useState:Cs,useDebugValue:ti,useDeferredValue:function(e){return kt().memoizedState=e},useTransition:function(){var e=Cs(!1),t=e[0];return e=dd.bind(null,e[1]),kt().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=ye,l=kt();if(pe){if(n===void 0)throw Error(d(407));n=n()}else{if(n=t(),Oe===null)throw Error(d(349));(on&30)!==0||ks(r,t,n)}l.memoizedState=n;var o={value:n,getSnapshot:t};return l.queue=o,js(Ss.bind(null,r,o,e),[e]),r.flags|=2048,wr(9,xs.bind(null,r,o,n,t),void 0,null),n},useId:function(){var e=kt(),t=Oe.identifierPrefix;if(pe){var n=Ct,r=Et;n=(r&~(1<<32-ut(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=vr++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=i.createElement(n,{is:r.is}):(e=i.createElement(n),n==="select"&&(i=e,r.multiple?i.multiple=!0:r.size&&(i.size=r.size))):e=i.createElementNS(e,n),e[yt]=t,e[cr]=r,lu(e,t,!1,!1),t.stateNode=e;e:{switch(i=Ql(n,r),n){case"dialog":ce("cancel",e),ce("close",e),l=r;break;case"iframe":case"object":case"embed":ce("load",e),l=r;break;case"video":case"audio":for(l=0;lDn&&(t.flags|=128,r=!0,kr(o,!1),t.lanes=4194304)}else{if(!r)if(e=cl(i),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),kr(o,!0),o.tail===null&&o.tailMode==="hidden"&&!i.alternate&&!pe)return He(t),null}else 2*_e()-o.renderingStartTime>Dn&&n!==1073741824&&(t.flags|=128,r=!0,kr(o,!1),t.lanes=4194304);o.isBackwards?(i.sibling=t.child,t.child=i):(n=o.last,n!==null?n.sibling=i:t.child=i,o.last=i)}return o.tail!==null?(t=o.tail,o.rendering=t,o.tail=t.sibling,o.renderingStartTime=_e(),t.sibling=null,n=ve.current,se(ve,r?n&1|2:n&1),t):(He(t),null);case 22:case 23:return Ci(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&(t.mode&1)!==0?(nt&1073741824)!==0&&(He(t),t.subtreeFlags&6&&(t.flags|=8192)):He(t),null;case 24:return null;case 25:return null}throw Error(d(156,t.tag))}function Sd(e,t){switch(Mo(t),t.tag){case 1:return Ye(t.type)&&qr(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Ln(),de(Ke),de(Ae),Ko(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 5:return Bo(t),null;case 13:if(de(ve),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(d(340));zn()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return de(ve),null;case 4:return Ln(),null;case 10:return Ao(t.type._context),null;case 22:case 23:return Ci(),null;case 24:return null;default:return null}}var wl=!1,Ve=!1,_d=typeof WeakSet=="function"?WeakSet:Set,j=null;function Mn(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){Se(e,t,r)}else n.current=null}function pi(e,t,n){try{n()}catch(r){Se(e,t,r)}}var au=!1;function Ed(e,t){if(Co=Ur,e=Ua(),vo(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var l=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break e}var i=0,a=-1,s=-1,h=0,k=0,S=e,w=null;t:for(;;){for(var N;S!==n||l!==0&&S.nodeType!==3||(a=i+l),S!==o||r!==0&&S.nodeType!==3||(s=i+r),S.nodeType===3&&(i+=S.nodeValue.length),(N=S.firstChild)!==null;)w=S,S=N;for(;;){if(S===e)break t;if(w===n&&++h===l&&(a=i),w===o&&++k===r&&(s=i),(N=S.nextSibling)!==null)break;S=w,w=S.parentNode}S=N}n=a===-1||s===-1?null:{start:a,end:s}}else n=null}n=n||{start:0,end:0}}else n=null;for(No={focusedElem:e,selectionRange:n},Ur=!1,j=t;j!==null;)if(t=j,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,j=e;else for(;j!==null;){t=j;try{var z=t.alternate;if((t.flags&1024)!==0)switch(t.tag){case 0:case 11:case 15:break;case 1:if(z!==null){var P=z.memoizedProps,Ee=z.memoizedState,f=t.stateNode,c=f.getSnapshotBeforeUpdate(t.elementType===t.type?P:ft(t.type,P),Ee);f.__reactInternalSnapshotBeforeUpdate=c}break;case 3:var p=t.stateNode.containerInfo;p.nodeType===1?p.textContent="":p.nodeType===9&&p.documentElement&&p.removeChild(p.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(d(163))}}catch(_){Se(t,t.return,_)}if(e=t.sibling,e!==null){e.return=t.return,j=e;break}j=t.return}return z=au,au=!1,z}function xr(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var l=r=r.next;do{if((l.tag&e)===e){var o=l.destroy;l.destroy=void 0,o!==void 0&&pi(t,n,o)}l=l.next}while(l!==r)}}function kl(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function hi(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function su(e){var t=e.alternate;t!==null&&(e.alternate=null,su(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[yt],delete t[cr],delete t[To],delete t[id],delete t[ad])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function uu(e){return e.tag===5||e.tag===3||e.tag===4}function cu(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||uu(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function mi(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=Zr));else if(r!==4&&(e=e.child,e!==null))for(mi(e,t,n),e=e.sibling;e!==null;)mi(e,t,n),e=e.sibling}function gi(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(gi(e,t,n),e=e.sibling;e!==null;)gi(e,t,n),e=e.sibling}var Fe=null,pt=!1;function Vt(e,t,n){for(n=n.child;n!==null;)du(e,t,n),n=n.sibling}function du(e,t,n){if(vt&&typeof vt.onCommitFiberUnmount=="function")try{vt.onCommitFiberUnmount(Ir,n)}catch{}switch(n.tag){case 5:Ve||Mn(n,t);case 6:var r=Fe,l=pt;Fe=null,Vt(e,t,n),Fe=r,pt=l,Fe!==null&&(pt?(e=Fe,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Fe.removeChild(n.stateNode));break;case 18:Fe!==null&&(pt?(e=Fe,n=n.stateNode,e.nodeType===8?Po(e.parentNode,n):e.nodeType===1&&Po(e,n),qn(e)):Po(Fe,n.stateNode));break;case 4:r=Fe,l=pt,Fe=n.stateNode.containerInfo,pt=!0,Vt(e,t,n),Fe=r,pt=l;break;case 0:case 11:case 14:case 15:if(!Ve&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){l=r=r.next;do{var o=l,i=o.destroy;o=o.tag,i!==void 0&&((o&2)!==0||(o&4)!==0)&&pi(n,t,i),l=l.next}while(l!==r)}Vt(e,t,n);break;case 1:if(!Ve&&(Mn(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(a){Se(n,t,a)}Vt(e,t,n);break;case 21:Vt(e,t,n);break;case 22:n.mode&1?(Ve=(r=Ve)||n.memoizedState!==null,Vt(e,t,n),Ve=r):Vt(e,t,n);break;default:Vt(e,t,n)}}function fu(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new _d),t.forEach(function(r){var l=Id.bind(null,e,r);n.has(r)||(n.add(r),r.then(l,l))})}}function ht(e,t){var n=t.deletions;if(n!==null)for(var r=0;rl&&(l=i),r&=~o}if(r=l,r=_e()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*Nd(r/1960))-r,10e?16:e,Bt===null)var r=!1;else{if(e=Bt,Bt=null,Cl=0,(te&6)!==0)throw Error(d(331));var l=te;for(te|=4,j=e.current;j!==null;){var o=j,i=o.child;if((j.flags&16)!==0){var a=o.deletions;if(a!==null){for(var s=0;s_e()-wi?un(e,0):yi|=n),Ze(e,t)}function Cu(e,t){t===0&&((e.mode&1)===0?t=1:(t=Or,Or<<=1,(Or&130023424)===0&&(Or=4194304)));var n=Be();e=Nt(e,t),e!==null&&(Yn(e,t,n),Ze(e,n))}function Ld(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Cu(e,n)}function Id(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,l=e.memoizedState;l!==null&&(n=l.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(d(314))}r!==null&&r.delete(t),Cu(e,n)}var Nu;Nu=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||Ke.current)Xe=!0;else{if((e.lanes&n)===0&&(t.flags&128)===0)return Xe=!1,kd(e,t,n);Xe=(e.flags&131072)!==0}else Xe=!1,pe&&(t.flags&1048576)!==0&&os(t,rl,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;yl(e,t),e=t.pendingProps;var l=Cn(t,Ae.current);Rn(t,n),l=Go(null,t,r,e,l,n);var o=Zo();return t.flags|=1,typeof l=="object"&&l!==null&&typeof l.render=="function"&&l.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Ye(r)?(o=!0,el(t)):o=!1,t.memoizedState=l.state!==null&&l.state!==void 0?l.state:null,Vo(t),l.updater=gl,t.stateNode=l,l._reactInternals=t,ri(t,r,e,n),t=ai(null,t,r,!0,o,n)):(t.tag=0,pe&&o&&Io(t),We(null,t,l,n),t=t.child),t;case 16:r=t.elementType;e:{switch(yl(e,t),e=t.pendingProps,l=r._init,r=l(r._payload),t.type=r,l=t.tag=Od(r),e=ft(r,e),l){case 0:t=ii(null,t,r,e,n);break e;case 1:t=Js(null,t,r,e,n);break e;case 11:t=Ks(null,t,r,e,n);break e;case 14:t=Ys(null,t,r,ft(r.type,e),n);break e}throw Error(d(306,r,""))}return t;case 0:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:ft(r,l),ii(e,t,r,l,n);case 1:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:ft(r,l),Js(e,t,r,l,n);case 3:e:{if(qs(t),e===null)throw Error(d(387));r=t.pendingProps,o=t.memoizedState,l=o.element,hs(e,t),ul(t,r,null,n);var i=t.memoizedState;if(r=i.element,o.isDehydrated)if(o={element:r,isDehydrated:!1,cache:i.cache,pendingSuspenseBoundaries:i.pendingSuspenseBoundaries,transitions:i.transitions},t.updateQueue.baseState=o,t.memoizedState=o,t.flags&256){l=In(Error(d(423)),t),t=eu(e,t,r,n,l);break e}else if(r!==l){l=In(Error(d(424)),t),t=eu(e,t,r,n,l);break e}else for(tt=Ft(t.stateNode.containerInfo.firstChild),et=t,pe=!0,dt=null,n=fs(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(zn(),r===l){t=zt(e,t,n);break e}We(e,t,r,n)}t=t.child}return t;case 5:return vs(t),e===null&&Do(t),r=t.type,l=t.pendingProps,o=e!==null?e.memoizedProps:null,i=l.children,jo(r,l)?i=null:o!==null&&jo(r,o)&&(t.flags|=32),Zs(e,t),We(e,t,i,n),t.child;case 6:return e===null&&Do(t),null;case 13:return tu(e,t,n);case 4:return Wo(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=Pn(t,null,r,n):We(e,t,r,n),t.child;case 11:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:ft(r,l),Ks(e,t,r,l,n);case 7:return We(e,t,t.pendingProps,n),t.child;case 8:return We(e,t,t.pendingProps.children,n),t.child;case 12:return We(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,l=t.pendingProps,o=t.memoizedProps,i=l.value,se(il,r._currentValue),r._currentValue=i,o!==null)if(ct(o.value,i)){if(o.children===l.children&&!Ke.current){t=zt(e,t,n);break e}}else for(o=t.child,o!==null&&(o.return=t);o!==null;){var a=o.dependencies;if(a!==null){i=o.child;for(var s=a.firstContext;s!==null;){if(s.context===r){if(o.tag===1){s=jt(-1,n&-n),s.tag=2;var h=o.updateQueue;if(h!==null){h=h.shared;var k=h.pending;k===null?s.next=s:(s.next=k.next,k.next=s),h.pending=s}}o.lanes|=n,s=o.alternate,s!==null&&(s.lanes|=n),$o(o.return,n,t),a.lanes|=n;break}s=s.next}}else if(o.tag===10)i=o.type===t.type?null:o.child;else if(o.tag===18){if(i=o.return,i===null)throw Error(d(341));i.lanes|=n,a=i.alternate,a!==null&&(a.lanes|=n),$o(i,n,t),i=o.sibling}else i=o.child;if(i!==null)i.return=o;else for(i=o;i!==null;){if(i===t){i=null;break}if(o=i.sibling,o!==null){o.return=i.return,i=o;break}i=i.return}o=i}We(e,t,l.children,n),t=t.child}return t;case 9:return l=t.type,r=t.pendingProps.children,Rn(t,n),l=ot(l),r=r(l),t.flags|=1,We(e,t,r,n),t.child;case 14:return r=t.type,l=ft(r,t.pendingProps),l=ft(r.type,l),Ys(e,t,r,l,n);case 15:return Xs(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:ft(r,l),yl(e,t),t.tag=1,Ye(r)?(e=!0,el(t)):e=!1,Rn(t,n),As(t,r,l),ri(t,r,l,n),ai(null,t,r,!0,e,n);case 19:return ru(e,t,n);case 22:return Gs(e,t,n)}throw Error(d(156,t.tag))};function ju(e,t){return ia(e,t)}function Md(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function st(e,t,n,r){return new Md(e,t,n,r)}function ji(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Od(e){if(typeof e=="function")return ji(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Le)return 11;if(e===Ie)return 14}return 2}function Yt(e,t){var n=e.alternate;return n===null?(n=st(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Pl(e,t,n,r,l,o){var i=2;if(r=e,typeof e=="function")ji(e)&&(i=1);else if(typeof e=="string")i=5;else e:switch(e){case Re:return dn(n.children,l,o,t);case he:i=8,l|=8;break;case xe:return e=st(12,n,t,l|2),e.elementType=xe,e.lanes=o,e;case me:return e=st(13,n,t,l),e.elementType=me,e.lanes=o,e;case ge:return e=st(19,n,t,l),e.elementType=ge,e.lanes=o,e;case ie:return Tl(n,l,o,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case ue:i=10;break e;case Qe:i=9;break e;case Le:i=11;break e;case Ie:i=14;break e;case Ne:i=16,r=null;break e}throw Error(d(130,e==null?e:typeof e,""))}return t=st(i,n,t,l),t.elementType=e,t.type=r,t.lanes=o,t}function dn(e,t,n,r){return e=st(7,e,r,t),e.lanes=n,e}function Tl(e,t,n,r){return e=st(22,e,r,t),e.elementType=ie,e.lanes=n,e.stateNode={isHidden:!1},e}function zi(e,t,n){return e=st(6,e,null,t),e.lanes=n,e}function Pi(e,t,n){return t=st(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Dd(e,t,n,r,l){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=to(0),this.expirationTimes=to(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=to(0),this.identifierPrefix=r,this.onRecoverableError=l,this.mutableSourceEagerHydrationData=null}function Ti(e,t,n,r,l,o,i,a,s){return e=new Dd(e,t,n,a,s),t===1?(t=1,o===!0&&(t|=8)):t=0,o=st(3,null,null,t),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Vo(o),e}function Fd(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(y)}catch(E){console.error(E)}}return y(),Di.exports=Gd(),Di.exports}var $u;function Jd(){if($u)return Fl;$u=1;var y=Zd();return Fl.createRoot=y.createRoot,Fl.hydrateRoot=y.hydrateRoot,Fl}var qd=Jd();/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const ef=y=>y.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),tf=y=>y.replace(/^([A-Z])|[\s-_]+(\w)/g,(E,d,U)=>U?U.toUpperCase():d.toLowerCase()),Hu=y=>{const E=tf(y);return E.charAt(0).toUpperCase()+E.slice(1)},Wu=(...y)=>y.filter((E,d,U)=>!!E&&E.trim()!==""&&U.indexOf(E)===d).join(" ").trim();/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */var nf={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const rf=C.forwardRef(({color:y="currentColor",size:E=24,strokeWidth:d=2,absoluteStrokeWidth:U,className:T="",children:L,iconNode:B,...G},A)=>C.createElement("svg",{ref:A,...nf,width:E,height:E,stroke:y,strokeWidth:U?Number(d)*24/Number(E):d,className:Wu("lucide",T),...G},[...B.map(([Q,Z])=>C.createElement(Q,Z)),...Array.isArray(L)?L:[L]]));/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const Gt=(y,E)=>{const d=C.forwardRef(({className:U,...T},L)=>C.createElement(rf,{ref:L,iconNode:E,className:Wu(`lucide-${ef(Hu(y))}`,`lucide-${y}`,U),...T}));return d.displayName=Hu(y),d};/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const lf=[["path",{d:"M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z",key:"p7xjir"}]],Bu=Gt("cloud",lf);/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const of=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]],Al=Gt("external-link",of);/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const af=[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],sf=Gt("eye-off",af);/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const uf=[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],cf=Gt("eye",uf);/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const df=[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]],ff=Gt("folder-open",df);/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const pf=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],hf=Gt("refresh-cw",pf);/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const mf=[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]],gf=Gt("save",mf);/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const vf=[["rect",{width:"14",height:"20",x:"5",y:"2",rx:"2",ry:"2",key:"1yt0o3"}],["path",{d:"M12 18h.01",key:"mhygvu"}]],Vu=Gt("smartphone",vf);function yf(){return m.jsx("div",{className:"bg-white rounded-lg border border-slate-200 p-6 mb-4",children:m.jsx("div",{className:"flex items-start",children:m.jsxs("div",{className:"flex-1",children:[m.jsxs("div",{className:"flex items-center gap-3 mb-3",children:[m.jsx("div",{className:"w-10 h-10 rounded-full bg-blue-50 flex items-center justify-center",children:m.jsx(Bu,{className:"w-6 h-6 text-blue-600"})}),m.jsx("h2",{className:"text-slate-800",children:"DDNSTO 远程访问"})]}),m.jsx("p",{className:"text-slate-600 text-sm mb-2",children:"DDNSTO 远程访问,不需要公网 IP、不需要开放端口。只需一个链接,即可从任何地方安全访问您的 NAS、路由器和桌面。"}),m.jsxs("a",{href:"https://www.ddnsto.com",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-sm text-blue-600 hover:underline",children:["了解更多",m.jsx(Al,{className:"w-3 h-3"})]})]})})})}function wf({isRunning:y,isConfigured:E,hostname:d,address:U,deviceId:T,version:L,featEnabled:B,tunnelOk:G,onRefreshStatus:A}){const[Q,Z]=C.useState(!1),W={label:y?"运行中":"已停止",bgColor:y?"bg-green-100":"bg-slate-200",textColor:y?"text-green-700":"text-slate-600"},H=U&&U.trim().length>0?U:"未配置",q=Q,ae=G===!0,V=q?"检查中...":G===!0?"正常":G===!1?"无法连接服务器":"未知",Y=B==="1"||B===!0?"已开启":"未开启",we=T||"-",ze=async()=>{if(A){Z(!0);try{await A()}finally{Z(!1)}}};return m.jsxs("div",{className:"bg-white rounded-lg border border-slate-200 p-6 mb-4",children:[m.jsx("h3",{className:"text-slate-800 mb-4",children:"运行状态"}),m.jsxs("div",{className:"flex items-center justify-between pb-6 border-b border-slate-100",children:[m.jsxs("div",{className:"flex items-center gap-4",children:[m.jsx("span",{className:`px-3 py-1 rounded-full text-sm ${W.bgColor} ${W.textColor}`,children:W.label}),E&&m.jsxs("div",{className:"flex items-center gap-2",children:[m.jsx("span",{className:"text-sm text-slate-500",children:"远程访问域名:"}),U&&U.trim().length>0?m.jsxs("a",{href:H,target:"_blank",rel:"noopener noreferrer",className:"text-sm text-blue-600 hover:underline flex items-center gap-1",children:[H,m.jsx(Al,{className:"w-3 h-3"})]}):m.jsx("span",{className:"text-sm text-slate-500",children:H})]})]}),m.jsx("div",{className:"flex items-center gap-2",children:m.jsxs("button",{onClick:ze,className:"px-3 py-2 rounded-md text-blue-600 text-sm hover:bg-blue-50 transition-colors flex items-center gap-1",children:[m.jsx(hf,{className:"w-4 h-4"}),"刷新状态"]})})]}),m.jsx("div",{className:"mt-6",children:m.jsxs("div",{className:"flex items-center gap-2 text-sm text-slate-700",children:[m.jsx(Bu,{className:"w-4 h-4 text-slate-400"}),q&&m.jsx("div",{className:"w-4 h-4 rounded-full border-2 border-slate-300 border-t-blue-600 animate-spin"}),m.jsxs("h4",{className:"text-sm text-slate-700",children:["服务器连接:",ae?m.jsx("span",{className:"text-green-600",children:V}):m.jsx("span",{children:V}),"| 设备 ID:",we," | 拓展功能:",Y,L?` | 版本:${L}`:""]})]})})]})}function Qu({checked:y,onChange:E,label:d,id:U,disabled:T,containerClassName:L,...B}){return m.jsxs("div",{className:`ddnsto-toggle-container ${L||""}`,children:[d&&m.jsx("label",{htmlFor:U,className:"text-sm text-slate-700 mr-3 whitespace-nowrap",children:d}),m.jsxs("label",{className:"ddnsto-toggle-switch","aria-label":d||"toggle",children:[m.jsx("input",{id:U,type:"checkbox",checked:y,disabled:T,onChange:G=>E(G.target.checked),...B}),m.jsx("span",{className:"ddnsto-toggle-slider","aria-hidden":!0})]})]})}function kf({onSave:y,isInTab:E,token:d,enabled:U,advancedConfig:T,onRegisterSave:L,onTokenChange:B,onEnabledChange:G}){const[A,Q]=C.useState(d||""),[Z,W]=C.useState(U);C.useEffect(()=>{Q(d||"")},[d]),C.useEffect(()=>{W(U)},[T,U]);const H=()=>{A.trim()&&y(A,Z?"1":"0",T)};return C.useEffect(()=>{L&&L(()=>H())},[L,A,Z,T]),m.jsxs("div",{className:E?"":"bg-white rounded-lg border border-slate-200 p-6 mb-4",children:[!E&&m.jsxs(m.Fragment,{children:[m.jsx("h3",{className:"text-slate-800 mb-2",children:"手动配置"}),m.jsx("p",{className:"text-xs text-slate-400 mb-6",children:"如果您已经在 DDNSTO 控制台获取了令牌,可以直接在此填写并启动插件。"})]}),m.jsxs("div",{className:"space-y-5",children:[m.jsx("div",{className:"pb-4",children:m.jsxs("div",{className:"flex items-center gap-2",children:[m.jsx("h4",{className:"text-sm text-slate-700",children:"启用 DDNSTO"}),m.jsx(Qu,{checked:Z,onChange:q=>{W(q),G?.(q)},"aria-label":"启用 DDNSTO",containerClassName:"ml-6"})]})}),m.jsxs("div",{children:[m.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[m.jsxs("label",{className:"text-sm text-slate-700",children:["用户令牌(Token) ",m.jsx("span",{className:"text-red-500",children:"*"})]}),m.jsxs("a",{href:"https://www.ddnsto.com/docs/guide/token.html",target:"_blank",rel:"noopener noreferrer",className:"text-xs text-blue-600 hover:underline flex items-center gap-1",children:["如何查看用户令牌",m.jsx(Al,{className:"w-3 h-3"})]})]}),m.jsx("div",{className:"relative",children:m.jsx("input",{type:"text",value:A,onChange:q=>{Q(q.target.value),B?.(q.target.value)},placeholder:"请输入您的 DDNSTO 令牌",className:"w-full px-3 py-2 border border-slate-300 rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500"})}),m.jsx("p",{className:"text-xs text-slate-400 mt-1",children:"令牌将保存在路由器本地,请勿泄露。"})]})]})]})}function xf({token:y,enabled:E,advancedConfig:d,onSave:U,isInTab:T,onRegisterSave:L}){const[B,G]=C.useState(d.feat_enabled==="1"),A=K=>K.feat_disk_path_selected?K.feat_disk_path_selected:K.mounts&&K.mounts.length>0?K.mounts[0]:"",[Q,Z]=C.useState(A(d)),[W,H]=C.useState(d.feat_port||"3033"),[q,ae]=C.useState(d.feat_username||"ddnsto"),[V,Y]=C.useState(d.feat_password||""),[we,ze]=C.useState(!1),[ke,fe]=C.useState(d.index||"");C.useEffect(()=>{G(d.feat_enabled==="1"),Z(A(d)),d.feat_port&&H(d.feat_port),d.feat_username&&ae(d.feat_username),d.feat_password&&Y(d.feat_password),d.index!==void 0&&fe(d.index)},[d]);const Ce=()=>{U(y,E?"1":"0",{feat_enabled:B?"1":"0",feat_port:W,feat_username:q,feat_password:V,feat_disk_path_selected:Q,mounts:d.mounts,index:ke})};return C.useEffect(()=>{L&&L(()=>Ce())},[L,y,E,B,Q,W,q,V,ke,d.mounts]),m.jsxs("div",{className:T?"":"bg-white rounded-lg border border-slate-200 p-6 mb-4",children:[!T&&m.jsx("h3",{className:"text-slate-800 mb-4",children:"高级功能"}),m.jsxs("div",{className:"space-y-5",children:[m.jsxs("div",{children:[m.jsx("label",{className:"block text-sm text-slate-700 mb-2",children:"设备编号(可选)"}),m.jsx("input",{type:"text",value:ke,onChange:K=>fe(K.target.value),placeholder:"",className:"w-full px-3 py-2 border border-slate-300 rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500"}),m.jsx("p",{className:"text-xs text-slate-400 mt-1",children:"如有多台设备id重复,请修改此编号(0~100),正常情况不需要修改"})]}),m.jsxs("div",{className:"flex items-center gap-2",children:[m.jsx("h4",{className:"text-sm text-slate-700",children:"启用拓展功能"}),m.jsx(Qu,{checked:B,onChange:K=>G(K),"aria-label":"启用拓展功能",containerClassName:"ml-6"})]}),m.jsxs("div",{className:"flex items-center gap-2 -mt-2",children:[m.jsx("p",{className:"text-xs text-slate-400",children:"启用后可支持控制台的「文件管理」及「远程开机」功能"}),m.jsxs("a",{href:"https://www.ddnsto.com/docs/guide/advanced.html",target:"_blank",rel:"noopener noreferrer",className:"text-xs text-blue-600 hover:underline flex items-center gap-1 whitespace-nowrap",children:["查看教程",m.jsx(Al,{className:"w-3 h-3"})]})]}),B&&m.jsxs("div",{className:"space-y-4",children:[m.jsxs("div",{className:"flex items-center gap-2",children:[m.jsx(ff,{className:"w-4 h-4 text-slate-600"}),m.jsx("h5",{className:"text-sm text-slate-700",children:"WebDAV 服务配置"})]}),m.jsxs("div",{className:"space-y-4 pl-6",children:[m.jsxs("div",{children:[m.jsx("label",{className:"block text-sm text-slate-600 mb-2",children:"可访问的文件目录"}),m.jsx("select",{value:Q,onChange:K=>Z(K.target.value),className:"w-full px-3 py-2 border border-slate-300 rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 bg-white",children:d.mounts&&d.mounts.length>0?d.mounts.map(K=>m.jsx("option",{value:K,children:K},K)):m.jsx("option",{value:"",disabled:!0,children:"未检测到挂载点"})}),m.jsx("p",{className:"text-xs text-slate-400 mt-1",children:"控制台上的文件管理将只能看到此目录及其子目录。"})]}),m.jsxs("div",{children:[m.jsx("label",{className:"block text-sm text-slate-600 mb-2",children:"服务端口"}),m.jsx("input",{type:"text",value:W,onChange:K=>H(K.target.value),placeholder:"3033",className:"w-full px-3 py-2 border border-slate-300 rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500"})]}),m.jsxs("div",{children:[m.jsx("label",{className:"block text-sm text-slate-600 mb-2",children:"授权用户名"}),m.jsx("input",{type:"text",value:q,onChange:K=>ae(K.target.value),placeholder:"ddnsto",className:"w-full px-3 py-2 border border-slate-300 rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500"})]}),m.jsxs("div",{children:[m.jsx("label",{className:"block text-sm text-slate-600 mb-2",children:"授权用户密码"}),m.jsxs("div",{className:"relative",children:[m.jsx("input",{type:we?"text":"password",value:V,onChange:K=>Y(K.target.value),placeholder:"设置访问密码",className:"w-full px-3 py-2 pr-10 border border-slate-300 rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500"}),m.jsx("button",{type:"button",onClick:()=>ze(!we),className:"absolute right-2 top-1/2 -translate-y-1/2 text-slate-400 hover:text-slate-600",children:we?m.jsx(sf,{className:"w-4 h-4"}):m.jsx(cf,{className:"w-4 h-4"})})]})]})]})]})]})]})}function Sf({ddnstoToken:y,ddnstoEnabled:E,advancedConfig:d,onSave:U,saveBanner:T}){const[L,B]=C.useState("basic"),G=C.useRef(null),A=C.useRef(),Q=C.useRef(),[Z,W]=C.useState(y||""),[H,q]=C.useState(E==="1");C.useEffect(()=>{W(y||"")},[y]),C.useEffect(()=>{q(E==="1")},[E]);const ae=()=>{L==="basic"?A.current?.():Q.current?.()};return m.jsxs(m.Fragment,{children:[m.jsxs("div",{className:"bg-white rounded-lg border border-slate-200 mb-4",children:[m.jsx("div",{className:"border-b border-slate-200 px-6",children:m.jsx("div",{className:"flex items-center justify-between",children:m.jsxs("div",{className:"flex items-center -mb-px",children:[m.jsx("button",{onClick:()=>B("basic"),className:`px-4 py-4 text-sm border-b-2 transition-colors ${L==="basic"?"border-blue-600 text-blue-600":"border-transparent text-slate-600 hover:text-slate-800"}`,children:"基础配置"}),m.jsx("button",{onClick:()=>B("advanced"),className:`px-4 py-4 text-sm border-b-2 transition-colors ${L==="advanced"?"border-blue-600 text-blue-600":"border-transparent text-slate-600 hover:text-slate-800"}`,children:"高级功能"})]})})}),m.jsxs("div",{ref:G,className:"p-6",children:[L==="basic"&&m.jsx(kf,{token:Z,enabled:H,advancedConfig:d,onSave:U,isInTab:!0,onRegisterSave:V=>{A.current=V},onTokenChange:W,onEnabledChange:q}),L==="advanced"&&m.jsx(xf,{token:Z,enabled:H,advancedConfig:d,onSave:U,isInTab:!0,onRegisterSave:V=>{Q.current=V}})]})]}),m.jsx("div",{className:"flex justify-end gap-3 mt-4",children:m.jsxs("button",{onClick:ae,disabled:!Z.trim(),className:"ddnsto-btn ddnsto-btn-primary",children:[m.jsx(gf,{className:"ddnsto-btn-icon"}),"保存配置并应用"]})}),T.state!=="idle"&&m.jsxs("div",{className:["mt-2 rounded-md border px-3 py-2 text-sm",T.state==="loading"?"bg-blue-50 border-blue-200 text-blue-800":"",T.state==="success"?"bg-emerald-50 border-emerald-200 text-emerald-800":"",T.state==="error"?"bg-red-50 border-red-200 text-red-800":""].join(" "),children:[m.jsx("div",{className:"font-medium",children:T.message}),T.description&&m.jsx("div",{className:"text-xs mt-1 opacity-80 break-words",children:T.description})]})]})}const bn={auth:0,starting:1,binding:2,domain:3,checking:4};function _f({apiBase:y,csrfToken:E,deviceId:d,onboardingBase:U,onComplete:T,onRefreshStatus:L,isInTab:B}){const[G,A]=C.useState(!1),[Q,Z]=C.useState(U||"https://www.kooldns.cn/bind"),[W,H]=C.useState(`${U||"https://www.kooldns.cn/bind"}/#/auth?send=1&source=openwrt&callback=*`),[q,ae]=C.useState("auth"),[V,Y]=C.useState(d||""),[we,ze]=C.useState(""),[ke,fe]=C.useState(""),[Ce,K]=C.useState(!1),[Re,he]=C.useState(null),xe=C.useRef("auth"),ue=E||(typeof window<"u"?window.ddnstoCsrfToken:""),Qe=C.useCallback(g=>{ae(u=>bn[g]>bn[u]?g:u)},[]);C.useEffect(()=>{xe.current=q},[q]),C.useEffect(()=>{console.log("Onboarding iframe url:",W)},[W]);const Le=C.useCallback(()=>{ae("auth"),ze(""),fe(""),he(null),Y(d||""),H(`${Q}/#/auth?send=1&source=openwrt&callback=*`)},[Qe,d,Q]);C.useEffect(()=>{const g="/#/auth?send=1&source=openwrt&callback=*",u=U||"https://www.kooldns.cn/bind";Z(u),H(`${u}${g}`)},[U]),C.useEffect(()=>{Y(d||"")},[d]);const me=C.useCallback(async()=>{for(let v=0;v<20;v+=1){const M=await fetch(`${y}/admin/services/ddnsto/api/status`,{credentials:"same-origin"});if(M.ok){const X=(await M.json())?.data||{},O=X.deviceId||X.device_id||"";if(O&&Y(O),X.running)return{running:!0,deviceId:O}}await new Promise(b=>setTimeout(b,2e3))}throw new Error("ddnsto not running")},[y]),ge=C.useCallback(async g=>{const u={url:g};ue&&(u.token=ue);const v=await fetch(`${y}/admin/services/ddnsto/api/onboarding/address`,{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json",...ue?{"X-LuCI-Token":ue}:{}},body:JSON.stringify(u)});if(!v.ok)throw new Error(`HTTP ${v.status}`);const M=await v.json();if(!M?.ok)throw new Error(M?.error||"save address failed")},[y,ue]),Ie=C.useCallback(async(g,u)=>{K(!0),he(null);const v=V||d||"",M=`${Q}/#/bind?status=starting&token=${encodeURIComponent(g)}&sign=${encodeURIComponent(u)}${v?`&routerId=${encodeURIComponent(v)}`:""}`;H(M),Qe("starting");try{const b=await fetch(`${y}/admin/services/ddnsto/api/onboarding/start`,{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json",...ue?{"X-LuCI-Token":ue}:{}},body:JSON.stringify({token:g})});if(!b.ok)throw new Error(`HTTP ${b.status}`);const X=await b.json();if(!X?.ok)throw new Error(X?.error||"start failed");L&&await L();const re=(await me())?.deviceId||V||d||"";if(bn[xe.current]>=bn.domain)return;const ee=`${Q}/#/bind?status=starting&routerId=${encodeURIComponent(re)}&token=${encodeURIComponent(g)}&sign=${encodeURIComponent(u)}`;H(ee),Qe("binding"),Y(re)}catch{he("启动失败,请稍后重试")}finally{K(!1)}},[Qe,y,d,ue,Q,L,me,Le,V]),Ne=C.useCallback(g=>{const u=g||V;if(!we||!ke||!u)return;const v=`${Q}/#/domain?sign=${encodeURIComponent(ke)}&token=${encodeURIComponent(we)}&routerId=${encodeURIComponent(u)}&netaddr=127.0.0.1&source=openwrt`;H(v),ae("domain")},[ke,we,Q,V]),ie=C.useCallback(async g=>{H(`${Q}/#/check?url=${encodeURIComponent(g)}`),ae("checking"),T();try{await ge(g),L&&await L()}catch{he("保存域名失败,请重试")}},[Q,T,L,ge]),x=C.useCallback(()=>{A(!0),Le()},[Le]);C.useEffect(()=>{const g=u=>{if(!G)return;console.log("Onboarding message:",u.data);const v=u.data;let M=v;if(typeof v=="string")try{M=JSON.parse(v)}catch{return}if(!M||typeof M!="object")return;const b=M.data,O=b&&typeof b=="object"?b:M;if((typeof O.auth=="string"?O.auth:"")!=="ddnsto")return;const ee=typeof O.sign=="string"?O.sign:"",oe=typeof O.token=="string"?O.token:"",Ue=typeof O.step=="string"?O.step:"",fn=typeof O.status=="string"?O.status:"",Un=typeof O.url=="string"?O.url:"",Tt=O.success,An=typeof Tt=="number"?Tt:Number(Tt);if(ee&&oe&&q==="auth"&&!Ce){ze(oe),fe(ee),Ie(oe,ee);return}if(Ue==="bind"&&fn==="success"){const Zt=typeof O.router_uid=="string"?O.router_uid:V;Zt&&Y(Zt),Ne(Zt);return}Ue==="domain"&&Un&&An===0&&bn[xe.current]window.removeEventListener("message",g)},[Ne,ie,Ce,Ie,G,q]);const I=()=>m.jsx("div",{className:"flex items-center justify-between mb-6",children:m.jsx("h3",{className:"text-slate-800",children:"快速向导"})});return G?m.jsxs("div",{className:B?"":"bg-white rounded-lg border border-slate-200 p-6 mb-4",children:[!B&&I(),m.jsx("div",{className:"rounded-lg border border-slate-200 overflow-hidden",children:m.jsx("iframe",{src:W,title:"快速向导",className:"w-full",style:{width:"100%",height:"70vh",maxHeight:"400px",border:0},loading:"lazy"})})]}):m.jsxs("div",{className:B?"":"bg-white rounded-lg border border-slate-200 p-6 mb-4",children:[!B&&I(),m.jsxs("div",{className:"text-center py-8",children:[m.jsx("div",{className:"mb-4 flex justify-center",children:m.jsx("div",{className:"w-16 h-16 rounded-full bg-blue-50 flex items-center justify-center",children:m.jsx(Vu,{className:"w-8 h-8 text-blue-600"})})}),m.jsx("h4",{className:"text-slate-800 mb-2",children:"欢迎使用 DDNSTO!"}),m.jsx("p",{className:"text-sm text-slate-600 mb-6 max-w-md mx-auto",children:"通过微信扫码登录,我们将引导您完成插件配置"}),m.jsxs("button",{onClick:x,className:"ddnsto-btn ddnsto-btn-primary",children:[m.jsx(Vu,{className:"ddnsto-btn-icon"}),"开始配置"]})]})]})}function Ef({config:y}){const[E,d]=C.useState(!1),[U,T]=C.useState(!1),[L,B]=C.useState("OpenWrt"),[G,A]=C.useState(""),[Q,Z]=C.useState(""),[W,H]=C.useState(""),[q,ae]=C.useState(""),[V,Y]=C.useState("1"),[we,ze]=C.useState({feat_enabled:"0",feat_port:"",feat_username:"",feat_password:"",feat_disk_path_selected:"",mounts:[],index:""}),[,ke]=C.useState(null),[fe,Ce]=C.useState(null),[K,Re]=C.useState({state:"idle",message:""}),he=C.useRef(),xe=(y?.api_base||"/cgi-bin/luci").replace(/\/$/,""),ue=y?.token||"",Qe=(y?.onboarding_base||"https://www.kooldns.cn/bind").replace(/\/$/,""),Le=C.useCallback((x,I,g,u)=>{he.current&&window.clearTimeout(he.current),Re({state:x,message:I,description:g}),u&&(he.current=window.setTimeout(()=>{Re({state:"idle",message:""})},u))},[]);C.useEffect(()=>()=>{he.current&&window.clearTimeout(he.current)},[]);const me=C.useCallback(async()=>{try{const x=await fetch(`${xe}/admin/services/ddnsto/api/config`,{credentials:"same-origin"});if(!x.ok)throw new Error(`HTTP ${x.status}`);const g=(await x.json())?.data||{};g.address&&A(g.address),g.device_id!==void 0?Z(g.device_id):g.deviceId!==void 0&&Z(g.deviceId),g.version!==void 0&&H(g.version),g.token&&ae(g.token),g.enabled!==void 0&&Y(g.enabled),ze({feat_enabled:g.feat_enabled||"0",feat_port:g.feat_port||"",feat_username:g.feat_username||"",feat_password:g.feat_password||"",feat_disk_path_selected:g.feat_disk_path_selected||"",mounts:g.mounts||[],index:g.index||""})}catch(x){console.error("Failed to fetch ddnsto config",x)}},[xe]),ge=C.useCallback(async()=>{try{const x=await fetch(`${xe}/admin/services/ddnsto/api/status`,{credentials:"same-origin"});if(!x.ok)throw new Error(`HTTP ${x.status}`);const g=(await x.json())?.data||{};d(!!g.running),g.token_set&&T(!0),g.hostname&&B(g.hostname),g.device_id!==void 0?Z(g.device_id):g.deviceId!==void 0&&Z(g.deviceId),g.address&&A(g.address),g.version!==void 0&&H(g.version),ke(null)}catch(x){console.error("Failed to fetch ddnsto status",x),ke("无法获取运行状态")}},[xe]),Ie=C.useCallback(async()=>{try{const x=await fetch(`${xe}/admin/services/ddnsto/api/connectivity`,{credentials:"same-origin"});if(!x.ok)throw new Error(`HTTP ${x.status}`);const g=(await x.json())?.data||{};g.tunnel_ok!==void 0&&g.tunnel_ok!==null?Ce(g.tunnel_ok===!0):Ce(null)}catch(x){console.error("Failed to fetch ddnsto connectivity",x),Ce(null)}},[xe]),Ne=C.useCallback(async()=>{await me(),await ge(),await Ie()},[me,ge,Ie]),ie=C.useCallback(async(x,I,g)=>{Le("loading","正在保存配置...","正在将配置写入路由器,请稍候");try{const u=new URLSearchParams;ue&&u.append("token",ue),u.append("ddnsto_token",x),u.append("enabled",I),u.append("feat_enabled",g.feat_enabled),u.append("feat_port",g.feat_port),u.append("feat_username",g.feat_username),u.append("feat_password",g.feat_password),u.append("feat_disk_path_selected",g.feat_disk_path_selected),u.append("index",g.index||"");const v=await fetch(`${xe}/admin/services/ddnsto/api/config`,{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/x-www-form-urlencoded",...ue?{"X-LuCI-Token":ue}:{}},body:u});if(!v.ok)throw new Error(`HTTP ${v.status}`);const M=await v.json();if(!M?.ok)throw new Error(M?.error||"Save failed");Le("success","配置已保存并生效",void 0,3e3),T(!0),await me(),await ge()}catch(u){console.error("Failed to save config",u);const v=u instanceof Error?u.message:String(u);Le("error","保存失败,请重试",v,4e3)}},[xe,ue,me,ge]);return C.useEffect(()=>{me(),ge(),Ie()},[me,ge,Ie]),C.useEffect(()=>{const x=window.setInterval(ge,5e3);return()=>{window.clearInterval(x)}},[ge]),m.jsx("div",{className:"min-h-screen bg-slate-50",children:m.jsx("main",{children:m.jsxs("div",{className:"max-w-5xl mx-auto px-6 py-8",children:[m.jsx(yf,{}),m.jsx(wf,{isRunning:E,isConfigured:U,hostname:L,address:G,deviceId:Q,version:W,featEnabled:we.feat_enabled,tunnelOk:fe,onRefreshStatus:Ne}),m.jsx(_f,{apiBase:xe,csrfToken:ue,deviceId:Q,onboardingBase:Qe,onRefreshStatus:Ne,onComplete:()=>T(!0)}),m.jsx(Sf,{ddnstoToken:q,ddnstoEnabled:V,advancedConfig:we,onSave:ie,saveBanner:K})]})})})}const Cf='/*! tailwindcss v4.1.3 | MIT License | https://tailwindcss.com */*,:before,:after,::backdrop{--tw-border-style: solid}@layer properties{@supports (((-webkit-hyphens: none)) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color: rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x: 0;--tw-translate-y: 0;--tw-translate-z: 0;--tw-rotate-x: rotateX(0);--tw-rotate-y: rotateY(0);--tw-rotate-z: rotateZ(0);--tw-skew-x: skewX(0);--tw-skew-y: skewY(0);--tw-space-y-reverse: 0;--tw-border-style: solid;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000}}}@layer theme{:root,:host{--font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-500: oklch(.637 .237 25.331);--color-amber-50: oklch(.987 .022 95.277);--color-amber-200: oklch(.924 .12 95.746);--color-amber-600: oklch(.666 .179 58.318);--color-green-50: oklch(.982 .018 155.826);--color-green-100: oklch(.962 .044 156.743);--color-green-200: oklch(.925 .084 155.995);--color-green-600: oklch(.627 .194 149.214);--color-green-700: oklch(.527 .154 150.069);--color-green-800: oklch(.448 .119 151.328);--color-blue-50: oklch(.97 .014 254.604);--color-blue-200: oklch(.882 .059 254.128);--color-blue-500: oklch(.623 .214 259.815);--color-blue-600: oklch(.546 .245 262.881);--color-blue-700: oklch(.488 .243 264.376);--color-slate-50: oklch(.984 .003 247.858);--color-slate-100: oklch(.968 .007 247.896);--color-slate-200: oklch(.929 .013 255.508);--color-slate-300: oklch(.869 .022 252.894);--color-slate-400: oklch(.704 .04 256.788);--color-slate-500: oklch(.554 .046 257.417);--color-slate-600: oklch(.446 .043 257.281);--color-slate-700: oklch(.372 .044 257.287);--color-slate-800: oklch(.279 .041 260.031);--color-white: #fff;--spacing: .25rem;--container-md: 28rem;--container-5xl: 64rem;--text-xs: .75rem;--text-xs--line-height: calc(1 / .75);--text-sm: .875rem;--text-sm--line-height: calc(1.25 / .875);--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--font-weight-normal: 400;--font-weight-medium: 500;--default-transition-duration: .15s;--default-transition-timing-function: cubic-bezier(.4, 0, .2, 1);--default-font-family: var(--font-sans);--default-font-feature-settings: var(--font-sans--font-feature-settings);--default-font-variation-settings: var(--font-sans--font-variation-settings);--default-mono-font-family: var(--font-mono);--default-mono-font-feature-settings: var(--font-mono--font-feature-settings);--default-mono-font-variation-settings: var(--font-mono--font-variation-settings)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings, normal);font-variation-settings:var(--default-font-variation-settings, normal);-webkit-tap-highlight-color:transparent}body{line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings, normal);font-variation-settings:var(--default-mono-font-variation-settings, normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1;color:currentColor}@supports (color: color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentColor 50%,transparent)}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}body{background-color:var(--background);color:var(--foreground)}*{border-color:var(--border);outline-color:var(--ring)}@supports (color: color-mix(in lab,red,red)){*{outline-color:color-mix(in oklab,var(--ring) 50%,transparent)}}body{background-color:var(--background);color:var(--foreground);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) h1{font-size:var(--text-2xl);font-weight:var(--font-weight-medium);line-height:1.5}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) h2{font-size:var(--text-xl);font-weight:var(--font-weight-medium);line-height:1.5}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) h3{font-size:var(--text-lg);font-weight:var(--font-weight-medium);line-height:1.5}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) h4,:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) label,:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) button{font-size:var(--text-base);font-weight:var(--font-weight-medium);line-height:1.5}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) input{font-size:var(--text-base);font-weight:var(--font-weight-normal);line-height:1.5}}@layer utilities{.absolute{position:absolute}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.top-1\\/2{top:50%}.right-2{right:calc(var(--spacing) * 2)}.z-10{z-index:10}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.mx-auto{margin-inline:auto}.mt-0\\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.-mb-px{margin-bottom:-1px}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.block{display:block}.flex{display:flex}.grid{display:grid}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.h-0\\.5{height:calc(var(--spacing) * .5)}.h-3{height:calc(var(--spacing) * 3)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-8{height:calc(var(--spacing) * 8)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-16{height:calc(var(--spacing) * 16)}.h-40{height:calc(var(--spacing) * 40)}.min-h-screen{min-height:100vh}.w-3{width:calc(var(--spacing) * 3)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-8{width:calc(var(--spacing) * 8)}.w-10{width:calc(var(--spacing) * 10)}.w-11{width:calc(var(--spacing) * 11)}.w-12{width:calc(var(--spacing) * 12)}.w-16{width:calc(var(--spacing) * 16)}.w-40{width:calc(var(--spacing) * 40)}.w-full{width:100%}.max-w-5xl{max-width:var(--container-5xl)}.max-w-md{max-width:var(--container-md)}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.translate-x-1{--tw-translate-x: calc(var(--spacing) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-6{--tw-translate-x: calc(var(--spacing) * 6);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x) var(--tw-rotate-y) var(--tw-rotate-z) var(--tw-skew-x) var(--tw-skew-y)}.cursor-pointer{cursor:pointer}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid-rows-8{grid-template-rows:repeat(8,minmax(0,1fr))}.flex-col{flex-direction:column}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-8{gap:calc(var(--spacing) * 8)}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-8{column-gap:calc(var(--spacing) * 8)}.gap-y-4{row-gap:calc(var(--spacing) * 4)}.overflow-hidden{overflow:hidden}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-amber-200{border-color:var(--color-amber-200)}.border-blue-200{border-color:var(--color-blue-200)}.border-blue-600{border-color:var(--color-blue-600)}.border-green-200{border-color:var(--color-green-200)}.border-slate-100{border-color:var(--color-slate-100)}.border-slate-200{border-color:var(--color-slate-200)}.border-slate-300{border-color:var(--color-slate-300)}.border-transparent{border-color:#0000}.bg-amber-50{background-color:var(--color-amber-50)}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-600{background-color:var(--color-blue-600)}.bg-green-50{background-color:var(--color-green-50)}.bg-green-100{background-color:var(--color-green-100)}.bg-green-600{background-color:var(--color-green-600)}.bg-slate-50{background-color:var(--color-slate-50)}.bg-slate-200{background-color:var(--color-slate-200)}.bg-slate-300{background-color:var(--color-slate-300)}.bg-slate-800{background-color:var(--color-slate-800)}.bg-white{background-color:var(--color-white)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\\.5{padding-block:calc(var(--spacing) * 2.5)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-8{padding-block:calc(var(--spacing) * 8)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pl-7{padding-left:calc(var(--spacing) * 7)}.text-center{text-align:center}.text-right{text-align:right}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading, var(--text-xs--line-height))}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.text-amber-600{color:var(--color-amber-600)}.text-blue-600{color:var(--color-blue-600)}.text-green-600{color:var(--color-green-600)}.text-green-700{color:var(--color-green-700)}.text-green-800{color:var(--color-green-800)}.text-red-500{color:var(--color-red-500)}.text-slate-300{color:var(--color-slate-300)}.text-slate-400{color:var(--color-slate-400)}.text-slate-500{color:var(--color-slate-500)}.text-slate-600{color:var(--color-slate-600)}.text-slate-700{color:var(--color-slate-700)}.text-slate-800{color:var(--color-slate-800)}.text-white{color:var(--color-white)}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}@media(hover:hover){.hover\\:bg-blue-50:hover{background-color:var(--color-blue-50)}}@media(hover:hover){.hover\\:bg-blue-700:hover{background-color:var(--color-blue-700)}}@media(hover:hover){.hover\\:bg-green-700:hover{background-color:var(--color-green-700)}}@media(hover:hover){.hover\\:bg-slate-50:hover{background-color:var(--color-slate-50)}}@media(hover:hover){.hover\\:text-slate-600:hover{color:var(--color-slate-600)}}@media(hover:hover){.hover\\:text-slate-800:hover{color:var(--color-slate-800)}}@media(hover:hover){.hover\\:underline:hover{text-decoration-line:underline}}.focus\\:ring-2:focus{--tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\\:ring-blue-500:focus{--tw-ring-color: var(--color-blue-500)}.focus\\:outline-none:focus{--tw-outline-style: none;outline-style:none}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:bg-slate-300:disabled{background-color:var(--color-slate-300)}}:root,:host{--font-size: 16px;--background: #fff;--foreground: oklch(.145 0 0);--card: #fff;--card-foreground: oklch(.145 0 0);--popover: oklch(1 0 0);--popover-foreground: oklch(.145 0 0);--primary: #030213;--primary-foreground: oklch(1 0 0);--secondary: oklch(.95 .0058 264.53);--secondary-foreground: #030213;--muted: #ececf0;--muted-foreground: #717182;--accent: #e9ebef;--accent-foreground: #030213;--destructive: #d4183d;--destructive-foreground: #fff;--border: #0000001a;--input: transparent;--input-background: #f3f3f5;--switch-background: #cbced4;--font-weight-medium: 500;--font-weight-normal: 400;--ring: oklch(.708 0 0);--chart-1: oklch(.646 .222 41.116);--chart-2: oklch(.6 .118 184.704);--chart-3: oklch(.398 .07 227.392);--chart-4: oklch(.828 .189 84.429);--chart-5: oklch(.769 .188 70.08);--radius: .625rem;--sidebar: oklch(.985 0 0);--sidebar-foreground: oklch(.145 0 0);--sidebar-primary: #030213;--sidebar-primary-foreground: oklch(.985 0 0);--sidebar-accent: oklch(.97 0 0);--sidebar-accent-foreground: oklch(.205 0 0);--sidebar-border: oklch(.922 0 0);--sidebar-ring: oklch(.708 0 0)}.dark{--background: oklch(.145 0 0);--foreground: oklch(.985 0 0);--card: oklch(.145 0 0);--card-foreground: oklch(.985 0 0);--popover: oklch(.145 0 0);--popover-foreground: oklch(.985 0 0);--primary: oklch(.985 0 0);--primary-foreground: oklch(.205 0 0);--secondary: oklch(.269 0 0);--secondary-foreground: oklch(.985 0 0);--muted: oklch(.269 0 0);--muted-foreground: oklch(.708 0 0);--accent: oklch(.269 0 0);--accent-foreground: oklch(.985 0 0);--destructive: oklch(.396 .141 25.723);--destructive-foreground: oklch(.637 .237 25.331);--border: oklch(.269 0 0);--input: oklch(.269 0 0);--ring: oklch(.439 0 0);--font-weight-medium: 500;--font-weight-normal: 400;--chart-1: oklch(.488 .243 264.376);--chart-2: oklch(.696 .17 162.48);--chart-3: oklch(.769 .188 70.08);--chart-4: oklch(.627 .265 303.9);--chart-5: oklch(.645 .246 16.439);--sidebar: oklch(.205 0 0);--sidebar-foreground: oklch(.985 0 0);--sidebar-primary: oklch(.488 .243 264.376);--sidebar-primary-foreground: oklch(.985 0 0);--sidebar-accent: oklch(.269 0 0);--sidebar-accent-foreground: oklch(.985 0 0);--sidebar-border: oklch(.269 0 0);--sidebar-ring: oklch(.439 0 0)}html{font-size:var(--font-size);font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}@property --tw-translate-x{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-translate-y{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-translate-z{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-rotate-x{syntax: "*"; inherits: false; initial-value: rotateX(0);}@property --tw-rotate-y{syntax: "*"; inherits: false; initial-value: rotateY(0);}@property --tw-rotate-z{syntax: "*"; inherits: false; initial-value: rotateZ(0);}@property --tw-skew-x{syntax: "*"; inherits: false; initial-value: skewX(0);}@property --tw-skew-y{syntax: "*"; inherits: false; initial-value: skewY(0);}@property --tw-space-y-reverse{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-border-style{syntax: "*"; inherits: false; initial-value: solid;}@property --tw-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: "*"; inherits: false}@property --tw-shadow-alpha{syntax: ""; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: "*"; inherits: false}@property --tw-inset-shadow-alpha{syntax: ""; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: "*"; inherits: false}@property --tw-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: "*"; inherits: false}@property --tw-inset-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: "*"; inherits: false}@property --tw-ring-offset-width{syntax: ""; inherits: false; initial-value: 0;}@property --tw-ring-offset-color{syntax: "*"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}:root,:host{--ddn-bg: #f8fafc;--ddn-surface: #ffffff;--ddn-surface-muted: #f1f5f9;--ddn-border: #e2e8f0;--ddn-border-strong: #cbd5e1;--ddn-text-primary: #0f172a;--ddn-text-secondary: #475569;--ddn-text-muted: #64748b;--ddn-primary: #2563eb;--ddn-primary-strong: #1d4ed8;--ddn-input-bg: #ffffff;--ddn-disabled-bg: #e2e8f0;--ddn-disabled-text: #94a3b8;--ddn-divider: #e2e8f0;--ddn-spinner: #94a3b8}[data-darkmode=true],:host([data-darkmode="true"]){--ddn-bg: #0f172a;--ddn-surface: #111827;--ddn-surface-muted: #1f2937;--ddn-border: #334155;--ddn-border-strong: #475569;--ddn-text-primary: #e5e7eb;--ddn-text-secondary: #cbd5e1;--ddn-text-muted: #94a3b8;--ddn-primary: #3b82f6;--ddn-primary-strong: #2563eb;--ddn-input-bg: #0b1220;--ddn-disabled-bg: #1f2937;--ddn-disabled-text: #64748b;--ddn-divider: #1f2937;--ddn-spinner: #cbd5e1}[data-darkmode=true],:host([data-darkmode="true"]){color:var(--ddn-text-primary)}[data-darkmode=true] .bg-slate-50,:host([data-darkmode="true"]) .bg-slate-50{background-color:var(--ddn-bg)!important}[data-darkmode=true] .bg-white,:host([data-darkmode="true"]) .bg-white{background-color:var(--ddn-surface)!important;color:var(--ddn-text-primary)}[data-darkmode=true] .border-slate-200,:host([data-darkmode="true"]) .border-slate-200,[data-darkmode=true] .border-slate-100,:host([data-darkmode="true"]) .border-slate-100{border-color:var(--ddn-border)!important}[data-darkmode=true] .border-slate-300,:host([data-darkmode="true"]) .border-slate-300{border-color:var(--ddn-border-strong)!important}[data-darkmode=true] .text-slate-800,:host([data-darkmode="true"]) .text-slate-800,[data-darkmode=true] .text-slate-700,:host([data-darkmode="true"]) .text-slate-700{color:var(--ddn-text-primary)!important}[data-darkmode=true] .text-slate-600,:host([data-darkmode="true"]) .text-slate-600,[data-darkmode=true] .text-slate-500,:host([data-darkmode="true"]) .text-slate-500{color:var(--ddn-text-secondary)!important}[data-darkmode=true] .text-slate-400,:host([data-darkmode="true"]) .text-slate-400{color:var(--ddn-text-muted)!important}[data-darkmode=true] .bg-blue-50,:host([data-darkmode="true"]) .bg-blue-50{background-color:#2563eb1f!important;color:var(--ddn-text-primary)}[data-darkmode=true] .bg-emerald-50,:host([data-darkmode="true"]) .bg-emerald-50{background-color:#10b98124!important;color:var(--ddn-text-primary)}[data-darkmode=true] .bg-red-50,:host([data-darkmode="true"]) .bg-red-50{background-color:#f871711f!important;color:var(--ddn-text-primary)}[data-darkmode=true] .border-b,:host([data-darkmode="true"]) .border-b{border-color:var(--ddn-divider)!important}[data-darkmode=true] input,:host([data-darkmode="true"]) input,[data-darkmode=true] select,:host([data-darkmode="true"]) select,[data-darkmode=true] textarea,:host([data-darkmode="true"]) textarea{background-color:var(--ddn-input-bg);color:var(--ddn-text-primary)}[data-darkmode=true] .animate-spin,:host([data-darkmode="true"]) .animate-spin{border-color:var(--ddn-spinner)!important}',Nf=".ddnsto-host{padding:16px 20px;background-color:#f8fafc;border-radius:16px;overflow:hidden}.ddnsto-host[data-darkmode=true]{background-color:#0b1220}.ddnsto-host #app{display:block}",jf='.ddnsto-toggle-container{display:inline-flex;align-items:center}.ddnsto-toggle-switch{position:relative;display:inline-block;width:44px;height:22px;cursor:pointer}.ddnsto-toggle-switch input{opacity:0;width:0;height:0;position:absolute;inset:0;margin:0}.ddnsto-toggle-slider{position:absolute;cursor:pointer;inset:0;background-color:#e5e7eb;transition:.2s ease;border-radius:22px;border:1px solid #cbd5e1;box-shadow:0 1px 2px #0000000a inset}.ddnsto-toggle-slider:before{position:absolute;content:"";height:16px;width:16px;left:2px;top:2px;background-color:#fff;transition:.2s ease;border-radius:50%;box-shadow:0 1px 2px #0003}.ddnsto-toggle-switch input:checked+.ddnsto-toggle-slider{background-color:#3b82f6;border-color:#3b82f6}.ddnsto-toggle-switch input:checked+.ddnsto-toggle-slider:before{transform:translate(22px)}.ddnsto-toggle-switch input:focus-visible+.ddnsto-toggle-slider{box-shadow:0 0 0 3px #3b82f640}.ddnsto-toggle-switch input:disabled+.ddnsto-toggle-slider{opacity:.6;cursor:not-allowed}',zf=".ddnsto-btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.625rem 1.25rem;border-radius:.5rem;border:1px solid transparent;font-size:.875rem;font-weight:600;line-height:1.2;text-decoration:none;cursor:pointer;transition:background-color .15s ease,color .15s ease,box-shadow .15s ease,border-color .15s ease;user-select:none}.ddnsto-btn:focus-visible{outline:2px solid #2563eb;outline-offset:2px}.ddnsto-btn-primary{background-color:var(--ddn-primary);color:#fff;border-color:var(--ddn-primary-strong);box-shadow:0 1px 2px #00000014}.ddnsto-btn-primary:hover:not(:disabled){background-color:var(--ddn-primary-strong)}.ddnsto-btn-primary:active:not(:disabled){background-color:#1e3a8a}.ddnsto-btn:disabled,.ddnsto-btn[aria-disabled=true]{background-color:var(--ddn-disabled-bg);border-color:var(--ddn-border);color:var(--ddn-disabled-text);cursor:not-allowed;box-shadow:none}.ddnsto-btn-icon{width:1rem;height:1rem}",Pf="ddnsto-theme",Tf=y=>{const E=y.match(/\d+/g);if(E&&E.length>=3)return{r:parseInt(E[0],10),g:parseInt(E[1],10),b:parseInt(E[2],10)};if(y.startsWith("#")){const d=y.replace("#","");if(d.length===3)return{r:parseInt(d[0]+d[0],16),g:parseInt(d[1]+d[1],16),b:parseInt(d[2]+d[2],16)};if(d.length===6)return{r:parseInt(d.slice(0,2),16),g:parseInt(d.slice(2,4),16),b:parseInt(d.slice(4,6),16)}}return null},Rf=()=>{try{const y=localStorage.getItem(Pf);if(y==="dark"||y==="light")return y}catch{}if(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches)return"dark";try{const y=getComputedStyle(document.body).backgroundColor,E=Tf(y);if(E)return .2126*E.r+.7152*E.g+.0722*E.b<128?"dark":"light"}catch{}return"light"},bl=(y,E)=>{y&&(E==="dark"?y.setAttribute("data-darkmode","true"):y.removeAttribute("data-darkmode"))},jr={token:"",prefix:"",api_base:"/cgi-bin/luci",lang:"zh-cn",onboarding_base:"https://web.ddnsto.com/openwrt-bind"},zr=typeof window<"u"&&window.ddnstoConfig||{},Lf={token:zr.token??jr.token,prefix:zr.prefix??jr.prefix,api_base:zr.api_base??jr.api_base,lang:zr.lang??jr.lang,onboarding_base:zr.onboarding_base??jr.onboarding_base},gt=document.getElementById("root")||document.getElementById("app"),If=()=>{if(!document.head.querySelector("style[data-ddnsto-host]")){const y=document.createElement("style");y.setAttribute("data-ddnsto-host","true"),y.textContent=Nf,document.head.appendChild(y)}},Mf=gt?.hasAttribute("data-ddnsto-shadow")||gt?.dataset.shadow==="true";let Ui=gt;const Ul=typeof window<"u"?Rf():"light";if(gt){If();const y=`${Cf} ${jf} ${zf}`;if(Mf&>.attachShadow){const E=gt.shadowRoot||gt.attachShadow({mode:"open"});if(!E.querySelector("style[data-ddnsto-style]")){const d=document.createElement("style");d.setAttribute("data-ddnsto-style","true"),d.textContent=y,E.appendChild(d)}Ui=E,bl(gt,Ul),bl(gt.parentElement,Ul)}else{if(!document.head.querySelector("style[data-ddnsto-style]")){const E=document.createElement("style");E.setAttribute("data-ddnsto-style","true"),E.textContent=y,document.head.appendChild(E)}bl(gt,Ul),bl(gt.parentElement,Ul)}Ui&&qd.createRoot(Ui).render(m.jsx(Kd.StrictMode,{children:m.jsx(Ef,{config:Lf})}))} ================================================ FILE: luci-app-eqosplus/Makefile ================================================ # # Copyright (C) 2006-2017 OpenWrt.org# # Copyright (C) 2022-2025 sirpdboy herboy2008@gmail.com https://github.com/sirpdboy/luci-app-eqosplus # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. # include $(TOPDIR)/rules.mk THEME_NAME:=eqosplus PKG_NAME:=luci-app-$(THEME_NAME) PKG_LICENSE:=Apache-2.0 LUCI_TITLE:=LuCI support for eqosplus. LUCI_DESCRIPTION:=LuCI support for Easy eqosplus(Support speed limit based on IP address). LUCI_DEPENDS:=+ip-full +tc +nftables +bc +kmod-ifb LUCI_PKGARCH:=all PKG_VERSION:=1.3.0 PKG_RELEASE:=20251128 PKG_MAINTAINER:=sirpdboy define Build/Compile endef define Package/$(PKG_NAME)/postinst #!/bin/sh rm -f /tmp/luci-* endef define Package/$(PKG_NAME)/conffiles /etc/config/eqosplus endef include $(TOPDIR)/feeds/luci/luci.mk # call BuildPackage - OpenWrt buildroot signature ================================================ FILE: luci-app-eqosplus/luasrc/controller/eqosplus.lua ================================================ module("luci.controller.eqosplus", package.seeall) -- Copyright 2022-2023 sirpdboy function index() if not nixio.fs.access("/etc/config/eqosplus") then return end entry({"admin", "control"}, firstchild(), "Control", 44).dependent = false local e = entry({"admin", "control", "eqosplus"}, cbi("eqosplus"), _("Eqosplus"), 10) e.dependent=false e.acl_depends = { "luci-app-eqosplus" } entry({"admin", "control", "eqosplus", "status"}, call("act_status")).leaf = true end function act_status() local sys = require "luci.sys" local e = {} e.status = sys.call(" busybox ps -w | grep eqosplus | grep -v grep >/dev/null ") == 0 luci.http.prepare_content("application/json") luci.http.write_json(e) end ================================================ FILE: luci-app-eqosplus/luasrc/model/cbi/eqosplus.lua ================================================ -- Copyright 2022-2023 sirpdboy -- Licensed to the public under the Apache License 2.0. local sys = require "luci.sys" local ifaces = sys.net:devices() local WADM = require "luci.tools.webadmin" local ipc = require "luci.ip" local a, t, e a = Map("eqosplus", translate("Network speed limit")) a.description = translate("Users can limit the network speed for uploading/downloading through MAC, IP, and IP segments (192.168.110.00-192.168.10.200). The speed unit is MB/second.") a.template = "eqosplus/index" t = a:section(TypedSection, "eqosplus") t.anonymous = true e = t:option(DummyValue, "eqosplus_status", translate("Status")) e.template = "eqosplus/eqosplus" e.value = translate("Collecting data...") ipi = t:option(ListValue, "ifname", translate("Interface"), translate("Set the interface used for restriction, use pppoe-wan for dialing, use WAN hardware interface for DHCP mode (such as eth1), and use br-lan for bypass mode")) ipi.default = "1" ipi:value(1,translate("Automatic settings")) ipi:value("br-lan", translate("br-lan (LAN Bridge)")) local function get_wan_interfaces() local result = {} local ubus = require "ubus" local conn = ubus.connect() if not conn then return result end local network_status = conn:call("network.interface", "dump", {}) for _, iface in ipairs(network_status.interface) do if iface.interface:match("^wan") or iface.interface:match("^pppoe") or iface.proto == "pppoe" then local dev = iface.l3_device or iface.device if dev then table.insert(result, { name = dev, proto = iface.proto, logical_name = iface.interface }) end end end conn:close() return result end local wan_ifaces = get_wan_interfaces() for _, iface in ipairs(wan_ifaces) do ipi:value(iface.name, translate(iface.name) .. (iface.proto == "pppoe" and " (PPPoE)" or " (WAN)")) end t = a:section(TypedSection, "device") t.template = "cbi/tblsection" t.anonymous = true t.addremove = true comment = t:option(Value, "comment", translate("Comment")) comment.size = 8 e = t:option(Flag, "enable", translate("Enabled")) e.rmempty = false e.size = 4 ip = t:option(Value, "mac", translate("IP/MAC")) ip.size = 8 local function get_devices() local devices = {} local seen_ips = {} local ubus = require "ubus" local conn = ubus.connect() local function get_hostname(ip) local f = io.popen("nslookup "..ip.." 2>/dev/null | grep 'name =' | cut -d'=' -f2 | sed 's/\\.$//'") if f then local name = f:read("*l") f:close() if name and name ~= "" then return name:match("^%s*(.-)%s*$") end end local leases_file = io.open("/tmp/dhcp.leases", "r") if leases_file then for line in leases_file:lines() do local mac, ip_lease, _, hostname = line:match("^(%S+)%s+(%S+)%s+(%S+)%s+(%S+)") if ip_lease == ip and hostname ~= "*" then leases_file:close() return hostname end end leases_file:close() end return "unknown" end if conn then local leases = conn:call("dhcp", "ipv4leases", {}) or {} for _, lease in ipairs(leases) do if lease.ipaddr and lease.mac then local hostname = lease.hostname or get_hostname(lease.ipaddr) devices[#devices+1] = { ip = lease.ipaddr, mac = lease.mac:upper(), hostname = hostname, display = string.format("%s (%s) - %s", lease.ipaddr, lease.mac:upper(), hostname) } seen_ips[lease.ipaddr] = true end end conn:close() end local arp_cmd = io.popen("ip -4 neigh show dev br-lan 2>/dev/null") if arp_cmd then for line in arp_cmd:lines() do local ip_addr, mac = line:match("^(%S+)%s+.+%s+(%S+)%s+") if ip_addr and mac and mac ~= "00:00:00:00:00:00" and not seen_ips[ip_addr] then mac = mac:upper() local hostname = get_hostname(ip_addr) devices[#devices+1] = { ip = ip_addr, mac = mac, hostname = hostname, display = string.format("%s (%s) - %s", ip_addr, mac, hostname) } seen_ips[ip_addr] = true end end arp_cmd:close() end table.sort(devices, function(a, b) return a.ip < b.ip end) return devices end local devices = get_devices() for _, dev in ipairs(devices) do ip:value(dev.ip, dev.display) end dl = t:option(Value, "download", translate("Downloads")) dl.default = '0.1' dl.size = 4 ul = t:option(Value, "upload", translate("Uploads")) ul.default = '0.1' ul.size = 4 function validate_time(self, value, section) local hh, mm, ss hh, mm, ss = string.match (value, "^(%d?%d):(%d%d)$") hh = tonumber (hh) mm = tonumber (mm) if hh and mm and hh <= 23 and mm <= 59 then return value else return nil, "Time HH:MM or space" end end e = t:option(Value, "timestart", translate("Start control time")) e.placeholder = '00:00' e.default = '00:00' e.validate = validate_time e.rmempty = true e.size = 4 e = t:option(Value, "timeend", translate("Stop control time")) e.placeholder = '00:00' e.default = '00:00' e.validate = validate_time e.rmempty = true e.size = 4 week=t:option(Value,"week",translate("Week Day(1~7)")) week.rmempty = true week:value('0',translate("Everyday")) week:value(1,translate("Monday")) week:value(2,translate("Tuesday")) week:value(3,translate("Wednesday")) week:value(4,translate("Thursday")) week:value(5,translate("Friday")) week:value(6,translate("Saturday")) week:value(7,translate("Sunday")) week:value('1,2,3,4,5',translate("Workday")) week:value('6,7',translate("Rest Day")) week.default='0' week.size = 6 return a ================================================ FILE: luci-app-eqosplus/luasrc/view/eqosplus/eqosplus.htm ================================================ <%+cbi/valueheader%> <%=pcdata(self:cfgvalue(section) or self.default or "")%> <%+cbi/valuefooter%> ================================================ FILE: luci-app-eqosplus/luasrc/view/eqosplus/index.htm ================================================ <% include("cbi/map") %> ================================================ FILE: luci-app-eqosplus/po/templates/eqosplus.pot ================================================ msgid "Eqosplus" msgstr "" msgid "Network speed limit" msgstr "" msgid "Running state" msgstr "" msgid "Not running" msgstr "" msgid "Running" msgstr "" msgid "Users can limit the network speed for uploading/downloading through MAC, IP, and IP segments (192.168.110.00-192.168.10.200). The speed unit is MB/second." msgstr "" msgid "MAC/IP" msgstr "" msgid "Downloads" msgstr "" msgid "Uploads" msgstr "" msgid "Comment" msgstr "" msgid "Upload bandwidth(Mbit/s)" msgstr "" msgid "Download bandwidth(Mbit/s)" msgstr "" msgid "Start control time" msgstr "" msgid "Stop control time" msgstr "" msgid "Week Day(1~7)" msgstr "" msgid "Suggested feedback:" msgstr "" msgid "Set the interface used for restriction, use pppoe-wan for dialing, use WAN hardware interface for DHCP mode (such as eth1), and use br-lan for bypass mode" msgstr "" msgid "Rest Day" msgstr "" msgid "Workday" msgstr "" msgid "Automatic settings" msgstr "" ================================================ FILE: luci-app-eqosplus/po/zh_Hans/eqosplus.po ================================================ msgid "Eqosplus" msgstr "定时限速" msgid "Network speed limit" msgstr "定时网速限制" msgid "Running state" msgstr "运行状态" msgid "Not running" msgstr "未运行" msgid "Running" msgstr "已运行" msgid "Users can limit the network speed for uploading/downloading through MAC, IP, and IP segments (192.168.110.00-192.168.10.200). The speed unit is MB/second." msgstr "用户可以通过MAC、IP、IP段(192.168.10.100-192.168.10.200),限制上传/下载的网络速度。速度单位为MB/秒。。" msgid "MAC/IP" msgstr "MAC/IP" msgid "Downloads" msgstr "下载速度" msgid "Uploads" msgstr "上传速度" msgid "Comment" msgstr "备注" msgid "Upload bandwidth(Mbit/s)" msgstr "上传总带宽(Mbit/s)" msgid "Download bandwidth(Mbit/s)" msgstr "下载总带宽(Mbit/s)" msgid "Start control time" msgstr "起控时间" msgid "Stop control time" msgstr "停控时间" msgid "Week Day(1~7)" msgstr "星期(1~7)" msgid "Suggested feedback:" msgstr "建议反馈:" msgid "Set the interface used for restriction, use pppoe-wan for dialing, use WAN hardware interface for DHCP mode (such as eth1), and use br-lan for bypass mode" msgstr "设定用来限制网络速度的接口,拨号使用pppoe-wan,DHCP模式使用WAN口的硬件接口(如:eth1),通用使用br-lan接口" msgid "Rest Day" msgstr "休息日" msgid "Workday" msgstr "工作日" msgid "Automatic settings" msgstr "自动设置" ================================================ FILE: luci-app-eqosplus/root/etc/config/eqosplus ================================================ config eqosplus option enabled '0' option download '1000' option upload '30' option ifname '1' config device option timestart '00:00' option week '0' option download '1' option timeend '23:55' option upload '1' option mac '192.168.10.10' option enable '0' config device option mac '192.168.10.10-192.168.10.200' option timestart '00:00' option timeend '00:00' option week '0' option download '0.1' option upload '0.1' option enable '0' ================================================ FILE: luci-app-eqosplus/root/etc/hotplug.d/iface/10-eqosplus ================================================ #!/bin/sh [ "$ACTION" = "ifup" ] && [ "$INTERFACE" = "wan" ] && { sleep 5 /etc/init.d/eqosplus restart } ================================================ FILE: luci-app-eqosplus/root/etc/init.d/eqosplus ================================================ #!/bin/sh /etc/rc.common # # Copyright (C) 2025 sirpdboy herboy2008@gmail.com https://github.com/sirpdboy/luci-app-eqosplus # START=99 USE_PROCD=1 NAME=eqosplus LOCK="/var/lock/$NAME.lock" CR=/etc/crontabs/root start_instance() { procd_open_instance procd_set_param command /usr/bin/eqosplusctrl procd_set_param respawn procd_set_param stderr 1 procd_close_instance } _eqosplus_start() { if [ "$(grep -c 'option enable .1.' /etc/config/$NAME 2>/dev/null)" -gt "0" ]; then if [ x$(uci -q get turboacc.config.sw_flow) = 'x1' ] || [ x$(uci -q get turboacc.config.sfe_flow) = 'x1' ] ;then uci -q set turboacc.config.sw_flow='0' uci -q set turboacc.config.sfe_flow='0' uci -q set turboacc.config.hw_flow='0' uci commit turboacc /etc/init.d/turboacc restart fi touch $LOCK eqosplus start start_instance (crontab -l ; echo "00 1 * * * /etc/init.d/eqosplus start") | sort - | uniq - | crontab - fi } start_service(){ [ -f $LOCK ] && exit stop_service _eqosplus_start rm -f $LOCK } service_triggers() { procd_add_reload_trigger 'eqosplus' } stop_service(){ kill -9 $(busybox ps -w | grep 'eqosplusctrl' | grep -v 'grep' | awk '{print $1}') >/dev/null 2>&1 sed -i '/eqosplus/d' $CR >/dev/null 2>&1 rm -f $LOCK 2>/dev/null eqosplus stop } ================================================ FILE: luci-app-eqosplus/root/etc/uci-defaults/luci-eqosplus ================================================ #!/bin/sh chmod +x /etc/init.d/eqosplus /usr/bin/eqosplus* uci -q batch <<-EOF >/dev/null delete ucitrack.@eqosplus[-1] add ucitrack eqosplus set ucitrack.@eqosplus[-1].init=eqosplus commit ucitrack EOF [ -s /etc/config/eqosplus ] || echo "config eqosplus" > /etc/config/eqosplus rm -f /tmp/luci-indexcache exit 0 ================================================ FILE: luci-app-eqosplus/root/usr/bin/eqosplus ================================================ #!/bin/bash # Copyright (C) 2006 OpenWrt.org # Copyright 2022-2025 sirpdboy crrun=$1 crid=$2 NAME=eqosplus IDLIST="/var/$NAME.idlist" LOCK="/var/lock/$NAME.lock" TMPID="/var/$NAME.tmpid" LOG="/var/$NAME_log.log" # idlist=`uci show $NAME | grep "enable='1'" | grep "device" | grep -oE '\[.*?\]' | grep -o '[0-9]' ` if [ x$(uci get $NAME.@$NAME[0].ifname 2>/dev/null) = 'x1' ]; then ifname=$(uci -q get network.lan.ifname) [ "x$ifname" = "x" ] && ifname="device" || ifname="ifname" dev=$(uci -q get network.wan.$ifname) [ ! "$dev" ] && dev=br-lan else dev=$(uci -q get $NAME.@$NAME[0].ifname 2>/dev/null) [ ! "$dev" ] && dev=br-lan fi bin_nft=$(which nft) bin_tc=$(which tc) bin_ip=$(which ip) DEBUG=1 nft_type() { if command -v nft >/dev/null; then nftables_ver="true" fi } # Debug functions dbg_nft() { [ "${DEBUG:-0}" -eq 0 ] || echo "DEBUG: nft $*" $bin_nft "$@" } dbg_tc() { [ "${DEBUG:-0}" -eq 0 ] || echo "DEBUG: tc $*" $bin_tc "$@" } dbg_ip() { [ "${DEBUG:-0}" -eq 0 ] || echo "DEBUG: ip $*" $bin_ip "$@" } is_macaddr() { ret=1 if echo "$1" | grep -qE '^([0-9A-Fa-f]{2}[-:]){5}[0-9A-Fa-f]{2}$'; then ret=0 fi return $ret } # 数值比较函数 is_gt_zero() { local value=$1 # 使用bc进行浮点数比较 echo "$value > 0" | bc -l 2>/dev/null | grep -q 1 } # 转换为kbit to_kbit() { local mb=$1 # MB/s 转 kbit/s: 1 MB/s = 8192 kbit/s echo "scale=0; $mb * 8192 / 1" | bc 2>/dev/null || echo "0" } # Default commands tc="dbg_tc" ip="dbg_ip" nft="dbg_nft" nft_type stop_qos() { for face in $(tc qdisc show 2>/dev/null | grep htb | awk '{print $5}'); do $tc qdisc del dev $face root 2>/dev/null done $tc qdisc del dev ${dev} root 2>/dev/null $tc qdisc del dev ${dev}_ifb root 2>/dev/null $tc qdisc del dev ${dev} ingress 2>/dev/null $ip link del dev ${dev}_ifb 2>/dev/null 2>&1 if [ -n "$nftables_ver" ]; then $nft delete table inet ${NAME} 2>/dev/null $nft delete table bridge ${NAME} 2>/dev/null fi echo "" > "$IDLIST" 2>/dev/null } init_qosplus() { insmod sch_htb 2>/dev/null insmod act_mirred 2>/dev/null insmod ifb 2>/dev/null $ip link del dev ${dev}_ifb 2>/dev/null $ip link add dev ${dev}_ifb name ${dev}_ifb type ifb $ip link set dev ${dev}_ifb up $tc qdisc del dev ${dev} root 2>/dev/null $tc qdisc add dev ${dev} root handle 1:0 htb default 1 $tc class add dev ${dev} parent 1:0 classid 1:1 htb rate 1000mbit ceil 1000mbit $tc qdisc del dev ${dev}_ifb root 2>/dev/null $tc qdisc add dev ${dev}_ifb root handle 1:0 htb default 1 $tc class add dev ${dev}_ifb parent 1:0 classid 1:1 htb rate 1000mbit ceil 1000mbit lanipaddr=$(uci -q get network.lan.ipaddr 2>/dev/null | awk -F '.' '{print $1"."$2"."$3".0/24"}') if [ -n "$lanipaddr" ]; then $tc filter add dev $dev parent 1:0 protocol ip prio 1 u32 match ip src "$lanipaddr" match ip dst "$lanipaddr" flowid 1:1 $tc filter add dev ${dev}_ifb parent 1:0 protocol ip prio 1 u32 match ip src "$lanipaddr" match ip dst "$lanipaddr" flowid 1:1 fi $tc qdisc del dev ${dev} ingress 2>/dev/null $tc qdisc add dev ${dev} ingress $tc filter add dev ${dev} parent ffff: protocol all prio 2 u32 match u32 0 0 flowid 1:1 action mirred egress redirect dev ${dev}_ifb if [ -n "$nftables_ver" ]; then $nft delete table inet ${NAME} 2>/dev/null $nft delete table bridge ${NAME} 2>/dev/null $nft add table inet ${NAME} $nft add chain inet ${NAME} mark_forward { type filter hook forward priority -200\; policy accept\; } $nft add chain inet ${NAME} mark_output { type filter hook output priority -200\; policy accept\; } $nft add chain inet ${NAME} mark_postrouting { type filter hook postrouting priority -200\; policy accept\; } fi return 0 } del_id() { local list_id=$1 id=$((list_id * 10 + 1000)) [ "${DEBUG:-0}" -eq 0 ] || echo "D: del_id $@ --$id --$mac" $tc filter del dev ${dev} parent 1: handle 800::$(printf "%x" $id) 2>/dev/null $tc class del dev ${dev} parent 1:1 classid 1:$id 2>/dev/null $tc filter del dev ${dev}_ifb parent 1: handle 800::$(printf "%x" $id) 2>/dev/null $tc class del dev ${dev}_ifb parent 1:1 classid 1:$id 2>/dev/null mac=$(uci -q get $NAME.@device[$list_id].mac 2>/dev/null) if [ -n "$nftables_ver" ] && [ -n "$mac" ]; then if is_macaddr "$mac"; then $nft delete rule inet ${NAME} mark_forward ether saddr $mac counter 2>/dev/null $nft delete rule inet ${NAME} mark_output ether saddr $mac counter 2>/dev/null $nft delete rule inet ${NAME} mark_postrouting ether saddr $mac counter 2>/dev/null else Z=$(echo $mac | awk -F '[/]' '{print $2}') [ -n "$Z" ] && mac=$(echo $mac | awk -F '[/]' '{print $1}') || Z=32 $nft delete rule inet ${NAME} mark_forward ip saddr $mac/$Z counter 2>/dev/null $nft delete rule inet ${NAME} mark_output ip saddr $mac/$Z counter 2>/dev/null $nft delete rule inet ${NAME} mark_postrouting ip saddr $mac/$Z counter 2>/dev/null fi fi } add_mac() { local list_id=$1 id=$((list_id * 10 + 1000)) M0=$(echo $mac | cut -d : -f 1)$(echo $mac | cut -d : -f 2) M1=$(echo $mac | cut -d : -f 3)$(echo $mac | cut -d : -f 4) M2=$(echo $mac | cut -d : -f 5)$(echo $mac | cut -d : -f 6) [ "${DEBUG:-0}" -eq 0 ] || echo "D: add_mac $@ --id:$id --mac:$mac M012--$M0-$M1-$M2" if is_gt_zero "$UL"; then if [ -n "$nftables_ver" ]; then $nft add rule inet ${NAME} mark_forward ether saddr $mac counter meta mark set $id $nft add rule inet ${NAME} mark_output ether saddr $mac counter meta mark set $id $nft add rule inet ${NAME} mark_postrouting ether saddr $mac counter meta mark set $id fi $tc class add dev ${dev}_ifb parent 1:1 classid 1:$id htb rate "${UL}kbit" ceil "${UL}kbit" prio $id burst 15k cburst 15k $tc qdisc add dev ${dev}_ifb parent 1:$id handle ${id}: sfq perturb 10 $tc filter add dev ${dev}_ifb parent 1: protocol ip prio $id handle $id fw flowid 1:$id $tc filter add dev ${dev}_ifb parent 1: protocol ip prio $((id + 100)) u32 \ match u16 0x0800 0xFFFF at -2 \ match u16 0x${M2} 0xFFFF at -4 \ match u32 0x${M0}${M1} 0xFFFFFFFF at -8 \ flowid 1:$id fi if is_gt_zero "$DL"; then $tc class add dev ${dev} parent 1:1 classid 1:$id htb rate "${DL}kbit" ceil "${DL}kbit" prio $id burst 15k cburst 15k $tc qdisc add dev ${dev} parent 1:$id handle ${id}: sfq perturb 10 $tc filter add dev ${dev} parent 1: protocol ip prio $id u32 \ match u16 0x0800 0xFFFF at -2 \ match u32 0x${M1}${M2} 0xFFFFFFFF at -12 \ match u16 0x${M0} 0xFFFF at -14 \ flowid 1:$id fi } add_ip() { local list_id=$1 id=$((list_id * 10 + 1000)) [ "${DEBUG:-0}" -eq 0 ] || echo "D: add_ip $@ --$id --$mac" Z=$(echo $mac | awk -F '[/]' '{print $2}') [ -n "$Z" ] && mac=$(echo $mac | awk -F '[/]' '{print $1}') || Z=32 if is_gt_zero "$UL"; then if [ -n "$nftables_ver" ]; then $nft add rule inet ${NAME} mark_forward ip saddr $mac/$Z counter meta mark set $id $nft add rule inet ${NAME} mark_output ip saddr $mac/$Z counter meta mark set $id $nft add rule inet ${NAME} mark_postrouting ip saddr $mac/$Z counter meta mark set $id fi $tc class add dev ${dev}_ifb parent 1:1 classid 1:$id htb rate "${UL}kbit" ceil "${UL}kbit" prio $id burst 15k cburst 15k $tc qdisc add dev ${dev}_ifb parent 1:$id handle ${id}: sfq perturb 10 $tc filter add dev ${dev}_ifb parent 1: protocol ip prio $id handle $id fw flowid 1:$id $tc filter add dev ${dev}_ifb parent 1:0 prio $((id + 100)) protocol ip u32 \ match ip src "$mac"/"$Z" \ flowid 1:$id fi if is_gt_zero "$DL"; then $tc class add dev ${dev} parent 1:1 classid 1:$id htb rate "${DL}kbit" ceil "${DL}kbit" prio $id burst 15k cburst 15k $tc qdisc add dev ${dev} parent 1:$id handle ${id}: sfq perturb 10 $tc filter add dev ${dev} parent 1:0 prio $id protocol ip u32 \ match ip dst "$mac"/"$Z" \ flowid 1:$id fi } check_time() { local start=$1 local end=$2 local current=$(date +%H%M) local start_min=$((10#${start:0:2}*60 + 10#${start:3:2})) local end_min=$((10#${end:0:2}*60 + 10#${end:3:2})) local current_min=$((10#${current:0:2}*60 + 10#${current:2:2})) if [[ $start_min -lt $end_min ]]; then [[ $current_min -ge $start_min && $current_min -lt $end_min ]] else [[ $current_min -ge $start_min || $current_min -lt $end_min ]] fi } check_list() { local i=$1 local start_time=$(uci -q get $NAME.@device[$i].timestart 2>/dev/null) local end_time=$(uci -q get $NAME.@device[$i].timeend 2>/dev/null) local wweek=$(uci -q get $NAME.@device[$i].week 2>/dev/null) local current_weekday=$(date +%u) [ -z "$start_time" ] && [ -z "$end_time" ] && [ -z "$wweek" ] && return 0 if [ -n "$wweek" ] && [ "$wweek" != "0" ]; then local day_match=0 for day in $(echo $wweek | tr ',' ' '); do [ "$day" -eq "$current_weekday" ] && day_match=1 && break done [ "$day_match" -eq 0 ] && return 1 fi if [ -n "$start_time" ] && [ -n "$end_time" ]; then check_time "$start_time" "$end_time" || return 1 fi return 0 } case "$crrun" in "stop") stop_qos ;; "start") stop_qos > /dev/null 2>&1 sleep 2 init_qosplus idlist=$(uci show $NAME 2>/dev/null | grep "enable='1'" | grep "device" | grep -oE '\[.*?\]' | grep -o '[0-9]' | sort -nu | sed -e 's/^/!/g' -e 's/$/!/g' > $IDLIST; cat $IDLIST 2>/dev/null | sed -e 's/!//g') if [ ! -s "$IDLIST" ]; then return 1 fi device_count=0 for list in $(echo $idlist | sed -e 's/!//g'); do if check_list $list; then mac=$(uci -q get $NAME.@device[$list].mac 2>/dev/null) download_mb=$(uci -q get $NAME.@device[$list].download 2>/dev/null) upload_mb=$(uci -q get $NAME.@device[$list].upload 2>/dev/null) comment=$(uci -q get $NAME.@device[$list].comment 2>/dev/null) # 转换为kbit DL=$(to_kbit "$download_mb") UL=$(to_kbit "$upload_mb") if [ -n "$mac" ]; then if is_macaddr "$mac"; then add_mac $list >>$LOG echo "✅ MAC限速: $comment ($mac) - 下载:${download_mb}MB/s(${DL}kbit/s) 上传:${upload_mb}MB/s(${UL}kbit/s)" >>$LOG else add_ip $list >>$LOG echo "✅ IP限速: $comment ($mac) - 下载:${download_mb}MB/s(${DL}kbit/s) 上传:${upload_mb}MB/s(${UL}kbit/s)" >>$LOG fi device_count=$((device_count + 1)) fi else [ -f "$IDLIST" ] && [ $(grep "!${list}!" "$IDLIST" 2>/dev/null | wc -l) -gt 0 ] && { del_id $list >>$LOG sed -i "/!$list!/d" "$IDLIST" >/dev/null 2>&1 comment=$(uci -q get $NAME.@device[$list].comment 2>/dev/null) } fi done echo "EQOSPLUS限速服务启动完成,共配置 $device_count 个设备" >>$LOG echo "" echo "当前限速状态:" >>$LOG tc -s class show dev $dev | grep "rate" | head -5 >>$LOG tc -s class show dev ${dev}_ifb | grep "rate" | head -5 >>$LOG ;; "add") echo "➕ 添加限速规则..." for list in $(echo $crid | sed -e 's/!//g' | sed 's/,/ /g'); do mac=$(uci -q get $NAME.@device[$list].mac 2>/dev/null) download_mb=$(uci -q get $NAME.@device[$list].download 2>/dev/null) upload_mb=$(uci -q get $NAME.@device[$list].upload 2>/dev/null) comment=$(uci -q get $NAME.@device[$list].comment 2>/dev/null) DL=$(to_kbit "$download_mb") UL=$(to_kbit "$upload_mb") if is_macaddr $mac; then add_mac $list echo "✅ 添加MAC限速: $comment ($mac)" >>$LOG else add_ip $list echo "✅ 添加IP限速: $comment ($mac)" >>$LOG fi done ;; "del") for list in $(echo $crid | sed -e 's/!//g' | sed 's/,/ /g'); do comment=$(uci -q get $NAME.@device[$list].comment 2>/dev/null) mac=$(uci -q get $NAME.@device[$list].mac 2>/dev/null) del_id $list done ;; "status") echo "EQOSPLUS限速服务状态" echo "### 网络接口: $dev ###" echo "# 下载队列统计 #" tc -s qdisc show dev $dev 2>/dev/null || echo "无下载队列" echo "# 下载类统计 #" tc -s class show dev $dev 2>/dev/null | grep -E "class htb|rate [0-9]" || echo "无下载类" echo "# 下载过滤器 #" tc -s filter show dev $dev parent 1: 2>/dev/null | head -10 || echo "无下载过滤器" echo "### 虚拟接口: ${dev}_ifb ###" echo "# 上传队列统计 #" tc -s qdisc show dev ${dev}_ifb 2>/dev/null || echo "无上传队列" echo "# 上传类统计 #" tc -s class show dev ${dev}_ifb 2>/dev/null | grep -E "class htb|rate [0-9]" || echo "无上传类" echo "# 上传过滤器 #" tc -s filter show dev ${dev}_ifb parent 1: 2>/dev/null | head -10 || echo "无上传过滤器" if [ -n "$nftables_ver" ]; then echo "### NFTables规则 ###" nft list table inet ${NAME} 2>/dev/null || echo "没有NFTables规则" else echo "NFTables不可用" fi # 显示流量统计 echo "### 流量统计 ###" echo "下载流量:" tc -s class show dev $dev 2>/dev/null | grep "Sent" | head -5 echo "上传流量:" tc -s class show dev ${dev}_ifb 2>/dev/null | grep "Sent" | head -5 ;; esac ================================================ FILE: luci-app-eqosplus/root/usr/bin/eqosplusctrl ================================================ #!/bin/sh # Copyright (C) 2006 OpenWrt.org # Copyright 2022-2025 sirpdboy NAME=eqosplus IDLIST="/var/$NAME.idlist" TMPID="/var/$NAME.tmpid" idlist=`uci show $NAME | grep "enable='1'" | grep "device" | grep -oE '\[.*?\]' | grep -o '[0-9]' ` check_list() { i=$1 checki='0' start_time=$(uci -q get $NAME.@device[$i].timestart 2>/dev/null) end_time=$(uci -q get $NAME.@device[$i].timeend 2>/dev/null) wweek=`uci -q get $NAME.@device[$i].week ` current_time=$(date +%H:%M) current_weekday=$(date +%u) for ww in `echo $wweek | sed 's/,/ /g' `; do if [ $current_weekday = $ww ] || [ 'x0' = x$ww ] ;then [ "$start_time" = "$end_time" ] && checki='1' || { if [ "$start_time" \< "$end_time" ]; then if [ "$current_time" \> "$start_time" ] && [ "$current_time" \< "$end_time" ] ; then checki='1' fi else if [ "$start_time" \> "$end_time" ] ; then if [ "$current_time" \< "$start_time" ] && [ "$current_time" \> "$end_time" ] ; then checki='1' fi fi fi } fi done return } idlistusr(){ checki='0' [ -s $IDLIST ] || touch $IDLIST for list in $idlist ;do check_list $list if [ $checki == '1' ] ; then [ `cat $IDLIST 2>/dev/null | grep "!${list}!" | wc -l ` -gt 0 ] || { eqosplus add $list echo "!${list}!" >> $IDLIST ; cat $IDLIST | sort | uniq > $TMPID ;cat $TMPID >$IDLIST ;rm -rf $TMPID } else [ `cat $IDLIST 2>/dev/null | grep "!${list}!" | wc -l ` -gt 0 ] && { eqosplus del $list sed -i "/!$list!/d" $IDLIST >/dev/null 2>&1 } fi done } while :;do sleep 30 idlistusr sleep 30 done ================================================ FILE: luci-app-eqosplus/root/usr/share/rpcd/acl.d/luci-app-eqosplus.json ================================================ { "luci-app-eqosplus": { "description": "Grant UCI access for luci-app-eqosplus", "read": { "uci": [ "eqosplus" ] }, "write": { "uci": [ "eqosplus" ] } } } ================================================ FILE: luci-app-fastnet/Makefile ================================================ # Copyright (C) 2016 Openwrt.org # # This is free software, licensed under the Apache License, Version 2.0 . # include $(TOPDIR)/rules.mk LUCI_TITLE:=LuCI support for fastnet LUCI_DEPENDS:=+fastnet LUCI_PKGARCH:=all PKG_VERSION:=0.7.2-r1 # PKG_RELEASE MUST be empty for luci.mk PKG_RELEASE:= LUCI_MINIFY_CSS:=0 LUCI_MINIFY_JS:=0 include $(TOPDIR)/feeds/luci/luci.mk # call BuildPackage - OpenWrt buildroot signature ================================================ FILE: luci-app-fastnet/luasrc/controller/fastnet.lua ================================================ module("luci.controller.fastnet", package.seeall) function index() local fs = require "nixio.fs" if not fs.access("/etc/config/fastnet") then return end entry({"admin", "services", "fastnet"}, cbi("fastnet"), _("FastNet"), 50).dependent = true entry({"admin", "services", "fastnet", "status"}, call("action_status")).leaf = true end function action_status() local sys = require "luci.sys" local uci = require "luci.model.uci".cursor() local http = require "luci.http" local function get_host() local host = http.getenv("HTTP_HOST") or http.getenv("SERVER_NAME") or "" host = host:gsub(":%d+$", "") if host == "_redirect2ssl" or host == "redirect2ssl" or host == "" then host = http.getenv("SERVER_ADDR") or "localhost" end return host end local running = (sys.call("pidof FastNet >/dev/null") == 0) local host = get_host() local port = uci:get_first("fastnet", "fastnet", "port") or "3200" local token = uci:get_first("fastnet", "fastnet", "token") or "" local url = "http://" .. host .. ":" .. port .. "/" if token ~= "" then url = url .. "?token=" .. token end http.prepare_content("application/json") http.write_json({ running = running, host = host, port = port, url = url }) end ================================================ FILE: luci-app-fastnet/luasrc/model/cbi/fastnet.lua ================================================ local sys = require "luci.sys" local uci = require "luci.model.uci".cursor() local http = require "luci.http" local m = Map("fastnet", translate("FastNet")) m.description = translate("FastNet provides network testing tools and a Web UI.") local function get_host() local host = http.getenv("HTTP_HOST") or http.getenv("SERVER_NAME") or "" host = host:gsub(":%d+$", "") if host == "_redirect2ssl" or host == "redirect2ssl" or host == "" then host = http.getenv("SERVER_ADDR") or "localhost" end return host end local st = m:section(SimpleSection, translate("Status")) local running = (sys.call("pidof FastNet >/dev/null") == 0) local listen_port = uci:get_first("fastnet", "fastnet", "port") or "3200" local token = uci:get_first("fastnet", "fastnet", "token") or "" local url = "http://" .. get_host() .. ":" .. listen_port .. "/" if token ~= "" then url = url .. "?token=" .. token end st.template = "fastnet/status" st.running = running st.url = url local s = m:section(TypedSection, "fastnet", translate("Settings")) s.anonymous = true local enabled = s:option(Flag, "enabled", translate("Enable")) enabled.default = enabled.enabled local port = s:option(Value, "port", translate("Listen Port")) port.datatype = "port" port.default = "3200" local token = s:option(Value, "token", translate("API Token")) token.password = true token.rmempty = true local logger = s:option(Flag, "logger", translate("Enable Logging")) logger.rmempty = true return m ================================================ FILE: luci-app-fastnet/luasrc/view/fastnet/status.htm ================================================
    <%:Status%>
    <% if self.running then %> <%:Running%> <% else %> <%:Not running%> <% end %>
    ================================================ FILE: luci-app-fastnet/po/zh_Hans/fastnet.po ================================================ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" msgid "FastNet" msgstr "FastNet" msgid "FastNet provides network testing tools and a Web UI." msgstr "FastNet 提供网络测试工具与 Web 界面。" msgid "Settings" msgstr "设置" msgid "Enable" msgstr "启用" msgid "Listen Host" msgstr "监听地址" msgid "Listen Port" msgstr "监听端口" msgid "API Token" msgstr "访问 Token" msgid "Enable Logging" msgstr "启用日志" msgid "Status" msgstr "状态" msgid "Running" msgstr "运行中" msgid "Not running" msgstr "未运行" msgid "Open Web UI" msgstr "打开 Web 界面" ================================================ FILE: luci-app-fastnet/root/etc/uci-defaults/50_luci-fastnet ================================================ #!/bin/sh rm -f /tmp/luci-indexcache exit 0 ================================================ FILE: luci-app-fileassistant/Makefile ================================================ # From https://github.com/DarkDean89/luci-app-filebrowser # From https://github.com/stuarthua/oh-my-openwrt/tree/master/stuart/luci-app-fileassistant # This is free software, licensed under the Apache License, Version 2.0 . include $(TOPDIR)/rules.mk LUCI_TITLE:=LuCI support for Fileassistant LUCI_PKGARCH:=all PKG_VERSION:=1.0 PKG_RELEASE:=5 include $(TOPDIR)/feeds/luci/luci.mk # call BuildPackage - OpenWrt buildroot signature ================================================ FILE: luci-app-fileassistant/htdocs/luci-static/resources/fileassistant/fb.css ================================================ .fb-container { margin-top: 1rem; } .fb-container .cbi-button { height: 1.8rem; } .fb-container .cbi-input-text { margin-bottom: 1rem; width: 100%; } .fb-container .panel-title { padding-bottom: 0; width: 50%; border-bottom: none; } .fb-container .panel-container { display: flex; align-items: center; justify-content: space-between; padding-bottom: 1rem; border-bottom: 1px solid #eee; } .fb-container .upload-container { display: none; margin: 1rem 0; } .fb-container .upload-file { margin-right: 2rem; } .fb-container .cbi-value-field { text-align: left; } .fb-container .parent-icon strong { margin-left: 1rem; } .fb-container td[class$="-icon"] { cursor: pointer; } .fb-container .file-icon, .fb-container .folder-icon, .fb-container .link-icon { position: relative; } .fb-container .file-icon:before, .fb-container .folder-icon:before, .fb-container .link-icon:before { display: inline-block; width: 1.5rem; height: 1.5rem; content: ''; background-size: contain; margin: 0 0.5rem 0 1rem; vertical-align: middle; } .fb-container .file-icon:before { background-image: url(file-icon.png); } .fb-container .folder-icon:before { background-image: url(folder-icon.png); } .fb-container .link-icon:before { background-image: url(link-icon.png); } @media screen and (max-width: 480px) { .fb-container .upload-file { width: 14.6rem; } .fb-container .cbi-value-owner, .fb-container .cbi-value-perm { display: none; } } ================================================ FILE: luci-app-fileassistant/htdocs/luci-static/resources/fileassistant/fb.js ================================================ String.prototype.replaceAll = function(search, replacement) { var target = this; return target.replace(new RegExp(search, 'g'), replacement); }; (function () { var iwxhr = new XHR(); var listElem = document.getElementById("list-content"); listElem.onclick = handleClick; var currentPath; var pathElem = document.getElementById("current-path"); pathElem.onblur = function () { update_list(this.value.trim()); }; pathElem.onkeyup = function (evt) { if (evt.keyCode == 13) { this.blur(); } }; function removePath(filename, isdir) { var c = confirm('你确定要删除 ' + filename + ' 吗?'); if (c) { iwxhr.get('/cgi-bin/luci/admin/nas/fileassistant/delete', { path: concatPath(currentPath, filename), isdir: isdir }, function (x, res) { if (res.ec === 0) { refresh_list(res.data, currentPath); } }); } } function installPath(filename, isdir) { if (isdir === "1") { alert('这是一个目录,请选择 ipk 文件进行安装!'); return; } var isipk = isIPK(filename); if (isipk === 0) { alert('只允许安装 ipk 格式的文件!'); return; } var c = confirm('你确定要安装 ' + filename + ' 吗?'); if (c) { iwxhr.get('/cgi-bin/luci/admin/nas/fileassistant/install', { filepath: concatPath(currentPath, filename), isdir: isdir }, function (x, res) { if (res.ec === 0) { location.reload(); alert('安装成功!'); } else { alert('安装失败,请检查文件格式!'); } }); } } function isIPK(filename) { var index= filename.lastIndexOf("."); var ext = filename.substr(index+1); if (ext === 'ipk') { return 1; } else { return 0; } } function renamePath(filename) { var newname = prompt('请输入新的文件名:', filename); if (newname) { newname = newname.trim(); if (newname != filename) { var newpath = concatPath(currentPath, newname); iwxhr.get('/cgi-bin/luci/admin/nas/fileassistant/rename', { filepath: concatPath(currentPath, filename), newpath: newpath }, function (x, res) { if (res.ec === 0) { refresh_list(res.data, currentPath); } } ); } } } function chmodPath(filename, isdir) { var newmod = prompt('请输入新的权限位(支持八进制权限位或者a+x格式):', isdir === "1" ? "0755" : "0644"); if (newmod) { iwxhr.get('/cgi-bin/luci/admin/nas/fileassistant/chmod', { filepath: concatPath(currentPath, filename), newmod: newmod }, function (x, res) { if (res.ec === 0) { refresh_list(res.data, currentPath); } } ); } } function chownPath(filename) { var newown = prompt('请输入新的用户名(支持用户名或用户名:群组格式):', "root"); if (newown) { iwxhr.get('/cgi-bin/luci/admin/nas/fileassistant/chown', { filepath: concatPath(currentPath, filename), newown: newown }, function (x, res) { if (res.ec === 0) { refresh_list(res.data, currentPath); } } ); } } function openpath(filename, dirname) { dirname = dirname || currentPath; window.open('/cgi-bin/luci/admin/nas/fileassistant/open?path=' + encodeURIComponent(dirname) + '&filename=' + encodeURIComponent(filename)); } function getFileElem(elem) { if (elem.className.indexOf('-icon') > -1) { return elem; } else if (elem.parentNode.className.indexOf('-icon') > -1) { return elem.parentNode; } } function concatPath(path, filename) { if (path === '/') { return path + filename; } else { return path.replace(/\/$/, '') + '/' + filename; } } function handleClick(evt) { var targetElem = evt.target; var infoElem; if (targetElem.className.indexOf('cbi-button-remove') > -1) { infoElem = targetElem.parentNode.parentNode; removePath(infoElem.dataset['filename'] , infoElem.dataset['isdir']) } else if (targetElem.className.indexOf('cbi-button-install') > -1) { infoElem = targetElem.parentNode.parentNode; installPath(infoElem.dataset['filename'] , infoElem.dataset['isdir']) } else if (targetElem.className.indexOf('cbi-button-edit') > -1) { renamePath(targetElem.parentNode.parentNode.dataset['filename']); } else if (targetElem.className.indexOf('cbi-button-chmod') > -1) { infoElem = targetElem.parentNode.parentNode; chmodPath(infoElem.dataset['filename'] , infoElem.dataset['isdir']); } else if (targetElem.className.indexOf('cbi-button-chown') > -1) { chownPath(targetElem.parentNode.parentNode.dataset['filename']); } else if (targetElem = getFileElem(targetElem)) { if (targetElem.className.indexOf('parent-icon') > -1) { update_list(currentPath.replace(/\/[^/]+($|\/$)/, '')); } else if (targetElem.className.indexOf('file-icon') > -1) { openpath(targetElem.parentNode.dataset['filename']); } else if (targetElem.className.indexOf('link-icon') > -1) { infoElem = targetElem.parentNode; var filepath = infoElem.dataset['linktarget']; if (filepath) { if (infoElem.dataset['isdir'] === "1") { update_list(filepath); } else { var lastSlash = filepath.lastIndexOf('/'); openpath(filepath.substring(lastSlash + 1), filepath.substring(0, lastSlash)); } } } else if (targetElem.className.indexOf('folder-icon') > -1) { update_list(concatPath(currentPath, targetElem.parentNode.dataset['filename'])) } } } function refresh_list(filenames, path) { var listHtml = '' +'' +'' +'' +'' +'' +'' +''; if (path !== '/') { listHtml += ''; } if (filenames) { for (var i = 0; i < filenames.length; i++) { var line = filenames[i]; if (line) { var f = line.match(/(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+([\S\s]+)/); var isLink = f[1][0] === 'z' || f[1][0] === 'l' || f[1][0] === 'x'; var o = { displayname: f[9], filename: isLink ? f[9].split(' -> ')[0] : f[9], perms: f[1], date: f[7] + ' ' + f[6] + ' ' + f[8], size: f[5], owner: f[3], icon: (f[1][0] === 'd') ? "folder-icon" : (isLink ? "link-icon" : "file-icon") }; var install_btn = ''; var index= o.filename.lastIndexOf("."); var ext = o.filename.substr(index+1); if (ext === 'ipk') { install_btn = ''; } listHtml += '' + '' + '' + '' + '' + '' + '' + ''; } } } listHtml += "
    文件所有者修改时间大小权限操作
    ..
    ' + '' + o.displayname + '' + ''+o.owner+''+o.date+''+o.size+''+o.perms+'\ \ \ \ ' + install_btn + '
    "; listElem.innerHTML = listHtml; } function update_list(path, opt) { opt = opt || {}; path = concatPath(path, ''); if (currentPath != path) { iwxhr.get('/cgi-bin/luci/admin/nas/fileassistant/list', {path: path}, function (x, res) { if (res.ec === 0) { refresh_list(res.data, path); } else { refresh_list([], path); } } ); if (!opt.popState) { history.pushState({path: path}, null, '?path=' + path); } currentPath = path; pathElem.value = currentPath; } }; var uploadToggle = document.getElementById('upload-toggle'); var uploadContainer = document.getElementById('upload-container'); var isUploadHide = true; uploadToggle.onclick = function() { if (isUploadHide) { uploadContainer.style.display = 'inline-flex'; } else { uploadContainer.style.display = 'none'; } isUploadHide = !isUploadHide; }; var uploadBtn = uploadContainer.getElementsByClassName('cbi-input-apply')[0]; uploadBtn.onclick = function (evt) { var uploadinput = document.getElementById('upload-file'); var fullPath = uploadinput.value; if (!fullPath) { evt.preventDefault(); } else { var formData = new FormData(); var startIndex = (fullPath.indexOf('\\') >= 0 ? fullPath.lastIndexOf('\\') : fullPath.lastIndexOf('/')); formData.append('upload-filename', fullPath.substring(startIndex + 1)); formData.append('upload-dir', concatPath(currentPath, '')); formData.append('upload-file', uploadinput.files[0]); var xhr = new XMLHttpRequest(); xhr.open("POST", "/cgi-bin/luci/admin/nas/fileassistant/upload", true); xhr.onload = function() { if (xhr.status == 200) { var res = JSON.parse(xhr.responseText); refresh_list(res.data, currentPath); uploadinput.value = ''; } else { alert('上传失败,请稍后再试...'); } }; xhr.send(formData); } }; document.getElementById('mkdir-toggle').onclick = function() { var dirname = null; if (dirname = prompt("请输入文件夹名称:")) { var formData = new FormData(); formData.append('path', currentPath); formData.append('dirname', dirname); var xhr = new XMLHttpRequest(); xhr.open("POST", "/cgi-bin/luci/admin/nas/fileassistant/mkdir", true); xhr.onload = function() { if (xhr.status == 200) { var res = JSON.parse(xhr.responseText); refresh_list(res.data, currentPath); } else { alert('创建失败,请稍后再试...'); } }; xhr.send(formData); } }; document.addEventListener('DOMContentLoaded', function(evt) { var initPath = '/'; if (/path=([/\w]+)/.test(location.search)) { initPath = RegExp.$1; } update_list(initPath, {popState: true}); }); window.addEventListener('popstate', function (evt) { var path = '/'; if (evt.state && evt.state.path) { path = evt.state.path; } update_list(path, {popState: true}); }); })(); ================================================ FILE: luci-app-fileassistant/luasrc/controller/fileassistant.lua ================================================ module("luci.controller.fileassistant", package.seeall) function index() entry({"admin", "nas"}, firstchild(), "NAS", 44).dependent = false local page page = entry({"admin", "nas", "fileassistant"}, template("fileassistant"), _("文件助手"), 1) page.i18n = "base" page.dependent = true page = entry({"admin", "nas", "fileassistant", "list"}, call("fileassistant_list"), nil) page.leaf = true page = entry({"admin", "nas", "fileassistant", "open"}, call("fileassistant_open"), nil) page.leaf = true page = entry({"admin", "nas", "fileassistant", "delete"}, call("fileassistant_delete"), nil) page.leaf = true page = entry({"admin", "nas", "fileassistant", "rename"}, call("fileassistant_rename"), nil) page.leaf = true page = entry({"admin", "nas", "fileassistant", "upload"}, call("fileassistant_upload"), nil) page.leaf = true page = entry({"admin", "nas", "fileassistant", "install"}, call("fileassistant_install"), nil) page.leaf = true page = entry({"admin", "nas", "fileassistant", "mkdir"}, call("fileassistant_mkdir"), nil) page.leaf = true page = entry({"admin", "nas", "fileassistant", "chmod"}, call("fileassistant_chmod"), nil) page.leaf = true page = entry({"admin", "nas", "fileassistant", "chown"}, call("fileassistant_chown"), nil) page.leaf = true end function list_response(path, success) luci.http.prepare_content("application/json") local result if success then local rv = scandir(path) result = { ec = 0, data = rv } else result = { ec = 1 } end luci.http.write_json(result) end function fileassistant_list() local path = luci.http.formvalue("path") list_response(path, true) end function fileassistant_open() local path = luci.http.formvalue("path") local filename = luci.http.formvalue("filename") local io = require "io" local mime = to_mime(filename) file = path..filename local download_fpi = io.open(file, "r") luci.http.header('Content-Disposition', 'inline; filename="'..filename..'"' ) luci.http.prepare_content(mime) luci.ltn12.pump.all(luci.ltn12.source.file(download_fpi), luci.http.write) end function fileassistant_delete() local path = luci.http.formvalue("path") local isdir = luci.http.formvalue("isdir") path = path:gsub("<>", "/") path = path:gsub(" ", "\ ") local success if isdir then success = os.execute('rm -r "'..path..'"') else success = os.remove(path) end list_response(nixio.fs.dirname(path), success) end function fileassistant_rename() local filepath = luci.http.formvalue("filepath") local newpath = luci.http.formvalue("newpath") local success = os.execute('mv "'..filepath..'" "'..newpath..'"') list_response(nixio.fs.dirname(filepath), success) end function fileassistant_install() local filepath = luci.http.formvalue("filepath") local isdir = luci.http.formvalue("isdir") local ext = filepath:match(".+%.(%w+)$") filepath = filepath:gsub("<>", "/") filepath = filepath:gsub(" ", "\ ") local success if isdir == "1" then success = false elseif ext == "ipk" then success = installIPK(filepath) else success = false end list_response(nixio.fs.dirname(filepath), success) end function installIPK(filepath) luci.sys.exec('opkg --force-depends install "'..filepath..'"') luci.sys.exec('rm -rf /tmp/luci-*') return true; end function fileassistant_upload() local fp -- MUST setfilehandler before formvalue, -- beacuse formvalue will parse form and write body to /tmp if filehandler not present luci.http.setfilehandler( function(meta, chunk, eof) if not fp and meta and meta.name == "upload-file" then local filename = luci.http.formvalue("upload-filename") local uploaddir = luci.http.formvalue("upload-dir") if not uploaddir or not filename then error("uploaddir or filename is nil") end local filepath = uploaddir..filename fp = io.open(filepath, "w") end if fp and chunk then fp:write(chunk) end if fp and eof then fp:close() end end ) list_response(luci.http.formvalue("upload-dir"), true) end function fileassistant_mkdir() local path = luci.http.formvalue("path") local dirname = luci.http.formvalue("dirname") local success = os.execute('sh -c \'cd "'..path..'" && mkdir -p "'..dirname..'"\'') list_response(path, success) end function fileassistant_chmod() local path = luci.http.formvalue("filepath") local newmod = luci.http.formvalue("newmod") local success = os.execute('chmod '..newmod..' "'..path..'"') list_response(nixio.fs.dirname(path), success) end function fileassistant_chown() local path = luci.http.formvalue("filepath") local newown = luci.http.formvalue("newown") local success = os.execute('chown '..newown..' "'..path..'"') list_response(nixio.fs.dirname(path), success) end function scandir(directory) local i, t, popen = 0, {}, io.popen local pfile = popen("ls -lh \""..directory.."\" | egrep '^d' ; ls -lh \""..directory.."\" | egrep -v '^d|^l'") for fileinfo in pfile:lines() do i = i + 1 t[i] = fileinfo end pfile:close() pfile = popen("ls -lh \""..directory.."\" | egrep '^l' ;") for fileinfo in pfile:lines() do i = i + 1 linkindex, _, linkpath = string.find(fileinfo, "->%s+(.+)$") local finalpath; if string.sub(linkpath, 1, 1) == "/" then finalpath = linkpath else finalpath = nixio.fs.realpath(directory..linkpath) end local linktype; if not finalpath then finalpath = linkpath; linktype = 'x' elseif nixio.fs.stat(finalpath, "type") == "dir" then linktype = 'z' else linktype = 'l' end fileinfo = string.sub(fileinfo, 2, linkindex - 1) fileinfo = linktype..fileinfo.."-> "..finalpath t[i] = fileinfo end pfile:close() return t end MIME_TYPES = { ["txt"] = "text/plain"; ["conf"] = "text/plain"; ["ovpn"] = "text/plain"; ["log"] = "text/plain"; ["js"] = "text/javascript"; ["json"] = "application/json"; ["css"] = "text/css"; ["htm"] = "text/html"; ["html"] = "text/html"; ["patch"] = "text/x-patch"; ["c"] = "text/x-csrc"; ["h"] = "text/x-chdr"; ["o"] = "text/x-object"; ["ko"] = "text/x-object"; ["bmp"] = "image/bmp"; ["gif"] = "image/gif"; ["png"] = "image/png"; ["jpg"] = "image/jpeg"; ["jpeg"] = "image/jpeg"; ["svg"] = "image/svg+xml"; ["zip"] = "application/zip"; ["pdf"] = "application/pdf"; ["xml"] = "application/xml"; ["xsl"] = "application/xml"; ["doc"] = "application/msword"; ["ppt"] = "application/vnd.ms-powerpoint"; ["xls"] = "application/vnd.ms-excel"; ["odt"] = "application/vnd.oasis.opendocument.text"; ["odp"] = "application/vnd.oasis.opendocument.presentation"; ["pl"] = "application/x-perl"; ["sh"] = "application/x-shellscript"; ["php"] = "application/x-php"; ["deb"] = "application/x-deb"; ["iso"] = "application/x-cd-image"; ["tgz"] = "application/x-compressed-tar"; ["mp3"] = "audio/mpeg"; ["ogg"] = "audio/x-vorbis+ogg"; ["wav"] = "audio/x-wav"; ["mpg"] = "video/mpeg"; ["mpeg"] = "video/mpeg"; ["avi"] = "video/x-msvideo"; } function to_mime(filename) if type(filename) == "string" then local ext = filename:match("[^%.]+$") if ext and MIME_TYPES[ext:lower()] then return MIME_TYPES[ext:lower()] end end return "application/octet-stream" end ================================================ FILE: luci-app-fileassistant/luasrc/view/fileassistant.htm ================================================ <%+header%>

    文件助手

    文件列表
    <%+footer%> ================================================ FILE: luci-app-filebrowser/Makefile ================================================ # SPDX-License-Identifier: Apache-2.0 # # Copyright (C) 2023 ImmortalWrt.org include $(TOPDIR)/rules.mk LUCI_TITLE:=LuCI app for FileBrowser LUCI_PKGARCH:=all LUCI_DEPENDS:=+filebrowser include $(TOPDIR)/feeds/luci/luci.mk # call BuildPackage - OpenWrt buildroot signature ================================================ FILE: luci-app-filebrowser/htdocs/luci-static/resources/view/filebrowser.js ================================================ 'use strict'; 'require form'; 'require poll'; 'require rpc'; 'require uci'; 'require view'; var callServiceList = rpc.declare({ object: 'service', method: 'list', params: ['name'], expect: { '': {} } }); function getServiceStatus() { return L.resolveDefault(callServiceList('filebrowser'), {}).then(function (res) { var isRunning = false; try { isRunning = res['filebrowser']['instances']['instance1']['running']; } catch (e) { } return isRunning; }); } function renderStatus(isRunning, port) { var spanTemp = '%s %s'; var renderHTML; if (isRunning) { var button = String.format(' %s', window.location.hostname, port, _('Open Web Interface')); renderHTML = spanTemp.format('green', _('FileBrowser'), _('RUNNING')) + button; } else { renderHTML = spanTemp.format('red', _('FileBrowser'), _('NOT RUNNING')); } return renderHTML; } return view.extend({ load: function() { return uci.load('filebrowser'); }, render: function(data) { var m, s, o; var webport = (uci.get(data, 'config', 'listen_port') || '8989'); m = new form.Map('filebrowser', _('FileBrowser'), _('FileBrowser provides a file managing interface within a specified directory and it can be used to upload, delete, preview, rename and edit your files..')); s = m.section(form.TypedSection); s.anonymous = true; s.render = function () { poll.add(function () { return L.resolveDefault(getServiceStatus()).then(function (res) { var view = document.getElementById('service_status'); view.innerHTML = renderStatus(res, webport); }); }); return E('div', { class: 'cbi-section', id: 'status_bar' }, [ E('p', { id: 'service_status' }, _('Collecting data...')) ]); } s = m.section(form.NamedSection, 'config', 'filebrowser'); o = s.option(form.Flag, 'enabled', _('Enable')); o.default = o.disabled; o.rmempty = false; o = s.option(form.Value, 'listen_port', _('Listen port')); o.datatype = 'port'; o.default = '8989'; o.rmempty = false; o = s.option(form.Value, 'root_path', _('Root directory')); o.default = '/mnt'; o.rmempty = false; o = s.option(form.Flag, 'disable_exec', _('Disable Command Runner feature')); o.default = o.enabled; o.rmempty = false; return m.render(); } }); ================================================ FILE: luci-app-filebrowser/po/templates/filebrowser.pot ================================================ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" #: applications/luci-app-filebrowser/htdocs/luci-static/resources/view/filebrowser.js:62 msgid "Collecting data..." msgstr "" #: applications/luci-app-filebrowser/htdocs/luci-static/resources/view/filebrowser.js:81 msgid "Disable Command Runner feature" msgstr "" #: applications/luci-app-filebrowser/htdocs/luci-static/resources/view/filebrowser.js:68 msgid "Enable" msgstr "" #: applications/luci-app-filebrowser/htdocs/luci-static/resources/view/filebrowser.js:31 #: applications/luci-app-filebrowser/htdocs/luci-static/resources/view/filebrowser.js:33 #: applications/luci-app-filebrowser/htdocs/luci-static/resources/view/filebrowser.js:48 #: applications/luci-app-filebrowser/root/usr/share/luci/menu.d/luci-app-filebrowser.json:3 msgid "FileBrowser" msgstr "" #: applications/luci-app-filebrowser/htdocs/luci-static/resources/view/filebrowser.js:49 msgid "" "FileBrowser provides a file managing interface within a specified directory " "and it can be used to upload, delete, preview, rename and edit your files.." msgstr "" #: applications/luci-app-filebrowser/root/usr/share/rpcd/acl.d/luci-app-filebrowser.json:3 msgid "Grant UCI access for luci-app-filebrowser" msgstr "" #: applications/luci-app-filebrowser/htdocs/luci-static/resources/view/filebrowser.js:72 msgid "Listen port" msgstr "" #: applications/luci-app-filebrowser/htdocs/luci-static/resources/view/filebrowser.js:33 msgid "NOT RUNNING" msgstr "" #: applications/luci-app-filebrowser/htdocs/luci-static/resources/view/filebrowser.js:30 msgid "Open Web Interface" msgstr "" #: applications/luci-app-filebrowser/htdocs/luci-static/resources/view/filebrowser.js:31 msgid "RUNNING" msgstr "" #: applications/luci-app-filebrowser/htdocs/luci-static/resources/view/filebrowser.js:77 msgid "Root directory" msgstr "" ================================================ FILE: luci-app-filebrowser/po/zh_Hans/filebrowser.po ================================================ msgid "" msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Project-Id-Version: PACKAGE VERSION\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: zh-Hans\n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" #: applications/luci-app-filebrowser/htdocs/luci-static/resources/view/filebrowser.js:62 msgid "Collecting data..." msgstr "正在收集数据中..." #: applications/luci-app-filebrowser/htdocs/luci-static/resources/view/filebrowser.js:81 msgid "Disable Command Runner feature" msgstr "禁用命令执行功能" #: applications/luci-app-filebrowser/htdocs/luci-static/resources/view/filebrowser.js:68 msgid "Enable" msgstr "启用" #: applications/luci-app-filebrowser/htdocs/luci-static/resources/view/filebrowser.js:31 #: applications/luci-app-filebrowser/htdocs/luci-static/resources/view/filebrowser.js:33 #: applications/luci-app-filebrowser/htdocs/luci-static/resources/view/filebrowser.js:48 #: applications/luci-app-filebrowser/root/usr/share/luci/menu.d/luci-app-filebrowser.json:3 msgid "FileBrowser" msgstr "FileBrowser" #: applications/luci-app-filebrowser/htdocs/luci-static/resources/view/filebrowser.js:49 msgid "" "FileBrowser provides a file managing interface within a specified directory " "and it can be used to upload, delete, preview, rename and edit your files.." msgstr "" "FileBrowser 提供指定目录下的文件管理界面,可用于上传、删除、预览、重命名和编" "辑文件。" #: applications/luci-app-filebrowser/root/usr/share/rpcd/acl.d/luci-app-filebrowser.json:3 msgid "Grant UCI access for luci-app-filebrowser" msgstr "授予 luci-app-filebrowser 访问 UCI 配置的权限" #: applications/luci-app-filebrowser/htdocs/luci-static/resources/view/filebrowser.js:72 msgid "Listen port" msgstr "监听端口" #: applications/luci-app-filebrowser/htdocs/luci-static/resources/view/filebrowser.js:33 msgid "NOT RUNNING" msgstr "未运行" #: applications/luci-app-filebrowser/htdocs/luci-static/resources/view/filebrowser.js:30 msgid "Open Web Interface" msgstr "打开 Web 界面" #: applications/luci-app-filebrowser/htdocs/luci-static/resources/view/filebrowser.js:31 msgid "RUNNING" msgstr "运行中" #: applications/luci-app-filebrowser/htdocs/luci-static/resources/view/filebrowser.js:77 msgid "Root directory" msgstr "根目录" ================================================ FILE: luci-app-filebrowser/root/usr/share/luci/menu.d/luci-app-filebrowser.json ================================================ { "admin/services/filebrowser": { "title": "FileBrowser", "action": { "order": 30, "type": "view", "path": "filebrowser" }, "depends": { "acl": [ "luci-app-filebrowser" ], "uci": { "filebrowser": true } } } } ================================================ FILE: luci-app-filebrowser/root/usr/share/rpcd/acl.d/luci-app-filebrowser.json ================================================ { "luci-app-filebrowser": { "description": "Grant UCI access for luci-app-filebrowser", "read": { "ubus": { "service": [ "list" ] }, "uci": [ "filebrowser" ] }, "write": { "uci": [ "filebrowser" ] } } } ================================================ FILE: luci-app-floatip/Makefile ================================================ # Copyright (C) 2016 Openwrt.org # # This is free software, licensed under the Apache License, Version 2.0 . # include $(TOPDIR)/rules.mk LUCI_TITLE:=LuCI support for floatip LUCI_DEPENDS:=+floatip LUCI_PKGARCH:=all PKG_VERSION:=0.1.3-r2 # PKG_RELEASE MUST be empty for luci.mk PKG_RELEASE:= include $(TOPDIR)/feeds/luci/luci.mk # call BuildPackage - OpenWrt buildroot signature ================================================ FILE: luci-app-floatip/luasrc/controller/floatip.lua ================================================ module("luci.controller.floatip", package.seeall) function index() if not nixio.fs.access("/etc/config/floatip") then return end entry({"admin", "services", "floatip"}, cbi("floatip"), _("FloatingGateway"), 20).dependent = true entry({"admin", "services", "floatip_status"}, call("floatip_status")) end function floatip_status() local sys = require "luci.sys" local uci = require "luci.model.uci".cursor() local status = { running = not (sys.call("flock -sn /var/lock/floatip_loop.lock -c true >/dev/null") == 0), } luci.http.prepare_content("application/json") luci.http.write_json(status) end ================================================ FILE: luci-app-floatip/luasrc/model/cbi/floatip.lua ================================================ local m, s, o m = Map("floatip", translate("FloatingGateway"), translate("FloatingGateway allows two gateway within one lan which can switch between each other in case of a failure.") .. "
    " .. translate("Before using the FloatingGateway, ensure that the LAN interface is static address.") .. "
    " .. translate("Note that this service is actually a floating IP implementation. It only configures the IP address and does not modify the gateway advertised by the DHCP service, because the DHCP service is not necessarily provided by the local machine. It is named floating gateway because this is the most common usage scenario.")) m:section(SimpleSection).template = "floatip_status" s=m:section(NamedSection, "main", translate("Global settings")) s.anonymous=true o = s:option(Flag, "enabled", translate("Enable")) o.rmempty = false o = s:option(ListValue, "role", translate("Node Role")) o.rmempty = false o.widget = "select" o:value("main", translate("FG Preempt Node")) o:value("fallback", translate("FG Fallback Node")) o = s:option(Value, "set_ip", translate("Floating Gateway IP"), translate("This IP must be within any subnet of the LAN interface")) o.rmempty = false o.datatype = "or(ip4addr,cidr4)" o = s:option(Value, "check_ip", translate("FG Preempt Node IP")) o.datatype = "ip4addr" o:depends("role", "fallback") o = s:option(Value, "check_url", translate("Check URL"), translate("If status code of the URL is not 2xx, then release the floating IP and disable LAN port pinging")) o:depends("role", "main") o = s:option(Value, "check_url_timeout", translate("Check URL Timeout (s)"), translate("Default is 5 seconds if not set")) o.datatype = "uinteger" o:depends("role", "main") return m ================================================ FILE: luci-app-floatip/luasrc/view/floatip_status.htm ================================================
    <%:FloatingGateway Status%>

    <%:Collecting data...%>

    ================================================ FILE: luci-app-floatip/po/zh_Hans/floatip.po ================================================ msgid "FloatingGateway" msgstr "浮动网关" msgid "Running state" msgstr "运行状态" msgid "FloatingGateway allows two gateway within one lan which can switch between each other in case of a failure." msgstr "浮动网关可以让你在内网有两个相互备份的网关,出现问题会相互切换。" msgid "The FloatingGateway service is running." msgstr "服务已启动" msgid "The FloatingGateway service is not running." msgstr "服务未启动" msgid "FloatingGateway Status" msgstr "服务状态" msgid "Collecting data..." msgstr "收集数据..." msgid "Node Role" msgstr "节点角色" msgid "FG Preempt Node" msgstr "旁路由" msgid "FG Fallback Node" msgstr "主路由" msgid "Floating Gateway IP" msgstr "浮动网关 IP" msgid "FG Preempt Node IP" msgstr "旁路由 IP" msgid "Check URL" msgstr "检查 URL" msgid "If status code of the URL is not 2xx, then release the floating IP and disable LAN port pinging" msgstr "如果检查URL状态码不是2xx,则释放浮动IP,并禁止LAN口ping" msgid "Check URL Timeout (s)" msgstr "检查 URL 超时(秒)" msgid "Default is 5 seconds if not set" msgstr "默认5秒" msgid "Before using the FloatingGateway, ensure that the LAN interface is static address." msgstr "使用浮动网关前需确保 LAN 接口是静态地址。" msgid "Note that this service is actually a floating IP implementation. It only configures the IP address and does not modify the gateway advertised by the DHCP service, because the DHCP service is not necessarily provided by the local machine. It is named floating gateway because this is the most common usage scenario." msgstr "注意此服务实际是浮动 IP 的实现,仅配置 IP 地址,不会修改 DHCP 服务通告的网关,因为 DHCP 服务不一定由本机提供。取名浮动网关只是因为这是最常见的使用场景。" msgid "This IP must be within any subnet of the LAN interface" msgstr "此 IP 必须在 LAN 接口的任意一个子网范围内" ================================================ FILE: luci-app-floatip/root/etc/uci-defaults/50_luci-floatip ================================================ #!/bin/sh rm -f /tmp/luci-indexcache /tmp/luci-indexcache.* exit 0 ================================================ FILE: luci-app-gost/Makefile ================================================ # SPDX-License-Identifier: Apache-2.0 # # Copyright (C) 2025 ImmortalWrt.org include $(TOPDIR)/rules.mk LUCI_TITLE:=LuCI support for GOST LUCI_DEPENDS:=+gost include $(TOPDIR)/feeds/luci/luci.mk # call BuildPackage - OpenWrt buildroot signature $(eval $(call BuildPackage,luci-app-gost)) ================================================ FILE: luci-app-gost/htdocs/luci-static/resources/view/gost.js ================================================ // SPDX-License-Identifier: Apache-2.0 /* * Copyright (C) 2025 ImmortalWrt.org */ 'use strict'; 'require form'; 'require poll'; 'require rpc'; 'require view'; const callServiceList = rpc.declare({ object: 'service', method: 'list', params: ['name'], expect: { '': {} } }); function getServiceStatus() { return L.resolveDefault(callServiceList('gost'), {}).then(function(res) { let isRunning = false; try { isRunning = res['gost']['instances']['instance1']['running']; } catch (e) {} return isRunning; }); } function renderStatus(isRunning) { let spanTmpl = '%s %s'; return spanTmpl.format( isRunning ? 'green' : 'red', _('GOST'), isRunning ? _('RUNNING') : _('NOT RUNNING') ); } return view.extend({ render: function() { let m, s, o; m = new form.Map('gost', _('GOST'), _('A simple security tunnel written in Golang.')); /* Bug fix: 为状态栏段指定一个不存在的 UCI 类型,避免匹配实际配置节 */ s = m.section(form.TypedSection, '_status'); s.anonymous = true; s.render = function() { poll.add(function() { return L.resolveDefault(getServiceStatus()).then(function(isRunning) { /* Bug fix: 重命名变量以避免遮蔽外层 'require view' 中的 view 模块 */ let statusEl = document.getElementById('service_status'); if (statusEl) statusEl.innerHTML = renderStatus(isRunning); }); }); return E('div', { class: 'cbi-section', id: 'status_bar' }, [ E('p', { id: 'service_status' }, _('Collecting data…')) ]); }; s = m.section(form.NamedSection, 'config', 'gost'); o = s.option(form.Flag, 'enabled', _('Enable')); o.rmempty = false; o = s.option(form.Value, 'config_file', _('Configuration file')); o.value('/etc/gost/gost.json'); o.datatype = 'path'; o = s.option(form.DynamicList, 'arguments', _('Arguments')); o.validate = function(section_id, value) { if (section_id) { let config_file = this.section.formvalue(section_id, 'config_file'); /* Bug fix: 避免使用 ES2020 可选链 (?.) 以兼容旧版 JS 运行时 */ let args = this.section.formvalue(section_id, 'arguments'); if (!config_file && (!args || !args.length)) return _('Expecting: %s').format(_('non-empty value')); } return true; }; return m.render(); } }); ================================================ FILE: luci-app-gost/luasrc/controller/gost.lua ================================================ -- Copyright (C) 2025 ImmortalWrt.org -- SPDX-License-Identifier: Apache-2.0 module("luci.controller.gost", package.seeall) function index() if not nixio.fs.access("/etc/config/gost") then return end -- luci 23.05+ 已通过 menu.d JSON 注册菜单,无需 Lua 控制器重复注册 if nixio.fs.access("/usr/share/luci/menu.d/luci-app-gost.json") then return end local page page = entry({"admin", "services", "gost"}, cbi("gost"), _("GOST"), 100) page.dependent = true end ================================================ FILE: luci-app-gost/luasrc/model/cbi/gost.lua ================================================ -- Copyright (C) 2025 ImmortalWrt.org -- SPDX-License-Identifier: Apache-2.0 local sys = require "luci.sys" m = Map("gost", translate("GOST"), translate("A simple security tunnel written in Golang.")) -- 服务运行状态提示 local running = (sys.call("pidof gost >/dev/null 2>&1") == 0) local status_text = running and '' .. translate("RUNNING") .. "" or '' .. translate("NOT RUNNING") .. "" s = m:section(TypedSection, "gost", translate("Service Status")) s.anonymous = true s.addremove = false o = s:option(DummyValue, "_status", translate("Status")) o.rawhtml = true o.default = status_text -- 基本设置 s = m:section(NamedSection, "config", "gost", translate("Basic Settings")) s.anonymous = false s.addremove = false o = s:option(Flag, "enabled", translate("Enable")) o.rmempty = false o = s:option(Value, "config_file", translate("Configuration file")) o:value("/etc/gost/gost.json") o.datatype = "file" o.rmempty = true o = s:option(DynamicList, "arguments", translate("Arguments")) o.rmempty = true function o.validate(self, value, section) local config_file = m:get(section, "config_file") if not config_file or config_file == "" then if not value or value == "" then return nil, translatef("Expecting: %s", translate("non-empty value")) end end return value end return m ================================================ FILE: luci-app-gost/po/templates/gost.pot ================================================ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" #: applications/luci-app-gost/htdocs/luci-static/resources/view/gost.js:46 msgid "A simple security tunnel written in Golang." msgstr "" #: applications/luci-app-gost/htdocs/luci-static/resources/view/gost.js:71 msgid "Arguments" msgstr "" #: applications/luci-app-gost/htdocs/luci-static/resources/view/gost.js:59 msgid "Collecting data…" msgstr "" #: applications/luci-app-gost/htdocs/luci-static/resources/view/gost.js:67 msgid "Configuration file" msgstr "" #: applications/luci-app-gost/htdocs/luci-static/resources/view/gost.js:65 msgid "Enable" msgstr "" #: applications/luci-app-gost/htdocs/luci-static/resources/view/gost.js:78 msgid "Expecting: %s" msgstr "" #: applications/luci-app-gost/htdocs/luci-static/resources/view/gost.js:34 #: applications/luci-app-gost/htdocs/luci-static/resources/view/gost.js:36 #: applications/luci-app-gost/htdocs/luci-static/resources/view/gost.js:45 #: applications/luci-app-gost/root/usr/share/luci/menu.d/luci-app-gost.json:3 msgid "GOST" msgstr "" #: applications/luci-app-gost/root/usr/share/rpcd/acl.d/luci-app-gost.json:3 msgid "Grant UCI access for luci-app-gost" msgstr "" #: applications/luci-app-gost/htdocs/luci-static/resources/view/gost.js:36 msgid "NOT RUNNING" msgstr "" #: applications/luci-app-gost/htdocs/luci-static/resources/view/gost.js:34 msgid "RUNNING" msgstr "" #: applications/luci-app-gost/htdocs/luci-static/resources/view/gost.js:78 msgid "non-empty value" msgstr "" ================================================ FILE: luci-app-gost/po/zh_Hans/gost.po ================================================ msgid "" msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Project-Id-Version: PACKAGE VERSION\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: zh-Hans\n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" #: applications/luci-app-gost/htdocs/luci-static/resources/view/gost.js:46 msgid "A simple security tunnel written in Golang." msgstr "GO 语言实现的安全隧道。" #: applications/luci-app-gost/htdocs/luci-static/resources/view/gost.js:71 msgid "Arguments" msgstr "参数" #: applications/luci-app-gost/htdocs/luci-static/resources/view/gost.js:59 msgid "Collecting data…" msgstr "正在收集数据中…" #: applications/luci-app-gost/htdocs/luci-static/resources/view/gost.js:67 msgid "Configuration file" msgstr "配置文件" #: applications/luci-app-gost/htdocs/luci-static/resources/view/gost.js:65 msgid "Enable" msgstr "启用" #: applications/luci-app-gost/htdocs/luci-static/resources/view/gost.js:78 msgid "Expecting: %s" msgstr "请输入:%s" #: applications/luci-app-gost/htdocs/luci-static/resources/view/gost.js:34 #: applications/luci-app-gost/htdocs/luci-static/resources/view/gost.js:36 #: applications/luci-app-gost/htdocs/luci-static/resources/view/gost.js:45 #: applications/luci-app-gost/root/usr/share/luci/menu.d/luci-app-gost.json:3 msgid "GOST" msgstr "GOST" #: applications/luci-app-gost/root/usr/share/rpcd/acl.d/luci-app-gost.json:3 msgid "Grant UCI access for luci-app-gost" msgstr "授予 luci-app-gost 访问 UCI 配置的权限" #: applications/luci-app-gost/htdocs/luci-static/resources/view/gost.js:36 msgid "NOT RUNNING" msgstr "未运行" #: applications/luci-app-gost/htdocs/luci-static/resources/view/gost.js:34 msgid "RUNNING" msgstr "运行中" #: applications/luci-app-gost/htdocs/luci-static/resources/view/gost.js:78 msgid "non-empty value" msgstr "非空值" ================================================ FILE: luci-app-gost/root/etc/config/gost ================================================ config gost 'config' option enabled '0' option config_file '/etc/gost/gost.json' ================================================ FILE: luci-app-gost/root/etc/init.d/gost ================================================ #!/bin/sh /etc/rc.common # Copyright (C) 2025 ImmortalWrt.org # SPDX-License-Identifier: Apache-2.0 USE_PROCD=1 START=99 STOP=10 _append_arg() { procd_append_param command "$1" } start_service() { local enabled config_file config_load "gost" config_get_bool enabled "config" "enabled" "0" [ "$enabled" -eq 0 ] && return 0 config_get config_file "config" "config_file" "" procd_open_instance "instance1" procd_set_param command /usr/bin/gost if [ -n "$config_file" ] && [ -f "$config_file" ]; then procd_append_param command -C "$config_file" fi config_list_foreach "config" "arguments" _append_arg procd_set_param respawn procd_set_param stdout 1 procd_set_param stderr 1 procd_close_instance } service_triggers() { procd_add_reload_trigger "gost" } ================================================ FILE: luci-app-gost/root/usr/share/luci/menu.d/luci-app-gost.json ================================================ { "admin/services/gost": { "title": "GOST", "action": { "type": "view", "path": "gost" }, "depends": { "acl": [ "luci-app-gost" ], "uci": { "gost": true } } } } ================================================ FILE: luci-app-gost/root/usr/share/rpcd/acl.d/luci-app-gost.json ================================================ { "luci-app-gost": { "description": "Grant UCI access for luci-app-gost", "read": { "uci": [ "gost" ] }, "write": { "uci": [ "gost" ] } } } ================================================ FILE: luci-app-homeproxy/Makefile ================================================ # SPDX-License-Identifier: GPL-2.0-only # # Copyright (C) 2022-2023 ImmortalWrt.org include $(TOPDIR)/rules.mk LUCI_TITLE:=The modern ImmortalWrt proxy platform for ARM64/AMD64 LUCI_PKGARCH:=all LUCI_DEPENDS:= \ +sing-box \ +firewall4 \ +kmod-nft-tproxy \ +ucode-mod-digest PKG_NAME:=luci-app-homeproxy define Package/luci-app-homeproxy/conffiles /etc/config/homeproxy /etc/homeproxy/certs/ /etc/homeproxy/ruleset/ /etc/homeproxy/resources/direct_list.txt /etc/homeproxy/resources/proxy_list.txt endef include $(TOPDIR)/feeds/luci/luci.mk # call BuildPackage - OpenWrt buildroot signature ================================================ FILE: luci-app-homeproxy/README ================================================ TODO: - Subscription page slow response with a large number of nodes - Refactor nft rules - Move ACL settings to a dedicated page - Any other improvements ================================================ FILE: luci-app-homeproxy/htdocs/luci-static/resources/homeproxy.js ================================================ /* * SPDX-License-Identifier: GPL-2.0-only * * Copyright (C) 2022-2025 ImmortalWrt.org */ 'use strict'; 'require baseclass'; 'require form'; 'require fs'; 'require rpc'; 'require uci'; 'require ui'; return baseclass.extend({ dns_strategy: { '': _('Default'), 'prefer_ipv4': _('Prefer IPv4'), 'prefer_ipv6': _('Prefer IPv6'), 'ipv4_only': _('IPv4 only'), 'ipv6_only': _('IPv6 only') }, shadowsocks_encrypt_length: { /* AEAD */ 'aes-128-gcm': 0, 'aes-192-gcm': 0, 'aes-256-gcm': 0, 'chacha20-ietf-poly1305': 0, 'xchacha20-ietf-poly1305': 0, /* AEAD 2022 */ '2022-blake3-aes-128-gcm': 16, '2022-blake3-aes-256-gcm': 32, '2022-blake3-chacha20-poly1305': 32 }, shadowsocks_encrypt_methods: [ /* Stream */ 'none', /* AEAD */ 'aes-128-gcm', 'aes-192-gcm', 'aes-256-gcm', 'chacha20-ietf-poly1305', 'xchacha20-ietf-poly1305', /* AEAD 2022 */ '2022-blake3-aes-128-gcm', '2022-blake3-aes-256-gcm', '2022-blake3-chacha20-poly1305' ], tls_cipher_suites: [ 'TLS_RSA_WITH_AES_128_CBC_SHA', 'TLS_RSA_WITH_AES_256_CBC_SHA', 'TLS_RSA_WITH_AES_128_GCM_SHA256', 'TLS_RSA_WITH_AES_256_GCM_SHA384', 'TLS_AES_128_GCM_SHA256', 'TLS_AES_256_GCM_SHA384', 'TLS_CHACHA20_POLY1305_SHA256', 'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA', 'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA', 'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA', 'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA', 'TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256', 'TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384', 'TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256', 'TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384', 'TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256', 'TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256' ], tls_versions: [ '1.0', '1.1', '1.2', '1.3' ], CBIStaticList: form.DynamicList.extend({ __name__: 'CBI.StaticList', renderWidget: function(/* ... */) { let dl = form.DynamicList.prototype.renderWidget.apply(this, arguments); dl.querySelector('.add-item ul > li[data-value="-"]')?.remove(); return dl; } }), calcStringMD5(e) { /* Thanks to https://stackoverflow.com/a/41602636 */ let h = (a, b) => { let c, d, e, f, g; c = a & 2147483648; d = b & 2147483648; e = a & 1073741824; f = b & 1073741824; g = (a & 1073741823) + (b & 1073741823); return e & f ? g ^ 2147483648 ^ c ^ d : e | f ? g & 1073741824 ? g ^ 3221225472 ^ c ^ d : g ^ 1073741824 ^ c ^ d : g ^ c ^ d; }, k = (a, b, c, d, e, f, g) => h((a = h(a, h(h(b & c | ~b & d, e), g))) << f | a >>> 32 - f, b), l = (a, b, c, d, e, f, g) => h((a = h(a, h(h(b & d | c & ~d, e), g))) << f | a >>> 32 - f, b), m = (a, b, c, d, e, f, g) => h((a = h(a, h(h(b ^ c ^ d, e), g))) << f | a >>> 32 - f, b), n = (a, b, c, d, e, f, g) => h((a = h(a, h(h(c ^ (b | ~d), e), g))) << f | a >>> 32 - f, b), p = a => { let b = '', d = ''; for (let c = 0; c <= 3; c++) d = a >>> 8 * c & 255, d = '0' + d.toString(16), b += d.substr(d.length - 2, 2); return b; }; let f = [], q, r, s, t, a, b, c, d; e = (() => { e = e.replace(/\r\n/g, '\n'); let b = ''; for (let d = 0; d < e.length; d++) { let c = e.charCodeAt(d); b += c < 128 ? String.fromCharCode(c) : c < 2048 ? String.fromCharCode(c >> 6 | 192) + String.fromCharCode(c & 63 | 128) : String.fromCharCode(c >> 12 | 224) + String.fromCharCode(c >> 6 & 63 | 128) + String.fromCharCode(c & 63 | 128); } return b; })(); f = (() => { let c = e.length, a = c + 8, d = 16 * ((a - a % 64) / 64 + 1), b = Array(d - 1), f = 0, g = 0; for (; g < c;) a = (g - g % 4) / 4, f = g % 4 * 8, b[a] |= e.charCodeAt(g) << f, g++; a = (g - g % 4) / 4, b[a] |= 128 << g % 4 * 8, b[d - 2] = c << 3, b[d - 1] = c >>> 29; return b; })(); a = 1732584193, b = 4023233417, c = 2562383102, d = 271733878; for (e = 0; e < f.length; e += 16) { q = a, r = b, s = c, t = d; a = k(a, b, c, d, f[e + 0], 7, 3614090360), d = k(d, a, b, c, f[e + 1], 12, 3905402710), c = k(c, d, a, b, f[e + 2], 17, 606105819), b = k(b, c, d, a, f[e + 3], 22, 3250441966), a = k(a, b, c, d, f[e + 4], 7, 4118548399), d = k(d, a, b, c, f[e + 5], 12, 1200080426), c = k(c, d, a, b, f[e + 6], 17, 2821735955), b = k(b, c, d, a, f[e + 7], 22, 4249261313), a = k(a, b, c, d, f[e + 8], 7, 1770035416), d = k(d, a, b, c, f[e + 9], 12, 2336552879), c = k(c, d, a, b, f[e + 10], 17, 4294925233), b = k(b, c, d, a, f[e + 11], 22, 2304563134), a = k(a, b, c, d, f[e + 12], 7, 1804603682), d = k(d, a, b, c, f[e + 13], 12, 4254626195), c = k(c, d, a, b, f[e + 14], 17, 2792965006), b = k(b, c, d, a, f[e + 15], 22, 1236535329), a = l(a, b, c, d, f[e + 1], 5, 4129170786), d = l(d, a, b, c, f[e + 6], 9, 3225465664), c = l(c, d, a, b, f[e + 11], 14, 643717713), b = l(b, c, d, a, f[e + 0], 20, 3921069994), a = l(a, b, c, d, f[e + 5], 5, 3593408605), d = l(d, a, b, c, f[e + 10], 9, 38016083), c = l(c, d, a, b, f[e + 15], 14, 3634488961), b = l(b, c, d, a, f[e + 4], 20, 3889429448), a = l(a, b, c, d, f[e + 9], 5, 568446438), d = l(d, a, b, c, f[e + 14], 9, 3275163606), c = l(c, d, a, b, f[e + 3], 14, 4107603335), b = l(b, c, d, a, f[e + 8], 20, 1163531501), a = l(a, b, c, d, f[e + 13], 5, 2850285829), d = l(d, a, b, c, f[e + 2], 9, 4243563512), c = l(c, d, a, b, f[e + 7], 14, 1735328473), b = l(b, c, d, a, f[e + 12], 20, 2368359562), a = m(a, b, c, d, f[e + 5], 4, 4294588738), d = m(d, a, b, c, f[e + 8], 11, 2272392833), c = m(c, d, a, b, f[e + 11], 16, 1839030562), b = m(b, c, d, a, f[e + 14], 23, 4259657740), a = m(a, b, c, d, f[e + 1], 4, 2763975236), d = m(d, a, b, c, f[e + 4], 11, 1272893353), c = m(c, d, a, b, f[e + 7], 16, 4139469664), b = m(b, c, d, a, f[e + 10], 23, 3200236656), a = m(a, b, c, d, f[e + 13], 4, 681279174), d = m(d, a, b, c, f[e + 0], 11, 3936430074), c = m(c, d, a, b, f[e + 3], 16, 3572445317), b = m(b, c, d, a, f[e + 6], 23, 76029189), a = m(a, b, c, d, f[e + 9], 4, 3654602809), d = m(d, a, b, c, f[e + 12], 11, 3873151461), c = m(c, d, a, b, f[e + 15], 16, 530742520), b = m(b, c, d, a, f[e + 2], 23, 3299628645), a = n(a, b, c, d, f[e + 0], 6, 4096336452), d = n(d, a, b, c, f[e + 7], 10, 1126891415), c = n(c, d, a, b, f[e + 14], 15, 2878612391), b = n(b, c, d, a, f[e + 5], 21, 4237533241), a = n(a, b, c, d, f[e + 12], 6, 1700485571), d = n(d, a, b, c, f[e + 3], 10, 2399980690), c = n(c, d, a, b, f[e + 10], 15, 4293915773), b = n(b, c, d, a, f[e + 1], 21, 2240044497), a = n(a, b, c, d, f[e + 8], 6, 1873313359), d = n(d, a, b, c, f[e + 15], 10, 4264355552), c = n(c, d, a, b, f[e + 6], 15, 2734768916), b = n(b, c, d, a, f[e + 13], 21, 1309151649), a = n(a, b, c, d, f[e + 4], 6, 4149444226), d = n(d, a, b, c, f[e + 11], 10, 3174756917), c = n(c, d, a, b, f[e + 2], 15, 718787259), b = n(b, c, d, a, f[e + 9], 21, 3951481745), a = h(a, q), b = h(b, r), c = h(c, s), d = h(d, t); } return (p(a) + p(b) + p(c) + p(d)).toLowerCase(); }, decodeBase64Str(str) { if (!str) return null; /* Thanks to luci-app-ssr-plus */ str = str.replace(/-/g, '+').replace(/_/g, '/'); let padding = (4 - str.length % 4) % 4; if (padding) str = str + Array(padding + 1).join('='); return decodeURIComponent(Array.prototype.map.call(atob(str), (c) => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2) ).join('')); }, getBuiltinFeatures() { const callGetSingBoxFeatures = rpc.declare({ object: 'luci.homeproxy', method: 'singbox_get_features', expect: { '': {} } }); return L.resolveDefault(callGetSingBoxFeatures(), {}); }, generateRand(type, length) { let byteArr; if (['base64', 'hex'].includes(type)) byteArr = crypto.getRandomValues(new Uint8Array(length)); switch (type) { case 'base64': /* Thanks to https://stackoverflow.com/questions/9267899 */ return btoa(String.fromCharCode.apply(null, byteArr)); case 'hex': return Array.from(byteArr, (byte) => (byte & 255).toString(16).padStart(2, '0') ).join(''); case 'uuid': /* Thanks to https://stackoverflow.com/a/2117523 */ return ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, (c) => (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16) ); default: return null; }; }, loadDefaultLabel(uciconfig, ucisection) { let label = uci.get(uciconfig, ucisection, 'label'); if (label) { return label; } else { uci.set(uciconfig, ucisection, 'label', ucisection); return ucisection; } }, loadModalTitle(title, addtitle, uciconfig, ucisection) { let label = uci.get(uciconfig, ucisection, 'label'); return label ? title + ' » ' + label : addtitle; }, renderSectionAdd(section, extra_class) { let el = form.GridSection.prototype.renderSectionAdd.apply(section, [ extra_class ]), nameEl = el.querySelector('.cbi-section-create-name'); ui.addValidator(nameEl, 'uciname', true, (v) => { let button = el.querySelector('.cbi-section-create > .cbi-button-add'); let uciconfig = section.uciconfig || section.map.config; if (!v) { button.disabled = true; return true; } else if (uci.get(uciconfig, v)) { button.disabled = true; return _('Expecting: %s').format(_('unique UCI identifier')); } else { button.disabled = null; return true; } }, 'blur', 'keyup'); return el; }, uploadCertificate(_option, type, filename, ev) { const callWriteCertificate = rpc.declare({ object: 'luci.homeproxy', method: 'certificate_write', params: ['filename'], expect: { '': {} } }); return ui.uploadFile('/tmp/homeproxy_certificate.tmp', ev.target) .then(L.bind((_btn, res) => { return L.resolveDefault(callWriteCertificate(filename), {}).then((ret) => { if (ret.result === true) ui.addNotification(null, E('p', _('Your %s was successfully uploaded. Size: %sB.').format(type, res.size))); else ui.addNotification(null, E('p', _('Failed to upload %s, error: %s.').format(type, ret.error))); }); }, this, ev.target)) .catch((e) => { ui.addNotification(null, E('p', e.message)) }); }, validateBase64Key(length, section_id, value) { /* Thanks to luci-proto-wireguard */ if (section_id && value) if (value.length !== length || !value.match(/^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/) || value[length-1] !== '=') return _('Expecting: %s').format(_('valid base64 key with %d characters').format(length)); return true; }, validateCertificatePath(section_id, value) { if (section_id && value) if (!value.match(/^(\/etc\/homeproxy\/certs\/|\/etc\/acme\/|\/etc\/ssl\/).+$/)) return _('Expecting: %s').format(_('/etc/homeproxy/certs/..., /etc/acme/..., /etc/ssl/...')); return true; }, validatePortRange(section_id, value) { if (section_id && value) { value = value.match(/^(\d+)?\:(\d+)?$/); if (value && (value[1] || value[2])) { if (!value[1]) value[1] = 0; else if (!value[2]) value[2] = 65535; if (value[1] < value[2] && value[2] <= 65535) return true; } return _('Expecting: %s').format( _('valid port range (port1:port2)')); } return true; }, validateUniqueValue(uciconfig, ucisection, ucioption, section_id, value) { if (section_id) { if (!value) return _('Expecting: %s').format(_('non-empty value')); if (ucioption === 'node' && value === 'urltest') return true; let duplicate = false; uci.sections(uciconfig, ucisection, (res) => { if (res['.name'] !== section_id) if (res[ucioption] === value) duplicate = true }); if (duplicate) return _('Expecting: %s').format(_('unique value')); } return true; }, validateUUID(section_id, value) { if (section_id) { if (!value) return _('Expecting: %s').format(_('non-empty value')); else if (value.match('^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$') === null) return _('Expecting: %s').format(_('valid uuid')); } return true; } }); ================================================ FILE: luci-app-homeproxy/htdocs/luci-static/resources/view/homeproxy/client.js ================================================ /* * SPDX-License-Identifier: GPL-2.0-only * * Copyright (C) 2022-2025 ImmortalWrt.org */ 'use strict'; 'require form'; 'require network'; 'require poll'; 'require rpc'; 'require uci'; 'require validation'; 'require view'; 'require homeproxy as hp'; 'require tools.firewall as fwtool'; 'require tools.widgets as widgets'; const callServiceList = rpc.declare({ object: 'service', method: 'list', params: ['name'], expect: { '': {} } }); const callReadDomainList = rpc.declare({ object: 'luci.homeproxy', method: 'acllist_read', params: ['type'], expect: { '': {} } }); const callWriteDomainList = rpc.declare({ object: 'luci.homeproxy', method: 'acllist_write', params: ['type', 'content'], expect: { '': {} } }); function getServiceStatus() { return L.resolveDefault(callServiceList('homeproxy'), {}).then((res) => { let isRunning = false; try { isRunning = res['homeproxy']['instances']['sing-box-c']['running']; } catch (e) { } return isRunning; }); } function renderStatus(isRunning, version) { let spanTemp = '%s (sing-box v%s) %s'; let renderHTML; if (isRunning) renderHTML = spanTemp.format('green', _('HomeProxy'), version, _('RUNNING')); else renderHTML = spanTemp.format('red', _('HomeProxy'), version, _('NOT RUNNING')); return renderHTML; } let stubValidator = { factory: validation, apply(type, value, args) { if (value != null) this.value = value; return validation.types[type].apply(this, args); }, assert(condition) { return !!condition; } }; return view.extend({ load() { return Promise.all([ uci.load('homeproxy'), hp.getBuiltinFeatures(), network.getHostHints() ]); }, render(data) { let m, s, o, ss, so; let features = data[1], hosts = data[2]?.hosts; /* Cache all configured proxy nodes, they will be called multiple times */ let proxy_nodes = {}; uci.sections(data[0], 'node', (res) => { let nodeaddr = ((res.type === 'direct') ? res.override_address : res.address) || '', nodeport = ((res.type === 'direct') ? res.override_port : res.port) || ''; proxy_nodes[res['.name']] = String.format('[%s] %s', res.type, res.label || ((stubValidator.apply('ip6addr', nodeaddr) ? String.format('[%s]', nodeaddr) : nodeaddr) + ':' + nodeport)); }); m = new form.Map('homeproxy', _('HomeProxy'), _('The modern ImmortalWrt proxy platform for ARM64/AMD64.')); s = m.section(form.TypedSection); s.render = function () { poll.add(function () { return L.resolveDefault(getServiceStatus()).then((res) => { let view = document.getElementById('service_status'); view.innerHTML = renderStatus(res, features.version); }); }); return E('div', { class: 'cbi-section', id: 'status_bar' }, [ E('p', { id: 'service_status' }, _('Collecting data...')) ]); } s = m.section(form.NamedSection, 'config', 'homeproxy'); s.tab('routing', _('Routing Settings')); o = s.taboption('routing', form.ListValue, 'main_node', _('Main node')); o.value('nil', _('Disable')); o.value('urltest', _('URLTest')); for (let i in proxy_nodes) o.value(i, proxy_nodes[i]); o.default = 'nil'; o.depends({'routing_mode': 'custom', '!reverse': true}); o.rmempty = false; o = s.taboption('routing', hp.CBIStaticList, 'main_urltest_nodes', _('URLTest nodes'), _('List of nodes to test.')); for (let i in proxy_nodes) o.value(i, proxy_nodes[i]); o.depends('main_node', 'urltest'); o.rmempty = false; o = s.taboption('routing', form.Value, 'main_urltest_interval', _('Test interval'), _('The test interval in seconds.')); o.datatype = 'uinteger'; o.placeholder = '180'; o.depends('main_node', 'urltest'); o = s.taboption('routing', form.Value, 'main_urltest_tolerance', _('Test tolerance'), _('The test tolerance in milliseconds.')); o.datatype = 'uinteger'; o.placeholder = '50'; o.depends('main_node', 'urltest'); o = s.taboption('routing', form.ListValue, 'main_udp_node', _('Main UDP node')); o.value('nil', _('Disable')); o.value('same', _('Same as main node')); o.value('urltest', _('URLTest')); for (let i in proxy_nodes) o.value(i, proxy_nodes[i]); o.default = 'nil'; o.depends({'routing_mode': /^((?!custom).)+$/, 'proxy_mode': /^((?!redirect$).)+$/}); o.rmempty = false; o = s.taboption('routing', hp.CBIStaticList, 'main_udp_urltest_nodes', _('URLTest nodes'), _('List of nodes to test.')); for (let i in proxy_nodes) o.value(i, proxy_nodes[i]); o.depends('main_udp_node', 'urltest'); o.rmempty = false; o = s.taboption('routing', form.Value, 'main_udp_urltest_interval', _('Test interval'), _('The test interval in seconds.')); o.datatype = 'uinteger'; o.placeholder = '180'; o.depends('main_udp_node', 'urltest'); o = s.taboption('routing', form.Value, 'main_udp_urltest_tolerance', _('Test tolerance'), _('The test tolerance in milliseconds.')); o.datatype = 'uinteger'; o.placeholder = '50'; o.depends('main_udp_node', 'urltest'); o = s.taboption('routing', form.Value, 'dns_server', _('DNS server'), _('Support UDP, TCP, DoH, DoQ, DoT. TCP protocol will be used if not specified.')); o.value('wan', _('WAN DNS (read from interface)')); o.value('1.1.1.1', _('CloudFlare Public DNS (1.1.1.1)')); o.value('208.67.222.222', _('Cisco Public DNS (208.67.222.222)')); o.value('8.8.8.8', _('Google Public DNS (8.8.8.8)')); o.value('', '---'); o.value('223.5.5.5', _('Aliyun Public DNS (223.5.5.5)')); o.value('119.29.29.29', _('Tencent Public DNS (119.29.29.29)')); o.value('117.50.10.10', _('ThreatBook Public DNS (117.50.10.10)')); o.default = '8.8.8.8'; o.rmempty = false; o.depends({'routing_mode': 'custom', '!reverse': true}); o.validate = function(section_id, value) { if (section_id && !['wan'].includes(value)) { if (!value) return _('Expecting: %s').format(_('non-empty value')); let ipv6_support = this.section.formvalue(section_id, 'ipv6_support'); try { let url = new URL(value.replace(/^.*:\/\//, 'http://')); if (stubValidator.apply('hostname', url.hostname)) return true; else if (stubValidator.apply('ip4addr', url.hostname)) return true; else if ((ipv6_support === '1') && stubValidator.apply('ip6addr', url.hostname.match(/^\[(.+)\]$/)?.[1])) return true; else return _('Expecting: %s').format(_('valid DNS server address')); } catch(e) {} if (!stubValidator.apply((ipv6_support === '1') ? 'ipaddr' : 'ip4addr', value)) return _('Expecting: %s').format(_('valid DNS server address')); } return true; } o = s.taboption('routing', form.Value, 'china_dns_server', _('China DNS server'), _('The dns server for resolving China domains. Support UDP, TCP, DoH, DoQ, DoT.')); o.value('wan', _('WAN DNS (read from interface)')); o.value('223.5.5.5', _('Aliyun Public DNS (223.5.5.5)')); o.value('210.2.4.8', _('CNNIC Public DNS (210.2.4.8)')); o.value('119.29.29.29', _('Tencent Public DNS (119.29.29.29)')); o.value('117.50.10.10', _('ThreatBook Public DNS (117.50.10.10)')); o.depends('routing_mode', 'bypass_mainland_china'); o.default = '223.5.5.5'; o.rmempty = false; o.validate = function(section_id, value) { if (section_id && !['wan'].includes(value)) { if (!value) return _('Expecting: %s').format(_('non-empty value')); try { let url = new URL(value.replace(/^.*:\/\//, 'http://')); if (stubValidator.apply('hostname', url.hostname)) return true; else if (stubValidator.apply('ip4addr', url.hostname)) return true; else if (stubValidator.apply('ip6addr', url.hostname.match(/^\[(.+)\]$/)?.[1])) return true; else return _('Expecting: %s').format(_('valid DNS server address')); } catch(e) {} if (!stubValidator.apply('ipaddr', value)) return _('Expecting: %s').format(_('valid DNS server address')); } return true; } o = s.taboption('routing', form.ListValue, 'routing_mode', _('Routing mode')); o.value('gfwlist', _('GFWList')); o.value('bypass_mainland_china', _('Bypass mainland China')); o.value('proxy_mainland_china', _('Only proxy mainland China')); o.value('custom', _('Custom routing')); o.value('global', _('Global')); o.default = 'bypass_mainland_china'; o.rmempty = false; o.onchange = function(ev, section_id, value) { if (section_id && value === 'custom') this.map.save(null, true); } o = s.taboption('routing', form.Value, 'routing_port', _('Routing ports'), _('Specify target ports to be proxied. Multiple ports must be separated by commas.')); o.value('', _('All ports')); o.value('common', _('Common ports only (bypass P2P traffic)')); o.validate = function(section_id, value) { if (section_id && value && value !== 'common') { let ports = []; for (let i of value.split(',')) { if (!stubValidator.apply('port', i) && !stubValidator.apply('portrange', i)) return _('Expecting: %s').format(_('valid port value')); if (ports.includes(i)) return _('Port %s alrealy exists!').format(i); ports = ports.concat(i); } } return true; } o = s.taboption('routing', form.ListValue, 'proxy_mode', _('Proxy mode')); o.value('redirect', _('Redirect TCP')); if (features.hp_has_tproxy) o.value('redirect_tproxy', _('Redirect TCP + TProxy UDP')); if (features.hp_has_ip_full && features.hp_has_tun) { o.value('redirect_tun', _('Redirect TCP + Tun UDP')); o.value('tun', _('Tun TCP/UDP')); } else { o.description = _('To enable Tun support, you need to install ip-full and kmod-tun'); } o.default = 'redirect_tproxy'; o.rmempty = false; o = s.taboption('routing', form.Flag, 'ipv6_support', _('IPv6 support')); o.default = o.enabled; o.rmempty = false; /* Custom routing settings start */ /* Routing settings start */ o = s.taboption('routing', form.SectionValue, '_routing', form.NamedSection, 'routing', 'homeproxy'); o.depends('routing_mode', 'custom'); ss = o.subsection; so = ss.option(form.ListValue, 'tcpip_stack', _('TCP/IP stack'), _('TCP/IP stack.')); if (features.with_gvisor) { so.value('mixed', _('Mixed')); so.value('gvisor', _('gVisor')); } so.value('system', _('System')); so.default = 'system'; so.depends('homeproxy.config.proxy_mode', 'redirect_tun'); so.depends('homeproxy.config.proxy_mode', 'tun'); so.rmempty = false; so.onchange = function(ev, section_id, value) { let desc = ev.target.nextElementSibling; if (value === 'mixed') desc.innerHTML = _('Mixed system TCP stack and gVisor UDP stack.') else if (value === 'gvisor') desc.innerHTML = _('Based on google/gvisor.'); else if (value === 'system') desc.innerHTML = _('Less compatibility and sometimes better performance.'); } so = ss.option(form.Flag, 'endpoint_independent_nat', _('Enable endpoint-independent NAT'), _('Performance may degrade slightly, so it is not recommended to enable on when it is not needed.')); so.default = so.enabled; so.depends('tcpip_stack', 'mixed'); so.depends('tcpip_stack', 'gvisor'); so.rmempty = false; so = ss.option(form.Value, 'udp_timeout', _('UDP NAT expiration time'), _('In seconds.')); so.datatype = 'uinteger'; so.placeholder = '300'; so.depends('homeproxy.config.proxy_mode', 'redirect_tproxy'); so.depends('homeproxy.config.proxy_mode', 'redirect_tun'); so.depends('homeproxy.config.proxy_mode', 'tun'); so = ss.option(form.Flag, 'bypass_cn_traffic', _('Bypass CN traffic'), _('Bypass mainland China traffic via firewall rules by default.')); so.rmempty = false; so = ss.option(form.ListValue, 'domain_strategy', _('Domain strategy'), _('If set, the requested domain name will be resolved to IP before routing.')); for (let i in hp.dns_strategy) so.value(i, hp.dns_strategy[i]); so = ss.option(form.Flag, 'sniff_override', _('Override destination'), _('Override the connection destination address with the sniffed domain.')); so.default = so.enabled; so.rmempty = false; so = ss.option(form.ListValue, 'default_outbound', _('Default outbound'), _('Default outbound for connections not matched by any routing rules.')); so.load = function(section_id) { delete this.keylist; delete this.vallist; this.value('nil', _('Disable (the service)')); this.value('direct-out', _('Direct')); this.value('block-out', _('Block')); uci.sections(data[0], 'routing_node', (res) => { if (res.enabled === '1') this.value(res['.name'], res.label); }); return this.super('load', section_id); } so.default = 'nil'; so.rmempty = false; so = ss.option(form.ListValue, 'default_outbound_dns', _('Default outbound DNS'), _('Default DNS server for resolving domain name in the server address.')); so.load = function(section_id) { delete this.keylist; delete this.vallist; this.value('default-dns', _('Default DNS (issued by WAN)')); this.value('system-dns', _('System DNS')); uci.sections(data[0], 'dns_server', (res) => { if (res.enabled === '1') this.value(res['.name'], res.label); }); return this.super('load', section_id); } so.default = 'default-dns'; so.rmempty = false; /* Routing settings end */ /* Routing nodes start */ s.tab('routing_node', _('Routing Nodes')); o = s.taboption('routing_node', form.SectionValue, '_routing_node', form.GridSection, 'routing_node'); o.depends('routing_mode', 'custom'); ss = o.subsection; ss.addremove = true; ss.rowcolors = true; ss.sortable = true; ss.nodescriptions = true; ss.modaltitle = L.bind(hp.loadModalTitle, this, _('Routing node'), _('Add a routing node'), data[0]); ss.sectiontitle = L.bind(hp.loadDefaultLabel, this, data[0]); ss.renderSectionAdd = L.bind(hp.renderSectionAdd, this, ss); so = ss.option(form.Value, 'label', _('Label')); so.load = L.bind(hp.loadDefaultLabel, this, data[0]); so.validate = L.bind(hp.validateUniqueValue, this, data[0], 'routing_node', 'label'); so.modalonly = true; so = ss.option(form.Flag, 'enabled', _('Enable')); so.default = so.enabled; so.rmempty = false; so.editable = true; so = ss.option(form.ListValue, 'node', _('Node'), _('Outbound node')); so.value('urltest', _('URLTest')); for (let i in proxy_nodes) so.value(i, proxy_nodes[i]); so.validate = L.bind(hp.validateUniqueValue, this, data[0], 'routing_node', 'node'); so.editable = true; so = ss.option(form.ListValue, 'domain_resolver', _('Domain resolver'), _('For resolving domain name in the server address.')); so.load = function(section_id) { delete this.keylist; delete this.vallist; this.value('', _('Default')); this.value('default-dns', _('Default DNS (issued by WAN)')); this.value('system-dns', _('System DNS')); uci.sections(data[0], 'dns_server', (res) => { if (res.enabled === '1') this.value(res['.name'], res.label); }); return this.super('load', section_id); } so.depends({'node': 'urltest', '!reverse': true}); so.modalonly = true; so = ss.option(form.ListValue, 'domain_strategy', _('Domain strategy'), _('The domain strategy for resolving the domain name in the address.')); for (let i in hp.dns_strategy) so.value(i, hp.dns_strategy[i]); so.depends({'node': 'urltest', '!reverse': true}); so.modalonly = true; so = ss.option(widgets.DeviceSelect, 'bind_interface', _('Bind interface'), _('The network interface to bind to.')); so.multiple = false; so.noaliases = true; so.depends({'outbound': '', 'node': /^((?!urltest$).)+$/}); so.modalonly = true; so = ss.option(form.ListValue, 'outbound', _('Outbound'), _('The tag of the upstream outbound.
    Other dial fields will be ignored when enabled.')); so.load = function(section_id) { delete this.keylist; delete this.vallist; this.value('', _('Direct')); uci.sections(data[0], 'routing_node', (res) => { if (res['.name'] !== section_id && res.enabled === '1') this.value(res['.name'], res.label); }); return this.super('load', section_id); } so.validate = function(section_id, value) { if (section_id && value) { let node = this.section.formvalue(section_id, 'node'); let conflict = false; uci.sections(data[0], 'routing_node', (res) => { if (res['.name'] !== section_id) { if (res.outbound === section_id && res['.name'] == value) conflict = true; else if (res.node === 'urltest' && res.urltest_nodes?.includes(node) && res['.name'] == value) conflict = true; } }); if (conflict) return _('Recursive outbound detected!'); } return true; } so.depends({'node': 'urltest', '!reverse': true}); so.editable = true; so = ss.option(hp.CBIStaticList, 'urltest_nodes', _('URLTest nodes'), _('List of nodes to test.')); for (let i in proxy_nodes) so.value(i, proxy_nodes[i]); so.depends('node', 'urltest'); so.validate = function(section_id) { let value = this.section.formvalue(section_id, 'urltest_nodes'); if (section_id && !value.length) return _('Expecting: %s').format(_('non-empty value')); return true; } so.modalonly = true; so = ss.option(form.Value, 'urltest_url', _('Test URL'), _('The URL to test.')); so.placeholder = 'https://www.gstatic.com/generate_204'; so.validate = function(section_id, value) { if (section_id && value) { try { let url = new URL(value); if (!url.hostname) return _('Expecting: %s').format(_('valid URL')); } catch(e) { return _('Expecting: %s').format(_('valid URL')); } } return true; } so.depends('node', 'urltest'); so.modalonly = true; so = ss.option(form.Value, 'urltest_interval', _('Test interval'), _('The test interval in seconds.')); so.datatype = 'uinteger'; so.placeholder = '180'; so.validate = function(section_id, value) { if (section_id && value) { let idle_timeout = this.section.formvalue(section_id, 'idle_timeout') || '1800'; if (parseInt(value) > parseInt(idle_timeout)) return _('Test interval must be less or equal than idle timeout.'); } return true; } so.depends('node', 'urltest'); so.modalonly = true; so = ss.option(form.Value, 'urltest_tolerance', _('Test tolerance'), _('The test tolerance in milliseconds.')); so.datatype = 'uinteger'; so.placeholder = '50'; so.depends('node', 'urltest'); so.modalonly = true; so = ss.option(form.Value, 'urltest_idle_timeout', _('Idle timeout'), _('The idle timeout in seconds.')); so.datatype = 'uinteger'; so.placeholder = '1800'; so.depends('node', 'urltest'); so.modalonly = true; so = ss.option(form.Flag, 'urltest_interrupt_exist_connections', _('Interrupt existing connections'), _('Interrupt existing connections when the selected outbound has changed.')); so.depends('node', 'urltest'); so.modalonly = true; /* Routing nodes end */ /* Routing rules start */ s.tab('routing_rule', _('Routing Rules')); o = s.taboption('routing_rule', form.SectionValue, '_routing_rule', form.GridSection, 'routing_rule'); o.depends('routing_mode', 'custom'); ss = o.subsection; ss.addremove = true; ss.rowcolors = true; ss.sortable = true; ss.nodescriptions = true; ss.modaltitle = L.bind(hp.loadModalTitle, this, _('Routing rule'), _('Add a routing rule'), data[0]); ss.sectiontitle = L.bind(hp.loadDefaultLabel, this, data[0]); ss.renderSectionAdd = L.bind(hp.renderSectionAdd, this, ss); ss.tab('field_other', _('Other fields')); ss.tab('field_host', _('Host/IP fields')); ss.tab('field_port', _('Port fields')); ss.tab('fields_process', _('Process fields')); so = ss.taboption('field_other', form.Value, 'label', _('Label')); so.load = L.bind(hp.loadDefaultLabel, this, data[0]); so.validate = L.bind(hp.validateUniqueValue, this, data[0], 'routing_rule', 'label'); so.modalonly = true; so = ss.taboption('field_other', form.Flag, 'enabled', _('Enable')); so.default = so.enabled; so.rmempty = false; so.editable = true; so = ss.taboption('field_other', form.ListValue, 'mode', _('Mode'), _('The default rule uses the following matching logic:
    ' + '(domain || domain_suffix || domain_keyword || domain_regex || ip_cidr || ip_is_private) &&
    ' + '(port || port_range) &&
    ' + '(source_ip_cidr || source_ip_is_private) &&
    ' + '(source_port || source_port_range) &&
    ' + 'other fields.
    ' + 'Additionally, included rule sets can be considered merged rather than as a single rule sub-item.')); so.value('default', _('Default')); so.default = 'default'; so.rmempty = false; so.readonly = true; so = ss.taboption('field_other', form.ListValue, 'ip_version', _('IP version'), _('4 or 6. Not limited if empty.')); so.value('4', _('IPv4')); so.value('6', _('IPv6')); so.value('', _('Both')); so.modalonly = true; so = ss.taboption('field_other', form.MultiValue, 'protocol', _('Protocol'), _('Sniffed protocol, see Sniff for details.')); so.value('bittorrent', _('BitTorrent')); so.value('dns', _('DNS')); so.value('dtls', _('DTLS')); so.value('http', _('HTTP')); so.value('quic', _('QUIC')); so.value('rdp', _('RDP')); so.value('ssh', _('SSH')); so.value('stun', _('STUN')); so.value('tls', _('TLS')); so = ss.taboption('field_other', form.Value, 'client', _('Client'), _('Sniffed client type (QUIC client type or SSH client name).')); so.value('chromium', _('Chromium / Cronet')); so.value('firefox', _('Firefox / uquic firefox')); so.value('quic-go', _('quic-go / uquic chrome')); so.value('safari', _('Safari / Apple Network API')); so.depends('protocol', 'quic'); so.depends('protocol', 'ssh'); so.modalonly = true; so = ss.taboption('field_other', form.ListValue, 'network', _('Network')); so.value('tcp', _('TCP')); so.value('udp', _('UDP')); so.value('', _('Both')); so = ss.taboption('field_other', form.DynamicList, 'user', _('User'), _('Match user name.')); so.modalonly = true; so = ss.taboption('field_other', hp.CBIStaticList, 'rule_set', _('Rule set'), _('Match rule set.')); so.load = function(section_id) { delete this.keylist; delete this.vallist; uci.sections(data[0], 'ruleset', (res) => { if (res.enabled === '1') this.value(res['.name'], res.label); }); return this.super('load', section_id); } so.modalonly = true; so = ss.taboption('field_other', form.Flag, 'rule_set_ip_cidr_match_source', _('Rule set IP CIDR as source IP'), _('Make IP CIDR in rule set used to match the source IP.')); so.modalonly = true; so = ss.taboption('field_other', form.Flag, 'invert', _('Invert'), _('Invert match result.')); so.modalonly = true; so = ss.taboption('field_other', form.ListValue, 'action', _('Action')); so.value('route', _('Route')); so.value('route-options', _('Route options')); so.value('reject', _('Reject')); so.value('resolve', _('Resolve')); so.default = 'route'; so.rmempty = false; so.editable = true; so = ss.taboption('field_other', form.ListValue, 'outbound', _('Outbound'), _('Tag of the target outbound.')); so.load = function(section_id) { delete this.keylist; delete this.vallist; this.value('direct-out', _('Direct')); uci.sections(data[0], 'routing_node', (res) => { if (res.enabled === '1') this.value(res['.name'], res.label); }); return this.super('load', section_id); } so.rmempty = false; so.depends('action', 'route'); so.editable = true; so = ss.taboption('field_other', form.Value, 'override_address', _('Override address'), _('Override the connection destination address.')); so.datatype = 'ipaddr'; so.depends('action', 'route'); so.depends('action', 'route-options'); so.modalonly = true; so = ss.taboption('field_other', form.Value, 'override_port', _('Override port'), _('Override the connection destination port.')); so.datatype = 'port'; so.depends('action', 'route'); so.depends('action', 'route-options'); so.modalonly = true; so = ss.taboption('field_other', form.Flag, 'udp_disable_domain_unmapping', _('Disable UDP domain unmapping'), _('If enabled, for UDP proxy requests addressed to a domain, the original packet address will be sent in the response instead of the mapped domain.')); so.depends('action', 'route'); so.depends('action', 'route-options'); so.modalonly = true; so = ss.taboption('field_other', form.Flag, 'udp_connect', _('connect UDP connections'), _('If enabled, attempts to connect UDP connection to the destination instead of listen.')); so.depends('action', 'route'); so.depends('action', 'route-options'); so.modalonly = true; so = ss.taboption('field_other', form.Value, 'udp_timeout', _('UDP timeout'), _('Timeout for UDP connections.
    Setting a larger value than the UDP timeout in inbounds will have no effect.')); so.datatype = 'uinteger'; so.depends('action', 'route'); so.depends('action', 'route-options'); so.modalonly = true; so = ss.taboption('field_other', form.Flag, 'tls_record_fragment', _('TLS record fragment'), _('Fragment TLS handshake into multiple TLS records.')); so.depends('action', 'route'); so.depends('action', 'route-options'); so.modalonly = true; so = ss.taboption('field_other', form.Flag, 'tls_fragment', _('TLS fragment'), _('Fragment TLS handshakes. Due to poor performance, try %s first.').format( _('TLS record fragment'))); so.depends('action', 'route'); so.depends('action', 'route-options'); so.modalonly = true; so = ss.taboption('field_other', form.Value, 'tls_fragment_fallback_delay', _('Fragment fallback delay'), _('The fallback value in milliseconds used when TLS segmentation cannot automatically determine the wait time.')); so.datatype = 'uinteger'; so.placeholder = '500'; so.depends('tls_fragment', '1'); so.modalonly = true; so = ss.taboption('field_other', form.ListValue, 'resolve_server', _('DNS server'), _('Specifies DNS server tag to use instead of selecting through DNS routing.')); so.load = function(section_id) { delete this.keylist; delete this.vallist; this.value('', _('Default')); this.value('default-dns', _('Default DNS (issued by WAN)')); this.value('system-dns', _('System DNS')); uci.sections(data[0], 'dns_server', (res) => { if (res.enabled === '1') this.value(res['.name'], res.label); }); return this.super('load', section_id); } so.depends('action', 'resolve'); so.modalonly = true; so = ss.taboption('field_other', form.ListValue, 'reject_method', _('Method')); so.value('default', _('Reply with TCP RST / ICMP port unreachable')); so.value('drop', _('Drop packets')); so.depends('action', 'reject'); so.modalonly = true; so = ss.taboption('field_other', form.Flag, 'reject_no_drop', _('Don\'t drop packets'), _('%s will be temporarily overwritten to %s after 50 triggers in 30s if not enabled.').format( _('Method'), _('Drop packets'))); so.depends('reject_method', 'default'); so.modalonly = true; so = ss.taboption('field_other', form.ListValue, 'resolve_strategy', _('Resolve strategy'), _('Domain strategy for resolving the domain names.')); for (let i in hp.dns_strategy) so.value(i, hp.dns_strategy[i]); so.depends('action', 'resolve'); so.modalonly = true; so = ss.taboption('field_other', form.Flag, 'resolve_disable_cache', _('Disable DNS cache'), _('Disable DNS cache in this query.')); so.depends('action', 'resolve'); so.modalonly = true; so = ss.taboption('field_other', form.Value, 'resolve_rewrite_ttl', _('Rewrite TTL'), _('Rewrite TTL in DNS responses.')); so.datatype = 'uinteger'; so.depends('action', 'resolve'); so.modalonly = true; so = ss.taboption('field_other', form.Value, 'resolve_client_subnet', _('EDNS Client subnet'), _('Append a edns0-subnet OPT extra record with the specified IP prefix to every query by default.
    ' + 'If value is an IP address instead of prefix, /32 or /128 will be appended automatically.')); so.datatype = 'or(cidr, ipaddr)'; so.depends('action', 'resolve'); so.modalonly = true; so = ss.taboption('field_host', form.DynamicList, 'domain', _('Domain name'), _('Match full domain.')); so.datatype = 'hostname'; so.modalonly = true; so = ss.taboption('field_host', form.DynamicList, 'domain_suffix', _('Domain suffix'), _('Match domain suffix.')); so.modalonly = true; so = ss.taboption('field_host', form.DynamicList, 'domain_keyword', _('Domain keyword'), _('Match domain using keyword.')); so.modalonly = true; so = ss.taboption('field_host', form.DynamicList, 'domain_regex', _('Domain regex'), _('Match domain using regular expression.')); so.modalonly = true; so = ss.taboption('field_host', form.DynamicList, 'source_ip_cidr', _('Source IP CIDR'), _('Match source IP CIDR.')); so.datatype = 'or(cidr, ipaddr)'; so.modalonly = true; so = ss.taboption('field_host', form.Flag, 'source_ip_is_private', _('Match private source IP')); so.modalonly = true; so = ss.taboption('field_host', form.DynamicList, 'ip_cidr', _('IP CIDR'), _('Match IP CIDR.')); so.datatype = 'or(cidr, ipaddr)'; so.modalonly = true; so = ss.taboption('field_host', form.Flag, 'ip_is_private', _('Match private IP')); so.modalonly = true; so = ss.taboption('field_port', form.DynamicList, 'source_port', _('Source port'), _('Match source port.')); so.datatype = 'port'; so.modalonly = true; so = ss.taboption('field_port', form.DynamicList, 'source_port_range', _('Source port range'), _('Match source port range. Format as START:/:END/START:END.')); so.validate = hp.validatePortRange; so.modalonly = true; so = ss.taboption('field_port', form.DynamicList, 'port', _('Port'), _('Match port.')); so.datatype = 'port'; so.modalonly = true; so = ss.taboption('field_port', form.DynamicList, 'port_range', _('Port range'), _('Match port range. Format as START:/:END/START:END.')); so.validate = hp.validatePortRange; so.modalonly = true; so = ss.taboption('fields_process', form.DynamicList, 'process_name', _('Process name'), _('Match process name.')); so.modalonly = true; so = ss.taboption('fields_process', form.DynamicList, 'process_path', _('Process path'), _('Match process path.')); so.modalonly = true; so = ss.taboption('fields_process', form.DynamicList, 'process_path_regex', _('Process path (regex)'), _('Match process path using regular expression.')); so.modalonly = true; /* Routing rules end */ /* DNS settings start */ s.tab('dns', _('DNS Settings')); o = s.taboption('dns', form.SectionValue, '_dns', form.NamedSection, 'dns', 'homeproxy'); o.depends('routing_mode', 'custom'); ss = o.subsection; so = ss.option(form.ListValue, 'default_strategy', _('Default DNS strategy'), _('The DNS strategy for resolving the domain name in the address.')); for (let i in hp.dns_strategy) so.value(i, hp.dns_strategy[i]); so = ss.option(form.ListValue, 'default_server', _('Default DNS server')); so.load = function(section_id) { delete this.keylist; delete this.vallist; this.value('default-dns', _('Default DNS (issued by WAN)')); this.value('system-dns', _('System DNS')); uci.sections(data[0], 'dns_server', (res) => { if (res.enabled === '1') this.value(res['.name'], res.label); }); return this.super('load', section_id); } so.default = 'default-dns'; so.rmempty = false; so = ss.option(form.Flag, 'disable_cache', _('Disable DNS cache')); so = ss.option(form.Flag, 'disable_cache_expire', _('Disable cache expire')); so.depends('disable_cache', '0'); so = ss.option(form.Flag, 'independent_cache', _('Independent cache per server'), _('Make each DNS server\'s cache independent for special purposes. If enabled, will slightly degrade performance.')); so.depends('disable_cache', '0'); so = ss.option(form.Value, 'client_subnet', _('EDNS Client subnet'), _('Append a edns0-subnet OPT extra record with the specified IP prefix to every query by default.
    ' + 'If value is an IP address instead of prefix, /32 or /128 will be appended automatically.')); so.datatype = 'or(cidr, ipaddr)'; so = ss.option(form.Flag, 'cache_file_store_rdrc', _('Store RDRC'), _('Store rejected DNS response cache.
    ' + 'The check results of Address filter DNS rule items will be cached until expiration.')); so = ss.option(form.Value, 'cache_file_rdrc_timeout', _('RDRC timeout'), _('Timeout of rejected DNS response cache in seconds. 604800 (7d) is used by default.')); so.datatype = 'uinteger'; so.depends('cache_file_store_rdrc', '1'); /* DNS settings end */ /* DNS servers start */ s.tab('dns_server', _('DNS Servers')); o = s.taboption('dns_server', form.SectionValue, '_dns_server', form.GridSection, 'dns_server'); o.depends('routing_mode', 'custom'); ss = o.subsection; ss.addremove = true; ss.rowcolors = true; ss.sortable = true; ss.nodescriptions = true; ss.modaltitle = L.bind(hp.loadModalTitle, this, _('DNS server'), _('Add a DNS server'), data[0]); ss.sectiontitle = L.bind(hp.loadDefaultLabel, this, data[0]); ss.renderSectionAdd = L.bind(hp.renderSectionAdd, this, ss); so = ss.option(form.Value, 'label', _('Label')); so.load = L.bind(hp.loadDefaultLabel, this, data[0]); so.validate = L.bind(hp.validateUniqueValue, this, data[0], 'dns_server', 'label'); so.modalonly = true; so = ss.option(form.Flag, 'enabled', _('Enable')); so.default = so.enabled; so.rmempty = false; so.editable = true; so = ss.option(form.ListValue, 'type', _('Type')); so.value('udp', _('UDP')); so.value('tcp', _('TCP')); so.value('tls', _('TLS')); so.value('https', _('HTTPS')); so.value('h3', _('HTTP/3')); so.value('quic', _('QUIC')); so.default = 'udp'; so.rmempty = false; so = ss.option(form.Value, 'server', _('Address'), _('The address of the dns server.')); so.datatype = 'or(hostname, ipaddr)'; so.rmempty = false; so = ss.option(form.Value, 'server_port', _('Port'), _('The port of the DNS server.')); so.placeholder = 'auto'; so.datatype = 'port'; so = ss.option(form.Value, 'path', _('Path'), _('The path of the DNS server.')); so.placeholder = '/dns-query'; so.depends('type', 'https'); so.depends('type', 'h3'); so.modalonly = true; so = ss.option(form.DynamicList, 'headers', _('Headers'), _('Additional headers to be sent to the DNS server.')); so.depends('type', 'https'); so.depends('type', 'h3'); so.modalonly = true; so = ss.option(form.Value, 'tls_sni', _('TLS SNI'), _('Used to verify the hostname on the returned certificates.')); so.depends('type', 'tls'); so.depends('type', 'https'); so.depends('type', 'h3'); so.depends('type', 'quic'); so.modalonly = true; so = ss.option(form.ListValue, 'address_resolver', _('Address resolver'), _('Tag of a another server to resolve the domain name in the address. Required if address contains domain.')); so.load = function(section_id) { delete this.keylist; delete this.vallist; this.value('', _('None')); this.value('default-dns', _('Default DNS (issued by WAN)')); this.value('system-dns', _('System DNS')); uci.sections(data[0], 'dns_server', (res) => { if (res['.name'] !== section_id && res.enabled === '1') this.value(res['.name'], res.label); }); return this.super('load', section_id); } so.validate = function(section_id, value) { if (section_id && value) { let conflict = false; uci.sections(data[0], 'dns_server', (res) => { if (res['.name'] !== section_id) if (res.address_resolver === section_id && res['.name'] == value) conflict = true; }); if (conflict) return _('Recursive resolver detected!'); } return true; } so.modalonly = true; so = ss.option(form.ListValue, 'address_strategy', _('Address strategy'), _('The domain strategy for resolving the domain name in the address.')); for (let i in hp.dns_strategy) so.value(i, hp.dns_strategy[i]); so.depends({'address_resolver': '', '!reverse': true}); so.modalonly = true; so = ss.option(form.ListValue, 'outbound', _('Outbound'), _('Tag of an outbound for connecting to the dns server.')); so.load = function(section_id) { delete this.keylist; delete this.vallist; this.value('direct-out', _('Direct')); uci.sections(data[0], 'routing_node', (res) => { if (res.enabled === '1') this.value(res['.name'], res.label); }); return this.super('load', section_id); } so.default = 'direct-out'; so.rmempty = false; so.editable = true; /* DNS servers end */ /* DNS rules start */ s.tab('dns_rule', _('DNS Rules')); o = s.taboption('dns_rule', form.SectionValue, '_dns_rule', form.GridSection, 'dns_rule'); o.depends('routing_mode', 'custom'); ss = o.subsection; ss.addremove = true; ss.rowcolors = true; ss.sortable = true; ss.nodescriptions = true; ss.modaltitle = L.bind(hp.loadModalTitle, this, _('DNS rule'), _('Add a DNS rule'), data[0]); ss.sectiontitle = L.bind(hp.loadDefaultLabel, this, data[0]); ss.renderSectionAdd = L.bind(hp.renderSectionAdd, this, ss); ss.tab('field_other', _('Other fields')); ss.tab('field_host', _('Host/IP fields')); ss.tab('field_port', _('Port fields')); ss.tab('fields_process', _('Process fields')); so = ss.taboption('field_other', form.Value, 'label', _('Label')); so.load = L.bind(hp.loadDefaultLabel, this, data[0]); so.validate = L.bind(hp.validateUniqueValue, this, data[0], 'dns_rule', 'label'); so.modalonly = true; so = ss.taboption('field_other', form.Flag, 'enabled', _('Enable')); so.default = so.enabled; so.rmempty = false; so.editable = true; so = ss.taboption('field_other', form.ListValue, 'mode', _('Mode'), _('The default rule uses the following matching logic:
    ' + '(domain || domain_suffix || domain_keyword || domain_regex) &&
    ' + '(port || port_range) &&
    ' + '(source_ip_cidr || source_ip_is_private) &&
    ' + '(source_port || source_port_range) &&
    ' + 'other fields.
    ' + 'Additionally, included rule sets can be considered merged rather than as a single rule sub-item.')); so.value('default', _('Default')); so.default = 'default'; so.rmempty = false; so.readonly = true; so.modalonly = true; so = ss.taboption('field_other', form.ListValue, 'ip_version', _('IP version')); so.value('4', _('IPv4')); so.value('6', _('IPv6')); so.value('', _('Both')); so.modalonly = true; so = ss.taboption('field_other', form.DynamicList, 'query_type', _('Query type'), _('Match query type.')); so.modalonly = true; so = ss.taboption('field_other', form.ListValue, 'network', _('Network')); so.value('tcp', _('TCP')); so.value('udp', _('UDP')); so.value('', _('Both')); so = ss.taboption('field_other', form.MultiValue, 'protocol', _('Protocol'), _('Sniffed protocol, see Sniff for details.')); so.value('bittorrent', _('BitTorrent')); so.value('dtls', _('DTLS')); so.value('http', _('HTTP')); so.value('quic', _('QUIC')); so.value('rdp', _('RDP')); so.value('ssh', _('SSH')); so.value('stun', _('STUN')); so.value('tls', _('TLS')); so = ss.taboption('field_other', form.DynamicList, 'user', _('User'), _('Match user name.')); so.modalonly = true; so = ss.taboption('field_other', hp.CBIStaticList, 'rule_set', _('Rule set'), _('Match rule set.')); so.load = function(section_id) { delete this.keylist; delete this.vallist; uci.sections(data[0], 'ruleset', (res) => { if (res.enabled === '1') this.value(res['.name'], res.label); }); return this.super('load', section_id); } so.modalonly = true; so = ss.taboption('field_other', form.Flag, 'rule_set_ip_cidr_match_source', _('Rule set IP CIDR as source IP'), _('Make IP CIDR in rule sets match the source IP.')); so.modalonly = true; so = ss.taboption('field_other', form.Flag, 'rule_set_ip_cidr_accept_empty', _('Accept empty query response'), _('Make IP CIDR in rule-sets accept empty query response.')); so.modalonly = true; so = ss.taboption('field_other', form.Flag, 'invert', _('Invert'), _('Invert match result.')); so.modalonly = true; so = ss.taboption('field_other', form.ListValue, 'action', _('Action')); so.value('route', _('Route')); so.value('route-options', _('Route options')); so.value('reject', _('Reject')); so.value('predefined', _('Predefined')); so.default = 'route'; so.rmempty = false; so.editable = true; so = ss.taboption('field_other', form.ListValue, 'server', _('Server'), _('Tag of the target dns server.')); so.load = function(section_id) { delete this.keylist; delete this.vallist; this.value('default-dns', _('Default DNS (issued by WAN)')); this.value('system-dns', _('System DNS')); uci.sections(data[0], 'dns_server', (res) => { if (res.enabled === '1') this.value(res['.name'], res.label); }); return this.super('load', section_id); } so.rmempty = false; so.editable = true; so.depends('action', 'route'); so = ss.taboption('field_other', form.ListValue, 'domain_strategy', _('Domain strategy'), _('Set domain strategy for this query.')); for (let i in hp.dns_strategy) so.value(i, hp.dns_strategy[i]); so.depends('action', 'route'); so.modalonly = true; so = ss.taboption('field_other', form.Flag, 'dns_disable_cache', _('Disable dns cache'), _('Disable cache and save cache in this query.')); so.depends('action', 'route'); so.depends('action', 'route-options'); so.modalonly = true; so = ss.taboption('field_other', form.Value, 'rewrite_ttl', _('Rewrite TTL'), _('Rewrite TTL in DNS responses.')); so.datatype = 'uinteger'; so.depends('action', 'route'); so.depends('action', 'route-options'); so.modalonly = true; so = ss.taboption('field_other', form.Value, 'client_subnet', _('EDNS Client subnet'), _('Append a edns0-subnet OPT extra record with the specified IP prefix to every query by default.
    ' + 'If value is an IP address instead of prefix, /32 or /128 will be appended automatically.')); so.datatype = 'or(cidr, ipaddr)'; so.depends('action', 'route'); so.depends('action', 'route-options'); so.modalonly = true; so = ss.taboption('field_other', form.ListValue, 'reject_method', _('Method')); so.value('default', _('Reply with REFUSED')); so.value('drop', _('Drop requests')); so.default = 'default'; so.depends('action', 'reject'); so.modalonly = true; so = ss.taboption('field_other', form.Flag, 'reject_no_drop', _('Don\'t drop requests'), _('%s will be temporarily overwritten to %s after 50 triggers in 30s if not enabled.').format( _('Method'), _('Drop requests'))); so.depends('reject_method', 'default'); so.modalonly = true; so = ss.taboption('field_other', form.ListValue, 'predefined_rcode', _('RCode'), _('The response code.')); so.value('NOERROR'); so.value('FORMERR'); so.value('SERVFAIL'); so.value('NXDOMAIN'); so.value('NOTIMP'); so.value('REFUSED'); so.default = 'NOERROR'; so.depends('action', 'predefined'); so.modalonly = true; so = ss.taboption('field_other', form.DynamicList, 'predefined_answer', _('Answer'), _('List of text DNS record to respond as answers.')); so.depends('action', 'predefined'); so.modalonly = true; so = ss.taboption('field_other', form.DynamicList, 'predefined_ns', _('NS'), _('List of text DNS record to respond as name servers.')); so.depends('action', 'predefined'); so.modalonly = true; so = ss.taboption('field_other', form.DynamicList, 'predefined_extra', _('Extra records'), _('List of text DNS record to respond as extra records.')); so.depends('action', 'predefined'); so.modalonly = true; so = ss.taboption('field_host', form.DynamicList, 'domain', _('Domain name'), _('Match full domain.')); so.datatype = 'hostname'; so.modalonly = true; so = ss.taboption('field_host', form.DynamicList, 'domain_suffix', _('Domain suffix'), _('Match domain suffix.')); so.modalonly = true; so = ss.taboption('field_host', form.DynamicList, 'domain_keyword', _('Domain keyword'), _('Match domain using keyword.')); so.modalonly = true; so = ss.taboption('field_host', form.DynamicList, 'domain_regex', _('Domain regex'), _('Match domain using regular expression.')); so.modalonly = true; so = ss.taboption('field_host', form.DynamicList, 'source_ip_cidr', _('Source IP CIDR'), _('Match source IP CIDR.')); so.datatype = 'or(cidr, ipaddr)'; so.modalonly = true; so = ss.taboption('field_host', form.Flag, 'source_ip_is_private', _('Match private source IP')); so.modalonly = true; so = ss.taboption('field_host', form.DynamicList, 'ip_cidr', _('IP CIDR'), _('Match IP CIDR with query response. Current rule will be skipped if not match.')); so.datatype = 'or(cidr, ipaddr)'; so.modalonly = true; so = ss.taboption('field_host', form.Flag, 'ip_is_private', _('Match private IP'), _('Match private IP with query response.')); so.modalonly = true; so = ss.taboption('field_port', form.DynamicList, 'source_port', _('Source port'), _('Match source port.')); so.datatype = 'port'; so.modalonly = true; so = ss.taboption('field_port', form.DynamicList, 'source_port_range', _('Source port range'), _('Match source port range. Format as START:/:END/START:END.')); so.validate = hp.validatePortRange; so.modalonly = true; so = ss.taboption('field_port', form.DynamicList, 'port', _('Port'), _('Match port.')); so.datatype = 'port'; so.modalonly = true; so = ss.taboption('field_port', form.DynamicList, 'port_range', _('Port range'), _('Match port range. Format as START:/:END/START:END.')); so.validate = hp.validatePortRange; so.modalonly = true; so = ss.taboption('fields_process', form.DynamicList, 'process_name', _('Process name'), _('Match process name.')); so.modalonly = true; so = ss.taboption('fields_process', form.DynamicList, 'process_path', _('Process path'), _('Match process path.')); so.modalonly = true; so = ss.taboption('fields_process', form.DynamicList, 'process_path_regex', _('Process path (regex)'), _('Match process path using regular expression.')); so.modalonly = true; /* DNS rules end */ /* Custom routing settings end */ /* Rule set settings start */ s.tab('ruleset', _('Rule Set')); o = s.taboption('ruleset', form.SectionValue, '_ruleset', form.GridSection, 'ruleset'); o.depends('routing_mode', 'custom'); ss = o.subsection; ss.addremove = true; ss.rowcolors = true; ss.sortable = true; ss.nodescriptions = true; ss.modaltitle = L.bind(hp.loadModalTitle, this, _('Rule set'), _('Add a rule set'), data[0]); ss.sectiontitle = L.bind(hp.loadDefaultLabel, this, data[0]); ss.renderSectionAdd = L.bind(hp.renderSectionAdd, this, ss); so = ss.option(form.Value, 'label', _('Label')); so.load = L.bind(hp.loadDefaultLabel, this, data[0]); so.validate = L.bind(hp.validateUniqueValue, this, data[0], 'ruleset', 'label'); so.modalonly = true; so = ss.option(form.Flag, 'enabled', _('Enable')); so.default = so.enabled; so.rmempty = false; so.editable = true; so = ss.option(form.ListValue, 'type', _('Type')); so.value('local', _('Local')); so.value('remote', _('Remote')); so.default = 'remote'; so.rmempty = false; so = ss.option(form.ListValue, 'format', _('Format')); so.value('binary', _('Binary file')); so.value('source', _('Source file')); so.default = 'binary'; so.rmempty = false; so = ss.option(form.Value, 'path', _('Path')); so.datatype = 'file'; so.placeholder = '/etc/homeproxy/ruleset/example.json'; so.rmempty = false; so.depends('type', 'local'); so.modalonly = true; so = ss.option(form.Value, 'url', _('Rule set URL')); so.validate = function(section_id, value) { if (section_id) { if (!value) return _('Expecting: %s').format(_('non-empty value')); try { let url = new URL(value); if (!url.hostname) return _('Expecting: %s').format(_('valid URL')); } catch(e) { return _('Expecting: %s').format(_('valid URL')); } } return true; } so.rmempty = false; so.depends('type', 'remote'); so.modalonly = true; so = ss.option(form.ListValue, 'outbound', _('Outbound'), _('Tag of the outbound to download rule set.')); so.load = function(section_id) { delete this.keylist; delete this.vallist; this.value('', _('Default')); this.value('direct-out', _('Direct')); uci.sections(data[0], 'routing_node', (res) => { if (res.enabled === '1') this.value(res['.name'], res.label); }); return this.super('load', section_id); } so.depends('type', 'remote'); so = ss.option(form.Value, 'update_interval', _('Update interval'), _('Update interval of rule set.')); so.placeholder = '1d'; so.depends('type', 'remote'); /* Rule set settings end */ /* ACL settings start */ s.tab('control', _('Access Control')); o = s.taboption('control', form.SectionValue, '_control', form.NamedSection, 'control', 'homeproxy'); ss = o.subsection; /* Interface control start */ ss.tab('interface', _('Interface Control')); so = ss.taboption('interface', widgets.DeviceSelect, 'listen_interfaces', _('Listen interfaces'), _('Only process traffic from specific interfaces. Leave empty for all.')); so.multiple = true; so.noaliases = true; so = ss.taboption('interface', widgets.DeviceSelect, 'bind_interface', _('Bind interface'), _('Bind outbound traffic to specific interface. Leave empty to auto detect.')); so.multiple = false; so.noaliases = true; /* Interface control end */ /* LAN IP policy start */ ss.tab('lan_ip_policy', _('LAN IP Policy')); so = ss.taboption('lan_ip_policy', form.ListValue, 'lan_proxy_mode', _('Proxy filter mode')); so.value('disabled', _('Disable')); so.value('listed_only', _('Proxy listed only')); so.value('except_listed', _('Proxy all except listed')); so.default = 'disabled'; so.rmempty = false; so = fwtool.addIPOption(ss, 'lan_ip_policy', 'lan_direct_ipv4_ips', _('Direct IPv4 IP-s'), null, 'ipv4', hosts, true); so.depends('lan_proxy_mode', 'except_listed'); so = fwtool.addIPOption(ss, 'lan_ip_policy', 'lan_direct_ipv6_ips', _('Direct IPv6 IP-s'), null, 'ipv6', hosts, true); so.depends({'lan_proxy_mode': 'except_listed', 'homeproxy.config.ipv6_support': '1'}); so = fwtool.addMACOption(ss, 'lan_ip_policy', 'lan_direct_mac_addrs', _('Direct MAC-s'), null, hosts); so.depends('lan_proxy_mode', 'except_listed'); so = fwtool.addIPOption(ss, 'lan_ip_policy', 'lan_proxy_ipv4_ips', _('Proxy IPv4 IP-s'), null, 'ipv4', hosts, true); so.depends('lan_proxy_mode', 'listed_only'); so = fwtool.addIPOption(ss, 'lan_ip_policy', 'lan_proxy_ipv6_ips', _('Proxy IPv6 IP-s'), null, 'ipv6', hosts, true); so.depends({'lan_proxy_mode': 'listed_only', 'homeproxy.config.ipv6_support': '1'}); so = fwtool.addMACOption(ss, 'lan_ip_policy', 'lan_proxy_mac_addrs', _('Proxy MAC-s'), null, hosts); so.depends('lan_proxy_mode', 'listed_only'); so = fwtool.addIPOption(ss, 'lan_ip_policy', 'lan_gaming_mode_ipv4_ips', _('Gaming mode IPv4 IP-s'), null, 'ipv4', hosts, true); so = fwtool.addIPOption(ss, 'lan_ip_policy', 'lan_gaming_mode_ipv6_ips', _('Gaming mode IPv6 IP-s'), null, 'ipv6', hosts, true); so.depends('homeproxy.config.ipv6_support', '1'); so = fwtool.addMACOption(ss, 'lan_ip_policy', 'lan_gaming_mode_mac_addrs', _('Gaming mode MAC-s'), null, hosts); so = fwtool.addIPOption(ss, 'lan_ip_policy', 'lan_global_proxy_ipv4_ips', _('Global proxy IPv4 IP-s'), null, 'ipv4', hosts, true); so.depends({'homeproxy.config.routing_mode': 'custom', '!reverse': true}); so = fwtool.addIPOption(ss, 'lan_ip_policy', 'lan_global_proxy_ipv6_ips', _('Global proxy IPv6 IP-s'), null, 'ipv6', hosts, true); so.depends({'homeproxy.config.routing_mode': /^((?!custom).)+$/, 'homeproxy.config.ipv6_support': '1'}); so = fwtool.addMACOption(ss, 'lan_ip_policy', 'lan_global_proxy_mac_addrs', _('Global proxy MAC-s'), null, hosts); so.depends({'homeproxy.config.routing_mode': 'custom', '!reverse': true}); /* LAN IP policy end */ /* WAN IP policy start */ ss.tab('wan_ip_policy', _('WAN IP Policy')); so = ss.taboption('wan_ip_policy', form.DynamicList, 'wan_proxy_ipv4_ips', _('Proxy IPv4 IP-s')); so.datatype = 'or(ip4addr, cidr4)'; so = ss.taboption('wan_ip_policy', form.DynamicList, 'wan_proxy_ipv6_ips', _('Proxy IPv6 IP-s')); so.datatype = 'or(ip6addr, cidr6)'; so.depends('homeproxy.config.ipv6_support', '1'); so = ss.taboption('wan_ip_policy', form.DynamicList, 'wan_direct_ipv4_ips', _('Direct IPv4 IP-s')); so.datatype = 'or(ip4addr, cidr4)'; so = ss.taboption('wan_ip_policy', form.DynamicList, 'wan_direct_ipv6_ips', _('Direct IPv6 IP-s')); so.datatype = 'or(ip6addr, cidr6)'; so.depends('homeproxy.config.ipv6_support', '1'); /* WAN IP policy end */ /* Proxy domain list start */ ss.tab('proxy_domain_list', _('Proxy Domain List')); so = ss.taboption('proxy_domain_list', form.TextValue, '_proxy_domain_list'); so.rows = 10; so.monospace = true; so.datatype = 'hostname'; so.depends({'homeproxy.config.routing_mode': 'custom', '!reverse': true}); so.load = function(/* ... */) { return L.resolveDefault(callReadDomainList('proxy_list')).then((res) => { return res.content; }, {}); } so.write = function(_section_id, value) { return callWriteDomainList('proxy_list', value); } so.remove = function(/* ... */) { let routing_mode = this.section.formvalue('config', 'routing_mode'); if (routing_mode !== 'custom') return callWriteDomainList('proxy_list', ''); return true; } so.validate = function(section_id, value) { if (section_id && value) for (let i of value.split('\n')) if (i && !stubValidator.apply('hostname', i)) return _('Expecting: %s').format(_('valid hostname')); return true; } /* Proxy domain list end */ /* Direct domain list start */ ss.tab('direct_domain_list', _('Direct Domain List')); so = ss.taboption('direct_domain_list', form.TextValue, '_direct_domain_list'); so.rows = 10; so.monospace = true; so.datatype = 'hostname'; so.depends({'homeproxy.config.routing_mode': 'custom', '!reverse': true}); so.load = function(/* ... */) { return L.resolveDefault(callReadDomainList('direct_list')).then((res) => { return res.content; }, {}); } so.write = function(_section_id, value) { return callWriteDomainList('direct_list', value); } so.remove = function(/* ... */) { let routing_mode = this.section.formvalue('config', 'routing_mode'); if (routing_mode !== 'custom') return callWriteDomainList('direct_list', ''); return true; } so.validate = function(section_id, value) { if (section_id && value) for (let i of value.split('\n')) if (i && !stubValidator.apply('hostname', i)) return _('Expecting: %s').format(_('valid hostname')); return true; } /* Direct domain list end */ /* ACL settings end */ return m.render(); } }); ================================================ FILE: luci-app-homeproxy/htdocs/luci-static/resources/view/homeproxy/node.js ================================================ /* * SPDX-License-Identifier: GPL-2.0-only * * Copyright (C) 2022-2025 ImmortalWrt.org */ 'use strict'; 'require form'; 'require fs'; 'require uci'; 'require ui'; 'require view'; 'require homeproxy as hp'; 'require tools.widgets as widgets'; function allowInsecureConfirm(ev, _section_id, value) { if (value === '1' && !confirm(_('Are you sure to allow insecure?'))) ev.target.firstElementChild.checked = null; } function parseShareLink(uri, features) { let config, url, params; uri = uri.split('://'); if (uri[0] && uri[1]) { switch (uri[0]) { case 'anytls': /* https://github.com/anytls/anytls-go/blob/v0.0.8/docs/uri_scheme.md */ url = new URL('http://' + uri[1]); params = url.searchParams; /* Check if password exists */ if (!url.username) return null; config = { label: url.hash ? decodeURIComponent(url.hash.slice(1)) : null, type: 'anytls', address: url.hostname, port: url.port || '80', password: url.username ? decodeURIComponent(url.username) : null, tls: '1', tls_sni: params.get('sni'), tls_insecure: (params.get('insecure') === '1') ? '1' : '0' }; break; case 'http': case 'https': url = new URL('http://' + uri[1]); config = { label: url.hash ? decodeURIComponent(url.hash.slice(1)) : null, type: 'http', address: url.hostname, port: url.port || '80', username: url.username ? decodeURIComponent(url.username) : null, password: url.password ? decodeURIComponent(url.password) : null, tls: (uri[0] === 'https') ? '1' : '0' }; break; case 'hysteria': /* https://github.com/HyNetwork/hysteria/wiki/URI-Scheme */ url = new URL('http://' + uri[1]); params = url.searchParams; /* WeChat-Video / FakeTCP are unsupported by sing-box currently */ if (!features.with_quic || (params.get('protocol') && params.get('protocol') !== 'udp')) return null; config = { label: url.hash ? decodeURIComponent(url.hash.slice(1)) : null, type: 'hysteria', address: url.hostname, port: url.port || '80', hysteria_protocol: params.get('protocol') || 'udp', hysteria_auth_type: params.get('auth') ? 'string' : null, hysteria_auth_payload: params.get('auth'), hysteria_obfs_password: params.get('obfsParam'), hysteria_down_mbps: params.get('downmbps'), hysteria_up_mbps: params.get('upmbps'), tls: '1', tls_sni: params.get('peer'), tls_alpn: params.get('alpn'), tls_insecure: (params.get('insecure') === '1') ? '1' : '0' }; break; case 'hysteria2': case 'hy2': /* https://v2.hysteria.network/docs/developers/URI-Scheme/ */ url = new URL('http://' + uri[1]); params = url.searchParams; if (!features.with_quic) return null; config = { label: url.hash ? decodeURIComponent(url.hash.slice(1)) : null, type: 'hysteria2', address: url.hostname, port: url.port || '80', password: url.username ? ( decodeURIComponent(url.username + (url.password ? (':' + url.password) : '')) ) : null, hysteria_obfs_type: params.get('obfs'), hysteria_obfs_password: params.get('obfs-password'), tls: '1', tls_sni: params.get('sni'), tls_insecure: params.get('insecure') ? '1' : '0' }; break; case 'socks': case 'socks4': case 'socks4a': case 'socsk5': case 'socks5h': url = new URL('http://' + uri[1]); config = { label: url.hash ? decodeURIComponent(url.hash.slice(1)) : null, type: 'socks', address: url.hostname, port: url.port || '80', username: url.username ? decodeURIComponent(url.username) : null, password: url.password ? decodeURIComponent(url.password) : null, socks_version: (uri[0].includes('4')) ? '4' : '5' }; break; case 'ss': try { /* "Lovely" Shadowrocket format */ try { let suri = uri[1].split('#'), slabel = ''; if (suri.length <= 2) { if (suri.length === 2) slabel = '#' + suri[1]; uri[1] = hp.decodeBase64Str(suri[0]) + slabel; } } catch(e) { } /* SIP002 format https://shadowsocks.org/guide/sip002.html */ url = new URL('http://' + uri[1]); let userinfo; if (url.username && url.password) { /* User info encoded with URIComponent */ userinfo = [url.username, decodeURIComponent(url.password)]; } else if (url.username) { /* User info encoded with base64 */ userinfo = hp.decodeBase64Str(decodeURIComponent(url.username)).split(':'); if (userinfo.length > 1) userinfo = [userinfo[0], userinfo.slice(1).join(':')] } if (!hp.shadowsocks_encrypt_methods.includes(userinfo[0])) return null; let plugin, plugin_opts; if (url.search && url.searchParams.get('plugin')) { let plugin_info = url.searchParams.get('plugin').split(';'); plugin = plugin_info[0]; plugin_opts = (plugin_info.length > 1) ? plugin_info.slice(1).join(';') : null; } config = { label: url.hash ? decodeURIComponent(url.hash.slice(1)) : null, type: 'shadowsocks', address: url.hostname, port: url.port || '80', shadowsocks_encrypt_method: userinfo[0], password: userinfo[1], shadowsocks_plugin: plugin, shadowsocks_plugin_opts: plugin_opts }; } catch(e) { /* Legacy format https://github.com/shadowsocks/shadowsocks-org/commit/78ca46cd6859a4e9475953ed34a2d301454f579e */ uri = uri[1].split('@'); if (uri.length < 2) return null; else if (uri.length > 2) uri = [ uri.slice(0, -1).join('@'), uri.slice(-1).toString() ]; config = { type: 'shadowsocks', address: uri[1].split(':')[0], port: uri[1].split(':')[1], shadowsocks_encrypt_method: uri[0].split(':')[0], password: uri[0].split(':').slice(1).join(':') }; } break; case 'trojan': /* https://p4gefau1t.github.io/trojan-go/developer/url/ */ url = new URL('http://' + uri[1]); params = url.searchParams; /* Check if password exists */ if (!url.username) return null; config = { label: url.hash ? decodeURIComponent(url.hash.slice(1)) : null, type: 'trojan', address: url.hostname, port: url.port || '80', password: decodeURIComponent(url.username), transport: params.get('type') !== 'tcp' ? params.get('type') : null, tls: '1', tls_sni: params.get('sni') }; switch (params.get('type')) { case 'grpc': config.grpc_servicename = params.get('serviceName'); break; case 'ws': config.ws_host = params.get('host') ? decodeURIComponent(params.get('host')) : null; config.ws_path = params.get('path') ? decodeURIComponent(params.get('path')) : null; if (config.ws_path && config.ws_path.includes('?ed=')) { config.websocket_early_data_header = 'Sec-WebSocket-Protocol'; config.websocket_early_data = config.ws_path.split('?ed=')[1]; config.ws_path = config.ws_path.split('?ed=')[0]; } break; } break; case 'tuic': /* https://github.com/daeuniverse/dae/discussions/182 */ url = new URL('http://' + uri[1]); params = url.searchParams; /* Check if uuid exists */ if (!url.username) return null; config = { label: url.hash ? decodeURIComponent(url.hash.slice(1)) : null, type: 'tuic', address: url.hostname, port: url.port || '80', uuid: url.username, password: url.password ? decodeURIComponent(url.password) : null, tuic_congestion_control: params.get('congestion_control'), tuic_udp_relay_mode: params.get('udp_relay_mode'), tls: '1', tls_sni: params.get('sni'), tls_alpn: params.get('alpn') ? decodeURIComponent(params.get('alpn')).split(',') : null }; break; case 'vless': /* https://github.com/XTLS/Xray-core/discussions/716 */ url = new URL('http://' + uri[1]); params = url.searchParams; /* Unsupported protocol */ if (params.get('type') === 'kcp') return null; else if (params.get('type') === 'quic' && ((params.get('quicSecurity') && params.get('quicSecurity') !== 'none') || !features.with_quic)) return null; /* Check if uuid and type exist */ if (!url.username || !params.get('type')) return null; config = { label: url.hash ? decodeURIComponent(url.hash.slice(1)) : null, type: 'vless', address: url.hostname, port: url.port || '80', uuid: url.username, transport: params.get('type') !== 'tcp' ? params.get('type') : null, tls: ['tls', 'xtls', 'reality'].includes(params.get('security')) ? '1' : '0', tls_sni: params.get('sni'), tls_alpn: params.get('alpn') ? decodeURIComponent(params.get('alpn')).split(',') : null, tls_reality: (params.get('security') === 'reality') ? '1' : '0', tls_reality_public_key: params.get('pbk') ? decodeURIComponent(params.get('pbk')) : null, tls_reality_short_id: params.get('sid'), tls_utls: features.with_utls ? params.get('fp') : null, vless_flow: ['tls', 'reality'].includes(params.get('security')) ? params.get('flow') : null }; switch (params.get('type')) { case 'grpc': config.grpc_servicename = params.get('serviceName'); break; case 'http': case 'tcp': if (config.transport === 'http' || params.get('headerType') === 'http') { config.http_host = params.get('host') ? decodeURIComponent(params.get('host')).split(',') : null; config.http_path = params.get('path') ? decodeURIComponent(params.get('path')) : null; } break; case 'httpupgrade': config.httpupgrade_host = params.get('host') ? decodeURIComponent(params.get('host')) : null; config.http_path = params.get('path') ? decodeURIComponent(params.get('path')) : null; break; case 'ws': config.ws_host = params.get('host') ? decodeURIComponent(params.get('host')) : null; config.ws_path = params.get('path') ? decodeURIComponent(params.get('path')) : null; if (config.ws_path && config.ws_path.includes('?ed=')) { config.websocket_early_data_header = 'Sec-WebSocket-Protocol'; config.websocket_early_data = config.ws_path.split('?ed=')[1]; config.ws_path = config.ws_path.split('?ed=')[0]; } break; } break; case 'vmess': /* "Lovely" shadowrocket format */ if (uri.includes('&')) return null; /* https://github.com/2dust/v2rayN/wiki/Description-of-VMess-share-link */ uri = JSON.parse(hp.decodeBase64Str(uri[1])); if (uri.v != '2') return null; /* Unsupported protocols */ else if (uri.net === 'kcp') return null; else if (uri.net === 'quic' && ((uri.type && uri.type !== 'none') || !features.with_quic)) return null; /* https://www.v2fly.org/config/protocols/vmess.html#vmess-md5-%E8%AE%A4%E8%AF%81%E4%BF%A1%E6%81%AF-%E6%B7%98%E6%B1%B0%E6%9C%BA%E5%88%B6 * else if (uri.aid && parseInt(uri.aid) !== 0) * return null; */ config = { label: uri.ps, type: 'vmess', address: uri.add, port: uri.port, uuid: uri.id, vmess_alterid: uri.aid, vmess_encrypt: uri.scy || 'auto', transport: (uri.net !== 'tcp') ? uri.net : null, tls: uri.tls === 'tls' ? '1' : '0', tls_sni: uri.sni || uri.host, tls_alpn: uri.alpn ? uri.alpn.split(',') : null, tls_utls: features.with_utls ? uri.fp : null }; switch (uri.net) { case 'grpc': config.grpc_servicename = uri.path; break; case 'h2': case 'tcp': if (uri.net === 'h2' || uri.type === 'http') { config.transport = 'http'; config.http_host = uri.host ? uri.host.split(',') : null; config.http_path = uri.path; } break; case 'httpupgrade': config.httpupgrade_host = uri.host; config.http_path = uri.path; break; case 'ws': config.ws_host = uri.host; config.ws_path = uri.path; if (config.ws_path && config.ws_path.includes('?ed=')) { config.websocket_early_data_header = 'Sec-WebSocket-Protocol'; config.websocket_early_data = config.ws_path.split('?ed=')[1]; config.ws_path = config.ws_path.split('?ed=')[0]; } break; } break; } } if (config) { if (!config.address || !config.port) return null; else if (!config.label) config.label = config.address + ':' + config.port; config.address = config.address.replace(/\[|\]/g, ''); } return config; } function renderNodeSettings(section, data, features, main_node, routing_mode) { let s = section, o; s.rowcolors = true; s.sortable = true; s.nodescriptions = true; s.modaltitle = L.bind(hp.loadModalTitle, this, _('Node'), _('Add a node'), data[0]); s.sectiontitle = L.bind(hp.loadDefaultLabel, this, data[0]); if (routing_mode !== 'custom') { o = s.option(form.Button, '_apply', _('Apply')); o.editable = true; o.modalonly = false; o.inputstyle = 'apply'; o.inputtitle = function(section_id) { if (main_node == section_id) { this.readonly = true; return _('Applied'); } else { this.readonly = false; return _('Apply'); } } o.onclick = function(ev, section_id) { uci.set(data[0], 'config', 'main_node', section_id); return this.map.save(null, true).then(() => { ui.changes.apply(true); }); } } o = s.option(form.Value, 'label', _('Label')); o.load = L.bind(hp.loadDefaultLabel, this, data[0]); o.validate = L.bind(hp.validateUniqueValue, this, data[0], 'node', 'label'); o.modalonly = true; o = s.option(form.ListValue, 'type', _('Type')); o.value('direct', _('Direct')); o.value('anytls', _('AnyTLS')); o.value('http', _('HTTP')); if (features.with_quic) { o.value('hysteria', _('Hysteria')); o.value('hysteria2', _('Hysteria2')); } o.value('shadowsocks', _('Shadowsocks')); o.value('shadowtls', _('ShadowTLS')); o.value('socks', _('Socks')); o.value('ssh', _('SSH')); o.value('trojan', _('Trojan')); if (features.with_quic) o.value('tuic', _('Tuic')); if (features.with_wireguard && features.with_gvisor) o.value('wireguard', _('WireGuard')); o.value('vless', _('VLESS')); o.value('vmess', _('VMess')); o.rmempty = false; o = s.option(form.Value, 'address', _('Address')); o.datatype = 'host'; o.depends({'type': 'direct', '!reverse': true}); o.rmempty = false; o = s.option(form.Value, 'port', _('Port')); o.datatype = 'port'; o.depends({'type': 'direct', '!reverse': true}); o.rmempty = false; o = s.option(form.Value, 'username', _('Username')); o.depends('type', 'http'); o.depends('type', 'socks'); o.depends('type', 'ssh'); o.modalonly = true; o = s.option(form.Value, 'password', _('Password')); o.password = true; o.depends('type', 'anytls'); o.depends('type', 'http'); o.depends('type', 'hysteria2'); o.depends('type', 'shadowsocks'); o.depends('type', 'ssh'); o.depends('type', 'trojan'); o.depends('type', 'tuic'); o.depends({'type': 'shadowtls', 'shadowtls_version': '2'}); o.depends({'type': 'shadowtls', 'shadowtls_version': '3'}); o.depends({'type': 'socks', 'socks_version': '5'}); o.validate = function(section_id, value) { if (section_id) { let type = this.section.formvalue(section_id, 'type'); let required_type = [ 'anytls', 'shadowsocks', 'shadowtls', 'trojan' ]; if (required_type.includes(type)) { if (type === 'shadowsocks') { let encmode = this.section.formvalue(section_id, 'shadowsocks_encrypt_method'); if (encmode === 'none') return true; } if (!value) return _('Expecting: %s').format(_('non-empty value')); } } return true; } o.modalonly = true; /* Direct config */ o = s.option(form.ListValue, 'proxy_protocol', _('Proxy protocol'), _('Write proxy protocol in the connection header.')); o.value('', _('Disable')); o.value('1', _('v1')); o.value('2', _('v2')); o.depends('type', 'direct'); o.modalonly = true; /* AnyTLS config start */ o = s.option(form.Value, 'anytls_idle_session_check_interval', _('Idle session check interval'), _('Interval checking for idle sessions, in seconds.')); o.datatype = 'uinteger'; o.placeholder = '30'; o.depends('type', 'anytls'); o.modalonly = true; o = s.option(form.Value, 'anytls_idle_session_timeout', _('Idle session check timeout'), _('In the check, close sessions that have been idle for longer than this, in seconds.')); o.datatype = 'uinteger'; o.placeholder = '30'; o.depends('type', 'anytls'); o.modalonly = true; o = s.option(form.Value, 'anytls_min_idle_session', _('Minimum idle sessions'), _('In the check, at least the first n idle sessions are kept open.')); o.datatype = 'uinteger'; o.placeholder = '0'; o.depends('type', 'anytls'); o.modalonly = true; /* AnyTLS config end */ /* Hysteria (2) config start */ o = s.option(form.DynamicList, 'hysteria_hopping_port', _('Hopping port')); o.depends('type', 'hysteria'); o.depends('type', 'hysteria2'); o.validate = hp.validatePortRange; o.modalonly = true; o = s.option(form.Value, 'hysteria_hop_interval', _('Hop interval'), _('Port hopping interval in seconds.')); o.datatype = 'uinteger'; o.placeholder = '30'; o.depends({'type': 'hysteria', 'hysteria_hopping_port': /[\s\S]/}); o.depends({'type': 'hysteria2', 'hysteria_hopping_port': /[\s\S]/}); o.modalonly = true; o = s.option(form.ListValue, 'hysteria_protocol', _('Protocol')); o.value('udp'); /* WeChat-Video / FakeTCP are unsupported by sing-box currently * o.value('wechat-video'); * o.value('faketcp'); */ o.default = 'udp'; o.depends('type', 'hysteria'); o.rmempty = false; o.modalonly = true; o = s.option(form.ListValue, 'hysteria_auth_type', _('Authentication type')); o.value('', _('Disable')); o.value('base64', _('Base64')); o.value('string', _('String')); o.depends('type', 'hysteria'); o.modalonly = true; o = s.option(form.Value, 'hysteria_auth_payload', _('Authentication payload')); o.password = true o.depends({'type': 'hysteria', 'hysteria_auth_type': /[\s\S]/}); o.rmempty = false; o.modalonly = true; o = s.option(form.ListValue, 'hysteria_obfs_type', _('Obfuscate type')); o.value('', _('Disable')); o.value('salamander', _('Salamander')); o.depends('type', 'hysteria2'); o.modalonly = true; o = s.option(form.Value, 'hysteria_obfs_password', _('Obfuscate password')); o.password = true; o.depends('type', 'hysteria'); o.depends({'type': 'hysteria2', 'hysteria_obfs_type': /[\s\S]/}); o.modalonly = true; o = s.option(form.Value, 'hysteria_down_mbps', _('Max download speed'), _('Max download speed in Mbps.')); o.datatype = 'uinteger'; o.depends('type', 'hysteria'); o.depends('type', 'hysteria2'); o.modalonly = true; o = s.option(form.Value, 'hysteria_up_mbps', _('Max upload speed'), _('Max upload speed in Mbps.')); o.datatype = 'uinteger'; o.depends('type', 'hysteria'); o.depends('type', 'hysteria2'); o.modalonly = true; o = s.option(form.Value, 'hysteria_recv_window_conn', _('QUIC stream receive window'), _('The QUIC stream-level flow control window for receiving data.')); o.datatype = 'uinteger'; o.depends('type', 'hysteria'); o.modalonly = true; o = s.option(form.Value, 'hysteria_revc_window', _('QUIC connection receive window'), _('The QUIC connection-level flow control window for receiving data.')); o.datatype = 'uinteger'; o.depends('type', 'hysteria'); o.modalonly = true; o = s.option(form.Flag, 'hysteria_disable_mtu_discovery', _('Disable Path MTU discovery'), _('Disables Path MTU Discovery (RFC 8899). Packets will then be at most 1252 (IPv4) / 1232 (IPv6) bytes in size.')); o.depends('type', 'hysteria'); o.modalonly = true; /* Hysteria (2) config end */ /* Shadowsocks config start */ o = s.option(form.ListValue, 'shadowsocks_encrypt_method', _('Encrypt method')); for (let i of hp.shadowsocks_encrypt_methods) o.value(i); /* Stream ciphers */ o.value('aes-128-ctr'); o.value('aes-192-ctr'); o.value('aes-256-ctr'); o.value('aes-128-cfb'); o.value('aes-192-cfb'); o.value('aes-256-cfb'); o.value('chacha20'); o.value('chacha20-ietf'); o.value('rc4-md5'); o.default = 'aes-128-gcm'; o.depends('type', 'shadowsocks'); o.rmempty = false; o.modalonly = true; o = s.option(form.ListValue, 'shadowsocks_plugin', _('Plugin')); o.value('', _('none')); o.value('obfs-local'); o.value('v2ray-plugin'); o.depends('type', 'shadowsocks'); o.modalonly = true; o = s.option(form.Value, 'shadowsocks_plugin_opts', _('Plugin opts')); o.depends('shadowsocks_plugin', 'obfs-local'); o.depends('shadowsocks_plugin', 'v2ray-plugin'); o.modalonly = true; /* Shadowsocks config end */ /* ShadowTLS config */ o = s.option(form.ListValue, 'shadowtls_version', _('ShadowTLS version')); o.value('1', _('v1')); o.value('2', _('v2')); o.value('3', _('v3')); o.default = '1'; o.depends('type', 'shadowtls'); o.rmempty = false; o.modalonly = true; /* Socks config */ o = s.option(form.ListValue, 'socks_version', _('Socks version')); o.value('4', _('Socks4')); o.value('4a', _('Socks4A')); o.value('5', _('Socks5')); o.default = '5'; o.depends('type', 'socks'); o.rmempty = false; o.modalonly = true; /* SSH config start */ o = s.option(form.Value, 'ssh_client_version', _('Client version'), _('Random version will be used if empty.')); o.depends('type', 'ssh'); o.modalonly = true; o = s.option(form.DynamicList, 'ssh_host_key', _('Host key'), _('Accept any if empty.')); o.depends('type', 'ssh'); o.modalonly = true; o = s.option(form.DynamicList, 'ssh_host_key_algo', _('Host key algorithms')) o.depends('type', 'ssh'); o.modalonly = true; o = s.option(form.DynamicList, 'ssh_priv_key', _('Private key')); o.password = true; o.depends('type', 'ssh'); o.modalonly = true; o = s.option(form.Value, 'ssh_priv_key_pp', _('Private key passphrase')); o.password = true; o.depends('type', 'ssh'); o.modalonly = true; /* SSH config end */ /* TUIC config start */ o = s.option(form.Value, 'uuid', _('UUID')); o.password = true; o.depends('type', 'tuic'); o.depends('type', 'vless'); o.depends('type', 'vmess'); o.validate = hp.validateUUID; o.modalonly = true; o = s.option(form.ListValue, 'tuic_congestion_control', _('Congestion control algorithm'), _('QUIC congestion control algorithm.')); o.value('cubic', _('CUBIC')); o.value('new_reno', _('New Reno')); o.value('bbr', _('BBR')); o.default = 'cubic'; o.depends('type', 'tuic'); o.rmempty = false; o.modalonly = true; o = s.option(form.ListValue, 'tuic_udp_relay_mode', _('UDP relay mode'), _('UDP packet relay mode.')); o.value('', _('Default')); o.value('native', _('Native')); o.value('quic', _('QUIC')); o.depends('type', 'tuic'); o.modalonly = true; o = s.option(form.Flag, 'tuic_udp_over_stream', _('UDP over stream'), _('This is the TUIC port of the UDP over TCP protocol, designed to provide a QUIC stream based UDP relay mode that TUIC does not provide.')); o.depends({'type': 'tuic','tuic_udp_relay_mode': ''}); o.modalonly = true; o = s.option(form.Flag, 'tuic_enable_zero_rtt', _('Enable 0-RTT handshake'), _('Enable 0-RTT QUIC connection handshake on the client side. This is not impacting much on the performance, as the protocol is fully multiplexed.
    ' + 'Disabling this is highly recommended, as it is vulnerable to replay attacks.')); o.depends('type', 'tuic'); o.modalonly = true; o = s.option(form.Value, 'tuic_heartbeat', _('Heartbeat interval'), _('Interval for sending heartbeat packets for keeping the connection alive (in seconds).')); o.datatype = 'uinteger'; o.default = '10'; o.depends('type', 'tuic'); o.modalonly = true; /* Tuic config end */ /* VMess / VLESS config start */ o = s.option(form.ListValue, 'vless_flow', _('Flow')); o.value('', _('None')); o.value('xtls-rprx-vision'); o.depends('type', 'vless'); o.modalonly = true; o = s.option(form.Value, 'vmess_alterid', _('Alter ID'), _('Legacy protocol support (VMess MD5 Authentication) is provided for compatibility purposes only, use of alterId > 1 is not recommended.')); o.datatype = 'uinteger'; o.depends('type', 'vmess'); o.modalonly = true; o = s.option(form.ListValue, 'vmess_encrypt', _('Encrypt method')); o.value('auto'); o.value('none'); o.value('zero'); o.value('aes-128-gcm'); o.value('chacha20-poly1305'); o.default = 'auto'; o.depends('type', 'vmess'); o.rmempty = false; o.modalonly = true; o = s.option(form.Flag, 'vmess_global_padding', _('Global padding'), _('Protocol parameter. Will waste traffic randomly if enabled (enabled by default in v2ray and cannot be disabled).')); o.default = o.enabled; o.depends('type', 'vmess'); o.rmempty = false; o.modalonly = true; o = s.option(form.Flag, 'vmess_authenticated_length', _('Authenticated length'), _('Protocol parameter. Enable length block encryption.')); o.depends('type', 'vmess'); o.modalonly = true; /* VMess config end */ /* Transport config start */ o = s.option(form.ListValue, 'transport', _('Transport'), _('No TCP transport, plain HTTP is merged into the HTTP transport.')); o.value('', _('None')); o.value('grpc', _('gRPC')); o.value('http', _('HTTP')); o.value('httpupgrade', _('HTTPUpgrade')); o.value('quic', _('QUIC')); o.value('ws', _('WebSocket')); o.depends('type', 'trojan'); o.depends('type', 'vless'); o.depends('type', 'vmess'); o.onchange = function(ev, section_id, value) { let desc = this.map.findElement('id', 'cbid.homeproxy.%s.transport'.format(section_id)).nextElementSibling; if (value === 'http') desc.innerHTML = _('TLS is not enforced. If TLS is not configured, plain HTTP 1.1 is used.'); else if (value === 'quic') desc.innerHTML = _('No additional encryption support: It\'s basically duplicate encryption.'); else desc.innerHTML = _('No TCP transport, plain HTTP is merged into the HTTP transport.'); let tls = this.map.findElement('id', 'cbid.homeproxy.%s.tls'.format(section_id)).firstElementChild; if ((value === 'http' && tls.checked) || (value === 'grpc' && !features.with_grpc)) { this.map.findElement('id', 'cbid.homeproxy.%s.http_idle_timeout'.format(section_id)).nextElementSibling.innerHTML = _('Specifies the period of time (in seconds) after which a health check will be performed using a ping frame if no frames have been received on the connection.
    ' + 'Please note that a ping response is considered a received frame, so if there is no other traffic on the connection, the health check will be executed every interval.'); this.map.findElement('id', 'cbid.homeproxy.%s.http_ping_timeout'.format(section_id)).nextElementSibling.innerHTML = _('Specifies the timeout duration (in seconds) after sending a PING frame, within which a response must be received.
    ' + 'If a response to the PING frame is not received within the specified timeout duration, the connection will be closed.'); } else if (value === 'grpc' && features.with_grpc) { this.map.findElement('id', 'cbid.homeproxy.%s.http_idle_timeout'.format(section_id)).nextElementSibling.innerHTML = _('If the transport doesn\'t see any activity after a duration of this time (in seconds), it pings the client to check if the connection is still active.'); this.map.findElement('id', 'cbid.homeproxy.%s.http_ping_timeout'.format(section_id)).nextElementSibling.innerHTML = _('The timeout (in seconds) that after performing a keepalive check, the client will wait for activity. If no activity is detected, the connection will be closed.'); } } o.modalonly = true; /* gRPC config start */ o = s.option(form.Value, 'grpc_servicename', _('gRPC service name')); o.depends('transport', 'grpc'); o.modalonly = true; if (features.with_grpc) { o = s.option(form.Flag, 'grpc_permit_without_stream', _('gRPC permit without stream'), _('If enabled, the client transport sends keepalive pings even with no active connections.')); o.depends('transport', 'grpc'); o.modalonly = true; } /* gRPC config end */ /* HTTP(Upgrade) config start */ o = s.option(form.DynamicList, 'http_host', _('Host')); o.datatype = 'hostname'; o.depends('transport', 'http'); o.modalonly = true; o = s.option(form.Value, 'httpupgrade_host', _('Host')); o.datatype = 'hostname'; o.depends('transport', 'httpupgrade'); o.modalonly = true; o = s.option(form.Value, 'http_path', _('Path')); o.depends('transport', 'http'); o.depends('transport', 'httpupgrade'); o.modalonly = true; o = s.option(form.Value, 'http_method', _('Method')); o.value('GET', _('GET')); o.value('PUT', _('PUT')); o.depends('transport', 'http'); o.modalonly = true; o = s.option(form.Value, 'http_idle_timeout', _('Idle timeout'), _('Specifies the period of time (in seconds) after which a health check will be performed using a ping frame if no frames have been received on the connection.
    ' + 'Please note that a ping response is considered a received frame, so if there is no other traffic on the connection, the health check will be executed every interval.')); o.datatype = 'uinteger'; o.depends('transport', 'grpc'); o.depends({'transport': 'http', 'tls': '1'}); o.modalonly = true; o = s.option(form.Value, 'http_ping_timeout', _('Ping timeout'), _('Specifies the timeout duration (in seconds) after sending a PING frame, within which a response must be received.
    ' + 'If a response to the PING frame is not received within the specified timeout duration, the connection will be closed.')); o.datatype = 'uinteger'; o.depends('transport', 'grpc'); o.depends({'transport': 'http', 'tls': '1'}); o.modalonly = true; /* HTTP config end */ /* WebSocket config start */ o = s.option(form.Value, 'ws_host', _('Host')); o.depends('transport', 'ws'); o.modalonly = true; o = s.option(form.Value, 'ws_path', _('Path')); o.depends('transport', 'ws'); o.modalonly = true; o = s.option(form.Value, 'websocket_early_data', _('Early data'), _('Allowed payload size is in the request.')); o.datatype = 'uinteger'; o.value('2048'); o.depends('transport', 'ws'); o.modalonly = true; o = s.option(form.Value, 'websocket_early_data_header', _('Early data header name')); o.value('Sec-WebSocket-Protocol'); o.depends('transport', 'ws'); o.modalonly = true; /* WebSocket config end */ o = s.option(form.ListValue, 'packet_encoding', _('Packet encoding')); o.value('', _('none')); o.value('packetaddr', _('packet addr (v2ray-core v5+)')); o.value('xudp', _('Xudp (Xray-core)')); o.depends('type', 'vless'); o.depends('type', 'vmess'); o.modalonly = true; /* Transport config end */ /* Wireguard config start */ o = s.option(form.DynamicList, 'wireguard_local_address', _('Local address'), _('List of IP (v4 or v6) addresses prefixes to be assigned to the interface.')); o.datatype = 'cidr'; o.depends('type', 'wireguard'); o.rmempty = false; o.modalonly = true; o = s.option(form.Value, 'wireguard_private_key', _('Private key'), _('WireGuard requires base64-encoded private keys.')); o.password = true; o.depends('type', 'wireguard'); o.validate = L.bind(hp.validateBase64Key, this, 44); o.rmempty = false; o.modalonly = true; o = s.option(form.Value, 'wireguard_peer_public_key', _('Peer pubkic key'), _('WireGuard peer public key.')); o.depends('type', 'wireguard'); o.validate = L.bind(hp.validateBase64Key, this, 44); o.rmempty = false; o.modalonly = true; o = s.option(form.Value, 'wireguard_pre_shared_key', _('Pre-shared key'), _('WireGuard pre-shared key.')); o.password = true; o.depends('type', 'wireguard'); o.validate = L.bind(hp.validateBase64Key, this, 44); o.modalonly = true; o = s.option(form.DynamicList, 'wireguard_reserved', _('Reserved field bytes')); o.datatype = 'integer'; o.depends('type', 'wireguard'); o.modalonly = true; o = s.option(form.Value, 'wireguard_mtu', _('MTU')); o.datatype = 'range(0,9000)'; o.placeholder = '1408'; o.depends('type', 'wireguard'); o.modalonly = true; o = s.option(form.Value, 'wireguard_persistent_keepalive_interval', _('Persistent keepalive interval'), _('In seconds. Disabled by default.')); o.datatype = 'uinteger'; o.depends('type', 'wireguard'); o.modalonly = true; /* Wireguard config end */ /* Mux config start */ o = s.option(form.Flag, 'multiplex', _('Multiplex')); o.depends('type', 'shadowsocks'); o.depends('type', 'trojan'); o.depends('type', 'vless'); o.depends('type', 'vmess'); o.modalonly = true; o = s.option(form.ListValue, 'multiplex_protocol', _('Protocol'), _('Multiplex protocol.')); o.value('h2mux'); o.value('smux'); o.value('yamux'); o.default = 'h2mux'; o.depends('multiplex', '1'); o.rmempty = false; o.modalonly = true; o = s.option(form.Value, 'multiplex_max_connections', _('Maximum connections')); o.datatype = 'uinteger'; o.depends('multiplex', '1'); o.modalonly = true; o = s.option(form.Value, 'multiplex_min_streams', _('Minimum streams'), _('Minimum multiplexed streams in a connection before opening a new connection.')); o.datatype = 'uinteger'; o.depends('multiplex', '1'); o.modalonly = true; o = s.option(form.Value, 'multiplex_max_streams', _('Maximum streams'), _('Maximum multiplexed streams in a connection before opening a new connection.
    ' + 'Conflict with %s and %s.').format( _('Maximum connections'), _('Minimum streams'))); o.datatype = 'uinteger'; o.depends({'multiplex': '1', 'multiplex_max_connections': '', 'multiplex_min_streams': ''}); o.modalonly = true; o = s.option(form.Flag, 'multiplex_padding', _('Enable padding')); o.depends('multiplex', '1'); o.modalonly = true; o = s.option(form.Flag, 'multiplex_brutal', _('Enable TCP Brutal'), _('Enable TCP Brutal congestion control algorithm')); o.depends('multiplex', '1'); o.modalonly = true; o = s.option(form.Value, 'multiplex_brutal_down', _('Download bandwidth'), _('Download bandwidth in Mbps.')); o.datatype = 'uinteger'; o.depends('multiplex_brutal', '1'); o.modalonly = true; o = s.option(form.Value, 'multiplex_brutal_up', _('Upload bandwidth'), _('Upload bandwidth in Mbps.')); o.datatype = 'uinteger'; o.depends('multiplex_brutal', '1'); o.modalonly = true; /* Mux config end */ /* TLS config start */ o = s.option(form.Flag, 'tls', _('TLS')); o.depends('type', 'anytls'); o.depends('type', 'http'); o.depends('type', 'hysteria'); o.depends('type', 'hysteria2'); o.depends('type', 'shadowtls'); o.depends('type', 'trojan'); o.depends('type', 'tuic'); o.depends('type', 'vless'); o.depends('type', 'vmess'); o.validate = function(section_id, _value) { if (section_id) { let type = this.map.lookupOption('type', section_id)[0].formvalue(section_id); let tls = this.map.findElement('id', 'cbid.homeproxy.%s.tls'.format(section_id)).firstElementChild; if (['anytls', 'hysteria', 'hysteria2', 'shadowtls', 'tuic'].includes(type)) { tls.checked = true; tls.disabled = true; } else { tls.disabled = null; } } return true; } o.modalonly = true; o = s.option(form.Value, 'tls_sni', _('TLS SNI'), _('Used to verify the hostname on the returned certificates unless insecure is given.')); o.depends('tls', '1'); o.modalonly = true; o = s.option(form.DynamicList, 'tls_alpn', _('TLS ALPN'), _('List of supported application level protocols, in order of preference.')); o.depends('tls', '1'); o.modalonly = true; o = s.option(form.Flag, 'tls_insecure', _('Allow insecure'), _('Allow insecure connection at TLS client.') + '
    ' + _('This is DANGEROUS, your traffic is almost like PLAIN TEXT! Use at your own risk!')); o.depends('tls', '1'); o.onchange = allowInsecureConfirm; o.modalonly = true; o = s.option(form.ListValue, 'tls_min_version', _('Minimum TLS version'), _('The minimum TLS version that is acceptable.')); o.value('', _('default')); for (let i of hp.tls_versions) o.value(i); o.depends('tls', '1'); o.modalonly = true; o = s.option(form.ListValue, 'tls_max_version', _('Maximum TLS version'), _('The maximum TLS version that is acceptable.')); o.value('', _('default')); for (let i of hp.tls_versions) o.value(i); o.depends('tls', '1'); o.modalonly = true; o = s.option(hp.CBIStaticList, 'tls_cipher_suites', _('Cipher suites'), _('The elliptic curves that will be used in an ECDHE handshake, in preference order. If empty, the default will be used.')); for (let i of hp.tls_cipher_suites) o.value(i); o.depends('tls', '1'); o.optional = true; o.modalonly = true; o = s.option(form.Flag, 'tls_self_sign', _('Append self-signed certificate'), _('If you have the root certificate, use this option instead of allowing insecure.')); o.depends('tls_insecure', '0'); o.modalonly = true; o = s.option(form.Value, 'tls_cert_path', _('Certificate path'), _('The path to the server certificate, in PEM format.')); o.value('/etc/homeproxy/certs/client_ca.pem'); o.depends('tls_self_sign', '1'); o.validate = hp.validateCertificatePath; o.rmempty = false; o.modalonly = true; o = s.option(form.Button, '_upload_cert', _('Upload certificate'), _('Save your configuration before uploading files!')); o.inputstyle = 'action'; o.inputtitle = _('Upload...'); o.depends({'tls_self_sign': '1', 'tls_cert_path': '/etc/homeproxy/certs/client_ca.pem'}); o.onclick = L.bind(hp.uploadCertificate, this, _('certificate'), 'client_ca'); o.modalonly = true; o = s.option(form.Flag, 'tls_ech', _('Enable ECH'), _('ECH (Encrypted Client Hello) is a TLS extension that allows a client to encrypt the first part of its ClientHello message.')); o.depends('tls', '1'); o.modalonly = true; o = s.option(form.Value, 'tls_ech_config_path', _('ECH config path'), _('The path to the ECH config, in PEM format. If empty, load from DNS will be attempted.')); o.value('/etc/homeproxy/certs/client_ech_conf.pem'); o.depends('tls_ech', '1'); o.modalonly = true; o = s.option(form.Button, '_upload_ech_config', _('Upload ECH config'), _('Save your configuration before uploading files!')); o.inputstyle = 'action'; o.inputtitle = _('Upload...'); o.depends({'tls_ech': '1', 'tls_ech_config_path': '/etc/homeproxy/certs/client_ech_conf.pem'}); o.onclick = L.bind(hp.uploadCertificate, this, _('ECH config'), 'client_ech_conf'); o.modalonly = true; if (features.with_utls) { o = s.option(form.ListValue, 'tls_utls', _('uTLS fingerprint'), _('uTLS is a fork of "crypto/tls", which provides ClientHello fingerprinting resistance.')); o.value('', _('Disable')); o.value('360'); o.value('android'); o.value('chrome'); o.value('edge'); o.value('firefox'); o.value('ios'); o.value('qq'); o.value('random'); o.value('randomized'); o.value('safari'); o.depends({'tls': '1', 'type': /^((?!hysteria2?|tuic$).)+$/}); o.validate = function(section_id, value) { if (section_id) { let tls_reality = this.map.findElement('id', 'cbid.homeproxy.%s.tls_reality'.format(section_id)).firstElementChild; if (tls_reality.checked && !value) return _('Expecting: %s').format(_('non-empty value')); let vless_flow = this.map.lookupOption('vless_flow', section_id)[0].formvalue(section_id); if ((tls_reality.checked || vless_flow) && ['360', 'android'].includes(value)) return _('Unsupported fingerprint!'); } return true; } o.modalonly = true; o = s.option(form.Flag, 'tls_reality', _('REALITY')); o.depends({'tls': '1', 'type': 'anytls'}); o.depends({'tls': '1', 'type': 'vless'}); o.modalonly = true; o = s.option(form.Value, 'tls_reality_public_key', _('REALITY public key')); o.password = true; o.depends('tls_reality', '1'); o.rmempty = false; o.modalonly = true; o = s.option(form.Value, 'tls_reality_short_id', _('REALITY short ID')); o.password = true; o.depends('tls_reality', '1'); o.modalonly = true; } /* TLS config end */ /* Extra settings start */ o = s.option(form.Flag, 'tcp_fast_open', _('TCP fast open')); o.modalonly = true; o = s.option(form.Flag, 'tcp_multi_path', _('MultiPath TCP')); o.modalonly = true; o = s.option(form.Flag, 'udp_fragment', _('UDP Fragment'), _('Enable UDP fragmentation.')); o.modalonly = true; o = s.option(form.Flag, 'udp_over_tcp', _('UDP over TCP'), _('Enable the SUoT protocol, requires server support. Conflict with multiplex.')); o.depends('type', 'socks'); o.depends({'type': 'shadowsocks', 'multiplex': '0'}); o.modalonly = true; o = s.option(form.ListValue, 'udp_over_tcp_version', _('SUoT version')); o.value('1', _('v1')); o.value('2', _('v2')); o.default = '2'; o.depends('udp_over_tcp', '1'); o.modalonly = true; /* Extra settings end */ return s; } return view.extend({ load() { return Promise.all([ uci.load('homeproxy'), hp.getBuiltinFeatures() ]); }, render(data) { let m, s, o, ss, so; let main_node = uci.get(data[0], 'config', 'main_node'); let routing_mode = uci.get(data[0], 'config', 'routing_mode'); let features = data[1]; /* Cache subscription information, it will be called multiple times */ let subinfo = []; for (let suburl of (uci.get(data[0], 'subscription', 'subscription_url') || [])) { const url = new URL(suburl); const urlhash = hp.calcStringMD5(suburl.replace(/#.*$/, '')); const title = url.hash ? decodeURIComponent(url.hash.slice(1)) : url.hostname; subinfo.push({ 'hash': urlhash, 'title': title }); } m = new form.Map('homeproxy', _('Edit nodes')); s = m.section(form.NamedSection, 'subscription', 'homeproxy'); /* Node settings start */ /* User nodes start */ s.tab('node', _('Nodes')); o = s.taboption('node', form.SectionValue, '_node', form.GridSection, 'node'); ss = renderNodeSettings(o.subsection, data, features, main_node, routing_mode); ss.addremove = true; ss.filter = function(section_id) { for (let info of subinfo) if (info.hash === uci.get(data[0], section_id, 'grouphash')) return false; return true; } /* Import subscription links start */ /* Thanks to luci-app-shadowsocks-libev */ ss.handleLinkImport = function() { let textarea = new ui.Textarea(); ui.showModal(_('Import share links'), [ E('p', _('Support Hysteria, Shadowsocks, Trojan, v2rayN (VMess), and XTLS (VLESS) online configuration delivery standard.')), textarea.render(), E('div', { class: 'right' }, [ E('button', { class: 'btn', click: ui.hideModal }, [ _('Cancel') ]), '', E('button', { class: 'btn cbi-button-action', click: ui.createHandlerFn(this, () => { let input_links = textarea.getValue().trim().split('\n'); if (input_links && input_links[0]) { /* Remove duplicate lines */ input_links = input_links.reduce((pre, cur) => (!pre.includes(cur) && pre.push(cur), pre), []); let allow_insecure = uci.get(data[0], 'subscription', 'allow_insecure'); let packet_encoding = uci.get(data[0], 'subscription', 'packet_encoding'); let imported_node = 0; input_links.forEach((l) => { let config = parseShareLink(l, features); if (config) { if (config.tls === '1' && allow_insecure === '1') config.tls_insecure = '1' if (['vless', 'vmess'].includes(config.type)) config.packet_encoding = packet_encoding let nameHash = hp.calcStringMD5(config.label); let sid = uci.add(data[0], 'node', nameHash); Object.keys(config).forEach((k) => { uci.set(data[0], sid, k, config[k]); }); imported_node++; } }); if (imported_node === 0) ui.addNotification(null, E('p', _('No valid share link found.'))); else ui.addNotification(null, E('p', _('Successfully imported %s nodes of total %s.').format( imported_node, input_links.length))); return uci.save() .then(L.bind(this.map.load, this.map)) .then(L.bind(this.map.reset, this.map)) .then(L.ui.hideModal) .catch(() => {}); } else { return ui.hideModal(); } }) }, [ _('Import') ]) ]) ]) } ss.renderSectionAdd = function(/* ... */) { let el = form.GridSection.prototype.renderSectionAdd.apply(this, arguments), nameEl = el.querySelector('.cbi-section-create-name'); ui.addValidator(nameEl, 'uciname', true, (v) => { let button = el.querySelector('.cbi-section-create > .cbi-button-add'); let uciconfig = this.uciconfig || this.map.config; if (!v) { button.disabled = true; return true; } else if (uci.get(uciconfig, v)) { button.disabled = true; return _('Expecting: %s').format(_('unique UCI identifier')); } else { button.disabled = null; return true; } }, 'blur', 'keyup'); el.appendChild(E('button', { 'class': 'cbi-button cbi-button-add', 'title': _('Import share links'), 'click': ui.createHandlerFn(this, 'handleLinkImport') }, [ _('Import share links') ])); return el; } /* Import subscription links end */ /* User nodes end */ /* Subscription nodes start */ for (const info of subinfo) { s.tab('sub_' + info.hash, _('Sub (%s)').format(info.title)); o = s.taboption('sub_' + info.hash, form.SectionValue, '_sub_' + info.hash, form.GridSection, 'node'); ss = renderNodeSettings(o.subsection, data, features, main_node, routing_mode); ss.filter = function(section_id) { return (uci.get(data[0], section_id, 'grouphash') === info.hash); } } /* Subscription nodes end */ /* Node settings end */ /* Subscriptions settings start */ s.tab('subscription', _('Subscriptions')); o = s.taboption('subscription', form.Flag, 'auto_update', _('Auto update'), _('Auto update subscriptions and geodata.')); o.rmempty = false; o = s.taboption('subscription', form.ListValue, 'auto_update_time', _('Update time')); for (let i = 0; i < 24; i++) o.value(i, i + ':00'); o.default = '2'; o.depends('auto_update', '1'); o = s.taboption('subscription', form.Flag, 'update_via_proxy', _('Update via proxy'), _('Update subscriptions via proxy.')); o.rmempty = false; o = s.taboption('subscription', form.DynamicList, 'subscription_url', _('Subscription URL-s'), _('Support Hysteria, Shadowsocks, Trojan, v2rayN (VMess), and XTLS (VLESS) online configuration delivery standard.')); o.validate = function(section_id, value) { if (section_id && value) { try { let url = new URL(value); if (!url.hostname) return _('Expecting: %s').format(_('valid URL')); } catch(e) { return _('Expecting: %s').format(_('valid URL')); } } return true; } o = s.taboption('subscription', form.ListValue, 'filter_nodes', _('Filter nodes'), _('Drop/keep specific nodes from subscriptions.')); o.value('disabled', _('Disable')); o.value('blacklist', _('Blacklist mode')); o.value('whitelist', _('Whitelist mode')); o.default = 'disabled'; o.rmempty = false; o = s.taboption('subscription', form.DynamicList, 'filter_keywords', _('Filter keywords'), _('Drop/keep nodes that contain the specific keywords. Regex is supported.')); o.depends({'filter_nodes': 'disabled', '!reverse': true}); o.rmempty = false; o = s.taboption('subscription', form.Value, 'user_agent', _('User-Agent')); o.placeholder = 'Wget/1.21 (HomeProxy, like v2rayN)'; o = s.taboption('subscription', form.Flag, 'allow_insecure', _('Allow insecure'), _('Allow insecure connection by default when add nodes from subscriptions.') + '
    ' + _('This is DANGEROUS, your traffic is almost like PLAIN TEXT! Use at your own risk!')); o.rmempty = false; o.onchange = allowInsecureConfirm; o = s.taboption('subscription', form.ListValue, 'packet_encoding', _('Default packet encoding')); o.value('', _('none')); o.value('packetaddr', _('packet addr (v2ray-core v5+)')); o.value('xudp', _('Xudp (Xray-core)')); o = s.taboption('subscription', form.Button, '_save_subscriptions', _('Save subscriptions settings'), _('NOTE: Save current settings before updating subscriptions.')); o.inputstyle = 'apply'; o.inputtitle = _('Save current settings'); o.onclick = function() { return this.map.save(null, true).then(() => { ui.changes.apply(true); }); } o = s.taboption('subscription', form.Button, '_update_subscriptions', _('Update nodes from subscriptions')); o.inputstyle = 'apply'; o.inputtitle = function(section_id) { let sublist = uci.get(data[0], section_id, 'subscription_url') || []; if (sublist.length > 0) { return _('Update %s subscriptions').format(sublist.length); } else { this.readonly = true; return _('No subscription available') } } o.onclick = function() { return fs.exec_direct('/etc/homeproxy/scripts/update_subscriptions.uc').then((res) => { return location.reload(); }).catch((err) => { ui.addNotification(null, E('p', _('An error occurred during updating subscriptions: %s').format(err))); return this.map.reset(); }); } o = s.taboption('subscription', form.Button, '_remove_subscriptions', _('Remove all nodes from subscriptions')); o.inputstyle = 'reset'; o.inputtitle = function() { let subnodes = []; uci.sections(data[0], 'node', (res) => { if (res.grouphash) subnodes = subnodes.concat(res['.name']) }); if (subnodes.length > 0) { return _('Remove %s nodes').format(subnodes.length); } else { this.readonly = true; return _('No subscription node'); } } o.onclick = function() { let subnodes = []; uci.sections(data[0], 'node', (res) => { if (res.grouphash) subnodes = subnodes.concat(res['.name']) }); for (let i in subnodes) uci.remove(data[0], subnodes[i]); if (subnodes.includes(uci.get(data[0], 'config', 'main_node'))) uci.set(data[0], 'config', 'main_node', 'nil'); if (subnodes.includes(uci.get(data[0], 'config', 'main_udp_node'))) uci.set(data[0], 'config', 'main_udp_node', 'nil'); this.inputtitle = _('%s nodes removed').format(subnodes.length); this.readonly = true; return this.map.save(null, true); } /* Subscriptions settings end */ return m.render(); } }); ================================================ FILE: luci-app-homeproxy/htdocs/luci-static/resources/view/homeproxy/server.js ================================================ /* * SPDX-License-Identifier: GPL-2.0-only * * Copyright (C) 2022-2025 ImmortalWrt.org */ 'use strict'; 'require form'; 'require poll'; 'require rpc'; 'require uci'; 'require ui'; 'require view'; 'require homeproxy as hp'; 'require tools.widgets as widgets'; const callServiceList = rpc.declare({ object: 'service', method: 'list', params: ['name'], expect: { '': {} } }); const CBIGenValue = form.Value.extend({ __name__: 'CBI.GenValue', renderWidget(/* ... */) { let node = form.Value.prototype.renderWidget.apply(this, arguments); if (!this.password) node.classList.add('control-group'); (node.querySelector('.control-group') || node).appendChild(E('button', { class: 'cbi-button cbi-button-add', title: _('Generate'), click: ui.createHandlerFn(this, handleGenKey, this.hp_options || this.option) }, [ _('Generate') ])); return node; } }); function getServiceStatus() { return L.resolveDefault(callServiceList('homeproxy'), {}).then((res) => { let isRunning = false; try { isRunning = res['homeproxy']['instances']['sing-box-s']['running']; } catch (e) { } return isRunning; }); } function renderStatus(isRunning, version) { let spanTemp = '%s (sing-box v%s) %s'; let renderHTML; if (isRunning) renderHTML = spanTemp.format('green', _('HomeProxy Server'), version, _('RUNNING')); else renderHTML = spanTemp.format('red', _('HomeProxy Server'), version, _('NOT RUNNING')); return renderHTML; } function handleGenKey(option) { let section_id = this.section.section; let type = this.section.getOption('type')?.formvalue(section_id); let widget = L.bind((option) => { return this.map.findElement('id', 'widget.' + this.cbid(section_id).replace(/\.[^\.]+$/, '.') + option); }, this); const callSingBoxGenerator = rpc.declare({ object: 'luci.homeproxy', method: 'singbox_generator', params: ['type', 'params'], expect: { '': {} } }); if (typeof option === 'object') { return callSingBoxGenerator(option.type, option.params).then((res) => { if (res.result) option.callback.call(this, res.result).forEach(([k, v]) => { widget(k).value = v ?? ''; }); else ui.addNotification(null, E('p', _('Failed to generate %s, error: %s.').format(type, res.error))); }); } else { let password, required_method; if (option === 'uuid') required_method = 'uuid'; else if (type === 'shadowsocks') required_method = this.section.getOption('shadowsocks_encrypt_method')?.formvalue(section_id); switch (required_method) { case 'none': password = ''; break; case 'uuid': password = hp.generateRand('uuid'); break; default: password = hp.generateRand('hex', 16); break; } /* AEAD */ ((length) => { if (length && length > 0) password = hp.generateRand('base64', length); })(hp.shadowsocks_encrypt_length[required_method]); return widget(option).value = password; } } return view.extend({ load() { return Promise.all([ uci.load('homeproxy'), hp.getBuiltinFeatures() ]); }, render(data) { let m, s, o; let features = data[1]; m = new form.Map('homeproxy', _('HomeProxy Server'), _('The modern ImmortalWrt proxy platform for ARM64/AMD64.')); s = m.section(form.TypedSection); s.render = function() { poll.add(() => { return L.resolveDefault(getServiceStatus()).then((res) => { let view = document.getElementById('service_status'); view.innerHTML = renderStatus(res, features.version); }); }); return E('div', { class: 'cbi-section', id: 'status_bar' }, [ E('p', { id: 'service_status' }, _('Collecting data...')) ]); } s = m.section(form.NamedSection, 'server', 'homeproxy', _('Global settings')); o = s.option(form.Flag, 'enabled', _('Enable')); o.rmempty = false; s = m.section(form.GridSection, 'server', _('Server settings')); s.addremove = true; s.rowcolors = true; s.sortable = true; s.nodescriptions = true; s.modaltitle = L.bind(hp.loadModalTitle, this, _('Server'), _('Add a server'), data[0]); s.sectiontitle = L.bind(hp.loadDefaultLabel, this, data[0]); s.renderSectionAdd = L.bind(hp.renderSectionAdd, this, s); o = s.option(form.Value, 'label', _('Label')); o.load = L.bind(hp.loadDefaultLabel, this, data[0]); o.validate = L.bind(hp.validateUniqueValue, this, data[0], 'server', 'label'); o.rmempty = false; o.modalonly = true; o = s.option(form.Flag, 'enabled', _('Enable')); o.default = o.enabled; o.rmempty = false; o.editable = true; o = s.option(form.Flag, 'firewall', _('Firewall'), _('Allow access from the Internet.')); o.editable = true; o = s.option(form.ListValue, 'type', _('Type')); o.value('anytls', _('AnyTLS')); o.value('http', _('HTTP')); if (features.with_quic) { o.value('hysteria', _('Hysteria')); o.value('hysteria2', _('Hysteria2')); o.value('naive', _('NaïveProxy')); } o.value('mixed', _('Mixed')); o.value('shadowsocks', _('Shadowsocks')); o.value('socks', _('Socks')); o.value('trojan', _('Trojan')); if (features.with_quic) o.value('tuic', _('Tuic')); o.value('vless', _('VLESS')); o.value('vmess', _('VMess')); o.rmempty = false; o = s.option(form.Value, 'address', _('Listen address')); o.placeholder = '::'; o.datatype = 'ipaddr'; o.modalonly = true; o = s.option(form.Value, 'port', _('Listen port'), _('The port must be unique.')); o.datatype = 'port'; o.validate = L.bind(hp.validateUniqueValue, this, data[0], 'server', 'port'); o = s.option(form.Value, 'username', _('Username')); o.depends('type', 'http'); o.depends('type', 'mixed'); o.depends('type', 'naive'); o.depends('type', 'socks'); o.modalonly = true; o = s.option(CBIGenValue, 'password', _('Password')); o.password = true; o.depends('type', 'anytls'); o.depends({'type': /^(http|mixed|naive|socks)$/, 'username': /[\s\S]/}); o.depends('type', 'hysteria2'); o.depends('type', 'shadowsocks'); o.depends('type', 'trojan'); o.depends('type', 'tuic'); o.validate = function(section_id, value) { if (section_id) { let type = this.section.formvalue(section_id, 'type'); let required_type = [ 'anytls', 'http', 'mixed', 'naive', 'socks', 'shadowsocks', 'trojan' ]; if (required_type.includes(type)) { if (type === 'shadowsocks') { let encmode = this.section.formvalue(section_id, 'shadowsocks_encrypt_method'); if (encmode === 'none') return true; else if (encmode === '2022-blake3-aes-128-gcm') return hp.validateBase64Key(24, section_id, value); else if (['2022-blake3-aes-256-gcm', '2022-blake3-chacha20-poly1305'].includes(encmode)) return hp.validateBase64Key(44, section_id, value); } if (!value) return _('Expecting: %s').format(_('non-empty value')); } } return true; } o.modalonly = true; /* AnyTLS config */ o = s.option(form.DynamicList, 'anytls_padding_scheme', _('Padding scheme'), _('AnyTLS padding scheme in array.')); o.depends('type', 'anytls'); o.modalonly = true; /* Hysteria (2) config start */ o = s.option(form.ListValue, 'hysteria_protocol', _('Protocol')); o.value('udp'); /* WeChat-Video / FakeTCP are unsupported by sing-box currently o.value('wechat-video'); o.value('faketcp'); */ o.default = 'udp'; o.depends('type', 'hysteria'); o.rmempty = false; o.modalonly = true; o = s.option(form.Value, 'hysteria_down_mbps', _('Max download speed'), _('Max download speed in Mbps.')); o.datatype = 'uinteger'; o.depends('type', 'hysteria'); o.depends('type', 'hysteria2'); o.modalonly = true; o = s.option(form.Value, 'hysteria_up_mbps', _('Max upload speed'), _('Max upload speed in Mbps.')); o.datatype = 'uinteger'; o.depends('type', 'hysteria'); o.depends('type', 'hysteria2'); o.modalonly = true; o = s.option(form.ListValue, 'hysteria_auth_type', _('Authentication type')); o.value('', _('Disable')); o.value('base64', _('Base64')); o.value('string', _('String')); o.depends('type', 'hysteria'); o.modalonly = true; o = s.option(form.Value, 'hysteria_auth_payload', _('Authentication payload')); o.password = true; o.depends({'type': 'hysteria', 'hysteria_auth_type': /[\s\S]/}); o.rmempty = false; o.modalonly = true; o = s.option(form.ListValue, 'hysteria_obfs_type', _('Obfuscate type')); o.value('', _('Disable')); o.value('salamander', _('Salamander')); o.depends('type', 'hysteria2'); o.modalonly = true; o = s.option(CBIGenValue, 'hysteria_obfs_password', _('Obfuscate password')); o.password = true; o.depends('type', 'hysteria'); o.depends({'type': 'hysteria2', 'hysteria_obfs_type': /[\s\S]/}); o.modalonly = true; o = s.option(form.Value, 'hysteria_recv_window_conn', _('QUIC stream receive window'), _('The QUIC stream-level flow control window for receiving data.')); o.datatype = 'uinteger'; o.default = '67108864'; o.depends('type', 'hysteria'); o.modalonly = true; o = s.option(form.Value, 'hysteria_recv_window_client', _('QUIC connection receive window'), _('The QUIC connection-level flow control window for receiving data.')); o.datatype = 'uinteger'; o.default = '15728640'; o.depends('type', 'hysteria'); o.modalonly = true; o = s.option(form.Value, 'hysteria_max_conn_client', _('QUIC maximum concurrent bidirectional streams'), _('The maximum number of QUIC concurrent bidirectional streams that a peer is allowed to open.')); o.datatype = 'uinteger'; o.default = '1024'; o.depends('type', 'hysteria'); o.modalonly = true; o = s.option(form.Flag, 'hysteria_disable_mtu_discovery', _('Disable Path MTU discovery'), _('Disables Path MTU Discovery (RFC 8899). Packets will then be at most 1252 (IPv4) / 1232 (IPv6) bytes in size.')); o.depends('type', 'hysteria'); o.modalonly = true; o = s.option(form.Flag, 'hysteria_ignore_client_bandwidth', _('Ignore client bandwidth'), _('Tell the client to use the BBR flow control algorithm instead of Hysteria CC.')); o.depends({'type': 'hysteria2', 'hysteria_down_mbps': '', 'hysteria_up_mbps': ''}); o.modalonly = true; o = s.option(form.Value, 'hysteria_masquerade', _('Masquerade'), _('HTTP3 server behavior when authentication fails.
    A 404 page will be returned if empty.')); o.depends('type', 'hysteria2'); o.modalonly = true; /* Hysteria (2) config end */ /* Shadowsocks config */ o = s.option(form.ListValue, 'shadowsocks_encrypt_method', _('Encrypt method')); for (let i of hp.shadowsocks_encrypt_methods) o.value(i); o.default = 'aes-128-gcm'; o.depends('type', 'shadowsocks'); o.modalonly = true; /* Tuic config start */ o = s.option(CBIGenValue, 'uuid', _('UUID')); o.password = true; o.depends('type', 'tuic'); o.depends('type', 'vless'); o.depends('type', 'vmess'); o.validate = hp.validateUUID; o.modalonly = true; o = s.option(form.ListValue, 'tuic_congestion_control', _('Congestion control algorithm'), _('QUIC congestion control algorithm.')); o.value('cubic'); o.value('new_reno'); o.value('bbr'); o.default = 'cubic'; o.depends('type', 'tuic'); o.modalonly = true; o = s.option(form.Value, 'tuic_auth_timeout', _('Auth timeout'), _('How long the server should wait for the client to send the authentication command (in seconds).')); o.datatype = 'uinteger'; o.default = '3'; o.depends('type', 'tuic'); o.modalonly = true; o = s.option(form.Flag, 'tuic_enable_zero_rtt', _('Enable 0-RTT handshake'), _('Enable 0-RTT QUIC connection handshake on the client side. This is not impacting much on the performance, as the protocol is fully multiplexed.
    ' + 'Disabling this is highly recommended, as it is vulnerable to replay attacks.')); o.depends('type', 'tuic'); o.modalonly = true; o = s.option(form.Value, 'tuic_heartbeat', _('Heartbeat interval'), _('Interval for sending heartbeat packets for keeping the connection alive (in seconds).')); o.datatype = 'uinteger'; o.default = '10'; o.depends('type', 'tuic'); o.modalonly = true; /* Tuic config end */ /* VLESS / VMess config start */ o = s.option(form.ListValue, 'vless_flow', _('Flow')); o.value('', _('None')); o.value('xtls-rprx-vision'); o.depends('type', 'vless'); o.modalonly = true; o = s.option(form.Value, 'vmess_alterid', _('Alter ID'), _('Legacy protocol support (VMess MD5 Authentication) is provided for compatibility purposes only, use of alterId > 1 is not recommended.')); o.datatype = 'uinteger'; o.depends('type', 'vmess'); o.modalonly = true; /* VMess config end */ /* Transport config start */ o = s.option(form.ListValue, 'transport', _('Transport'), _('No TCP transport, plain HTTP is merged into the HTTP transport.')); o.value('', _('None')); o.value('grpc', _('gRPC')); o.value('http', _('HTTP')); o.value('httpupgrade', _('HTTPUpgrade')); o.value('quic', _('QUIC')); o.value('ws', _('WebSocket')); o.depends('type', 'trojan'); o.depends('type', 'vless'); o.depends('type', 'vmess'); o.onchange = function(ev, section_id, value) { let desc = this.map.findElement('id', 'cbid.homeproxy.%s.transport'.format(section_id)).nextElementSibling; if (value === 'http') desc.innerHTML = _('TLS is not enforced. If TLS is not configured, plain HTTP 1.1 is used.'); else if (value === 'quic') desc.innerHTML = _('No additional encryption support: It\'s basically duplicate encryption.'); else desc.innerHTML = _('No TCP transport, plain HTTP is merged into the HTTP transport.'); let tls_element = this.map.findElement('id', 'cbid.homeproxy.%s.tls'.format(section_id)).firstElementChild; if ((value === 'http' && tls_element.checked) || (value === 'grpc' && !features.with_grpc)) this.map.findElement('id', 'cbid.homeproxy.%s.http_idle_timeout'.format(section_id)).nextElementSibling.innerHTML = _('Specifies the time (in seconds) until idle clients should be closed with a GOAWAY frame. PING frames are not considered as activity.'); else if (value === 'grpc' && features.with_grpc) this.map.findElement('id', 'cbid.homeproxy.%s.http_idle_timeout'.format(section_id)).nextElementSibling.innerHTML = _('If the transport doesn\'t see any activity after a duration of this time (in seconds), it pings the client to check if the connection is still active.'); } o.modalonly = true; /* gRPC config start */ o = s.option(form.Value, 'grpc_servicename', _('gRPC service name')); o.depends('transport', 'grpc'); o.modalonly = true; /* gRPC config end */ /* HTTP(Upgrade) config start */ o = s.option(form.DynamicList, 'http_host', _('Host')); o.datatype = 'hostname'; o.depends('transport', 'http'); o.modalonly = true; o = s.option(form.Value, 'httpupgrade_host', _('Host')); o.datatype = 'hostname'; o.depends('transport', 'httpupgrade'); o.modalonly = true; o = s.option(form.Value, 'http_path', _('Path')); o.depends('transport', 'http'); o.depends('transport', 'httpupgrade'); o.modalonly = true; o = s.option(form.Value, 'http_method', _('Method')); o.depends('transport', 'http'); o.modalonly = true; o = s.option(form.Value, 'http_idle_timeout', _('Idle timeout'), _('Specifies the time (in seconds) until idle clients should be closed with a GOAWAY frame. PING frames are not considered as activity.')); o.datatype = 'uinteger'; o.depends('transport', 'grpc'); o.depends({'transport': 'http', 'tls': '1'}); o.modalonly = true; if (features.with_grpc) { o = s.option(form.Value, 'http_ping_timeout', _('Ping timeout'), _('The timeout (in seconds) that after performing a keepalive check, the client will wait for activity. If no activity is detected, the connection will be closed.')); o.datatype = 'uinteger'; o.depends('transport', 'grpc'); o.modalonly = true; } /* HTTP config end */ /* WebSocket config start */ o = s.option(form.Value, 'ws_host', _('Host')); o.depends('transport', 'ws'); o.modalonly = true; o = s.option(form.Value, 'ws_path', _('Path')); o.depends('transport', 'ws'); o.modalonly = true; o = s.option(form.Value, 'websocket_early_data', _('Early data'), _('Allowed payload size is in the request.')); o.datatype = 'uinteger'; o.value('2048'); o.depends('transport', 'ws'); o.modalonly = true; o = s.option(form.Value, 'websocket_early_data_header', _('Early data header name'), _('Early data is sent in path instead of header by default.') + '
    ' + _('To be compatible with Xray-core, set this to Sec-WebSocket-Protocol.')); o.value('Sec-WebSocket-Protocol'); o.depends('transport', 'ws'); o.modalonly = true; /* WebSocket config end */ /* Transport config end */ /* Mux config start */ o = s.option(form.Flag, 'multiplex', _('Multiplex')); o.depends('type', 'shadowsocks'); o.depends('type', 'trojan'); o.depends('type', 'vless'); o.depends('type', 'vmess'); o.modalonly = true; o = s.option(form.Flag, 'multiplex_padding', _('Enable padding')); o.depends('multiplex', '1'); o.modalonly = true; if (features.hp_has_tcp_brutal) { o = s.option(form.Flag, 'multiplex_brutal', _('Enable TCP Brutal'), _('Enable TCP Brutal congestion control algorithm')); o.depends('multiplex', '1'); o.modalonly = true; o = s.option(form.Value, 'multiplex_brutal_down', _('Download bandwidth'), _('Download bandwidth in Mbps.')); o.datatype = 'uinteger'; o.depends('multiplex_brutal', '1'); o.modalonly = true; o = s.option(form.Value, 'multiplex_brutal_up', _('Upload bandwidth'), _('Upload bandwidth in Mbps.')); o.datatype = 'uinteger'; o.depends('multiplex_brutal', '1'); o.modalonly = true; } /* Mux config end */ /* TLS config start */ o = s.option(form.Flag, 'tls', _('TLS')); o.depends('type', 'anytls'); o.depends('type', 'http'); o.depends('type', 'hysteria'); o.depends('type', 'hysteria2'); o.depends('type', 'naive'); o.depends('type', 'trojan'); o.depends('type', 'tuic'); o.depends('type', 'vless'); o.depends('type', 'vmess'); o.rmempty = false; o.validate = function(section_id, value) { if (section_id) { let type = this.map.lookupOption('type', section_id)[0].formvalue(section_id); let tls = this.map.findElement('id', 'cbid.homeproxy.%s.tls'.format(section_id)).firstElementChild; if (['hysteria', 'hysteria2', 'tuic'].includes(type)) { tls.checked = true; tls.disabled = true; } else { tls.disabled = null; } } return true; } o.modalonly = true; o = s.option(form.Value, 'tls_sni', _('TLS SNI'), _('Used to verify the hostname on the returned certificates unless insecure is given.')); o.depends('tls', '1'); o.modalonly = true; o = s.option(form.DynamicList, 'tls_alpn', _('TLS ALPN'), _('List of supported application level protocols, in order of preference.')); o.depends('tls', '1'); o.modalonly = true; o = s.option(form.ListValue, 'tls_min_version', _('Minimum TLS version'), _('The minimum TLS version that is acceptable.')); o.value('', _('default')); for (let i of hp.tls_versions) o.value(i); o.depends('tls', '1'); o.modalonly = true; o = s.option(form.ListValue, 'tls_max_version', _('Maximum TLS version'), _('The maximum TLS version that is acceptable.')); o.value('', _('default')); for (let i of hp.tls_versions) o.value(i); o.depends('tls', '1'); o.modalonly = true; o = s.option(hp.CBIStaticList, 'tls_cipher_suites', _('Cipher suites'), _('The elliptic curves that will be used in an ECDHE handshake, in preference order. If empty, the default will be used.')); for (let i of hp.tls_cipher_suites) o.value(i); o.depends('tls', '1'); o.optional = true; o.modalonly = true; if (features.with_acme) { o = s.option(form.Flag, 'tls_acme', _('Enable ACME'), _('Use ACME TLS certificate issuer.')); o.depends('tls', '1'); o.modalonly = true; o = s.option(form.DynamicList, 'tls_acme_domain', _('Domains')); o.datatype = 'hostname'; o.depends('tls_acme', '1'); o.rmempty = false; o.modalonly = true; o = s.option(form.Value, 'tls_acme_dsn', _('Default server name'), _('Server name to use when choosing a certificate if the ClientHello\'s ServerName field is empty.')); o.depends('tls_acme', '1'); o.rmempty = false; o.modalonly = true; o = s.option(form.Value, 'tls_acme_email', _('Email'), _('The email address to use when creating or selecting an existing ACME server account.')); o.depends('tls_acme', '1'); o.validate = function(section_id, value) { if (section_id) { if (!value) return _('Expecting: %s').format('non-empty value'); else if (!value.match(/^[^\s@]+@[^\s@]+\.[^\s@]+$/)) return _('Expecting: %s').format('valid email address'); } return true; } o.modalonly = true; o = s.option(form.Value, 'tls_acme_provider', _('CA provider'), _('The ACME CA provider to use.')); o.value('letsencrypt', _('Let\'s Encrypt')); o.value('zerossl', _('ZeroSSL')); o.depends('tls_acme', '1'); o.rmempty = false; o.modalonly = true; o = s.option(form.Flag, 'tls_dns01_challenge', _('DNS01 challenge')) o.depends('tls_acme', '1'); o.modalonly = true; o = s.option(form.ListValue, 'tls_dns01_provider', _('DNS provider')); o.value('alidns', _('Alibaba Cloud DNS')); o.value('cloudflare', _('Cloudflare')); o.depends('tls_dns01_challenge', '1'); o.default = 'cloudflare'; o.rmempty = false; o.modalonly = true; o = s.option(form.Value, 'tls_dns01_ali_akid', _('Access key ID')); o.password = true; o.depends('tls_dns01_provider', 'alidns'); o.rmempty = false; o.modalonly = true; o = s.option(form.Value, 'tls_dns01_ali_aksec', _('Access key secret')); o.password = true; o.depends('tls_dns01_provider', 'alidns'); o.rmempty = false; o.modalonly = true; o = s.option(form.Value, 'tls_dns01_ali_rid', _('Region ID')); o.depends('tls_dns01_provider', 'alidns'); o.rmempty = false; o.modalonly = true; o = s.option(form.Value, 'tls_dns01_cf_api_token', _('API token')); o.password = true; o.depends('tls_dns01_provider', 'cloudflare'); o.rmempty = false; o.modalonly = true; o = s.option(form.Flag, 'tls_acme_dhc', _('Disable HTTP challenge')); o.depends('tls_dns01_challenge', '0'); o.modalonly = true; o = s.option(form.Flag, 'tls_acme_dtac', _('Disable TLS ALPN challenge')); o.depends('tls_dns01_challenge', '0'); o.modalonly = true; o = s.option(form.Value, 'tls_acme_ahp', _('Alternative HTTP port'), _('The alternate port to use for the ACME HTTP challenge; if non-empty, this port will be used instead of 80 to spin up a listener for the HTTP challenge.')); o.datatype = 'port'; o.depends('tls_dns01_challenge', '0'); o.modalonly = true; o = s.option(form.Value, 'tls_acme_atp', _('Alternative TLS port'), _('The alternate port to use for the ACME TLS-ALPN challenge; the system must forward 443 to this port for challenge to succeed.')); o.datatype = 'port'; o.depends('tls_dns01_challenge', '0'); o.modalonly = true; o = s.option(form.Flag, 'tls_acme_external_account', _('External Account Binding'), _('EAB (External Account Binding) contains information necessary to bind or map an ACME account to some other account known by the CA.' + '
    External account bindings are "used to associate an ACME account with an existing account in a non-ACME system, such as a CA customer database.')); o.depends('tls_acme', '1'); o.modalonly = true; o = s.option(form.Value, 'tls_acme_ea_keyid', _('External account key ID')); o.password = true; o.depends('tls_acme_external_account', '1'); o.rmempty = false; o.modalonly = true; o = s.option(form.Value, 'tls_acme_ea_mackey', _('External account MAC key')); o.password = true; o.depends('tls_acme_external_account', '1'); o.rmempty = false; o.modalonly = true; } o = s.option(form.Flag, 'tls_reality', _('REALITY')); o.depends({'tls': '1', 'tls_acme': '0', 'type': /^(anytls|vless)$/}); o.depends({'tls': '1', 'tls_acme': null, 'type': /^(anytls|vless)$/}); o.modalonly = true; o = s.option(CBIGenValue, 'tls_reality_private_key', _('REALITY private key')); o.password = true; o.hp_options = { type: 'reality-keypair', params: '', callback: function(result) { return [ [this.option, result.private_key], ['tls_reality_public_key', result.public_key] ] } } o.depends('tls_reality', '1'); o.rmempty = false; o.modalonly = true; o = s.option(form.Value, 'tls_reality_public_key', _('REALITY public key')); o.depends('tls_reality', '1'); o.modalonly = true; o = s.option(form.DynamicList, 'tls_reality_short_id', _('REALITY short ID')); o.depends('tls_reality', '1'); o.rmempty = false; o.modalonly = true; o = s.option(form.Value, 'tls_reality_max_time_difference', _('Max time difference'), _('The maximum time difference between the server and the client.')); o.depends('tls_reality', '1'); o.modalonly = true; o = s.option(form.Value, 'tls_reality_server_addr', _('Handshake server address')); o.datatype = 'hostname'; o.depends('tls_reality', '1'); o.rmempty = false; o.modalonly = true; o = s.option(form.Value, 'tls_reality_server_port', _('Handshake server port')); o.datatype = 'port'; o.depends('tls_reality', '1'); o.rmempty = false; o.modalonly = true; o = s.option(form.Value, 'tls_cert_path', _('Certificate path'), _('The server public key, in PEM format.')); o.value('/etc/homeproxy/certs/server_publickey.pem'); o.depends({'tls': '1', 'tls_acme': '0', 'tls_reality': null}); o.depends({'tls': '1', 'tls_acme': '0', 'tls_reality': '0'}); o.depends({'tls': '1', 'tls_acme': null, 'tls_reality': '0'}); o.depends({'tls': '1', 'tls_acme': null, 'tls_reality': null}); o.validate = hp.validateCertificatePath; o.rmempty = false; o.modalonly = true; o = s.option(form.Button, '_upload_cert', _('Upload certificate'), _('Save your configuration before uploading files!')); o.inputstyle = 'action'; o.inputtitle = _('Upload...'); o.depends({'tls': '1', 'tls_cert_path': '/etc/homeproxy/certs/server_publickey.pem'}); o.onclick = L.bind(hp.uploadCertificate, this, _('certificate'), 'server_publickey'); o.modalonly = true; o = s.option(form.Value, 'tls_key_path', _('Key path'), _('The server private key, in PEM format.')); o.value('/etc/homeproxy/certs/server_privatekey.pem'); o.depends({'tls': '1', 'tls_acme': '0', 'tls_reality': '0'}); o.depends({'tls': '1', 'tls_acme': '0', 'tls_reality': null}); o.depends({'tls': '1', 'tls_acme': null, 'tls_reality': '0'}); o.depends({'tls': '1', 'tls_acme': null, 'tls_reality': null}); o.validate = hp.validateCertificatePath; o.rmempty = false; o.modalonly = true; o = s.option(form.Button, '_upload_key', _('Upload key'), _('Save your configuration before uploading files!')); o.inputstyle = 'action'; o.inputtitle = _('Upload...'); o.depends({'tls': '1', 'tls_key_path': '/etc/homeproxy/certs/server_privatekey.pem'}); o.onclick = L.bind(hp.uploadCertificate, this, _('private key'), 'server_privatekey'); o.modalonly = true; o = s.option(form.TextValue, 'tls_ech_key', _('ECH key')); o.placeholder = '-----BEGIN ECH KEYS-----\nACBE2+piYBLrOywCbRYU+ZpEkk8keeBlUXbKqLRmQ/68FwBL/g0ARwAAIAAgn8HI\n93RfdV/LaDk+LC9H4h+4WhVBFmWKdhiT3vvpGi8ACAABAAEAAQADABRvdXRlci1z\nbmkuYW55LmRvbWFpbgAA\n-----END ECH KEYS-----'; o.monospace = true; o.cols = 30 o.rows = 3; o.hp_options = { type: 'ech-keypair', params: '', callback: function(result) { return [ [this.option, result.ech_key], ['tls_ech_config', result.ech_cfg] ] } } o.renderWidget = function(section_id, option_index, cfgvalue) { let node = form.TextValue.prototype.renderWidget.apply(this, arguments); const cbid = this.cbid(section_id) + '._outer_sni'; node.appendChild(E('div', { 'class': 'control-group' }, [ E('input', { id: cbid, class: 'cbi-input-text', style: 'width: 10em', placeholder: 'outer-sni.any.domain' }), E('button', { class: 'cbi-button cbi-button-add', click: ui.createHandlerFn(this, () => { this.hp_options.params = document.getElementById(cbid).value; return handleGenKey.call(this, this.hp_options); }) }, [ _('Generate') ]) ])); return node; } o.depends('tls', '1'); o.modalonly = true; o = s.option(form.TextValue, 'tls_ech_config', _('ECH config')); o.placeholder = '-----BEGIN ECH CONFIGS-----\nAEv+DQBHAAAgACCfwcj3dF91X8toOT4sL0fiH7haFUEWZYp2GJPe++kaLwAIAAEA\nAQABAAMAFG91dGVyLXNuaS5hbnkuZG9tYWluAAA=\n-----END ECH CONFIGS-----'; o.monospace = true; o.cols = 30 o.rows = 3; o.depends('tls', '1'); o.modalonly = true; /* TLS config end */ /* Extra settings start */ o = s.option(form.Flag, 'tcp_fast_open', _('TCP fast open'), _('Enable tcp fast open for listener.')); o.depends({'network': 'udp', '!reverse': true}); o.modalonly = true; o = s.option(form.Flag, 'tcp_multi_path', _('MultiPath TCP')); o.depends({'network': 'udp', '!reverse': true}); o.modalonly = true; o = s.option(form.Flag, 'udp_fragment', _('UDP Fragment'), _('Enable UDP fragmentation.')); o.depends({'network': 'tcp', '!reverse': true}); o.modalonly = true; o = s.option(form.Value, 'udp_timeout', _('UDP NAT expiration time'), _('In seconds.')); o.datatype = 'uinteger'; o.placeholder = '300'; o.depends({'network': 'tcp', '!reverse': true}); o.modalonly = true; o = s.option(form.ListValue, 'network', _('Network')); o.value('tcp', _('TCP')); o.value('udp', _('UDP')); o.value('', _('Both')); o.depends('type', 'naive'); o.depends('type', 'shadowsocks'); o.modalonly = true; o = s.option(widgets.DeviceSelect, 'bind_interface', _('Bind interface'), _('The network interface to bind to.')); o.multiple = false; o.noaliases = true; o.modalonly = true; o = s.option(form.Flag, 'reuse_addr', _('Reuse address'), _('Reuse listener address.')); o.modalonly = true; /* Extra settings end */ return m.render(); } }); ================================================ FILE: luci-app-homeproxy/htdocs/luci-static/resources/view/homeproxy/status.js ================================================ /* * SPDX-License-Identifier: GPL-2.0-only * * Copyright (C) 2022-2025 ImmortalWrt.org */ 'use strict'; 'require dom'; 'require form'; 'require fs'; 'require poll'; 'require rpc'; 'require uci'; 'require ui'; 'require view'; /* Thanks to luci-app-aria2 */ const css = ' \ #log_textarea { \ padding: 10px; \ text-align: left; \ } \ #log_textarea pre { \ padding: .5rem; \ word-break: break-all; \ margin: 0; \ } \ .description { \ background-color: #33ccff; \ }'; const hp_dir = '/var/run/homeproxy'; function getConnStat(o, site) { const callConnStat = rpc.declare({ object: 'luci.homeproxy', method: 'connection_check', params: ['site'], expect: { '': {} } }); o.default = E('div', { 'style': 'cbi-value-field' }, [ E('button', { 'class': 'btn cbi-button cbi-button-action', 'click': ui.createHandlerFn(this, () => { return L.resolveDefault(callConnStat(site), {}).then((ret) => { let ele = o.default.firstElementChild.nextElementSibling; if (ret.result) { ele.style.setProperty('color', 'green'); ele.innerHTML = _('passed'); } else { ele.style.setProperty('color', 'red'); ele.innerHTML = _('failed'); } }); }) }, [ _('Check') ]), ' ', E('strong', { 'style': 'color:gray' }, _('unchecked')), ]); } function getResVersion(o, type) { const callResVersion = rpc.declare({ object: 'luci.homeproxy', method: 'resources_get_version', params: ['type'], expect: { '': {} } }); const callResUpdate = rpc.declare({ object: 'luci.homeproxy', method: 'resources_update', params: ['type'], expect: { '': {} } }); return L.resolveDefault(callResVersion(type), {}).then((res) => { let spanTemp = E('div', { 'style': 'cbi-value-field' }, [ E('button', { 'class': 'btn cbi-button cbi-button-action', 'click': ui.createHandlerFn(this, () => { return L.resolveDefault(callResUpdate(type), {}).then((res) => { switch (res.status) { case 0: o.description = _('Successfully updated.'); break; case 1: o.description = _('Update failed.'); break; case 2: o.description = _('Already in updating.'); break; case 3: o.description = _('Already at the latest version.'); break; default: o.description = _('Unknown error.'); break; } return o.map.reset(); }); }) }, [ _('Check update') ]), ' ', E('strong', { 'style': (res.error ? 'color:red' : 'color:green') }, [ res.error ? 'not found' : res.version ] ), ]); o.default = spanTemp; }); } function getRuntimeLog(o, name, _option_index, section_id, _in_table) { const filename = o.option.split('_')[1]; let section, log_level_el; switch (filename) { case 'homeproxy': section = null; break; case 'sing-box-c': section = 'config'; break; case 'sing-box-s': section = 'server'; break; } if (section) { const selected = uci.get('homeproxy', section, 'log_level') || 'warn'; const choices = { trace: _('Trace'), debug: _('Debug'), info: _('Info'), warn: _('Warn'), error: _('Error'), fatal: _('Fatal'), panic: _('Panic') }; log_level_el = E('select', { 'id': o.cbid(section_id), 'class': 'cbi-input-select', 'style': 'margin-left: 4px; width: 6em;', 'change': ui.createHandlerFn(this, (ev) => { uci.set('homeproxy', section, 'log_level', ev.target.value); return o.map.save(null, true).then(() => { ui.changes.apply(true); }); }) }); Object.keys(choices).forEach((v) => { log_level_el.appendChild(E('option', { 'value': v, 'selected': (v === selected) ? '' : null }, [ choices[v] ])); }); } const callLogClean = rpc.declare({ object: 'luci.homeproxy', method: 'log_clean', params: ['type'], expect: { '': {} } }); const log_textarea = E('div', { 'id': 'log_textarea' }, E('img', { 'src': L.resource('icons/loading.svg'), 'alt': _('Loading'), 'style': 'vertical-align:middle' }, _('Collecting data...')) ); let log; poll.add(L.bind(() => { return fs.read_direct(String.format('%s/%s.log', hp_dir, filename), 'text') .then((res) => { log = E('pre', { 'wrap': 'pre' }, [ res.trim() || _('Log is empty.') ]); dom.content(log_textarea, log); }).catch((err) => { if (err.toString().includes('NotFoundError')) log = E('pre', { 'wrap': 'pre' }, [ _('Log file does not exist.') ]); else log = E('pre', { 'wrap': 'pre' }, [ _('Unknown error: %s').format(err) ]); dom.content(log_textarea, log); }); })); return E([ E('style', [ css ]), E('div', {'class': 'cbi-map'}, [ E('h3', {'name': 'content', 'style': 'align-items: center; display: flex;'}, [ _('%s log').format(name), log_level_el || '', E('button', { 'class': 'btn cbi-button cbi-button-action', 'style': 'margin-left: 4px;', 'click': ui.createHandlerFn(this, () => { return L.resolveDefault(callLogClean(filename), {}); }) }, [ _('Clean log') ]) ]), E('div', {'class': 'cbi-section'}, [ log_textarea, E('div', {'style': 'text-align:right'}, E('small', {}, _('Refresh every %s seconds.').format(L.env.pollinterval)) ) ]) ]) ]); } return view.extend({ render() { let m, s, o; m = new form.Map('homeproxy'); s = m.section(form.NamedSection, 'config', 'homeproxy', _('Connection check')); s.anonymous = true; o = s.option(form.DummyValue, '_check_baidu', _('BaiDu')); o.cfgvalue = L.bind(getConnStat, this, o, 'baidu'); o = s.option(form.DummyValue, '_check_google', _('Google')); o.cfgvalue = L.bind(getConnStat, this, o, 'google'); s = m.section(form.NamedSection, 'config', 'homeproxy', _('Resources management')); s.anonymous = true; o = s.option(form.DummyValue, '_china_ip4_version', _('China IPv4 list version')); o.cfgvalue = L.bind(getResVersion, this, o, 'china_ip4'); o.rawhtml = true; o = s.option(form.DummyValue, '_china_ip6_version', _('China IPv6 list version')); o.cfgvalue = L.bind(getResVersion, this, o, 'china_ip6'); o.rawhtml = true; o = s.option(form.DummyValue, '_china_list_version', _('China list version')); o.cfgvalue = L.bind(getResVersion, this, o, 'china_list'); o.rawhtml = true; o = s.option(form.DummyValue, '_gfw_list_version', _('GFW list version')); o.cfgvalue = L.bind(getResVersion, this, o, 'gfw_list'); o.rawhtml = true; o = s.option(form.Value, 'github_token', _('GitHub token')); o.password = true; o.renderWidget = function() { let node = form.Value.prototype.renderWidget.apply(this, arguments); (node.querySelector('.control-group') || node).appendChild(E('button', { 'class': 'cbi-button cbi-button-apply', 'title': _('Save'), 'click': ui.createHandlerFn(this, () => { return this.map.save(null, true).then(() => { ui.changes.apply(true); }); }, this.option) }, [ _('Save') ])); return node; } s = m.section(form.NamedSection, 'config', 'homeproxy'); s.anonymous = true; o = s.option(form.DummyValue, '_homeproxy_logview'); o.render = L.bind(getRuntimeLog, this, o, _('HomeProxy')); o = s.option(form.DummyValue, '_sing-box-c_logview'); o.render = L.bind(getRuntimeLog, this, o, _('sing-box client')); o = s.option(form.DummyValue, '_sing-box-s_logview'); o.render = L.bind(getRuntimeLog, this, o, _('sing-box server')); return m.render(); }, handleSaveApply: null, handleSave: null, handleReset: null }); ================================================ FILE: luci-app-homeproxy/po/templates/homeproxy.pot ================================================ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" #: htdocs/luci-static/resources/view/homeproxy/status.js:206 msgid "%s log" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1456 msgid "%s nodes removed" msgstr "" #: htdocs/luci-static/resources/homeproxy.js:279 msgid "/etc/homeproxy/certs/..., /etc/acme/..., /etc/ssl/..." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:609 msgid "4 or 6. Not limited if empty." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:775 #: htdocs/luci-static/resources/view/homeproxy/client.js:1210 msgid "" "%s will be temporarily overwritten to %s after 50 " "triggers in 30s if not enabled." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1086 #: htdocs/luci-static/resources/view/homeproxy/node.js:1105 #: htdocs/luci-static/resources/view/homeproxy/server.js:768 #: htdocs/luci-static/resources/view/homeproxy/server.js:787 msgid "Save your configuration before uploading files!" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:664 msgid "API token" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:670 msgid "Accept any if empty." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1138 msgid "Accept empty query response" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1399 msgid "Access Control" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:647 msgid "Access key ID" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:653 msgid "Access key secret" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:669 #: htdocs/luci-static/resources/view/homeproxy/client.js:1146 msgid "Action" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1056 msgid "Add a DNS rule" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:933 msgid "Add a DNS server" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:396 msgid "Add a node" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:405 msgid "Add a routing node" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:576 msgid "Add a routing rule" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1320 msgid "Add a rule set" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:156 msgid "Add a server" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:975 msgid "Additional headers to be sent to the DNS server." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:957 #: htdocs/luci-static/resources/view/homeproxy/node.js:448 msgid "Address" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:988 msgid "Address resolver" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1020 msgid "Address strategy" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:640 msgid "Alibaba Cloud DNS" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:186 #: htdocs/luci-static/resources/view/homeproxy/client.js:220 msgid "Aliyun Public DNS (223.5.5.5)" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:266 msgid "All ports" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:172 msgid "Allow access from the Internet." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1040 #: htdocs/luci-static/resources/view/homeproxy/node.js:1382 msgid "Allow insecure" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1041 msgid "Allow insecure connection at TLS client." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1383 msgid "Allow insecure connection by default when add nodes from subscriptions." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:874 #: htdocs/luci-static/resources/view/homeproxy/server.js:482 msgid "Allowed payload size is in the request." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/status.js:95 msgid "Already at the latest version." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/status.js:92 msgid "Already in updating." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:742 #: htdocs/luci-static/resources/view/homeproxy/server.js:391 msgid "Alter ID" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:678 msgid "Alternative HTTP port" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:684 msgid "Alternative TLS port" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1419 msgid "An error occurred during updating subscriptions: %s" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1227 msgid "Answer" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:429 #: htdocs/luci-static/resources/view/homeproxy/server.js:176 msgid "AnyTLS" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:245 msgid "AnyTLS padding scheme in array." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:799 #: htdocs/luci-static/resources/view/homeproxy/client.js:909 #: htdocs/luci-static/resources/view/homeproxy/client.js:1195 msgid "" "Append a edns0-subnet OPT extra record with the specified IP " "prefix to every query by default.
    If value is an IP address instead of " "prefix, /32 or /128 will be appended automatically." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1072 msgid "Append self-signed certificate" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:407 msgid "Applied" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:400 #: htdocs/luci-static/resources/view/homeproxy/node.js:410 msgid "Apply" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:18 msgid "Are you sure to allow insecure?" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:363 msgid "Auth timeout" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:766 msgid "Authenticated length" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:561 #: htdocs/luci-static/resources/view/homeproxy/server.js:282 msgid "Authentication payload" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:554 #: htdocs/luci-static/resources/view/homeproxy/server.js:275 msgid "Authentication type" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1335 msgid "Auto update" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1336 msgid "Auto update subscriptions and geodata." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:702 msgid "BBR" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/status.js:235 msgid "BaiDu" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:556 #: htdocs/luci-static/resources/view/homeproxy/server.js:277 msgid "Base64" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:323 msgid "Based on google/gvisor." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1341 msgid "Binary file" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:453 #: htdocs/luci-static/resources/view/homeproxy/client.js:1412 #: htdocs/luci-static/resources/view/homeproxy/server.js:874 msgid "Bind interface" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1413 msgid "" "Bind outbound traffic to specific interface. Leave empty to auto detect." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:617 #: htdocs/luci-static/resources/view/homeproxy/client.js:1106 msgid "BitTorrent" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1369 msgid "Blacklist mode" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:365 msgid "Block" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:612 #: htdocs/luci-static/resources/view/homeproxy/client.js:640 #: htdocs/luci-static/resources/view/homeproxy/client.js:1092 #: htdocs/luci-static/resources/view/homeproxy/client.js:1102 #: htdocs/luci-static/resources/view/homeproxy/server.js:869 msgid "Both" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:343 msgid "Bypass CN traffic" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:253 msgid "Bypass mainland China" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:344 msgid "Bypass mainland China traffic via firewall rules by default." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:627 msgid "CA provider" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:221 msgid "CNNIC Public DNS (210.2.4.8)" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:700 msgid "CUBIC" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1239 msgid "Cancel" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1077 #: htdocs/luci-static/resources/view/homeproxy/server.js:756 msgid "Certificate path" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/status.js:57 msgid "Check" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/status.js:105 msgid "Check update" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:217 msgid "China DNS server" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/status.js:244 msgid "China IPv4 list version" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/status.js:248 msgid "China IPv6 list version" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/status.js:252 msgid "China list version" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:629 msgid "Chromium / Cronet" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1064 #: htdocs/luci-static/resources/view/homeproxy/server.js:586 msgid "Cipher suites" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:183 msgid "Cisco Public DNS (208.67.222.222)" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/status.js:214 msgid "Clean log" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:627 msgid "Client" msgstr "" #: root/usr/share/luci/menu.d/luci-app-homeproxy.json:14 msgid "Client Settings" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:664 msgid "Client version" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:182 msgid "CloudFlare Public DNS (1.1.1.1)" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:641 msgid "Cloudflare" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:114 #: htdocs/luci-static/resources/view/homeproxy/server.js:142 #: htdocs/luci-static/resources/view/homeproxy/status.js:176 msgid "Collecting data..." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:267 msgid "Common ports only (bypass P2P traffic)" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:698 #: htdocs/luci-static/resources/view/homeproxy/server.js:354 msgid "Congestion control algorithm" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/status.js:232 msgid "Connection check" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:255 msgid "Custom routing" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:618 msgid "DNS" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1047 msgid "DNS Rules" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:924 msgid "DNS Servers" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:872 msgid "DNS Settings" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:639 msgid "DNS provider" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1056 msgid "DNS rule" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:179 #: htdocs/luci-static/resources/view/homeproxy/client.js:749 #: htdocs/luci-static/resources/view/homeproxy/client.js:933 msgid "DNS server" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:635 msgid "DNS01 challenge" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:619 #: htdocs/luci-static/resources/view/homeproxy/client.js:1107 msgid "DTLS" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/status.js:136 msgid "Debug" msgstr "" #: htdocs/luci-static/resources/homeproxy.js:17 #: htdocs/luci-static/resources/view/homeproxy/client.js:433 #: htdocs/luci-static/resources/view/homeproxy/client.js:603 #: htdocs/luci-static/resources/view/homeproxy/client.js:755 #: htdocs/luci-static/resources/view/homeproxy/client.js:1083 #: htdocs/luci-static/resources/view/homeproxy/client.js:1381 #: htdocs/luci-static/resources/view/homeproxy/node.js:710 msgid "Default" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:382 #: htdocs/luci-static/resources/view/homeproxy/client.js:434 #: htdocs/luci-static/resources/view/homeproxy/client.js:756 #: htdocs/luci-static/resources/view/homeproxy/client.js:887 #: htdocs/luci-static/resources/view/homeproxy/client.js:995 #: htdocs/luci-static/resources/view/homeproxy/client.js:1161 msgid "Default DNS (issued by WAN)" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:882 msgid "Default DNS server" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:377 msgid "Default DNS server for resolving domain name in the server address." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:877 msgid "Default DNS strategy" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:357 msgid "Default outbound" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:376 msgid "Default outbound DNS" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:358 msgid "Default outbound for connections not matched by any routing rules." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1389 msgid "Default packet encoding" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:606 msgid "Default server name" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:364 #: htdocs/luci-static/resources/view/homeproxy/client.js:466 #: htdocs/luci-static/resources/view/homeproxy/client.js:684 #: htdocs/luci-static/resources/view/homeproxy/client.js:1033 #: htdocs/luci-static/resources/view/homeproxy/client.js:1382 #: htdocs/luci-static/resources/view/homeproxy/node.js:428 msgid "Direct" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1514 msgid "Direct Domain List" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1428 #: htdocs/luci-static/resources/view/homeproxy/client.js:1473 msgid "Direct IPv4 IP-s" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1431 #: htdocs/luci-static/resources/view/homeproxy/client.js:1476 msgid "Direct IPv6 IP-s" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1434 msgid "Direct MAC-s" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:123 #: htdocs/luci-static/resources/view/homeproxy/client.js:151 #: htdocs/luci-static/resources/view/homeproxy/client.js:1422 #: htdocs/luci-static/resources/view/homeproxy/node.js:499 #: htdocs/luci-static/resources/view/homeproxy/node.js:555 #: htdocs/luci-static/resources/view/homeproxy/node.js:568 #: htdocs/luci-static/resources/view/homeproxy/node.js:1115 #: htdocs/luci-static/resources/view/homeproxy/node.js:1368 #: htdocs/luci-static/resources/view/homeproxy/server.js:276 #: htdocs/luci-static/resources/view/homeproxy/server.js:289 msgid "Disable" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:363 msgid "Disable (the service)" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:787 #: htdocs/luci-static/resources/view/homeproxy/client.js:899 msgid "Disable DNS cache" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:788 msgid "Disable DNS cache in this query." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:670 msgid "Disable HTTP challenge" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:605 #: htdocs/luci-static/resources/view/homeproxy/server.js:321 msgid "Disable Path MTU discovery" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:674 msgid "Disable TLS ALPN challenge" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:710 msgid "Disable UDP domain unmapping" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1182 msgid "Disable cache and save cache in this query." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:901 msgid "Disable cache expire" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1181 msgid "Disable dns cache" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:606 #: htdocs/luci-static/resources/view/homeproxy/server.js:322 msgid "" "Disables Path MTU Discovery (RFC 8899). Packets will then be at most 1252 " "(IPv4) / 1232 (IPv6) bytes in size." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:814 #: htdocs/luci-static/resources/view/homeproxy/client.js:1251 msgid "Domain keyword" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:805 #: htdocs/luci-static/resources/view/homeproxy/client.js:1242 msgid "Domain name" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:818 #: htdocs/luci-static/resources/view/homeproxy/client.js:1255 msgid "Domain regex" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:427 msgid "Domain resolver" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:347 #: htdocs/luci-static/resources/view/homeproxy/client.js:446 #: htdocs/luci-static/resources/view/homeproxy/client.js:1174 msgid "Domain strategy" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:781 msgid "Domain strategy for resolving the domain names." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:810 #: htdocs/luci-static/resources/view/homeproxy/client.js:1247 msgid "Domain suffix" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:600 msgid "Domains" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:774 msgid "Don't drop packets" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1209 msgid "Don't drop requests" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:989 #: htdocs/luci-static/resources/view/homeproxy/server.js:517 msgid "Download bandwidth" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:990 #: htdocs/luci-static/resources/view/homeproxy/server.js:518 msgid "Download bandwidth in Mbps." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:770 #: htdocs/luci-static/resources/view/homeproxy/client.js:776 msgid "Drop packets" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1204 #: htdocs/luci-static/resources/view/homeproxy/client.js:1211 msgid "Drop requests" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1375 msgid "" "Drop/keep nodes that contain the specific keywords. Regex is supported." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1367 msgid "Drop/keep specific nodes from subscriptions." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:691 msgid "" "EAB (External Account Binding) contains information necessary to bind or map " "an ACME account to some other account known by the CA.
    External account " "bindings are \"used to associate an ACME account with an existing account in " "a non-ACME system, such as a CA customer database." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1094 msgid "" "ECH (Encrypted Client Hello) is a TLS extension that allows a client to " "encrypt the first part of its ClientHello message." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1109 #: htdocs/luci-static/resources/view/homeproxy/server.js:835 msgid "ECH config" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1098 msgid "ECH config path" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:794 msgid "ECH key" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:798 #: htdocs/luci-static/resources/view/homeproxy/client.js:908 #: htdocs/luci-static/resources/view/homeproxy/client.js:1194 msgid "EDNS Client subnet" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:873 #: htdocs/luci-static/resources/view/homeproxy/server.js:481 msgid "Early data" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:880 #: htdocs/luci-static/resources/view/homeproxy/server.js:488 msgid "Early data header name" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:489 msgid "Early data is sent in path instead of header by default." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1211 msgid "Edit nodes" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:612 msgid "Email" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:414 #: htdocs/luci-static/resources/view/homeproxy/client.js:590 #: htdocs/luci-static/resources/view/homeproxy/client.js:942 #: htdocs/luci-static/resources/view/homeproxy/client.js:1070 #: htdocs/luci-static/resources/view/homeproxy/client.js:1329 #: htdocs/luci-static/resources/view/homeproxy/server.js:148 #: htdocs/luci-static/resources/view/homeproxy/server.js:166 msgid "Enable" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:722 #: htdocs/luci-static/resources/view/homeproxy/server.js:371 msgid "" "Enable 0-RTT QUIC connection handshake on the client side. This is not " "impacting much on the performance, as the protocol is fully multiplexed.
    Disabling this is highly recommended, as it is vulnerable to replay attacks." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:721 #: htdocs/luci-static/resources/view/homeproxy/server.js:370 msgid "Enable 0-RTT handshake" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:595 msgid "Enable ACME" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1093 msgid "Enable ECH" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:984 #: htdocs/luci-static/resources/view/homeproxy/server.js:512 msgid "Enable TCP Brutal" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:985 #: htdocs/luci-static/resources/view/homeproxy/server.js:513 msgid "Enable TCP Brutal congestion control algorithm" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1168 #: htdocs/luci-static/resources/view/homeproxy/server.js:855 msgid "Enable UDP fragmentation." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:328 msgid "Enable endpoint-independent NAT" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:980 #: htdocs/luci-static/resources/view/homeproxy/server.js:507 msgid "Enable padding" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:846 msgid "Enable tcp fast open for listener." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1172 msgid "" "Enable the SUoT protocol, requires server support. Conflict with multiplex." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:612 #: htdocs/luci-static/resources/view/homeproxy/node.js:748 #: htdocs/luci-static/resources/view/homeproxy/server.js:338 msgid "Encrypt method" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/status.js:139 msgid "Error" msgstr "" #: htdocs/luci-static/resources/homeproxy.js:237 #: htdocs/luci-static/resources/homeproxy.js:271 #: htdocs/luci-static/resources/homeproxy.js:279 #: htdocs/luci-static/resources/homeproxy.js:297 #: htdocs/luci-static/resources/homeproxy.js:306 #: htdocs/luci-static/resources/homeproxy.js:317 #: htdocs/luci-static/resources/homeproxy.js:326 #: htdocs/luci-static/resources/homeproxy.js:328 #: htdocs/luci-static/resources/view/homeproxy/client.js:195 #: htdocs/luci-static/resources/view/homeproxy/client.js:207 #: htdocs/luci-static/resources/view/homeproxy/client.js:211 #: htdocs/luci-static/resources/view/homeproxy/client.js:230 #: htdocs/luci-static/resources/view/homeproxy/client.js:241 #: htdocs/luci-static/resources/view/homeproxy/client.js:245 #: htdocs/luci-static/resources/view/homeproxy/client.js:274 #: htdocs/luci-static/resources/view/homeproxy/client.js:504 #: htdocs/luci-static/resources/view/homeproxy/client.js:518 #: htdocs/luci-static/resources/view/homeproxy/client.js:521 #: htdocs/luci-static/resources/view/homeproxy/client.js:1357 #: htdocs/luci-static/resources/view/homeproxy/client.js:1362 #: htdocs/luci-static/resources/view/homeproxy/client.js:1365 #: htdocs/luci-static/resources/view/homeproxy/client.js:1507 #: htdocs/luci-static/resources/view/homeproxy/client.js:1539 #: htdocs/luci-static/resources/view/homeproxy/node.js:488 #: htdocs/luci-static/resources/view/homeproxy/node.js:1131 #: htdocs/luci-static/resources/view/homeproxy/node.js:1302 #: htdocs/luci-static/resources/view/homeproxy/node.js:1356 #: htdocs/luci-static/resources/view/homeproxy/node.js:1359 #: htdocs/luci-static/resources/view/homeproxy/server.js:235 #: htdocs/luci-static/resources/view/homeproxy/server.js:618 #: htdocs/luci-static/resources/view/homeproxy/server.js:620 msgid "Expecting: %s" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:690 msgid "External Account Binding" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:702 msgid "External account MAC key" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:696 msgid "External account key ID" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1237 msgid "Extra records" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:86 msgid "Failed to generate %s, error: %s." msgstr "" #: htdocs/luci-static/resources/homeproxy.js:261 msgid "Failed to upload %s, error: %s." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/status.js:140 msgid "Fatal" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1374 msgid "Filter keywords" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1366 msgid "Filter nodes" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:630 msgid "Firefox / uquic firefox" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:171 msgid "Firewall" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:736 #: htdocs/luci-static/resources/view/homeproxy/server.js:385 msgid "Flow" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:428 msgid "For resolving domain name in the server address." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1340 msgid "Format" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:730 msgid "Fragment TLS handshake into multiple TLS records." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:736 msgid "" "Fragment TLS handshakes. Due to poor performance, try %s first." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:742 msgid "Fragment fallback delay" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:842 msgid "GET" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/status.js:256 msgid "GFW list version" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:252 msgid "GFWList" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1446 msgid "Gaming mode IPv4 IP-s" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1448 msgid "Gaming mode IPv6 IP-s" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1451 msgid "Gaming mode MAC-s" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:36 #: htdocs/luci-static/resources/view/homeproxy/server.js:38 #: htdocs/luci-static/resources/view/homeproxy/server.js:827 msgid "Generate" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/status.js:260 msgid "GitHub token" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:256 msgid "Global" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:759 msgid "Global padding" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1453 msgid "Global proxy IPv4 IP-s" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1456 msgid "Global proxy IPv6 IP-s" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1459 msgid "Global proxy MAC-s" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:146 msgid "Global settings" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/status.js:238 msgid "Google" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:184 msgid "Google Public DNS (8.8.8.8)" msgstr "" #: root/usr/share/rpcd/acl.d/luci-app-homeproxy.json:3 msgid "Grant access to homeproxy configuration" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:620 #: htdocs/luci-static/resources/view/homeproxy/client.js:1108 #: htdocs/luci-static/resources/view/homeproxy/node.js:430 #: htdocs/luci-static/resources/view/homeproxy/node.js:777 #: htdocs/luci-static/resources/view/homeproxy/server.js:177 #: htdocs/luci-static/resources/view/homeproxy/server.js:403 msgid "HTTP" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:952 msgid "HTTP/3" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:332 msgid "" "HTTP3 server behavior when authentication fails.
    A 404 page will be " "returned if empty." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:951 msgid "HTTPS" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:778 #: htdocs/luci-static/resources/view/homeproxy/server.js:404 msgid "HTTPUpgrade" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:744 msgid "Handshake server address" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:750 msgid "Handshake server port" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:974 msgid "Headers" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:727 #: htdocs/luci-static/resources/view/homeproxy/server.js:376 msgid "Heartbeat interval" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:55 #: htdocs/luci-static/resources/view/homeproxy/client.js:57 #: htdocs/luci-static/resources/view/homeproxy/client.js:101 #: htdocs/luci-static/resources/view/homeproxy/status.js:282 #: root/usr/share/luci/menu.d/luci-app-homeproxy.json:3 msgid "HomeProxy" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:58 #: htdocs/luci-static/resources/view/homeproxy/server.js:60 #: htdocs/luci-static/resources/view/homeproxy/server.js:129 msgid "HomeProxy Server" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:535 msgid "Hop interval" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:529 msgid "Hopping port" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:826 #: htdocs/luci-static/resources/view/homeproxy/node.js:831 #: htdocs/luci-static/resources/view/homeproxy/node.js:865 #: htdocs/luci-static/resources/view/homeproxy/server.js:437 #: htdocs/luci-static/resources/view/homeproxy/server.js:442 #: htdocs/luci-static/resources/view/homeproxy/server.js:473 msgid "Host" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:669 msgid "Host key" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:674 msgid "Host key algorithms" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:581 #: htdocs/luci-static/resources/view/homeproxy/client.js:1061 msgid "Host/IP fields" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:364 msgid "" "How long the server should wait for the client to send the authentication " "command (in seconds)." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:432 #: htdocs/luci-static/resources/view/homeproxy/server.js:179 msgid "Hysteria" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:433 #: htdocs/luci-static/resources/view/homeproxy/server.js:180 msgid "Hysteria2" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:830 #: htdocs/luci-static/resources/view/homeproxy/client.js:1267 msgid "IP CIDR" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:608 #: htdocs/luci-static/resources/view/homeproxy/client.js:1089 msgid "IP version" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:610 #: htdocs/luci-static/resources/view/homeproxy/client.js:1090 msgid "IPv4" msgstr "" #: htdocs/luci-static/resources/homeproxy.js:20 msgid "IPv4 only" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:611 #: htdocs/luci-static/resources/view/homeproxy/client.js:1091 msgid "IPv6" msgstr "" #: htdocs/luci-static/resources/homeproxy.js:21 msgid "IPv6 only" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:297 msgid "IPv6 support" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:506 msgid "Idle session check interval" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:513 msgid "Idle session check timeout" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:553 #: htdocs/luci-static/resources/view/homeproxy/node.js:847 #: htdocs/luci-static/resources/view/homeproxy/server.js:456 msgid "Idle timeout" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:717 msgid "" "If enabled, attempts to connect UDP connection to the destination instead of " "listen." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:711 msgid "" "If enabled, for UDP proxy requests addressed to a domain, the original " "packet address will be sent in the response instead of the mapped domain." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:819 msgid "" "If enabled, the client transport sends keepalive pings even with no active " "connections." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:348 msgid "" "If set, the requested domain name will be resolved to IP before routing." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:804 #: htdocs/luci-static/resources/view/homeproxy/server.js:425 msgid "" "If the transport doesn't see any activity after a duration of this time (in " "seconds), it pings the client to check if the connection is still active." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1073 msgid "" "If you have the root certificate, use this option instead of allowing " "insecure." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:326 msgid "Ignore client bandwidth" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1285 msgid "Import" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1232 #: htdocs/luci-static/resources/view/homeproxy/node.js:1311 #: htdocs/luci-static/resources/view/homeproxy/node.js:1313 msgid "Import share links" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:336 #: htdocs/luci-static/resources/view/homeproxy/server.js:860 msgid "In seconds." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:937 msgid "In seconds. Disabled by default." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:521 msgid "" "In the check, at least the first n idle sessions are kept open." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:514 msgid "" "In the check, close sessions that have been idle for longer than this, in " "seconds." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:904 msgid "Independent cache per server" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/status.js:137 msgid "Info" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1405 msgid "Interface Control" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:560 msgid "Interrupt existing connections" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:561 msgid "Interrupt existing connections when the selected outbound has changed." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:507 msgid "Interval checking for idle sessions, in seconds." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:728 #: htdocs/luci-static/resources/view/homeproxy/server.js:377 msgid "" "Interval for sending heartbeat packets for keeping the connection alive (in " "seconds)." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:665 #: htdocs/luci-static/resources/view/homeproxy/client.js:1142 msgid "Invert" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:666 #: htdocs/luci-static/resources/view/homeproxy/client.js:1143 msgid "Invert match result." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:775 msgid "Key path" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1419 msgid "LAN IP Policy" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:409 #: htdocs/luci-static/resources/view/homeproxy/client.js:585 #: htdocs/luci-static/resources/view/homeproxy/client.js:937 #: htdocs/luci-static/resources/view/homeproxy/client.js:1065 #: htdocs/luci-static/resources/view/homeproxy/client.js:1324 #: htdocs/luci-static/resources/view/homeproxy/node.js:422 #: htdocs/luci-static/resources/view/homeproxy/server.js:160 msgid "Label" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:743 #: htdocs/luci-static/resources/view/homeproxy/server.js:392 msgid "" "Legacy protocol support (VMess MD5 Authentication) is provided for " "compatibility purposes only, use of alterId > 1 is not recommended." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:325 msgid "Less compatibility and sometimes better performance." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:629 msgid "Let's Encrypt" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:897 msgid "" "List of IP (v4 or v6) addresses prefixes to be assigned to the interface." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:132 #: htdocs/luci-static/resources/view/homeproxy/client.js:161 #: htdocs/luci-static/resources/view/homeproxy/client.js:497 msgid "List of nodes to test." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1036 #: htdocs/luci-static/resources/view/homeproxy/server.js:566 msgid "List of supported application level protocols, in order of preference." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1228 msgid "List of text DNS record to respond as answers." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1238 msgid "List of text DNS record to respond as extra records." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1233 msgid "List of text DNS record to respond as name servers." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:193 msgid "Listen address" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1407 msgid "Listen interfaces" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:198 msgid "Listen port" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/status.js:174 msgid "Loading" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1335 msgid "Local" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:896 msgid "Local address" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/status.js:191 msgid "Log file does not exist." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/status.js:184 msgid "Log is empty." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:930 msgid "MTU" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:150 msgid "Main UDP node" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:122 msgid "Main node" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:662 msgid "Make IP CIDR in rule set used to match the source IP." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1135 msgid "Make IP CIDR in rule sets match the source IP." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1139 msgid "Make IP CIDR in rule-sets accept empty query response." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:905 msgid "" "Make each DNS server's cache independent for special purposes. If enabled, " "will slightly degrade performance." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:331 msgid "Masquerade" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1268 msgid "" "Match IP CIDR with query response. Current rule will be skipped if not match." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:831 msgid "Match IP CIDR." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:811 #: htdocs/luci-static/resources/view/homeproxy/client.js:1248 msgid "Match domain suffix." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:815 #: htdocs/luci-static/resources/view/homeproxy/client.js:1252 msgid "Match domain using keyword." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:819 #: htdocs/luci-static/resources/view/homeproxy/client.js:1256 msgid "Match domain using regular expression." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:806 #: htdocs/luci-static/resources/view/homeproxy/client.js:1243 msgid "Match full domain." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:854 #: htdocs/luci-static/resources/view/homeproxy/client.js:1292 msgid "Match port range. Format as START:/:END/START:END." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:849 #: htdocs/luci-static/resources/view/homeproxy/client.js:1287 msgid "Match port." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:835 #: htdocs/luci-static/resources/view/homeproxy/client.js:1272 msgid "Match private IP" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1273 msgid "Match private IP with query response." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:827 #: htdocs/luci-static/resources/view/homeproxy/client.js:1264 msgid "Match private source IP" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:859 #: htdocs/luci-static/resources/view/homeproxy/client.js:1297 msgid "Match process name." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:867 #: htdocs/luci-static/resources/view/homeproxy/client.js:1305 msgid "Match process path using regular expression." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:863 #: htdocs/luci-static/resources/view/homeproxy/client.js:1301 msgid "Match process path." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1096 msgid "Match query type." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:647 #: htdocs/luci-static/resources/view/homeproxy/client.js:1120 msgid "Match rule set." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:823 #: htdocs/luci-static/resources/view/homeproxy/client.js:1260 msgid "Match source IP CIDR." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:844 #: htdocs/luci-static/resources/view/homeproxy/client.js:1282 msgid "Match source port range. Format as START:/:END/START:END." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:839 #: htdocs/luci-static/resources/view/homeproxy/client.js:1277 msgid "Match source port." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:643 #: htdocs/luci-static/resources/view/homeproxy/client.js:1116 msgid "Match user name." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:579 #: htdocs/luci-static/resources/view/homeproxy/server.js:261 msgid "Max download speed" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:580 #: htdocs/luci-static/resources/view/homeproxy/server.js:262 msgid "Max download speed in Mbps." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:739 msgid "Max time difference" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:586 #: htdocs/luci-static/resources/view/homeproxy/server.js:268 msgid "Max upload speed" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:587 #: htdocs/luci-static/resources/view/homeproxy/server.js:269 msgid "Max upload speed in Mbps." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1056 #: htdocs/luci-static/resources/view/homeproxy/server.js:578 msgid "Maximum TLS version" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:961 #: htdocs/luci-static/resources/view/homeproxy/node.js:975 msgid "Maximum connections" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:973 msgid "" "Maximum multiplexed streams in a connection before opening a new connection." "
    Conflict with %s and %s." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:972 msgid "Maximum streams" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:768 #: htdocs/luci-static/resources/view/homeproxy/client.js:776 #: htdocs/luci-static/resources/view/homeproxy/client.js:1202 #: htdocs/luci-static/resources/view/homeproxy/client.js:1211 #: htdocs/luci-static/resources/view/homeproxy/node.js:841 #: htdocs/luci-static/resources/view/homeproxy/server.js:452 msgid "Method" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1048 #: htdocs/luci-static/resources/view/homeproxy/server.js:570 msgid "Minimum TLS version" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:520 msgid "Minimum idle sessions" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:967 msgid "" "Minimum multiplexed streams in a connection before opening a new connection." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:966 #: htdocs/luci-static/resources/view/homeproxy/node.js:975 msgid "Minimum streams" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:310 #: htdocs/luci-static/resources/view/homeproxy/server.js:183 msgid "Mixed" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:321 msgid "Mixed system TCP stack and gVisor UDP stack." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:595 #: htdocs/luci-static/resources/view/homeproxy/client.js:1075 msgid "Mode" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1164 #: htdocs/luci-static/resources/view/homeproxy/server.js:850 msgid "MultiPath TCP" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:944 #: htdocs/luci-static/resources/view/homeproxy/server.js:500 msgid "Multiplex" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:952 msgid "Multiplex protocol." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:57 #: htdocs/luci-static/resources/view/homeproxy/server.js:60 msgid "NOT RUNNING" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1395 msgid "NOTE: Save current settings before updating subscriptions." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1232 msgid "NS" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:711 msgid "Native" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:181 msgid "NaïveProxy" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:637 #: htdocs/luci-static/resources/view/homeproxy/client.js:1099 #: htdocs/luci-static/resources/view/homeproxy/server.js:866 msgid "Network" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:701 msgid "New Reno" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:774 #: htdocs/luci-static/resources/view/homeproxy/node.js:791 #: htdocs/luci-static/resources/view/homeproxy/server.js:400 #: htdocs/luci-static/resources/view/homeproxy/server.js:417 msgid "No TCP transport, plain HTTP is merged into the HTTP transport." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:789 #: htdocs/luci-static/resources/view/homeproxy/server.js:415 msgid "No additional encryption support: It's basically duplicate encryption." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1412 msgid "No subscription available" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1437 msgid "No subscription node" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1271 msgid "No valid share link found." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:419 #: htdocs/luci-static/resources/view/homeproxy/node.js:396 msgid "Node" msgstr "" #: root/usr/share/luci/menu.d/luci-app-homeproxy.json:22 msgid "Node Settings" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1217 msgid "Nodes" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:994 #: htdocs/luci-static/resources/view/homeproxy/node.js:737 #: htdocs/luci-static/resources/view/homeproxy/node.js:775 #: htdocs/luci-static/resources/view/homeproxy/server.js:386 #: htdocs/luci-static/resources/view/homeproxy/server.js:401 msgid "None" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:573 #: htdocs/luci-static/resources/view/homeproxy/server.js:294 msgid "Obfuscate password" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:567 #: htdocs/luci-static/resources/view/homeproxy/server.js:288 msgid "Obfuscate type" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1408 msgid "Only process traffic from specific interfaces. Leave empty for all." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:254 msgid "Only proxy mainland China" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:580 #: htdocs/luci-static/resources/view/homeproxy/client.js:1060 msgid "Other fields" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:460 #: htdocs/luci-static/resources/view/homeproxy/client.js:678 #: htdocs/luci-static/resources/view/homeproxy/client.js:1027 #: htdocs/luci-static/resources/view/homeproxy/client.js:1375 msgid "Outbound" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:420 msgid "Outbound node" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:696 msgid "Override address" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:352 msgid "Override destination" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:703 msgid "Override port" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:353 msgid "Override the connection destination address with the sniffed domain." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:697 msgid "Override the connection destination address." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:704 msgid "Override the connection destination port." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:843 msgid "PUT" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:886 msgid "Packet encoding" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:244 msgid "Padding scheme" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/status.js:141 msgid "Panic" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:464 #: htdocs/luci-static/resources/view/homeproxy/server.js:210 msgid "Password" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:967 #: htdocs/luci-static/resources/view/homeproxy/client.js:1346 #: htdocs/luci-static/resources/view/homeproxy/node.js:836 #: htdocs/luci-static/resources/view/homeproxy/node.js:869 #: htdocs/luci-static/resources/view/homeproxy/server.js:447 #: htdocs/luci-static/resources/view/homeproxy/server.js:477 msgid "Path" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:911 msgid "Peer pubkic key" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:329 msgid "" "Performance may degrade slightly, so it is not recommended to enable on when " "it is not needed." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:936 msgid "Persistent keepalive interval" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:855 #: htdocs/luci-static/resources/view/homeproxy/server.js:464 msgid "Ping timeout" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:630 msgid "Plugin" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:637 msgid "Plugin opts" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:848 #: htdocs/luci-static/resources/view/homeproxy/client.js:962 #: htdocs/luci-static/resources/view/homeproxy/client.js:1286 #: htdocs/luci-static/resources/view/homeproxy/node.js:453 msgid "Port" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:276 msgid "Port %s alrealy exists!" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:582 #: htdocs/luci-static/resources/view/homeproxy/client.js:1062 msgid "Port fields" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:536 msgid "Port hopping interval in seconds." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:853 #: htdocs/luci-static/resources/view/homeproxy/client.js:1291 msgid "Port range" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:918 msgid "Pre-shared key" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1150 msgid "Predefined" msgstr "" #: htdocs/luci-static/resources/homeproxy.js:18 msgid "Prefer IPv4" msgstr "" #: htdocs/luci-static/resources/homeproxy.js:19 msgid "Prefer IPv6" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:678 #: htdocs/luci-static/resources/view/homeproxy/node.js:903 msgid "Private key" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:683 msgid "Private key passphrase" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:583 #: htdocs/luci-static/resources/view/homeproxy/client.js:1063 msgid "Process fields" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:858 #: htdocs/luci-static/resources/view/homeproxy/client.js:1296 msgid "Process name" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:862 #: htdocs/luci-static/resources/view/homeproxy/client.js:1300 msgid "Process path" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:866 #: htdocs/luci-static/resources/view/homeproxy/client.js:1304 msgid "Process path (regex)" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:615 #: htdocs/luci-static/resources/view/homeproxy/client.js:1104 #: htdocs/luci-static/resources/view/homeproxy/node.js:543 #: htdocs/luci-static/resources/view/homeproxy/node.js:951 #: htdocs/luci-static/resources/view/homeproxy/server.js:250 msgid "Protocol" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:767 msgid "Protocol parameter. Enable length block encryption." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:760 msgid "" "Protocol parameter. Will waste traffic randomly if enabled (enabled by " "default in v2ray and cannot be disabled)." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1482 msgid "Proxy Domain List" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1437 #: htdocs/luci-static/resources/view/homeproxy/client.js:1466 msgid "Proxy IPv4 IP-s" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1440 #: htdocs/luci-static/resources/view/homeproxy/client.js:1469 msgid "Proxy IPv6 IP-s" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1443 msgid "Proxy MAC-s" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1424 msgid "Proxy all except listed" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1421 msgid "Proxy filter mode" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1423 msgid "Proxy listed only" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:284 msgid "Proxy mode" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:497 msgid "Proxy protocol" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:621 #: htdocs/luci-static/resources/view/homeproxy/client.js:953 #: htdocs/luci-static/resources/view/homeproxy/client.js:1109 #: htdocs/luci-static/resources/view/homeproxy/node.js:712 #: htdocs/luci-static/resources/view/homeproxy/node.js:779 #: htdocs/luci-static/resources/view/homeproxy/server.js:405 msgid "QUIC" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:699 #: htdocs/luci-static/resources/view/homeproxy/server.js:355 msgid "QUIC congestion control algorithm." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:599 #: htdocs/luci-static/resources/view/homeproxy/server.js:307 msgid "QUIC connection receive window" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:314 msgid "QUIC maximum concurrent bidirectional streams" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:593 #: htdocs/luci-static/resources/view/homeproxy/server.js:300 msgid "QUIC stream receive window" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1095 msgid "Query type" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1215 msgid "RCode" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:622 #: htdocs/luci-static/resources/view/homeproxy/client.js:1110 msgid "RDP" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:917 msgid "RDRC timeout" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1142 #: htdocs/luci-static/resources/view/homeproxy/server.js:709 msgid "REALITY" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:714 msgid "REALITY private key" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1147 #: htdocs/luci-static/resources/view/homeproxy/server.js:730 msgid "REALITY public key" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1153 #: htdocs/luci-static/resources/view/homeproxy/server.js:734 msgid "REALITY short ID" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:55 #: htdocs/luci-static/resources/view/homeproxy/server.js:58 msgid "RUNNING" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:665 msgid "Random version will be used if empty." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:488 msgid "Recursive outbound detected!" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1013 msgid "Recursive resolver detected!" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:285 msgid "Redirect TCP" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:287 msgid "Redirect TCP + TProxy UDP" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:289 msgid "Redirect TCP + Tun UDP" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/status.js:219 msgid "Refresh every %s seconds." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:659 msgid "Region ID" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:672 #: htdocs/luci-static/resources/view/homeproxy/client.js:1149 msgid "Reject" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1336 msgid "Remote" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1434 msgid "Remove %s nodes" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1424 msgid "Remove all nodes from subscriptions" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1203 msgid "Reply with REFUSED" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:769 msgid "Reply with TCP RST / ICMP port unreachable" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:925 msgid "Reserved field bytes" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:673 msgid "Resolve" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:780 msgid "Resolve strategy" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/status.js:241 msgid "Resources management" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:880 msgid "Reuse address" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:881 msgid "Reuse listener address." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:792 #: htdocs/luci-static/resources/view/homeproxy/client.js:1187 msgid "Rewrite TTL" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:793 #: htdocs/luci-static/resources/view/homeproxy/client.js:1188 msgid "Rewrite TTL in DNS responses." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:670 #: htdocs/luci-static/resources/view/homeproxy/client.js:1147 msgid "Route" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:671 #: htdocs/luci-static/resources/view/homeproxy/client.js:1148 msgid "Route options" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:396 msgid "Routing Nodes" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:567 msgid "Routing Rules" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:120 msgid "Routing Settings" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:251 msgid "Routing mode" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:405 msgid "Routing node" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:264 msgid "Routing ports" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:576 msgid "Routing rule" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1311 msgid "Rule Set" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:646 #: htdocs/luci-static/resources/view/homeproxy/client.js:1119 #: htdocs/luci-static/resources/view/homeproxy/client.js:1320 msgid "Rule set" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:661 #: htdocs/luci-static/resources/view/homeproxy/client.js:1134 msgid "Rule set IP CIDR as source IP" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1353 msgid "Rule set URL" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:623 #: htdocs/luci-static/resources/view/homeproxy/client.js:1111 #: htdocs/luci-static/resources/view/homeproxy/node.js:438 msgid "SSH" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:624 #: htdocs/luci-static/resources/view/homeproxy/client.js:1112 msgid "STUN" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1177 msgid "SUoT version" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:632 msgid "Safari / Apple Network API" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:569 #: htdocs/luci-static/resources/view/homeproxy/server.js:290 msgid "Salamander" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:152 msgid "Same as main node" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/status.js:267 #: htdocs/luci-static/resources/view/homeproxy/status.js:273 msgid "Save" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1397 msgid "Save current settings" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1394 msgid "Save subscriptions settings" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1155 #: htdocs/luci-static/resources/view/homeproxy/server.js:156 msgid "Server" msgstr "" #: root/usr/share/luci/menu.d/luci-app-homeproxy.json:30 msgid "Server Settings" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:607 msgid "" "Server name to use when choosing a certificate if the ClientHello's " "ServerName field is empty." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:151 msgid "Server settings" msgstr "" #: root/usr/share/luci/menu.d/luci-app-homeproxy.json:38 msgid "Service Status" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1175 msgid "Set domain strategy for this query." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:436 msgid "ShadowTLS" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:644 msgid "ShadowTLS version" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:435 #: htdocs/luci-static/resources/view/homeproxy/server.js:184 msgid "Shadowsocks" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:628 msgid "Sniffed client type (QUIC client type or SSH client name)." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:616 #: htdocs/luci-static/resources/view/homeproxy/client.js:1105 msgid "" "Sniffed protocol, see Sniff for details." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:437 #: htdocs/luci-static/resources/view/homeproxy/server.js:185 msgid "Socks" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:654 msgid "Socks version" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:655 msgid "Socks4" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:656 msgid "Socks4A" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:657 msgid "Socks5" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:822 #: htdocs/luci-static/resources/view/homeproxy/client.js:1259 msgid "Source IP CIDR" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1342 msgid "Source file" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:838 #: htdocs/luci-static/resources/view/homeproxy/client.js:1276 msgid "Source port" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:843 #: htdocs/luci-static/resources/view/homeproxy/client.js:1281 msgid "Source port range" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:750 msgid "" "Specifies DNS server tag to use instead of selecting through DNS routing." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:796 #: htdocs/luci-static/resources/view/homeproxy/node.js:848 msgid "" "Specifies the period of time (in seconds) after which a health check will be " "performed using a ping frame if no frames have been received on the " "connection.
    Please note that a ping response is considered a received " "frame, so if there is no other traffic on the connection, the health check " "will be executed every interval." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:422 #: htdocs/luci-static/resources/view/homeproxy/server.js:457 msgid "" "Specifies the time (in seconds) until idle clients should be closed with a " "GOAWAY frame. PING frames are not considered as activity." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:800 #: htdocs/luci-static/resources/view/homeproxy/node.js:856 msgid "" "Specifies the timeout duration (in seconds) after sending a PING frame, " "within which a response must be received.
    If a response to the PING " "frame is not received within the specified timeout duration, the connection " "will be closed." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:265 msgid "" "Specify target ports to be proxied. Multiple ports must be separated by " "commas." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:913 msgid "Store RDRC" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:914 msgid "" "Store rejected DNS response cache.
    The check results of Address " "filter DNS rule items will be cached until expiration." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:557 #: htdocs/luci-static/resources/view/homeproxy/server.js:278 msgid "String" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1322 msgid "Sub (%s)" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1349 msgid "Subscription URL-s" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1333 msgid "Subscriptions" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1273 msgid "Successfully imported %s nodes of total %s." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/status.js:86 msgid "Successfully updated." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1233 #: htdocs/luci-static/resources/view/homeproxy/node.js:1350 msgid "" "Support Hysteria, Shadowsocks, Trojan, v2rayN (VMess), and XTLS (VLESS) " "online configuration delivery standard." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:180 msgid "" "Support UDP, TCP, DoH, DoQ, DoT. TCP protocol will be used if not specified." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:313 msgid "System" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:383 #: htdocs/luci-static/resources/view/homeproxy/client.js:435 #: htdocs/luci-static/resources/view/homeproxy/client.js:757 #: htdocs/luci-static/resources/view/homeproxy/client.js:888 #: htdocs/luci-static/resources/view/homeproxy/client.js:996 #: htdocs/luci-static/resources/view/homeproxy/client.js:1162 msgid "System DNS" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:638 #: htdocs/luci-static/resources/view/homeproxy/client.js:949 #: htdocs/luci-static/resources/view/homeproxy/client.js:1100 #: htdocs/luci-static/resources/view/homeproxy/server.js:867 msgid "TCP" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1161 #: htdocs/luci-static/resources/view/homeproxy/server.js:845 msgid "TCP fast open" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:307 msgid "TCP/IP stack" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:308 msgid "TCP/IP stack." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:625 #: htdocs/luci-static/resources/view/homeproxy/client.js:950 #: htdocs/luci-static/resources/view/homeproxy/client.js:1113 #: htdocs/luci-static/resources/view/homeproxy/node.js:1003 #: htdocs/luci-static/resources/view/homeproxy/server.js:532 msgid "TLS" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1035 #: htdocs/luci-static/resources/view/homeproxy/server.js:565 msgid "TLS ALPN" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:980 #: htdocs/luci-static/resources/view/homeproxy/node.js:1030 #: htdocs/luci-static/resources/view/homeproxy/server.js:560 msgid "TLS SNI" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:735 msgid "TLS fragment" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:787 #: htdocs/luci-static/resources/view/homeproxy/server.js:413 msgid "TLS is not enforced. If TLS is not configured, plain HTTP 1.1 is used." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:729 #: htdocs/luci-static/resources/view/homeproxy/client.js:737 msgid "TLS record fragment" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:989 msgid "" "Tag of a another server to resolve the domain name in the address. Required " "if address contains domain." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1028 msgid "Tag of an outbound for connecting to the dns server." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1376 msgid "Tag of the outbound to download rule set." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1156 msgid "Tag of the target dns server." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:679 msgid "Tag of the target outbound." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:327 msgid "" "Tell the client to use the BBR flow control algorithm instead of Hysteria CC." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:187 #: htdocs/luci-static/resources/view/homeproxy/client.js:222 msgid "Tencent Public DNS (119.29.29.29)" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:510 msgid "Test URL" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:138 #: htdocs/luci-static/resources/view/homeproxy/client.js:167 #: htdocs/luci-static/resources/view/homeproxy/client.js:530 msgid "Test interval" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:538 msgid "Test interval must be less or equal than idle timeout." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:144 #: htdocs/luci-static/resources/view/homeproxy/client.js:173 #: htdocs/luci-static/resources/view/homeproxy/client.js:546 msgid "Test tolerance" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:628 msgid "The ACME CA provider to use." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:878 msgid "The DNS strategy for resolving the domain name in the address." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:600 #: htdocs/luci-static/resources/view/homeproxy/server.js:308 msgid "The QUIC connection-level flow control window for receiving data." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:594 #: htdocs/luci-static/resources/view/homeproxy/server.js:301 msgid "The QUIC stream-level flow control window for receiving data." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:511 msgid "The URL to test." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:958 msgid "The address of the dns server." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:679 msgid "" "The alternate port to use for the ACME HTTP challenge; if non-empty, this " "port will be used instead of 80 to spin up a listener for the HTTP challenge." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:685 msgid "" "The alternate port to use for the ACME TLS-ALPN challenge; the system must " "forward 443 to this port for challenge to succeed." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:596 msgid "" "The default rule uses the following matching logic:
    (domain || " "domain_suffix || domain_keyword || domain_regex || ip_cidr || " "ip_is_private) &&
    (port || port_range) &&
    (source_ip_cidr || source_ip_is_private) &&
    (source_port || source_port_range) &&
    other fields.
    Additionally, included rule sets can be considered merged rather " "than as a single rule sub-item." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1076 msgid "" "The default rule uses the following matching logic:
    (domain || " "domain_suffix || domain_keyword || domain_regex) &&
    (port " "|| port_range) &&
    (source_ip_cidr || source_ip_is_private) &&
    (source_port || source_port_range) &&
    other fields.
    Additionally, included rule sets can be " "considered merged rather than as a single rule sub-item." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:218 msgid "" "The dns server for resolving China domains. Support UDP, TCP, DoH, DoQ, DoT." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:447 #: htdocs/luci-static/resources/view/homeproxy/client.js:1021 msgid "The domain strategy for resolving the domain name in the address." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1065 #: htdocs/luci-static/resources/view/homeproxy/server.js:587 msgid "" "The elliptic curves that will be used in an ECDHE handshake, in preference " "order. If empty, the default will be used." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:613 msgid "" "The email address to use when creating or selecting an existing ACME server " "account." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:743 msgid "" "The fallback value in milliseconds used when TLS segmentation cannot " "automatically determine the wait time." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:554 msgid "The idle timeout in seconds." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1057 #: htdocs/luci-static/resources/view/homeproxy/server.js:579 msgid "The maximum TLS version that is acceptable." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:315 msgid "" "The maximum number of QUIC concurrent bidirectional streams that a peer is " "allowed to open." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:740 msgid "The maximum time difference between the server and the client." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1049 #: htdocs/luci-static/resources/view/homeproxy/server.js:571 msgid "The minimum TLS version that is acceptable." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:102 #: htdocs/luci-static/resources/view/homeproxy/server.js:130 msgid "The modern ImmortalWrt proxy platform for ARM64/AMD64." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:454 #: htdocs/luci-static/resources/view/homeproxy/server.js:875 msgid "The network interface to bind to." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:968 msgid "The path of the DNS server." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1099 msgid "" "The path to the ECH config, in PEM format. If empty, load from DNS will be " "attempted." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1078 msgid "The path to the server certificate, in PEM format." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:199 msgid "The port must be unique." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:963 msgid "The port of the DNS server." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1216 msgid "The response code." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:776 msgid "The server private key, in PEM format." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:757 msgid "The server public key, in PEM format." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:461 msgid "" "The tag of the upstream outbound.
    Other dial fields will be ignored when " "enabled." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:139 #: htdocs/luci-static/resources/view/homeproxy/client.js:168 #: htdocs/luci-static/resources/view/homeproxy/client.js:531 msgid "The test interval in seconds." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:145 #: htdocs/luci-static/resources/view/homeproxy/client.js:174 #: htdocs/luci-static/resources/view/homeproxy/client.js:547 msgid "The test tolerance in milliseconds." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:807 #: htdocs/luci-static/resources/view/homeproxy/server.js:465 msgid "" "The timeout (in seconds) that after performing a keepalive check, the client " "will wait for activity. If no activity is detected, the connection will be " "closed." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1043 #: htdocs/luci-static/resources/view/homeproxy/node.js:1385 msgid "" "This is DANGEROUS, your traffic is almost like " "PLAIN TEXT! Use at your own risk!" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:717 msgid "" "This is the TUIC port of the UDP over TCP protocol, designed to provide a " "QUIC stream based UDP relay mode that TUIC does not provide." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:188 #: htdocs/luci-static/resources/view/homeproxy/client.js:223 msgid "ThreatBook Public DNS (117.50.10.10)" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:723 msgid "" "Timeout for UDP connections.
    Setting a larger value than the UDP timeout " "in inbounds will have no effect." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:918 msgid "" "Timeout of rejected DNS response cache in seconds. 604800 (7d) " "is used by default." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:491 msgid "" "To be compatible with Xray-core, set this to Sec-WebSocket-Protocol." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:292 msgid "" "To enable Tun support, you need to install ip-full and " "kmod-tun" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/status.js:135 msgid "Trace" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:773 #: htdocs/luci-static/resources/view/homeproxy/server.js:399 msgid "Transport" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:439 #: htdocs/luci-static/resources/view/homeproxy/server.js:186 msgid "Trojan" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:441 #: htdocs/luci-static/resources/view/homeproxy/server.js:188 msgid "Tuic" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:290 msgid "Tun TCP/UDP" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:947 #: htdocs/luci-static/resources/view/homeproxy/client.js:1334 #: htdocs/luci-static/resources/view/homeproxy/node.js:427 #: htdocs/luci-static/resources/view/homeproxy/server.js:175 msgid "Type" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:639 #: htdocs/luci-static/resources/view/homeproxy/client.js:948 #: htdocs/luci-static/resources/view/homeproxy/client.js:1101 #: htdocs/luci-static/resources/view/homeproxy/server.js:868 msgid "UDP" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1167 #: htdocs/luci-static/resources/view/homeproxy/server.js:854 msgid "UDP Fragment" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:335 #: htdocs/luci-static/resources/view/homeproxy/server.js:859 msgid "UDP NAT expiration time" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1171 msgid "UDP over TCP" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:716 msgid "UDP over stream" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:709 msgid "UDP packet relay mode." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:708 msgid "UDP relay mode" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:722 msgid "UDP timeout" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:124 #: htdocs/luci-static/resources/view/homeproxy/client.js:153 #: htdocs/luci-static/resources/view/homeproxy/client.js:421 msgid "URLTest" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:131 #: htdocs/luci-static/resources/view/homeproxy/client.js:160 #: htdocs/luci-static/resources/view/homeproxy/client.js:496 msgid "URLTest nodes" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:690 #: htdocs/luci-static/resources/view/homeproxy/server.js:346 msgid "UUID" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/status.js:98 msgid "Unknown error." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/status.js:195 msgid "Unknown error: %s" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1135 msgid "Unsupported fingerprint!" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1409 msgid "Update %s subscriptions" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/status.js:89 msgid "Update failed." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1392 msgid "Update interval" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1393 msgid "Update interval of rule set." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1404 msgid "Update nodes from subscriptions" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1346 msgid "Update subscriptions via proxy." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1339 msgid "Update time" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1345 msgid "Update via proxy" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1104 msgid "Upload ECH config" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:995 #: htdocs/luci-static/resources/view/homeproxy/server.js:523 msgid "Upload bandwidth" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:996 #: htdocs/luci-static/resources/view/homeproxy/server.js:524 msgid "Upload bandwidth in Mbps." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1085 #: htdocs/luci-static/resources/view/homeproxy/server.js:767 msgid "Upload certificate" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:786 msgid "Upload key" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1088 #: htdocs/luci-static/resources/view/homeproxy/node.js:1107 #: htdocs/luci-static/resources/view/homeproxy/server.js:770 #: htdocs/luci-static/resources/view/homeproxy/server.js:789 msgid "Upload..." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:596 msgid "Use ACME TLS certificate issuer." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1031 #: htdocs/luci-static/resources/view/homeproxy/server.js:561 msgid "" "Used to verify the hostname on the returned certificates unless insecure is " "given." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:981 msgid "Used to verify the hostname on the returned certificates." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:642 #: htdocs/luci-static/resources/view/homeproxy/client.js:1115 msgid "User" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1379 msgid "User-Agent" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:458 #: htdocs/luci-static/resources/view/homeproxy/server.js:203 msgid "Username" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:444 #: htdocs/luci-static/resources/view/homeproxy/server.js:189 msgid "VLESS" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:445 #: htdocs/luci-static/resources/view/homeproxy/server.js:190 msgid "VMess" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:181 #: htdocs/luci-static/resources/view/homeproxy/client.js:219 msgid "WAN DNS (read from interface)" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1464 msgid "WAN IP Policy" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/status.js:138 msgid "Warn" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:780 #: htdocs/luci-static/resources/view/homeproxy/server.js:406 msgid "WebSocket" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1370 msgid "Whitelist mode" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:443 msgid "WireGuard" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:912 msgid "WireGuard peer public key." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:919 msgid "WireGuard pre-shared key." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:904 msgid "WireGuard requires base64-encoded private keys." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:498 msgid "Write proxy protocol in the connection header." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:889 #: htdocs/luci-static/resources/view/homeproxy/node.js:1392 msgid "Xudp (Xray-core)" msgstr "" #: htdocs/luci-static/resources/homeproxy.js:259 msgid "Your %s was successfully uploaded. Size: %sB." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:630 msgid "ZeroSSL" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1090 #: htdocs/luci-static/resources/view/homeproxy/server.js:772 msgid "certificate" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:716 msgid "connect UDP connections" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1050 #: htdocs/luci-static/resources/view/homeproxy/node.js:1058 #: htdocs/luci-static/resources/view/homeproxy/server.js:572 #: htdocs/luci-static/resources/view/homeproxy/server.js:580 msgid "default" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/status.js:53 msgid "failed" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:776 #: htdocs/luci-static/resources/view/homeproxy/server.js:402 msgid "gRPC" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:818 msgid "gRPC permit without stream" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:813 #: htdocs/luci-static/resources/view/homeproxy/server.js:430 msgid "gRPC service name" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:311 msgid "gVisor" msgstr "" #: htdocs/luci-static/resources/homeproxy.js:306 #: htdocs/luci-static/resources/homeproxy.js:326 #: htdocs/luci-static/resources/view/homeproxy/client.js:195 #: htdocs/luci-static/resources/view/homeproxy/client.js:230 #: htdocs/luci-static/resources/view/homeproxy/client.js:504 #: htdocs/luci-static/resources/view/homeproxy/client.js:1357 #: htdocs/luci-static/resources/view/homeproxy/node.js:488 #: htdocs/luci-static/resources/view/homeproxy/node.js:1131 #: htdocs/luci-static/resources/view/homeproxy/server.js:235 msgid "non-empty value" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:631 #: htdocs/luci-static/resources/view/homeproxy/node.js:887 #: htdocs/luci-static/resources/view/homeproxy/node.js:1390 msgid "none" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:888 #: htdocs/luci-static/resources/view/homeproxy/node.js:1391 msgid "packet addr (v2ray-core v5+)" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/status.js:50 msgid "passed" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/server.js:791 msgid "private key" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:631 msgid "quic-go / uquic chrome" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/status.js:285 msgid "sing-box client" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/status.js:288 msgid "sing-box server" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1113 msgid "uTLS fingerprint" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:1114 msgid "" "uTLS is a fork of \"crypto/tls\", which provides ClientHello fingerprinting " "resistance." msgstr "" #: htdocs/luci-static/resources/view/homeproxy/status.js:59 msgid "unchecked" msgstr "" #: htdocs/luci-static/resources/homeproxy.js:237 #: htdocs/luci-static/resources/view/homeproxy/node.js:1302 msgid "unique UCI identifier" msgstr "" #: htdocs/luci-static/resources/homeproxy.js:317 msgid "unique value" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:500 #: htdocs/luci-static/resources/view/homeproxy/node.js:645 #: htdocs/luci-static/resources/view/homeproxy/node.js:1178 msgid "v1" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:501 #: htdocs/luci-static/resources/view/homeproxy/node.js:646 #: htdocs/luci-static/resources/view/homeproxy/node.js:1179 msgid "v2" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/node.js:647 msgid "v3" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:207 #: htdocs/luci-static/resources/view/homeproxy/client.js:211 #: htdocs/luci-static/resources/view/homeproxy/client.js:241 #: htdocs/luci-static/resources/view/homeproxy/client.js:245 msgid "valid DNS server address" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:518 #: htdocs/luci-static/resources/view/homeproxy/client.js:521 #: htdocs/luci-static/resources/view/homeproxy/client.js:1362 #: htdocs/luci-static/resources/view/homeproxy/client.js:1365 #: htdocs/luci-static/resources/view/homeproxy/node.js:1356 #: htdocs/luci-static/resources/view/homeproxy/node.js:1359 msgid "valid URL" msgstr "" #: htdocs/luci-static/resources/homeproxy.js:271 msgid "valid base64 key with %d characters" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:1507 #: htdocs/luci-static/resources/view/homeproxy/client.js:1539 msgid "valid hostname" msgstr "" #: htdocs/luci-static/resources/homeproxy.js:297 msgid "valid port range (port1:port2)" msgstr "" #: htdocs/luci-static/resources/view/homeproxy/client.js:274 msgid "valid port value" msgstr "" #: htdocs/luci-static/resources/homeproxy.js:328 msgid "valid uuid" msgstr "" ================================================ FILE: luci-app-homeproxy/po/zh_Hans/homeproxy.po ================================================ msgid "" msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Project-Id-Version: PACKAGE VERSION\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: zh_Hans\n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" #: htdocs/luci-static/resources/view/homeproxy/status.js:206 msgid "%s log" msgstr "%s 日志" #: htdocs/luci-static/resources/view/homeproxy/node.js:1456 msgid "%s nodes removed" msgstr "移除了 %s 个节点" #: htdocs/luci-static/resources/homeproxy.js:279 msgid "/etc/homeproxy/certs/..., /etc/acme/..., /etc/ssl/..." msgstr "/etc/homeproxy/certs/...,/etc/acme/...,/etc/ssl/..." #: htdocs/luci-static/resources/view/homeproxy/client.js:609 msgid "4 or 6. Not limited if empty." msgstr "4 或 6。留空不限制。" #: htdocs/luci-static/resources/view/homeproxy/client.js:775 #: htdocs/luci-static/resources/view/homeproxy/client.js:1210 msgid "" "%s will be temporarily overwritten to %s after 50 " "triggers in 30s if not enabled." msgstr "" "%s 在未启用的情况下,50 次触发后会在 30 秒内临时覆盖为 " "%s。" #: htdocs/luci-static/resources/view/homeproxy/node.js:1086 #: htdocs/luci-static/resources/view/homeproxy/node.js:1105 #: htdocs/luci-static/resources/view/homeproxy/server.js:768 #: htdocs/luci-static/resources/view/homeproxy/server.js:787 msgid "Save your configuration before uploading files!" msgstr "上传文件前请先保存配置!" #: htdocs/luci-static/resources/view/homeproxy/server.js:664 msgid "API token" msgstr "API 令牌" #: htdocs/luci-static/resources/view/homeproxy/node.js:670 msgid "Accept any if empty." msgstr "留空则不校验。" #: htdocs/luci-static/resources/view/homeproxy/client.js:1138 msgid "Accept empty query response" msgstr "接受空查询响应" #: htdocs/luci-static/resources/view/homeproxy/client.js:1399 msgid "Access Control" msgstr "访问控制" #: htdocs/luci-static/resources/view/homeproxy/server.js:647 msgid "Access key ID" msgstr "访问密钥 ID" #: htdocs/luci-static/resources/view/homeproxy/server.js:653 msgid "Access key secret" msgstr "访问密钥" #: htdocs/luci-static/resources/view/homeproxy/client.js:669 #: htdocs/luci-static/resources/view/homeproxy/client.js:1146 msgid "Action" msgstr "操作" #: htdocs/luci-static/resources/view/homeproxy/client.js:1056 msgid "Add a DNS rule" msgstr "新增 DNS 规则" #: htdocs/luci-static/resources/view/homeproxy/client.js:933 msgid "Add a DNS server" msgstr "新增 DNS 服务器" #: htdocs/luci-static/resources/view/homeproxy/node.js:396 msgid "Add a node" msgstr "新增节点" #: htdocs/luci-static/resources/view/homeproxy/client.js:405 msgid "Add a routing node" msgstr "新增路由节点" #: htdocs/luci-static/resources/view/homeproxy/client.js:576 msgid "Add a routing rule" msgstr "新增路由规则" #: htdocs/luci-static/resources/view/homeproxy/client.js:1320 msgid "Add a rule set" msgstr "新增规则集" #: htdocs/luci-static/resources/view/homeproxy/server.js:156 msgid "Add a server" msgstr "新增服务器" #: htdocs/luci-static/resources/view/homeproxy/client.js:975 msgid "Additional headers to be sent to the DNS server." msgstr "发送到 DNS 服务器的附加标头。" #: htdocs/luci-static/resources/view/homeproxy/client.js:957 #: htdocs/luci-static/resources/view/homeproxy/node.js:448 msgid "Address" msgstr "地址" #: htdocs/luci-static/resources/view/homeproxy/client.js:988 msgid "Address resolver" msgstr "地址解析器" #: htdocs/luci-static/resources/view/homeproxy/client.js:1020 msgid "Address strategy" msgstr "地址解析策略" #: htdocs/luci-static/resources/view/homeproxy/server.js:640 msgid "Alibaba Cloud DNS" msgstr "阿里云 DNS" #: htdocs/luci-static/resources/view/homeproxy/client.js:186 #: htdocs/luci-static/resources/view/homeproxy/client.js:220 msgid "Aliyun Public DNS (223.5.5.5)" msgstr "阿里云公共 DNS(223.5.5.5)" #: htdocs/luci-static/resources/view/homeproxy/client.js:266 msgid "All ports" msgstr "所有端口" #: htdocs/luci-static/resources/view/homeproxy/server.js:172 msgid "Allow access from the Internet." msgstr "允许来自互联网的访问。" #: htdocs/luci-static/resources/view/homeproxy/node.js:1040 #: htdocs/luci-static/resources/view/homeproxy/node.js:1382 msgid "Allow insecure" msgstr "允许不安全连接" #: htdocs/luci-static/resources/view/homeproxy/node.js:1041 msgid "Allow insecure connection at TLS client." msgstr "允许 TLS 客户端侧的不安全连接。" #: htdocs/luci-static/resources/view/homeproxy/node.js:1383 msgid "Allow insecure connection by default when add nodes from subscriptions." msgstr "从订阅获取节点时,默认允许不安全连接。" #: htdocs/luci-static/resources/view/homeproxy/node.js:874 #: htdocs/luci-static/resources/view/homeproxy/server.js:482 msgid "Allowed payload size is in the request." msgstr "请求中允许的载荷大小。" #: htdocs/luci-static/resources/view/homeproxy/status.js:95 msgid "Already at the latest version." msgstr "已是最新版本。" #: htdocs/luci-static/resources/view/homeproxy/status.js:92 msgid "Already in updating." msgstr "已在更新中。" #: htdocs/luci-static/resources/view/homeproxy/node.js:742 #: htdocs/luci-static/resources/view/homeproxy/server.js:391 msgid "Alter ID" msgstr "额外 ID" #: htdocs/luci-static/resources/view/homeproxy/server.js:678 msgid "Alternative HTTP port" msgstr "替代 HTTP 端口" #: htdocs/luci-static/resources/view/homeproxy/server.js:684 msgid "Alternative TLS port" msgstr "替代 HTTPS 端口" #: htdocs/luci-static/resources/view/homeproxy/node.js:1419 msgid "An error occurred during updating subscriptions: %s" msgstr "更新订阅时发生错误:%s" #: htdocs/luci-static/resources/view/homeproxy/client.js:1227 msgid "Answer" msgstr "回答" #: htdocs/luci-static/resources/view/homeproxy/node.js:429 #: htdocs/luci-static/resources/view/homeproxy/server.js:176 msgid "AnyTLS" msgstr "AnyTLS" #: htdocs/luci-static/resources/view/homeproxy/server.js:245 msgid "AnyTLS padding scheme in array." msgstr "AnyTLS 填充方案。" #: htdocs/luci-static/resources/view/homeproxy/client.js:799 #: htdocs/luci-static/resources/view/homeproxy/client.js:909 #: htdocs/luci-static/resources/view/homeproxy/client.js:1195 msgid "" "Append a edns0-subnet OPT extra record with the specified IP " "prefix to every query by default.
    If value is an IP address instead of " "prefix, /32 or /128 will be appended automatically." msgstr "" "将带有指定 IP 前缀的 edns0-subnet OPT 记录附加到每个查询。如果值" "是 IP 地址而不是前缀,则会自动添加 /32/128。" #: htdocs/luci-static/resources/view/homeproxy/node.js:1072 msgid "Append self-signed certificate" msgstr "追加自签名证书" #: htdocs/luci-static/resources/view/homeproxy/node.js:407 msgid "Applied" msgstr "已应用" #: htdocs/luci-static/resources/view/homeproxy/node.js:400 #: htdocs/luci-static/resources/view/homeproxy/node.js:410 msgid "Apply" msgstr "应用" #: htdocs/luci-static/resources/view/homeproxy/node.js:18 msgid "Are you sure to allow insecure?" msgstr "确定要允许不安全连接吗?" #: htdocs/luci-static/resources/view/homeproxy/server.js:363 msgid "Auth timeout" msgstr "认证超时" #: htdocs/luci-static/resources/view/homeproxy/node.js:766 msgid "Authenticated length" msgstr "认证长度" #: htdocs/luci-static/resources/view/homeproxy/node.js:561 #: htdocs/luci-static/resources/view/homeproxy/server.js:282 msgid "Authentication payload" msgstr "认证载荷" #: htdocs/luci-static/resources/view/homeproxy/node.js:554 #: htdocs/luci-static/resources/view/homeproxy/server.js:275 msgid "Authentication type" msgstr "认证类型" #: htdocs/luci-static/resources/view/homeproxy/node.js:1335 msgid "Auto update" msgstr "自动更新" #: htdocs/luci-static/resources/view/homeproxy/node.js:1336 msgid "Auto update subscriptions and geodata." msgstr "自动更新订阅和地理数据。" #: htdocs/luci-static/resources/view/homeproxy/node.js:702 msgid "BBR" msgstr "BBR" #: htdocs/luci-static/resources/view/homeproxy/status.js:235 msgid "BaiDu" msgstr "百度" #: htdocs/luci-static/resources/view/homeproxy/node.js:556 #: htdocs/luci-static/resources/view/homeproxy/server.js:277 msgid "Base64" msgstr "Base64" #: htdocs/luci-static/resources/view/homeproxy/client.js:323 msgid "Based on google/gvisor." msgstr "基于 google/gvisor。" #: htdocs/luci-static/resources/view/homeproxy/client.js:1341 msgid "Binary file" msgstr "二进制文件" #: htdocs/luci-static/resources/view/homeproxy/client.js:453 #: htdocs/luci-static/resources/view/homeproxy/client.js:1412 #: htdocs/luci-static/resources/view/homeproxy/server.js:874 msgid "Bind interface" msgstr "绑定接口" #: htdocs/luci-static/resources/view/homeproxy/client.js:1413 msgid "" "Bind outbound traffic to specific interface. Leave empty to auto detect." msgstr "绑定出站流量至指定端口。留空自动检测。" #: htdocs/luci-static/resources/view/homeproxy/client.js:617 #: htdocs/luci-static/resources/view/homeproxy/client.js:1106 msgid "BitTorrent" msgstr "BitTorrent" #: htdocs/luci-static/resources/view/homeproxy/node.js:1369 msgid "Blacklist mode" msgstr "黑名单模式" #: htdocs/luci-static/resources/view/homeproxy/client.js:365 msgid "Block" msgstr "封锁" #: htdocs/luci-static/resources/view/homeproxy/client.js:612 #: htdocs/luci-static/resources/view/homeproxy/client.js:640 #: htdocs/luci-static/resources/view/homeproxy/client.js:1092 #: htdocs/luci-static/resources/view/homeproxy/client.js:1102 #: htdocs/luci-static/resources/view/homeproxy/server.js:869 msgid "Both" msgstr "全部" #: htdocs/luci-static/resources/view/homeproxy/client.js:343 msgid "Bypass CN traffic" msgstr "绕过中国流量" #: htdocs/luci-static/resources/view/homeproxy/client.js:253 msgid "Bypass mainland China" msgstr "大陆白名单" #: htdocs/luci-static/resources/view/homeproxy/client.js:344 msgid "Bypass mainland China traffic via firewall rules by default." msgstr "默认使用防火墙规则绕过中国大陆流量。" #: htdocs/luci-static/resources/view/homeproxy/server.js:627 msgid "CA provider" msgstr "CA 颁发机构" #: htdocs/luci-static/resources/view/homeproxy/client.js:221 msgid "CNNIC Public DNS (210.2.4.8)" msgstr "CNNIC 公共 DNS(210.2.4.8)" #: htdocs/luci-static/resources/view/homeproxy/node.js:700 msgid "CUBIC" msgstr "CUBIC" #: htdocs/luci-static/resources/view/homeproxy/node.js:1239 msgid "Cancel" msgstr "取消" #: htdocs/luci-static/resources/view/homeproxy/node.js:1077 #: htdocs/luci-static/resources/view/homeproxy/server.js:756 msgid "Certificate path" msgstr "证书路径" #: htdocs/luci-static/resources/view/homeproxy/status.js:57 msgid "Check" msgstr "检查" #: htdocs/luci-static/resources/view/homeproxy/status.js:105 msgid "Check update" msgstr "检查更新" #: htdocs/luci-static/resources/view/homeproxy/client.js:217 msgid "China DNS server" msgstr "国内 DNS 服务器" #: htdocs/luci-static/resources/view/homeproxy/status.js:244 msgid "China IPv4 list version" msgstr "国内 IPv4 库版本" #: htdocs/luci-static/resources/view/homeproxy/status.js:248 msgid "China IPv6 list version" msgstr "国内 IPv6 库版本" #: htdocs/luci-static/resources/view/homeproxy/status.js:252 msgid "China list version" msgstr "国内域名列表版本" #: htdocs/luci-static/resources/view/homeproxy/client.js:629 msgid "Chromium / Cronet" msgstr "Chromium / Cronet" #: htdocs/luci-static/resources/view/homeproxy/node.js:1064 #: htdocs/luci-static/resources/view/homeproxy/server.js:586 msgid "Cipher suites" msgstr "密码套件" #: htdocs/luci-static/resources/view/homeproxy/client.js:183 msgid "Cisco Public DNS (208.67.222.222)" msgstr "思科公共 DNS(208.67.222.222)" #: htdocs/luci-static/resources/view/homeproxy/status.js:214 msgid "Clean log" msgstr "清空日志" #: htdocs/luci-static/resources/view/homeproxy/client.js:627 msgid "Client" msgstr "客户端" #: root/usr/share/luci/menu.d/luci-app-homeproxy.json:14 msgid "Client Settings" msgstr "客户端设置" #: htdocs/luci-static/resources/view/homeproxy/node.js:664 msgid "Client version" msgstr "客户端版本" #: htdocs/luci-static/resources/view/homeproxy/client.js:182 msgid "CloudFlare Public DNS (1.1.1.1)" msgstr "CloudFlare 公共 DNS(1.1.1.1)" #: htdocs/luci-static/resources/view/homeproxy/server.js:641 msgid "Cloudflare" msgstr "Cloudflare" #: htdocs/luci-static/resources/view/homeproxy/client.js:114 #: htdocs/luci-static/resources/view/homeproxy/server.js:142 #: htdocs/luci-static/resources/view/homeproxy/status.js:176 msgid "Collecting data..." msgstr "正在收集数据中..." #: htdocs/luci-static/resources/view/homeproxy/client.js:267 msgid "Common ports only (bypass P2P traffic)" msgstr "仅常用端口(绕过 P2P 流量)" #: htdocs/luci-static/resources/view/homeproxy/node.js:698 #: htdocs/luci-static/resources/view/homeproxy/server.js:354 msgid "Congestion control algorithm" msgstr "拥塞控制算法" #: htdocs/luci-static/resources/view/homeproxy/status.js:232 msgid "Connection check" msgstr "连接检查" #: htdocs/luci-static/resources/view/homeproxy/client.js:255 msgid "Custom routing" msgstr "自定义路由" #: htdocs/luci-static/resources/view/homeproxy/client.js:618 msgid "DNS" msgstr "DNS" #: htdocs/luci-static/resources/view/homeproxy/client.js:1047 msgid "DNS Rules" msgstr "DNS 规则" #: htdocs/luci-static/resources/view/homeproxy/client.js:924 msgid "DNS Servers" msgstr "DNS 服务器" #: htdocs/luci-static/resources/view/homeproxy/client.js:872 msgid "DNS Settings" msgstr "DNS 设置" #: htdocs/luci-static/resources/view/homeproxy/server.js:639 msgid "DNS provider" msgstr "DNS 提供商" #: htdocs/luci-static/resources/view/homeproxy/client.js:1056 msgid "DNS rule" msgstr "DNS 规则" #: htdocs/luci-static/resources/view/homeproxy/client.js:179 #: htdocs/luci-static/resources/view/homeproxy/client.js:749 #: htdocs/luci-static/resources/view/homeproxy/client.js:933 msgid "DNS server" msgstr "DNS 服务器" #: htdocs/luci-static/resources/view/homeproxy/server.js:635 msgid "DNS01 challenge" msgstr "DNS01 验证" #: htdocs/luci-static/resources/view/homeproxy/client.js:619 #: htdocs/luci-static/resources/view/homeproxy/client.js:1107 msgid "DTLS" msgstr "DTLS" #: htdocs/luci-static/resources/view/homeproxy/status.js:136 msgid "Debug" msgstr "调试" #: htdocs/luci-static/resources/homeproxy.js:17 #: htdocs/luci-static/resources/view/homeproxy/client.js:433 #: htdocs/luci-static/resources/view/homeproxy/client.js:603 #: htdocs/luci-static/resources/view/homeproxy/client.js:755 #: htdocs/luci-static/resources/view/homeproxy/client.js:1083 #: htdocs/luci-static/resources/view/homeproxy/client.js:1381 #: htdocs/luci-static/resources/view/homeproxy/node.js:710 msgid "Default" msgstr "默认" #: htdocs/luci-static/resources/view/homeproxy/client.js:382 #: htdocs/luci-static/resources/view/homeproxy/client.js:434 #: htdocs/luci-static/resources/view/homeproxy/client.js:756 #: htdocs/luci-static/resources/view/homeproxy/client.js:887 #: htdocs/luci-static/resources/view/homeproxy/client.js:995 #: htdocs/luci-static/resources/view/homeproxy/client.js:1161 msgid "Default DNS (issued by WAN)" msgstr "默认 DNS(由 WAN 下发)" #: htdocs/luci-static/resources/view/homeproxy/client.js:882 msgid "Default DNS server" msgstr "默认 DNS 服务器" #: htdocs/luci-static/resources/view/homeproxy/client.js:377 msgid "Default DNS server for resolving domain name in the server address." msgstr "用于解析服务器地址中的域名的默认 DNS 服务器。" #: htdocs/luci-static/resources/view/homeproxy/client.js:877 msgid "Default DNS strategy" msgstr "默认 DNS 解析策略" #: htdocs/luci-static/resources/view/homeproxy/client.js:357 msgid "Default outbound" msgstr "默认出站" #: htdocs/luci-static/resources/view/homeproxy/client.js:376 msgid "Default outbound DNS" msgstr "默认出站 DNS" #: htdocs/luci-static/resources/view/homeproxy/client.js:358 msgid "Default outbound for connections not matched by any routing rules." msgstr "用于未被任何路由规则匹配的连接的默认出站。" #: htdocs/luci-static/resources/view/homeproxy/node.js:1389 msgid "Default packet encoding" msgstr "默认包封装格式" #: htdocs/luci-static/resources/view/homeproxy/server.js:606 msgid "Default server name" msgstr "默认服务器名称" #: htdocs/luci-static/resources/view/homeproxy/client.js:364 #: htdocs/luci-static/resources/view/homeproxy/client.js:466 #: htdocs/luci-static/resources/view/homeproxy/client.js:684 #: htdocs/luci-static/resources/view/homeproxy/client.js:1033 #: htdocs/luci-static/resources/view/homeproxy/client.js:1382 #: htdocs/luci-static/resources/view/homeproxy/node.js:428 msgid "Direct" msgstr "直连" #: htdocs/luci-static/resources/view/homeproxy/client.js:1514 msgid "Direct Domain List" msgstr "直连域名列表" #: htdocs/luci-static/resources/view/homeproxy/client.js:1428 #: htdocs/luci-static/resources/view/homeproxy/client.js:1473 msgid "Direct IPv4 IP-s" msgstr "直连 IPv4 地址" #: htdocs/luci-static/resources/view/homeproxy/client.js:1431 #: htdocs/luci-static/resources/view/homeproxy/client.js:1476 msgid "Direct IPv6 IP-s" msgstr "直连 IPv6 地址" #: htdocs/luci-static/resources/view/homeproxy/client.js:1434 msgid "Direct MAC-s" msgstr "直连 MAC 地址" #: htdocs/luci-static/resources/view/homeproxy/client.js:123 #: htdocs/luci-static/resources/view/homeproxy/client.js:151 #: htdocs/luci-static/resources/view/homeproxy/client.js:1422 #: htdocs/luci-static/resources/view/homeproxy/node.js:499 #: htdocs/luci-static/resources/view/homeproxy/node.js:555 #: htdocs/luci-static/resources/view/homeproxy/node.js:568 #: htdocs/luci-static/resources/view/homeproxy/node.js:1115 #: htdocs/luci-static/resources/view/homeproxy/node.js:1368 #: htdocs/luci-static/resources/view/homeproxy/server.js:276 #: htdocs/luci-static/resources/view/homeproxy/server.js:289 msgid "Disable" msgstr "禁用" #: htdocs/luci-static/resources/view/homeproxy/client.js:363 msgid "Disable (the service)" msgstr "禁用(服务)" #: htdocs/luci-static/resources/view/homeproxy/client.js:787 #: htdocs/luci-static/resources/view/homeproxy/client.js:899 msgid "Disable DNS cache" msgstr "禁用 DNS 缓存" #: htdocs/luci-static/resources/view/homeproxy/client.js:788 msgid "Disable DNS cache in this query." msgstr "在本次查询中禁用 DNS 缓存。" #: htdocs/luci-static/resources/view/homeproxy/server.js:670 msgid "Disable HTTP challenge" msgstr "禁用 HTTP 验证" #: htdocs/luci-static/resources/view/homeproxy/node.js:605 #: htdocs/luci-static/resources/view/homeproxy/server.js:321 msgid "Disable Path MTU discovery" msgstr "禁用路径 MTU 探测" #: htdocs/luci-static/resources/view/homeproxy/server.js:674 msgid "Disable TLS ALPN challenge" msgstr "禁用 TLS ALPN 认证" #: htdocs/luci-static/resources/view/homeproxy/client.js:710 msgid "Disable UDP domain unmapping" msgstr "禁用 UDP 域名映射" #: htdocs/luci-static/resources/view/homeproxy/client.js:1182 msgid "Disable cache and save cache in this query." msgstr "在本次查询中禁用缓存。" #: htdocs/luci-static/resources/view/homeproxy/client.js:901 msgid "Disable cache expire" msgstr "缓存永不过期" #: htdocs/luci-static/resources/view/homeproxy/client.js:1181 msgid "Disable dns cache" msgstr "禁用 DNS 缓存" #: htdocs/luci-static/resources/view/homeproxy/node.js:606 #: htdocs/luci-static/resources/view/homeproxy/server.js:322 msgid "" "Disables Path MTU Discovery (RFC 8899). Packets will then be at most 1252 " "(IPv4) / 1232 (IPv6) bytes in size." msgstr "" "禁用路径 MTU 发现 (RFC 8899)。 数据包的大小最多为 1252 (IPv4) / 1232 (IPv6) " "字节。" #: htdocs/luci-static/resources/view/homeproxy/client.js:814 #: htdocs/luci-static/resources/view/homeproxy/client.js:1251 msgid "Domain keyword" msgstr "域名关键词" #: htdocs/luci-static/resources/view/homeproxy/client.js:805 #: htdocs/luci-static/resources/view/homeproxy/client.js:1242 msgid "Domain name" msgstr "域名" #: htdocs/luci-static/resources/view/homeproxy/client.js:818 #: htdocs/luci-static/resources/view/homeproxy/client.js:1255 msgid "Domain regex" msgstr "域名正则表达式" #: htdocs/luci-static/resources/view/homeproxy/client.js:427 msgid "Domain resolver" msgstr "域名解析器" #: htdocs/luci-static/resources/view/homeproxy/client.js:347 #: htdocs/luci-static/resources/view/homeproxy/client.js:446 #: htdocs/luci-static/resources/view/homeproxy/client.js:1174 msgid "Domain strategy" msgstr "域名解析策略" #: htdocs/luci-static/resources/view/homeproxy/client.js:781 msgid "Domain strategy for resolving the domain names." msgstr "目标域名的解析策略。" #: htdocs/luci-static/resources/view/homeproxy/client.js:810 #: htdocs/luci-static/resources/view/homeproxy/client.js:1247 msgid "Domain suffix" msgstr "域名后缀" #: htdocs/luci-static/resources/view/homeproxy/server.js:600 msgid "Domains" msgstr "域名" #: htdocs/luci-static/resources/view/homeproxy/client.js:774 msgid "Don't drop packets" msgstr "不丢弃数据包" #: htdocs/luci-static/resources/view/homeproxy/client.js:1209 msgid "Don't drop requests" msgstr "不丢弃请求" #: htdocs/luci-static/resources/view/homeproxy/node.js:989 #: htdocs/luci-static/resources/view/homeproxy/server.js:517 msgid "Download bandwidth" msgstr "下载带宽" #: htdocs/luci-static/resources/view/homeproxy/node.js:990 #: htdocs/luci-static/resources/view/homeproxy/server.js:518 msgid "Download bandwidth in Mbps." msgstr "下载带宽(单位:Mbps)。" #: htdocs/luci-static/resources/view/homeproxy/client.js:770 #: htdocs/luci-static/resources/view/homeproxy/client.js:776 msgid "Drop packets" msgstr "丢弃数据包" #: htdocs/luci-static/resources/view/homeproxy/client.js:1204 #: htdocs/luci-static/resources/view/homeproxy/client.js:1211 msgid "Drop requests" msgstr "丢弃请求" #: htdocs/luci-static/resources/view/homeproxy/node.js:1375 msgid "" "Drop/keep nodes that contain the specific keywords. Regex is supported." msgstr "" "丢弃/保留 包含指定关键词的节点。支持" "正则表达式。" #: htdocs/luci-static/resources/view/homeproxy/node.js:1367 msgid "Drop/keep specific nodes from subscriptions." msgstr "从订阅中 丢弃/保留 指定节点" #: htdocs/luci-static/resources/view/homeproxy/server.js:691 msgid "" "EAB (External Account Binding) contains information necessary to bind or map " "an ACME account to some other account known by the CA.
    External account " "bindings are \"used to associate an ACME account with an existing account in " "a non-ACME system, such as a CA customer database." msgstr "" "EAB(外部帐户绑定)包含将 ACME 帐户绑定或映射到 CA 已知的其他帐户所需的信息。" "
    外部帐户绑定“用于将 ACME 帐户与非 ACME 系统中的现有帐户相关联,例如 CA " "客户数据库。" #: htdocs/luci-static/resources/view/homeproxy/node.js:1094 msgid "" "ECH (Encrypted Client Hello) is a TLS extension that allows a client to " "encrypt the first part of its ClientHello message." msgstr "" "ECH(Encrypted Client Hello)是一个 TLS 扩展,它允许客户端加密其 ClientHello " "信息的第一部分。" #: htdocs/luci-static/resources/view/homeproxy/node.js:1109 #: htdocs/luci-static/resources/view/homeproxy/server.js:835 msgid "ECH config" msgstr "ECH 配置" #: htdocs/luci-static/resources/view/homeproxy/node.js:1098 msgid "ECH config path" msgstr "ECH 配置路径" #: htdocs/luci-static/resources/view/homeproxy/server.js:794 msgid "ECH key" msgstr "ECH 密钥" #: htdocs/luci-static/resources/view/homeproxy/client.js:798 #: htdocs/luci-static/resources/view/homeproxy/client.js:908 #: htdocs/luci-static/resources/view/homeproxy/client.js:1194 msgid "EDNS Client subnet" msgstr "ENDS 客户端子网" #: htdocs/luci-static/resources/view/homeproxy/node.js:873 #: htdocs/luci-static/resources/view/homeproxy/server.js:481 msgid "Early data" msgstr "前置数据" #: htdocs/luci-static/resources/view/homeproxy/node.js:880 #: htdocs/luci-static/resources/view/homeproxy/server.js:488 msgid "Early data header name" msgstr "前置数据标头" #: htdocs/luci-static/resources/view/homeproxy/server.js:489 msgid "Early data is sent in path instead of header by default." msgstr "前置数据默认发送在路径而不是标头中。" #: htdocs/luci-static/resources/view/homeproxy/node.js:1211 msgid "Edit nodes" msgstr "修改节点" #: htdocs/luci-static/resources/view/homeproxy/server.js:612 msgid "Email" msgstr "Email" #: htdocs/luci-static/resources/view/homeproxy/client.js:414 #: htdocs/luci-static/resources/view/homeproxy/client.js:590 #: htdocs/luci-static/resources/view/homeproxy/client.js:942 #: htdocs/luci-static/resources/view/homeproxy/client.js:1070 #: htdocs/luci-static/resources/view/homeproxy/client.js:1329 #: htdocs/luci-static/resources/view/homeproxy/server.js:148 #: htdocs/luci-static/resources/view/homeproxy/server.js:166 msgid "Enable" msgstr "启用" #: htdocs/luci-static/resources/view/homeproxy/node.js:722 #: htdocs/luci-static/resources/view/homeproxy/server.js:371 msgid "" "Enable 0-RTT QUIC connection handshake on the client side. This is not " "impacting much on the performance, as the protocol is fully multiplexed.
    Disabling this is highly recommended, as it is vulnerable to replay attacks." msgstr "" "在客户端启用 0-RTT QUIC 连接握手。由于协议是完全复用的,这对性能影响不大。" "
    强烈建议禁用此功能,因为它容易受到重放攻击。" #: htdocs/luci-static/resources/view/homeproxy/node.js:721 #: htdocs/luci-static/resources/view/homeproxy/server.js:370 msgid "Enable 0-RTT handshake" msgstr "启用 0-RTT 握手" #: htdocs/luci-static/resources/view/homeproxy/server.js:595 msgid "Enable ACME" msgstr "启用 ACME" #: htdocs/luci-static/resources/view/homeproxy/node.js:1093 msgid "Enable ECH" msgstr "启用 ECH" #: htdocs/luci-static/resources/view/homeproxy/node.js:984 #: htdocs/luci-static/resources/view/homeproxy/server.js:512 msgid "Enable TCP Brutal" msgstr "启用 TCP Brutal" #: htdocs/luci-static/resources/view/homeproxy/node.js:985 #: htdocs/luci-static/resources/view/homeproxy/server.js:513 msgid "Enable TCP Brutal congestion control algorithm" msgstr "启用 TCP Brutal 拥塞控制算法。" #: htdocs/luci-static/resources/view/homeproxy/node.js:1168 #: htdocs/luci-static/resources/view/homeproxy/server.js:855 msgid "Enable UDP fragmentation." msgstr "启用 UDP 分片。" #: htdocs/luci-static/resources/view/homeproxy/client.js:328 msgid "Enable endpoint-independent NAT" msgstr "启用端点独立 NAT" #: htdocs/luci-static/resources/view/homeproxy/node.js:980 #: htdocs/luci-static/resources/view/homeproxy/server.js:507 msgid "Enable padding" msgstr "启用填充" #: htdocs/luci-static/resources/view/homeproxy/server.js:846 msgid "Enable tcp fast open for listener." msgstr "为监听器启用 TCP 快速打开。" #: htdocs/luci-static/resources/view/homeproxy/node.js:1172 msgid "" "Enable the SUoT protocol, requires server support. Conflict with multiplex." msgstr "启用 SUoT 协议,需要服务端支持。与多路复用冲突。" #: htdocs/luci-static/resources/view/homeproxy/node.js:612 #: htdocs/luci-static/resources/view/homeproxy/node.js:748 #: htdocs/luci-static/resources/view/homeproxy/server.js:338 msgid "Encrypt method" msgstr "加密方式" #: htdocs/luci-static/resources/view/homeproxy/status.js:139 msgid "Error" msgstr "错误" #: htdocs/luci-static/resources/homeproxy.js:237 #: htdocs/luci-static/resources/homeproxy.js:271 #: htdocs/luci-static/resources/homeproxy.js:279 #: htdocs/luci-static/resources/homeproxy.js:297 #: htdocs/luci-static/resources/homeproxy.js:306 #: htdocs/luci-static/resources/homeproxy.js:317 #: htdocs/luci-static/resources/homeproxy.js:326 #: htdocs/luci-static/resources/homeproxy.js:328 #: htdocs/luci-static/resources/view/homeproxy/client.js:195 #: htdocs/luci-static/resources/view/homeproxy/client.js:207 #: htdocs/luci-static/resources/view/homeproxy/client.js:211 #: htdocs/luci-static/resources/view/homeproxy/client.js:230 #: htdocs/luci-static/resources/view/homeproxy/client.js:241 #: htdocs/luci-static/resources/view/homeproxy/client.js:245 #: htdocs/luci-static/resources/view/homeproxy/client.js:274 #: htdocs/luci-static/resources/view/homeproxy/client.js:504 #: htdocs/luci-static/resources/view/homeproxy/client.js:518 #: htdocs/luci-static/resources/view/homeproxy/client.js:521 #: htdocs/luci-static/resources/view/homeproxy/client.js:1357 #: htdocs/luci-static/resources/view/homeproxy/client.js:1362 #: htdocs/luci-static/resources/view/homeproxy/client.js:1365 #: htdocs/luci-static/resources/view/homeproxy/client.js:1507 #: htdocs/luci-static/resources/view/homeproxy/client.js:1539 #: htdocs/luci-static/resources/view/homeproxy/node.js:488 #: htdocs/luci-static/resources/view/homeproxy/node.js:1131 #: htdocs/luci-static/resources/view/homeproxy/node.js:1302 #: htdocs/luci-static/resources/view/homeproxy/node.js:1356 #: htdocs/luci-static/resources/view/homeproxy/node.js:1359 #: htdocs/luci-static/resources/view/homeproxy/server.js:235 #: htdocs/luci-static/resources/view/homeproxy/server.js:618 #: htdocs/luci-static/resources/view/homeproxy/server.js:620 msgid "Expecting: %s" msgstr "请输入:%s" #: htdocs/luci-static/resources/view/homeproxy/server.js:690 msgid "External Account Binding" msgstr "外部账户绑定" #: htdocs/luci-static/resources/view/homeproxy/server.js:702 msgid "External account MAC key" msgstr "外部账户 MAC 密钥" #: htdocs/luci-static/resources/view/homeproxy/server.js:696 msgid "External account key ID" msgstr "外部账户密钥标识符" #: htdocs/luci-static/resources/view/homeproxy/client.js:1237 msgid "Extra records" msgstr "附加记录" #: htdocs/luci-static/resources/view/homeproxy/server.js:86 msgid "Failed to generate %s, error: %s." msgstr "生成 %s 失败,错误:%s。" #: htdocs/luci-static/resources/homeproxy.js:261 msgid "Failed to upload %s, error: %s." msgstr "上传 %s 失败,错误:%s。" #: htdocs/luci-static/resources/view/homeproxy/status.js:140 msgid "Fatal" msgstr "致命" #: htdocs/luci-static/resources/view/homeproxy/node.js:1374 msgid "Filter keywords" msgstr "过滤关键词" #: htdocs/luci-static/resources/view/homeproxy/node.js:1366 msgid "Filter nodes" msgstr "过滤节点" #: htdocs/luci-static/resources/view/homeproxy/client.js:630 msgid "Firefox / uquic firefox" msgstr "Firefox / uquic firefox" #: htdocs/luci-static/resources/view/homeproxy/server.js:171 msgid "Firewall" msgstr "防火墙" #: htdocs/luci-static/resources/view/homeproxy/node.js:736 #: htdocs/luci-static/resources/view/homeproxy/server.js:385 msgid "Flow" msgstr "流控" #: htdocs/luci-static/resources/view/homeproxy/client.js:428 msgid "For resolving domain name in the server address." msgstr "用于解析服务器地址中的域名。" #: htdocs/luci-static/resources/view/homeproxy/client.js:1340 msgid "Format" msgstr "格式" #: htdocs/luci-static/resources/view/homeproxy/client.js:730 msgid "Fragment TLS handshake into multiple TLS records." msgstr "将 TLS 握手分片为多个 TLS 记录" #: htdocs/luci-static/resources/view/homeproxy/client.js:736 msgid "" "Fragment TLS handshakes. Due to poor performance, try %s first." msgstr "分片 TLS 握手。由于性能较差,请先尝试 %s。" #: htdocs/luci-static/resources/view/homeproxy/client.js:742 msgid "Fragment fallback delay" msgstr "分片回退延迟" #: htdocs/luci-static/resources/view/homeproxy/node.js:842 msgid "GET" msgstr "GET" #: htdocs/luci-static/resources/view/homeproxy/status.js:256 msgid "GFW list version" msgstr "GFW 域名列表版本" #: htdocs/luci-static/resources/view/homeproxy/client.js:252 msgid "GFWList" msgstr "GFWList" #: htdocs/luci-static/resources/view/homeproxy/client.js:1446 msgid "Gaming mode IPv4 IP-s" msgstr "游戏模式 IPv4 地址" #: htdocs/luci-static/resources/view/homeproxy/client.js:1448 msgid "Gaming mode IPv6 IP-s" msgstr "游戏模式 IPv6 地址" #: htdocs/luci-static/resources/view/homeproxy/client.js:1451 msgid "Gaming mode MAC-s" msgstr "游戏模式 MAC 地址" #: htdocs/luci-static/resources/view/homeproxy/server.js:36 #: htdocs/luci-static/resources/view/homeproxy/server.js:38 #: htdocs/luci-static/resources/view/homeproxy/server.js:827 msgid "Generate" msgstr "生成" #: htdocs/luci-static/resources/view/homeproxy/status.js:260 msgid "GitHub token" msgstr "GitHub 令牌" #: htdocs/luci-static/resources/view/homeproxy/client.js:256 msgid "Global" msgstr "全局" #: htdocs/luci-static/resources/view/homeproxy/node.js:759 msgid "Global padding" msgstr "全局填充" #: htdocs/luci-static/resources/view/homeproxy/client.js:1453 msgid "Global proxy IPv4 IP-s" msgstr "全局代理 IPv4 地址" #: htdocs/luci-static/resources/view/homeproxy/client.js:1456 msgid "Global proxy IPv6 IP-s" msgstr "全局代理 IPv6 地址" #: htdocs/luci-static/resources/view/homeproxy/client.js:1459 msgid "Global proxy MAC-s" msgstr "全局代理 MAC 地址" #: htdocs/luci-static/resources/view/homeproxy/server.js:146 msgid "Global settings" msgstr "全局设置" #: htdocs/luci-static/resources/view/homeproxy/status.js:238 msgid "Google" msgstr "谷歌" #: htdocs/luci-static/resources/view/homeproxy/client.js:184 msgid "Google Public DNS (8.8.8.8)" msgstr "谷歌公共 DNS(8.8.8.8)" #: root/usr/share/rpcd/acl.d/luci-app-homeproxy.json:3 msgid "Grant access to homeproxy configuration" msgstr "授予 homeproxy 访问 UCI 配置的权限" #: htdocs/luci-static/resources/view/homeproxy/client.js:620 #: htdocs/luci-static/resources/view/homeproxy/client.js:1108 #: htdocs/luci-static/resources/view/homeproxy/node.js:430 #: htdocs/luci-static/resources/view/homeproxy/node.js:777 #: htdocs/luci-static/resources/view/homeproxy/server.js:177 #: htdocs/luci-static/resources/view/homeproxy/server.js:403 msgid "HTTP" msgstr "HTTP" #: htdocs/luci-static/resources/view/homeproxy/client.js:952 msgid "HTTP/3" msgstr "HTTP/3" #: htdocs/luci-static/resources/view/homeproxy/server.js:332 msgid "" "HTTP3 server behavior when authentication fails.
    A 404 page will be " "returned if empty." msgstr "身份验证失败时的 HTTP3 服务器响应。默认返回 404 页面。" #: htdocs/luci-static/resources/view/homeproxy/client.js:951 msgid "HTTPS" msgstr "HTTPS" #: htdocs/luci-static/resources/view/homeproxy/node.js:778 #: htdocs/luci-static/resources/view/homeproxy/server.js:404 msgid "HTTPUpgrade" msgstr "HTTPUpgrade" #: htdocs/luci-static/resources/view/homeproxy/server.js:744 msgid "Handshake server address" msgstr "握手服务器地址" #: htdocs/luci-static/resources/view/homeproxy/server.js:750 msgid "Handshake server port" msgstr "握手服务器端口" #: htdocs/luci-static/resources/view/homeproxy/client.js:974 msgid "Headers" msgstr "标头" #: htdocs/luci-static/resources/view/homeproxy/node.js:727 #: htdocs/luci-static/resources/view/homeproxy/server.js:376 msgid "Heartbeat interval" msgstr "心跳间隔" #: htdocs/luci-static/resources/view/homeproxy/client.js:55 #: htdocs/luci-static/resources/view/homeproxy/client.js:57 #: htdocs/luci-static/resources/view/homeproxy/client.js:101 #: htdocs/luci-static/resources/view/homeproxy/status.js:282 #: root/usr/share/luci/menu.d/luci-app-homeproxy.json:3 msgid "HomeProxy" msgstr "HomeProxy" #: htdocs/luci-static/resources/view/homeproxy/server.js:58 #: htdocs/luci-static/resources/view/homeproxy/server.js:60 #: htdocs/luci-static/resources/view/homeproxy/server.js:129 msgid "HomeProxy Server" msgstr "HomeProxy 服务端" #: htdocs/luci-static/resources/view/homeproxy/node.js:535 msgid "Hop interval" msgstr "跳跃间隔" #: htdocs/luci-static/resources/view/homeproxy/node.js:529 msgid "Hopping port" msgstr "跳跃端口" #: htdocs/luci-static/resources/view/homeproxy/node.js:826 #: htdocs/luci-static/resources/view/homeproxy/node.js:831 #: htdocs/luci-static/resources/view/homeproxy/node.js:865 #: htdocs/luci-static/resources/view/homeproxy/server.js:437 #: htdocs/luci-static/resources/view/homeproxy/server.js:442 #: htdocs/luci-static/resources/view/homeproxy/server.js:473 msgid "Host" msgstr "主机名" #: htdocs/luci-static/resources/view/homeproxy/node.js:669 msgid "Host key" msgstr "主机密钥" #: htdocs/luci-static/resources/view/homeproxy/node.js:674 msgid "Host key algorithms" msgstr "主机密钥算法" #: htdocs/luci-static/resources/view/homeproxy/client.js:581 #: htdocs/luci-static/resources/view/homeproxy/client.js:1061 msgid "Host/IP fields" msgstr "主机/IP 字段" #: htdocs/luci-static/resources/view/homeproxy/server.js:364 msgid "" "How long the server should wait for the client to send the authentication " "command (in seconds)." msgstr "服务器等待客户端发送认证命令的时间(单位:秒)。" #: htdocs/luci-static/resources/view/homeproxy/node.js:432 #: htdocs/luci-static/resources/view/homeproxy/server.js:179 msgid "Hysteria" msgstr "Hysteria" #: htdocs/luci-static/resources/view/homeproxy/node.js:433 #: htdocs/luci-static/resources/view/homeproxy/server.js:180 msgid "Hysteria2" msgstr "Hysteria2" #: htdocs/luci-static/resources/view/homeproxy/client.js:830 #: htdocs/luci-static/resources/view/homeproxy/client.js:1267 msgid "IP CIDR" msgstr "IP CIDR" #: htdocs/luci-static/resources/view/homeproxy/client.js:608 #: htdocs/luci-static/resources/view/homeproxy/client.js:1089 msgid "IP version" msgstr "IP 版本" #: htdocs/luci-static/resources/view/homeproxy/client.js:610 #: htdocs/luci-static/resources/view/homeproxy/client.js:1090 msgid "IPv4" msgstr "IPv4" #: htdocs/luci-static/resources/homeproxy.js:20 msgid "IPv4 only" msgstr "仅 IPv4" #: htdocs/luci-static/resources/view/homeproxy/client.js:611 #: htdocs/luci-static/resources/view/homeproxy/client.js:1091 msgid "IPv6" msgstr "IPv6" #: htdocs/luci-static/resources/homeproxy.js:21 msgid "IPv6 only" msgstr "仅 IPv6" #: htdocs/luci-static/resources/view/homeproxy/client.js:297 msgid "IPv6 support" msgstr "IPv6 支持" #: htdocs/luci-static/resources/view/homeproxy/node.js:506 msgid "Idle session check interval" msgstr "空闲会话检查间隔" #: htdocs/luci-static/resources/view/homeproxy/node.js:513 msgid "Idle session check timeout" msgstr "空闲会话检查超时" #: htdocs/luci-static/resources/view/homeproxy/client.js:553 #: htdocs/luci-static/resources/view/homeproxy/node.js:847 #: htdocs/luci-static/resources/view/homeproxy/server.js:456 msgid "Idle timeout" msgstr "空闲超时" #: htdocs/luci-static/resources/view/homeproxy/client.js:717 msgid "" "If enabled, attempts to connect UDP connection to the destination instead of " "listen." msgstr "如果启用,尝试主动连接到目标的 UDP 而不是监听。" #: htdocs/luci-static/resources/view/homeproxy/client.js:711 msgid "" "If enabled, for UDP proxy requests addressed to a domain, the original " "packet address will be sent in the response instead of the mapped domain." msgstr "" "如果启用,对于发送到域名的 UDP 代理请求,响应中将发送原始数据包地址而不是映射" "的域名。" #: htdocs/luci-static/resources/view/homeproxy/node.js:819 msgid "" "If enabled, the client transport sends keepalive pings even with no active " "connections." msgstr "如果启用,客户端传输即使没有活动连接也会发送 keepalive ping。" #: htdocs/luci-static/resources/view/homeproxy/client.js:348 msgid "" "If set, the requested domain name will be resolved to IP before routing." msgstr "如果设置,请求的域名将在路由前被解析为 IP 地址。" #: htdocs/luci-static/resources/view/homeproxy/node.js:804 #: htdocs/luci-static/resources/view/homeproxy/server.js:425 msgid "" "If the transport doesn't see any activity after a duration of this time (in " "seconds), it pings the client to check if the connection is still active." msgstr "" "如果传输在此时间段(单位:秒)后没有看到任何活动,它会向客户端发送 ping 请求" "以检查连接是否仍然活动。" #: htdocs/luci-static/resources/view/homeproxy/node.js:1073 msgid "" "If you have the root certificate, use this option instead of allowing " "insecure." msgstr "如果你拥有根证书,使用此选项而不是允许不安全连接。" #: htdocs/luci-static/resources/view/homeproxy/server.js:326 msgid "Ignore client bandwidth" msgstr "忽略客户端带宽" #: htdocs/luci-static/resources/view/homeproxy/node.js:1285 msgid "Import" msgstr "导入" #: htdocs/luci-static/resources/view/homeproxy/node.js:1232 #: htdocs/luci-static/resources/view/homeproxy/node.js:1311 #: htdocs/luci-static/resources/view/homeproxy/node.js:1313 msgid "Import share links" msgstr "导入分享链接" #: htdocs/luci-static/resources/view/homeproxy/client.js:336 #: htdocs/luci-static/resources/view/homeproxy/server.js:860 msgid "In seconds." msgstr "单位:秒。" #: htdocs/luci-static/resources/view/homeproxy/node.js:937 msgid "In seconds. Disabled by default." msgstr "单位:秒。默认禁用。" #: htdocs/luci-static/resources/view/homeproxy/node.js:521 msgid "" "In the check, at least the first n idle sessions are kept open." msgstr "在检查中,至少保持前 n 个空闲会话处于打开状态。" #: htdocs/luci-static/resources/view/homeproxy/node.js:514 msgid "" "In the check, close sessions that have been idle for longer than this, in " "seconds." msgstr "在检查中,关闭空闲时间超过此值的会话(单位:秒)。" #: htdocs/luci-static/resources/view/homeproxy/client.js:904 msgid "Independent cache per server" msgstr "独立缓存" #: htdocs/luci-static/resources/view/homeproxy/status.js:137 msgid "Info" msgstr "信息" #: htdocs/luci-static/resources/view/homeproxy/client.js:1405 msgid "Interface Control" msgstr "接口控制" #: htdocs/luci-static/resources/view/homeproxy/client.js:560 msgid "Interrupt existing connections" msgstr "中断现有连接" #: htdocs/luci-static/resources/view/homeproxy/client.js:561 msgid "Interrupt existing connections when the selected outbound has changed." msgstr "当选择的出站发生变化时中断现有连接。" #: htdocs/luci-static/resources/view/homeproxy/node.js:507 msgid "Interval checking for idle sessions, in seconds." msgstr "空闲会话检查间隔(单位:秒)。" #: htdocs/luci-static/resources/view/homeproxy/node.js:728 #: htdocs/luci-static/resources/view/homeproxy/server.js:377 msgid "" "Interval for sending heartbeat packets for keeping the connection alive (in " "seconds)." msgstr "发送心跳包以保持连接存活的时间间隔(单位:秒)。" #: htdocs/luci-static/resources/view/homeproxy/client.js:665 #: htdocs/luci-static/resources/view/homeproxy/client.js:1142 msgid "Invert" msgstr "反转" #: htdocs/luci-static/resources/view/homeproxy/client.js:666 #: htdocs/luci-static/resources/view/homeproxy/client.js:1143 msgid "Invert match result." msgstr "反转匹配结果" #: htdocs/luci-static/resources/view/homeproxy/server.js:775 msgid "Key path" msgstr "证书路径" #: htdocs/luci-static/resources/view/homeproxy/client.js:1419 msgid "LAN IP Policy" msgstr "LAN IP 策略" #: htdocs/luci-static/resources/view/homeproxy/client.js:409 #: htdocs/luci-static/resources/view/homeproxy/client.js:585 #: htdocs/luci-static/resources/view/homeproxy/client.js:937 #: htdocs/luci-static/resources/view/homeproxy/client.js:1065 #: htdocs/luci-static/resources/view/homeproxy/client.js:1324 #: htdocs/luci-static/resources/view/homeproxy/node.js:422 #: htdocs/luci-static/resources/view/homeproxy/server.js:160 msgid "Label" msgstr "标签" #: htdocs/luci-static/resources/view/homeproxy/node.js:743 #: htdocs/luci-static/resources/view/homeproxy/server.js:392 msgid "" "Legacy protocol support (VMess MD5 Authentication) is provided for " "compatibility purposes only, use of alterId > 1 is not recommended." msgstr "" "提供旧协议支持(VMess MD5 身份验证)仅出于兼容性目的,不建议使用 alterId > " "1。" #: htdocs/luci-static/resources/view/homeproxy/client.js:325 msgid "Less compatibility and sometimes better performance." msgstr "有时性能更好。" #: htdocs/luci-static/resources/view/homeproxy/server.js:629 msgid "Let's Encrypt" msgstr "Let's Encrypt" #: htdocs/luci-static/resources/view/homeproxy/node.js:897 msgid "" "List of IP (v4 or v6) addresses prefixes to be assigned to the interface." msgstr "分配给接口的 IP(v4 或 v6)地址前缀列表。" #: htdocs/luci-static/resources/view/homeproxy/client.js:132 #: htdocs/luci-static/resources/view/homeproxy/client.js:161 #: htdocs/luci-static/resources/view/homeproxy/client.js:497 msgid "List of nodes to test." msgstr "要测试的节点列表。" #: htdocs/luci-static/resources/view/homeproxy/node.js:1036 #: htdocs/luci-static/resources/view/homeproxy/server.js:566 msgid "List of supported application level protocols, in order of preference." msgstr "支持的应用层协议协商列表,按顺序排列。" #: htdocs/luci-static/resources/view/homeproxy/client.js:1228 msgid "List of text DNS record to respond as answers." msgstr "要响应的 DNS 记录列表。" #: htdocs/luci-static/resources/view/homeproxy/client.js:1238 msgid "List of text DNS record to respond as extra records." msgstr "要响应的附加 DNS 记录列表。" #: htdocs/luci-static/resources/view/homeproxy/client.js:1233 msgid "List of text DNS record to respond as name servers." msgstr "要响应的域名服务器(NS) DNS 记录列表。" #: htdocs/luci-static/resources/view/homeproxy/server.js:193 msgid "Listen address" msgstr "监听地址" #: htdocs/luci-static/resources/view/homeproxy/client.js:1407 msgid "Listen interfaces" msgstr "监听接口" #: htdocs/luci-static/resources/view/homeproxy/server.js:198 msgid "Listen port" msgstr "监听端口" #: htdocs/luci-static/resources/view/homeproxy/status.js:174 msgid "Loading" msgstr "加载中" #: htdocs/luci-static/resources/view/homeproxy/client.js:1335 msgid "Local" msgstr "本地" #: htdocs/luci-static/resources/view/homeproxy/node.js:896 msgid "Local address" msgstr "本地地址" #: htdocs/luci-static/resources/view/homeproxy/status.js:191 msgid "Log file does not exist." msgstr "日志文件不存在。" #: htdocs/luci-static/resources/view/homeproxy/status.js:184 msgid "Log is empty." msgstr "日志为空。" #: htdocs/luci-static/resources/view/homeproxy/node.js:930 msgid "MTU" msgstr "MTU" #: htdocs/luci-static/resources/view/homeproxy/client.js:150 msgid "Main UDP node" msgstr "主 UDP 节点" #: htdocs/luci-static/resources/view/homeproxy/client.js:122 msgid "Main node" msgstr "主节点" #: htdocs/luci-static/resources/view/homeproxy/client.js:662 msgid "Make IP CIDR in rule set used to match the source IP." msgstr "使规则集中的 IP CIDR 用于匹配源 IP。" #: htdocs/luci-static/resources/view/homeproxy/client.js:1135 msgid "Make IP CIDR in rule sets match the source IP." msgstr "使规则集中的 IP CIDR 匹配源 IP。" #: htdocs/luci-static/resources/view/homeproxy/client.js:1139 msgid "Make IP CIDR in rule-sets accept empty query response." msgstr "使规则集中的 IP CIDR 接受空查询响应。" #: htdocs/luci-static/resources/view/homeproxy/client.js:905 msgid "" "Make each DNS server's cache independent for special purposes. If enabled, " "will slightly degrade performance." msgstr "独立缓存每个 DNS 服务器的结果以供特殊用途。启用后会略微降低性能。" #: htdocs/luci-static/resources/view/homeproxy/server.js:331 msgid "Masquerade" msgstr "伪装" #: htdocs/luci-static/resources/view/homeproxy/client.js:1268 msgid "" "Match IP CIDR with query response. Current rule will be skipped if not match." msgstr "使用查询响应匹配 IP CIDR。如果不匹配,则跳过当前规则。" #: htdocs/luci-static/resources/view/homeproxy/client.js:831 msgid "Match IP CIDR." msgstr "匹配 IP CIDR。" #: htdocs/luci-static/resources/view/homeproxy/client.js:811 #: htdocs/luci-static/resources/view/homeproxy/client.js:1248 msgid "Match domain suffix." msgstr "匹配域名后缀。" #: htdocs/luci-static/resources/view/homeproxy/client.js:815 #: htdocs/luci-static/resources/view/homeproxy/client.js:1252 msgid "Match domain using keyword." msgstr "使用关键词匹配域名。" #: htdocs/luci-static/resources/view/homeproxy/client.js:819 #: htdocs/luci-static/resources/view/homeproxy/client.js:1256 msgid "Match domain using regular expression." msgstr "使用正则表达式匹配域名。" #: htdocs/luci-static/resources/view/homeproxy/client.js:806 #: htdocs/luci-static/resources/view/homeproxy/client.js:1243 msgid "Match full domain." msgstr "匹配完整域名。" #: htdocs/luci-static/resources/view/homeproxy/client.js:854 #: htdocs/luci-static/resources/view/homeproxy/client.js:1292 msgid "Match port range. Format as START:/:END/START:END." msgstr "匹配端口范围。格式为 START:/:END/START:END。" #: htdocs/luci-static/resources/view/homeproxy/client.js:849 #: htdocs/luci-static/resources/view/homeproxy/client.js:1287 msgid "Match port." msgstr "匹配端口。" #: htdocs/luci-static/resources/view/homeproxy/client.js:835 #: htdocs/luci-static/resources/view/homeproxy/client.js:1272 msgid "Match private IP" msgstr "匹配私有 IP" #: htdocs/luci-static/resources/view/homeproxy/client.js:1273 msgid "Match private IP with query response." msgstr "使用查询响应匹配私有 IP。" #: htdocs/luci-static/resources/view/homeproxy/client.js:827 #: htdocs/luci-static/resources/view/homeproxy/client.js:1264 msgid "Match private source IP" msgstr "匹配私有源 IP" #: htdocs/luci-static/resources/view/homeproxy/client.js:859 #: htdocs/luci-static/resources/view/homeproxy/client.js:1297 msgid "Match process name." msgstr "匹配进程名。" #: htdocs/luci-static/resources/view/homeproxy/client.js:867 #: htdocs/luci-static/resources/view/homeproxy/client.js:1305 msgid "Match process path using regular expression." msgstr "使用正则表达式匹配进程路径。" #: htdocs/luci-static/resources/view/homeproxy/client.js:863 #: htdocs/luci-static/resources/view/homeproxy/client.js:1301 msgid "Match process path." msgstr "匹配进程路径。" #: htdocs/luci-static/resources/view/homeproxy/client.js:1096 msgid "Match query type." msgstr "匹配请求类型。" #: htdocs/luci-static/resources/view/homeproxy/client.js:647 #: htdocs/luci-static/resources/view/homeproxy/client.js:1120 msgid "Match rule set." msgstr "匹配规则集。" #: htdocs/luci-static/resources/view/homeproxy/client.js:823 #: htdocs/luci-static/resources/view/homeproxy/client.js:1260 msgid "Match source IP CIDR." msgstr "匹配源 IP CIDR。" #: htdocs/luci-static/resources/view/homeproxy/client.js:844 #: htdocs/luci-static/resources/view/homeproxy/client.js:1282 msgid "Match source port range. Format as START:/:END/START:END." msgstr "匹配源端口范围。格式为 START:/:END/START:END。" #: htdocs/luci-static/resources/view/homeproxy/client.js:839 #: htdocs/luci-static/resources/view/homeproxy/client.js:1277 msgid "Match source port." msgstr "匹配源端口。" #: htdocs/luci-static/resources/view/homeproxy/client.js:643 #: htdocs/luci-static/resources/view/homeproxy/client.js:1116 msgid "Match user name." msgstr "匹配用户名。" #: htdocs/luci-static/resources/view/homeproxy/node.js:579 #: htdocs/luci-static/resources/view/homeproxy/server.js:261 msgid "Max download speed" msgstr "最大下载速度" #: htdocs/luci-static/resources/view/homeproxy/node.js:580 #: htdocs/luci-static/resources/view/homeproxy/server.js:262 msgid "Max download speed in Mbps." msgstr "最大下载速度(Mbps)。" #: htdocs/luci-static/resources/view/homeproxy/server.js:739 msgid "Max time difference" msgstr "最大时间差" #: htdocs/luci-static/resources/view/homeproxy/node.js:586 #: htdocs/luci-static/resources/view/homeproxy/server.js:268 msgid "Max upload speed" msgstr "最大上传速度" #: htdocs/luci-static/resources/view/homeproxy/node.js:587 #: htdocs/luci-static/resources/view/homeproxy/server.js:269 msgid "Max upload speed in Mbps." msgstr "最大上传速度(Mbps)。" #: htdocs/luci-static/resources/view/homeproxy/node.js:1056 #: htdocs/luci-static/resources/view/homeproxy/server.js:578 msgid "Maximum TLS version" msgstr "最大 TLS 版本" #: htdocs/luci-static/resources/view/homeproxy/node.js:961 #: htdocs/luci-static/resources/view/homeproxy/node.js:975 msgid "Maximum connections" msgstr "最大连接数" #: htdocs/luci-static/resources/view/homeproxy/node.js:973 msgid "" "Maximum multiplexed streams in a connection before opening a new connection." "
    Conflict with %s and %s." msgstr "" "在打开新连接之前,连接中的最大多路复用流数量。与 %s 和 " "%s 冲突。" #: htdocs/luci-static/resources/view/homeproxy/node.js:972 msgid "Maximum streams" msgstr "最大流数量" #: htdocs/luci-static/resources/view/homeproxy/client.js:768 #: htdocs/luci-static/resources/view/homeproxy/client.js:776 #: htdocs/luci-static/resources/view/homeproxy/client.js:1202 #: htdocs/luci-static/resources/view/homeproxy/client.js:1211 #: htdocs/luci-static/resources/view/homeproxy/node.js:841 #: htdocs/luci-static/resources/view/homeproxy/server.js:452 msgid "Method" msgstr "方式" #: htdocs/luci-static/resources/view/homeproxy/node.js:1048 #: htdocs/luci-static/resources/view/homeproxy/server.js:570 msgid "Minimum TLS version" msgstr "最低 TLS 版本" #: htdocs/luci-static/resources/view/homeproxy/node.js:520 msgid "Minimum idle sessions" msgstr "最小空闲会话数" #: htdocs/luci-static/resources/view/homeproxy/node.js:967 msgid "" "Minimum multiplexed streams in a connection before opening a new connection." msgstr "在打开新连接之前,连接中的最小多路复用流数量。" #: htdocs/luci-static/resources/view/homeproxy/node.js:966 #: htdocs/luci-static/resources/view/homeproxy/node.js:975 msgid "Minimum streams" msgstr "最小流数量" #: htdocs/luci-static/resources/view/homeproxy/client.js:310 #: htdocs/luci-static/resources/view/homeproxy/server.js:183 msgid "Mixed" msgstr "混合" #: htdocs/luci-static/resources/view/homeproxy/client.js:321 msgid "Mixed system TCP stack and gVisor UDP stack." msgstr "混合系统 TCP 栈和 gVisor UDP 栈。" #: htdocs/luci-static/resources/view/homeproxy/client.js:595 #: htdocs/luci-static/resources/view/homeproxy/client.js:1075 msgid "Mode" msgstr "模式" #: htdocs/luci-static/resources/view/homeproxy/node.js:1164 #: htdocs/luci-static/resources/view/homeproxy/server.js:850 msgid "MultiPath TCP" msgstr "多路径 TCP(MPTCP)" #: htdocs/luci-static/resources/view/homeproxy/node.js:944 #: htdocs/luci-static/resources/view/homeproxy/server.js:500 msgid "Multiplex" msgstr "多路复用" #: htdocs/luci-static/resources/view/homeproxy/node.js:952 msgid "Multiplex protocol." msgstr "多路复用协议。" #: htdocs/luci-static/resources/view/homeproxy/client.js:57 #: htdocs/luci-static/resources/view/homeproxy/server.js:60 msgid "NOT RUNNING" msgstr "未运行" #: htdocs/luci-static/resources/view/homeproxy/node.js:1395 msgid "NOTE: Save current settings before updating subscriptions." msgstr "注意:更新订阅前先保存当前配置。" #: htdocs/luci-static/resources/view/homeproxy/client.js:1232 msgid "NS" msgstr "NS" #: htdocs/luci-static/resources/view/homeproxy/node.js:711 msgid "Native" msgstr "原生" #: htdocs/luci-static/resources/view/homeproxy/server.js:181 msgid "NaïveProxy" msgstr "NaïveProxy" #: htdocs/luci-static/resources/view/homeproxy/client.js:637 #: htdocs/luci-static/resources/view/homeproxy/client.js:1099 #: htdocs/luci-static/resources/view/homeproxy/server.js:866 msgid "Network" msgstr "网络" #: htdocs/luci-static/resources/view/homeproxy/node.js:701 msgid "New Reno" msgstr "New Reno" #: htdocs/luci-static/resources/view/homeproxy/node.js:774 #: htdocs/luci-static/resources/view/homeproxy/node.js:791 #: htdocs/luci-static/resources/view/homeproxy/server.js:400 #: htdocs/luci-static/resources/view/homeproxy/server.js:417 msgid "No TCP transport, plain HTTP is merged into the HTTP transport." msgstr "无 TCP 传输层, 纯 HTTP 已合并到 HTTP 传输层。" #: htdocs/luci-static/resources/view/homeproxy/node.js:789 #: htdocs/luci-static/resources/view/homeproxy/server.js:415 msgid "No additional encryption support: It's basically duplicate encryption." msgstr "无额外加密支持:它基本上是重复加密。" #: htdocs/luci-static/resources/view/homeproxy/node.js:1412 msgid "No subscription available" msgstr "无可用订阅" #: htdocs/luci-static/resources/view/homeproxy/node.js:1437 msgid "No subscription node" msgstr "无订阅节点" #: htdocs/luci-static/resources/view/homeproxy/node.js:1271 msgid "No valid share link found." msgstr "找不到有效分享链接。" #: htdocs/luci-static/resources/view/homeproxy/client.js:419 #: htdocs/luci-static/resources/view/homeproxy/node.js:396 msgid "Node" msgstr "节点" #: root/usr/share/luci/menu.d/luci-app-homeproxy.json:22 msgid "Node Settings" msgstr "节点设置" #: htdocs/luci-static/resources/view/homeproxy/node.js:1217 msgid "Nodes" msgstr "节点" #: htdocs/luci-static/resources/view/homeproxy/client.js:994 #: htdocs/luci-static/resources/view/homeproxy/node.js:737 #: htdocs/luci-static/resources/view/homeproxy/node.js:775 #: htdocs/luci-static/resources/view/homeproxy/server.js:386 #: htdocs/luci-static/resources/view/homeproxy/server.js:401 msgid "None" msgstr "无" #: htdocs/luci-static/resources/view/homeproxy/node.js:573 #: htdocs/luci-static/resources/view/homeproxy/server.js:294 msgid "Obfuscate password" msgstr "混淆密码" #: htdocs/luci-static/resources/view/homeproxy/node.js:567 #: htdocs/luci-static/resources/view/homeproxy/server.js:288 msgid "Obfuscate type" msgstr "混淆类型" #: htdocs/luci-static/resources/view/homeproxy/client.js:1408 msgid "Only process traffic from specific interfaces. Leave empty for all." msgstr "只处理来自指定接口的流量。留空表示全部。" #: htdocs/luci-static/resources/view/homeproxy/client.js:254 msgid "Only proxy mainland China" msgstr "仅代理中国大陆" #: htdocs/luci-static/resources/view/homeproxy/client.js:580 #: htdocs/luci-static/resources/view/homeproxy/client.js:1060 msgid "Other fields" msgstr "其他字段" #: htdocs/luci-static/resources/view/homeproxy/client.js:460 #: htdocs/luci-static/resources/view/homeproxy/client.js:678 #: htdocs/luci-static/resources/view/homeproxy/client.js:1027 #: htdocs/luci-static/resources/view/homeproxy/client.js:1375 msgid "Outbound" msgstr "出站" #: htdocs/luci-static/resources/view/homeproxy/client.js:420 msgid "Outbound node" msgstr "出站节点" #: htdocs/luci-static/resources/view/homeproxy/client.js:696 msgid "Override address" msgstr "覆盖地址" #: htdocs/luci-static/resources/view/homeproxy/client.js:352 msgid "Override destination" msgstr "覆盖目标地址" #: htdocs/luci-static/resources/view/homeproxy/client.js:703 msgid "Override port" msgstr "覆盖端口" #: htdocs/luci-static/resources/view/homeproxy/client.js:353 msgid "Override the connection destination address with the sniffed domain." msgstr "使用嗅探到的域名覆盖连接目标。" #: htdocs/luci-static/resources/view/homeproxy/client.js:697 msgid "Override the connection destination address." msgstr "覆盖目标连接地址。" #: htdocs/luci-static/resources/view/homeproxy/client.js:704 msgid "Override the connection destination port." msgstr "覆盖目标连接端口。" #: htdocs/luci-static/resources/view/homeproxy/node.js:843 msgid "PUT" msgstr "PUT" #: htdocs/luci-static/resources/view/homeproxy/node.js:886 msgid "Packet encoding" msgstr "数据包编码" #: htdocs/luci-static/resources/view/homeproxy/server.js:244 msgid "Padding scheme" msgstr "填充方案" #: htdocs/luci-static/resources/view/homeproxy/status.js:141 msgid "Panic" msgstr "崩溃" #: htdocs/luci-static/resources/view/homeproxy/node.js:464 #: htdocs/luci-static/resources/view/homeproxy/server.js:210 msgid "Password" msgstr "密码" #: htdocs/luci-static/resources/view/homeproxy/client.js:967 #: htdocs/luci-static/resources/view/homeproxy/client.js:1346 #: htdocs/luci-static/resources/view/homeproxy/node.js:836 #: htdocs/luci-static/resources/view/homeproxy/node.js:869 #: htdocs/luci-static/resources/view/homeproxy/server.js:447 #: htdocs/luci-static/resources/view/homeproxy/server.js:477 msgid "Path" msgstr "路径" #: htdocs/luci-static/resources/view/homeproxy/node.js:911 msgid "Peer pubkic key" msgstr "对端公钥" #: htdocs/luci-static/resources/view/homeproxy/client.js:329 msgid "" "Performance may degrade slightly, so it is not recommended to enable on when " "it is not needed." msgstr "性能可能会略有下降,建议仅在需要时开启。" #: htdocs/luci-static/resources/view/homeproxy/node.js:936 msgid "Persistent keepalive interval" msgstr "持久 keepalive 间隔" #: htdocs/luci-static/resources/view/homeproxy/node.js:855 #: htdocs/luci-static/resources/view/homeproxy/server.js:464 msgid "Ping timeout" msgstr "Ping 超时" #: htdocs/luci-static/resources/view/homeproxy/node.js:630 msgid "Plugin" msgstr "插件" #: htdocs/luci-static/resources/view/homeproxy/node.js:637 msgid "Plugin opts" msgstr "插件参数" #: htdocs/luci-static/resources/view/homeproxy/client.js:848 #: htdocs/luci-static/resources/view/homeproxy/client.js:962 #: htdocs/luci-static/resources/view/homeproxy/client.js:1286 #: htdocs/luci-static/resources/view/homeproxy/node.js:453 msgid "Port" msgstr "端口" #: htdocs/luci-static/resources/view/homeproxy/client.js:276 msgid "Port %s alrealy exists!" msgstr "端口 %s 已存在!" #: htdocs/luci-static/resources/view/homeproxy/client.js:582 #: htdocs/luci-static/resources/view/homeproxy/client.js:1062 msgid "Port fields" msgstr "端口字段" #: htdocs/luci-static/resources/view/homeproxy/node.js:536 msgid "Port hopping interval in seconds." msgstr "端口跳跃间隔(单位:秒)。" #: htdocs/luci-static/resources/view/homeproxy/client.js:853 #: htdocs/luci-static/resources/view/homeproxy/client.js:1291 msgid "Port range" msgstr "端口范围" #: htdocs/luci-static/resources/view/homeproxy/node.js:918 msgid "Pre-shared key" msgstr "预共享密钥" #: htdocs/luci-static/resources/view/homeproxy/client.js:1150 msgid "Predefined" msgstr "预定义" #: htdocs/luci-static/resources/homeproxy.js:18 msgid "Prefer IPv4" msgstr "优先 IPv4" #: htdocs/luci-static/resources/homeproxy.js:19 msgid "Prefer IPv6" msgstr "优先 IPv6" #: htdocs/luci-static/resources/view/homeproxy/node.js:678 #: htdocs/luci-static/resources/view/homeproxy/node.js:903 msgid "Private key" msgstr "私钥" #: htdocs/luci-static/resources/view/homeproxy/node.js:683 msgid "Private key passphrase" msgstr "私钥指纹" #: htdocs/luci-static/resources/view/homeproxy/client.js:583 #: htdocs/luci-static/resources/view/homeproxy/client.js:1063 msgid "Process fields" msgstr "进程字段" #: htdocs/luci-static/resources/view/homeproxy/client.js:858 #: htdocs/luci-static/resources/view/homeproxy/client.js:1296 msgid "Process name" msgstr "进程名" #: htdocs/luci-static/resources/view/homeproxy/client.js:862 #: htdocs/luci-static/resources/view/homeproxy/client.js:1300 msgid "Process path" msgstr "进程路径" #: htdocs/luci-static/resources/view/homeproxy/client.js:866 #: htdocs/luci-static/resources/view/homeproxy/client.js:1304 msgid "Process path (regex)" msgstr "进程路径(正则表达式)" #: htdocs/luci-static/resources/view/homeproxy/client.js:615 #: htdocs/luci-static/resources/view/homeproxy/client.js:1104 #: htdocs/luci-static/resources/view/homeproxy/node.js:543 #: htdocs/luci-static/resources/view/homeproxy/node.js:951 #: htdocs/luci-static/resources/view/homeproxy/server.js:250 msgid "Protocol" msgstr "协议" #: htdocs/luci-static/resources/view/homeproxy/node.js:767 msgid "Protocol parameter. Enable length block encryption." msgstr "协议参数。启用长度块加密。" #: htdocs/luci-static/resources/view/homeproxy/node.js:760 msgid "" "Protocol parameter. Will waste traffic randomly if enabled (enabled by " "default in v2ray and cannot be disabled)." msgstr "协议参数。 如启用会随机浪费流量(在 v2ray 中默认启用并且无法禁用)。" #: htdocs/luci-static/resources/view/homeproxy/client.js:1482 msgid "Proxy Domain List" msgstr "代理域名列表" #: htdocs/luci-static/resources/view/homeproxy/client.js:1437 #: htdocs/luci-static/resources/view/homeproxy/client.js:1466 msgid "Proxy IPv4 IP-s" msgstr "代理 IPv4 地址" #: htdocs/luci-static/resources/view/homeproxy/client.js:1440 #: htdocs/luci-static/resources/view/homeproxy/client.js:1469 msgid "Proxy IPv6 IP-s" msgstr "代理 IPv6 地址" #: htdocs/luci-static/resources/view/homeproxy/client.js:1443 msgid "Proxy MAC-s" msgstr "代理 MAC 地址" #: htdocs/luci-static/resources/view/homeproxy/client.js:1424 msgid "Proxy all except listed" msgstr "仅允许列表外" #: htdocs/luci-static/resources/view/homeproxy/client.js:1421 msgid "Proxy filter mode" msgstr "代理过滤模式" #: htdocs/luci-static/resources/view/homeproxy/client.js:1423 msgid "Proxy listed only" msgstr "仅允许列表内" #: htdocs/luci-static/resources/view/homeproxy/client.js:284 msgid "Proxy mode" msgstr "代理模式" #: htdocs/luci-static/resources/view/homeproxy/node.js:497 msgid "Proxy protocol" msgstr "代理协议" #: htdocs/luci-static/resources/view/homeproxy/client.js:621 #: htdocs/luci-static/resources/view/homeproxy/client.js:953 #: htdocs/luci-static/resources/view/homeproxy/client.js:1109 #: htdocs/luci-static/resources/view/homeproxy/node.js:712 #: htdocs/luci-static/resources/view/homeproxy/node.js:779 #: htdocs/luci-static/resources/view/homeproxy/server.js:405 msgid "QUIC" msgstr "QUIC" #: htdocs/luci-static/resources/view/homeproxy/node.js:699 #: htdocs/luci-static/resources/view/homeproxy/server.js:355 msgid "QUIC congestion control algorithm." msgstr "QUIC 拥塞控制算法。" #: htdocs/luci-static/resources/view/homeproxy/node.js:599 #: htdocs/luci-static/resources/view/homeproxy/server.js:307 msgid "QUIC connection receive window" msgstr "QUIC 连接窗口" #: htdocs/luci-static/resources/view/homeproxy/server.js:314 msgid "QUIC maximum concurrent bidirectional streams" msgstr "QUIC 最大双向并发流" #: htdocs/luci-static/resources/view/homeproxy/node.js:593 #: htdocs/luci-static/resources/view/homeproxy/server.js:300 msgid "QUIC stream receive window" msgstr "QUIC 流接收窗口" #: htdocs/luci-static/resources/view/homeproxy/client.js:1095 msgid "Query type" msgstr "请求类型" #: htdocs/luci-static/resources/view/homeproxy/client.js:1215 msgid "RCode" msgstr "RCode" #: htdocs/luci-static/resources/view/homeproxy/client.js:622 #: htdocs/luci-static/resources/view/homeproxy/client.js:1110 msgid "RDP" msgstr "RDP" #: htdocs/luci-static/resources/view/homeproxy/client.js:917 msgid "RDRC timeout" msgstr "RDRC 超时" #: htdocs/luci-static/resources/view/homeproxy/node.js:1142 #: htdocs/luci-static/resources/view/homeproxy/server.js:709 msgid "REALITY" msgstr "REALITY" #: htdocs/luci-static/resources/view/homeproxy/server.js:714 msgid "REALITY private key" msgstr "REALITY 私钥" #: htdocs/luci-static/resources/view/homeproxy/node.js:1147 #: htdocs/luci-static/resources/view/homeproxy/server.js:730 msgid "REALITY public key" msgstr "REALITY 公钥" #: htdocs/luci-static/resources/view/homeproxy/node.js:1153 #: htdocs/luci-static/resources/view/homeproxy/server.js:734 msgid "REALITY short ID" msgstr "REALITY 标识符" #: htdocs/luci-static/resources/view/homeproxy/client.js:55 #: htdocs/luci-static/resources/view/homeproxy/server.js:58 msgid "RUNNING" msgstr "运行中" #: htdocs/luci-static/resources/view/homeproxy/node.js:665 msgid "Random version will be used if empty." msgstr "如留空,则使用随机版本。" #: htdocs/luci-static/resources/view/homeproxy/client.js:488 msgid "Recursive outbound detected!" msgstr "检测到递归出站!" #: htdocs/luci-static/resources/view/homeproxy/client.js:1013 msgid "Recursive resolver detected!" msgstr "检测到递归解析器!" #: htdocs/luci-static/resources/view/homeproxy/client.js:285 msgid "Redirect TCP" msgstr "Redirect TCP" #: htdocs/luci-static/resources/view/homeproxy/client.js:287 msgid "Redirect TCP + TProxy UDP" msgstr "Redirect TCP + TProxy UDP" #: htdocs/luci-static/resources/view/homeproxy/client.js:289 msgid "Redirect TCP + Tun UDP" msgstr "Redirect TCP + Tun UDP" #: htdocs/luci-static/resources/view/homeproxy/status.js:219 msgid "Refresh every %s seconds." msgstr "每 %s 秒刷新。" #: htdocs/luci-static/resources/view/homeproxy/server.js:659 msgid "Region ID" msgstr "区域 ID" #: htdocs/luci-static/resources/view/homeproxy/client.js:672 #: htdocs/luci-static/resources/view/homeproxy/client.js:1149 msgid "Reject" msgstr "拒绝" #: htdocs/luci-static/resources/view/homeproxy/client.js:1336 msgid "Remote" msgstr "远程" #: htdocs/luci-static/resources/view/homeproxy/node.js:1434 msgid "Remove %s nodes" msgstr "移除 %s 个节点" #: htdocs/luci-static/resources/view/homeproxy/node.js:1424 msgid "Remove all nodes from subscriptions" msgstr "移除所有订阅节点" #: htdocs/luci-static/resources/view/homeproxy/client.js:1203 msgid "Reply with REFUSED" msgstr "回复 REFUSED" #: htdocs/luci-static/resources/view/homeproxy/client.js:769 msgid "Reply with TCP RST / ICMP port unreachable" msgstr "回复 TCP RST / ICMP 端口不可达" #: htdocs/luci-static/resources/view/homeproxy/node.js:925 msgid "Reserved field bytes" msgstr "保留字段字节" #: htdocs/luci-static/resources/view/homeproxy/client.js:673 msgid "Resolve" msgstr "解析" #: htdocs/luci-static/resources/view/homeproxy/client.js:780 msgid "Resolve strategy" msgstr "解析策略" #: htdocs/luci-static/resources/view/homeproxy/status.js:241 msgid "Resources management" msgstr "资源管理" #: htdocs/luci-static/resources/view/homeproxy/server.js:880 msgid "Reuse address" msgstr "复用地址" #: htdocs/luci-static/resources/view/homeproxy/server.js:881 msgid "Reuse listener address." msgstr "复用监听地址。" #: htdocs/luci-static/resources/view/homeproxy/client.js:792 #: htdocs/luci-static/resources/view/homeproxy/client.js:1187 msgid "Rewrite TTL" msgstr "重写 TTL" #: htdocs/luci-static/resources/view/homeproxy/client.js:793 #: htdocs/luci-static/resources/view/homeproxy/client.js:1188 msgid "Rewrite TTL in DNS responses." msgstr "在 DNS 响应中重写 TTL。" #: htdocs/luci-static/resources/view/homeproxy/client.js:670 #: htdocs/luci-static/resources/view/homeproxy/client.js:1147 msgid "Route" msgstr "路由" #: htdocs/luci-static/resources/view/homeproxy/client.js:671 #: htdocs/luci-static/resources/view/homeproxy/client.js:1148 msgid "Route options" msgstr "路由选项" #: htdocs/luci-static/resources/view/homeproxy/client.js:396 msgid "Routing Nodes" msgstr "路由节点" #: htdocs/luci-static/resources/view/homeproxy/client.js:567 msgid "Routing Rules" msgstr "路由规则" #: htdocs/luci-static/resources/view/homeproxy/client.js:120 msgid "Routing Settings" msgstr "路由设置" #: htdocs/luci-static/resources/view/homeproxy/client.js:251 msgid "Routing mode" msgstr "路由模式" #: htdocs/luci-static/resources/view/homeproxy/client.js:405 msgid "Routing node" msgstr "路由节点" #: htdocs/luci-static/resources/view/homeproxy/client.js:264 msgid "Routing ports" msgstr "路由端口" #: htdocs/luci-static/resources/view/homeproxy/client.js:576 msgid "Routing rule" msgstr "路由规则" #: htdocs/luci-static/resources/view/homeproxy/client.js:1311 msgid "Rule Set" msgstr "规则集" #: htdocs/luci-static/resources/view/homeproxy/client.js:646 #: htdocs/luci-static/resources/view/homeproxy/client.js:1119 #: htdocs/luci-static/resources/view/homeproxy/client.js:1320 msgid "Rule set" msgstr "规则集" #: htdocs/luci-static/resources/view/homeproxy/client.js:661 #: htdocs/luci-static/resources/view/homeproxy/client.js:1134 msgid "Rule set IP CIDR as source IP" msgstr "规则集 IP CIDR 作为源 IP" #: htdocs/luci-static/resources/view/homeproxy/client.js:1353 msgid "Rule set URL" msgstr "规则集 URL" #: htdocs/luci-static/resources/view/homeproxy/client.js:623 #: htdocs/luci-static/resources/view/homeproxy/client.js:1111 #: htdocs/luci-static/resources/view/homeproxy/node.js:438 msgid "SSH" msgstr "SSH" #: htdocs/luci-static/resources/view/homeproxy/client.js:624 #: htdocs/luci-static/resources/view/homeproxy/client.js:1112 msgid "STUN" msgstr "STUN" #: htdocs/luci-static/resources/view/homeproxy/node.js:1177 msgid "SUoT version" msgstr "SUoT 版本" #: htdocs/luci-static/resources/view/homeproxy/client.js:632 msgid "Safari / Apple Network API" msgstr "Safari / Apple Network API" #: htdocs/luci-static/resources/view/homeproxy/node.js:569 #: htdocs/luci-static/resources/view/homeproxy/server.js:290 msgid "Salamander" msgstr "Salamander" #: htdocs/luci-static/resources/view/homeproxy/client.js:152 msgid "Same as main node" msgstr "保持与主节点一致" #: htdocs/luci-static/resources/view/homeproxy/status.js:267 #: htdocs/luci-static/resources/view/homeproxy/status.js:273 msgid "Save" msgstr "保存" #: htdocs/luci-static/resources/view/homeproxy/node.js:1397 msgid "Save current settings" msgstr "保存当前设置" #: htdocs/luci-static/resources/view/homeproxy/node.js:1394 msgid "Save subscriptions settings" msgstr "保存订阅设置" #: htdocs/luci-static/resources/view/homeproxy/client.js:1155 #: htdocs/luci-static/resources/view/homeproxy/server.js:156 msgid "Server" msgstr "服务器" #: root/usr/share/luci/menu.d/luci-app-homeproxy.json:30 msgid "Server Settings" msgstr "服务器设置" #: htdocs/luci-static/resources/view/homeproxy/server.js:607 msgid "" "Server name to use when choosing a certificate if the ClientHello's " "ServerName field is empty." msgstr "当 ClientHello 的 ServerName 字段为空时,选择证书所使用的服务器名称。" #: htdocs/luci-static/resources/view/homeproxy/server.js:151 msgid "Server settings" msgstr "服务器设置" #: root/usr/share/luci/menu.d/luci-app-homeproxy.json:38 msgid "Service Status" msgstr "服务状态" #: htdocs/luci-static/resources/view/homeproxy/client.js:1175 msgid "Set domain strategy for this query." msgstr "为此查询设置域名策略。" #: htdocs/luci-static/resources/view/homeproxy/node.js:436 msgid "ShadowTLS" msgstr "ShadowTLS" #: htdocs/luci-static/resources/view/homeproxy/node.js:644 msgid "ShadowTLS version" msgstr "ShadowTLS 版本" #: htdocs/luci-static/resources/view/homeproxy/node.js:435 #: htdocs/luci-static/resources/view/homeproxy/server.js:184 msgid "Shadowsocks" msgstr "Shadowsocks" #: htdocs/luci-static/resources/view/homeproxy/client.js:628 msgid "Sniffed client type (QUIC client type or SSH client name)." msgstr "嗅探到的客户端类型(QUIC 客户端类型或 SSH 客户端名称)。" #: htdocs/luci-static/resources/view/homeproxy/client.js:616 #: htdocs/luci-static/resources/view/homeproxy/client.js:1105 msgid "" "Sniffed protocol, see Sniff for details." msgstr "" "嗅探协议,具体参见 Sniff。" #: htdocs/luci-static/resources/view/homeproxy/node.js:437 #: htdocs/luci-static/resources/view/homeproxy/server.js:185 msgid "Socks" msgstr "Socks" #: htdocs/luci-static/resources/view/homeproxy/node.js:654 msgid "Socks version" msgstr "Socks 版本" #: htdocs/luci-static/resources/view/homeproxy/node.js:655 msgid "Socks4" msgstr "Socks4" #: htdocs/luci-static/resources/view/homeproxy/node.js:656 msgid "Socks4A" msgstr "Socks4A" #: htdocs/luci-static/resources/view/homeproxy/node.js:657 msgid "Socks5" msgstr "Socks5" #: htdocs/luci-static/resources/view/homeproxy/client.js:822 #: htdocs/luci-static/resources/view/homeproxy/client.js:1259 msgid "Source IP CIDR" msgstr "源 IP CIDR" #: htdocs/luci-static/resources/view/homeproxy/client.js:1342 msgid "Source file" msgstr "源文件" #: htdocs/luci-static/resources/view/homeproxy/client.js:838 #: htdocs/luci-static/resources/view/homeproxy/client.js:1276 msgid "Source port" msgstr "源端口" #: htdocs/luci-static/resources/view/homeproxy/client.js:843 #: htdocs/luci-static/resources/view/homeproxy/client.js:1281 msgid "Source port range" msgstr "源端口范围" #: htdocs/luci-static/resources/view/homeproxy/client.js:750 msgid "" "Specifies DNS server tag to use instead of selecting through DNS routing." msgstr "指定使用的 DNS 服务器,而不是通过 DNS 规则选择。" #: htdocs/luci-static/resources/view/homeproxy/node.js:796 #: htdocs/luci-static/resources/view/homeproxy/node.js:848 msgid "" "Specifies the period of time (in seconds) after which a health check will be " "performed using a ping frame if no frames have been received on the " "connection.
    Please note that a ping response is considered a received " "frame, so if there is no other traffic on the connection, the health check " "will be executed every interval." msgstr "" "如果连接上没有收到任何帧,指定一段时间(单位:秒)后将使用 PING 帧执行健康检" "查。
    需要注意的是,PING 响应被视为已接收的帧,因此如果连接上没有其他流" "量,则健康检查将在每个间隔执行一次。" #: htdocs/luci-static/resources/view/homeproxy/server.js:422 #: htdocs/luci-static/resources/view/homeproxy/server.js:457 msgid "" "Specifies the time (in seconds) until idle clients should be closed with a " "GOAWAY frame. PING frames are not considered as activity." msgstr "" "指定闲置客户端应在多长时间(单位:秒)内使用 GOAWAY 帧关闭。PING 帧不被视为活" "动。" #: htdocs/luci-static/resources/view/homeproxy/node.js:800 #: htdocs/luci-static/resources/view/homeproxy/node.js:856 msgid "" "Specifies the timeout duration (in seconds) after sending a PING frame, " "within which a response must be received.
    If a response to the PING " "frame is not received within the specified timeout duration, the connection " "will be closed." msgstr "" "指定发送 PING 帧后,在指定的超时时间(单位:秒)内必须接收到响应。
    如果在" "指定的超时时间内没有收到 PING 帧的响应,则连接将关闭。" #: htdocs/luci-static/resources/view/homeproxy/client.js:265 msgid "" "Specify target ports to be proxied. Multiple ports must be separated by " "commas." msgstr "指定需要被代理的目标端口。多个端口必须用逗号隔开。" #: htdocs/luci-static/resources/view/homeproxy/client.js:913 msgid "Store RDRC" msgstr "存储 RDRC" #: htdocs/luci-static/resources/view/homeproxy/client.js:914 msgid "" "Store rejected DNS response cache.
    The check results of Address " "filter DNS rule items will be cached until expiration." msgstr "" "存储被拒绝的 DNS 响应缓存。
    地址过滤 DNS 规则 的检查结果将被" "缓存直到过期。" #: htdocs/luci-static/resources/view/homeproxy/node.js:557 #: htdocs/luci-static/resources/view/homeproxy/server.js:278 msgid "String" msgstr "字符串" #: htdocs/luci-static/resources/view/homeproxy/node.js:1322 msgid "Sub (%s)" msgstr "订阅(%s)" #: htdocs/luci-static/resources/view/homeproxy/node.js:1349 msgid "Subscription URL-s" msgstr "订阅地址" #: htdocs/luci-static/resources/view/homeproxy/node.js:1333 msgid "Subscriptions" msgstr "订阅" #: htdocs/luci-static/resources/view/homeproxy/node.js:1273 msgid "Successfully imported %s nodes of total %s." msgstr "成功导入 %s 个节点,共 %s 个。" #: htdocs/luci-static/resources/view/homeproxy/status.js:86 msgid "Successfully updated." msgstr "更新成功。" #: htdocs/luci-static/resources/view/homeproxy/node.js:1233 #: htdocs/luci-static/resources/view/homeproxy/node.js:1350 msgid "" "Support Hysteria, Shadowsocks, Trojan, v2rayN (VMess), and XTLS (VLESS) " "online configuration delivery standard." msgstr "" "支持 Hysteria、Shadowsocks、Trojan、v2rayN(VMess)和 XTLS(VLESS)在线配置交" "付标准。" #: htdocs/luci-static/resources/view/homeproxy/client.js:180 msgid "" "Support UDP, TCP, DoH, DoQ, DoT. TCP protocol will be used if not specified." msgstr "支持 UDP、TCP、DoH、DoQ、DoT。如未指定则使用 TCP 协议。" #: htdocs/luci-static/resources/view/homeproxy/client.js:313 msgid "System" msgstr "系统" #: htdocs/luci-static/resources/view/homeproxy/client.js:383 #: htdocs/luci-static/resources/view/homeproxy/client.js:435 #: htdocs/luci-static/resources/view/homeproxy/client.js:757 #: htdocs/luci-static/resources/view/homeproxy/client.js:888 #: htdocs/luci-static/resources/view/homeproxy/client.js:996 #: htdocs/luci-static/resources/view/homeproxy/client.js:1162 msgid "System DNS" msgstr "系统 DNS" #: htdocs/luci-static/resources/view/homeproxy/client.js:638 #: htdocs/luci-static/resources/view/homeproxy/client.js:949 #: htdocs/luci-static/resources/view/homeproxy/client.js:1100 #: htdocs/luci-static/resources/view/homeproxy/server.js:867 msgid "TCP" msgstr "TCP" #: htdocs/luci-static/resources/view/homeproxy/node.js:1161 #: htdocs/luci-static/resources/view/homeproxy/server.js:845 msgid "TCP fast open" msgstr "TCP 快速打开" #: htdocs/luci-static/resources/view/homeproxy/client.js:307 msgid "TCP/IP stack" msgstr "TCP/IP 协议栈" #: htdocs/luci-static/resources/view/homeproxy/client.js:308 msgid "TCP/IP stack." msgstr "TCP/IP 协议栈。" #: htdocs/luci-static/resources/view/homeproxy/client.js:625 #: htdocs/luci-static/resources/view/homeproxy/client.js:950 #: htdocs/luci-static/resources/view/homeproxy/client.js:1113 #: htdocs/luci-static/resources/view/homeproxy/node.js:1003 #: htdocs/luci-static/resources/view/homeproxy/server.js:532 msgid "TLS" msgstr "TLS" #: htdocs/luci-static/resources/view/homeproxy/node.js:1035 #: htdocs/luci-static/resources/view/homeproxy/server.js:565 msgid "TLS ALPN" msgstr "TLS ALPN" #: htdocs/luci-static/resources/view/homeproxy/client.js:980 #: htdocs/luci-static/resources/view/homeproxy/node.js:1030 #: htdocs/luci-static/resources/view/homeproxy/server.js:560 msgid "TLS SNI" msgstr "TLS SNI" #: htdocs/luci-static/resources/view/homeproxy/client.js:735 msgid "TLS fragment" msgstr "TLS 分片" #: htdocs/luci-static/resources/view/homeproxy/node.js:787 #: htdocs/luci-static/resources/view/homeproxy/server.js:413 msgid "TLS is not enforced. If TLS is not configured, plain HTTP 1.1 is used." msgstr "不强制执行 TLS。如未配置 TLS,将使用纯 HTTP 1.1。" #: htdocs/luci-static/resources/view/homeproxy/client.js:729 #: htdocs/luci-static/resources/view/homeproxy/client.js:737 msgid "TLS record fragment" msgstr "TLS 记录分片" #: htdocs/luci-static/resources/view/homeproxy/client.js:989 msgid "" "Tag of a another server to resolve the domain name in the address. Required " "if address contains domain." msgstr "" "用于解析本 DNS 服务器的域名的另一个 DNS 服务器的标签。如果服务器地址包括域名" "则必须。" #: htdocs/luci-static/resources/view/homeproxy/client.js:1028 msgid "Tag of an outbound for connecting to the dns server." msgstr "用于连接到 DNS 服务器的出站标签。" #: htdocs/luci-static/resources/view/homeproxy/client.js:1376 msgid "Tag of the outbound to download rule set." msgstr "用于下载规则集的出站标签。" #: htdocs/luci-static/resources/view/homeproxy/client.js:1156 msgid "Tag of the target dns server." msgstr "目标 DNS 服务器标签。" #: htdocs/luci-static/resources/view/homeproxy/client.js:679 msgid "Tag of the target outbound." msgstr "目标出站标签。" #: htdocs/luci-static/resources/view/homeproxy/server.js:327 msgid "" "Tell the client to use the BBR flow control algorithm instead of Hysteria CC." msgstr "让客户端使用 BBR 流控算法。" #: htdocs/luci-static/resources/view/homeproxy/client.js:187 #: htdocs/luci-static/resources/view/homeproxy/client.js:222 msgid "Tencent Public DNS (119.29.29.29)" msgstr "腾讯公共 DNS(119.29.29.29)" #: htdocs/luci-static/resources/view/homeproxy/client.js:510 msgid "Test URL" msgstr "测试 URL" #: htdocs/luci-static/resources/view/homeproxy/client.js:138 #: htdocs/luci-static/resources/view/homeproxy/client.js:167 #: htdocs/luci-static/resources/view/homeproxy/client.js:530 msgid "Test interval" msgstr "测试间隔" #: htdocs/luci-static/resources/view/homeproxy/client.js:538 msgid "Test interval must be less or equal than idle timeout." msgstr "测试间隔时间必须小于或等于空闲超时时间。" #: htdocs/luci-static/resources/view/homeproxy/client.js:144 #: htdocs/luci-static/resources/view/homeproxy/client.js:173 #: htdocs/luci-static/resources/view/homeproxy/client.js:546 msgid "Test tolerance" msgstr "测试容差" #: htdocs/luci-static/resources/view/homeproxy/server.js:628 msgid "The ACME CA provider to use." msgstr "使用的 ACME CA 颁发机构。" #: htdocs/luci-static/resources/view/homeproxy/client.js:878 msgid "The DNS strategy for resolving the domain name in the address." msgstr "解析域名的默认策略。" #: htdocs/luci-static/resources/view/homeproxy/node.js:600 #: htdocs/luci-static/resources/view/homeproxy/server.js:308 msgid "The QUIC connection-level flow control window for receiving data." msgstr "用于接收数据的 QUIC 连接级流控制窗口。" #: htdocs/luci-static/resources/view/homeproxy/node.js:594 #: htdocs/luci-static/resources/view/homeproxy/server.js:301 msgid "The QUIC stream-level flow control window for receiving data." msgstr "用于接收数据的 QUIC 流级流控制窗口。" #: htdocs/luci-static/resources/view/homeproxy/client.js:511 msgid "The URL to test." msgstr "用于测试的 URL。" #: htdocs/luci-static/resources/view/homeproxy/client.js:958 msgid "The address of the dns server." msgstr "DNS 服务器的地址。" #: htdocs/luci-static/resources/view/homeproxy/server.js:679 msgid "" "The alternate port to use for the ACME HTTP challenge; if non-empty, this " "port will be used instead of 80 to spin up a listener for the HTTP challenge." msgstr "" "用于 ACME HTTP 质询的备用端口;如果非空,将使用此端口而不是 80 来启动 HTTP 质" "询的侦听器。" #: htdocs/luci-static/resources/view/homeproxy/server.js:685 msgid "" "The alternate port to use for the ACME TLS-ALPN challenge; the system must " "forward 443 to this port for challenge to succeed." msgstr "" "用于 ACME TLS-ALPN 质询的备用端口; 系统必须将 443 转发到此端口以使质询成功。" #: htdocs/luci-static/resources/view/homeproxy/client.js:596 msgid "" "The default rule uses the following matching logic:
    (domain || " "domain_suffix || domain_keyword || domain_regex || ip_cidr || " "ip_is_private) &&
    (port || port_range) &&
    (source_ip_cidr || source_ip_is_private) &&
    (source_port || source_port_range) &&
    other fields.
    Additionally, included rule sets can be considered merged rather " "than as a single rule sub-item." msgstr "" "默认规则使用以下匹配逻辑:
    (domain || domain_suffix || " "domain_keyword || domain_regex || ip_cidr || ip_is_private) &&
    (port || port_range) &&
    (source_ip_cidr || " "source_ip_is_private) &&
    (source_port || " "source_port_range) &&
    其他字段。此外,包含的所有规则" "集会被合并而不是独立生效。" #: htdocs/luci-static/resources/view/homeproxy/client.js:1076 msgid "" "The default rule uses the following matching logic:
    (domain || " "domain_suffix || domain_keyword || domain_regex) &&
    (port " "|| port_range) &&
    (source_ip_cidr || source_ip_is_private) &&
    (source_port || source_port_range) &&
    other fields.
    Additionally, included rule sets can be " "considered merged rather than as a single rule sub-item." msgstr "" "默认规则使用以下匹配逻辑:
    (domain || domain_suffix || " "domain_keyword || domain_regex) &&
    (port || port_range) &&
    (source_ip_cidr || source_ip_is_private) &&
    (source_port || source_port_range) &&
    其他字段。此外,包含的所有规则集会被合并而不是独立生效。" #: htdocs/luci-static/resources/view/homeproxy/client.js:218 msgid "" "The dns server for resolving China domains. Support UDP, TCP, DoH, DoQ, DoT." msgstr "用于解析国内域名的 DNS 服务器。支持 UDP、TCP、DoH、DoQ、DoT。" #: htdocs/luci-static/resources/view/homeproxy/client.js:447 #: htdocs/luci-static/resources/view/homeproxy/client.js:1021 msgid "The domain strategy for resolving the domain name in the address." msgstr "用于解析本 DNS 服务器的域名的策略。" #: htdocs/luci-static/resources/view/homeproxy/node.js:1065 #: htdocs/luci-static/resources/view/homeproxy/server.js:587 msgid "" "The elliptic curves that will be used in an ECDHE handshake, in preference " "order. If empty, the default will be used." msgstr "将在 ECDHE 握手中使用的椭圆曲线,按优先顺序排列。留空使用默认值。" #: htdocs/luci-static/resources/view/homeproxy/server.js:613 msgid "" "The email address to use when creating or selecting an existing ACME server " "account." msgstr "创建或选择现有 ACME 服务器帐户时使用的电子邮件地址。" #: htdocs/luci-static/resources/view/homeproxy/client.js:743 msgid "" "The fallback value in milliseconds used when TLS segmentation cannot " "automatically determine the wait time." msgstr "当 TLS 分段无法自动确定等待时间时使用的回退值(单位:毫秒)。" #: htdocs/luci-static/resources/view/homeproxy/client.js:554 msgid "The idle timeout in seconds." msgstr "空闲超时时间(单位:秒)。" #: htdocs/luci-static/resources/view/homeproxy/node.js:1057 #: htdocs/luci-static/resources/view/homeproxy/server.js:579 msgid "The maximum TLS version that is acceptable." msgstr "可接受的最高 TLS 版本。" #: htdocs/luci-static/resources/view/homeproxy/server.js:315 msgid "" "The maximum number of QUIC concurrent bidirectional streams that a peer is " "allowed to open." msgstr "允许对等点打开的 QUIC 并发双向流的最大数量。" #: htdocs/luci-static/resources/view/homeproxy/server.js:740 msgid "The maximum time difference between the server and the client." msgstr "服务器和客户端之间的最大时间差。" #: htdocs/luci-static/resources/view/homeproxy/node.js:1049 #: htdocs/luci-static/resources/view/homeproxy/server.js:571 msgid "The minimum TLS version that is acceptable." msgstr "可接受的最低 TLS 版本。" #: htdocs/luci-static/resources/view/homeproxy/client.js:102 #: htdocs/luci-static/resources/view/homeproxy/server.js:130 msgid "The modern ImmortalWrt proxy platform for ARM64/AMD64." msgstr "为 ARM64/AMD64 设计的现代 ImmortalWrt 代理平台。" #: htdocs/luci-static/resources/view/homeproxy/client.js:454 #: htdocs/luci-static/resources/view/homeproxy/server.js:875 msgid "The network interface to bind to." msgstr "绑定到的网络接口。" #: htdocs/luci-static/resources/view/homeproxy/client.js:968 msgid "The path of the DNS server." msgstr "DNS 服务器的路径。" #: htdocs/luci-static/resources/view/homeproxy/node.js:1099 msgid "" "The path to the ECH config, in PEM format. If empty, load from DNS will be " "attempted." msgstr "PEM 格式的 ECH 配置路径。如果为空,将尝试从 DNS 加载。" #: htdocs/luci-static/resources/view/homeproxy/node.js:1078 msgid "The path to the server certificate, in PEM format." msgstr "服务端证书路径,需要 PEM 格式。" #: htdocs/luci-static/resources/view/homeproxy/server.js:199 msgid "The port must be unique." msgstr "必须是唯一端口。" #: htdocs/luci-static/resources/view/homeproxy/client.js:963 msgid "The port of the DNS server." msgstr "DNS 服务器的端口。" #: htdocs/luci-static/resources/view/homeproxy/client.js:1216 msgid "The response code." msgstr "响应代码。" #: htdocs/luci-static/resources/view/homeproxy/server.js:776 msgid "The server private key, in PEM format." msgstr "服务端私钥,需要 PEM 格式。" #: htdocs/luci-static/resources/view/homeproxy/server.js:757 msgid "The server public key, in PEM format." msgstr "服务端公钥,需要 PEM 格式。" #: htdocs/luci-static/resources/view/homeproxy/client.js:461 msgid "" "The tag of the upstream outbound.
    Other dial fields will be ignored when " "enabled." msgstr "上游出站的标签。
    启用时,其他拨号字段将被忽略。" #: htdocs/luci-static/resources/view/homeproxy/client.js:139 #: htdocs/luci-static/resources/view/homeproxy/client.js:168 #: htdocs/luci-static/resources/view/homeproxy/client.js:531 msgid "The test interval in seconds." msgstr "测试间隔时间(单位:秒)。" #: htdocs/luci-static/resources/view/homeproxy/client.js:145 #: htdocs/luci-static/resources/view/homeproxy/client.js:174 #: htdocs/luci-static/resources/view/homeproxy/client.js:547 msgid "The test tolerance in milliseconds." msgstr "测试容差时间(单位:毫秒)。" #: htdocs/luci-static/resources/view/homeproxy/node.js:807 #: htdocs/luci-static/resources/view/homeproxy/server.js:465 msgid "" "The timeout (in seconds) that after performing a keepalive check, the client " "will wait for activity. If no activity is detected, the connection will be " "closed." msgstr "" "经过一段时间(单位:秒)之后,客户端将执行 keepalive 检查并等待活动。如果没有" "检测到任何活动,则会关闭连接。" #: htdocs/luci-static/resources/view/homeproxy/node.js:1043 #: htdocs/luci-static/resources/view/homeproxy/node.js:1385 msgid "" "This is DANGEROUS, your traffic is almost like " "PLAIN TEXT! Use at your own risk!" msgstr "" "这是危险行为,您的流量将几乎等同于明文!使用风险自负!" #: htdocs/luci-static/resources/view/homeproxy/node.js:717 msgid "" "This is the TUIC port of the UDP over TCP protocol, designed to provide a " "QUIC stream based UDP relay mode that TUIC does not provide." msgstr "" "这是 TUIC 的 UDP over TCP 协议移植, 旨在提供 TUIC 不提供的基于 QUIC 流的 " "UDP 中继模式。" #: htdocs/luci-static/resources/view/homeproxy/client.js:188 #: htdocs/luci-static/resources/view/homeproxy/client.js:223 msgid "ThreatBook Public DNS (117.50.10.10)" msgstr "微步在线公共 DNS(117.50.10.10)" #: htdocs/luci-static/resources/view/homeproxy/client.js:723 msgid "" "Timeout for UDP connections.
    Setting a larger value than the UDP timeout " "in inbounds will have no effect." msgstr "UDP 连接的超时时间。
    设置比入站的 UDP 超时更大的值将无效。" #: htdocs/luci-static/resources/view/homeproxy/client.js:918 msgid "" "Timeout of rejected DNS response cache in seconds. 604800 (7d) " "is used by default." msgstr "" "被拒绝的 DNS 响应缓存超时时间(单位:秒)。默认为 604800(7 天)。" #: htdocs/luci-static/resources/view/homeproxy/server.js:491 msgid "" "To be compatible with Xray-core, set this to Sec-WebSocket-Protocol." msgstr "" "要与 Xray-core 兼容,请将其设置为 Sec-WebSocket-Protocol。" #: htdocs/luci-static/resources/view/homeproxy/client.js:292 msgid "" "To enable Tun support, you need to install ip-full and " "kmod-tun" msgstr "" "要启用 Tun 支持,您需要安装 ip-fullkmod-tun。" #: htdocs/luci-static/resources/view/homeproxy/status.js:135 msgid "Trace" msgstr "跟踪" #: htdocs/luci-static/resources/view/homeproxy/node.js:773 #: htdocs/luci-static/resources/view/homeproxy/server.js:399 msgid "Transport" msgstr "传输层" #: htdocs/luci-static/resources/view/homeproxy/node.js:439 #: htdocs/luci-static/resources/view/homeproxy/server.js:186 msgid "Trojan" msgstr "Trojan" #: htdocs/luci-static/resources/view/homeproxy/node.js:441 #: htdocs/luci-static/resources/view/homeproxy/server.js:188 msgid "Tuic" msgstr "Tuic" #: htdocs/luci-static/resources/view/homeproxy/client.js:290 msgid "Tun TCP/UDP" msgstr "Tun TCP/UDP" #: htdocs/luci-static/resources/view/homeproxy/client.js:947 #: htdocs/luci-static/resources/view/homeproxy/client.js:1334 #: htdocs/luci-static/resources/view/homeproxy/node.js:427 #: htdocs/luci-static/resources/view/homeproxy/server.js:175 msgid "Type" msgstr "类型" #: htdocs/luci-static/resources/view/homeproxy/client.js:639 #: htdocs/luci-static/resources/view/homeproxy/client.js:948 #: htdocs/luci-static/resources/view/homeproxy/client.js:1101 #: htdocs/luci-static/resources/view/homeproxy/server.js:868 msgid "UDP" msgstr "UDP" #: htdocs/luci-static/resources/view/homeproxy/node.js:1167 #: htdocs/luci-static/resources/view/homeproxy/server.js:854 msgid "UDP Fragment" msgstr "UDP 分片" #: htdocs/luci-static/resources/view/homeproxy/client.js:335 #: htdocs/luci-static/resources/view/homeproxy/server.js:859 msgid "UDP NAT expiration time" msgstr "UDP NAT 过期时间" #: htdocs/luci-static/resources/view/homeproxy/node.js:1171 msgid "UDP over TCP" msgstr "UDP over TCP" #: htdocs/luci-static/resources/view/homeproxy/node.js:716 msgid "UDP over stream" msgstr "UDP over stream" #: htdocs/luci-static/resources/view/homeproxy/node.js:709 msgid "UDP packet relay mode." msgstr "UDP 包中继模式。" #: htdocs/luci-static/resources/view/homeproxy/node.js:708 msgid "UDP relay mode" msgstr "UDP 中继模式" #: htdocs/luci-static/resources/view/homeproxy/client.js:722 msgid "UDP timeout" msgstr "UDP 超时" #: htdocs/luci-static/resources/view/homeproxy/client.js:124 #: htdocs/luci-static/resources/view/homeproxy/client.js:153 #: htdocs/luci-static/resources/view/homeproxy/client.js:421 msgid "URLTest" msgstr "URLTest" #: htdocs/luci-static/resources/view/homeproxy/client.js:131 #: htdocs/luci-static/resources/view/homeproxy/client.js:160 #: htdocs/luci-static/resources/view/homeproxy/client.js:496 msgid "URLTest nodes" msgstr "URLTest 节点" #: htdocs/luci-static/resources/view/homeproxy/node.js:690 #: htdocs/luci-static/resources/view/homeproxy/server.js:346 msgid "UUID" msgstr "UUID" #: htdocs/luci-static/resources/view/homeproxy/status.js:98 msgid "Unknown error." msgstr "未知错误。" #: htdocs/luci-static/resources/view/homeproxy/status.js:195 msgid "Unknown error: %s" msgstr "未知错误:%s" #: htdocs/luci-static/resources/view/homeproxy/node.js:1135 msgid "Unsupported fingerprint!" msgstr "不支持的指纹!" #: htdocs/luci-static/resources/view/homeproxy/node.js:1409 msgid "Update %s subscriptions" msgstr "更新 %s 个订阅" #: htdocs/luci-static/resources/view/homeproxy/status.js:89 msgid "Update failed." msgstr "更新失败。" #: htdocs/luci-static/resources/view/homeproxy/client.js:1392 msgid "Update interval" msgstr "更新间隔" #: htdocs/luci-static/resources/view/homeproxy/client.js:1393 msgid "Update interval of rule set." msgstr "规则集更新间隔。" #: htdocs/luci-static/resources/view/homeproxy/node.js:1404 msgid "Update nodes from subscriptions" msgstr "从订阅更新节点" #: htdocs/luci-static/resources/view/homeproxy/node.js:1346 msgid "Update subscriptions via proxy." msgstr "使用代理更新订阅。" #: htdocs/luci-static/resources/view/homeproxy/node.js:1339 msgid "Update time" msgstr "更新时间" #: htdocs/luci-static/resources/view/homeproxy/node.js:1345 msgid "Update via proxy" msgstr "使用代理更新" #: htdocs/luci-static/resources/view/homeproxy/node.js:1104 msgid "Upload ECH config" msgstr "上传 ECH 配置" #: htdocs/luci-static/resources/view/homeproxy/node.js:995 #: htdocs/luci-static/resources/view/homeproxy/server.js:523 msgid "Upload bandwidth" msgstr "上传带宽" #: htdocs/luci-static/resources/view/homeproxy/node.js:996 #: htdocs/luci-static/resources/view/homeproxy/server.js:524 msgid "Upload bandwidth in Mbps." msgstr "上传带宽(单位:Mbps)。" #: htdocs/luci-static/resources/view/homeproxy/node.js:1085 #: htdocs/luci-static/resources/view/homeproxy/server.js:767 msgid "Upload certificate" msgstr "上传证书" #: htdocs/luci-static/resources/view/homeproxy/server.js:786 msgid "Upload key" msgstr "上传密钥" #: htdocs/luci-static/resources/view/homeproxy/node.js:1088 #: htdocs/luci-static/resources/view/homeproxy/node.js:1107 #: htdocs/luci-static/resources/view/homeproxy/server.js:770 #: htdocs/luci-static/resources/view/homeproxy/server.js:789 msgid "Upload..." msgstr "上传..." #: htdocs/luci-static/resources/view/homeproxy/server.js:596 msgid "Use ACME TLS certificate issuer." msgstr "使用 ACME TLS 证书颁发机构。" #: htdocs/luci-static/resources/view/homeproxy/node.js:1031 #: htdocs/luci-static/resources/view/homeproxy/server.js:561 msgid "" "Used to verify the hostname on the returned certificates unless insecure is " "given." msgstr "用于验证返回证书上的主机名。如允许不安全连接,此配置无效。" #: htdocs/luci-static/resources/view/homeproxy/client.js:981 msgid "Used to verify the hostname on the returned certificates." msgstr "用于验证返回证书上的主机名。" #: htdocs/luci-static/resources/view/homeproxy/client.js:642 #: htdocs/luci-static/resources/view/homeproxy/client.js:1115 msgid "User" msgstr "用户" #: htdocs/luci-static/resources/view/homeproxy/node.js:1379 msgid "User-Agent" msgstr "用户代理" #: htdocs/luci-static/resources/view/homeproxy/node.js:458 #: htdocs/luci-static/resources/view/homeproxy/server.js:203 msgid "Username" msgstr "用户名" #: htdocs/luci-static/resources/view/homeproxy/node.js:444 #: htdocs/luci-static/resources/view/homeproxy/server.js:189 msgid "VLESS" msgstr "VLESS" #: htdocs/luci-static/resources/view/homeproxy/node.js:445 #: htdocs/luci-static/resources/view/homeproxy/server.js:190 msgid "VMess" msgstr "VMess" #: htdocs/luci-static/resources/view/homeproxy/client.js:181 #: htdocs/luci-static/resources/view/homeproxy/client.js:219 msgid "WAN DNS (read from interface)" msgstr "WAN DNS(从接口获取)" #: htdocs/luci-static/resources/view/homeproxy/client.js:1464 msgid "WAN IP Policy" msgstr "WAN IP 策略" #: htdocs/luci-static/resources/view/homeproxy/status.js:138 msgid "Warn" msgstr "警告" #: htdocs/luci-static/resources/view/homeproxy/node.js:780 #: htdocs/luci-static/resources/view/homeproxy/server.js:406 msgid "WebSocket" msgstr "WebSocket" #: htdocs/luci-static/resources/view/homeproxy/node.js:1370 msgid "Whitelist mode" msgstr "白名单模式" #: htdocs/luci-static/resources/view/homeproxy/node.js:443 msgid "WireGuard" msgstr "WireGuard" #: htdocs/luci-static/resources/view/homeproxy/node.js:912 msgid "WireGuard peer public key." msgstr "WireGuard 对端公钥。" #: htdocs/luci-static/resources/view/homeproxy/node.js:919 msgid "WireGuard pre-shared key." msgstr "WireGuard 预共享密钥。" #: htdocs/luci-static/resources/view/homeproxy/node.js:904 msgid "WireGuard requires base64-encoded private keys." msgstr "WireGuard 要求 base64 编码的私钥。" #: htdocs/luci-static/resources/view/homeproxy/node.js:498 msgid "Write proxy protocol in the connection header." msgstr "在连接头中写入代理协议。" #: htdocs/luci-static/resources/view/homeproxy/node.js:889 #: htdocs/luci-static/resources/view/homeproxy/node.js:1392 msgid "Xudp (Xray-core)" msgstr "Xudp (Xray-core)" #: htdocs/luci-static/resources/homeproxy.js:259 msgid "Your %s was successfully uploaded. Size: %sB." msgstr "您的 %s 已成功上传。大小:%sB。" #: htdocs/luci-static/resources/view/homeproxy/server.js:630 msgid "ZeroSSL" msgstr "ZeroSSL" #: htdocs/luci-static/resources/view/homeproxy/node.js:1090 #: htdocs/luci-static/resources/view/homeproxy/server.js:772 msgid "certificate" msgstr "证书" #: htdocs/luci-static/resources/view/homeproxy/client.js:716 msgid "connect UDP connections" msgstr "主动连接 UDP" #: htdocs/luci-static/resources/view/homeproxy/node.js:1050 #: htdocs/luci-static/resources/view/homeproxy/node.js:1058 #: htdocs/luci-static/resources/view/homeproxy/server.js:572 #: htdocs/luci-static/resources/view/homeproxy/server.js:580 msgid "default" msgstr "默认" #: htdocs/luci-static/resources/view/homeproxy/status.js:53 msgid "failed" msgstr "失败" #: htdocs/luci-static/resources/view/homeproxy/node.js:776 #: htdocs/luci-static/resources/view/homeproxy/server.js:402 msgid "gRPC" msgstr "gRPC" #: htdocs/luci-static/resources/view/homeproxy/node.js:818 msgid "gRPC permit without stream" msgstr "gRPC 允许无活动连接" #: htdocs/luci-static/resources/view/homeproxy/node.js:813 #: htdocs/luci-static/resources/view/homeproxy/server.js:430 msgid "gRPC service name" msgstr "gRPC 服务名称" #: htdocs/luci-static/resources/view/homeproxy/client.js:311 msgid "gVisor" msgstr "gVisor" #: htdocs/luci-static/resources/homeproxy.js:306 #: htdocs/luci-static/resources/homeproxy.js:326 #: htdocs/luci-static/resources/view/homeproxy/client.js:195 #: htdocs/luci-static/resources/view/homeproxy/client.js:230 #: htdocs/luci-static/resources/view/homeproxy/client.js:504 #: htdocs/luci-static/resources/view/homeproxy/client.js:1357 #: htdocs/luci-static/resources/view/homeproxy/node.js:488 #: htdocs/luci-static/resources/view/homeproxy/node.js:1131 #: htdocs/luci-static/resources/view/homeproxy/server.js:235 msgid "non-empty value" msgstr "非空值" #: htdocs/luci-static/resources/view/homeproxy/node.js:631 #: htdocs/luci-static/resources/view/homeproxy/node.js:887 #: htdocs/luci-static/resources/view/homeproxy/node.js:1390 msgid "none" msgstr "无" #: htdocs/luci-static/resources/view/homeproxy/node.js:888 #: htdocs/luci-static/resources/view/homeproxy/node.js:1391 msgid "packet addr (v2ray-core v5+)" msgstr "packet addr (v2ray-core v5+)" #: htdocs/luci-static/resources/view/homeproxy/status.js:50 msgid "passed" msgstr "通过" #: htdocs/luci-static/resources/view/homeproxy/server.js:791 msgid "private key" msgstr "私钥" #: htdocs/luci-static/resources/view/homeproxy/client.js:631 msgid "quic-go / uquic chrome" msgstr "quic-go / uquic chrome" #: htdocs/luci-static/resources/view/homeproxy/status.js:285 msgid "sing-box client" msgstr "sing-box 客户端" #: htdocs/luci-static/resources/view/homeproxy/status.js:288 msgid "sing-box server" msgstr "sing-box 服务端" #: htdocs/luci-static/resources/view/homeproxy/node.js:1113 msgid "uTLS fingerprint" msgstr "uTLS 指纹" #: htdocs/luci-static/resources/view/homeproxy/node.js:1114 msgid "" "uTLS is a fork of \"crypto/tls\", which provides ClientHello fingerprinting " "resistance." msgstr "" "uTLS 是 \"crypto/tls\" 的一个分支,拥有抵抗 ClientHello 指纹识别的能力。" #: htdocs/luci-static/resources/view/homeproxy/status.js:59 msgid "unchecked" msgstr "未检查" #: htdocs/luci-static/resources/homeproxy.js:237 #: htdocs/luci-static/resources/view/homeproxy/node.js:1302 msgid "unique UCI identifier" msgstr "独立 UCI 标识" #: htdocs/luci-static/resources/homeproxy.js:317 msgid "unique value" msgstr "独立值" #: htdocs/luci-static/resources/view/homeproxy/node.js:500 #: htdocs/luci-static/resources/view/homeproxy/node.js:645 #: htdocs/luci-static/resources/view/homeproxy/node.js:1178 msgid "v1" msgstr "v1" #: htdocs/luci-static/resources/view/homeproxy/node.js:501 #: htdocs/luci-static/resources/view/homeproxy/node.js:646 #: htdocs/luci-static/resources/view/homeproxy/node.js:1179 msgid "v2" msgstr "v2" #: htdocs/luci-static/resources/view/homeproxy/node.js:647 msgid "v3" msgstr "v3" #: htdocs/luci-static/resources/view/homeproxy/client.js:207 #: htdocs/luci-static/resources/view/homeproxy/client.js:211 #: htdocs/luci-static/resources/view/homeproxy/client.js:241 #: htdocs/luci-static/resources/view/homeproxy/client.js:245 msgid "valid DNS server address" msgstr "有效 DNS 服务器地址" #: htdocs/luci-static/resources/view/homeproxy/client.js:518 #: htdocs/luci-static/resources/view/homeproxy/client.js:521 #: htdocs/luci-static/resources/view/homeproxy/client.js:1362 #: htdocs/luci-static/resources/view/homeproxy/client.js:1365 #: htdocs/luci-static/resources/view/homeproxy/node.js:1356 #: htdocs/luci-static/resources/view/homeproxy/node.js:1359 msgid "valid URL" msgstr "有效网址" #: htdocs/luci-static/resources/homeproxy.js:271 msgid "valid base64 key with %d characters" msgstr "包含 %d 个字符的有效 base64 密钥" #: htdocs/luci-static/resources/view/homeproxy/client.js:1507 #: htdocs/luci-static/resources/view/homeproxy/client.js:1539 msgid "valid hostname" msgstr "有效主机名" #: htdocs/luci-static/resources/homeproxy.js:297 msgid "valid port range (port1:port2)" msgstr "有效端口范围(port1:port2)" #: htdocs/luci-static/resources/view/homeproxy/client.js:274 msgid "valid port value" msgstr "有效端口值" #: htdocs/luci-static/resources/homeproxy.js:328 msgid "valid uuid" msgstr "有效 uuid" ================================================ FILE: luci-app-homeproxy/root/etc/capabilities/homeproxy.json ================================================ { "bounding": [ "CAP_NET_ADMIN", "CAP_NET_BIND_SERVICE", "CAP_NET_RAW", "CAP_SYS_PTRACE" ], "effective": [ "CAP_NET_ADMIN", "CAP_NET_BIND_SERVICE", "CAP_NET_RAW", "CAP_SYS_PTRACE" ], "ambient": [ "CAP_NET_ADMIN", "CAP_NET_BIND_SERVICE", "CAP_NET_RAW", "CAP_SYS_PTRACE" ], "permitted": [ "CAP_NET_ADMIN", "CAP_NET_BIND_SERVICE", "CAP_NET_RAW", "CAP_SYS_PTRACE" ], "inheritable": [ "CAP_NET_ADMIN", "CAP_NET_BIND_SERVICE", "CAP_NET_RAW", "CAP_SYS_PTRACE" ] } ================================================ FILE: luci-app-homeproxy/root/etc/config/homeproxy ================================================ config homeproxy 'infra' option __warning 'DO NOT EDIT THIS SECTION, OR YOU ARE ON YOUR OWN!' option common_port '22,53,80,143,443,465,587,853,873,993,995,5222,8080,8443,9418' option mixed_port '5330' option redirect_port '5331' option tproxy_port '5332' option dns_port '5333' option dns_redirect '1' option ntp_server 'nil' option sniff_override '1' option udp_timeout '' option tun_name 'singtun0' option tun_addr4 '172.19.0.1/30' option tun_addr6 'fdfe:dcba:9876::1/126' option tun_mtu '9000' option table_mark '100' option self_mark '100' option tproxy_mark '101' option tun_mark '102' config homeproxy 'migration' option crontab '1' config homeproxy 'config' option main_node 'nil' option main_udp_node 'same' option dns_server '8.8.8.8' option china_dns_server '223.5.5.5' option routing_mode 'bypass_mainland_china' option routing_port 'common' option proxy_mode 'redirect_tproxy' option ipv6_support '1' option github_token '' option log_level 'warn' config homeproxy 'control' option lan_proxy_mode 'disabled' list wan_proxy_ipv4_ips '91.105.192.0/23' list wan_proxy_ipv4_ips '91.108.4.0/22' list wan_proxy_ipv4_ips '91.108.8.0/22' list wan_proxy_ipv4_ips '91.108.16.0/22' list wan_proxy_ipv4_ips '91.108.12.0/22' list wan_proxy_ipv4_ips '91.108.20.0/22' list wan_proxy_ipv4_ips '91.108.56.0/22' list wan_proxy_ipv4_ips '149.154.160.0/20' list wan_proxy_ipv4_ips '185.76.151.0/24' list wan_proxy_ipv4_ips '203.208.50.66/32' list wan_proxy_ipv6_ips '2001:67c:4e8::/48' list wan_proxy_ipv6_ips '2001:b28:f23c::/48' list wan_proxy_ipv6_ips '2001:b28:f23d::/48' list wan_proxy_ipv6_ips '2001:b28:f23f::/48' list wan_proxy_ipv6_ips '2a0a:f280::/32' config homeproxy 'routing' option sniff_override '1' option default_outbound 'direct-out' option default_outbound_dns 'default-dns' config homeproxy 'dns' option dns_strategy 'prefer_ipv4' option default_server 'local-dns' option disable_cache '0' option disable_cache_expire '0' config homeproxy 'subscription' option auto_update '0' option allow_insecure '0' option packet_encoding 'xudp' option update_via_proxy '0' option filter_nodes 'blacklist' list filter_keywords '重置|到期|过期|剩余|套餐' list filter_keywords 'Expiration|Remaining' config homeproxy 'server' option enabled '0' option log_level 'warn' ================================================ FILE: luci-app-homeproxy/root/etc/homeproxy/resources/china_ip4.txt ================================================ 1.1.8.0/24 1.2.4.0/24 1.8.1.0/24 1.8.8.0/24 1.12.0.0/14 1.18.128.0/24 1.24.0.0/13 1.45.0.0/16 1.48.0.0/14 1.56.0.0/13 1.68.0.0/14 1.80.0.0/13 1.88.0.0/14 1.92.0.0/16 1.94.0.0/15 1.116.0.0/15 1.118.2.0/24 1.118.32.0/22 1.118.36.0/24 1.118.48.0/21 1.118.64.0/19 1.119.0.0/17 1.119.128.0/18 1.119.192.0/20 1.119.208.0/22 1.180.0.0/14 1.184.0.0/15 1.188.0.0/14 1.192.0.0/13 1.202.0.0/15 1.204.0.0/14 2.26.192.0/21 2.56.255.0/24 2.58.242.0/24 2.59.151.0/24 5.10.138.0/23 5.10.140.0/24 5.10.143.0/24 5.181.219.0/24 8.128.4.0/22 8.128.32.0/19 8.128.64.0/19 8.128.96.0/20 8.129.0.0/16 8.130.0.0/15 8.132.0.0/14 8.136.0.0/13 8.144.0.0/14 8.148.0.0/19 8.148.36.0/22 8.148.41.0/24 8.148.43.0/24 8.148.64.0/18 8.148.128.0/17 8.149.0.0/16 8.150.0.0/20 8.150.16.0/21 8.150.64.0/23 8.152.0.0/13 8.160.0.0/15 8.162.0.0/18 8.162.64.0/19 8.163.0.0/16 8.164.0.0/14 8.168.0.0/15 14.16.0.0/12 14.102.156.0/22 14.103.0.0/16 14.104.0.0/13 14.112.0.0/12 14.134.0.0/15 14.144.0.0/12 14.204.0.0/15 14.208.0.0/12 14.241.232.0/21 14.255.16.0/24 14.255.238.0/24 14.255.254.0/24 16.2.142.0/23 23.236.111.0/24 23.247.128.0/24 23.247.130.0/24 27.0.128.0/24 27.0.130.0/23 27.0.164.0/22 27.0.204.0/22 27.0.208.0/21 27.8.0.0/13 27.16.0.0/12 27.36.0.0/14 27.40.0.0/13 27.50.128.0/17 27.98.224.0/19 27.99.128.0/17 27.106.204.0/22 27.109.124.0/22 27.112.0.0/21 27.115.0.0/17 27.128.0.0/15 27.144.0.0/16 27.148.0.0/14 27.152.0.0/13 27.184.0.0/13 27.192.0.0/11 27.224.0.0/14 31.40.214.0/24 31.57.10.0/24 36.1.0.0/16 36.4.0.0/14 36.16.0.0/12 36.32.0.0/14 36.36.0.0/16 36.40.0.0/13 36.48.0.0/15 36.50.226.0/24 36.51.224.0/23 36.51.226.0/24 36.51.248.0/24 36.51.253.0/24 36.51.254.0/24 36.56.0.0/13 36.96.0.0/12 36.112.0.0/15 36.114.0.0/16 36.128.0.0/10 36.192.0.0/16 36.206.0.0/16 36.212.0.0/15 36.214.0.0/16 36.221.0.0/17 36.248.0.0/14 36.255.116.0/22 36.255.128.0/22 36.255.164.0/24 38.111.220.0/23 39.64.0.0/11 39.96.0.0/13 39.104.0.0/14 39.108.0.0/16 39.128.0.0/10 40.0.176.0/20 40.0.248.0/21 40.72.0.0/15 40.125.128.0/17 40.126.64.0/18 40.162.0.0/16 40.198.10.0/24 40.198.16.0/21 40.198.24.0/23 40.251.225.0/24 40.251.227.0/24 40.251.228.0/24 42.0.128.0/17 42.4.0.0/14 42.48.0.0/15 42.51.0.0/16 42.52.0.0/14 42.56.0.0/14 42.62.0.0/17 42.63.0.0/16 42.80.0.0/15 42.83.128.0/22 42.83.132.0/23 42.83.134.0/24 42.83.144.0/22 42.83.189.0/24 42.83.190.0/24 42.83.200.0/23 42.84.0.0/14 42.88.0.0/13 42.96.128.0/17 42.97.0.0/16 42.99.0.0/18 42.100.0.0/14 42.120.0.0/15 42.122.0.0/16 42.123.64.0/18 42.156.128.0/17 42.157.128.0/21 42.157.160.0/19 42.157.192.0/21 42.158.0.0/15 42.176.0.0/13 42.184.0.0/15 42.186.0.0/16 42.187.120.0/22 42.187.128.0/17 42.192.0.0/15 42.194.12.0/24 42.194.128.0/17 42.199.240.0/22 42.201.32.0/19 42.201.64.0/21 42.201.72.0/22 42.201.76.0/23 42.202.0.0/15 42.224.0.0/12 42.240.0.0/21 42.240.8.0/22 42.240.12.0/23 42.240.16.0/23 42.240.20.0/22 42.240.48.0/24 42.240.128.0/17 42.242.0.0/15 42.244.0.0/14 42.248.0.0/15 43.136.0.0/13 43.144.0.0/15 43.176.0.0/14 43.180.0.0/16 43.192.0.0/16 43.193.0.0/18 43.193.64.0/23 43.194.0.0/20 43.194.16.0/24 43.195.0.0/20 43.196.0.0/16 43.224.12.0/22 43.224.24.0/22 43.224.52.0/23 43.224.56.0/22 43.224.80.0/22 43.224.240.0/24 43.225.76.0/22 43.225.84.0/23 43.225.87.0/24 43.225.180.0/22 43.225.208.0/22 43.225.255.0/24 43.226.32.0/19 43.226.64.0/20 43.226.116.0/22 43.226.128.0/19 43.226.164.0/22 43.226.236.0/22 43.227.56.0/21 43.227.64.0/21 43.227.80.0/20 43.227.104.0/22 43.227.140.0/22 43.227.152.0/21 43.227.160.0/20 43.227.176.0/21 43.227.192.0/19 43.227.252.0/22 43.228.0.0/19 43.228.36.0/22 43.228.40.0/21 43.228.48.0/20 43.228.64.0/21 43.228.76.0/22 43.228.204.0/22 43.228.240.0/22 43.229.48.0/22 43.229.184.0/23 43.229.216.0/22 43.230.136.0/22 43.230.221.0/24 43.230.222.0/23 43.231.41.0/24 43.231.46.0/23 43.231.96.0/20 43.231.144.0/20 43.231.160.0/21 43.231.168.0/23 43.231.170.0/24 43.239.95.0/24 43.239.120.0/22 43.239.172.0/24 43.240.0.0/22 43.240.56.0/21 43.240.72.0/22 43.240.124.0/22 43.240.128.0/22 43.240.133.0/24 43.240.136.0/22 43.240.156.0/22 43.240.192.0/21 43.240.200.0/23 43.240.202.0/24 43.240.204.0/22 43.240.220.0/22 43.241.16.0/22 43.241.48.0/24 43.241.50.0/23 43.241.76.0/22 43.241.180.0/22 43.241.208.0/20 43.241.224.0/20 43.241.240.0/22 43.242.72.0/22 43.242.84.0/22 43.242.96.0/22 43.242.152.0/21 43.242.164.0/22 43.242.180.0/22 43.242.192.0/21 43.242.252.0/22 43.243.4.0/22 43.243.12.0/22 43.243.16.0/22 43.243.88.0/22 43.243.128.0/22 43.243.136.0/22 43.243.148.0/22 43.243.156.0/22 43.243.228.0/22 43.243.232.0/22 43.243.244.0/22 43.247.4.0/24 43.247.68.0/22 43.247.84.0/22 43.247.88.0/22 43.247.100.0/22 43.247.176.0/20 43.247.196.0/22 43.247.244.0/22 43.247.248.0/22 43.248.0.0/22 43.248.48.0/22 43.248.76.0/22 43.248.96.0/21 43.248.108.0/22 43.248.112.0/21 43.248.128.0/20 43.248.184.0/21 43.248.192.0/20 43.248.232.0/22 43.248.244.0/22 43.249.0.0/23 43.249.2.0/24 43.249.136.0/22 43.249.144.0/22 43.249.168.0/22 43.249.192.0/22 43.249.236.0/22 43.250.4.0/22 43.250.32.0/22 43.250.96.0/22 43.250.112.0/22 43.250.144.0/22 43.250.168.0/22 43.250.200.0/22 43.250.236.0/22 43.250.244.0/22 43.251.4.0/22 43.251.8.0/22 43.251.36.0/22 43.251.100.0/22 43.251.232.0/22 43.251.244.0/22 43.252.48.0/24 43.254.0.0/22 43.254.8.0/22 43.254.24.0/22 43.254.44.0/22 43.254.52.0/22 43.254.88.0/22 43.254.100.0/22 43.254.104.0/23 43.254.106.0/24 43.254.116.0/22 43.254.136.0/22 43.254.140.0/23 43.254.144.0/20 43.254.168.0/21 43.254.192.0/22 43.254.200.0/22 43.254.220.0/22 43.254.224.0/20 43.254.240.0/22 43.254.248.0/21 43.255.0.0/22 43.255.68.0/22 43.255.84.0/22 43.255.96.0/22 43.255.184.0/22 43.255.200.0/22 43.255.212.0/22 43.255.224.0/21 44.30.15.0/24 44.30.28.0/24 44.30.81.0/24 44.31.42.0/24 44.31.81.0/24 44.31.96.0/24 44.31.216.0/24 44.32.143.0/24 45.9.11.0/24 45.12.88.0/24 45.12.90.0/24 45.40.192.0/18 45.61.200.0/23 45.61.226.0/24 45.65.20.0/22 45.67.223.0/24 45.81.34.0/24 45.112.232.0/22 45.113.20.0/22 45.113.24.0/22 45.113.40.0/22 45.113.200.0/22 45.113.206.0/24 45.114.189.0/24 45.115.44.0/22 45.115.144.0/22 45.115.164.0/22 45.115.200.0/22 45.116.32.0/22 45.116.52.0/22 45.116.100.0/22 45.116.140.0/22 45.116.152.0/22 45.116.208.0/22 45.117.8.0/22 45.117.68.0/22 45.119.60.0/22 45.119.68.0/22 45.119.104.0/23 45.119.116.0/22 45.120.100.0/22 45.120.164.0/22 45.120.243.0/24 45.123.117.0/24 45.123.128.0/22 45.123.168.0/21 45.123.176.0/21 45.124.20.0/22 45.124.68.0/22 45.124.76.0/22 45.124.80.0/22 45.124.124.0/22 45.125.24.0/24 45.125.44.0/22 45.125.56.0/22 45.126.112.0/22 45.126.120.0/22 45.127.129.0/24 45.127.144.0/21 45.135.149.0/24 45.147.6.0/24 45.150.236.0/23 45.151.47.0/24 45.202.64.0/22 45.202.209.0/24 45.202.210.0/23 45.202.212.0/24 45.248.8.0/22 45.248.108.0/22 45.249.212.0/22 45.250.32.0/22 45.250.39.0/24 45.250.40.0/22 45.250.152.0/23 45.250.180.0/23 45.250.184.0/22 45.250.188.0/24 45.251.2.0/23 45.251.8.0/22 45.251.20.0/22 45.251.88.0/21 45.251.100.0/22 45.251.120.0/22 45.252.0.0/22 45.252.104.0/22 45.253.24.0/22 45.253.32.0/24 45.253.60.0/22 45.253.96.0/20 45.253.112.0/21 45.253.132.0/22 45.253.136.0/21 45.253.144.0/20 45.253.160.0/19 45.253.192.0/19 45.253.224.0/20 45.253.240.0/22 45.254.8.0/22 45.254.20.0/22 45.254.48.0/23 45.254.50.0/24 45.254.64.0/20 45.255.152.0/22 47.92.0.0/14 47.96.0.0/12 47.112.0.0/13 47.120.0.0/14 49.4.0.0/18 49.4.64.0/19 49.4.96.0/21 49.4.104.0/22 49.4.108.0/23 49.4.110.0/24 49.4.112.0/21 49.4.120.0/22 49.4.124.0/23 49.4.126.0/24 49.4.128.0/22 49.7.0.0/16 49.52.0.0/14 49.64.0.0/11 49.112.0.0/13 49.120.0.0/14 49.128.223.0/24 49.140.0.0/15 49.208.0.0/14 49.213.62.0/23 49.221.26.0/23 49.221.64.0/19 49.221.128.0/19 49.232.0.0/14 49.239.192.0/18 52.80.0.0/15 52.82.0.0/17 52.82.128.0/23 52.82.131.0/24 52.82.132.0/24 52.82.134.0/23 52.82.136.0/24 52.82.144.0/23 52.82.148.0/22 52.82.160.0/21 52.82.170.0/23 52.82.172.0/22 52.82.176.0/21 52.82.184.0/23 52.82.187.0/24 52.82.188.0/23 52.82.190.0/24 52.82.192.0/18 52.83.0.0/16 52.130.0.0/15 54.222.0.0/19 54.222.32.0/21 54.222.45.0/24 54.222.46.0/23 54.222.48.0/21 54.222.57.0/24 54.222.60.0/22 54.222.64.0/23 54.222.70.0/23 54.222.72.0/21 54.222.80.0/21 54.222.88.0/22 54.222.96.0/23 54.222.100.0/22 54.222.104.0/21 54.222.112.0/22 54.222.116.0/23 54.222.128.0/17 54.223.0.0/16 58.16.0.0/13 58.24.0.0/15 58.30.0.0/15 58.32.0.0/11 58.67.128.0/17 58.68.236.0/24 58.68.247.0/24 58.82.0.0/22 58.83.17.0/24 58.83.128.0/17 58.87.64.0/18 58.99.128.0/17 58.100.0.0/15 58.116.0.0/14 58.128.0.0/13 58.144.0.0/16 58.154.0.0/15 58.192.0.0/11 58.240.0.0/12 59.32.0.0/13 59.40.0.0/15 59.42.0.0/16 59.44.0.0/14 59.48.0.0/12 59.64.0.0/12 59.80.0.0/17 59.81.8.0/23 59.81.40.0/23 59.81.46.0/24 59.81.64.0/23 59.81.82.0/23 59.81.94.0/23 59.81.102.0/23 59.81.104.0/22 59.82.0.0/17 59.82.128.0/19 59.83.192.0/19 59.83.224.0/21 59.83.232.0/22 59.107.0.0/17 59.108.0.0/16 59.110.0.0/16 59.111.0.0/20 59.111.17.0/24 59.111.18.0/23 59.111.21.0/24 59.111.22.0/24 59.111.24.0/21 59.111.32.0/24 59.111.35.0/24 59.111.36.0/24 59.111.40.0/21 59.111.64.0/19 59.111.96.0/21 59.111.104.0/23 59.111.107.0/24 59.111.109.0/24 59.111.111.0/24 59.111.112.0/21 59.111.128.0/20 59.111.144.0/24 59.111.152.0/21 59.111.160.0/21 59.111.168.0/22 59.111.173.0/24 59.111.175.0/24 59.111.178.0/23 59.111.181.0/24 59.111.182.0/23 59.111.190.0/24 59.111.192.0/23 59.111.198.0/23 59.111.203.0/24 59.111.205.0/24 59.111.211.0/24 59.111.214.0/24 59.111.224.0/21 59.111.232.0/23 59.111.236.0/24 59.111.238.0/23 59.111.240.0/22 59.111.244.0/24 59.111.248.0/21 59.151.0.0/17 59.152.36.0/24 59.152.38.0/23 59.153.4.0/23 59.153.32.0/22 59.153.92.0/22 59.153.116.0/22 59.153.164.0/22 59.153.168.0/24 59.172.0.0/14 59.252.0.0/16 60.0.0.0/11 60.63.0.0/16 60.160.0.0/11 60.194.0.0/15 60.200.0.0/24 60.204.0.0/14 60.208.0.0/12 60.232.132.0/23 60.232.244.0/23 60.235.0.0/16 60.245.128.0/17 60.247.0.0/16 60.252.0.0/16 60.253.128.0/17 60.255.0.0/16 61.4.80.0/23 61.10.96.0/20 61.10.128.0/20 61.10.160.0/20 61.10.192.0/18 61.15.0.0/18 61.15.112.0/20 61.15.128.0/17 61.18.0.0/17 61.28.20.0/24 61.28.22.0/24 61.28.49.0/24 61.28.108.0/24 61.28.112.0/20 61.29.128.0/18 61.47.128.0/18 61.48.0.0/13 61.87.192.0/18 61.114.80.0/20 61.128.0.0/10 61.232.0.0/14 61.237.0.0/16 61.240.0.0/16 61.241.0.0/17 61.241.128.0/18 61.241.192.0/19 61.242.0.0/15 62.72.181.0/24 62.234.0.0/16 63.140.0.0/24 63.140.3.0/24 64.188.38.0/23 64.188.40.0/22 64.188.44.0/23 66.102.240.0/21 66.102.248.0/22 66.102.252.0/24 66.102.254.0/23 68.79.0.0/18 69.163.104.0/24 69.163.106.0/24 69.163.123.0/24 69.172.70.0/24 69.230.192.0/18 69.231.128.0/18 69.234.192.0/18 69.235.128.0/18 71.131.192.0/18 71.132.0.0/18 71.136.64.0/18 71.137.0.0/18 72.163.240.0/23 72.163.248.0/22 74.114.51.0/24 74.122.24.0/24 77.73.8.0/24 77.107.118.0/24 81.23.208.0/20 81.68.0.0/14 81.173.18.0/23 81.173.20.0/22 81.173.28.0/24 82.156.0.0/15 84.54.2.0/23 87.76.211.0/24 87.76.221.0/24 87.76.222.0/24 87.254.207.0/24 93.95.117.0/24 93.183.14.0/24 93.183.18.0/24 94.191.0.0/17 101.1.0.0/22 101.2.172.0/22 101.4.0.0/14 101.16.0.0/12 101.33.128.0/17 101.34.0.0/15 101.36.64.0/20 101.36.128.0/17 101.37.0.0/16 101.39.0.0/16 101.40.0.0/16 101.42.0.0/15 101.49.148.0/23 101.49.206.0/23 101.49.208.0/24 101.49.212.0/24 101.50.8.0/21 101.50.56.0/22 101.52.4.0/24 101.52.6.0/24 101.52.112.0/21 101.52.124.0/22 101.52.128.0/20 101.52.204.0/22 101.52.212.0/22 101.52.216.0/21 101.52.232.0/23 101.52.236.0/22 101.52.240.0/20 101.53.100.0/22 101.55.21.0/24 101.64.0.0/13 101.72.0.0/14 101.76.0.0/15 101.78.0.0/22 101.80.0.0/12 101.96.10.0/23 101.96.128.0/23 101.96.130.0/24 101.96.132.0/23 101.96.134.0/24 101.96.142.0/23 101.96.144.0/20 101.96.192.0/18 101.104.144.0/20 101.104.160.0/20 101.106.0.0/19 101.124.0.0/20 101.124.19.0/24 101.124.22.0/24 101.124.62.0/24 101.125.0.0/22 101.125.4.0/23 101.125.6.0/24 101.125.130.0/24 101.125.250.0/23 101.125.252.0/22 101.126.0.0/18 101.126.64.0/19 101.126.96.0/20 101.126.128.0/19 101.126.172.0/22 101.126.176.0/20 101.126.192.0/19 101.126.228.0/22 101.126.232.0/21 101.126.240.0/20 101.128.0.0/22 101.129.0.0/16 101.132.0.0/15 101.197.0.0/16 101.198.0.0/22 101.198.4.0/24 101.198.160.0/19 101.198.192.0/19 101.199.48.0/20 101.199.112.0/24 101.199.128.0/23 101.199.196.0/22 101.199.252.0/22 101.200.0.0/15 101.203.172.0/22 101.204.0.0/14 101.224.0.0/13 101.234.76.0/22 101.236.0.0/18 101.236.64.0/20 101.236.128.0/17 101.237.0.0/19 101.237.33.0/24 101.237.34.0/23 101.237.36.0/22 101.237.40.0/24 101.237.128.0/20 101.240.0.0/14 101.245.0.0/17 101.245.128.0/20 101.245.144.0/22 101.245.152.0/21 101.245.160.0/20 101.246.172.0/22 101.246.176.0/20 101.248.0.0/15 101.251.0.0/22 101.251.80.0/20 101.251.128.0/19 101.251.160.0/20 101.251.176.0/22 101.251.192.0/18 101.252.0.0/15 101.254.0.0/20 101.254.32.0/19 101.254.64.0/18 101.254.128.0/17 103.1.8.0/22 103.1.20.0/22 103.1.168.0/22 103.2.108.0/22 103.2.208.0/22 103.3.96.0/22 103.3.112.0/20 103.3.128.0/22 103.3.136.0/21 103.3.152.0/21 103.4.56.0/22 103.5.52.0/24 103.5.192.0/23 103.5.194.0/24 103.6.220.0/22 103.7.140.0/23 103.8.32.0/22 103.8.52.0/22 103.8.68.0/22 103.8.220.0/22 103.9.8.0/22 103.9.252.0/22 103.10.0.0/22 103.10.84.0/22 103.12.98.0/23 103.12.184.0/22 103.12.232.0/22 103.13.12.0/24 103.13.244.0/22 103.14.78.0/24 103.14.132.0/22 103.14.136.0/22 103.15.4.0/22 103.16.124.0/22 103.17.40.0/22 103.17.228.0/22 103.19.46.0/23 103.19.64.0/22 103.19.232.0/22 103.20.32.0/22 103.20.112.0/22 103.20.128.0/22 103.20.160.0/22 103.20.248.0/22 103.21.116.0/22 103.21.140.0/22 103.21.176.0/22 103.22.188.0/22 103.22.252.0/22 103.23.8.0/22 103.23.160.0/22 103.24.116.0/22 103.24.176.0/22 103.24.228.0/22 103.24.248.0/22 103.25.20.0/22 103.25.24.0/22 103.25.36.0/22 103.25.64.0/23 103.25.156.0/24 103.26.0.0/22 103.26.64.0/22 103.26.76.0/22 103.27.24.0/22 103.27.240.0/22 103.28.8.0/24 103.28.147.0/24 103.28.204.0/22 103.28.212.0/22 103.29.16.0/22 103.29.24.0/23 103.29.136.0/22 103.30.51.0/24 103.30.148.0/24 103.30.151.0/24 103.31.48.0/22 103.31.200.0/22 103.31.236.0/22 103.35.104.0/22 103.35.254.0/24 103.36.28.0/22 103.36.36.0/22 103.36.63.0/24 103.36.96.0/22 103.36.132.0/22 103.36.136.0/22 103.36.165.0/24 103.36.168.0/24 103.36.172.0/22 103.36.192.0/20 103.36.208.0/22 103.36.220.0/22 103.37.4.0/24 103.37.7.0/24 103.37.12.0/22 103.37.18.0/23 103.37.44.0/23 103.37.46.0/24 103.37.72.0/22 103.37.100.0/22 103.37.136.0/21 103.37.144.0/20 103.37.160.0/21 103.37.172.0/22 103.38.40.0/22 103.38.92.0/23 103.38.116.0/22 103.38.224.0/22 103.38.232.0/22 103.38.252.0/23 103.39.64.0/22 103.39.200.0/21 103.39.208.0/20 103.39.224.0/21 103.39.232.0/22 103.40.12.0/22 103.40.173.0/24 103.40.174.0/23 103.40.192.0/22 103.40.232.0/22 103.40.240.0/20 103.41.0.0/22 103.41.116.0/22 103.41.164.0/22 103.41.232.0/23 103.42.76.0/22 103.42.104.0/22 103.43.134.0/23 103.43.184.0/21 103.43.240.0/23 103.44.56.0/22 103.44.80.0/22 103.44.144.0/22 103.44.168.0/22 103.44.236.0/22 103.44.240.0/20 103.45.72.0/21 103.45.128.0/19 103.45.160.0/22 103.45.168.0/23 103.45.172.0/22 103.45.176.0/20 103.45.248.0/22 103.46.12.0/22 103.46.16.0/20 103.46.32.0/19 103.46.64.0/18 103.46.128.0/21 103.46.136.0/22 103.46.168.0/22 103.47.48.0/22 103.47.80.0/22 103.49.12.0/22 103.49.196.0/24 103.49.198.0/23 103.50.91.0/24 103.51.62.0/23 103.52.100.0/22 103.52.104.0/23 103.52.172.0/22 103.52.176.0/22 103.52.196.0/22 103.53.124.0/22 103.53.208.0/24 103.53.211.0/24 103.55.172.0/22 103.55.228.0/22 103.56.60.0/22 103.56.76.0/22 103.56.100.0/22 103.56.104.0/22 103.56.152.0/22 103.57.12.0/22 103.57.136.0/23 103.57.139.0/24 103.59.112.0/22 103.59.124.0/22 103.59.148.0/22 103.59.168.0/23 103.60.32.0/22 103.60.164.0/22 103.60.228.0/23 103.60.236.0/22 103.61.60.0/22 103.61.104.0/23 103.61.153.0/24 103.61.154.0/23 103.61.188.0/22 103.62.88.0/23 103.63.160.0/20 103.63.176.0/21 103.63.244.0/22 103.64.24.0/21 103.64.140.0/22 103.64.144.0/22 103.64.152.0/21 103.64.208.0/21 103.65.8.0/22 103.65.224.0/23 103.66.32.0/22 103.68.128.0/22 103.69.16.0/22 103.69.116.0/22 103.70.8.0/22 103.70.220.0/22 103.71.68.0/22 103.71.200.0/23 103.71.202.0/24 103.71.232.0/22 103.72.113.0/24 103.72.172.0/24 103.73.48.0/24 103.73.116.0/22 103.73.136.0/21 103.73.144.0/22 103.73.204.0/22 103.74.24.0/21 103.74.48.0/22 103.74.80.0/22 103.75.107.0/24 103.75.152.0/22 103.76.60.0/22 103.76.220.0/22 103.76.224.0/22 103.77.28.0/22 103.77.72.0/22 103.77.92.0/22 103.77.132.0/22 103.78.60.0/22 103.78.126.0/23 103.78.228.0/22 103.79.24.0/22 103.79.200.0/22 103.79.228.0/24 103.81.4.0/22 103.81.48.0/22 103.81.72.0/22 103.81.123.0/24 103.81.184.0/23 103.81.200.0/22 103.82.52.0/22 103.82.224.0/22 103.83.44.0/22 103.83.72.0/22 103.83.120.0/22 103.85.84.0/22 103.85.147.0/24 103.85.164.0/22 103.85.168.0/21 103.85.176.0/22 103.87.132.0/22 103.87.180.0/22 103.88.32.0/21 103.88.64.0/22 103.88.96.0/22 103.89.184.0/21 103.89.192.0/19 103.89.224.0/21 103.90.56.0/23 103.90.80.0/22 103.90.92.0/22 103.90.152.0/22 103.90.176.0/22 103.90.188.0/22 103.91.176.0/22 103.91.208.0/22 103.92.88.0/22 103.93.180.0/22 103.93.204.0/22 103.94.12.0/22 103.94.200.0/22 103.95.68.0/22 103.95.252.0/22 103.96.8.0/22 103.96.148.0/22 103.96.214.0/23 103.96.224.0/23 103.97.60.0/24 103.97.62.0/23 103.97.112.0/23 103.97.144.0/22 103.98.15.0/24 103.98.28.0/23 103.98.44.0/22 103.98.125.0/24 103.98.127.0/24 103.98.220.0/22 103.98.248.0/23 103.98.251.0/24 103.98.252.0/22 103.99.178.0/24 103.100.64.0/22 103.101.124.0/23 103.101.180.0/22 103.102.196.0/22 103.102.200.0/22 103.102.213.0/24 103.102.214.0/24 103.103.12.0/24 103.103.36.0/24 103.104.155.0/24 103.104.252.0/22 103.105.0.0/22 103.105.12.0/22 103.105.60.0/22 103.105.180.0/22 103.105.184.0/22 103.105.200.0/23 103.105.202.0/24 103.105.220.0/22 103.106.36.0/22 103.106.252.0/22 103.107.0.0/22 103.107.216.0/21 103.108.244.0/24 103.108.247.0/24 103.109.20.0/22 103.110.132.0/22 103.110.136.0/22 103.111.64.0/24 103.111.172.0/22 103.113.4.0/22 103.114.100.0/22 103.114.158.0/23 103.114.212.0/23 103.114.236.0/22 103.115.92.0/22 103.115.120.0/22 103.115.248.0/22 103.116.76.0/23 103.116.78.0/24 103.116.92.0/22 103.116.120.0/23 103.116.123.0/24 103.116.138.0/23 103.116.206.0/23 103.117.16.0/22 103.117.220.0/22 103.117.248.0/22 103.118.52.0/22 103.118.60.0/22 103.118.173.0/24 103.119.104.0/22 103.119.224.0/22 103.120.72.0/22 103.120.88.0/22 103.120.224.0/22 103.121.52.0/22 103.121.164.0/23 103.121.166.0/24 103.121.250.0/24 103.122.48.0/22 103.123.4.0/23 103.124.182.0/23 103.125.236.0/22 103.126.1.0/24 103.126.101.0/24 103.126.102.0/23 103.126.124.0/22 103.131.138.0/23 103.131.152.0/22 103.131.179.0/24 103.132.22.0/23 103.132.212.0/23 103.133.128.0/23 103.135.160.0/22 103.135.164.0/23 103.135.192.0/23 103.135.195.0/24 103.135.196.0/22 103.137.60.0/24 103.138.156.0/23 103.139.136.0/23 103.139.212.0/23 103.140.14.0/23 103.140.152.0/23 103.141.10.0/23 103.142.82.0/23 103.142.96.0/23 103.142.220.0/23 103.142.234.0/23 103.143.16.0/22 103.143.92.0/23 103.143.230.0/24 103.144.52.0/23 103.144.66.0/23 103.144.70.0/24 103.144.158.0/23 103.145.42.0/23 103.145.90.0/24 103.145.92.0/24 103.146.126.0/23 103.147.124.0/24 103.149.181.0/24 103.149.242.0/24 103.149.244.0/22 103.150.10.0/23 103.150.24.0/23 103.150.37.0/24 103.150.164.0/23 103.150.212.0/24 103.151.4.0/23 103.151.148.0/23 103.151.228.0/23 103.152.28.0/23 103.152.56.0/23 103.152.76.0/23 103.152.150.0/23 103.152.186.0/23 103.152.224.0/24 103.154.30.0/23 103.154.41.0/24 103.154.162.0/23 103.155.76.0/23 103.156.68.0/23 103.156.174.0/23 103.156.186.0/23 103.158.0.0/23 103.159.124.0/23 103.161.220.0/23 103.161.254.0/23 103.162.10.0/23 103.163.46.0/23 103.163.180.0/24 103.164.32.0/23 103.165.110.0/23 103.169.50.0/23 103.169.62.0/23 103.170.4.0/23 103.170.212.0/23 103.172.52.0/24 103.172.191.0/24 103.174.94.0/23 103.175.197.0/24 103.179.78.0/23 103.180.108.0/23 103.181.234.0/24 103.183.66.0/23 103.183.122.0/23 103.183.124.0/23 103.183.218.0/23 103.184.46.0/23 103.186.4.0/23 103.186.108.0/23 103.189.92.0/23 103.189.154.0/23 103.190.118.0/23 103.190.122.0/23 103.191.102.0/24 103.191.242.0/23 103.192.0.0/22 103.192.8.0/21 103.192.16.0/20 103.192.132.0/22 103.192.188.0/22 103.192.208.0/21 103.192.252.0/22 103.193.188.0/22 103.193.192.0/22 103.196.64.0/24 103.196.88.0/21 103.197.0.0/22 103.197.228.0/22 103.198.60.0/22 103.198.124.0/22 103.200.136.0/21 103.200.144.0/21 103.200.220.0/22 103.200.224.0/24 103.201.192.0/24 103.202.0.0/19 103.202.32.0/20 103.202.92.0/22 103.202.96.0/20 103.202.112.0/22 103.202.120.0/21 103.202.128.0/20 103.202.144.0/22 103.203.56.0/22 103.203.96.0/22 103.203.140.0/22 103.203.216.0/22 103.204.72.0/22 103.205.4.0/22 103.205.188.0/22 103.205.192.0/22 103.205.252.0/22 103.207.228.0/22 103.208.12.0/22 103.208.48.0/22 103.209.112.0/22 103.209.136.0/22 103.210.160.0/22 103.210.170.0/23 103.211.44.0/22 103.211.220.0/22 103.212.1.0/24 103.212.2.0/24 103.212.4.0/22 103.212.12.0/22 103.212.48.0/23 103.212.109.0/24 103.213.49.0/24 103.213.50.0/23 103.213.52.0/22 103.213.60.0/22 103.213.64.0/19 103.213.96.0/22 103.213.132.0/22 103.213.144.0/23 103.213.148.0/22 103.213.160.0/19 103.214.48.0/22 103.215.36.0/22 103.215.44.0/24 103.215.140.0/22 103.216.136.0/22 103.216.152.0/22 103.216.252.0/24 103.217.184.0/21 103.217.192.0/20 103.218.216.0/22 103.219.28.0/22 103.219.32.0/21 103.219.85.0/24 103.219.86.0/23 103.219.92.0/24 103.219.100.0/23 103.219.176.0/22 103.219.184.0/22 103.220.52.0/22 103.220.56.0/22 103.220.64.0/22 103.220.92.0/22 103.220.124.0/22 103.220.128.0/19 103.220.160.0/21 103.220.240.0/22 103.221.140.0/22 103.222.33.0/24 103.222.40.0/22 103.222.176.0/21 103.222.184.0/22 103.222.216.0/22 103.223.132.0/22 103.223.144.0/20 103.224.232.0/22 103.226.57.0/24 103.227.76.0/22 103.227.80.0/22 103.227.120.0/22 103.227.136.0/22 103.228.136.0/22 103.228.160.0/22 103.228.204.0/23 103.228.208.0/22 103.228.228.0/22 103.229.148.0/22 103.229.172.0/22 103.229.212.0/22 103.229.216.0/21 103.229.236.0/22 103.230.110.0/23 103.230.200.0/22 103.230.212.0/22 103.230.236.0/22 103.231.16.0/24 103.231.64.0/21 103.232.144.0/22 103.232.166.0/23 103.233.4.0/22 103.233.52.0/22 103.233.128.0/22 103.233.162.0/23 103.234.20.0/22 103.234.56.0/22 103.234.128.0/23 103.234.131.0/24 103.235.102.0/23 103.235.136.0/22 103.235.144.0/24 103.235.220.0/22 103.235.224.0/20 103.235.244.0/22 103.235.248.0/21 103.236.52.0/22 103.236.56.0/21 103.236.64.0/19 103.236.96.0/23 103.236.98.0/24 103.236.120.0/22 103.236.244.0/22 103.236.248.0/21 103.237.8.0/22 103.237.28.0/23 103.237.176.0/20 103.237.192.0/19 103.237.224.0/20 103.237.240.0/21 103.237.248.0/23 103.238.0.0/21 103.238.16.0/22 103.238.48.0/24 103.238.52.0/22 103.238.96.0/23 103.238.98.0/24 103.238.132.0/22 103.238.144.0/22 103.238.160.0/22 103.238.184.0/24 103.238.186.0/23 103.238.188.0/22 103.238.204.0/22 103.239.68.0/22 103.239.152.0/22 103.239.184.0/23 103.239.186.0/24 103.239.192.0/22 103.239.204.0/22 103.239.224.0/22 103.239.244.0/22 103.240.16.0/22 103.240.36.0/22 103.240.84.0/22 103.240.124.0/22 103.240.244.0/22 103.241.95.0/24 103.242.128.0/24 103.242.130.0/24 103.242.168.0/23 103.242.172.0/22 103.242.212.0/22 103.243.136.0/22 103.243.252.0/22 103.244.59.0/24 103.244.64.0/22 103.244.80.0/22 103.244.232.0/22 103.245.23.0/24 103.245.128.0/22 103.246.152.0/22 103.247.168.0/22 103.247.176.0/22 103.247.191.0/24 103.248.152.0/22 103.248.224.0/22 103.249.52.0/22 103.249.136.0/24 103.249.244.0/22 103.249.252.0/22 103.250.32.0/22 103.250.104.0/22 103.250.192.0/22 103.250.216.0/22 103.250.248.0/21 103.251.32.0/22 103.251.84.0/22 103.251.96.0/22 103.251.124.0/22 103.251.160.0/22 103.251.204.0/24 103.251.207.0/24 103.251.240.0/22 103.252.36.0/24 103.252.172.0/22 103.252.248.0/22 103.253.60.0/22 103.253.204.0/22 103.254.68.0/22 103.254.76.0/22 103.254.112.0/22 103.254.188.0/22 103.254.196.0/24 103.255.68.0/22 103.255.92.0/22 103.255.140.0/22 103.255.200.0/22 104.192.94.0/23 104.192.108.0/23 104.192.110.0/24 106.0.4.0/22 106.2.37.0/24 106.2.40.0/23 106.2.42.0/24 106.2.45.0/24 106.2.46.0/23 106.2.48.0/23 106.2.51.0/24 106.2.52.0/22 106.2.56.0/22 106.2.62.0/23 106.2.64.0/20 106.2.81.0/24 106.2.82.0/23 106.2.89.0/24 106.2.92.0/22 106.2.96.0/24 106.2.100.0/22 106.2.104.0/21 106.2.112.0/21 106.2.124.0/22 106.2.128.0/19 106.2.224.0/24 106.2.232.0/21 106.3.0.0/19 106.3.32.0/20 106.3.80.0/22 106.3.88.0/21 106.3.128.0/20 106.3.144.0/22 106.3.148.0/23 106.3.151.0/24 106.3.152.0/21 106.3.192.0/20 106.3.208.0/21 106.3.224.0/21 106.4.0.0/14 106.8.0.0/15 106.11.0.0/16 106.12.0.0/17 106.12.128.0/18 106.12.192.0/19 106.12.224.0/20 106.12.240.0/21 106.12.250.0/23 106.12.252.0/23 106.12.254.0/24 106.13.0.0/16 106.14.0.0/15 106.16.0.0/14 106.32.0.0/12 106.48.16.0/21 106.52.0.0/14 106.56.0.0/14 106.60.0.0/15 106.62.0.0/16 106.63.0.0/17 106.74.0.0/16 106.75.0.0/17 106.75.128.0/18 106.75.208.0/20 106.75.224.0/19 106.80.0.0/13 106.88.0.0/14 106.92.0.0/16 106.108.0.0/14 106.112.0.0/12 106.224.0.0/14 106.228.0.0/15 106.230.0.0/16 107.151.212.0/24 107.190.229.0/24 109.244.0.0/16 110.6.0.0/15 110.16.0.0/14 110.40.0.0/24 110.40.13.0/24 110.40.14.0/23 110.40.16.0/24 110.40.128.0/17 110.41.0.0/17 110.41.128.0/18 110.41.192.0/20 110.41.208.0/23 110.41.211.0/24 110.41.212.0/22 110.41.216.0/21 110.41.224.0/19 110.42.0.0/15 110.51.0.0/16 110.52.0.0/15 110.56.0.0/16 110.64.0.0/15 110.72.0.0/15 110.75.0.0/16 110.76.0.0/18 110.76.156.0/22 110.76.184.0/22 110.76.192.0/18 110.77.0.0/17 110.79.78.0/24 110.80.0.0/13 110.88.0.0/14 110.94.0.0/17 110.96.0.0/16 110.100.0.0/16 110.113.0.0/16 110.114.0.0/16 110.116.0.0/16 110.120.0.0/16 110.152.0.0/14 110.156.0.0/15 110.166.0.0/15 110.173.8.0/21 110.173.16.0/20 110.173.32.0/20 110.173.192.0/19 110.176.0.0/12 110.199.0.0/16 110.203.0.0/23 110.211.0.0/16 110.218.0.0/15 110.228.0.0/14 110.236.0.0/15 110.240.0.0/12 111.0.0.0/10 111.72.0.0/13 111.85.0.0/16 111.112.0.0/14 111.116.0.0/15 111.118.200.0/21 111.120.0.0/14 111.124.0.0/16 111.126.0.0/15 111.132.0.0/16 111.148.0.0/16 111.149.0.0/24 111.160.0.0/13 111.170.0.0/16 111.172.0.0/14 111.176.0.0/13 111.186.0.0/15 111.192.0.0/12 111.208.121.0/24 111.208.254.0/24 111.210.0.0/20 111.210.16.0/24 111.211.192.0/18 111.212.0.0/14 111.221.28.0/24 111.221.128.0/17 111.222.0.0/16 111.223.8.0/21 111.224.0.0/14 111.228.0.0/18 111.229.0.0/16 111.230.0.0/15 111.235.156.0/22 111.235.160.0/22 111.235.164.0/23 111.235.168.0/22 111.235.172.0/23 111.235.174.0/24 111.235.178.0/23 111.235.180.0/23 111.235.182.0/24 112.0.0.0/10 112.64.0.0/14 112.74.0.0/16 112.80.0.0/12 112.96.0.0/13 112.109.128.0/17 112.111.0.0/16 112.112.0.0/14 112.116.0.0/15 112.122.0.0/15 112.124.0.0/14 112.132.0.0/16 112.192.0.0/14 112.196.208.0/24 112.224.0.0/11 113.0.0.0/13 113.8.0.0/15 113.12.0.0/14 113.16.0.0/15 113.18.0.0/16 113.21.232.0/21 113.24.0.0/14 113.31.96.0/19 113.31.144.0/20 113.31.160.0/19 113.44.0.0/16 113.45.0.0/18 113.45.64.0/19 113.45.96.0/22 113.45.102.0/23 113.45.104.0/21 113.45.112.0/22 113.45.120.0/22 113.45.128.0/17 113.46.0.0/16 113.47.0.0/18 113.47.64.0/19 113.47.96.0/21 113.47.104.0/22 113.47.110.0/24 113.47.112.0/20 113.47.128.0/18 113.47.200.0/21 113.47.216.0/21 113.47.232.0/21 113.47.240.0/20 113.48.48.0/20 113.48.127.0/24 113.48.224.0/20 113.49.0.0/19 113.50.0.0/20 113.50.32.0/24 113.50.48.0/20 113.50.64.0/20 113.54.0.0/15 113.56.0.0/15 113.58.0.0/16 113.59.0.0/17 113.59.224.0/22 113.62.0.0/15 113.64.0.0/10 113.128.0.0/15 113.130.96.0/20 113.130.112.0/21 113.132.0.0/14 113.136.0.0/13 113.164.25.0/24 113.194.0.0/15 113.197.101.0/24 113.197.103.0/24 113.197.104.0/23 113.200.0.0/15 113.204.0.0/14 113.208.112.0/21 113.209.128.0/17 113.213.0.0/18 113.213.64.0/19 113.213.96.0/20 113.214.0.0/15 113.218.0.0/15 113.220.0.0/14 113.224.0.0/12 113.240.0.0/13 113.248.0.0/14 114.28.68.0/22 114.28.72.0/21 114.28.128.0/18 114.28.229.0/24 114.28.248.0/21 114.55.0.0/16 114.60.0.0/14 114.64.0.0/16 114.66.0.0/18 114.66.72.0/21 114.66.80.0/23 114.66.236.0/22 114.66.240.0/20 114.67.16.0/21 114.67.48.0/24 114.67.57.0/24 114.67.58.0/24 114.67.60.0/23 114.67.62.0/24 114.67.64.0/18 114.67.131.0/24 114.67.136.0/24 114.67.150.0/24 114.67.152.0/22 114.67.156.0/24 114.67.159.0/24 114.67.160.0/19 114.67.192.0/18 114.80.0.0/12 114.96.0.0/13 114.104.0.0/14 114.110.0.0/20 114.110.96.0/22 114.111.0.0/23 114.111.16.0/20 114.111.180.0/22 114.111.184.0/22 114.111.188.0/23 114.111.191.0/24 114.112.4.0/23 114.112.24.0/21 114.112.32.0/19 114.112.64.0/24 114.112.66.0/24 114.112.70.0/24 114.112.72.0/21 114.112.81.0/24 114.112.82.0/24 114.112.85.0/24 114.112.86.0/24 114.112.88.0/24 114.112.91.0/24 114.112.94.0/23 114.112.96.0/21 114.112.104.0/22 114.112.136.0/21 114.112.144.0/21 114.112.200.0/21 114.112.208.0/20 114.113.63.0/24 114.113.64.0/20 114.113.80.0/22 114.113.84.0/24 114.113.88.0/21 114.113.96.0/19 114.113.144.0/20 114.113.196.0/22 114.113.200.0/24 114.113.203.0/24 114.113.208.0/21 114.113.221.0/24 114.113.223.0/24 114.113.224.0/20 114.114.112.0/21 114.115.0.0/16 114.116.0.0/15 114.118.0.0/18 114.118.64.0/19 114.118.96.0/21 114.119.10.0/24 114.119.32.0/24 114.119.117.0/24 114.119.119.0/24 114.132.0.0/16 114.135.0.0/16 114.138.0.0/15 114.141.128.0/18 114.142.142.0/23 114.196.0.0/15 114.212.0.0/14 114.216.0.0/13 114.224.0.0/11 115.24.0.0/14 115.28.0.0/15 115.31.64.0/22 115.32.0.0/19 115.32.32.0/20 115.32.52.0/22 115.32.56.0/21 115.32.64.0/19 115.32.104.0/21 115.32.120.0/21 115.32.128.0/19 115.33.0.0/19 115.33.128.0/20 115.44.0.0/15 115.46.0.0/16 115.48.0.0/12 115.84.0.0/18 115.85.192.0/18 115.102.0.0/16 115.120.0.0/17 115.120.128.0/20 115.120.144.0/23 115.120.148.0/22 115.120.152.0/21 115.120.176.0/20 115.120.192.0/18 115.124.16.0/20 115.148.0.0/14 115.152.0.0/13 115.168.0.0/14 115.172.32.0/21 115.172.46.0/23 115.173.0.0/19 115.175.0.0/18 115.175.64.0/19 115.175.96.0/21 115.175.104.0/22 115.175.108.0/23 115.175.110.0/24 115.175.112.0/20 115.175.128.0/17 115.180.0.0/17 115.182.0.0/15 115.190.0.0/16 115.191.0.0/18 115.191.64.0/20 115.192.0.0/11 115.224.0.0/12 116.1.0.0/16 116.2.0.0/15 116.4.0.0/14 116.8.0.0/14 116.13.0.0/16 116.16.0.0/12 116.52.0.0/14 116.56.0.0/15 116.58.208.0/24 116.62.0.0/15 116.66.36.0/24 116.66.48.0/23 116.66.53.0/24 116.66.54.0/23 116.66.98.0/24 116.66.123.0/24 116.68.136.0/21 116.68.176.0/21 116.70.64.0/18 116.76.0.0/15 116.78.0.0/16 116.85.1.0/24 116.85.2.0/23 116.85.13.0/24 116.85.14.0/24 116.85.16.0/23 116.85.18.0/24 116.85.64.0/20 116.85.240.0/20 116.90.80.0/20 116.90.192.0/20 116.95.0.0/16 116.112.0.0/14 116.116.0.0/15 116.128.128.0/18 116.128.200.0/21 116.128.208.0/20 116.128.224.0/19 116.129.0.0/16 116.130.0.0/15 116.132.0.0/15 116.135.0.0/16 116.136.0.0/13 116.144.0.0/14 116.148.0.0/15 116.153.0.0/16 116.154.0.0/15 116.162.0.0/16 116.163.0.0/18 116.165.0.0/16 116.167.0.0/16 116.168.0.0/14 116.172.64.0/18 116.172.128.0/17 116.174.0.0/15 116.176.0.0/14 116.181.0.0/16 116.182.0.0/16 116.192.0.0/16 116.193.16.0/23 116.193.18.0/24 116.196.0.0/21 116.196.8.0/22 116.196.12.0/23 116.196.64.0/18 116.196.129.0/24 116.196.130.0/23 116.196.132.0/22 116.196.136.0/21 116.196.144.0/21 116.196.152.0/22 116.196.156.0/23 116.196.176.0/21 116.196.192.0/21 116.196.218.0/23 116.196.220.0/22 116.197.160.0/21 116.198.0.0/18 116.198.64.0/21 116.198.72.0/22 116.198.96.0/19 116.198.144.0/20 116.198.160.0/20 116.198.176.0/21 116.198.192.0/18 116.199.0.0/17 116.199.156.0/22 116.204.0.0/17 116.205.0.0/16 116.207.0.0/16 116.208.0.0/14 116.213.45.0/24 116.214.32.0/19 116.214.128.0/22 116.214.132.0/23 116.214.134.0/24 116.224.0.0/12 116.242.0.0/16 116.246.0.0/15 116.248.0.0/15 116.252.0.0/15 116.254.104.0/21 116.255.128.0/17 117.8.0.0/13 117.21.0.0/16 117.22.0.0/15 117.24.0.0/13 117.32.0.0/13 117.40.0.0/14 117.44.0.0/15 117.48.112.0/20 117.48.128.0/19 117.48.160.0/20 117.48.192.0/24 117.48.195.0/24 117.48.196.0/22 117.48.200.0/21 117.48.216.0/23 117.48.218.0/24 117.48.220.0/22 117.48.224.0/21 117.48.232.0/23 117.48.234.0/24 117.48.236.0/22 117.50.0.0/16 117.51.0.0/17 117.51.128.0/19 117.51.160.0/23 117.51.168.0/21 117.57.0.0/16 117.59.0.0/16 117.60.0.0/14 117.64.0.0/13 117.72.0.0/23 117.72.8.0/21 117.72.16.0/23 117.72.24.0/21 117.72.32.0/19 117.72.64.0/18 117.72.144.0/20 117.72.160.0/19 117.72.192.0/19 117.72.240.0/21 117.72.255.0/24 117.73.0.0/20 117.73.16.0/21 117.73.252.0/22 117.74.64.0/20 117.74.128.0/21 117.74.136.0/22 117.78.0.0/18 117.79.80.0/20 117.79.128.0/21 117.79.144.0/20 117.79.224.0/20 117.79.241.0/24 117.79.242.0/24 117.80.0.0/12 117.106.0.0/15 117.112.0.0/13 117.121.132.0/22 117.122.192.0/18 117.124.98.0/24 117.124.231.0/24 117.124.232.0/22 117.124.236.0/23 117.124.240.0/22 117.124.244.0/24 117.124.246.0/24 117.126.0.0/16 117.128.0.0/10 118.24.0.0/15 118.26.32.0/22 118.26.48.0/22 118.26.64.0/23 118.26.68.0/23 118.26.72.0/22 118.26.96.0/21 118.26.116.0/22 118.26.120.0/24 118.26.126.0/23 118.26.128.0/22 118.26.136.0/22 118.26.160.0/20 118.26.192.0/24 118.26.194.0/23 118.26.208.0/20 118.26.240.0/20 118.31.0.0/16 118.64.0.0/21 118.64.248.0/21 118.65.0.0/21 118.66.112.0/23 118.66.184.0/24 118.66.224.0/20 118.66.248.0/21 118.72.0.0/13 118.80.0.0/15 118.84.0.0/15 118.88.32.0/19 118.88.64.0/18 118.88.128.0/17 118.89.0.0/16 118.102.16.0/20 118.103.164.0/22 118.112.0.0/13 118.120.0.0/14 118.124.0.0/15 118.126.32.0/19 118.126.64.0/18 118.126.140.0/23 118.126.142.0/24 118.132.0.0/14 118.144.0.0/16 118.145.0.0/19 118.145.32.0/20 118.145.64.0/19 118.145.96.0/20 118.145.112.0/21 118.145.128.0/19 118.145.160.0/21 118.145.176.0/20 118.145.192.0/18 118.178.0.0/16 118.180.0.0/14 118.184.128.0/17 118.186.0.0/19 118.186.32.0/24 118.186.34.0/23 118.186.36.0/22 118.186.56.0/21 118.186.64.0/21 118.186.80.0/20 118.186.96.0/20 118.186.112.0/21 118.186.160.0/19 118.186.208.0/21 118.186.240.0/21 118.187.0.0/18 118.187.64.0/19 118.188.18.0/23 118.188.20.0/22 118.188.24.0/23 118.190.0.0/16 118.191.0.0/21 118.191.8.0/22 118.191.12.0/24 118.191.128.0/22 118.191.152.0/24 118.191.192.0/23 118.191.208.0/24 118.191.216.0/24 118.191.223.0/24 118.191.224.0/24 118.191.240.0/23 118.192.20.0/24 118.192.64.0/23 118.192.67.0/24 118.192.68.0/23 118.192.70.0/24 118.193.96.0/19 118.194.32.0/19 118.194.134.0/23 118.194.240.0/21 118.195.128.0/17 118.196.0.0/16 118.197.0.0/18 118.197.64.0/19 118.202.0.0/15 118.204.0.0/17 118.212.0.0/15 118.215.192.0/19 118.228.0.0/15 118.230.0.0/16 118.239.0.0/16 118.242.0.0/22 118.242.16.0/22 118.242.24.0/22 118.242.32.0/22 118.242.40.0/24 118.244.0.0/21 118.244.128.0/17 118.247.0.0/16 118.248.0.0/13 119.0.0.0/15 119.2.128.0/17 119.3.0.0/16 119.4.0.0/14 119.15.136.0/23 119.15.140.0/23 119.18.208.0/21 119.18.224.0/24 119.18.226.0/24 119.18.234.0/24 119.18.237.0/24 119.23.0.0/16 119.27.160.0/19 119.28.28.0/24 119.29.0.0/16 119.31.192.0/19 119.32.0.0/15 119.34.0.0/16 119.36.0.0/16 119.37.0.0/23 119.37.2.0/24 119.37.12.0/24 119.37.192.0/21 119.38.0.0/21 119.38.192.0/19 119.39.0.0/16 119.40.41.0/24 119.40.64.0/20 119.40.128.0/17 119.41.0.0/16 119.42.0.0/19 119.42.136.0/21 119.42.224.0/19 119.44.0.0/22 119.44.4.0/23 119.44.7.0/24 119.44.8.0/22 119.44.12.0/24 119.44.16.0/22 119.44.20.0/23 119.44.23.0/24 119.44.24.0/22 119.44.28.0/23 119.44.45.0/24 119.44.46.0/24 119.44.50.0/23 119.44.52.0/24 119.44.56.0/21 119.44.192.0/24 119.44.200.0/24 119.44.205.0/24 119.44.208.0/22 119.44.212.0/23 119.44.214.0/24 119.44.217.0/24 119.44.218.0/23 119.44.220.0/22 119.44.224.0/20 119.44.253.0/24 119.44.254.0/23 119.45.0.0/16 119.48.0.0/13 119.57.0.0/21 119.57.8.0/23 119.57.12.0/24 119.57.16.0/21 119.57.25.0/24 119.57.28.0/22 119.57.32.0/21 119.57.44.0/22 119.57.51.0/24 119.57.52.0/22 119.57.56.0/21 119.57.64.0/19 119.57.96.0/22 119.57.100.0/23 119.57.102.0/24 119.57.112.0/20 119.57.132.0/22 119.57.136.0/21 119.57.160.0/20 119.57.190.0/23 119.57.246.0/23 119.57.248.0/21 119.60.0.0/15 119.62.0.0/16 119.75.208.0/20 119.78.0.0/15 119.80.0.0/21 119.80.8.0/22 119.80.160.0/23 119.80.162.0/24 119.80.192.0/21 119.80.200.0/22 119.80.240.0/22 119.80.248.0/21 119.84.0.0/14 119.88.128.0/17 119.90.32.0/19 119.91.0.0/16 119.96.0.0/13 119.108.0.0/15 119.112.0.0/12 119.128.0.0/12 119.144.0.0/14 119.148.160.0/20 119.161.120.0/22 119.161.124.0/24 119.161.136.0/23 119.161.138.0/24 119.161.140.0/22 119.161.154.0/23 119.161.156.0/22 119.162.0.0/15 119.164.0.0/14 119.176.0.0/12 119.233.128.0/17 119.235.128.0/24 119.235.130.0/24 119.235.136.0/24 119.235.138.0/24 119.235.143.0/24 119.235.144.0/23 119.235.151.0/24 119.235.160.0/23 119.235.167.0/24 119.235.185.0/24 119.248.0.0/14 119.253.0.0/20 119.253.32.0/19 119.253.64.0/19 119.254.0.0/16 119.255.128.0/17 120.0.0.0/12 120.24.0.0/14 120.31.66.0/23 120.31.68.0/22 120.31.128.0/20 120.32.0.0/12 120.48.0.0/16 120.49.0.0/17 120.49.192.0/18 120.52.0.0/15 120.55.0.0/16 120.65.0.0/16 120.68.0.0/14 120.72.32.0/19 120.72.160.0/24 120.72.162.0/23 120.72.164.0/22 120.72.168.0/24 120.72.170.0/23 120.72.172.0/23 120.72.174.0/24 120.72.177.0/24 120.72.178.0/24 120.72.180.0/24 120.72.182.0/23 120.72.184.0/22 120.72.188.0/23 120.72.190.0/24 120.76.0.0/14 120.80.0.0/13 120.92.0.0/17 120.92.128.0/18 120.92.192.0/19 120.92.224.0/20 120.94.0.0/15 120.131.0.0/19 120.131.88.0/21 120.131.124.0/22 120.132.0.0/18 120.132.64.0/19 120.132.96.0/20 120.132.112.0/24 120.132.117.0/24 120.132.118.0/23 120.132.120.0/21 120.132.128.0/17 120.133.0.0/16 120.134.0.0/15 120.136.16.0/21 120.136.128.0/21 120.136.140.0/22 120.136.144.0/20 120.136.160.0/20 120.136.176.0/21 120.136.184.0/22 120.136.188.0/23 120.136.190.0/24 120.192.0.0/10 121.0.16.0/20 121.4.0.0/15 121.8.0.0/13 121.16.0.0/12 121.32.0.0/14 121.36.0.0/15 121.39.255.0/24 121.40.0.0/14 121.46.0.0/20 121.46.20.0/22 121.46.128.0/21 121.46.141.0/24 121.46.192.0/21 121.46.200.0/22 121.46.224.0/20 121.46.244.0/22 121.46.248.0/22 121.46.252.0/23 121.46.254.0/24 121.48.0.0/15 121.51.0.0/16 121.52.160.0/19 121.52.208.0/20 121.52.224.0/19 121.55.0.0/18 121.56.0.0/15 121.58.0.0/17 121.58.156.0/22 121.59.4.0/22 121.59.8.0/21 121.60.0.0/14 121.69.0.0/16 121.70.0.0/17 121.76.0.0/15 121.79.128.0/20 121.79.144.0/22 121.79.148.0/24 121.89.0.0/16 121.91.104.0/21 121.192.0.0/13 121.201.0.0/17 121.204.0.0/14 121.224.0.0/12 121.248.0.0/14 121.255.0.0/16 122.0.64.0/18 122.4.0.0/14 122.9.0.0/16 122.10.133.0/24 122.10.136.0/23 122.10.160.0/24 122.11.32.0/19 122.13.0.0/16 122.14.44.0/22 122.14.62.0/24 122.14.192.0/18 122.48.0.0/16 122.49.8.0/21 122.49.16.0/20 122.49.32.0/20 122.51.0.0/16 122.70.0.0/15 122.72.16.0/24 122.72.38.0/24 122.84.0.0/16 122.90.0.0/16 122.91.0.0/17 122.94.0.0/16 122.96.0.0/15 122.102.64.0/20 122.112.0.0/22 122.112.32.0/19 122.112.132.0/22 122.112.136.0/21 122.112.144.0/20 122.112.160.0/19 122.112.192.0/18 122.114.0.0/16 122.115.0.0/20 122.115.32.0/19 122.115.224.0/20 122.119.4.0/23 122.119.12.0/22 122.119.20.0/22 122.119.24.0/23 122.119.26.0/24 122.119.32.0/24 122.119.50.0/24 122.119.73.0/24 122.119.96.0/23 122.119.110.0/23 122.119.112.0/23 122.119.114.0/24 122.119.120.0/24 122.119.122.0/24 122.119.124.0/23 122.119.129.0/24 122.119.147.0/24 122.119.160.0/23 122.119.172.0/24 122.119.180.0/22 122.119.190.0/24 122.119.224.0/22 122.119.232.0/23 122.119.236.0/24 122.119.253.0/24 122.136.0.0/13 122.144.128.0/20 122.144.144.0/23 122.144.147.0/24 122.144.152.0/23 122.144.156.0/23 122.144.161.0/24 122.144.164.0/22 122.144.168.0/22 122.144.172.0/23 122.144.178.0/23 122.144.180.0/22 122.144.192.0/21 122.144.200.0/22 122.144.206.0/23 122.144.208.0/23 122.144.211.0/24 122.144.212.0/22 122.144.216.0/21 122.144.232.0/22 122.144.236.0/23 122.144.240.0/24 122.144.248.0/23 122.152.192.0/18 122.156.0.0/14 122.188.0.0/14 122.192.0.0/14 122.200.40.0/21 122.200.68.0/23 122.200.78.0/24 122.200.82.0/24 122.200.84.0/23 122.200.86.0/24 122.200.92.0/23 122.200.104.0/22 122.200.120.0/22 122.200.124.0/24 122.204.0.0/14 122.224.0.0/12 122.240.0.0/13 122.248.48.0/21 122.248.56.0/22 123.4.0.0/14 123.8.0.0/13 123.49.192.0/23 123.49.194.0/24 123.49.231.0/24 123.49.240.0/24 123.49.242.0/23 123.52.0.0/14 123.56.0.0/15 123.58.0.0/19 123.58.32.0/23 123.58.34.0/24 123.58.36.0/24 123.58.38.0/23 123.58.40.0/21 123.58.48.0/24 123.58.50.0/24 123.58.53.0/24 123.58.54.0/23 123.58.56.0/23 123.58.59.0/24 123.58.60.0/22 123.58.64.0/24 123.58.96.0/19 123.58.160.0/20 123.58.180.0/24 123.58.182.0/23 123.58.184.0/24 123.58.186.0/23 123.58.188.0/22 123.58.224.0/19 123.59.0.0/16 123.60.0.0/16 123.64.0.0/15 123.66.0.0/16 123.77.0.0/16 123.88.0.0/15 123.90.0.0/16 123.96.0.0/15 123.99.192.0/18 123.101.0.0/16 123.103.0.0/20 123.103.16.0/21 123.103.24.0/22 123.103.28.0/23 123.103.30.0/24 123.103.40.0/21 123.103.48.0/20 123.103.64.0/18 123.108.88.0/24 123.108.208.0/22 123.108.212.0/23 123.108.220.0/22 123.112.0.0/12 123.128.0.0/13 123.138.0.0/15 123.144.0.0/12 123.160.0.0/12 123.177.0.0/16 123.178.0.0/15 123.180.0.0/14 123.184.0.0/13 123.196.112.0/20 123.206.0.0/15 123.232.0.0/14 123.242.192.0/21 123.244.0.0/14 123.249.0.0/17 123.253.226.0/24 123.254.96.0/21 124.14.1.0/24 124.14.2.0/23 124.14.5.0/24 124.14.7.0/24 124.14.8.0/21 124.14.16.0/21 124.14.64.0/18 124.14.224.0/19 124.16.0.0/15 124.22.0.0/15 124.28.192.0/18 124.29.0.0/17 124.31.0.0/16 124.40.128.0/18 124.42.0.0/17 124.47.0.0/18 124.64.0.0/15 124.66.0.0/17 124.67.0.0/16 124.70.0.0/16 124.71.0.0/17 124.71.128.0/18 124.71.192.0/19 124.71.224.0/20 124.71.250.0/24 124.72.0.0/13 124.88.0.0/13 124.112.0.0/13 124.126.0.0/15 124.128.0.0/13 124.151.0.0/16 124.152.0.0/16 124.160.0.0/13 124.172.0.0/15 124.174.0.0/16 124.192.0.0/15 124.196.12.0/23 124.196.25.0/24 124.196.26.0/23 124.196.28.0/24 124.196.30.0/23 124.196.32.0/23 124.196.40.0/22 124.196.48.0/22 124.196.52.0/23 124.196.55.0/24 124.196.56.0/23 124.196.58.0/24 124.196.66.0/24 124.196.72.0/24 124.196.77.0/24 124.196.80.0/22 124.196.84.0/23 124.200.0.0/16 124.201.0.0/17 124.202.0.0/16 124.203.176.0/20 124.204.0.0/14 124.220.0.0/14 124.224.0.0/12 124.240.0.0/17 124.240.128.0/18 124.243.192.0/18 124.248.64.0/18 124.250.0.0/15 124.254.0.0/18 125.32.0.0/12 125.58.128.0/17 125.62.0.0/18 125.64.0.0/11 125.98.122.0/23 125.98.128.0/17 125.104.0.0/13 125.112.0.0/12 125.171.0.0/16 125.208.0.0/19 125.208.32.0/20 125.208.49.0/24 125.210.0.0/15 125.213.32.0/20 125.214.96.0/19 125.215.36.0/23 125.215.40.0/24 125.215.44.0/23 125.215.48.0/24 125.215.52.0/23 125.215.54.0/24 125.216.0.0/13 125.254.128.0/19 125.254.168.0/21 125.254.176.0/21 128.107.24.0/23 128.108.0.0/16 128.254.240.0/23 128.254.243.0/24 129.28.0.0/16 129.204.0.0/16 129.211.0.0/16 129.227.29.0/24 129.227.30.0/24 129.227.146.0/23 129.227.157.0/24 129.227.158.0/23 129.227.168.0/21 129.227.192.0/23 129.227.195.0/24 130.36.146.0/23 131.143.63.0/24 131.228.96.0/23 132.232.0.0/16 132.237.134.0/24 133.226.32.0/20 134.175.0.0/16 138.252.72.0/23 138.252.97.0/24 139.5.60.0/22 139.9.0.0/18 139.9.64.0/19 139.9.96.0/23 139.9.98.0/24 139.9.100.0/22 139.9.104.0/21 139.9.112.0/20 139.9.128.0/18 139.9.192.0/19 139.9.224.0/20 139.9.240.0/21 139.9.248.0/22 139.129.0.0/16 139.148.0.0/16 139.155.0.0/16 139.159.0.0/19 139.159.32.0/22 139.159.96.0/20 139.159.112.0/22 139.159.132.0/22 139.159.136.0/21 139.159.144.0/20 139.159.160.0/19 139.159.192.0/18 139.170.0.0/16 139.186.0.0/16 139.189.0.0/16 139.196.0.0/16 139.198.0.0/15 139.200.0.0/13 139.208.0.0/13 139.217.0.0/16 139.219.0.0/16 139.220.192.0/22 139.220.240.0/22 139.224.0.0/16 139.226.0.0/15 140.75.0.0/16 140.143.0.0/16 140.179.0.0/16 140.205.0.0/16 140.206.0.0/15 140.210.0.0/24 140.210.4.0/22 140.210.8.0/21 140.210.16.0/20 140.210.32.0/22 140.210.65.0/24 140.210.67.0/24 140.210.69.0/24 140.210.70.0/24 140.210.72.0/23 140.210.75.0/24 140.210.77.0/24 140.210.78.0/23 140.210.80.0/24 140.210.83.0/24 140.210.84.0/24 140.210.87.0/24 140.210.88.0/22 140.210.92.0/24 140.210.94.0/24 140.210.96.0/19 140.210.128.0/19 140.210.192.0/19 140.210.224.0/20 140.224.0.0/16 140.237.0.0/16 140.240.0.0/16 140.243.0.0/16 140.246.0.0/16 140.249.0.0/16 140.250.0.0/16 140.255.0.0/16 143.20.246.0/24 143.64.0.0/16 144.0.0.0/16 144.7.0.0/17 144.12.0.0/16 144.36.146.0/23 144.48.64.0/22 144.48.212.0/22 144.48.252.0/22 144.52.0.0/16 144.79.10.0/23 144.79.54.0/23 144.79.70.0/23 144.123.0.0/16 144.225.186.0/24 144.255.0.0/16 145.14.71.0/24 145.14.72.0/22 145.14.81.0/24 145.14.82.0/24 145.14.84.0/24 145.14.86.0/24 145.14.88.0/24 145.14.90.0/24 146.56.192.0/18 146.196.56.0/22 146.196.68.0/22 146.196.112.0/21 146.222.79.0/24 146.222.81.0/24 146.222.94.0/24 147.78.132.0/22 148.70.0.0/16 150.107.61.0/24 150.129.136.0/22 150.129.192.0/22 150.129.252.0/22 150.138.0.0/15 150.158.0.0/16 150.223.0.0/16 150.242.56.0/22 150.242.76.0/22 150.242.80.0/22 150.242.96.0/22 150.242.156.0/22 150.242.168.0/22 150.242.184.0/22 150.242.232.0/22 150.242.238.0/23 150.242.244.0/22 150.242.248.0/22 150.255.0.0/16 151.247.148.0/23 152.104.128.0/17 152.136.0.0/16 153.0.0.0/16 153.3.0.0/16 153.34.0.0/15 153.36.0.0/15 153.99.0.0/16 153.101.0.0/16 153.118.0.0/15 154.8.48.0/20 154.8.128.0/17 154.19.43.0/24 154.72.42.0/24 154.72.44.0/24 154.72.47.0/24 154.89.32.0/20 154.91.158.0/23 154.197.128.0/17 155.117.188.0/24 155.126.176.0/23 156.59.202.0/23 156.59.204.0/23 156.59.206.0/24 156.59.216.0/24 156.107.160.0/23 156.107.170.0/24 156.107.179.0/24 156.107.181.0/24 156.224.128.0/17 156.227.239.0/24 156.230.11.0/24 156.232.9.0/24 156.232.10.0/23 156.237.104.0/23 156.242.5.0/24 157.0.0.0/16 157.10.34.0/23 157.10.105.0/24 157.10.112.0/23 157.15.94.0/23 157.15.104.0/23 157.18.0.0/16 157.20.246.0/23 157.61.0.0/16 157.66.164.0/23 157.119.28.0/22 157.119.172.0/22 157.119.252.0/22 157.122.0.0/16 157.148.0.0/16 157.156.0.0/16 157.255.0.0/16 158.26.192.0/24 158.26.194.0/24 158.140.252.0/22 159.27.0.0/16 159.75.0.0/16 159.226.0.0/16 160.19.76.0/23 160.19.208.0/23 160.19.210.0/24 160.20.18.0/23 160.22.188.0/24 160.25.194.0/23 160.30.150.0/23 160.30.230.0/23 160.83.110.0/24 160.187.128.0/23 160.191.0.0/24 160.191.195.0/24 160.202.152.0/22 160.202.212.0/22 160.202.224.0/19 160.250.14.0/23 160.250.24.0/23 160.250.84.0/23 160.250.102.0/23 161.163.0.0/21 161.163.28.0/23 161.189.0.0/16 161.207.0.0/16 162.14.0.0/16 162.105.0.0/16 163.0.0.0/16 163.47.4.0/22 163.53.44.0/22 163.53.60.0/22 163.53.88.0/21 163.53.128.0/22 163.53.168.0/22 163.61.178.0/23 163.61.202.0/23 163.61.214.0/23 163.125.0.0/16 163.142.0.0/16 163.177.0.0/16 163.179.0.0/16 163.204.0.0/16 163.223.173.0/24 163.223.178.0/23 163.227.40.0/23 163.228.0.0/16 163.244.246.0/24 165.101.70.0/23 165.101.122.0/23 165.101.208.0/23 166.111.0.0/16 167.139.0.0/16 167.220.244.0/22 168.160.0.0/17 168.160.152.0/24 168.160.158.0/23 168.160.160.0/21 168.160.168.0/24 168.160.224.0/19 171.8.0.0/13 171.34.0.0/15 171.36.0.0/14 171.40.0.0/14 171.44.0.0/16 171.80.0.0/12 171.104.0.0/13 171.112.0.0/12 171.208.0.0/12 172.81.192.0/18 173.39.200.0/23 174.136.239.0/24 175.0.0.0/12 175.16.0.0/13 175.24.0.0/15 175.27.0.0/16 175.30.0.0/15 175.42.0.0/15 175.44.0.0/16 175.46.0.0/15 175.102.0.0/19 175.102.128.0/21 175.102.178.0/23 175.102.180.0/22 175.102.184.0/24 175.102.196.0/24 175.146.0.0/15 175.148.0.0/14 175.152.0.0/14 175.158.112.0/20 175.160.0.0/12 175.178.0.0/16 175.184.128.0/18 175.185.0.0/16 175.186.0.0/15 175.188.188.0/22 175.190.24.0/21 175.190.126.0/23 180.76.16.0/20 180.76.32.0/19 180.76.64.0/18 180.76.128.0/17 180.77.0.0/16 180.78.0.0/15 180.84.0.0/15 180.88.96.0/19 180.88.128.0/18 180.89.56.0/22 180.89.60.0/23 180.89.64.0/19 180.91.192.0/20 180.92.176.0/24 180.95.128.0/17 180.96.0.0/11 180.129.128.0/17 180.130.0.0/16 180.136.0.0/13 180.149.128.0/19 180.150.176.0/20 180.152.0.0/13 180.160.0.0/12 180.178.208.0/20 180.178.224.0/21 180.178.232.0/22 180.178.248.0/21 180.184.0.0/21 180.184.8.0/23 180.184.14.0/24 180.184.16.0/24 180.184.24.0/21 180.184.32.0/19 180.184.64.0/18 180.184.128.0/20 180.184.144.0/21 180.184.152.0/22 180.184.160.0/20 180.184.176.0/21 180.184.184.0/22 180.184.190.0/23 180.184.192.0/18 180.186.38.0/23 180.186.40.0/22 180.186.44.0/24 180.188.16.0/20 180.188.32.0/20 180.200.252.0/22 180.201.0.0/16 180.203.0.0/23 180.203.3.0/24 180.203.4.0/24 180.208.0.0/15 180.210.212.0/22 180.212.0.0/15 180.233.0.0/18 180.235.64.0/21 180.235.72.0/23 182.18.5.0/24 182.18.32.0/19 182.18.72.0/21 182.18.80.0/20 182.18.96.0/19 182.32.0.0/12 182.48.96.0/20 182.48.112.0/21 182.50.8.0/21 182.50.112.0/20 182.51.114.0/23 182.51.116.0/23 182.51.118.0/24 182.51.122.0/23 182.51.124.0/24 182.54.0.0/17 182.61.0.0/18 182.61.128.0/19 182.61.192.0/22 182.61.200.0/21 182.61.208.0/20 182.61.224.0/19 182.80.0.0/13 182.88.0.0/14 182.92.0.0/16 182.96.0.0/11 182.128.0.0/12 182.144.0.0/13 182.157.0.0/16 182.174.0.0/15 182.200.0.0/13 182.240.0.0/13 182.254.0.0/16 183.0.0.0/10 183.64.0.0/13 183.78.180.0/22 183.81.180.0/22 183.84.0.0/15 183.91.39.0/24 183.91.40.0/21 183.91.48.0/21 183.91.56.0/24 183.91.61.0/24 183.91.63.0/24 183.91.144.0/20 183.92.0.0/14 183.128.0.0/11 183.160.0.0/13 183.168.0.0/15 183.170.0.0/16 183.172.0.0/14 183.184.0.0/13 183.192.0.0/10 185.75.173.0/24 185.75.174.0/24 185.80.200.0/22 185.183.84.0/24 185.194.148.0/24 185.201.226.0/23 185.234.212.0/24 188.131.128.0/17 192.140.160.0/19 192.140.208.0/21 192.144.128.0/17 192.163.11.0/24 192.193.73.0/24 192.208.13.0/24 192.232.97.0/24 193.9.44.0/24 193.9.46.0/24 193.112.0.0/16 193.119.0.0/24 193.119.4.0/24 193.119.6.0/24 193.119.8.0/24 193.119.10.0/23 193.119.12.0/23 193.119.15.0/24 193.119.17.0/24 193.119.19.0/24 193.119.20.0/23 193.119.22.0/24 193.119.25.0/24 193.119.28.0/24 193.119.30.0/24 193.233.49.0/24 194.15.39.0/24 194.127.229.0/24 194.138.202.0/23 194.138.245.0/24 194.231.140.0/24 198.208.17.0/24 198.208.19.0/24 198.208.30.0/24 198.208.61.0/24 198.208.63.0/24 198.208.67.0/24 198.208.112.0/23 199.182.239.0/24 199.244.144.0/24 202.1.86.0/23 202.1.90.0/23 202.1.110.0/23 202.1.112.0/23 202.4.128.0/19 202.4.252.0/22 202.6.202.0/23 202.14.235.0/24 202.14.236.0/23 202.14.238.0/24 202.30.124.0/24 202.38.8.0/21 202.38.64.0/18 202.38.128.0/23 202.38.132.0/23 202.38.134.0/24 202.38.140.0/23 202.38.152.0/23 202.38.164.0/22 202.38.184.0/21 202.38.192.0/18 202.41.152.0/21 202.41.241.0/24 202.41.242.0/23 202.41.244.0/22 202.41.248.0/21 202.46.39.0/24 202.46.224.0/22 202.46.228.0/23 202.46.232.0/23 202.47.104.0/21 202.51.32.0/20 202.55.0.0/19 202.57.192.0/24 202.57.196.0/22 202.57.200.0/23 202.57.204.0/23 202.59.213.0/24 202.59.214.0/23 202.60.112.0/20 202.60.132.0/22 202.61.88.0/22 202.62.112.0/22 202.63.160.0/20 202.65.96.0/24 202.67.3.0/24 202.69.4.0/23 202.69.16.0/20 202.72.112.0/20 202.73.128.0/22 202.73.208.0/20 202.73.240.0/20 202.75.208.0/20 202.75.248.0/22 202.80.192.0/22 202.81.176.0/20 202.84.17.0/24 202.85.208.0/20 202.89.96.0/24 202.89.232.0/21 202.90.20.0/22 202.90.96.0/20 202.91.176.0/21 202.91.184.0/23 202.91.186.0/24 202.91.190.0/23 202.91.224.0/20 202.91.240.0/21 202.91.248.0/22 202.93.252.0/22 202.95.0.0/19 202.96.0.0/13 202.104.0.0/14 202.108.0.0/15 202.110.0.0/16 202.111.0.0/17 202.111.128.0/18 202.111.192.0/19 202.111.230.0/24 202.111.240.0/23 202.111.242.0/24 202.111.244.0/22 202.111.248.0/24 202.112.0.0/13 202.120.0.0/15 202.122.32.0/21 202.122.112.0/21 202.123.96.0/24 202.123.98.0/24 202.123.106.0/23 202.123.108.0/24 202.123.110.0/23 202.125.176.0/20 202.127.0.0/21 202.127.12.0/22 202.127.16.0/20 202.127.40.0/21 202.127.48.0/23 202.127.144.0/20 202.127.200.0/21 202.127.216.0/21 202.127.224.0/19 202.130.0.0/19 202.130.224.0/20 202.130.240.0/21 202.136.72.0/23 202.136.208.0/21 202.136.216.0/23 202.136.218.0/24 202.136.220.0/24 202.136.222.0/23 202.136.255.0/24 202.140.140.0/22 202.141.160.0/19 202.142.16.0/20 202.143.16.0/23 202.143.100.0/22 202.144.198.0/23 202.148.96.0/19 202.149.224.0/20 202.150.16.0/20 202.153.48.0/20 202.158.160.0/19 202.160.140.0/22 202.164.0.0/20 202.165.208.0/20 202.168.160.0/19 202.170.128.0/19 202.170.216.0/21 202.173.8.0/22 202.173.14.0/23 202.173.224.0/19 202.179.240.0/20 202.181.28.0/24 202.181.120.0/21 202.189.3.0/24 202.189.4.0/22 202.189.8.0/21 202.189.16.0/21 202.192.0.0/12 203.0.104.0/21 203.2.64.0/21 203.2.112.0/21 203.2.160.0/21 203.3.80.0/21 203.3.112.0/21 203.6.224.0/20 203.8.25.0/24 203.8.30.0/24 203.12.91.0/24 203.12.93.0/24 203.13.81.0/24 203.15.0.0/20 203.25.52.0/24 203.25.208.0/20 203.32.48.0/23 203.32.68.0/23 203.32.84.0/23 203.32.203.0/24 203.32.204.0/23 203.32.212.0/24 203.33.4.0/24 203.33.7.0/24 203.33.21.0/24 203.33.26.0/24 203.33.32.0/24 203.33.63.0/24 203.33.64.0/24 203.33.67.0/24 203.33.145.0/24 203.33.156.0/24 203.33.158.0/23 203.33.174.0/24 203.33.202.0/23 203.33.206.0/23 203.33.214.0/23 203.33.224.0/23 203.34.21.0/24 203.34.27.0/24 203.34.39.0/24 203.34.48.0/23 203.34.54.0/24 203.34.56.0/23 203.34.67.0/24 203.34.69.0/24 203.34.76.0/24 203.34.92.0/24 203.34.106.0/24 203.34.113.0/24 203.34.147.0/24 203.34.150.0/24 203.34.152.0/23 203.34.161.0/24 203.34.162.0/24 203.34.232.0/24 203.34.240.0/24 203.34.242.0/24 203.34.245.0/24 203.34.251.0/24 203.55.2.0/23 203.55.4.0/24 203.55.10.0/24 203.55.13.0/24 203.55.22.0/24 203.55.30.0/24 203.55.93.0/24 203.55.101.0/24 203.55.109.0/24 203.55.110.0/24 203.55.116.0/23 203.55.119.0/24 203.55.128.0/23 203.55.146.0/23 203.55.192.0/24 203.55.196.0/24 203.55.218.0/23 203.55.221.0/24 203.55.224.0/24 203.56.1.0/24 203.56.4.0/24 203.56.12.0/24 203.56.24.0/24 203.56.38.0/24 203.56.40.0/24 203.56.46.0/24 203.56.68.0/23 203.56.82.0/23 203.56.84.0/23 203.56.95.0/24 203.56.110.0/24 203.56.121.0/24 203.56.161.0/24 203.56.169.0/24 203.56.172.0/23 203.56.175.0/24 203.56.183.0/24 203.56.185.0/24 203.56.187.0/24 203.56.192.0/24 203.56.198.0/24 203.56.201.0/24 203.56.208.0/23 203.56.210.0/24 203.56.214.0/24 203.56.216.0/24 203.56.228.0/24 203.56.232.0/24 203.56.240.0/24 203.56.252.0/24 203.56.254.0/24 203.57.5.0/24 203.57.6.0/24 203.57.12.0/23 203.57.28.0/24 203.57.39.0/24 203.57.46.0/24 203.57.58.0/24 203.57.61.0/24 203.57.66.0/24 203.57.69.0/24 203.57.70.0/23 203.57.73.0/24 203.57.90.0/24 203.57.101.0/24 203.57.109.0/24 203.57.123.0/24 203.57.157.0/24 203.57.200.0/24 203.57.202.0/24 203.57.206.0/24 203.57.222.0/24 203.57.224.0/20 203.57.249.0/24 203.57.254.0/23 203.62.2.0/24 203.62.131.0/24 203.62.139.0/24 203.65.240.0/22 203.76.208.0/21 203.76.216.0/22 203.76.240.0/22 203.78.48.0/20 203.79.0.0/23 203.80.57.0/24 203.80.144.0/20 203.82.0.0/23 203.83.56.0/21 203.83.224.0/20 203.86.0.0/19 203.86.43.0/24 203.86.44.0/23 203.86.48.0/23 203.86.51.0/24 203.86.52.0/22 203.86.60.0/23 203.86.62.0/24 203.86.64.0/19 203.86.112.0/24 203.86.254.0/23 203.88.32.0/19 203.88.192.0/19 203.89.100.0/22 203.90.128.0/18 203.90.192.0/19 203.91.32.0/19 203.91.120.0/21 203.93.0.0/18 203.93.64.0/19 203.93.96.0/20 203.93.117.0/24 203.93.120.0/21 203.93.128.0/19 203.93.160.0/20 203.93.208.0/20 203.93.224.0/19 203.94.0.0/19 203.95.0.0/23 203.95.2.0/24 203.95.4.0/22 203.95.128.0/23 203.99.20.0/22 203.99.24.0/21 203.100.92.0/22 203.100.192.0/20 203.104.32.0/20 203.107.1.0/24 203.107.2.0/24 203.107.6.0/24 203.107.13.0/24 203.107.20.0/22 203.107.26.0/23 203.107.28.0/22 203.107.32.0/19 203.107.72.0/21 203.107.80.0/21 203.107.96.0/23 203.107.116.0/22 203.110.160.0/19 203.110.208.0/20 203.110.232.0/23 203.114.244.0/22 203.118.248.0/22 203.119.25.0/24 203.119.26.0/23 203.119.28.0/22 203.119.33.0/24 203.119.80.0/22 203.119.114.0/23 203.119.128.0/19 203.119.160.0/24 203.119.168.0/21 203.119.176.0/20 203.119.192.0/18 203.129.12.0/22 203.130.40.0/21 203.132.32.0/19 203.133.240.0/21 203.135.96.0/19 203.148.0.0/18 203.148.64.0/20 203.148.86.0/23 203.152.64.0/19 203.156.192.0/18 203.160.129.0/24 203.160.192.0/19 203.161.192.0/19 203.166.160.0/22 203.166.165.0/24 203.166.166.0/24 203.166.172.0/24 203.166.177.0/24 203.166.186.0/23 203.166.188.0/23 203.166.191.0/24 203.168.0.0/19 203.170.58.0/23 203.174.4.0/24 203.174.96.0/19 203.175.128.0/19 203.176.92.0/22 203.176.168.0/24 203.176.170.0/24 203.187.160.0/19 203.189.0.0/23 203.189.6.0/23 203.189.113.0/24 203.189.115.0/24 203.189.192.0/19 203.189.240.0/22 203.190.100.0/23 203.191.0.0/23 203.191.144.0/21 203.192.1.0/24 203.192.2.0/23 203.192.4.0/22 203.192.8.0/21 203.192.16.0/24 203.192.24.0/23 203.193.224.0/19 203.194.122.0/23 203.194.124.0/24 203.195.64.0/19 203.195.113.0/24 203.195.114.0/24 203.195.118.0/23 203.195.128.0/17 203.196.0.0/21 203.202.236.0/23 203.207.64.0/19 203.207.96.0/21 203.207.104.0/22 203.207.112.0/20 203.207.128.0/18 203.207.192.0/21 203.207.200.0/22 203.207.208.0/20 203.207.224.0/19 203.208.32.0/19 203.209.224.0/19 203.212.0.0/21 203.212.8.0/22 203.212.80.0/23 203.215.232.0/23 203.215.236.0/24 203.223.17.0/24 203.223.19.0/24 203.223.20.0/23 204.77.130.0/24 205.198.19.0/24 206.54.1.128/25 206.54.9.0/24 206.54.10.0/23 206.54.12.0/22 210.2.0.0/23 210.2.4.0/24 210.5.0.0/19 210.5.56.0/21 210.5.128.0/19 210.12.0.0/16 210.13.0.0/17 210.13.192.0/19 210.13.224.0/24 210.13.227.0/24 210.13.230.0/23 210.13.232.0/24 210.13.236.0/23 210.13.238.0/24 210.13.240.0/20 210.14.64.0/20 210.14.80.0/22 210.14.84.0/24 210.14.90.0/23 210.14.92.0/22 210.14.112.0/20 210.14.128.0/19 210.14.192.0/18 210.15.0.0/17 210.16.160.0/19 210.21.0.0/17 210.21.192.0/18 210.22.0.0/19 210.22.32.0/22 210.22.48.0/20 210.22.64.0/18 210.22.128.0/17 210.25.0.0/16 210.26.0.0/15 210.28.0.0/14 210.32.0.0/12 210.48.136.0/21 210.51.0.0/16 210.52.0.0/15 210.72.0.0/17 210.72.128.0/18 210.72.192.0/19 210.72.224.0/20 210.72.240.0/23 210.72.243.0/24 210.72.245.0/24 210.72.246.0/24 210.73.0.0/17 210.73.128.0/18 210.73.192.0/22 210.73.204.0/24 210.73.208.0/20 210.73.224.0/19 210.74.0.0/20 210.74.35.0/24 210.74.36.0/23 210.74.38.0/24 210.74.40.0/22 210.74.44.0/23 210.74.47.0/24 210.74.64.0/23 210.74.107.0/24 210.74.108.0/23 210.74.128.0/18 210.74.224.0/19 210.75.0.0/18 210.75.96.0/19 210.75.192.0/18 210.76.0.0/18 210.76.64.0/19 210.76.160.0/19 210.76.192.0/19 210.77.0.0/18 210.77.64.0/19 210.77.128.0/19 210.77.176.0/22 210.77.180.0/23 210.77.182.0/24 210.77.184.0/24 210.77.189.0/24 210.77.190.0/23 210.77.192.0/18 210.78.128.0/24 210.78.134.0/23 210.78.139.0/24 210.78.144.0/23 210.79.224.0/19 210.82.0.0/15 210.87.128.0/18 210.185.192.0/18 210.192.96.0/20 210.192.116.0/22 210.192.120.0/21 211.64.0.0/13 211.76.179.0/24 211.80.0.0/13 211.88.0.0/15 211.90.0.0/17 211.90.128.0/18 211.90.192.0/20 211.90.216.0/21 211.90.224.0/19 211.91.0.0/18 211.91.64.0/19 211.91.96.0/20 211.91.120.0/21 211.91.128.0/18 211.91.216.0/21 211.91.224.0/19 211.92.0.0/17 211.92.128.0/18 211.92.192.0/19 211.92.224.0/20 211.92.244.0/22 211.93.0.0/17 211.93.128.0/20 211.93.144.0/21 211.93.160.0/19 211.93.192.0/21 211.93.200.0/23 211.93.204.0/22 211.93.211.0/24 211.93.212.0/23 211.93.224.0/19 211.94.37.0/24 211.94.64.0/18 211.94.128.0/17 211.95.0.0/17 211.95.128.0/19 211.95.192.0/18 211.96.0.0/16 211.97.0.0/17 211.97.128.0/19 211.97.160.0/21 211.97.176.0/20 211.97.192.0/18 211.98.0.0/16 211.99.8.0/21 211.99.16.0/23 211.99.25.0/24 211.99.26.0/24 211.99.28.0/22 211.99.32.0/19 211.99.64.0/18 211.99.128.0/18 211.99.192.0/19 211.100.0.0/17 211.100.192.0/20 211.100.224.0/19 211.101.0.0/18 211.101.192.0/20 211.101.232.0/21 211.101.240.0/21 211.102.80.0/20 211.102.128.0/18 211.102.192.0/23 211.102.208.0/20 211.102.240.0/21 211.102.248.0/24 211.103.0.0/16 211.136.0.0/13 211.144.9.0/24 211.144.10.0/24 211.144.12.0/22 211.144.16.0/24 211.144.18.0/23 211.144.20.0/24 211.144.22.0/24 211.144.24.0/24 211.144.27.0/24 211.144.28.0/23 211.144.32.0/19 211.144.64.0/19 211.144.96.0/23 211.144.100.0/22 211.144.104.0/22 211.144.108.0/23 211.144.110.0/24 211.144.112.0/24 211.144.114.0/23 211.144.118.0/23 211.144.120.0/21 211.144.128.0/19 211.144.192.0/18 211.145.0.0/18 211.145.64.0/20 211.146.0.0/16 211.147.0.0/18 211.147.64.0/19 211.147.128.0/18 211.147.208.0/20 211.147.224.0/19 211.148.0.0/18 211.148.128.0/17 211.149.128.0/17 211.150.0.0/18 211.150.64.0/19 211.150.98.0/24 211.150.100.0/23 211.150.114.0/23 211.150.122.0/24 211.150.124.0/23 211.150.128.0/24 211.151.0.0/16 211.152.0.0/17 211.152.192.0/22 211.152.196.0/23 211.152.208.0/20 211.153.0.0/16 211.154.0.0/19 211.154.64.0/19 211.154.128.0/17 211.155.16.0/20 211.155.32.0/19 211.155.80.0/20 211.155.108.0/22 211.155.112.0/20 211.155.128.0/19 211.155.160.0/20 211.155.176.0/22 211.155.184.0/21 211.155.224.0/21 211.155.232.0/22 211.155.236.0/24 211.155.240.0/20 211.156.0.0/19 211.156.128.0/19 211.156.176.0/20 211.156.192.0/20 211.156.208.0/21 211.156.216.0/22 211.156.220.0/23 211.156.223.0/24 211.157.0.0/19 211.157.96.0/19 211.157.128.0/18 211.157.192.0/20 211.157.219.0/24 211.157.222.0/24 211.157.224.0/19 211.158.0.0/16 211.159.64.0/21 211.159.128.0/17 211.160.0.0/22 211.160.4.0/24 211.160.9.0/24 211.160.10.0/23 211.160.14.0/23 211.160.16.0/24 211.160.18.0/23 211.160.20.0/23 211.160.22.0/24 211.160.24.0/24 211.160.27.0/24 211.160.28.0/23 211.160.36.0/23 211.160.46.0/24 211.160.62.0/24 211.160.72.0/21 211.160.80.0/20 211.160.112.0/23 211.160.115.0/24 211.160.120.0/24 211.160.160.0/19 211.160.195.0/24 211.160.196.0/24 211.160.203.0/24 211.160.205.0/24 211.160.244.0/24 211.160.246.0/23 211.160.248.0/21 211.161.0.0/20 211.161.24.0/22 211.161.32.0/20 211.161.60.0/23 211.161.62.0/24 211.161.97.0/24 211.161.101.0/24 211.161.102.0/23 211.161.120.0/21 211.161.192.0/22 211.161.203.0/24 211.161.209.0/24 211.161.221.0/24 211.161.224.0/20 211.162.0.0/21 211.162.64.0/20 211.162.119.0/24 211.162.120.0/21 211.162.200.0/22 211.165.0.0/16 211.166.0.0/16 211.167.64.0/18 211.167.128.0/19 211.167.176.0/20 211.167.224.0/19 212.64.0.0/17 212.100.186.0/24 212.103.62.0/24 212.129.128.0/17 218.0.0.0/11 218.56.0.0/13 218.64.0.0/11 218.96.0.0/24 218.96.64.0/22 218.96.104.0/22 218.96.108.0/23 218.96.126.0/23 218.96.128.0/24 218.96.241.0/24 218.96.244.0/24 218.96.255.0/24 218.97.0.0/17 218.97.160.0/19 218.97.192.0/19 218.97.240.0/20 218.98.0.0/18 218.98.96.0/21 218.98.104.0/22 218.98.108.0/23 218.98.111.0/24 218.98.112.0/20 218.98.160.0/24 218.98.176.0/21 218.98.192.0/24 218.100.88.0/21 218.104.0.0/15 218.106.0.0/16 218.107.0.0/18 218.107.128.0/17 218.108.0.0/15 218.185.240.0/21 218.192.0.0/12 218.213.85.0/24 218.213.92.0/24 218.240.0.0/18 218.240.128.0/19 218.240.160.0/21 218.240.168.0/24 218.240.176.0/20 218.241.16.0/21 218.241.96.0/20 218.241.112.0/22 218.241.116.0/23 218.241.118.0/24 218.241.121.0/24 218.241.122.0/23 218.241.124.0/22 218.241.128.0/17 218.242.0.0/16 218.244.0.0/19 218.244.44.0/22 218.244.49.0/24 218.244.52.0/23 218.244.55.0/24 218.244.56.0/23 218.244.58.0/24 218.244.128.0/18 218.244.192.0/20 218.244.224.0/19 218.245.0.0/17 218.246.0.0/19 218.246.32.0/22 218.246.48.0/22 218.246.64.0/18 218.246.160.0/19 218.246.192.0/19 218.247.0.0/18 218.247.64.0/19 218.247.128.0/17 218.249.0.0/16 218.252.0.0/17 218.253.0.0/18 219.72.0.0/16 219.82.0.0/16 219.83.160.0/19 219.100.148.0/22 219.117.16.0/20 219.128.0.0/12 219.144.0.0/14 219.148.0.0/15 219.150.0.0/16 219.151.0.0/18 219.151.128.0/17 219.152.0.0/14 219.156.0.0/15 219.158.0.0/19 219.158.32.0/20 219.158.58.0/23 219.158.60.0/22 219.158.96.0/19 219.158.128.0/17 219.159.0.0/16 219.216.0.0/13 219.224.0.0/13 219.232.0.0/17 219.232.144.0/24 219.232.160.0/19 219.232.192.0/19 219.233.0.0/16 219.234.0.0/21 219.234.16.0/20 219.234.80.0/20 219.234.96.0/19 219.234.128.0/17 219.235.0.0/20 219.235.32.0/19 219.235.64.0/18 219.235.128.0/20 219.235.144.0/21 219.235.192.0/23 219.235.207.0/24 219.235.224.0/22 219.235.228.0/23 219.235.233.0/24 219.235.234.0/24 219.235.237.0/24 219.235.251.0/24 219.235.252.0/24 219.235.255.0/24 219.236.0.0/14 219.242.0.0/15 219.244.0.0/14 220.101.192.0/19 220.112.0.0/22 220.112.8.0/24 220.112.40.0/21 220.112.50.0/23 220.112.52.0/23 220.112.54.0/24 220.112.194.0/24 220.112.196.0/24 220.112.200.0/21 220.113.0.0/19 220.113.32.0/20 220.113.96.0/21 220.113.150.0/23 220.113.152.0/23 220.113.154.0/24 220.114.250.0/23 220.154.0.0/20 220.154.16.0/22 220.154.64.0/20 220.154.80.0/22 220.154.128.0/20 220.154.147.0/24 220.160.0.0/12 220.176.0.0/14 220.180.0.0/16 220.181.0.0/17 220.181.128.0/20 220.181.144.0/24 220.181.148.0/22 220.181.152.0/21 220.181.160.0/19 220.182.0.0/18 220.184.0.0/13 220.192.0.0/16 220.193.0.0/17 220.194.0.0/16 220.195.0.0/17 220.195.128.0/19 220.195.192.0/18 220.196.0.0/16 220.197.0.0/17 220.197.160.0/19 220.197.192.0/18 220.198.0.0/15 220.200.0.0/17 220.200.128.0/20 220.200.148.0/22 220.200.152.0/21 220.200.160.0/19 220.200.192.0/18 220.201.0.0/16 220.202.0.0/16 220.203.0.0/17 220.203.128.0/18 220.203.216.0/23 220.203.220.0/22 220.203.224.0/19 220.205.0.0/16 220.206.192.0/22 220.207.0.0/22 220.207.80.0/20 220.207.176.0/22 220.207.184.0/22 220.207.254.0/23 220.231.32.0/20 220.231.128.0/17 220.232.64.0/18 220.234.0.0/16 220.242.180.0/24 220.243.128.0/20 220.243.153.0/24 220.243.154.0/23 220.243.156.0/23 220.243.176.0/20 220.248.0.0/16 220.249.0.0/17 220.249.128.0/18 220.249.192.0/19 220.249.240.0/20 220.250.0.0/17 221.0.0.0/13 221.8.0.0/14 221.12.0.0/17 221.12.128.0/18 221.13.0.0/16 221.14.0.0/15 221.122.0.0/16 221.123.0.0/24 221.123.112.0/20 221.123.128.0/17 221.129.0.0/16 221.130.0.0/15 221.133.225.0/24 221.133.226.0/24 221.133.228.0/22 221.133.232.0/23 221.133.235.0/24 221.133.244.0/23 221.137.0.0/16 221.174.0.0/17 221.176.0.0/13 221.192.0.0/14 221.196.0.0/15 221.198.0.0/16 221.199.0.0/17 221.199.128.0/18 221.199.192.0/20 221.199.224.0/19 221.200.0.0/13 221.208.0.0/12 221.224.0.0/12 222.16.0.0/12 222.35.0.0/16 222.42.115.0/24 222.44.0.0/15 222.49.128.0/17 222.50.0.0/16 222.59.128.0/17 222.64.0.0/11 222.125.0.0/16 222.126.128.0/22 222.126.132.0/23 222.126.140.0/22 222.126.144.0/24 222.126.146.0/23 222.126.148.0/22 222.126.152.0/21 222.126.160.0/20 222.126.176.0/21 222.126.184.0/22 222.126.188.0/23 222.126.192.0/22 222.126.196.0/23 222.126.200.0/22 222.126.208.0/23 222.126.212.0/22 222.126.216.0/23 222.126.228.0/23 222.126.234.0/23 222.126.236.0/22 222.126.240.0/20 222.128.0.0/12 222.160.0.0/14 222.166.240.0/20 222.167.244.0/24 222.168.0.0/13 222.176.0.0/12 222.192.0.0/11 222.240.0.0/13 222.248.0.0/15 223.0.1.0/24 223.0.2.0/24 223.0.8.0/22 223.0.12.0/23 223.0.15.0/24 223.0.16.0/24 223.0.30.0/24 223.0.40.0/23 223.0.126.0/24 223.2.0.0/15 223.4.0.0/14 223.8.0.0/13 223.26.0.0/23 223.27.184.0/22 223.64.0.0/10 223.128.0.0/15 223.144.0.0/12 223.160.0.0/20 223.160.16.0/21 223.160.112.0/20 223.160.128.0/22 223.160.134.0/23 223.160.136.0/21 223.160.144.0/20 223.160.160.0/19 223.160.192.0/19 223.160.224.0/21 223.160.232.0/22 223.160.236.0/23 223.161.194.0/23 223.161.196.0/22 223.161.200.0/21 223.161.208.0/20 223.161.224.0/19 223.165.10.0/24 223.165.12.0/24 223.165.80.0/20 223.166.0.0/15 223.192.0.0/15 223.198.0.0/15 223.202.0.0/24 223.202.67.0/24 223.202.131.0/24 223.202.132.0/24 223.202.134.0/23 223.202.211.0/24 223.202.212.0/24 223.203.3.0/24 223.203.9.0/24 223.203.96.0/24 223.203.100.0/24 223.210.0.0/19 223.210.48.0/22 223.212.0.0/14 223.220.0.0/15 223.223.176.0/20 223.223.192.0/20 223.240.0.0/13 223.248.0.0/14 223.252.194.0/24 223.252.196.0/24 223.252.199.0/24 223.252.200.0/23 223.252.202.0/24 223.252.205.0/24 223.252.209.0/24 223.252.210.0/23 223.252.212.0/24 223.252.214.0/23 223.252.221.0/24 223.252.222.0/24 223.255.236.0/22 223.255.252.0/23 ================================================ FILE: luci-app-homeproxy/root/etc/homeproxy/resources/china_ip4.ver ================================================ 20260424052559 ================================================ FILE: luci-app-homeproxy/root/etc/homeproxy/resources/china_ip6.txt ================================================ 2001:250::/30 2001:254::/31 2001:256:100::/48 2001:678:120::/48 2001:678:53c::/48 2001:678:10d0::/48 2001:678:1184::/48 2001:67c:ebc::/48 2001:7fa:5::/48 2001:c68::/32 2001:cc0::/32 2001:da8::/32 2001:daa:1::/48 2001:daa:2::/47 2001:daa:4::/47 2001:daa:6::/48 2001:dc7::/32 2001:dd8:1::/48 2001:dd9::/48 2001:df0:ac40::/48 2001:df1:da00::/48 2001:df3:3a80::/48 2001:df3:8b80::/48 2001:df5:4740::/48 2001:df6:40::/48 2001:df7:1480::/48 2001:4510:400::/40 2400:1160::/32 2400:3200::/32 2400:5280:f803::/48 2400:54a0:21c2::/47 2400:5a00::/32 2400:5a60:2::/48 2400:5f60::/32 2400:6000::/32 2400:6460::/39 2400:6460:300::/40 2400:6460:500::/40 2400:6460:600::/40 2400:6600::/32 2400:6e60:1301::/48 2400:75aa::/32 2400:7bc0:20::/43 2400:7fc0::/40 2400:7fc0:220::/44 2400:7fc0:240::/44 2400:7fc0:2a0::/44 2400:7fc0:2c0::/44 2400:7fc0:4000::/40 2400:7fc0:4100::/48 2400:7fc0:6000::/40 2400:7fc0:8000::/36 2400:7fc0:a000::/36 2400:7fc0:bb00::/40 2400:7fc0:c000::/36 2400:8200::/32 2400:89c0:1010::/44 2400:89c0:1050::/46 2400:89c0:1130::/44 2400:89c0:1150::/48 2400:89c0:2100::/48 2400:89c0:2200::/48 2400:89c0:3010::/44 2400:89c0:6000::/48 2400:89c0:6100::/48 2400:8fc0:571::/48 2400:9020:f010::/46 2400:9340::/32 2400:9380:8001::/48 2400:9380:8003::/48 2400:9380:8021::/48 2400:9380:8040::/48 2400:9380:8140::/48 2400:9380:8201::/48 2400:9380:8301::/48 2400:9380:9001::/48 2400:9380:9009::/48 2400:9380:9020::/47 2400:9380:9050::/47 2400:9380:9060::/48 2400:9380:9071::/48 2400:9380:9080::/47 2400:9380:90b1::/48 2400:9380:90b2::/47 2400:9380:90b4::/46 2400:9380:9121::/48 2400:9380:9220::/47 2400:9380:9250::/47 2400:9380:9260::/48 2400:9380:9271::/48 2400:9380:9280::/47 2400:9380:92b1::/48 2400:9380:92b2::/47 2400:9380:92b4::/46 2400:95e0::/48 2400:9600:8800::/48 2400:9620::/32 2400:a860:1::/48 2400:a860:2::/47 2400:a860:4::/47 2400:a860:6::/48 2400:a980::/29 2400:ae00:1981::/48 2400:b200::/32 2400:b600::/32 2400:b620::/48 2400:b700::/48 2400:be00::/48 2400:cb80:e2e::/47 2400:cb80:e30::/44 2400:cb80:e40::/44 2400:da00::/32 2400:dd00::/28 2400:ee00:ffec::/46 2400:ee00:fff0::/44 2400:f720::/32 2400:fe00::/32 2401:20::/40 2401:20:1330::/46 2401:800::/32 2401:1160::/32 2401:1320::/32 2401:1d40::/32 2401:2a00:f000::/43 2401:2e00::/32 2401:3480::/36 2401:3480:2000::/48 2401:3480:3000::/36 2401:34a0::/31 2401:3800::/32 2401:70e0::/32 2401:71c0::/48 2401:7660::/48 2401:8a00:11::/48 2401:8a00:12::/48 2401:8be0::/48 2401:8d00::/46 2401:8d00:4::/48 2401:8d00:7::/48 2401:8d00:8::/47 2401:8d00:b::/48 2401:8d00:c::/48 2401:8d00:f::/48 2401:8d00:14::/47 2401:9a00::/44 2401:9a00:10::/46 2401:a140:1::/48 2401:b180::/32 2401:b400::/45 2401:b400:8::/47 2401:b400:11::/48 2401:b400:14::/48 2401:b400:16::/47 2401:b400:20::/47 2401:b680::/32 2401:be00::/32 2401:c020:6::/48 2401:c020:8::/47 2401:c020:14::/48 2401:cb80::/32 2401:cc00::/32 2401:ce00::/32 2401:d0e0:3::/48 2401:d180::/46 2401:d180:10::/47 2401:d180:111::/48 2401:d180:2120::/48 2401:d920::/48 2401:de00::/32 2401:ec00::/32 2401:f860:85::/48 2401:f860:87::/48 2401:f860:88::/47 2401:f860:90::/48 2401:f860:92::/47 2401:f860:94::/48 2401:f860:96::/47 2401:f860:100::/40 2401:fa00:40::/43 2402:840:d000::/46 2402:840:e000::/46 2402:840:f000::/38 2402:c60::/48 2402:1440::/32 2402:1460::/32 2402:18a0::/32 2402:2000::/32 2402:20e0:f000::/48 2402:3180::/46 2402:3180:8000::/33 2402:33e0::/32 2402:36e0::/44 2402:3c00::/32 2402:3f80:1400::/40 2402:4b80::/32 2402:4e00::/32 2402:5ec0::/32 2402:6e80::/32 2402:6f40::/48 2402:6f40:2::/48 2402:7d80::/48 2402:7d80:240::/48 2402:7d80:8888::/48 2402:8bc0::/32 2402:8cc0::/40 2402:8cc0:200::/40 2402:92c0::/48 2402:93c0::/48 2402:93c0:20::/48 2402:93c0:100::/48 2402:9a80::/32 2402:a200::/32 2402:b8c0:6::/48 2402:b8c0:86::/48 2402:b8c0:106::/48 2402:b8c0:186::/48 2402:d340::/32 2402:db40:5100::/48 2402:db40:5900::/48 2402:db40:5f00::/46 2402:dfc0::/44 2402:dfc0:50::/44 2402:e380:100::/40 2402:e480::/32 2402:e740::/32 2402:e7c0::/32 2402:e880::/48 2402:ef40::/32 2402:f000::/32 2402:f140:ff00::/46 2402:f140:ff04::/48 2402:f140:ff10::/46 2402:f140:ff14::/48 2402:f8c0::/42 2403:600::/32 2403:c80::/32 2403:1b80::/48 2403:1ec0:1200::/48 2403:1ec0:1400::/48 2403:1ec0:1600::/48 2403:1ec0:1610::/48 2403:1ec0:1900::/48 2403:1ec0:1910::/44 2403:1ec0:1920::/43 2403:1ec0:1940::/44 2403:2040::/48 2403:2b40::/32 2403:3140::/32 2403:4240::/32 2403:4280::/47 2403:4300::/32 2403:4c80::/48 2403:5c80::/48 2403:6380:40::/46 2403:6380:60::/44 2403:6740::/48 2403:6a00::/32 2403:7580::/32 2403:8080:101::/48 2403:8c00::/32 2403:9b00:2000::/48 2403:9b00:2400::/48 2403:9b00:6000::/48 2403:a100::/48 2403:a140:10::/48 2403:a140:100::/40 2403:a200::/32 2403:ac00::/32 2403:ad80:8008::/48 2403:ad80:8047::/48 2403:b400::/32 2403:c980::/32 2403:d400::/32 2403:e7c0:3::/48 2403:f4c0::/48 2403:ffc0:1100::/40 2403:ffc0:1200::/39 2404:bc0:1::/48 2404:bc0:4000::/43 2404:bc0:4100::/43 2404:bc0:4200::/43 2404:bc0:4300::/44 2404:bc0:4400::/43 2404:bc0:4500::/43 2404:bc0:4620::/44 2404:bc0:4f00::/43 2404:1c80::/32 2404:3700::/48 2404:4dc0::/32 2404:6380::/48 2404:6380:1000::/48 2404:6380:8001::/48 2404:6500:dcb3::/48 2404:7180:a000::/48 2404:7180:a010::/48 2404:7180:aa00::/48 2404:7180:aa10::/48 2404:7180:b001::/48 2404:7180:b002::/48 2404:7180:b010::/48 2404:7180:c001::/48 2404:7180:c002::/48 2404:7180:c011::/48 2404:7180:c012::/48 2404:7180:f000::/48 2404:7180:f010::/48 2404:7240::/33 2404:7600::/32 2404:7940::/32 2404:c2c0::/40 2404:c2c0:240::/44 2404:c2c0:280::/44 2404:c2c0:2c0::/44 2404:c2c0:501::/48 2404:c2c0:4000::/40 2404:c2c0:4100::/48 2404:c2c0:6000::/40 2404:c2c0:8000::/36 2404:c2c0:bb00::/40 2404:c2c0:c000::/36 2404:c300::/32 2404:c940::/48 2404:e280::/47 2404:e5c0::/32 2404:e8c0::/32 2404:f4c0::/32 2405:6c0:2::/48 2405:6c0:4::/48 2405:1480:1000::/48 2405:1480:2000::/48 2405:1480:3000::/47 2405:3140:11::/48 2405:3140:21::/48 2405:3140:31::/48 2405:66c0::/32 2405:68c0:21::/48 2405:6940::/48 2405:6f00:c101::/48 2405:6f00:c102::/48 2405:6f00:c170::/47 2405:6f00:c602::/48 2405:7040:6000::/47 2405:78c0:6e00::/43 2405:8a40::/32 2405:a900:ffee::/48 2405:a900:fffe::/48 2405:ad00::/32 2405:b7c0::/32 2405:d900::/32 2405:e000::/32 2405:f580::/32 2405:f940::/32 2406:280::/32 2406:840:9000::/44 2406:840:e080::/44 2406:840:e0cf::/48 2406:840:e0e0::/46 2406:840:e0e4::/47 2406:840:e0e8::/48 2406:840:e10f::/48 2406:840:e14f::/48 2406:840:e260::/48 2406:840:e620::/48 2406:840:e666::/47 2406:840:e720::/44 2406:840:e80f::/48 2406:840:eb00::/46 2406:840:eb04::/47 2406:840:eb07::/48 2406:840:eb08::/48 2406:840:eb0b::/48 2406:840:eb0f::/48 2406:840:ee40::/47 2406:840:ee44::/48 2406:840:ee4b::/48 2406:840:ee4d::/48 2406:840:eee5::/48 2406:840:f200::/48 2406:840:f203::/48 2406:840:f380::/44 2406:840:f860::/46 2406:840:f868::/47 2406:840:f86c::/48 2406:840:fc80::/45 2406:840:fc88::/48 2406:840:fc8f::/48 2406:840:fcd0::/48 2406:840:fcf0::/46 2406:840:fcf4::/47 2406:840:fd40::/43 2406:840:fd60::/48 2406:840:fd67::/48 2406:840:fd70::/48 2406:840:fd77::/48 2406:840:fd80::/48 2406:840:fd87::/48 2406:840:fd90::/44 2406:840:fda0::/43 2406:840:fdc0::/44 2406:840:fe27::/48 2406:840:fe90::/46 2406:840:fe94::/48 2406:840:fe96::/47 2406:840:fe98::/46 2406:840:feab::/48 2406:840:feac::/48 2406:840:feaf::/48 2406:840:fec0::/48 2406:840:fec4::/48 2406:840:feca::/48 2406:840:fecc::/47 2406:840:fecf::/48 2406:840:fed8::/48 2406:840:fedf::/48 2406:840:fef3::/48 2406:840:fef9::/48 2406:840:fefb::/48 2406:840:fefc::/48 2406:840:feff::/48 2406:1080::/48 2406:2700::/32 2406:3340::/32 2406:3d80::/32 2406:4d00::/48 2406:52c0::/32 2406:5340:6666::/48 2406:5340:8888::/48 2406:6100::/32 2406:b640:100::/48 2406:b640:4100::/48 2406:cac0::/40 2406:cac0:200::/40 2406:cf00::/48 2406:cf00:1000::/43 2406:d440:100::/43 2406:d440:200::/43 2406:d440:300::/43 2406:d440:ff00::/48 2406:d440:ffff::/48 2406:e3c0::/32 2406:e500::/33 2407:23c0::/48 2407:2840::/48 2407:37c0::/32 2407:5380::/32 2407:6c40:1100::/48 2407:6c40:1210::/48 2407:6c40:1500::/48 2407:6c40:1600::/40 2407:8f40:2::/48 2407:9f00::/32 2407:ad80::/32 2407:ae80::/32 2407:b380:8000::/48 2407:bc00::/32 2407:c080::/35 2407:c080:4000::/37 2407:c080:5000::/37 2407:c080:6000::/36 2407:c080:8000::/36 2407:d9c0::/32 2408:4000::/22 2408:8000::/48 2408:8000:2::/47 2408:8000:1000::/36 2408:8000:2000::/35 2408:8000:4000::/34 2408:8000:8000::/33 2408:8001::/32 2408:8020::/30 2408:8024::/31 2408:8026::/32 2408:802a:8000::/33 2408:802c::/32 2408:803e::/32 2408:8056::/32 2408:805c::/30 2408:8060::/33 2408:80c2::/33 2408:80c5::/33 2408:80ca::/33 2408:80ca:8000::/34 2408:80da::/33 2408:80da:8000::/34 2408:80e0:4000::/34 2408:80e0:8000::/33 2408:80e2::/33 2408:80e9:4000::/34 2408:80ea:4000::/34 2408:80ea:8000::/33 2408:80f0:4000::/34 2408:80f0:8000::/33 2408:80f1::/42 2408:80f1:40::/43 2408:80f1:70::/44 2408:80f1:80::/41 2408:80f1:100::/43 2408:80f1:120::/44 2408:80f1:160::/43 2408:80f1:180::/43 2408:80f1:1b0::/44 2408:80f1:1c0::/43 2408:80f1:1e0::/44 2408:80f1:200::/40 2408:80f5:4000::/34 2408:80f9:4000::/34 2408:80fa:4000::/34 2408:80fa:8000::/33 2408:8120:1::/48 2408:8120:2::/48 2408:8120:7000::/36 2408:8140:2000::/48 2408:815f:e000::/35 2408:8181::/40 2408:8181:6000::/40 2408:8181:8000::/40 2408:8181:a000::/40 2408:8181:a220::/44 2408:8181:e000::/40 2408:8182:6000::/40 2408:8182:c000::/40 2408:8183:4000::/40 2408:8183:8000::/40 2408:81a2:2000::/35 2408:81a2:4000::/35 2408:81a3:6000::/35 2408:81a3:c800::/48 2408:81a3:ca66::/48 2408:8206::/31 2408:8208::/29 2408:8210::/30 2408:8214::/31 2408:821a::/31 2408:8220::/31 2408:8226::/32 2408:822a::/31 2408:822e::/31 2408:8230::/29 2408:8238::/31 2408:823c::/31 2408:8240::/32 2408:8244::/30 2408:8248::/30 2408:824c::/32 2408:824e::/31 2408:8250::/30 2408:8254::/32 2408:8256::/31 2408:8258::/30 2408:825c::/31 2408:825f::/32 2408:8260::/32 2408:8262::/31 2408:8264::/31 2408:8266::/32 2408:826a::/32 2408:826c::/30 2408:8270::/32 2408:8274::/30 2408:8278::/31 2408:827a::/32 2408:8306::/31 2408:8308::/30 2408:8310::/30 2408:832a::/32 2408:832e::/31 2408:8330::/30 2408:8338::/32 2408:8340::/32 2408:8344::/30 2408:8348::/30 2408:834e::/31 2408:8350::/30 2408:8354::/32 2408:8356::/31 2408:8358::/30 2408:8360::/30 2408:8364::/31 2408:836c::/30 2408:8374::/30 2408:8378::/31 2408:837a::/32 2408:8406:100::/41 2408:8406:180::/42 2408:8406:d00::/41 2408:8406:d80::/42 2408:8406:1900::/41 2408:8406:1980::/42 2408:8406:2500::/41 2408:8406:2580::/42 2408:8406:3100::/41 2408:8406:3180::/42 2408:8406:3d00::/41 2408:8406:3d80::/42 2408:8406:4900::/41 2408:8406:4980::/42 2408:8406:5500::/41 2408:8406:5580::/42 2408:8406:6100::/41 2408:8406:6180::/42 2408:8406:6d00::/41 2408:8406:6d80::/42 2408:8406:7900::/41 2408:8406:7980::/42 2408:8406:8500::/41 2408:8406:8580::/42 2408:8406:9100::/41 2408:8406:9180::/42 2408:8406:9d00::/41 2408:8406:9d80::/42 2408:8406:a900::/41 2408:8406:a980::/42 2408:8406:b500::/41 2408:8406:b580::/42 2408:8407:500::/42 2408:8409::/40 2408:8409:100::/41 2408:8409:1a0::/43 2408:8409:1c0::/42 2408:8409:200::/42 2408:8409:c00::/40 2408:8409:d00::/41 2408:8409:da0::/43 2408:8409:dc0::/42 2408:8409:e00::/42 2408:8409:1800::/40 2408:8409:1900::/41 2408:8409:19a0::/43 2408:8409:19c0::/42 2408:8409:1a00::/42 2408:8409:2400::/40 2408:8409:2500::/41 2408:8409:25a0::/43 2408:8409:25c0::/42 2408:8409:2600::/42 2408:8409:3000::/40 2408:8409:3100::/41 2408:8409:31a0::/43 2408:8409:31c0::/42 2408:8409:3200::/42 2408:8409:3c00::/40 2408:8409:3d00::/41 2408:8409:3da0::/43 2408:8409:3dc0::/42 2408:8409:3e00::/42 2408:8409:4800::/40 2408:8409:4900::/41 2408:8409:49a0::/43 2408:8409:49c0::/42 2408:8409:4a00::/42 2408:8409:5400::/40 2408:8409:5500::/41 2408:8409:55a0::/43 2408:8409:55c0::/42 2408:8409:5600::/42 2408:8409:6000::/40 2408:8409:6100::/41 2408:8409:61a0::/43 2408:8409:61c0::/42 2408:8409:6200::/42 2408:8409:6c00::/40 2408:8409:6d00::/41 2408:8409:6da0::/43 2408:8409:6dc0::/42 2408:8409:6e00::/42 2408:8409:7800::/40 2408:8409:7900::/41 2408:8409:79a0::/43 2408:8409:79c0::/42 2408:8409:7a00::/42 2408:8409:8400::/40 2408:8409:8500::/41 2408:8409:85a0::/43 2408:8409:85c0::/42 2408:8409:8600::/42 2408:8409:9000::/40 2408:8409:9100::/41 2408:8409:91a0::/43 2408:8409:91c0::/42 2408:8409:9200::/42 2408:8409:9c00::/40 2408:8409:9d00::/41 2408:8409:9da0::/43 2408:8409:9dc0::/42 2408:8409:9e00::/42 2408:8409:a800::/40 2408:8409:a900::/41 2408:8409:a9a0::/43 2408:8409:a9c0::/42 2408:8409:aa00::/42 2408:8409:b400::/40 2408:8409:b500::/41 2408:8409:b5a0::/43 2408:8409:b5c0::/42 2408:8409:b600::/42 2408:840c::/40 2408:840c:200::/40 2408:840c:d00::/40 2408:840c:f00::/40 2408:840c:1a00::/40 2408:840c:1c00::/40 2408:840c:2700::/40 2408:840c:2900::/40 2408:840c:3400::/40 2408:840c:3600::/40 2408:840c:4e00::/40 2408:840c:5000::/40 2408:840c:5b00::/40 2408:840c:5d00::/40 2408:840c:6800::/40 2408:840c:6a00::/40 2408:840c:7500::/40 2408:840c:7700::/40 2408:840c:8200::/40 2408:840c:8400::/40 2408:840c:8f00::/40 2408:840c:9100::/40 2408:840c:9c00::/40 2408:840c:9e00::/40 2408:840c:a900::/40 2408:840c:ab00::/40 2408:840c:b600::/40 2408:840c:b800::/40 2408:840c:c300::/40 2408:840c:c500::/40 2408:840c:d000::/40 2408:840c:d200::/40 2408:840c:dd00::/40 2408:840c:de00::/40 2408:840d::/42 2408:840d:200::/42 2408:840d:400::/42 2408:840d:440::/43 2408:840d:600::/42 2408:840d:d00::/42 2408:840d:f00::/42 2408:840d:1100::/42 2408:840d:1140::/43 2408:840d:1300::/42 2408:840d:1a00::/42 2408:840d:1c00::/42 2408:840d:1e00::/42 2408:840d:1e40::/43 2408:840d:2000::/42 2408:840d:2700::/42 2408:840d:2900::/42 2408:840d:2b00::/42 2408:840d:2b40::/43 2408:840d:2d00::/42 2408:840d:3400::/42 2408:840d:3600::/42 2408:840d:3800::/42 2408:840d:3840::/43 2408:840d:3a00::/42 2408:840d:4e00::/42 2408:840d:5000::/42 2408:840d:5200::/42 2408:840d:5240::/43 2408:840d:5400::/42 2408:840d:5b00::/42 2408:840d:5d00::/42 2408:840d:5f00::/42 2408:840d:5f40::/43 2408:840d:6100::/42 2408:840d:6800::/42 2408:840d:6a00::/42 2408:840d:6c00::/42 2408:840d:6c40::/43 2408:840d:6e00::/42 2408:840d:7500::/42 2408:840d:7700::/42 2408:840d:7900::/42 2408:840d:7940::/43 2408:840d:7b00::/42 2408:840d:8200::/42 2408:840d:8400::/42 2408:840d:8600::/42 2408:840d:8640::/43 2408:840d:8800::/42 2408:840d:8f00::/42 2408:840d:9100::/42 2408:840d:9300::/42 2408:840d:9340::/43 2408:840d:9500::/42 2408:840d:9c00::/42 2408:840d:9e00::/42 2408:840d:a000::/42 2408:840d:a040::/43 2408:840d:a200::/42 2408:840d:a900::/42 2408:840d:ab00::/42 2408:840d:ad00::/42 2408:840d:ad40::/43 2408:840d:af00::/42 2408:840d:b600::/42 2408:840d:b800::/42 2408:840d:ba00::/42 2408:840d:ba40::/43 2408:840d:bc00::/42 2408:840d:c300::/42 2408:840d:c500::/42 2408:840d:c700::/42 2408:840d:c740::/43 2408:840d:c900::/42 2408:840d:d000::/42 2408:840d:d200::/42 2408:840d:d400::/42 2408:840d:d440::/43 2408:840d:d600::/42 2408:840d:dd00::/42 2408:840d:de00::/42 2408:840e:dd00::/40 2408:840e:de00::/40 2408:840f:1e0::/46 2408:840f:1e4::/47 2408:8410::/30 2408:8414::/31 2408:8417::/32 2408:8418::/32 2408:841a::/31 2408:841c::/31 2408:841e::/32 2408:8420::/31 2408:8422::/32 2408:8426::/31 2408:842a::/31 2408:842c::/32 2408:842e::/32 2408:8430::/31 2408:8434::/30 2408:8438::/31 2408:843c::/30 2408:8440::/31 2408:8444::/30 2408:8448::/32 2408:844b::/32 2408:844c::/30 2408:8452::/31 2408:8454::/32 2408:8456::/31 2408:8458::/30 2408:845c::/31 2408:8460::/30 2408:8464::/31 2408:8466::/32 2408:8469::/32 2408:846a::/31 2408:846c::/30 2408:8470::/31 2408:8474::/30 2408:8478::/31 2408:847a::/32 2408:84e1::/32 2408:84e2::/31 2408:84e4::/30 2408:84e9::/32 2408:84eb::/32 2408:84ec::/30 2408:84f0::/28 2408:856c::/31 2408:8606::/31 2408:8608::/29 2408:8610::/30 2408:8614::/31 2408:861a::/31 2408:861c::/32 2408:8620::/31 2408:8624::/31 2408:8626::/32 2408:862a::/31 2408:862d::/32 2408:862e::/31 2408:8630::/29 2408:8638::/31 2408:863c::/31 2408:8640::/32 2408:8642::/32 2408:8644::/30 2408:8648::/31 2408:864c::/32 2408:864e::/31 2408:8650::/30 2408:8656::/31 2408:8658::/30 2408:865c::/31 2408:865f::/32 2408:8660::/32 2408:8662::/31 2408:8664::/31 2408:8666::/32 2408:866a::/31 2408:866c::/30 2408:8670::/32 2408:8674::/30 2408:8678::/31 2408:867a::/32 2408:8706::/31 2408:8708::/29 2408:8710::/30 2408:8719::/32 2408:871a::/31 2408:8720::/30 2408:8726::/32 2408:872b::/32 2408:872f::/32 2408:8730::/30 2408:8734::/31 2408:8736::/32 2408:8738::/32 2408:873c::/31 2408:8740::/32 2408:8742::/32 2408:8744::/30 2408:8748::/29 2408:8752::/32 2408:8756::/31 2408:8758::/30 2408:875c::/32 2408:8760::/32 2408:8762::/31 2408:8764::/31 2408:8766::/32 2408:8768::/32 2408:876a::/32 2408:876c::/30 2408:8770::/32 2408:8772::/31 2408:8774::/32 2408:8776::/31 2408:8778::/31 2408:877a::/32 2408:877c::/30 2408:8806::/42 2408:8806:40::/43 2408:880c::/30 2408:8810::/30 2408:8814::/31 2408:8818::/31 2408:882c::/32 2408:883a::/32 2408:8844::/43 2408:8856::/31 2408:8858::/30 2408:8862::/31 2408:8864::/31 2408:8866::/32 2408:886e::/31 2408:8872::/32 2408:8878::/31 2408:887e::/32 2408:8906:20::/44 2408:8907:9000::/44 2408:890c::/31 2408:8912::/31 2408:8914::/30 2408:891c::/32 2408:8920::/32 2408:8924::/32 2408:892c::/32 2408:8936::/32 2408:893a::/32 2408:8940::/32 2408:8948::/32 2408:894c::/32 2408:894e::/32 2408:8956::/31 2408:8958::/30 2408:8962::/31 2408:8964::/31 2408:8966::/32 2408:896c::/32 2408:896e::/31 2408:8972::/32 2408:8978::/30 2408:897e::/32 2408:8a00:c000::/36 2408:8a00:d000::/37 2408:8a00:e000::/35 2408:8a01::/36 2408:8a02:b110::/44 2408:8a02:b120::/44 2408:8a04:8000::/36 2408:8a04:e000::/40 2408:8a05:6000::/35 2408:8a05:8000::/36 2408:8a06::/47 2408:8a06:100::/47 2408:8a21:4000::/35 2408:8a22:9200::/39 2408:8a22:9400::/38 2408:8a22:9800::/40 2408:8a22:9a00::/39 2408:8a22:9c00::/38 2408:8a22:a000::/37 2408:8a23:4000::/34 2408:8a24:4000::/34 2408:8a26:c000::/34 2408:8a27:4000::/35 2409:2000::/31 2409:2002::/32 2409:2003::/47 2409:27fa::/48 2409:27fa:f000::/48 2409:27fb::/48 2409:27fc::/48 2409:27fe::/33 2409:8000::/20 240a:2000::/40 240a:2001:100::/40 240a:2001:1000::/36 240a:4020:83a::/48 240a:4020:883a::/48 240a:4021:83a::/48 240a:4021:883a::/48 240a:4090:50::/48 240a:4090:120::/48 240a:4090:250::/48 240a:4090:1000::/39 240a:4090:1200::/40 240a:4090:2010::/48 240a:4090:2041::/48 240a:4090:2061::/48 240a:4090:3000::/39 240a:4090:3200::/40 240a:4090:5000::/39 240a:4090:5200::/40 240a:4090:7000::/39 240a:4090:7200::/40 240a:40b0:83a::/48 240a:40b0:283a::/48 240a:40b0:483a::/48 240a:40b0:683a::/48 240a:40c0:8000::/43 240a:40c0:a000::/43 240a:40c0:c000::/43 240a:40c0:e000::/43 240a:40c1::/43 240a:40c1:2000::/43 240a:40c1:4000::/43 240a:40c1:6000::/43 240a:40c1:a000::/43 240a:40c1:c000::/43 240a:40c1:e000::/43 240a:40c2::/43 240a:40c2:2000::/43 240a:40c2:4000::/43 240a:40c2:6000::/43 240a:40c2:8000::/43 240a:40c2:a000::/43 240a:40c2:c000::/43 240a:40c2:e000::/43 240a:40c3::/43 240a:40c3:2000::/43 240a:40c3:4000::/43 240a:40c3:6000::/43 240a:40c3:8000::/43 240a:40c3:a000::/43 240a:40c3:c000::/43 240a:40c3:e000::/43 240a:40c4::/43 240a:40c4:2000::/43 240a:40c4:4000::/43 240a:4280::/26 240a:42c0::/27 240a:42e0::/28 240a:42f0::/29 240a:42f8::/30 240a:6001::/48 240a:a000::/20 240a:c000::/20 240b:e001::/32 240b:e002::/31 240b:e004::/30 240b:e008::/29 240b:e010::/32 240c:6::/47 240c:6:3::/48 240c:f:1::/48 240c:4000::/22 240c:c000::/20 240d:4000::/21 240e::/20 2602:2e0:ff::/48 2602:f46d:6::/48 2602:f612::/40 2602:f7ee:ee::/48 2602:f92a:1314::/48 2602:f92a:a440::/44 2602:f92a:a46d::/48 2602:f92a:a46f::/48 2602:f92a:a470::/48 2602:f92a:dead::/48 2602:f93b:c00::/38 2602:f9ba:a8::/48 2602:f9f6:450::/48 2602:fab0:11::/48 2602:feda:1bf::/48 2602:feda:1d1::/48 2602:feda:1df::/48 2602:feda:2d0::/44 2602:feda:2f0::/44 2605:9d80:8001::/48 2605:9d80:8011::/48 2605:9d80:8021::/48 2605:9d80:8031::/48 2605:9d80:8041::/48 2605:9d80:8081::/48 2605:9d80:9003::/48 2605:9d80:9013::/48 2605:9d80:9023::/48 2605:9d80:9033::/48 2605:9d80:9042::/48 2605:9d80:9071::/48 2605:9d80:9092::/48 2804:1e48:9001::/48 2804:1e48:9002::/48 2a01:f100:1f8::/48 2a04:3e00:1002::/48 2a04:f580:8010::/47 2a04:f580:8090::/48 2a04:f580:8210::/47 2a04:f580:8290::/48 2a04:f580:9010::/48 2a04:f580:9012::/47 2a04:f580:9020::/48 2a04:f580:9030::/48 2a04:f580:9040::/48 2a04:f580:9050::/48 2a04:f580:9060::/48 2a04:f580:9070::/48 2a04:f580:9080::/48 2a04:f580:9210::/48 2a04:f580:9212::/47 2a04:f580:9220::/48 2a04:f580:9230::/48 2a04:f580:9240::/48 2a04:f580:9250::/48 2a04:f580:9260::/48 2a04:f580:9270::/48 2a04:f580:9280::/48 2a04:f580:9290::/48 2a06:3600:e000::/40 2a06:3600:fb00::/40 2a06:3600:fc00::/38 2a06:3605::/32 2a06:3606::/31 2a06:9f81:4600::/43 2a06:9f81:4620::/44 2a06:9f81:4640::/43 2a06:a005:260::/43 2a06:a005:280::/43 2a06:a005:2a0::/44 2a06:a005:a13::/48 2a06:a005:1c40::/44 2a09:b280:ff81::/48 2a09:b280:ff83::/48 2a09:b280:ff84::/47 2a0a:2840::/30 2a0a:2845:aab8::/46 2a0a:2846::/48 2a0a:6040:ec00::/40 2a0a:6044:6600::/40 2a0a:d681:e000::/40 2a0a:d681:fb00::/40 2a0a:d681:fc00::/38 2a0b:2542::/48 2a0b:4e07:b8::/47 2a0c:9a40:8fc1::/48 2a0c:9a40:8fc2::/47 2a0c:9a40:8fc4::/48 2a0c:b641:571::/48 2a0c:b641:722::/47 2a0e:aa01:1fff::/48 2a0e:aa06::/40 2a0e:aa06:490::/44 2a0e:aa06:500::/44 2a0e:aa06:520::/48 2a0e:aa06:525::/48 2a0e:aa06:541::/48 2a0e:aa06:56a::/48 2a0e:aa07:e01a::/47 2a0e:aa07:e021::/48 2a0e:aa07:e030::/48 2a0e:aa07:e035::/48 2a0e:aa07:e039::/48 2a0e:aa07:e151::/48 2a0e:aa07:e155::/48 2a0e:aa07:e15f::/48 2a0e:aa07:e160::/47 2a0e:aa07:e162::/48 2a0e:aa07:e16a::/48 2a0e:aa07:e1a0::/44 2a0e:aa07:e210::/48 2a0e:aa07:e21c::/47 2a0e:aa07:e220::/44 2a0e:aa07:f0d0::/46 2a0e:aa07:f0d4::/47 2a0e:aa07:f0d8::/48 2a0e:aa07:f0de::/47 2a0e:b107:12b::/48 2a0e:b107:272::/48 2a0e:b107:740::/44 2a0e:b107:c10::/48 2a0e:b107:178d::/48 2a0e:b107:178e::/48 2a0f:1cc5:20::/44 2a0f:1cc5:110::/44 2a0f:1cc5:130::/44 2a0f:1cc5:140::/44 2a0f:1cc5:600::/47 2a0f:1cc5:603::/48 2a0f:1cc5:645::/48 2a0f:1cc5:661::/48 2a0f:1cc5:662::/48 2a0f:1cc5:690::/48 2a0f:1cc5:6a0::/48 2a0f:1cc5:900::/40 2a0f:1cc5:c01::/48 2a0f:1cc5:f00::/46 2a0f:1cc5:f04::/47 2a0f:1cc5:f06::/48 2a0f:1cc5:f08::/47 2a0f:1cc5:fff::/48 2a0f:1cc5:1310::/44 2a0f:1cc5:1400::/48 2a0f:1cc5:1c00::/47 2a0f:1cc5:1c02::/48 2a0f:1cc5:1c30::/48 2a0f:1cc5:1cc0::/48 2a0f:1cc5:1d10::/47 2a0f:1cc5:1d14::/48 2a0f:1cc5:2d01::/48 2a0f:1cc5:2d03::/48 2a0f:1cc5:ffff::/48 2a0f:1cc6:b110::/47 2a0f:2706::/32 2a0f:6282:d000::/48 2a0f:6284:300::/40 2a0f:6284:400::/42 2a0f:6284:440::/43 2a0f:6284:3000::/39 2a0f:6284:4c00::/44 2a0f:6284:4c20::/44 2a0f:6284:4c30::/48 2a0f:6284:4c40::/43 2a0f:6284:4c60::/44 2a0f:6284:4c80::/43 2a0f:6284:4ca0::/44 2a0f:6284:4cd0::/44 2a0f:6284:4f00::/40 2a0f:6284:e000::/35 2a0f:7803:f680::/44 2a0f:7803:fa21::/48 2a0f:7803:fa22::/47 2a0f:7803:fa24::/46 2a0f:7803:fe81::/48 2a0f:7803:fe82::/48 2a0f:85c1:ba5::/48 2a0f:85c1:bfe::/48 2a0f:85c1:ce1::/48 2a0f:85c1:cf1::/48 2a0f:9400:6110::/48 2a0f:9400:7700::/48 2a10:ccc6:66cc::/46 2a12:cb46::/36 2a12:cb47:ffff::/48 2a12:f8c3::/36 2a13:1800::/48 2a13:1800:10::/48 2a13:1800:80::/44 2a13:1800:300::/44 2a13:1801:180::/43 2a13:a5c3:ff21::/48 2a13:a5c3:ff50::/44 2a13:a5c7:1800::/40 2a13:a5c7:2121::/48 2a13:a5c7:2801::/48 2a13:a5c7:3100::/40 2a13:a5c7:3301::/48 2a13:a5c7:3302::/48 2a13:a5c7:3304::/48 2a13:a5c7:3306::/47 2a13:a5c7:3309::/48 2a13:aac4:f000::/44 2a14:7c0:5103::/48 2a14:4c41::/32 2a14:67c1:70::/47 2a14:67c1:74::/48 2a14:67c1:702::/47 2a14:67c1:a020::/48 2a14:67c1:a023::/48 2a14:67c1:a024::/48 2a14:67c1:a02a::/48 2a14:67c1:a02f::/48 2a14:67c1:a040::/47 2a14:67c1:a100::/43 2a14:67c1:a121::/48 2a14:67c1:a123::/48 2a14:67c1:a125::/48 2a14:67c1:a128::/48 2a14:67c1:a144::/48 2a14:67c1:b000::/48 2a14:67c1:b065::/48 2a14:67c1:b066::/48 2a14:67c1:b068::/47 2a14:67c1:b100::/46 2a14:67c1:b105::/48 2a14:67c1:b107::/48 2a14:67c1:b110::/48 2a14:67c1:b130::/46 2a14:67c1:b134::/48 2a14:67c1:b136::/48 2a14:67c1:b141::/48 2a14:67c1:b142::/47 2a14:67c1:b146::/48 2a14:67c1:b460::/44 2a14:67c1:b4b0::/44 2a14:67c1:b4e0::/44 2a14:67c1:b500::/47 2a14:67c1:b511::/48 2a14:67c1:b514::/48 2a14:67c1:b530::/44 2a14:67c1:b561::/48 2a14:67c1:b563::/48 2a14:67c1:b578::/48 2a14:67c1:b582::/48 2a14:67c1:b586::/47 2a14:67c1:b588::/47 2a14:67c1:b590::/48 2a14:67c1:b599::/48 2a14:67c1:b5e0::/44 2a14:67c1:c300::/40 2a14:67c1:c600::/40 2a14:67c2:800::/40 2a14:67c2:c32::/48 2a14:67c2:c64::/48 2a14:67c3:30::/44 2a14:67c3:c0::/48 2a14:67c3:d0::/44 2a14:67c3:520::/44 2a14:67c3:e622::/48 2a14:7580:730::/44 2a14:7580:740::/44 2a14:7580:777::/48 2a14:7580:d000::/37 2a14:7580:d800::/39 2a14:7580:df00::/40 2a14:7580:fe00::/40 2a14:7580:ffe4::/48 2a14:7580:fff4::/48 2a14:7580:fff7::/48 2a14:7580:fffa::/48 2a14:7581:ffb::/48 2a14:7581:30b6::/48 2a14:7581:3100::/40 2a14:7581:3401::/48 2a14:7583:f224::/48 2a14:7583:f228::/48 2a14:7583:f22c::/48 2a14:7583:f244::/48 2a14:7583:f264::/48 2a14:7583:f268::/48 2a14:7583:f300::/46 2a14:7583:f304::/47 2a14:7583:f306::/48 2a14:7583:f411::/48 2a14:7583:f4f0::/47 2a14:7583:f4f4::/48 2a14:7583:f4fe::/48 2a14:7583:f500::/48 2a14:7583:f701::/48 2a14:7583:f703::/48 2a14:7583:f704::/46 2a14:7583:f708::/46 2a14:7583:f70c::/48 2a14:7583:f743::/48 2a14:7583:f744::/48 2a14:7583:f764::/48 2a14:7586:6100::/47 2a14:7586:6103::/48 2a14:7586:6104::/48 2a14:7586:6107::/48 2a14:7586:6110::/48 2a14:7dc0:506::/48 2c0f:f7a8:8011::/48 2c0f:f7a8:8050::/48 2c0f:f7a8:805f::/48 2c0f:f7a8:8150::/48 2c0f:f7a8:815f::/48 2c0f:f7a8:8211::/48 2c0f:f7a8:9020::/48 2c0f:f7a8:9041::/48 2c0f:f7a8:9211::/48 2c0f:f7a8:9220::/48 ================================================ FILE: luci-app-homeproxy/root/etc/homeproxy/resources/china_ip6.ver ================================================ 20260424052559 ================================================ FILE: luci-app-homeproxy/root/etc/homeproxy/resources/china_list.txt ================================================ 0.zone 00.net 000.link 000000.net 0000001.xin 000001.xin 00000qpqp00000.com 0000550xtz2.shop 0000552bb0.shop 0000552bb1.shop 0000552bb2.shop 0000552bb3.shop 0000552bb4.shop 0000f0deb5f4e6c3.com 0000wb.com 0001.xin 000114.com 00012023.com 0001700.xin 0002.xin 0003399xtz1.shop 0003399xtz2.shop 00042.com 00058.com 0006111xtz2.shop 0006266.com 00063.xin 000678.xin 0006fc9541020.beer 000700.com 000714.xyz 000793.com 0007999ab0.shop 0007999ab1.shop 0007999ab2.shop 0007999ab3.shop 0007999ab4.shop 0007999ab5.shop 0007999ab6.shop 0007999ab7.shop 0007999ab8.shop 0007999ab9.shop 0008.xin 00086.net 000868adh1.shop 000868agl1.shop 000868atz2.shop 0008bet.com 0009.xin 00091.xin 000b0fb9410281.beer 000dn.com 000e.com 000pc.net 001.com 001019.xin 001060.com 00117163.xyz 001d628661009.beer 001daima.com 001fzc.com 001jm.com 001job.com 001jp.com 001kd.com 001km.com 001pp.com 001pt.com 001sj.net 001tudou.com 001u.com 001u2.xin 001wifi.com 001win5.cc 002.xin 002049.com 00257.com 002574.com 0028.xin 002lzj.com 0033.com 00333118.com 0037wan.com 00394.net 003caixukun.xin 003store.com 004.xin 0044696.com 004678.com 004837963.xyz 005.tv 0056.com 00563.com 0058.com 005854.xin 00615.net 00653.xin 0066.com 00665ba1f014ee0e.com 00666.xin 006shipin.org 007.pub 0073.com 00772229.com 00791.com 007card.vip 007gameapp10.com 007manhua.com 007shoes.com 007swz.com 007szx.com 007yx.com 008.bet 00817.com 00847.xin 0086l.com 0086org.com 008n0l12145.xin 008sport.com 009.xin 0098118.com 009job.com 009y.com 00bx.com 00cdn.com 00cf.com 00cha.com 00cha.net 00ef6bce51ccd47d.com 00fkh408382.xin 00hh.com 00hzx.xin 00i1xg5s3s.xin 00ic.com 00it.net 00lfoo16454.xin 00o5nm18258.xin 00plri7b.xin 00r9fexyub.xin 00shu.com 00shu.la 00tera.com 00tu.com 00ukkgtc5.xin 00ve1bg9.xin 00wv.com 00xu.com 01-2--3.xin 01-cf.com 010.cc 010123456.com 010155.net 0101cdn.com 0101e.com 0101game.online 0101semi.com 0101ssd.com 010203.com 010237.com 01095113.com 010b.com 010bianhu.com 010bjzs.com 010cb.com 010cns.com 010dell.com 010dh.com 010dsmzyy.com 010gaokao.com 010huaer.com 010huashi.com 010jianzhan.com 010lf.com 010p.cc 010shangpu.com 010time.com 010xiongdi.com 010zaixian.com 011.com 011.xin 011a4460e391a7f4.com 0121.xin 012233.com 0123.xin 0123401234.com 0123456789.com 0123f.xin 0127.xin 01291.xin 01317.org 01350.work 0135135.com 01368.com 0138.com 014.cc 014.xin 01401.com 0142f5348f8cd094.com 0143.xin 014929.com 014cbd7e810301.beer 014esw24222.xin 015.xin 0158f80.com 016.xin 016sf.com 018.xin 018yun.xin 019.xin 019103.com 01975cf969f20191.com 019jb0sc.xin 01a7d69861013.beer 01be6bfabbd3024a.com 01bzw.us 01bzw.xyz 01caijing.com 01d55251a10241.beer 01dou.com 01f438bf710301.beer 01ffa63e710261.beer 01home.com 01hour.com 01hr.com 01isp.com 01isp.net 01jinhua.com 01jzw.com 01ki.com 01p.com 01p6xc08451.xin 01pxzw0737.xin 01rv.com 01skjj.com 01studio.cc 01teacher.com 01wb.com 01ww.xin 01x13k30.xin 01yo.com 01yuanma.com 01yun.com 01zenith.net 01zhuanche.com 01zk.com 01zph.com 02-89910011.com 020.com 020.net 0200.xin 02000.xin 02017.com 0208.com 020883.com 020910.com 020banjia.net 020bdqn.net 020gzjx.com 020h.com 020job.com 020trvl.com 020xue.com 020ym.com 020zp.net 020ztc.com 021-116114.com 021.com 021.net 0214.com 02156506666.net 02163.com 0217.xin 021a5f9841009.beer 021bolang.com 021byb.com 021dianyuan.com 021dzjx.com 021east.com 021gjhb.com 021huamei.com 021huaying.com 021images.com 021images.vip 021ja.com 021jgyy.com 021jingwei.com 021kd.com 021lawfirm.com 021phone.com 021ren.com 021sports.com 021tk.com 021van.com 021wfz.com 021ye.com 021yongzhuo.com 021zhuang.com 021zsb.com 022003.com 0222.xin 0229.xin 022china.com 022meishu.com 022s.com 022shui.com 022sunny.com 022v.com 023086.com 023bc5v99h.xin 023cj.com 023cq.cc 023dir.com 023dns.com 023fyy.com 023gmdk.com 023up.com 023xfyy.com 023xiaoyuan.com 023yts.com 023yy95.net 023yynk.net 023zhang.xin 023zp.com 02405.com 024365.com 0245.cc 0245.net 02456789.com 0246b05e23a644b5.com 024888.net 024bj.com 024eps.com 024f9wrcm.xin 024frde.com 024fuchan.com 024fuwu.com 024heyi.com 024hh.com 024huada.com 024jsq.com 024zxw.com 025.com 025002.com 02516.com 025ct.com 025kaiyi.com 025nj.com 025njtf.com 025sc.com 025tffs.com 025tongfeng.com 025tuanjian.com 025tuopan.com 025xl.com 025zp.com 0264032a252fcf53.com 026hao.com 026idc.com 0270.cc 027119.xin 02712122.com 02727.com 02766667777.com 0279.net 027965888.net 027accp.com 027aige.com 027ar51848.xin 027art.com 027chuxun.com 027chwl.com 027chx.com 027cloud.com 027dir.com 027eat.com 027hhl.com 027hpedu.com 027hpit.com 027htxt.com 027hxzy.com 027hy.com 027idc.com 027jsxh.com 027one.com 027qjxh.com 027qyy.com 027tianlong.com 027tytpf.com 027wcbyy.com 027yx.com 027zb.com 027zikao.com 027zpw.com 028-xhxgt.com 0283home.com 0289kh1448.xin 028csc.com 028desite.com 028f.com 028hema.com 028kuaidai.com 028ltzx.com 028office.com 028px.com 028pxw.com 028sh.com 028sjkj.com 028yyyy.com 029200.com 02924.com 029558.com 029900.com 029gl.com 029jiuda.com 029judao.com 029k.com 029lvwo.com 029shw.com 029taihe.com 029wsw.com 029xxw.com 029yjy.com 029zp.com 02b5c31e511032.beer 02bjmbzoat.xin 02d.com 02fb56599d46ae7d.com 02hm.com 02kdid.com 02lb.com 02lu.com 02shu.com 02tf6d18201.xin 02u21a0lka.xin 02wan.com 02wq.com 02yc.com 02z97426404.xin 03.com 030.xin 030303.com 030hag5r91.xin 030mall.com 030yo.xin 0310it.com 0311.cc 031130.xyz 03118888.com 0311hd.com 0311led.com 0311wifi.com 0315.center 0316.cc 0316366.com 03167.com 0316yun.com 0320.work 0321.xin 03241119.xyz 03256.xin 0328.com 032ab0b0a10292.beer 033.com 033033.com 0333.xin 03369709d10301.beer 0349.xin 035110000.com 0351data.com 0351fdc.com 0352fang.com 0354rcw.com 0355fk.com 0356.com 0356f.com 0357dc382faf80f5.com 0357hz.com 0359tv.com 0368.com 036yx.com 0370-2221999.net 0371jixie.com 0371lianghao.com 0371sou.com 0371wang.com 037398.com 03770e40910272.beer 0377auto.com 0377ny.xin 0378zz.com 0379home.com 0379wan.com 037lcq08115.xin 038d0addd10241.beer 0391fc.com 03964.com 039r93jevs.xin 03b2ef6fe1960045.com 03bcyh2069.xin 03cl.xin 03cz8604316.xin 03d882c8810271.beer 03dq.com 03f99b91610271.beer 03fcw.com 03fdcw.com 03fugu.xin 03k.org 03m7pa17g.xin 03ssif8zb.xin 03supin.com 03tc.com 03u.com 03wy.com 03xs.com 040.xin 04052.xin 04075k2xgr.com 04085o08379.xin 0411.com 041101.com 0411ct.com 0411cxd.com 0411e.com 0411gh.com 0411hd.com 0411king.com 0411xslvshi.com 0411zssy.com 0415123.com 0416job.com 041799.com 0421wcbzk.com 0427.com 0429f95301011.beer 0430.com 0431cn.com 0434.cc 0437.com 043j8118366.xin 0444.xin 0452e.com 0453.com 0453bc39456389ff.com 0454.cc 0455tv.com 0455zd.com 0456yun.com 046.xin 0460.com 0470a.com 0472.com 04763.work 0476vip.com 048.xin 0484.xin 048o9ml5x3.xin 049.com 049.xin 04a1to24453.xin 04adca98c1022.beer 04apr5bl.xin 04be22jjkv.xin 04c01e0ad4c891d7.com 04db11e1ea504cf2.com 04ip.com 04l68n18142.xin 04n1ns24180.xin 04vfkt24311.xin 05.gd 050.xin 0502.xin 050400.com 050504.xin 0507c.xin 0509.xin 051058.com 0510gcw.com 0510gtgc.com 0510syedu.com 0510zyw.com 0513.net 0513.org 0513011.com 0513zs.com 0514.com 0514.net 05148.cc 0514gcw.com 051591.com 0515kf.com 0515smw.com 0515yc.com 0515yy.com 0516ds.com 0516k.com 0517.net 0517cw.com 0517man.com 0517w.com 0518home.com 0518yy.com 0523114.com 05236.com 052360.com 0523bbs.net 0523tx.net 0523zp.com 0523zz.com 0527.xin 05273.com 0527zp.com 0527zz.com 05280.xin 0529.xin 052yx.com 0531.com 053135.com 0531kt.com 0531soso.com 0531wt.com 0532.com 053217.com 0532eu.com 0533.net 0534.com 0534888.com 0535-0411.com 0535cp.com 0535you.com 05366196.com 0536job.net 0536qz.com 0536weixin.com 0537love.com 0537ys.com 0537yz.com 0539fc.com 053c.com 0540.xin 0543.xin 0543bbs.com 0543hr.com 0544.xin 054400.com 0545.xin 0546.xin 0546fdc.com 0549.xin 0550.com 055110.com 055178.com 0551wl.com 0552jie.com 0553zsw.com 0554news.com 0554qd.xin 0554shdz.com 0554zp.com 0555fc.com 0557100.com 0558job.com 0559hs.com 0559jqdq.com 055dq.xin 0564abc.com 0564shw.com 0566job.com 057.com 057.xin 0570fc.com 0570zs.com 057191.com 0571crm.com 0571gszc.com 0571nh.com 0571pu.com 0571zp.com 0572h.com 0572home.com 0572zpw.com 0573fang.com 0573ol.com 0573ren.com 0574bbs.com 0574nbjg.com 0575.host 057555.com 0575bbs.com 0575jb.com 0575life.com 0575qs.com 0575zhuji.com 0576qq.com 0577-it.com 0577365.net 0577cnw.com 0577gyy.com 0577home.net 0577hr.com 0577job.com 0577qiche.com 0578rencai.com 05790.com 0579818.com 0579com.com 0579fw.com 057x.com 05880a57e1022.beer 058a2a0741016.beer 058e001fc10251.beer 058ed0543d61b235.com 058idc.com 05927.com 0592dsw.com 0592jj.com 0592ui.com 0592xl.com 0594.com 0594.work 0594fake.com 0594hyw.com 0594sneaker.com 0595.com 0595a74c711012.beer 0595job.com 0595qz.com 0595rc.com 0596fc.com 0597kk.com 0597music.com 0597ok.com 0597seo.com 0598777.com 0598yu.com 0599yx.com 05bf51fa911012.beer 05bq.com 05by3k248.xin 05cc8c4cc1023.beer 05e44607310271.beer 05idc.com 05info.com 05ja1g16464.xin 05n2azbp.xin 05p9uj1253.xin 05rjxqsp5i.xin 05sun.com 05vauwva3.xin 05vm.com 05wan.com 05wang.com 05youxi.com 060.xin 0603.xin 0605.com 0609.com 061.xin 0616.xin 0616a9dbe68fac9c.com 0618.com 0618.xin 06192.com 0623.xin 062wfly8z.xin 0631.xin 063108.com 0631rc.com 0632.xin 0632idc.com 0633.xin 0634.com 0634.xin 0635.com 0635.xin 06362.com 064.xin 065201.com 065423cd010311.beer 06555.com 0660hf.com 0663.net 06639.xin 0663job.com 0666.xin 0668.com 06681.com 0668gz.com 067555.com 06888.work 068rolbmiz.xin 069.xin 0693f784d1023.beer 06abc.com 06b8ziwxjf.xin 06climate.com 06dc36591a49441c.com 06ee1860c1015.beer 06game.com 06ik7744n.xin 06ps.com 06tn.com 06z8mzlma.xin 07.cc 07.la 070725.xyz 07073.com 07073h5.com 07073vr.com 0708.com 0712f.com 0712fang.com 0714.com 0714110.xin 0715fc.com 0715rc.com 0715zp.com 0716fw.com 0716mr.com 07177.com 0718.cc 0718qp.com 0718xf.com 072.xin 0722fc.com 0722zs.com 0724c.com 0725.com 0728f.com 0730188.com 0730news.com 073122.com 0731777.com 0731a.com 0731cfw.com 0731fdc.com 0731hds.com 0731i.com 0731job.com 0731mcw.com 0731pgy.com 0731tg.com 0731wan.com 0733news.com 0734zpw.com 0735.com 07358.com 0735jz.com 0735zx.com 0735zz.com 0736fdc.com 0736zp.com 0736zz.com 0738.cc 0738rc.com 073980.com 0739qq.com 0739tt.com 073e5367a10292.beer 073img.com 073pic.com 07430743.com 0743fd8231024.beer 0744114.com 0744tv.com 0746job.com 0746news.com 0750.xin 0750rc.com 0751.cc 075238.com 0752qc.com 0753zz.com 0755.net 07551.com 07551.net 0755400.com 075577777.com 0755888.com 0755910.com 0755bdqn.com 0755bzf.com 0755caibao.com 0755cts.com 0755fm.com 0755gty.com 0755hao.com 0755haoyu.com 0755hj.com 0755hz.com 0755jz.net 0755rc.com 0755sszx.net 0755yf.net 0755zb.com 0756fang.com 0756idc.com 0756tong.com 0756zx.com 0757fc.com 0757info.com 0757p.com 0757rc.com 0758net.com 0759.pw 0759home.com 0759job.com 0759k.com 0759yc.com 076.xin 0760.com 0760bw.com 0760rc.com 07629.org 076299.com 076299.net 0762uu.com 0763f.com 076650.com 07666.com 0768000.com 0769auto.com 0769che.com 0769king.xin 0769net.com 0769pf.com 0769sun.com 0769sx.com 0769web.net 0769yp.com 076lvo.xyz 076t0uhtl9.xin 077.xin 0771.com 0771.tv 07712008.com 07715555555.com 0771cts.com 0771cyts.com 0771fukang.com 0771rc.com 0772fang.com 0772gcw.com 0772job.com 0772lou.com 07743988888.com 07752267777.com 07754255555.com 0775fcw.com 0775jzw.com 0775qc.com 0775yzf.com 0776.cool 07761.com 0776hr.com 0779-2678999.com 078.xin 078079.com 07890.com 078bdd796e8b4b12.com 07908.com 0791abc.com 0791br.com 0791fuwu.com 0791look.com 0791qzw.com 0792jj.net 0792ju.com 0792lsly.com 0792u.com 0793.tv 07938.com 0794zp.com 0797122.com 0797auto.com 0797ayzp.com 0797rs.com 0797tuan.com 0797zz.com 0798.cc 0799z.com 079mxd.com 07ba0de711020.beer 07bmss01426.xin 07cn.com 07cn.net 07e12xs2io.xin 07f0798569af4d70.com 07fe8668211012.beer 07fea775dffd96d4.com 07jfrv01301.xin 07k6np0378.xin 07kacm20339.xin 07net01.com 07ozikk8w3.xin 07ren.com 07sh.com 07swz.com 07u82t16391.xin 07w97p18164.xin 07zk7z26405.xin 080.xin 0800c988e1010.beer 0801.xin 0804.org 080e068141ea500e.com 081.com 081.xin 0813fs.com 0817.net 0817ch.com 0817tv.com 0818tuan.com 0818tuangou.com 082.xin 0820.xin 0827ug.com 0830bbs.com 0831.app 0831home.com 0832mh.com 0835.com 0835meiya.com 0838.com 0838che.com 0839zp.com 08424b74011032.beer 0843d5944883e752.com 085.com 0852diaoyu.com 0853rc.com 0856st.com 0857job.com 0859job.com 0859qp.com 0859sy.com 0860.xin 086019.com 08644.com 0871aaa.com 0873js.com 0877zp.com 0890.com 08952.com 0898.net 089858.com 0898888.com 0898hq.com 0898mmf.com 0898uf.com 089u.com 08an.com 08ar.com 08b68dbbbf876114.com 08c6.com 08c8b537f1021.beer 08c9f63d31021.beer 08cms.com 08fc8f0ee3f2768a.com 08ky.com 08px.com 08qx.com 08wojia.com 08x1am20483.xin 08zf.com 0904.cool 090901.xin 090expo.com 0912158.com 0912app.com 0912fdj.com 0913ss.com 0915531111.xin 0916001.com 0917.com 0917888.com 0917e.com 0918f5dadde012c3.com 0919123.com 092394.com 093.com 0935e.com 0937.cc 0937.com 0937.net 0937js.com 09388.xin 0938edu.com 0938net.com 0939.net 0939.xin 093nd9.com 094.xin 0941.org 09451.com 0945a5ee91011.beer 094j35.com 095.xin 095196555.com 0951job.com 09527.xin 0952xh.com 0959930d71015.beer 096.xin 0962xb24260.xin 0963d9712a525457.com 096663.com 0972xxg.com 0979.xin 0990fc0011011.beer 0991dj.com 0991net.com 0992.cc 09928.xin 09946.center 09948.xin 099913.com 099b127ae166d8f1.com 09aag016266.xin 09b3045664731d42.com 09c5062ea1020.beer 09e12x16370.xin 09ea354bd9542ba7.com 09game.com 09iatm1z.xin 09lc5d12399.xin 09mhncdop.xin 09pay.xin 09pj75gs09.xin 09pzq024240.xin 09rrqh7s62.xin 09shijue.com 09vvme1l.xin 09xx5a24352.xin 09z7wy3k.xin 0a0fx7vz1l.xin 0a2d.com 0a2g5a04175.xin 0a32mt201.xin 0a64qa16273.xin 0a6ri001390.xin 0a8a112e8bb5045e.com 0acrdtuhed.xin 0ag8kg01470.xin 0ape4t08268.xin 0aq4hxqs.xin 0ax2rjo3od.xin 0axoa626262.xin 0b145c21210e933c.com 0b4xq91061.xin 0b6e0659811021.beer 0b8ky116130.xin 0barrfplp.xin 0bb261a6a46d766a.com 0bb875c361022.beer 0bbd0e535194e7f7.com 0bddiq9a0q.xin 0bdfe52341114.beer 0bef0493410272.beer 0bjasw18181.xin 0bke7a16362.xin 0bmfo404187.xin 0bqa9826122.xin 0bw82f20390.xin 0bxed90150.xin 0c3bjz070.xin 0c449995810292.beer 0c9a2959d10311.beer 0c9b8639d1024.beer 0car0.com 0cname.com 0cokid18352.xin 0cq9hzrz.xin 0cqpj504251.xin 0d.work 0d00.xin 0d06e627dbe6654a.com 0d263788316151cb.com 0d3lnlkylu.xin 0d49f571e1017.beer 0daily.com 0day.xin 0ddvic16247.xin 0de41y26132.xin 0dian8.org 0dm.com 0dmhu412466.xin 0dou490764.xin 0dt83e18342.xin 0du.net 0du4br04412.xin 0duw.com 0duxs.com 0dxkge0412.xin 0e0c2e9e94622290.com 0e38e883511032.beer 0e706b6c62da3920.com 0e76427381016.beer 0e7o6216306.xin 0easy.com 0ecff3e99dce5b33.com 0ee18d4c192243b3.com 0efef58c41014.beer 0efghij.com 0egh661666.xin 0eghje0112.xin 0ek4sg08401.xin 0emvvs04229.xin 0en6hz2u.xin 0ew4p6fb1.xin 0f0lj908444.xin 0f602h26461.xin 0f63e6089d80dffe.com 0fbcjwr4x2.xin 0fbs03i1i.xin 0fc45y3sbr.xin 0fe5d43561011.beer 0fe7e0a941011.beer 0fep69v3.xin 0fj5qx12422.xin 0fl1j80347.xin 0flnis04328.xin 0fnkjai21b.xin 0g13wzk4pj.xin 0g1s.com 0g5q5hrcbo.xin 0g9l08zbsc.xin 0ggt51agn0.xin 0ggw7u16311.xin 0gklqj5hal.xin 0gmu6zwf87.xin 0gouche.com 0gps2ppnu9.xin 0gtsz9jw.xin 0gyyc924408.xin 0h3lfj12415.xin 0hbgmcs5gb.xin 0he0.com 0hgame.com 0hl5ntdm0i.xin 0hq7006r07.xin 0hzxwa2471.xin 0i-i0.com 0i6js716143.xin 0i71r4qg.xin 0im9f31630.xin 0iq8q8163.xin 0iwgt324206.xin 0j1oul247.xin 0j3h9616299.xin 0j4wdc8bs8.xin 0j783008494.xin 0jb520030.xin 0jl3h724403.xin 0k2u4didtd.xin 0k6dm96.xin 0ka.com 0kdmutnc.xin 0kee.com 0kfq5e16254.xin 0kkkkkt.com 0km5ip01196.xin 0kmny96j9gtb.xin 0koxpnwfx.xin 0krmre24376.xin 0kt0nm0380.xin 0l2nf218236.xin 0l7mqk1284.xin 0leb5s268.xin 0lircg1235.xin 0lw1ib2sa.xin 0lzamwtu.xin 0m7eaq04292.xin 0m93wwr0.xin 0mbvyf1437.xin 0me14c18373.xin 0mfbac1gsj.xin 0mfqi124198.xin 0mk9ht2449.xin 0moju716460.xin 0mrzee12192.xin 0ms.one 0ms65u0s8t.xin 0mu4f8xw0k.xin 0n469e12312.xin 0n5hylf79s.xin 0n663xtw.xin 0nc13z04356.xin 0nejoqlu3.xin 0nelddmoha.xin 0nk5dhsp.xin 0nnk3nxyu3.xin 0npkjexon.xin 0nqxhrpw30.xin 0nw2sq2622.xin 0nzk4t3lrn.xin 0o0o.xin 0o1djo20199.xin 0o6wqk24113.xin 0o8lgn20118.xin 0obhhr12439.xin 0okm1a12139.xin 0olgbi04133.xin 0olut8.com 0one.xin 0oo70c26213.xin 0or1h40327.xin 0p21iz0729.xin 0p2wrugphn.xin 0p4ips24224.xin 0p5i7dxr6y.xin 0p901yay.xin 0plpxp1898.xin 0poho720169.xin 0ptf4g04404.xin 0pxrom71q8.xin 0q5stv04123.xin 0q9y3z18365.xin 0qd9dnzon9.xin 0qm88r0891.xin 0qqczcn8l8.xin 0r8ag0y7di.xin 0range5.xin 0rg.xin 0rgojh0146.xin 0rgu7ha3p.xin 0rl.cc 0rljmz01274.xin 0rz.ltd 0s73o26p67.com 0s8s.com 0sm.com 0snd.cc 0u.com 0voice.com 0x3.com 0x3.me 0x5.me 0x6.me 0x7.me 0x9.me 0xaa55.com 0xff000000.com 0xffffff.org 0xiao.com 0xjqlun2.work 0xsky.com 0xue.com 0z.gs 0zn5mg.asia 1-123.com 1-b.tc 1-cs.net 1-du.net 1-luxury.com 1-yuan.net 1.biz 1.cc 100-tong.com 100.com 100.me 100.travel 10000.com 100000w.com 10000gd.tech 10000idc.net 10000job.com 10000link.com 10000post.com 10000shequ.com 10000tc.com 10000yao.com 10001wan.com 100024.xyz 1000360.com 10006.info 1000coco.com 1000fun.com 1000my.com 1000phone.com 1000phone.net 1000plan.org 1000qm.vip 1000qs.com 1000su.com 1000thinktank.com 1000tuan.com 1000uc.com 1000xuexi.com 1000xun.com 1000zhu.com 10010.com 10010.net 10010.team 10010400.net 10010hb.net 10010js.com 10010ll.com 10010nm.com 1001g.com 1001hw.com 1001p.com 100248.com 10034.com 100520.com 100580.com 100669.com 1008011.com 1008120.com 10086.com 10086.games 10086.world 1008656.com 1008691.com 10086kuaixiu.com 100allin.com 100alpha.com 100ask.net 100ask.org 100audio.com 100baisui.com 100bt.com 100chou.com 100chui.com 100cjc.com 100credit.com 100cup.com 100d3.com 100data.com 100du.com 100e.com 100eby.com 100eshu.com 100exam.com 100fang.com 100font.com 100guoji.com 100hsl.com 100incense.com 100inn.cc 100intlschool.com 100ip.net 100jg.com 100jiapu.com 100kk.com 100ksw.com 100lake.com 100lbj.com 100legend.com 100loujia.com 100market.net 100md.com 100mian.com 100mmedia.net 100nets.com 100njz.com 100nong.com 100offer.com 100old.com 100pd.com 100pei.com 100ppi.com 100puzzles.com 100qu.net 100run.com 100shop.com 100shuai.com 100skin.com 100stone.com 100sucai.com 100szy.com 100t.com 100tal.com 100te.com 100tiao1.net 100tmt.com 100tone.com 100top1.com 100try.com 100tv.com 100txy.com 100vr.com 100wa.com 100web.store 100weidu.com 100wen.com 100wsanguo.com 100xgj.com 100xhs.com 100xiao.com 100xin.com 100xuexi.com 100yangsheng.com 100ycdn.com 100ye.com 100ye.net 100yigui.com 100yingcai.com 100yiyao.net 100zd.com 100zhuang.com 100zp.com 101.com 10100.com 10100000.com 10101111.com 10101111cdn.com 1010gamer.com 1010jiajiao.com 1010jz.com 1010pic.com 1010sh.com 1010t.com 101505.com 10155.com 1015600.com 10185.com 101hair.com 101hr.com 101jiajiao.com 101weiqi.com 1024.ink 1024fuli.com 1024g.com 1024ie.com 1024nic.com 1024ss.com 1024tools.com 1024wl.com 1024zx.com 1026jz.com 10284.com 102no.com 102pay.com 103153.com 10333.com 10349.com 10479.org 1050qm.com 105mr.com 10625fffd42119ce.com 10639888.com 1065m.com 10666114.net 1073.com 107788.com 1088hg41.com 108addf0811012.beer 108ai.com 108mir.com 108pk.com 108qi.com 108sq.com 108tian.com 109.com 109360.com 10966.net 109876543210.com 109ya.com 10bests.com 10c5a16c51015.beer 10de7e1f17f512b2.com 10ec4a74b10281.beer 10fang.com 10gjkj.com 10gt.com 10guoying.com 10huan.com 10idc.com 10isp.com 10moons.com 10pkpk.com 10qq.com 10r1.com 10s1.com 10sea.com 10soo.com 10tianqi.com 10urzr3jk.icu 10vps.com 10yan.com 110.com 11000011.com 1108cd985e95ad39.com 110ask.com 110clwz.com 110disk.net 110route.com 110tm.com 111.com 111111111.com 1111lm.com 111237.com 1113.cc 1114.com 11159.com 11160066.com 1116fad134.info 1116fad135.info 1116fad158.info 1116fad167.info 1116fad176.info 11172222.com 111867.com 111com.net 111wo.com 111yao.com 111zyw.com 112112.com 112192.com 1122.com 11222.com 112682.com 1128job.com 112998.xyz 112seo.com 112wan.com 11315.com 1133.cc 11343.com 113989.com 113dh.com 113ya.com 114-91.com 1145858.com 11467.com 11478.com 114837322.xyz 114auto.com 114best.com 114blog.com 114cbd.com 114chn.com 114db.com 114dev.com 114dg.com 114dns.com 114dns.net 114dnss.com 114gh.com 114guoshu.com 114hyw.com 114hzw.com 114ic.com 114ic.net 114jcw.com 114menhu.com 114mo.com 114my.com 114my.net 114naliyou.com 114oc.com 114photo.com 114piaowu.com 114pinpai.com 114qy.com 114s.com 114sf.com 114shouji.com 114study.com 114ttg.com 114ups.com 114yygh.com 114zhibo.com 114zpw.com 114zw.org 115.com 115155.xyz 1156.com 1156dns.com 115800.com 115cdn.com 115cdn.de 115cdn.net 115cloud.com 115cloud.net 115img.com 115meta.com 115vod.com 115wg.com 115zb.com 1163.com 1166.com 1168.tv 11684.com 116968.com 116cd.com 116cd.net 116daohang.com 116kj.com 116yx.com 11714ae0b1014.beer 117915.com 117a6af992d4208e.com 117trip.com 117y.com 1181.com 118114.net 118360.com 1188.com 1188fc.com 118cy.com 118inns.com 118jm.com 118pan.com 118ttc.com 118wa.com 1190119.com 119120.org 11951.com 11992169.xyz 119958.com 119bid.com 119lora.com 119tx.com 119you.com 11bao.com 11bz.com 11cda806e11012.beer 11cdn.cc 11dmh.com 11dns.com 11fdj.com 11fldxn.com 11flow.com 11g.com 11gai.com 11h5.com 11haoka.com 11job.com 11job.net 11ka.com 11lx.com 11meigui.com 11pdf.com 11player.com 11rain.com 11slotvip.cc 11space.com 11sun.com 11wow.com 11xotn7p.com 11yinyuan.com 11zhang.com 120.net 1204cm.com 120918.com 120ask.com 120askimages.com 120bid.com 120btc.com 120cihui.com 120fd.com 120it.com 120jg.com 120jhccz.com 120jinyi.com 120jxxh.com 120kid.com 120kq.com 120naotan.com 120scp.com 120sg.com 120shgc.com 120spd.com 120sun.com 120top.com 120x.net 120ym.com 121121.net 12114rc.com 1212.com 12120.net 12123.com 121314.com 121588.com 121ask.com 121down.com 121ghs.com 121mai.com 121mu.com 121wty.com 122521.com 12260808.xyz 12272.vip 1228xbdz7m.cfd 12291.com 122bid.com 122c3e52810272.beer 122cha.com 122cn.net 122law.com 122w.net 123-789.com 123.cc 12301.cc 1230539.com 12306.com 12306bypass.com 12308.com 12308com.com 1230t.com 123123.net 12315.com 12316cn.com 12317.com 12317wan.com 1231818.com 12322app.com 123242.com 123245.com 123254.com 123294.com 123295.com 123326.com 12333.com 12333.org 12333si.com 12333tc.com 123366.xyz 1233dns.com 1234.me 12341288.com 1234567.com 123456edu.com 123456wz.com 12345b.com 12345good.com 12345good.net 12348.net 12349.net 1234biao.com 1234i.com 1234n.com 1234sy.com 1234wu.com 1234wu.net 1234ye.com 1234yes.com 12354.com 12355.net 123624.com 123635.com 123641.com 123652.com 12365auto.com 12366.com 12366.net 12366cn.com 123684.com 12369zb.com 123773.com 123842.com 123860.com 123865.com 123888222.com 123912.com 123952.com 123957.com 123aa.com 123aoe.com 123baofeng.com 123bo.com 123boligang.com 123du.cc 123ems.com 123fc.com 123fh.com 123haitao.com 123haiwai.com 123hala.com 123hao.com 123hdp.com 123huaiyun.com 123juzi.com 123juzi.net 123kanfang.com 123langlang.com 123lm.com 123meiyan.com 123menpiao.com 123nice.net 123ox.com 123pan.com 123panpay.com 123pans.com 123qibu.com 123qy.com 123shopee.com 123si.org 123slg.com 123ths.com 123u.com 123v.net 123webgame.com 123wk.com 123xfw.com 123xueshu.com 123yiche.com 123ypw.com 123yx.com 124866.xyz 125.la 125180.com 12530.com 12533.com 1256789.xyz 12580.com 12580.tv 12580life.com 12590d0ff10272.beer 125cn.net 125edu.com 125job.com 125p.com 125school.com 125visa.com 125y.com 125yan.com 126.com 126.fm 126.net 126blog.com 126disk.com 126doc.com 126job.net 126qiye.com 127.com 127.net 1278721.com 127xx.com 127z.com 128456.com 1288.tv 12880.com 128d3a16610271.beer 128qd.com 128sy.com 128uu.com 12988.net 129t.com 12dzx.com 12e6824e11013.beer 12ef916d92d482fa.com 12gang.com 12h5.com 12ha.com 12kanshu.com 12ketang.com 12ky.com 12miao.com 12pk.com 12sporting.com 12yao.com 12ym.com 13.gs 130.org 130014.xyz 130158.com 131.com 13100455400.com 13112.com 1312.vip 13124.com 13131313131.com 1314.io 1314520sz.com 1314gl.com 1314h.com 1314study.com 1314tkd.com 1314wallet.com 1314zf.com 1314zhilv.com 131cc.com 1322.com 13233.org 132lawyer.com 1330.net 1332vp.com 133300.com 13377608388.com 13384.com 133998.com 133u.com 13482896776.com 1350135.com 135031.com 135139.net 135309.com 135650.com 13567.com 1356789.com 1357vip.com 135958.com 135995.com 135bianjiqi.com 135e.com 135editor.com 135edu.com 135plat.com 135yuedu.com 136.com 1360.com 136136.com 1362-rfwi.cc 13636.com 1366.com 13667703999.com 136bet.app 136fc.com 136hr.com 136pic.com 13707.net 137139.com 13720.com 13726936178.com 137365.com 1374.com 1377.com 13793085458.com 13793277711.com 137home.com 137y.com 138.net 13800.net 13800100.co 13800100.com 1380898.com 138379.com 138gzs.com 138job.com 138pet.com 138top.com 138vps.com 139.com 139000.com 13901559172.com 1391.com 13910.com 139130.com 139135.com 1392189.com 13937180868.com 13980.com 1399vip.com 139cm.com 139ee.com 139erp.com 139game.com 139game.net 139play.com 139shop.com 139talk.com 139wanke.com 139y.com 139zhuti.com 13a.com 13c283b0710281.beer 13cr.com 13e7.com 13ejob.com 13freight.com 13gm.com 13jue.com 13lm.com 13q19b8wgb.com 13qh.com 13s.co 13th.tech 13ww.net 13xiaoshuo.com 13yx.com 140414.com 1404c4ce1d63a0d7.com 1415926.com 1415926.mobi 141799c86c1ba267.com 142857.red 14294.com 143614.xyz 14498.com 1451cn.com 14565cabd1011.beer 146368.com 14776ac8e1022.beer 147seo.com 148-law.com 1488.com 148com.com 148la.com 14944.net 14f99ce2609c0071.com 14hj.com 14play.net 14xd.com 14ygame.com 150100.com 150170.com 1503.net 150ce9517a529b73.com 150cn.com 151.hk 1510game.com 15111223344.com 15140.com 1515.website 15153.com 15166.com 151733.com 1518.com 151m.net 151rs.com 151top.com 151web.com 15201.com 15211223344.com 152500.com 1527ego.com 153.com 15311223344.com 153332.xyz 153g.net 15426.org 15440.org 1545ts.com 155.com 155155155.xyz 1556.net 1559.com 155idc.com 156186.com 156669.com 156pay.com 157110.com 157300.net 157seo.com 158566.com 1588.tv 158c.com 158wf.com 159.com 15982.com 159shouji.com 15beipk.com 15bl.com 15gg.com 15gift.com 15hr.com 15hr.net 15job.com 15kuaixiu.com 15lu.com 15ms.com 15scsc.com 15sn.com 15tianqi.com 15tqw.com 15wkd6i45lq3.com 15xdd.com 15yl.com 15yunmall.com 160.com 1606c348011042.beer 160c7443c1019.beer 160dyf.com 160job.com 160yx.com 16109.com 161580.com 1616.net 16163.com 1616n.com 16177.net 1617k.com 1618.com 1626.com 163.cm 163.com 163.fm 163.gg 163.link 163.lu 163.net 163110.com 1633.com 1633.store 1633d.com 163501.xyz 163663.com 1637.com 163888.net 1639f577b1022.beer 163adl.com 163cdn.com 163cms.com 163cn.link 163cn.tv 163cp.com 163cs.com 163fen.com 163guangdong.com 163guoqi.com 163gz.com 163henan.com 163hot.net 163hubei.com 163hunan.com 163img.com 163jiasu.com 163k.cc 163k.com 163kada.com 163lady.com 163liao.com 163mail.cc 163mail.com 163mail.net 163nos.com 163ns.com 163pinglun.com 163py.com 163qb.com 163qikanlunwen.com 163qiyukf.com 163wh.com 163yu.com 163yun.com 164580.com 16466.com 165123.com 16537.ru 16587.com 165image.com 165image.vip 165tchuang.com 165zhuji.com 166.com 166.net 16612.cc 166161.com 166511.com 1665213d91017.beer 1666.com 1668.net 1668hk.com 166cai.com 166cdn.com 166dns.com 16757.com 16768.com 168-hx.com 16816.com 168267xz.com 168338.com 16835.com 16838.com 1686888.com 1688.com 16885.com 16886000.com 168866.com 16888.com 1688988.com 1688b2b.com 1688du.com 1688e.com 1688eric.com 1688la.com 1688lucky.com 1688ru.com 1688s.com 1688tsw.com 1688zhuce.com 16899168.com 168ad.cc 168auto.com 168chaogu.com 168dc.com 168dmj.com 168dns.com 168hs.com 168job.com 168kaifu.com 168kk.com 168kn.com 168lyq.com 168mlj.com 168moliao.com 168rcw.com 168tea.com 168tex.com 168trucker.com 168xiezi.com 168zcw.com 169.com 169163.com 16925500.xyz 169369.com 16949pcb.com 1696.com 169666.xyz 169700.com 16988.com 16999.com 169it.com 169jk.com 169ol.com 16app.tv 16boke.com 16bus.net 16buzhi.com 16c1.com 16ceshi.com 16ds.com 16fan.com 16fc0df828e1570e.com 16first.com 16game.net 16hyt.com 16kang.com 16ker.com 16lao.com 16map.com 16p.com 16pic.com 16rd.com 16sucai.com 16type.com 16tz.com 16wl.cc 16xx8.com 17.com 170.com 170066.com 17025.org 170601.xyz 17083731a1019.beer 170hi.com 170mv.com 170tao.com 170yy.com 171026.com 17167.com 17173-inc.com 17173.com 17173.net 17173cdn.com 17173gc.com 17173ie.com 17173v.com 17173vr.com 17173vr.net 17173yx.com 17178.com 1717pk.com 1718china.com 1718world.com 171tax.com 171win.net 17207.com 17293879b10261.beer 172haoka.vip 172l.com 172mix.com 172tt.com 172xiaoyuan.com 173.com 173.hk 173.tv 1732.com 1732.net 17345.com 17350.com 17351.com 17365h5.com 1739705934745550.com 173cs.com 173eg.com 173fahao.com 173fc.com 173fh.com 173funny.com 173ie.com 173ie.net 173kan.com 173kw.com 173kz.com 173on.com 173shouyou.com 173shouyou.net 173sy.com 173tuku.com 173uu.com 173yeyou.com 173yeyou.net 173zb.com 173zy.com 1744.cc 17495.com 175045d8e62848be.com 1755.com 17566.com 1758.com 175aa.com 175bar.com 175cinemas.com 175club.com 175game.com 175ha.com 175hd.com 175kh.com 175pt.com 175pt.net 175sf.com 175wan.com 175yo.com 17666.mobi 1766bbs.com 17673.com 1768.com 176quan.com 176web.net 1773.com 1778.com 177xfb.com 178.com 178.net 178198.com 178448.com 1787.ink 178768.com 178800.cc 178871.xyz 17888.com 178du.com 178gg.com 178hui.com 178linux.com 178rw.com 178yy.com 178zhaopin.com 179.com 179179.com 1797.cc 1797wan.com 17986.net 17989.com 179cy.com 179e.com 17admob.com 17ai.me 17aifun.com 17b.net 17bang.ren 17bdc.com 17beijiang.com 17bianji.com 17biao.com 17bigu.com 17biying.net 17bt.com 17byh.com 17c13ae4a36b8862.com 17c8d205dbcbc534.com 17cdn.com 17ce.com 17chacha.com 17chdd.com 17cma.com 17coding.info 17d.co 17dao.com 17dap.com 17dawan.com 17dc.com 17ditu.com 17dm.com 17donor.com 17dp.com 17duu.com 17emarketing.com 17et.com 17ex.com 17f.co 17fandai.com 17fee.com 17feia.com 17fengguo.com 17fengyou.com 17fifa.com 17font.com 17foreign.com 17forex.com 17fpv.com 17g.com 17game.com 17gaoda.com 17getfun.com 17golang.com 17gouwuba.com 17guagua.com 17gwx.com 17haibao.com 17hc.com 17house.com 17hpl.com 17huahua.com 17huang.com 17huayuan.com 17huo.com 17huodong.com 17ic.com 17itou.com 17ivr.com 17jc.net 17jiaoyu.com 17jiedu.org 17jita.com 17jzt.com 17k.com 17kan.cc 17kgk.com 17kjs.com 17koko.com 17kouyu.com 17kqh.com 17kss.com 17kuxun.com 17kxgame.com 17kzy.com 17lai.site 17lele.net 17lewan.net 17lht.com 17liuxue.com 17ll.com 17look.com 17m3.com 17meb.com 17meiwen.com 17mqw.com 17ms.com 17neo.com 17oh.com 17ok.com 17only.net 17p.co 17p2mz326p.world 17pa.com 17palyba.com 17popo.com 17pr.com 17pw.com 17python.com 17qcc.com 17qiche.com 17qiqu.com 17qread.com 17qzx.com 17rd.com 17rd.net 17read.com 17relax.com 17roco.com 17sfc.com 17shanyuan.com 17shenqi.com 17smart.net 17sort.com 17startup.com 17sucai.com 17suzao.com 17swan.com 17syi.com 17sysj.com 17t.co 17tanwan.com 17taoca.com 17taotaoa.com 17taotaob.com 17taotaoba.com 17taotaoc.com 17tcw.com 17tigan.com 17tiku.com 17toushi.com 17track.net 17ttt.com 17tx.com 17u.com 17u.net 17u1u.com 17u7.com 17ugo.com 17uhui.com 17uhui.net 17uoo.com 17usoft.com 17usoft.net 17utt.com 17uxi.com 17v5.com 17van.com 17vin.com 17vsell.com 17wan7.com 17wanba.com 17wangdan.com 17wansf.com 17wanxiao.com 17wclass.com 17weike.com 17wendao.com 17whz.com 17win.com 17ww.cc 17xianwan.com 17xing.com 17xsj.com 17xueaoshu.com 17xueba.com 17xueshe.com 17xuexi.com 17xxl.com 17xxw.com 17y.com 17ya.com 17yaoqu.com 17ym.org 17you.com 17yund.com 17yunlian.net 17yunzhijiao.com 17yunzhijiao.net 17yy.com 17zhiliao.com 17zhuangxiu.com 17ziti.com 17zjh.com 17zub.com 17zuoye.com 17zuoye.net 17zuqiu.com 17zwd.com 17zyxy.com 17zyxy.net 18.cm 18000000001.com 18023.com 18095.com 18095.work 180disk.com 180qt.com 180yy.com 1811d2af81022.beer 181709bd610271.beer 18176631811.com 18183.com 18183g.com 18183sf.com 181855.com 1818hm.com 181b5f7e71011.beer 181ps.com 181ue.com 18251.org 18263.vip 182682.xyz 182yg.org 18318.com 18375.com 183me.com 183post.com 183read.cc 183read.com 1845p3hr95.com 18488.com 185185.com 1857qc.net 185c72b7d750569a.com 1860sf.com 1866.tv 18665348887.com 186688.com 18713d3521023.beer 1872001.com 1873game.com 1874.cool 18778450600.com 187997.com 188.com 188.net 188.vip 188158.com 188187.xyz 188188.org 18837331771.com 18856.com 188628.com 1888.com.mo 18888.com 188api.com 188bifen.com 188bio.com 188hi.com 188lanxi.com 188mb.com 188pi.com 188soft.com 188wan.com 188yd.com 189002.com 1892139.com 18937777777.com 18999666.xyz 189cha.com 189che.com 189cube.com 189ebuy.com 189jxt.com 189read.com 189sec.com 189smarthome.com 189store.com 189works.com 189young.com 18aa28dfd1020.beer 18art.art 18av.com 18d9535531011.beer 18dao.info 18daxue.com 18db5cd8710292.beer 18dx.com 18fd54f1b1114.beer 18fzl.com 18guanjia.com 18imall.com 18inet.com 18ishop.com 18istore.com 18join.com 18juyou.com 18l.net 18ladys.com 18link.com 18ph.com 18q.co 18qh.com 18qiang.com 18qingqu.com 18snf.com 18touch.com 18wk.com 18yl.com 18zhongyao.com 18zhuanqian.com 18zn.com 18zp.com 18zw.com 19.com 190.vip 1900.live 19000yy.com 1900m.com 1903beer.com 1903it.com 1904bus.com 1905.com 190757.com 190cai.com 19196.com 19197a01ee502e4c.com 1919game.net 191game.com 192ly.com 192sm.com 1931.com 1934xjzy.com 1937china.com 1937cn.com 1937nanjing.org 193839.com 193sihu.com 194610.xyz 1947.cc 1949idc.com 194nb.com 195155.com 195268032591463.icu 195idc.com 196b7adb23969e39.com 196g.com 196r.gg 197.cc 197.com 197232.vip 197784.com 197854.com 19789.com 197924.com 19799.com 198358.com 19840423.com 198434.com 198503.xyz 198526.com 1985cd.com 1985qg.com 19869.com 1987619.com 1987cn.com 1987yp.com 1988.tv 19888.tv 198game.com 198game.net 1990i.com 199238.vip 1993sc.com 199508.com 199604.com 1997sty.com 1998mall.com 1998n.com 1998r.com 1999year.com 199it.com 199u2.com 199yt.com 19adulttoys.shop 19c8.com 19call.com 19call.net 19cntv.com 19d1341dfd0a74d4.com 19ed5ce761013.beer 19lou.com 19mini.com 19mro.com 19pay.net 19ued.com 19where.com 19x19.com 19yxw.com 19zhan.com 1a22.com 1a4a282fe1010.beer 1aa071e45acb08d2.com 1aab715d01015.beer 1ac6404321019.beer 1afaecefe1014.beer 1amen.com 1ang.com 1aq.com 1auto.net 1b0dbdb5310311.beer 1b0y8tocaz24.com 1b17.com 1b1tech.com 1b22e3a337fe5542.com 1b3e11b2e88c6129.com 1baf107ed1014.beer 1boshu1.com 1browser.net 1bus.net 1c0d1n1f0l1y.cc 1c38.com 1c767ba9310272.beer 1c96b435fa52e4bf.com 1cae.com 1caifu.com 1caitong.com 1card1.com 1cdakj.com 1cent.xyz 1checker.com 1chong.com 1cloudsp.com 1cnmedia.com 1cno.com 1d0b8b3d1800debe.com 1d1d100.com 1d21653941c21219.com 1d9z.com 1dao99.com 1date1cake.com 1dcbzuv.com 1dcdp4.com 1de6de84b1017.beer 1der-ad.com 1diaocha.com 1diary.me 1drv.ws 1e44f70c510272.beer 1e9d98e731024.beer 1ed3277798d157ac.com 1f11.com 1f1bc1d5310272.beer 1f371be461017.beer 1f6cd3ca611032.beer 1f71060e75b35349.com 1fangchan.com 1fenlei.com 1flash.net 1foo.com 1fooai.com 1g31.com 1gaifang.com 1gbru.com 1gcat.com 1gdoutian.com 1gesem.com 1ggame.com 1gow.net 1haigtm.com 1haitao.com 1hangye.com 1haogu.com 1haosuo.com 1hkt.com 1hourlife.com 1hshop.com 1huamu.com 1huizhan.com 1hwz.com 1ij6ut.com 1iptv.com 1j1x.com 1jbest.com 1jiesong.com 1jkbie336689.com 1ju.com 1juhao.com 1juzi.com 1k100.com 1k2k.com 1ka123.com 1kapp.com 1kcx.hk 1ke.net 1kic.com 1kkk.com 1kmxc.com 1kuang.com 1kx.me 1kxun.com 1kyx.com 1l1.cc 1lan.tv 1law.vip 1liantu.com 1ljx.com 1look.tv 1lou.com 1lzs.com 1m.net 1m3d.com 1m85.com 1mall.com 1maoshua.com 1mdoutian.com 1menjin.com 1mfg.com 1miba.com 1mishu.com 1mit.com 1mjz.com 1mmbie336689.com 1mmed.com 1more.com 1mpi.com 1ms.run 1mushroom.com 1mutian.com 1mxian.com 1n1v97c96h.com 1nami.com 1nfinite.ai 1nmob.com 1nongjing.com 1note.life 1nyz.com 1o1o.xyz 1o26.com 1paibao.net 1plas.com 1pm2.com 1ppt.com 1pxs.com 1q2q.com 1qfa.com 1qia.com 1qianbao.com 1qianbao.net 1qirun.com 1qishu.com 1qit.com 1qsf.com 1qwe3r.com 1r1g.com 1renshi.com 1rtb.com 1rtb.net 1safety.cc 1sapp.com 1shangbiao.com 1shoucang.com 1sj.tv 1skp.com 1smart.org 1sohu.com 1speaking.com 1st56.com 1stacks.net 1stchip.com 1styan.com 1szq.com 1t.gs 1t1t.com 1tai.com 1tdw.com 1textile.com 1ting.com 1tjob.com 1tong.com 1toon.com 1tu-design.com 1tu.com 1tuikem.com 1uo9djbnsr.com 1uuc.com 1wang.com 1x3x.com 1xbet88.com 1xinzulin.com 1xlala.cc 1xmb.com 1y.com 1y0g.com 1y2y.com 1yabc.com 1yangai.com 1yaoda.com 1yb.co 1ycdn.com 1yd.me 1ydt.com 1yinian.com 1ysh.com 1ytao.com 1yunhui.com 1yyg.com 1zhangdan.com 1zhanshou.com 1zhao.org 1zhe.com 1zhengji.com 1zhixue.com 1zj.com 1zjob.com 1zu.com 2-33.com 2-class.com 2-mm.net 2.biz 20001104.com 2000200.com 200022.xyz 2000888.com 2000dns.com 2000new.com 2000y.net 20021002.xyz 200218.com 2003996ab2b800ac.com 2003n.cc 2003n.com 2005net.net 2006q.com 20087.com 2008php.com 2008red.com 2008zwe.com 20091222.com 200call.com 200rtu04.bar 200wan.com 200y.com 200zi.com 201061.com 201201.com 2012jh.com 20130123.com 201314520.net 2014.mobi 20150.net 201551.com 2016os.com 2016ruanwen.com 2016win10.com 20170228.com 20171117.com 2017338.com 20174555.com 20188.com 2018zjjly.com 20191209.xyz 2019cdac.com 201g.com 202014.xyz 202030.com 2022.work 202271.xyz 2022cdnpl.com 2023.com 2023game.com 2024qq.com 2025.net 202m.com 202wan.com 203328.com 2048ai.net 2048sj.com 2049baby.com 204cloud.com 2050life.com 2052ce12d523062f.com 206zz.com 207xz.com 2080ly.com 2093hd.com 2099xs.com 20e2554096acf2c6.com 20fl.com 20images10.com 20images21.com 20images25.com 20images7.com 20ju.com 20kf.com 20on.com 20planet.com 20qu.com 20wx.com 20xs.org 20xue.com 20xy.cc 20yy.com 20z.com 21-sun.com 210189.com 210997.com 210d6afa17b4823f.com 210z.com 2113.com 2114.com 2115.com 211600.com 21168.org 21191.vip 2119915.com 211cad.com 211d2977a10301.beer 211hr.com 211ic.com 211zph.com 212200.com 212300.com 212313.com 2125.com 212512124156.icu 21263.net 2128673cd1013.beer 2130453ff61f34c1.com 21322.org 2133.com 2133bbs.com 21373.com 2144.com 2144gy.com 215489736524785.icu 2155.com 215soft.com 2165588.com 216tt.com 217.net 21713.org 2177s.com 217wo.com 21826aafe2a48426.com 218318.com 21869.org 218996.com 2189cok.com 21ask.com 21bcr.com 21beats.com 21bowu.com 21bx.com 21cake.com 21cbr.com 21cccc.com 21ccnn.com 21ccvn.com 21cd.com 21cloudbox.com 21cn.com 21cn.net 21cnentmail.com 21cnev.com 21cnhr.com 21cnjy.com 21cnjy.net 21cnsales.com 21cnsungate.com 21cntx.com 21cos.com 21cp.cc 21cp.com 21ctest.com 21cto.com 21dagong.com 21datasheet.com 21deal.com 21dianyuan.com 21dida.com 21dtv.com 21ejob.com 21eline.com 21epub.com 21fid.com 21food.com 21gold.org 21good.com 21hifi.com 21hospital.com 21hyzs.com 21ic.com 21icsearch.com 21ido.com 21jiao.net 21jingji.com 21js.com 21kan.com 21kk.cc 21ks.net 21kunpeng.com 21ld.com 21maoyi.com 21mcu.com 21mmo.com 21mould.net 21na.com 21our.com 21qa.net 21qphr.com 21qupu.com 21rv.com 21shhr.com 21shipin.com 21shte.net 21sjmg.com 21sla.com 21so.com 21softs.com 21spv.com 21tb.com 21teacher.com 21tjsports.com 21tx.com 21tyn.com 21uv.com 21van.com 21vbc.com 21vbluecloud.com 21vbluecloud.net 21viacloud.com 21vianet.com 21voa.com 21wecan.com 21wenda.com 21wenju.com 21xc.com 21xcx.com 21xfbd.com 21xianhua.com 21xl.info 21xuema.com 21yangjie.com 21yibiao.com 21yq.com 21ytv.com 21zbs.com 22.com 220840.com 220c.com 221234.xyz 221400job.com 22145.com 2217.com 221700.com 222.com 22221111.com 222579.com 222abc999abc.com 222bz.com 222i.net 222pcb.com 2233488aa7.shop 22336699.xyz 2238202.com 2239.com 2243.com 22442400.com 2247.com 224700.com 224837439.xyz 224m.com 225.cc 2255039.com 2258.com 2259.com 225f360dca52f6cf.com 225image.com 225image.vip 2265.com 226500.com 226531.com 226969.xyz 226yzy.com 2280.com 2281wa.ren 2288.org 2288116ab4.shop 228job.com 228tuchuang.com 229.com 2295.com 2298.com 22ba.com 22baobei.com 22bw.com 22cc0971910251.beer 22dm.com 22edu.com 22hd.com 22lianmeng.com 22lrc.com 22mt.in 22n.com 22net.com 22plc.com 22pq.com 22shop.com 22tianbo.com 22tj.com 22vape.com 22vd.com 2305.org 230890.com 231083.com 231122.com 2317.com 231e3dffa1010.beer 2321111.com 232232.xyz 2323u.com 2323wan.com 232485.com 2329.com 233.com 2330.com 233000.com 2333u.com 23356.com 233863.com 2339.com 233id.com 233leyuan.com 233lyly.com 233netcloud.com 233netpre.com 233netpro.com 233py.com 233wo.com 233xyx.com 2344.com 2345.cc 2345.com 2345.gd 2345.net 23456789.xyz 23456v.com 2345at.com 2345cdn.com 2345cdn.net 2345download.com 2345ff.com 2345ii.com 2345mbrowser.com 2345soso.com 234du.com 234f.com 234f0188110291.beer 234fang.com 2354b5daa10311.beer 236306.com 236400.com 236501.xyz 2366.com 23673.com 236z.com 2375.org 2375sj.com 238000.net 238090.com 238e22bf310251.beer 2392fe36a1019.beer 239300.net 23bei.com 23book.com 23class.com 23cube.com 23dns.com 23do.com 23du.com 23e489f9600657c1.com 23e4cb2581013.beer 23img.com 23job.net 23kmm.com 23ks.com 23luke.com 23mofang.com 23qb.com 23qb.net 23qcw.com 23sk.com 23txt.com 23us.so 23us23us.com 23uswx.com 23uswx.info 23uswx.net 23wow.com 23wx.cc 23wx.io 23xsw.cc 23ye.com 23yy.com 23zw.com 240yx.com 24198ef3f855c8ff.com 24331.org 24335.org 246546.com 246b35da610272.beer 246ys.com 2478.com 248.com 2481e.com 2486.org 248xyx.com 249m.com 24av.com 24bb0cd0c3b8480d.com 24biao.com 24dab50b3223e582.com 24dq.com 24geban.com 24haowan.com 24hmb.com 24jiankong.com 24k99.com 24kplus.com 24maker.com 24money.com 24om.com 24shi.cc 24th.com 24timemap.com 24u7tos.com 24zbw.com 250.cc 2500.tv 25000li.com 2500city.com 2500sz.com 250340.com 250a3526251.xin 2512124740355.icu 251400.com 2523.com 25285577.com 2529.com 253.com 25395.vip 253952.com 253u.com 2541.com 254254.com 254game.com 2551aa29811031.beer 255616.com 2559e5f081017.beer 255star.com 25662zubo23739.com 256app.com 256cha.com 25752.com 258.com 258288.com 25847.com 25892.com 258ch.com 258en.com 258fuwu.com 258sd.com 258weishi.com 258zw.com 25992.com 25az.com 25dddaa6f10261.beer 25dir.com 25dx.com 25fe391eb68e3f9c.com 25game.com 25ku.com 25nc.com 25pp.com 25pyg.com 25q7ekcc67.com 25rk.com 25tmw.com 25un.com 25wy.com 25xg.com 25xianbao.com 25xm.com 25xz.com 25yi.com 25yz.com 260.net 260068.com 26210.org 2628liao.com 2629.com 263-mail.net 263.com 263.net 26330a8c11017.beer 263cv.net 263em.com 263fc.com 263idc.com 263idc.net 263live.net 263vps.com 263xmail.com 263y.com 264006.com 264321.com 264400.com 26582.vip 26595.com 265g.com 265h.com 265xh.com 266.com 266.la 266fbded61019.beer 266wan.com 2671111.net 26779.org 2677dl.com 2678.com 26785.org 2686.com 2688.com 268v.com 269.net 26923.com 26a9118418e77c84.com 26c23b9f311042.beer 26ce3e05310251.beer 26d124fdb11032.beer 26duc.com 26e02ca8210272.beer 26f4a1f8f10271.beer 26host.com 26joy.com 26ks.cc 26s.com 26youxi.com 270326012f82.icu 270che.com 270top.com 27195.vip 272500.com 27270.com 27399.com 273u.com 2743b3ed63ebb546.com 27492.com 275.com 27512.org 2755005.com 277sy.com 277t.com 27813000.com 2789a91661019.beer 278wan.com 279love.com 279tt.com 27al.com 27cat.com 27d7c9e9b3a34696.com 27daili.com 27l.com 27tj.com 27ws.com 27xuexiao.com 28.bet 28.com 281010.com 28126.cc 281669.vip 281826.vip 282626.xyz 2827.com 28283.com 282g.com 283d.com 2848168.com 28493.com 2850.com 28517.org 2858999.com 28715.vip 288idc.com 289.com 2896.ro 2898.com 28beiduo.com 28ce6d14004bae01.com 28d4cc3671024.beer 28d7baa3e1013.beer 28e4cd79f1023.beer 28eb96ed4da91317.com 28gl.com 28gua.com 28ka.com 28khy.com 28qp.com 28rv.com 28sog.com 28tui.com 28yt.com 28z9.com 28zhe.com 29029.com 2903866.net 291315.com 2918.com 29227e5771014.beer 2925.com 292775.com 29293.com 293.net 29592.net 296u.com 29736.org 29797.com 2980.com 29888.org 299906.com 29c17146910271.beer 29c385dc5e75af06.com 29ca702351014.beer 29dnue.com 29nh.com 29wjns.com 29xf.com 2a965464310251.beer 2agi.net 2ai2.com 2ai2.net 2amok.com 2apzhfa.xyz 2av7.com 2b079fbcd1009.beer 2b71f0159d3b2d42.com 2b7a44c2110251.beer 2bbd099f5dc4d3aa.com 2bkw.com 2broear.com 2bulu.com 2bzq.com 2c5bf25c11b8dc3e.com 2c71b194031fc683.com 2c883aeffbeef6c7.com 2caipiao.com 2ccc.com 2chcn.com 2cloo.com 2cname.com 2cq.com 2cshop.com 2cto.com 2cubeglobal.com 2cycd.com 2cycomic.com 2cyxw.com 2cyzx.com 2d1a542c1e340653.com 2d261b4e6e641e43.com 2d3d5d.net 2d6cd83bf10261.beer 2d8f1726e1d61d69.com 2danji.com 2db3d5c761abe51b.com 2dcode.biz 2df.me 2dffbc61dea7ca0a.com 2dfire.com 2dfire.info 2dmaker.com 2dph.com 2du.net 2dyou.com 2e30175771022.beer 2e30a72a21023.beer 2ea31935add3d6b0.com 2eb4189e6451af49.com 2ed1fefd710272.beer 2ed5d.com 2ed7d8ec410271.beer 2ee8565103abf121.com 2eka.cloud 2emai.com 2f.com 2f24ad2dc10261.beer 2facb31bb10272.beer 2fda37d4c10292.beer 2fz1.com 2gdt.com 2gei.com 2girls1finger.org 2google.com 2haha.com 2haitao.com 2handsmt.com 2haohr.com 2heng.xin 2hu.net 2hua.com 2i1i.com 2ibook.com 2ic.cc 2ita.com 2itcn.com 2j88.com 2jianli.com 2k27cny7hx.cfd 2k2k.com 2kb.com 2kfb.com 2kk.cc 2kka.com 2kno.com 2ktq.com 2kxs.info 2kxs.org 2kxy.com 2kzw.info 2lian.com 2liang.net 2ll.co 2loveyou.com 2m2j.com 2m3m.com 2ma2.com 2mcnxs.cc 2mjob.com 2mould.com 2muslim.com 2o.cx 2or3m.com 2p.biz 2p.com 2pcdn.com 2q10.com 2qsc.com 2qupu.com 2r3r.com 2rich.net 2sdx.com 2sey.com 2sjc.com 2sonar.com 2sx.net 2t58.com 2te.com 2tianxin.com 2tt.net 2tubaobao.xyz 2tx.com 2umj.com 2urch0.info 2urg1y.info 2urk3j.shop 2uroz.info 2v8d.com 2v9t3xf9z2.com 2vfun.com 2w.com 2w.ma 2weima.com 2xiazai.com 2y9y.com 2ychem.com 2yq.org 2yuanyy.com 2yup.com 2yx8.com 2zhan.com 2zhk.com 2zimu.com 2zzt.com 3-3.me 3-hospital-cqmu.com 3.biz 30.net 3000.com 300033.info 30006124.xyz 3000api.com 3000idc.com 3000soft.net 3000test.com 3000ways.com 3000xs.cc 3001.net 300113.com 300280.com 300624.com 3008268.com 300hu.com 300ppt.com 300zi.com 3011.net 3016.com 301688.com 301mba.com 301pk.com 3023.com 302302.xyz 302423a641021.beer 303c.com 3044.com 30583a8b910261.beer 3062d65271020.beer 306t.com 3072ccba588e48d0.com 308.app 308.tv 30888.com 3099.net 30aitool.com 30c.org 30cgy.com 30daydo.com 30fun.com 30gaokao.com 30ka.com 30play.com 30post.com 30sche.com 30th-feb.com 30vps.com 30w.co 310game.com 310s-2520.com 310tv.com 310v.com 310v.net 310win.com 311.biz 311100.com 311wan.com 312000.net 31260939.com 31264.org 312green.com 313033.com 313515.com 314pay.com 315008.com 3150315.com 3152018.com 3158.com 3158bbs.com 315958.com 315banzhao.com 315che.com 315code.com 315dian.com 315fangwei.com 315hyw.com 315i.com 315img.com 315mro.com 315online.com 315rx.com 315tech.com 315tsz.com 31609.com 31668.com 316watches.com 3171688.com 317608.com 31793.com 317hu.com 318595.xyz 3188.la 318ek.com 318jskyycq.com 318yishu.com 3198.com 31998a86110251.beer 319d3741ad1da914.com 31amjs.com 31b081b851019.beer 31b675a9cce68585.com 31bzjx.com 31cg.com 31d.net 31doc.com 31expo.com 31fabu.com 31food.com 31games.com 31gamestudio.com 31huiyi.com 31i9ti.com 31idc.com 31jf.com 31jgj.com 31knit.com 31m49.com 31maque.com 31meijia.com 31ml.com 31mold.com 31ns.info 31pump.com 31rent.com 31sf.com 31travel.com 31wj.com 31xj.com 31yarn.com 31yr.com 320921.com 320g.com 321.net 321002.com 321009.com 32109.com 321274.com 321321321.vip 321a6d50a1009.beer 321ba.com 321cad.com 321cy.com 321fenx.com 321go.com 321key.com 321mh.com 321sq.com 321tips.com 321zou.com 3223.com 322799.com 322h.com 322wl.com 3230.com 32331.vip 3234.com 3235587.com 3237.com 324.com 32414.com 32495fe5f11042.beer 325802.net 3259.com 325999.com 3259b95be11032.beer 3269.org 32768k.net 327aa34f510311.beer 3280.com 32800.com 3283773e9dc5cde5.com 3286.cc 328f.com 328vip.com 3290.com 32a5d6351989b210.com 32cd.com 32ka.com 32kan.com 32r.com 32rsoft.com 32us.com 32wan.com 32xp.com 33.com 3304399.com 3304399.net 330d5ba0e1024.beer 33105.com 331234.xyz 3320.net 3321.com 3322.cc 3322.net 3322.org 3322032.com 33226163.xyz 3323.com 33230.org 3323399.com 332831.com 333-555.com 333.com 33315.com 333232.xyz 333333.com 333333.org 3335665.com 33360.com 3336637.com 3336639.com 3336653.com 3336657.com 333666999.club 3336670.com 3336672.com 3336673.com 3336683.com 3336691.com 3337706.com 3337723.com 3337726.com 3337729.com 3337735.com 3337736.com 3337738.com 3337739.com 3337751.com 3337756.com 3337765.com 3337780.com 3337781.com 3337782.com 3337783.com 3337785.com 33380xl.com 3338808.com 3338863.com 3338877.com 333915.com 3339999.net 3339auto.com 333a51.app 333a58.app 333bbb777kkk.com 333cn.com 333com85.app 333com89.app 333f.com 333iy.com 333job.com 333ku.com 333rh.com 333wan.com 333y3.com 334433.xyz 3344u.com 334837632.xyz 33519.com 3356666.com 3359.com 33591.com 336.com 3361.com 33655.net 3366.com 3366.net 336685.com 336688.net 3366886633.com 3366img.com 3366ok.com 336cfe9101009.beer 336woool.com 337000.com 3377577c.app 3377751e.app 3377999c.app 337y.com 338336.com 3387.com 338888.net 3389dh.com 3393.com 33988.net 33aml.com 33app.net 33bus.com 33dy.cc 33erwo.com 33fang.com 33ip.com 33iq.com 33jianzhi.com 33lc.com 33ly.com 33map.com 33map.net 33oncall.com 33out.com 33oz.com 33subs.com 33tool.com 33trip.com 33tui.com 33yq.com 34.com 340888.com 3419e2cbf10261.beer 341d88b04156e9d3.com 342200.com 342jinbo.com 34347.com 345123.xyz 3454.com 3456-1.vip 3456.cc 3456.com 3456.tv 34563686.work 34580.com 345fk.com 345huishou.com 345idc.com 3464.com 346888.com 346g4247o9.world 348b60ac51011.beer 34a14155f1016.beer 34c5fe453528e605.com 34f04e8d410291.beer 34lou.com 34wl.com 34xian.com 35.com 35.net 350.com 350.net 3500.com 350200.com 350211.net 3503.com 3504cde7b76a2cc9.com 35091.cc 350abc.net 350c.com 3516w.com 35195.vip 352.com 3520.net 352200.com 3525.com 3527.net 353233.com 3533.com 35335.com 3536.com 35463.org 354d7967c11032.beer 3551.com 3558b3020217b9a3.com 355xx.com 356123.com 35617.vip 35667.com 3566t.com 357.com 357global.com 358.com 359203.com 35941.com 3595.com 359798114.xyz 35app.com 35ba.com 35d1.com 35db4d2761021.beer 35dxs.com 35e0510ae11032.beer 35go.net 35inter.com 35jk.com 35kds.com 35lz.com 35nic.com 35pic.com 35sf.com 35xss.com 35zww.com 36-7.com 36.cc 36.la 360-g.net 360-game.net 360-jr.com 360.com 360.net 3600.com 3600.net 3600d.com 360114.com 360118.com 360424.com 360500.com 3608.com 360abc.com 360adlab.com 360adlab.net 360adlab.org 360ads.com 360aiyi.com 360anyu.com 360boclub.com 360bsafe.com 360buy.com 360buyimg.com 360buyinternational.com 360byd.com 360bzl.com 360caifu.com 360cdn.com 360changshi.com 360che.com 360chezhan.com 360chou.com 360cloudwaf.com 360daikuan.com 360ddj.com 360dlcdn.com 360doc.com 360doc.net 360doc1.net 360doc18.net 360doc2.net 360doc22.net 360doc25.net 360doc4.net 360doc7.net 360docs.net 360doo.com 360down.com 360drm.com 360eol.com 360gann.com 360gem.com 360gogreen.com 360gongju.com 360gongkao.com 360gtm.com 360guanai.com 360hapi.com 360hifi.com 360hitao.com 360hqb.com 360humi.com 360huzhubao.com 360hx.com 360hy.com 360hyzj.com 360ic.com 360imgcdn.com 360in.com 360insurancemall.com 360jianzhu.com 360jie.com 360jinrong.net 360jk.com 360jq.com 360jrjietiao.com 360jrkt.com 360kaixin.com 360kan.com 360kcsj.com 360kj.net 360ksbd.com 360kuai.com 360kuaixiao.com 360kuaixue.com 360kxr.com 360lion.com 360lj.com 360lnk.com 360loushi.com 360midi.com 360mkt.com 360os.com 360panyun.com 360panyun.net 360powder.com 360qc.com 360qd.com 360qhcdn.com 360qikan.com 360qikan.net 360qnw.com 360qws.com 360qyaq.com 360safe.com 360safedns.com 360sdn.com 360shouji.com 360shouzhuan.com 360shuke.com 360shuoshuo.com 360simg.com 360sjrom.com 360sky.com 360so.com 360sok.com 360sou.com 360sou.net 360soucha.com 360sousou.com 360sportwatches.com 360src.com 360sres.com 360stamp.com 360taojin.com 360tianma.com 360timg.com 360tong.net 360top.com 360totalsecurity.com 360tpcdn.com 360tres.com 360tuan.com 360u9.com 360underwear.com 360uu.com 360vcloud.com 360vrzy.com 360webcache.com 360wenmi.com 360worldcare.com 360wscdn.com 360wulian.net 360wyw.com 360wzb.com 360wzws.com 360xh.com 360xiaos.com 360xiehui.com 360xinyongka.com 360xkw.com 360xlab.com 360xlab.net 360xlab.org 360xyws.com 360yao.com 360ybj.com 360yijia.com 360youtu.com 360yuanshuo.com 360yuxue.com 360zebra.com 360zhileng.com 360zhushou.com 360zhyx.com 360zmr.com 360zqaq.com 360zqf.com 360zuowen.com 360zuqiu.com 36130.com 361757.com 3618med.com 361cv.com 361dai.com 361mogame.com 361sport.com 361zhao.com 362.cc 36267.vip 363.com 363.hk 363.net 363120.com 363322014.com 3636.tech 363635.com 363u.com 364000.com 36410.org 36476.work 365.com 365.hk 36500.com 36500.net 365128.com 365135.com 3652.com 36524hua.com 36543.com 365500.com 3656.com 36578.com 365960.com 365autogo.com 365azw.com 365bh.cc 365bj.com 365bmc.com 365bmw.com 365book.net 365cego.com 365cgw.com 365chanlun.com 365chiji.com 365css.com 365cyd.com 365cyd.net 365daan.com 365daygo.com 365dhw.com 365diandao.com 365digitalonline.com 365ditu.com 365dmp.com 365editor.com 365eme.com 365essay.com 365f.com 365fanyi.com 365gangqin.com 365gcd.net 365gongchang.com 365good.cc 365heart.com 365hele.com 365hf.com 365htk.com 365huaer.com 365huangjin.com 365ibuy.com 365icl.com 365ime.com 365j.com 365jia.com 365jiankang.com 365jilin.com 365jq.com 365jw.com 365jz.com 365kan.tv 365kandian.com 365key.com 365kl.net 365liye.com 365master.com 365matrix.com 365mmjg.com 365mx.com 365nongye.com 365pcbuy.com 365pingxuan.com 365pk.com 365pp.com 365pr.net 365pub.com 365qipai365.com 365rili.com 365sec.com 365sf89.com 365shequ.com 365sky.com 365sydc.com 365ta.com 365time.com 365ting.com 365tkt.com 365ttcz.com 365tvip.com 365vip.com 365world.com 365xiazai.com 365xs.la 365xuet.com 365yarn.com 365yg.com 365you.com 365yyf.com 365zhaopin.com 365zhuanrang.com 365zmw.com 365zsw.net 365zzx.com 3660bf60ab32baab.com 36612345.com 3663.com 366300.com 366666.net 36683.com 3669yx.com 366club.com 366ec.com 366ec.net 366kmpf.com 366translation.com 36706.com 3673.com 367edu.com 36838.org 36840.com 36885.vip 3688km.com 368mall.com 368tea.com 369110.xyz 36932.com 36939.net 369785.com 3699.cc 3699.co 3699wan.com 369cha.com 369hui.com 36ab8227e10311.beer 36aw.com 36dianping.com 36dj.com 36dong.com 36hjob.com 36jr.com 36kr.com 36kr.net 36krcdn.com 36krcnd.com 36pnes36t0qs.com 36qp.com 36rv3j3.shop 36tw.com 36ve.net 36yc.com 36zpp.com 37.com 37021.com 37051.cc 370fd.com 371.com 371.net 3710167.com 37163.com 371bus.com 371love.com 37201.com 3721.vip 3721520.com 3721zh.com 3722.com 37274.com 372951b2210301.beer 3733.com 3733game.com 3737.com 3737k.com 373a5e2a6f8a3f9a.com 373c0f3771021.beer 373f.com 373net.com 373yx.com 37439.com 3761.com 3768.org 377466.com 3774cd2332503d45.com 379.com 37937.com 3794b0fa67e5f83b.com 3798.com 379art.com 379bst.com 37a15fd3b16897ba.com 37biao.com 37bjw.com 37cbca02a1019.beer 37cos.com 37cs.com 37cu.com 37dh.com 37game2.com 37gjw.com 37gogo.com 37gowan.com 37hr.com 37k.com 37kx1.com 37laboratory.com 37med.com 37pps.com 37see.com 37su.com 37swan.com 37tang.com 37tgy.com 37wan.com 37wan.net 37wan.one 37wanimg.com 37wanwan.com 37wanwancdn.com 37women.com 37www.com 37wxwl.com 37yzy.com 37zone.com 37zp.com 3800920.com 3800j.com 380852.com 380871.com 38109222.com 3816.net 3817.com 38198.org 381pk.com 3822edf4d1022.beer 38387.app 3839.com 38393.org 3839apk.com 3839app.com 3839app.net 3839img.com 3839pay.com 3839pic.com 3839vc.com 3839video.com 383k.com 383yun.com 3851120.com 3856.cc 38566.org 385k.cc 38711.cc 38735.vip 388g.com 3892222.com 38999h.vip 38a9018e44a7da0f.com 38b06119b10271.beer 38blog.com 38c99.com 38ejed.com 38film.com 38hack.com 38hot.net 38hp.com 38hzt.com 38mhw.com 38ra.com 38xs.com 38zp.com 39.com 39.net 390seo.com 391065.com 3911.com 3913.com 3917.com 391k.com 392766.net 393.com 3937.com 3939339.com 394394.com 3949006e510272.beer 394afb34a1020.beer 39507037133f.icu 39655.com 3975.com 3975ad.com 3975ad.xyz 3975app.com 3975cdn.com 3977s.com 398423277d755d82.com 3987.com 3993.com 399s.com 39amjs.com 39ask.net 39b86269e11031.beer 39b8fe8f4c6f9dee.com 39bfe802d10292.beer 39center.com 39clean.com 39cs.com 39d83s.com 39dg.com 39ej7e.com 39f6e28d71009.beer 39fei.com 39fengliao.com 39h83s.com 39hd.com 39health.com 39jks.com 39jz.com 39kan.com 39kf.com 39meitu.com 39mob.com 39shubao.com 39shuwu.com 39txt.com 39yst.com 3a2dc2bd21023.beer 3a2studio.com 3a4.net 3a4b5c.com 3afbda6f11015.beer 3ait.com 3alv.com 3aok.com 3apz.com 3aqj.com 3avox.com 3b13795054e3ac5a.com 3b1aj.info 3b1bm3f.shop 3b1bvrwc.info 3b1fcl.info 3b1xgp.shop 3b2479faf10301.beer 3b2o.com 3bag.ru 3bf.cc 3bfc4d6861010.beer 3bu.com 3c1bddb4110301.beer 3c2p.com 3c324f3ae10241.beer 3c3t.com 3c4c142e21021.beer 3c5a7b25910281.beer 3c6a1a5d01015.beer 3c9035c3bd9e7599.com 3cb106206b814b15.com 3cf6c871511032.beer 3chongmen.com 3cjob.com 3conline.com 3cpp.org 3ct.cc 3d-apollo.com 3d-chips.com 3d-gold.com 3d-medicines.com 3d-stereovision.com 3d2000.com 3d2848f7811042.beer 3d503a99384e0d4c.com 3d66.com 3d7ce8a16c0f8781.com 3d9r.com 3daima.com 3dbody.com 3dbt.com 3dbuyu.com 3dbuyu.net 3dcat.live 3ddaz.com 3ddl.net 3ddl.org 3deazer.com 3debut.com 3ded4c0f310311.beer 3dfcs.com 3dgali.com 3dgenomics.org 3dhao.com 3dhoo.com 3dinlife.com 3djulebu.com 3dkunshan.com 3dllc.cc 3dllc.com 3dly.com 3dmaxvip.com 3dmgame.com 3dmgame.hk 3dmgame.net 3dmjiasu.com 3dmomoda.com 3dmxku.com 3dnew.com 3doe.com 3drrr.com 3dsdce.com 3dsjw.com 3dsnail.com 3dtakers.com 3dtank.com 3dtoo.com 3dwebyx.com 3dwhere.com 3dwwwgame.com 3dxt.com 3dxy.net 3dzyw.com 3e.net 3e089a2bd1011.beer 3e1f90ccd1016.beer 3e306b2a010272.beer 3e38c7206c1beb1a.com 3e5da509e10271.beer 3e6dfbe90c676f1d.com 3ec933de211031.beer 3echemical.com 3edns.com 3edu.net 3efda91b710311.beer 3elife.net 3etimes.com 3eyes.org 3f20c121e6032c50.com 3f4155b1310311.beer 3f496850f89e7809.com 3f5348d2ff43ee00.com 3f73dbae64fefabb.com 3f9b37df0629ada1.com 3fahudong.com 3fang.com 3fantizi.com 3fb762d23d09f297.com 3fc5960c0be056ce.com 3fcl8.net 3fda.com 3feb063cbf96bd40.com 3fzipper.com 3g-edu.org 3g368.com 3g48.com 3g567.com 3gbizhi.com 3gcj.com 3gdisk.com 3gifs.com 3glasses.com 3gmfw.com 3gmimo.com 3gogogo.com 3gosc.com 3gpk.net 3gqqw.com 3gsou.com 3gu.com 3gwoool.com 3gxk.net 3h.com 3h1i.com 3h3.com 3h77.com 3haovip.com 3healthcare.com 3heyun.com 3hhinvestment.com 3hmedicalgroup.com 3hmlg.com 3incloud.com 3ins.net 3j3f.com 3jdh.com 3jhuyu.com 3jidi.com 3jlm.com 3jrx.com 3jzh.com 3k.com 3k3cn.com 3ke.cc 3kew.com 3kid.com 3kismet.com 3kjs.com 3kk.com 3kmq.com 3ko.com 3kr.com 3kyi.com 3kzhushou.com 3labtest.com 3laohu.com 3lbrand.com 3lengjing.com 3lmeter.com 3lsoft.com 3mbang.com 3mh0yvx.com 3miao.net 3miko.xyz 3mtw.com 3mu.me 3muzn.com 3n1b.com 3nbb.com 3nfood.com 3p8801.co 3piaochong.com 3png.com 3polar.com 3poo.com 3pw.net 3q2008.com 3qdu.com 3qdu.net 3qdu.org 3qdus.com 3qhouse.com 3qit.com 3qj.com 3qled.com 3qwe.com 3qxsw.com 3qzone.cc 3r.work 3rcd.com 3renhe.net 3renwx.com 3richman.com 3rotber.com 3rroll.com 3s-guojian.com 3s.work 3s001.com 3s78.com 3scard.com 3sjt.com 3slift.com 3snews.net 3songshu.com 3sribu.com 3srobotics.com 3stl.com 3sunway.com 3swg.com 3t3.org 3thiku.com 3tilabs.com 3tinkers.com 3tmall.com 3treesgroup.com 3tstore.com 3u.com 3ukkht3yn3.work 3unshine.com 3uol.com 3us.com 3uww.cc 3uww.com 3v.do 3vjia.com 3vjuyuan.com 3vsheji.com 3wcoffee.com 3wen.com 3wfocus.com 3wft.com 3wka.com 3wmm.com 3wtuan.com 3wyk.com 3x7.com 3xgd.com 3xiaoniao.com 3xiazai.com 3xinhome.com 3xyg.com 3y1.com 3y7h.com 3yakj.com 3ygww.com 3yoqu.com 3yt.com 3yt.la 3yun.net 3yx.com 3zbsy.com 3zhijk.com 3zhm.com 3zmuseum.com 3zonegame.com 4-xiang.com 4.biz 4.plus 400-lighting.com 400.com 40000-30000.com 4000011520.com 4000022282.com 4000034168.com 4000066666.com 4000156651.com 4000278400.com 4000286188.com 4000500521.com 4000730138.com 4000773040.com 400078.com 4000892990.com 4000979797.com 4000kbpe.bar 4001006666.com 4001113900.com 4001180057.com 400123.com 4001581581.com 4001817899.com 4001890001.com 4001961200.com 400301.com 400332.com 40035.com 400388.com 4006055885.com 4006216888.com 4006300457.com 4006339177.com 4006510600.com 4006631958.com 4006695539.com 4006758160.com 4006787252.com 4006800660.com 4006806555.com 4006906600.com 4007051668.com 4007108885.net 4007112366.com 4007123123.com 4007777958.com 4008-197-197.com 4008000000.com 4008005216.com 4008075595.com 4008103103.com 4008107107.com 4008109886.com 4008117117.com 4008123123.com 4008258399.com 4008338788.com 4008600011.com 4008618618.com 4008787706.com 4008800016.com 4008824365.com 4008863456.com 4008880999.com 4008880999.net 4008885818.com 4008cn.com 4009.com 4009515151.com 4009870870.com 4009991000.com 4009997658.com 400cx.com 400dianhua.com 400gb.com 400ja.com 400kaoyan.vip 400lyw.com 400num.com 400qikan.com 400taocan.com 400vv.com 400web.com 4020.la 40407.com 404886.com 404mzk.com 404wan.com 404youxi.com 405400.com 407wan.com 4080517.com 408399.com 408399.net 4087b09ee4632bb5.com 408cf42720d8be86.com 408ec542b10281.beer 409a1957110311.beer 409c27e4c1015.beer 409d0a7b710241.beer 40bw71.ren 40c53fc1d11021.beer 40cb.com 40images15.com 40images16.com 40le.com 40sishi.com 40xk.com 411-hospital.com 41113.com 41163.org 41188.com 41188844.com 411au.com 4132c3c4011021.beer 413cd5ac210291.beer 413xkyd.com 414500.net 415677.com 416548ebbf96c1b9.com 4166.net 41739b0aa10301.beer 417628.org 4177.com 41818.net 419600.com 419g.com 41game.com 41gw.com 41huiyi.com 41ms.com 41wan.com 41xt.com 420d586841024.beer 42144.com 421db96b91011.beer 42224b3c51016.beer 422425.xyz 422877.com 4234.org 4234cdn.com 4234q.com 42353.com 423down.com 4243.net 425300.co 425yx.com 426.ltd 426g.com 42736c12558acabf.com 4275.com 429006.com 42ed983e61019.beer 42how.com 42trip.com 42verse.shop 42xz.com 430d6eba715dabb4.com 4311.com 432.com 432520.com 432b4376611021.beer 43439g.com 435000.com 435200.com 4355.com 43578.com 436400.com 4366.com 4366aa.com 4366ga.com 4366game.com 4366pk.com 4377.com 437zhifu.com 43803a8c410261.beer 4393ce88a10272.beer 4395e6c8b10291.beer 4399-xyx.com 4399.com 4399.net 43999yx.com 4399api.com 4399api.net 4399biule.com 4399data.com 4399dmw.com 4399doc.com 4399er.com 4399hdhh.com 4399hhh.com 4399i.net 4399inc.com 4399j.com 4399mail.com 4399pk.com 4399sj.com 4399swf.com 4399sy.com 4399wanju.com 4399xyx.com 4399youpai.com 4399youxi.com 4399yyy.com 4399zmxy.com 439f2bbb180aecab.com 43cv.com 43ns.com 43xs.com 43yl.com 43zhubao.com 4417.com 44290f2c9bce56ed.com 4444.cc 44440fd0d212bb76.com 4444448.com 4445156.com 44460.com 44481.org 444888qq.com 4450044.com 4450055.com 4451199.com 4451818.com 44552003.com 44629.com 446dca1e17538cf6.com 44719.org 44749.net 4480.cc 4484.win 44878s.com 4488e4460a95a041.com 448cee8738b7860d.com 449393.vet 44971.com 44983.com 4499.com 44ff56d11fa53a9a.com 44h.co 44hr.com 44jj.com 44pq.cc 44vs.com 4502512122531.icu 4506ecebe10292.beer 45077.one 450926731.xyz 451057365.xyz 451f46bd110281.beer 453400.com 453600.net 45451.com 4546.org 455522.com 45560ll.com 45575.com 45592.com 455a525cfff81301.com 456.net 45656666.com 456jy.com 456ss.com 456tt.com 457.com 457557.com 4587.com 4587c00611011.beer 458kq.com 459.org 45app.com 45fan.com 45inst.com 45io.com 45it.com 45ns.com 45r.com 45te.com 45win.com 45xie.com 45yx.com 461000.net 462.com 46245fb7d43c13a3.com 46412.com 4644440.vip 46576.org 46644.com 46721.org 46771313.com 46809.org 46940.vip 4694393.com 46ab3da510d4ccaf.com 46cdn.vip 46d7940171014.beer 46eadc71881fb97a.com 46mlsv.com 46ps.com 46xs.com 4714da8871019.beer 471f94eab9784273.com 47295.com 472ac621b11032.beer 4735.com 47365.com 473787.com 4738.com 47462.org 47473.com 474b.com 4765.com 47787.com 4779.com 47819.com 478bc6c1c10301.beer 47964154c11021.beer 479d8573510301.beer 47daili.com 47e17a13ee18fa43.com 47gs.com 47rq.com 47zu.com 480.cc 480.hk 4805555.com 480e7c558d3d8aaa.com 480image.com 48251413f10281.beer 48267.com 48455m.com 4846.com 4848360.com 48575.com 48670.vip 4869.cc 487.com 4871.org 4888.com 4888033.com 4888777a14.shop 4888g.vip 48905.com 48cdn.vip 48hao.net 48log.com 49.com 491.com 4916a68576d64a34.com 492288.com 492f2622e64c138e.com 4930.com 49333g.com 49333j.com 49358.com 493601.com 49363.com 4937711.com 495.cc 495495.com 49568009.com 4957b5fd7265b790.com 496db29b7745a79c.com 497-img.com 497.com 498.net 499-img.com 499n.com 499youxi.com 49app.com 49e7fb6261023.beer 49eb891471010.beer 49ko.com 49ms.net 49pic.com 49vps.com 49wanwan.com 49xia.com 49you.com 49yu.com 49zz1110002a4.shop 4a38863a11017.beer 4a4779c371024.beer 4abb.com 4ading.com 4anet.com 4apx.com 4aqq.com 4b036c92244f5b1b.com 4b145a7b110292.beer 4b4d913d9b6506e9.com 4b784b66f10311.beer 4b9953f631024.beer 4ba69ed8e10292.beer 4bf85b0f61014.beer 4c28539c4f10ad16.com 4c37ebc131010.beer 4c43edd99cd8bb40.com 4c4866d8179d6f70.com 4c55033b91010.beer 4c645708fabd0e13.com 4ccd82a0d11031.beer 4ce.fun 4ci.cc 4cm.cc 4cnzz.com 4cun.com 4d2bc4d7311031.beer 4d458710811011.beer 4d64c7aff11031.beer 4dai.com 4db.com 4de7ab130011974d.com 4dec3cfc0794efb4.com 4dwan.com 4e0e47ea71022.beer 4e6fe7920a044f98.com 4e7e414fd1015.beer 4ebf1036c1010.beer 4ee.ee 4ef06207210281.beer 4ef870db01022.beer 4eglwkq.com 4everdns.com 4ewriting.com 4f0b987b410311.beer 4f411973f14e0f10.com 4f61.com 4f68340f5b6c21a9.com 4f89.com 4f9bf1e673931484.com 4fang.net 4fd4969ff1022.beer 4fe55e9f6c893405.com 4ggogo.com 4gh6.com 4glte.org 4gqp.com 4gtoefl.com 4h44.com 4h6s.com 4hgame.com 4hii.net 4hmodel.com 4hpy.com 4inlook.com 4jplus.com 4k123.com 4kbizhi.com 4kdesk.com 4kgood.com 4kgou.com 4kya.com 4l.hk 4lzr.com 4ndwc.com 4o.org 4paradigm.com 4pf6hb.com 4pis.com 4pnt.com 4portun.com 4px.com 4pyun.com 4q5q.com 4qx.net 4sai.com 4sender.com 4sender.net 4sjob.com 4sscrm.com 4startime.com 4tdf.com 4thetooth.com 4thworkshop.com 4to66.com 4w8.net 4xiaoshuo.info 4xiaoshuo.org 4xseo.com 4xx.me 4y4.net 4ye.cc 4yt.net 4yx.com 4zt.com 5-link.com 5.biz 50-jia.com 500.com 5000.com 50004.com 5000yan.com 50011114.com 50014455.com 50016666.com 50018.com 50027.com 500cache.com 500d.me 500doc.com 500du.com 500fd.com 500gm.com 500hj.com 500px.me 500talk.com 500tb.com 500wan.com 500wancache.com 500zhongcai.com 5011.net 501h.com 501wan.com 502258.com 50257e08d1015.beer 503118.com 50331.net 5033333.com 503b2f379abaf979.com 503error.com 505035.com 5054399.com 5054399.net 505uu.com 5066.com 506u5nf5j5.com 50747.com 507c7d240b2eae97.com 5087.com 508hdsys.com 508mallsys.com 508sys.com 50915.org 50970.com 50bang.org 50bangzh.com 50cnnet.com 50dacaaf86cda9cb85ee95577c9a522bf.com 50pk.com 50sht.com 50union.com 50vm.com 50xiao.com 50yc.com 50yu.com 50zera.com 50zi.com 50zw.co 50zw.net 51-cf.com 51-jia.com 51-visa.com 51.am 51.com 51.la 51.net 5100.net 51015kid.shop 51056.org 510560.com 510erp.com 510hb.com 510xds.com 510you.com 51110.com 51119.com 5117.com 511718.com 5117sell.com 5118.com 5118img.com 5119.net 511m.com 511mv.com 511wan.com 511wh.com 511wx.com 511yj.com 512.vip 5120.com 5120bb.com 51230.com 51234g7.com 51240.com 512612.com 51269017.com 51298888.com 512test.com 512wx.com 512youxi.com 5132.com 513337.com 5137.cc 51386.com 5138zhuan.com 513zp.com 513zz.com 514193.com 514200.com 5144wan.com 51508.com 51511.com 5151888.xyz 5151app.com 5151sc.com 5153.com 51555.net 51569.com 5156lunwen.com 5156xz.com 51589.com 5158wan.com 515app.com 515car.com 515fa.com 515ppt.com 51643.com 51656582.com 51658042.com 5166.info 51661182.com 5166ys.com 516edu.com 516ly.com 516lyw.com 5170d.com 5173.com 5173cdn.com 51766.com 5177cq.com 517best.com 517cdn.com 517dv.com 517ee.com 517gf.com 517hotel.com 517huwai.com 517idc.com 517japan.com 517job.com 517la.com 517la.net 517lppz.com 517mh.net 517ming.com 517mr.com 517na.com 517office.com 517sc.com 517tez.com 517xc.com 51802.com 5184.com 5184pass.com 5185.cc 51864.com 51870.com 5187g.com 5188.com 518ad.com 518doc.com 518h48fwg6.com 518yp.com 51926.org 519397.com 51969.com 51985.net 5199.cc 5199.com 51990d860a03b055.com 5199yx.com 51a.co 51ads.com 51aiclk.com 51aimei.com 51aiwan.com 51app.com 51art.com 51ask.org 51asm.com 51asp.net 51aspx.com 51auto.com 51autocar.net 51autogo.com 51awifi.com 51b2b.com 51babybuy.com 51baigong.com 51banban.com 51banka.net 51baocan.com 51baoshui.com 51bbcy.com 51bbmm.com 51bbo.com 51besttea.com 51bi.com 51biaoqing.com 51bidlive.com 51bike.com 51biz.com 51bjrc.com 51bmb.com 51bokao.com 51bonli.com 51book.com 51boshi.net 51bras.com 51bsi.com 51bushou.com 51buy.com 51bxg.com 51bzi.com 51caiyou.com 51callcenter.com 51callu.net 51camel.com 51caocao.net 51ccd.com 51ccdn.com 51cck.com 51ccn.com 51cdn.com 51cdngo.com 51cfm.com 51cg.com 51chang.com 51changdu.com 51changdu.xyz 51changxie.com 51chaoshang.com 51chost.com 51chouqian.com 51chuanpiao.com 51chuli.com 51cir.com 51cjyy.com 51ckjr.com 51clc.com 51cmm.com 51cnhr.com 51cocoa.com 51code.com 51coma.com 51comp.com 51company.com 51cosmo.com 51cpm.com 51create.center 51credit.com 51csr.com 51cto.com 51cube.com 51cunzheng.com 51cxsoft.com 51czapp.com 51dai.com 51daifu.com 51daima.com 51daka.com 51dangpu.com 51daxueedu.com 51dc.com 51dcgg.com 51dcw.com 51device.com 51dfc.com 51diangu.com 51diantang.com 51diaocha.com 51din.com 51dingxiao.com 51ditu.com 51diyring.com 51dmq.com 51dns.com 51docs.com 51dojoy.com 51dpub.com 51drv.com 51dszn.com 51dugou.com 51dz.com 51dzrc.com 51dzt.com 51dzw.com 51ean.com 51ean.xin 51easymaster.com 51eb0685c11021.beer 51ebo.com 51ebooks.com 51eduline.com 51eim.com 51ejz.com 51ekt.com 51ele.net 51emin.com 51emo.com 51en.com 51epei.com 51eshop.com 51etong.com 51etr.com 51f.com 51facai.com 51fangan.com 51fangfu.com 51fanli.com 51fanli.net 51fbpay.com 51feibao.com 51feitu.com 51feiyu.com 51fiber.net 51finace.com 51findwork.com 51fire.xyz 51fishplace.com 51fl.com 51fpg.com 51fsw.com 51fubei.com 51fucai.com 51fund.com 51fxkj.com 51fxzq.com 51fytx.com 51g3.com 51g3.net 51g4.com 51gaifang.com 51gamecard.com 51ganjie.com 51gaoji.com 51gaoxiao.com 51garlic.com 51gdrc.com 51gh.net 51give.org 51gjie.com 51gjj.com 51golife.com 51gonggui.com 51goods.vip 51google.com 51gouke.com 51gowan.com 51gox.com 51gpt.com 51gran.com 51grb.com 51grfy.com 51growup.com 51gszr.com 51guanhuai.com 51guoji.com 51gzgk.com 51h.co 51h5.com 51hailang.com 51hanghai.com 51hangkong.com 51haojob.com 51hbjob.com 51hchc.com 51hcw.com 51hei.com 51hejia.com 51hgtg.com 51hhjy.com 51hicard.com 51hika.com 51hjk.com 51hlife.com 51hlife.net 51homemoney.com 51hosting.com 51hostonline.com 51houniao.com 51hr.com 51huaji.com 51huanhuan.com 51hunningtu.com 51huoyou.com 51hwzy.com 51ibm.com 51idc.com 51ifind.com 51ifonts.com 51ima.com 51img1.com 51img2.com 51img3.com 51img5.com 51img6.com 51img7.com 51img9.com 51imo.com 51ipc.com 51ischool.com 51itapp.com 51itstudy.com 51iwifi.com 51ixuejiao.com 51jb.com 51jiabo.com 51jiameng.com 51jiang.com 51jianxie.com 51jiaoxi.com 51jiecai.com 51jiemeng.com 51jingying.com 51jinkang.com 51jishu.com 51jiuhuo.com 51job.com 51jobapp.com 51jobcdn.com 51jobdns.com 51js.com 51jt.com 51jucaimi.com 51juhe.com 51jujibao.com 51julebu.com 51junde.com 51junshi.com 51kanmanhua.com 51kanong.com 51kaola.net 51kaowang.com 51kaxun.com 51kehui.com 51kf100.com 51kids.com 51kik.com 51kim.com 51kshen.com 51kt.com 51kuaizhuan.com 51kupin.com 51kywang.com 51la.ink 51la.net 51labour.com 51laibei.com 51laiqiang.com 51langtu.com 51laohe.com 51ldb.com 51ldzx.com 51lepai.com 51lesheng.com 51lg.com 51lingji.com 51link.com 51liucheng.com 51losangeles.com 51lucy.com 51lxrc.com 51lzr.com 51mag.com 51maiquan.com 51marryyou.com 51mch.com 51mdd.com 51mdq.com 51meeting.com 51meigu.com 51meiliao.com 51meishu.com 51miaoxin.com 51microshop.com 51miduoduo.com 51miit.com 51minsheng.com 51miz.com 51mmt.com 51mnq.com 51mo.com 51mochu.com 51mockup.com 51mokao.com 51mole.com 51moot.net 51mpa.net 51mrp.com 51msc.com 51mta.com 51niux.com 51nod.com 51nwt.com 51offer.com 51open.net 51opone.com 51ops.com 51p.co 51panhuo.com 51papers.com 51passion.com 51peptide.com 51pgzs.com 51photo.vip 51php.com 51piao.com 51piaohua.com 51pibu.com 51pigai.com 51ping.com 51pinwei.com 51pla.com 51pocket.com 51pocket.net 51poll.com 51pos.com 51pot.com 51poweron.com 51pptmoban.com 51psj.com 51puer.com 51qc.com 51qc.net 51qianduan.com 51qianguo.com 51qianvisa.com 51qicheng.com 51qingjiao.com 51qixing.net 51qqt.com 51qtg.com 51qub.com 51qudao888.com 51qumi.com 51quzhe.com 51race.com 51rc.com 51read.site 51recovery.com 51relaw.com 51rencai.com 51render.com 51renpin.com 51rich.net 51rong.com 51room.com 51rp.com 51rry.com 51rumo.com 51rxzc.com 51rz.org 51sai.com 51sanhu.com 51sao.net 51school.com 51scw.net 51sdj.com 51sdx.com 51search.net 51seer.com 51select.com 51self.com 51selling.com 51sgg.cc 51share.net 51shashiji.com 51shebao.com 51shengxue.com 51shenzhouyun.com 51sheyuan.com 51shizhi.com 51shop.ink 51shoubei.com 51shoufei.net 51shoushi.com 51shubiao.com 51shuobo.com 51shyc.com 51signing.com 51sjht.com 51sjm.com 51sjsj.com 51sjyx.com 51sole.com 51soulou.com 51speeds.com 51spjx.com 51ssl.com 51ste.com 51sucaiyuan.com 51suitui.com 51sutong.com 51sytx.com 51szhk.com 51taifu.com 51talk.com 51talkenglish.com 51tanbao.com 51tao.com 51taonan.com 51taoshi.com 51taoshi.org 51taowei.com 51taoyang.com 51tas.com 51tb.me 51tbox.com 51test.net 51testing.com 51testing.net 51testing.org 51tgb.com 51tiancai.com 51tiangou.com 51tie.com 51tietu.net 51tijian.com 51tingyi.com 51tiqianle.com 51tjhr.com 51togic.com 51tonglu.com 51tools.info 51touch.com 51toufang.com 51tour.com 51touxiang.com 51toys.store 51tra.com 51tracking.com 51trust.com 51tuiyi.com 51tunhuo.com 51tv.com 51tv.net 51tvbao.com 51tvrom.com 51txapp.com 51tys.com 51tyty.com 51tz.com 51u.co 51uc.com 51ukf.com 51uyi.com 51vhost.net 51vimeo.com 51vip.biz 51vv.com 51vv.net 51vv2.com 51w.co 51wangdai.com 51wangming.com 51wangpi.com 51wanquan.com 51wanxue.com 51wcad.com 51wcity.com 51web.com 51weblove.com 51websec.com 51weihu.com 51weishi.com 51weitao.net 51wendang.com 51wenzy.com 51wf.com 51wincai.com 51windows.net 51wj.com 51wnl-cq.com 51wnl.com 51world.win 51wp.com 51wtp.com 51wxjz.com 51wydj.com 51wyfl.com 51wzg.com 51wzxz.com 51xbx.com 51xcr.com 51xcrc.com 51xiancheng.com 51xianwan.com 51xiaolu.com 51xingjy.com 51xinhu.com 51xinyuan.com 51xnj.com 51xuanmu.com 51xuanxiao.com 51xuanzhu.com 51xue8.com 51xuediannao.com 51xuetang.com 51xuetongxin.com 51xuexiaoyi.com 51xxsp.com 51y5.com 51y5.net 51yabei.com 51yajk.com 51yanwang.com 51yes.com 51yey.com 51yhdai.com 51yhgj.com 51yhzp.com 51yidun.com 51yilu.com 51ying.net 51yip.com 51ykb.com 51ymxc.com 51ynedu.com 51yonggao.com 51you.com 51youdian.com 51yougo.com 51youpin.com 51youth.com 51ys.com 51ytg.com 51yuansu.com 51yuepin.com 51yueqian.com 51yugou.com 51yund.com 51yundong.me 51ywx.com 51yxcyy.com 51yxky.com 51yxwz.com 51zan.com 51zd.net 51zghbh.com 51zhangdan.com 51zhantai.com 51zheduoduo.com 51zhi.com 51zhishang.com 51zhituwang.com 51zhizhao.com 51zhucai.com 51zixiu.com 51zjedu.com 51zjxm.com 51zmt.net 51znt.com 51znyx.com 51zr.com 51zsb.net 51zsjc.com 51ztzj.com 51zwd.com 51zx.com 51zxw.net 51zywl.com 51zyzy.com 51zzl.com 51zzyjs.com 52-ic.com 52.vip 520.com 520.net 5200tv.com 520101.com 520520520520520.com 520730.com 520740.com 520810.xyz 52091w.com 520cc.com 520cfc.com 520chs.com 520code.net 520diandu.com 520gexing.com 520hello.com 520hhht.com 520homo.com 520hspfb.com 520im.com 520it.com 520lbl.com 520link.com 520love520.com 520lpy.com 520mingmei.com 520mojing.com 520ok.net 520qr.net 520switch.com 520touxiang.com 520txtba.com 520way.com 520xiazai.com 520xp.com 520xy8.com 520yidui.com 520zc.com 520zg.net 5210601.com 52112.com 5211game.com 521251212122.icu 52161.org 52177.com 521799.xyz 521dayu.com 521g.com 521led.com 521logo.com 521qw.com 521u.com 521up.com 521watch.com 521xunlei.com 52237377.com 522de.com 522gg.com 523333.com 52372.com 5238333.com 52393.com 523c8cb891010.beer 523touzi.com 52419.net 524399game.com 525.life 525069.com 5251.net 5251yx.com 52524118.com 5252b.com 5253.com 525566.com 5258.net 5258da.com 525zb.com 526183.com 526266.com 526537.xyz 52676.com 5269120.com 526net.com 527100.com 52733999.com 5277.com 527fgame.com 527ice.com 527meeting.com 527ss.com 528045.com 5281.net 52841819.com 528500.com 528529.com 52892.com 528day.com 5293.com 52969.com 52ai.com 52ali88.com 52alipay.com 52aoteman.com 52appok.com 52asus.com 52audio.com 52bar.com 52bishe.com 52bjd.com 52bji.com 52bjy.com 52blog.net 52bluetooth.com 52bus.com 52bwg.com 52by.com 52caiyuan.com 52car.net 52ce.com 52ch.net 52cha.com 52che.com 52cik.com 52ckd.com 52click.net 52cmajor.com 52cnp.com 52cnw.net 52code.store 52codes.net 52cv.com 52da.com 52dangong.com 52debug.net 52design.com 52desk.com 52dian.com 52dianbo.com 52digua.com 52dmtp.com 52doc.com 52dsy.com 52dtv.com 52dus.com 52duzhe.com 52dy.tv 52dyy.com 52dzxy.com 52edns.com 52edy.com 52enku.com 52eshu.com 52etf.site 52fangzi.com 52fanxing.com 52feijuba.com 52fzwg.com 52gaoge.com 52gaoxiao.com 52gg.com 52ggd.com 52gongju.net 52grz.com 52guzhuang.com 52gvim.com 52hardware.com 52hb.com 52hbl.com 52hejia.com 52help.net 52hotel.net 52hrtt.com 52hrttpic.com 52huaqiao.com 52hwl.com 52hxw.com 52hyjs.com 52ig.net 52im.net 52investing.com 52inwet.com 52ios.xyz 52itstyle.vip 52jdyy.com 52jianpan.com 52jiaoshi.com 52jiaozhou.com 52jiawei.com 52jingsai.com 52jinhu.com 52jisu.com 52jj.net 52jrjy.com 52js8.com 52jscn.com 52jubensha.com 52juqingba.com 52jxrc.com 52jxt.com 52kan.vip 52kanxiaoshuo.com 52kd.com 52kejian.com 52kfly.com 52leho.com 52liaoshen.com 52liezheng.com 52life.cc 52linglong.com 52lion.com 52luohu.com 52lvyou.com 52m.co 52mac.com 52magic.net 52maicong.com 52mba.com 52meirong.com 52mengdong.com 52met.com 52mhw.com 52miji.com 52mip.com 52ml.net 52mqbiao.com 52mtc.com 52muban.com 52muyou.com 52mvp.com 52nantong.net 52niuka.com 52njl.com 52nyg.com 52pcfree.com 52photo.com 52pht.com 52pi.com 52pi.net 52pictu.com 52pk.com 52pk.net 52pkvr.com 52playgame.com 52pojie.com 52post.com 52ppt.com 52qixiang.com 52qmct.com 52queji.com 52qumao.com 52qupu.com 52ra3.com 52ranwen.net 52rd.com 52rental.com 52rsjy.com 52ruodian.com 52samsung.com 52shanghe.com 52shangou.com 52shehua.com 52shici.com 52shihu.com 52shipping.com 52shuw.cc 52shuxue.com 52solution.com 52songshu.com 52souluo.com 52suda.com 52survey.com 52svip.cc 52swine.com 52t1.com 52tc.co 52tc.info 52tesla.com 52tgfc.com 52thing.com 52tian.net 52tiny.com 52tong.com 52toolbox.com 52toys.com 52tps.com 52tt.com 52tup.com 52tzs.com 52udl.com 52uhs.com 52vps.com 52w.co 52wana.com 52wanh5.cc 52wenku.com 52wlw.com 52wmb.com 52wower.com 52wubi.com 52xcyx.com 52xianbao.com 52xiaoshuowang.com 52xie.com 52xitong.com 52xiuxian.com 52xiyou.com 52xsj.com 52xuexi.net 52xz.com 52yawa.com 52ybcj.com 52yh.com 52yitian.com 52ykjob.com 52youbian.com 52youju.com 52youpiao.com 52youtu.com 52yq.com 52yushi.com 52yuwan.com 52ywan.com 52yxyx.com 52yyxk.com 52z.com 52zhaopin.com 52zhifu.com 52zixue.com 52zjkj.com 52zx.net 52zxw.com 52zy.com 5306.com 5308999.com 53155.vip 531pool.com 532106.com 53233.org 532588.com 533.com 53326.com 5334.com 5338.org 533y.com 53431.com 5345.com 53471.com 534d73a9411032.beer 535fs.com 535v.com 5366.com 5367.com 5368111.com 537300.com 53797.vip 537images20.com 537images22.com 537images41.com 537images42.com 537images45.com 537images47.com 5385s.com 538618.com 538a9b8b890bff34.com 53920.net 5395.com 53957.tw 53981.org 539831.vip 5399.com 53af08566e5d84ef.com 53ai.com 53c0083250a165d1.com 53chewu.com 53dns.com 53dns.net 53dns.org 53ee.com 53info.com 53iq.com 53kf.com 53miji.com 53museum.org 53nic.com 53q517g14c.world 53shop.com 53shubiao.com 53site.com 53wan.com 53win555.com 53wy.com 53xjd.com 53yu.com 53zaixian.com 53zw.net 54.com 54.net 5401da8c911031.beer 5406622.com 5406633.com 540734621.xyz 54114.com 5414050.com 5414900.com 54268.com 5433.com 54391.com 54406c82bf7d5705.com 5442.com 544521.xyz 544e5adac11012.beer 54540333.com 54543.org 545c.com 546709.cc 5467b.vip 54780.org 54948888.vip 5499.com 5499ok.com 54ak.com 54b03611f10271.beer 54banana.com 54benniao.com 54doctor.net 54doctors.net 54dr.com 54hcz.com 54heb.com 54im.com 54jkw.com 54job.com 54kefu.net 54ks.com 54lol.com 54maimai.com 54md.com 54mdown.com 54op.com 54pictu.com 54traveler.com 54tup.com 54watch.com 54xiaoshuo.com 54young.com 54youshi.com 54yt.net 54yuqing.com 55.cc 55.com 55.la 5500w.com 550400.com 550416.com 5508.net 5509.cc 550d93f291021.beer 5510928.com 55114008.com 551144.com 55188.com 55188.net 551d811bb4ddf283.com 5525game.com 553356.com 55344.com 554030cc.com 554488.com 5548.net 554baad62c869a7b.com 55555.ink 55555.io 55555432.com 55555558.com 5555622ab0.shop 5559000ab0.shop 5559000ab7.shop 555abc222abc.com 555abc777abc.com 555edu.net 555tg6s98w9d8sw.com 555yst.com 5566.net 5566292.com 5566362.com 5566592.com 5566596.com 5566752.com 5566975.com 5566ua.com 5567.me 556z.com 557.net 55726zubo56686.com 55749.net 557666a.com 5577.com 5577169.com 5577411.com 5577552.com 5577690.com 5577758.com 5577860.com 5577865.com 5577937.com 5577943.com 5577956.com 558.com 5588.tv 5588294.com 5588492.com 5588bet.com 558idc.com 559.cc 55935.vip 5595.cc 5599.com 5599.net 5599785.com 55b5f319e26f3e37.com 55bbs.com 55d0548671023.beer 55d32c2b010271.beer 55dai.com 55dian.com 55doc.com 55duanzi.com 55dushu.com 55e5.com 55g.cc 55haitao.com 55hike.com 55hl.com 55hl.net 55ht5hn.shop 55i8.com 55idc.com 55it.com 55jisu.com 55kantu.com 55la.com 55lu.com 55r5.com 55shantao.com 55tour.com 55tuan.com 55y.cc 55y5.com 55zhoucheng.com 55zs.com 56.com 560.im 56015.com 5606968d01021.beer 56099443.com 560e.com 560wf.com 5611.com 56114.com 56135.com 56156.com 5618.co 5629.com 56360.com 564.cc 564253a9b11042.beer 56456c9fa1013.beer 5648.cc 56506666.com 5654.com 565656.com 565882.com 56597.vip 566job.com 566zhibo.com 567.org 567030.com 56711.com 567909.xyz 567idc.com 568.com 5684.com 5684t.net 56851.net 56885.net 569.com 5694.com 56a.com 56ad2ddadaebfb59.com 56ads.com 56beijing.org 56bid.com 56c.co 56care.com 56che.com 56cheng.com 56cheng.vip 56china.com 56clte.org 56dagong.com 56dichan.com 56dq.com 56dr.com 56dr.net 56dt.com 56dz.com 56ggb.com 56gk.com 56hb.com 56home.org 56idc.com 56img.com 56img.net 56imgs.com 56jg.com 56join.com 56kad.com 56laile.com 56linked.com 56md.com 56ml.com 56mp.com 56products.com 56qq.com 56shangpu.com 56show.com 56shuku.org 56sing.com 56steel.com 56tchr.com 56tim.com 56tj.com 56tv.org 56uu.com 56xiniao.com 56ye.net 56yun.com 56zhibo.com 57.net 57017.work 57023.com 5707777.com 571400.net 571xz.com 57357.vip 574e313cc10272.beer 5755.com 57573zubo36833.com 576.com 57608.com 5760x.com 57648.com 57665.com 57676.com 576tv.com 57781.vip 57781057.com 577job.com 57821.com 57875.vip 579666.com 579idc.com 57auto.com 57bm.com 57class.net 57df3696bffd3eb4.com 57dp.com 57go.com 57mail.com 57px.com 57qy.com 57sh.com 57tbs.com 57tc.net 57tibet.com 57tuan.com 57us.com 57uu.com 57www.com 57yy.site 57zhe.com 58.com 5800.com 580114.com 580168.com 580590.com 5805c102b11021.beer 58091.xyz 580ban.com 580dns.com 580eda.net 580jz.net 580k.com 580tequan.com 5811x.com 58142404237055.icu 58153.xyz 58188.com 58199.com 582116.com 58232.vip 582hr.com 583316.com 583go.com 58416.org 5858.com 5858xs.com 58611.net 58620888.com 5866.com 5867yh.com 586jz.com 587.cc 58738.org 587image.com 5884.com 588589.com 5888.tv 588fb105cf2606b5.com 588ku.com 588tao.com 588yw.com 588z.com 5898yun.com 58abb.com 58antenna.com 58auv.com 58bd0ad4222284cf.com 58bh.com 58buy.com 58chaiyou.com 58che.com 58cloud.com 58coin.com 58corp.com 58dadi.com 58daojia.com 58demo.com 58display.com 58dns.me 58dns.org 58eventer.com 58fkb.com 58food.com 58game.com 58ganji-corp.com 58ganji.com 58ghost.com 58hua.com 58ib.com 58iclick.com 58insure.com 58iwan.com 58izl.com 58jb.com 58jixie.com 58jmw.com 58kad.com 58kuaipai.com 58kuku.com 58lingshi.com 58lovepet.com 58meeting.com 58mhg.com 58moto.com 58peilian.com 58pic.com 58pxe.com 58q.org 58q8.com 58qz.com 58shangban.com 58supin.com 58tg.com 58trz.com 58ubk.com 58uxd.com 58wan.com 58wangwei.com 58wanwan.com 58wuji.com 58xinghuo.com 58xinrui.com 58xs.com 58xs.la 58xueche.com 58xuexi.com 58yaoji.com 58yiji.com 58youtui.com 58youxi.com 58yuesao.com 58z.net 59.com 5909.net 590m.com 59120.com 591237.com 59139.com 59168.net 59178.com 5918656.com 5918dyw.com 591918.com 591con.com 591hx.com 591master.com 591moto.com 591moto.net 591mrzx.com 591syd.com 591wsh.com 591wy.com 591yhw.com 592163.com 59220ab771010.beer 59232.org 5923d.com 592bet5.com 592zn.com 59370.com 5945i.com 595.bet 595.cc 59519.com 5956777.com 595818.com 5959.vip 5959068.com 5959366.com 5959510.com 5959536.com 5959540.com 59598.com 595dlxzbanone.com 595image.com 595image.vip 595led.com 596fc.com 597.com 597guilin.com 597mm.com 597rcw.com 59852.vip 59888888.xyz 599.com 59958b.com 5999.tv 59b1a9d9d1010.beer 59b2b.com 59baike.com 59bf02cb03a7fbbb.com 59dead1ce10301.beer 59dun.com 59f086f4910311.beer 59f35373bf3f8e7d.com 59ff599661017.beer 59hi.com 59iedu.com 59iwh.com 59jt.com 59med.com 59ni.com 59pk.net 59rj.com 59store.com 59w.net 59wanmei.com 59wj.com 59yx.com 5a1eacf0110241.beer 5a6fed2321010.beer 5a8.org 5a828d12510272.beer 5a8878b99c8f9160.com 5a8a3d1d111021.beer 5a9bf3726d2b09fa.com 5aa212657a354b3e.com 5aaa.com 5acbd.com 5adanci.com 5adanhao.com 5afc70ef010251.beer 5ag.net 5aivideo.com 5aixia.com 5aiyoo.com 5ajob.com 5any.com 5aq.net 5auto.net 5axxw.com 5b1c73dc010311.beer 5b2b697bd748d07b.com 5b39c2f791014.beer 5b3znjecy.cfd 5b529d4e711021.beer 5ba6319c311011.beer 5baike.com 5ber.com 5bite.com 5biying.com 5bjm.com 5c407acb510301.beer 5c554118a1021.beer 5c84i.net 5cb69e8045837fa9.com 5ccic.com 5cda.com 5ce.com 5ce08adc68995a7a.com 5ceimg.com 5cgo.com 5cpod.com 5d.ink 5d116d676087d0e8.com 5d170bdbce0cbe9b.com 5d2ede2.com 5d6d.com 5d6d.net 5d770c50c1016.beer 5d7bcbb1a1022.beer 5dao.cc 5dashi.com 5dc0af35081be08e.com 5ddd.com 5dfp.com 5dfsd2.com 5dgz.com 5ding.com 5dmail.net 5dplay.net 5ds.com 5e17f526411011.beer 5e17fc2cca2967e2.com 5e2fd110b10301.beer 5e40004d710251.beer 5eaf8fd6c1024.beer 5earena.com 5earenacdn.com 5eplay.com 5eplaycdn.com 5er0.com 5etv.com 5etz.com 5ewin.com 5f28dfaae1016.beer 5f36b4f39ba574b7.com 5f52903c110251.beer 5f69826526db4f44.com 5f9e6b1603f69b9b.com 5fa26ed6d1024.beer 5fen.com 5fo.org 5fun.com 5fwan.com 5g-smart.com 5gcdnx.com 5gh.com 5gjoy.com 5guanjianci.com 5gwan.com 5gxsd.com 5gxt.com 5gy.com 5gzm.net 5h.com 5had0w.com 5hffr1p22j.com 5hoom.com 5hte21mz.com 5i.com 5i366.com 5i591.com 5i5aj.com 5i5j.com 5i5t.com 5i65.com 5i9u.com 5iag.com 5iag.net 5iape.com 5ibear.com 5ibug.net 5icbs.com 5ich.net 5ichecker.com 5ichong.com 5icool.com 5idc.com 5idev.com 5idhl.com 5idream.net 5iec.com 5iecity.com 5iexpress.com 5ifapiao.com 5ifit.com 5iflying.com 5ifund.com 5igcc.com 5igcw.com 5iggci.com 5igupiao.com 5igzw.com 5ihuish.com 5iidea.com 5ijk.net 5ikang.com 5iliao.com 5ilog.com 5ilr.com 5ilrc.com 5iluying.com 5imeishi.com 5imomo.com 5imusic.com 5imx.com 5imxbbs.com 5iops.com 5ip9.com 5ipatent.com 5ipkwan.com 5isanguo.com 5isohu.com 5iucn.com 5iweix.com 5iximai.com 5ixuexiwang.com 5iyoule.com 5iyq.com 5iyuyan.com 5izzy.com 5j.com 5jingcai.com 5jinzhishu.com 5jjdw.com 5jli.com 5jue.com 5jwl.com 5k.work 5k58.com 5k5m.com 5kaixin.net 5kbox.com 5kcrm.com 5kcrm.net 5kda.com 5khouse.com 5kmw.com 5kwuke.com 5lanren.com 5lu.com 5lux.com 5m5m5m.com 5mapk.com 5mu.com 5nd.com 5nexus.com 5nnj.com 5o.com 5ooq.com 5opzl.com 5opzl.net 5pao.com 5pb.net 5pk.com 5plus1.net 5pub.com 5q.com 5qwan.com 5qzone.net 5r1.net 5radar.com 5rc.com 5read.com 5rfh44h5.cc 5ring.com 5ritt.com 5rs.me 5s4f.com 5s5j.com 5s886.com 5seals.com 5see.com 5sem.com 5sha.com 5shubook.com 5snow.com 5sw.com 5t6t.com 5tangs.com 5teacher.com 5th.zone 5thhospital.com 5thspace.net 5tmobi.com 5tmovice.com 5tqjogo.com 5u18.com 5u3d.com 5u5u5u5u.com 5uchina.com 5ul.com 5umao.com 5upm.com 5usport.com 5uu8.com 5uyk.com 5v13.com 5w123.com 5w5.com 5w52.com 5w5w.com 5waihui.com 5wanpk.com 5wapp.com 5web.site 5wx.org 5wxw.com 5wyxi.com 5x54.com 5xcg.com 5xiaobo.com 5xini.com 5xmjm.com 5xyouse.com 5y6s.com 5yang.cc 5ydj.com 5yhua.org 5ykj.com 5you.cc 5you.com 5youchou.com 5zai.com 5zd.com 5zg.com 5zhr.com 5zls.com 5zw.com 6-china.com 6-u.com 6.biz 60.net 600064.com 600083.com 600086.com 6000feet.com 600146.net 600200.com 600208.net 600216.com 6002255.com 600280.com 600282.net 600496.com 600576.com 6006.xin 600689.com 600711.com 600822sh.com 600895.com 600df970611031.beer 600yj.com 601book.com 602.com 602ab6ff810251.beer 602img.com 60301c31eca86940.com 603027.com 603603b.com 603603d.com 603966.com 603ee.com 60414.agency 6044faac164dbe06.com 6046.net 605-zy.com 605276655648.icu 60582ce6688bd14e.com 60593.com 605dns.com 605f40b0b174f4ea.com 605zy.co 60606161.com 60608787.com 60623.org 6066888.com 606b558d310281.beer 6071.com 6073168.com 607images15.com 607images16.com 607images36.com 607images40.com 608.vip 6080d.com 60951.my 609999.xyz 60dj.com 60kan.com 60mil.com 60nm.com 60oa.com 60qc.com 60wr.com 60yp.com 61.com 610115.com 610213.net 61029.com 6103g.com 6104.tv 6112.com 61165.com 611qk.com 611res.com 612.com 6122cec31dfe86dd.com 612345.com 612459.com 614e697c5fb7c42a.com 6153.cc 61611.net 616167.com 6164.com 61658.com 61677.com 6168511.com 6169966.com 616a191f21009.beer 616pic.com 616wan.com 6186.com 6187wo.com 6188.net 6188cnc.com 618bg.com 618cj.com 618day.com 618hr.com 618ky.com 618tech.com 618waihui.com 61916.com 61916.net 61977.center 61baobao.com 61bb.com 61bbw.com 61cloud.net 61diy.com 61draw.com 61ertong.com 61gequ.com 61hd.net 61hr.com 61ic.com 61info.com 61k.com 61kezhan.com 61mc.com 61ok.com 61psy.com 61sheji.com 61sou.com 61tg.com 61thi77ewg.com 62.vip 6202.com 62115.com 62126tt.com 62212366.com 6222251.com 62456e3303420792.com 624down.com 62609e25011021.beer 6266.cc 62669.com 626x.com 628.com 6285s.com 62923.vip 629973.com 62ca01745cf46371.com 62d6797ca064d36c.com 62ddccc8810301.beer 62dns.com 62game.com 62l.net 62wy.com 6300.net 630book.cc 630book.co 630book.com 630read.com 630zw.org 631r.xyz 632121d3c4f46e67.com 63243.com 632news.com 63329.pet 6333.tv 6334x.com 633586c05c8f4543.com 634.ag 634d.com 634image.com 634image.vip 6360.com 6373.com 63744c3e410292.beer 637600.com 6380.org 6383.com 638300.com 6385844.com 63860.vip 639311.com 63936b71f3e4ab6a.com 6397869a4eb51a13.com 63a795836312c99d.com 63b4ff1aeff2818d.com 63cj.com 63fl.com 63pe.com 63u.net 63yx.com 63yy.com 6406.org 640640.com 641.com 642online.com 64365.com 644446.com 64504.com 645250.net 6453.net 64538.net 646000.com 6463.com 64644444.com 64783333.com 648sy.com 64dns.com 64foot.com 64gua.com 64ma.com 64mv.com 64pay.com 6501111.com 65119.com 651700.com 652ebb57a11021.beer 653697e101020.beer 654320.com 6543210.com 654321wan.com 655u.com 655yx.com 65601111.com 656126.com 65650000.com 656gate.com 658.com 65875.com 659595.com 65993zubo26633.com 65b01705c10261.beer 65bb2d6d81010.beer 65box.com 65dataranking.com 65ec0ea7f04562ad.com 65liuxue.com 65mhxy.com 6600.org 66016.com 660378.com 6605oo.com 66083797.com 660pp.com 66123123.com 66152.com 66168.net 6617.com 66173yx.com 662city.com 662p.com 66301cc.com 6633102.com 6633488.com 6633696.com 663661.com 6636yy.com 66378.com 66388.net 663jx.com 66445.org 66446200.com 66460.com 664e4037310291.beer 6655.com 6655.la 6655304.com 66580.com 665888j.com 665888s.com 6660333.com 666127.xyz 666291.xyz 6665.com 666532.xyz 666546.xyz 666548.xyz 66661s.com 6666343ac4.shop 6666519.net 66665s.com 66666.host 666666.host 6666m.vip 6666ppt.com 6666sa.com 6666xsw.com 6668dns.com 6669832.com 666bos.com 666gps.com 666idc.com 666kuaishou.com 666kuaishou.net 666pic.com 666post.com 666scly.com 666shuwu.com 666wan.com 666wan.net 666wx.cc 666xinxin.com 66701288.com 66747.org 6677243.com 667744.com 6677cq.com 667f46342ace5437.com 66825.com 668559.com 6686.com 6686a9.com 6686x5.com 6686x8.com 6688.com 668app.com 668cdn.cc 668cdn.xyz 668lw.com 668map.com 668wan.com 669167d4fc316421.com 66930909.com 669322.com 6695.com 66988.tv 6699.fun 6699129.com 6699301.com 6699343.com 6699407.com 6699408.com 6699496.com 6699497.com 6699758.com 6699784.com 6699804.com 6699811.com 6699848.com 6699873.com 669cd3a3ea61d96f.com 669pic.com 669play.com 669ye.com 669zw.com 66brl.com 66c970e7e1011.beer 66call.com 66cn.com 66ddf809c0cc0fb1.com 66ds.net 66good.com 66han.com 66huigo.com 66ika.com 66in.net 66jiedai.com 66l.cc 66laws.com 66mi.com 66mobi.com 66money.com 66mz8.com 66n.co 66nao.com 66nh.com 66park.net 66perfect.com 66play.com 66rjz.com 66rom.com 66rou.com 66rpg.com 66ruian.com 66shouyou.com 66sj.com 66sy.com 66team.com 66to.net 66ui.com 66v.net 66wc.com 66web.com 66weiyou.com 66wmw.com 66wz.com 66xue.com 66y.com 66you.com 66yyba.com 66zhang.com 66zhizu.com 66zhuang.com 67.com 67017.com 670e13a8f11042.beer 6711.com 6711img.com 671845093759368.icu 672m1z9ogj.world 67318n.com 674da9a521017.beer 6758169ad1020.beer 67623.com 676z.com 677.com 677.vip 6771112.com 678119.com 6786666.com 6787.com 67876.com 6788888.net 6789.net 6789che.com 6789g.com 6789sm.com 678cn.com 678edu.net 678ie.com 678py.com 678vr.com 67921547311681.icu 67a38421b10281.beer 67a4488e31017.beer 67az.com 67cha.com 67f4951a0c77434d.com 67it.com 67joy.com 67mo.com 67tool.com 67wanwan.com 67wx.com 67y.com 68.com 68.gy 68.vip 680.com 68120120.com 6816.com 682.com 68211.com 6822.com 68287zubo85737.com 682891.com 682ff8a9c89d5d88.com 6832123.com 6840011.com 6844.com 685462.com 68596e90010311.beer 68606060.com 68659061.com 6868shop.com 6868yx.com 68716871.com 68792999.com 688539.com 6887cc57c10251.beer 6888.ee 6888.tv 688dns.com 688mob.com 688wz.net 68955.com 68978.net 6899wan.com 68apk.com 68bbq.com 68china.net 68design.net 68e5fc2c1344afb8.com 68ecshop.com 68gainian.com 68h5.com 68hanchen.com 68hlw.com 68hr.com 68jcw.com 68ke.com 68mall.com 68play.com 68sign.com 68team.com 68u.co 68web.net 68websoft.com 68zhan.net 69090.com 6912s.com 6917.com 69216.blog 69260.com 692657.com 693.com 6934.net 693836.com 693975.com 69478.com 695157.com 695175.com 69525.com 695275.com 695828.com 695ljg.com 696.cool 696157.com 69698689.com 696b333851010.beer 697e43da249f79cd.com 698wan.com 69916666.com 699333.xyz 69981.com 699h5.com 699pic.com 69fd4a3dbd02f66c.com 69g.com 69hr.com 69mok.com 69shu.org 69shuba.cc 69tianqi.com 69xiu.com 69yc.com 69ys.com 69zw.com 6a221afdbbe2d2e5.com 6a2e6e54178e45a3.com 6a3ad24293be062d.com 6a4126ebcf94c39d.com 6a8a.com 6aas.com 6ab81d83f7d83dbe.com 6adj.com 6an8.com 6api.net 6apt.com 6b1813f5210261.beer 6b3b.com 6b3cfa277bae3b4b.com 6b786q3e.work 6bac9d15d10271.beer 6bbk.com 6bdns.com 6c0f63385ed13b89.com 6c6c.com 6c7ccba3e11031.beer 6cit.com 6cmap.com 6cnzz.com 6d4d5.com 6d4g.com 6d576388add270c5.com 6d63d3.com 6d7d.com 6d888.com 6dan.com 6dbx.com 6dcg.com 6de7eb04410311.beer 6dfefa7039812445.com 6diy.com 6ds.me 6du.in 6duoyu.com 6e212121910292.beer 6e8a225320471153.com 6e8fe57151019.beer 6eat.com 6edigital.com 6ef102d0210261.beer 6f25df38a10291.beer 6f7b51b741014.beer 6f8b82f9fbb439db.com 6fast.com 6fcsj.com 6fe7c9d291017.beer 6ff6313e475a7a32.com 6fm4dcpj31.com 6g5fd1a.com 6gh4.com 6ght.com 6glz.com 6h979.com 6hd0hoc.com 6hgame.com 6hudong.com 6huo.com 6hwan.com 6ict.com 6ie6.com 6ifang.com 6juzi.com 6jyi7mzae.com 6jz.com 6k11.com 6k6g.com 6k9k.com 6ke.com 6kw.com 6kwan.com 6kxz.com 6laohu.com 6li.com 6lk.net 6ll.com 6lrt.com 6ls.cc 6m5m.com 6miu.com 6miu.net 6my575.com 6niu.com 6nm6.com 6our.com 6p667.com 6pctuhriw.com 6pen.art 6pifa.net 6puppy.xyz 6pzftj.com 6r6992xeq1jho.cyou 6ren.com 6rencn.com 6renyou.com 6rooms.com 6s4qki.com 6s54.com 6sfg.com 6sq.net 6t.com 6t12.com 6tcc.com 6tennis.com 6thhosp.com 6tiantian.com 6tie.com 6tktrd.com 6tt.com 6tu.com 6twrte12ft.com 6uudy.com 6v.com 6v6.work 6vdyg.com 6wan.com 6wtx.com 6wwww.com 6wz.co 6x.studio 6xcdn.com 6xd.com 6xigema.com 6xiu.com 6xw.com 6yoo.com 6young.site 6yso.com 6yxk.com 6yxs.com 6yyy7.com 6z.net 6z6z.com 6ze.net 6ziz.com 6zu.com 7-11bj.com 7-che.com 7-meeting.com 7-mi.net 7-vk.com 7-wx.com 70.cc 70.net 700618.com 70098.com 700chat.com 700kan.com 700live.com 700megs.com 700mh.com 701.com 703804.com 70392.com 70392.org 70524.com 706net.com 707598.xyz 707e518c610291.beer 7080edu.com 70822.com 7089899.com 7089dd.com 7089gg.com 70cq.com 70dir.com 70e.com 70jj.com 70ka.com 70ppt.com 70soft.com 70ym.com 70yx.com 71.net 7114.com 7116.com 7116dns.com 711hospital.com 711pr.com 7120.com 71360.com 7139.com 71390.com 714.com 714a0ffa611031.beer 714b5653f10292.beer 715083.com 715288.com 715300.com 71556v.com 71683.com 71714.com 7172737.com 71757ae5f10241.beer 7176.com 717c.com 717down.com 718991.com 71908.com 7192.com 719400.com 719f06caf1017.beer 71acg.com 71acg.net 71b394ce11114.beer 71baomu.com 71baomu.net 71big.net 71caigou.com 71d7f1e121019.beer 71dm.com 71e.com 71edge.com 71edge.net 71edge.work 71elink.com 71f68cc351015.beer 71go.com 71k.com 71lady.com 71p.net 71tao.com 71tech.com 71txt.com 71wl.com 71wx.net 71xe.com 71xk.com 72.com 72017.net 720582.com 720health.com 720static.com 720think.com 720ui.com 720yes.com 720yun.com 720yuntu.com 7210.com 7211.com 7214fa7e11011.beer 72177.com 7217kf2961.com 721888.xyz 72242s.com 72257c.com 72257e.com 72257j.com 72258q.com 72287c.com 72287h.com 72287o.xyz 7230.com 7239ll.net 723e7a5a510261.beer 7245f7d6211012.beer 724pride.com 724pridecryogenics.com 724pridetech.com 72535276268b14e0.com 7265a5ef31011.beer 726p.com 7273.com 727380.com 727d5e6cb1011.beer 7280.com 7291v.com 7298.com 72byte.com 72ce.com 72crm.com 72crm.net 72crm.org 72d3bb672f4a6997.com 72dj.com 72dns.com 72dns.net 72e.net 72en.com 72g.com 72gu.com 72home.com 72kjmb.com 72la.com 72max.com 72qq.com 72r.net 72swk.com 72whys.com 72xit.com 72xuan.com 72y.co 72yce.com 72yun.com 72zhan.com 730d60bec10281.beer 731.tv 73110010.com 7315297af11011.beer 73232yx.com 73261825f768447d.com 732732.com 73336zubo25326.com 7337pay.com 734969.com 73573dd6a1023.beer 7366cba131014.beer 73676699.com 737.com 737698.xyz 73789.com 73850.org 73864.org 738888.xyz 73925.work 73980.org 7399.com 73bc.com 73bt.com 73card.com 73d1708e01022.beer 73ea00c7710272.beer 73so.com 73zw8.com 74.com 7415.com 741b0fca410271.beer 7428.net 743forever.com 7441a334d13a0000.com 74478fd3b9cca85f.com 744zy.com 745998.xyz 74615ee887a99dd7.com 7474.com 7477.com 747wan.com 749333.xyz 74955.net 74966.net 74977.net 74ad7537d1014.beer 74cms.com 74da6ad581020.beer 74dns.com 74f11ac633122c20.com 74hao.com 75.team 75111.com 75111.net 75122d9a05f7a5a7.com 751257.vip 75184.com 75271.com 752d7cf9a8cd3341.com 75367.com 7543c79b410291.beer 75510010.com 756u.com 7574.com 75757.com 7577.cc 757dy.com 7580.ltd 7597af9ac1010.beer 75982.com 75a8f8759fc99775.com 75b58faf61014.beer 75d31e3ac62e6e53.com 75g.co 75ll.com 75n474.com 75pk.com 75ww.com 75xn.com 76120.org 7618.com 761a.com 7631.com 7633sqw.com 76474cf781f10d61.com 7651.com 766.com 7663.com 76676.com 766899d4f1011.beer 766er.com 766test.com 766vd.com 766z.com 7676.com 767qkdj34u.com 767stock.com 76802.net 76831.org 76868.com 7688.net 7689.site 76963.com 769car.com 76ab.com 76baobao.com 76bb.com 76c9c1aa27766f1d.com 76dongdong.com 76ju.com 76mz.com 76pay.com 76pf.com 76y.com 76zu.com 77005163.xyz 770539.com 7711.com 77112007.com 77119159.com 771633.com 77169.com 77169.net 7717wan.com 7722wx.com 7723.com 7723img.com 7724.com 7724yx.com 7725.com 77304.com 77304y.com 77313.com 7733320.com 7733352.com 7733577.com 7733706.com 7733728.com 7735.net 77381v.com 7744wan.com 77521.com 77545.com 7755028.com 7755056.com 7755078.com 7755267.com 7755302.com 7755306.com 7755330.com 7755360.com 7756.org 7759.com 775jia.net 776577.com 7766.info 7766.org 7766060.com 7766073.com 7766090.com 7766300.com 7766362.com 7766380.com 7766398.com 77670.org 77745.com 7777733.com 777biubiu.com 777dd.life 777e.store 777eee888eee.com 777haoka.com 777lala.com 777moban.com 777sy.com 777yh.am 7788.com 7788310.com 7788610.com 7788js.com 7789.com 778buy.com 7794.com 77991.com 7799358.com 7799378.com 77994008.com 7799520.com 779wan.com 77ad.cc 77bh.com 77bike.com 77bx.com 77cr0ip236.com 77dd23.com 77de.com 77dushu.com 77dyy.net 77ebooks.com 77ed699516ed5193.com 77ee6f16b1011.beer 77eye.com 77fanwen.com 77gog.com 77hd.com 77hudong.com 77itv.com 77l.com 77lux.com 77music.com 77nn.net 77nt.com 77nt.info 77piano.com 77pin.net 77shu.com 77shuku.la 77shuku.org 77shw.com 77socks.com 77tianqi.com 77vcd.com 77xmd.com 77yx.com 77zhangh.com 77zhanghao.com 77zn.com 78.link 78104.org 78110.org 781203.com 78126dh.com 7829t.com 78302.com 785836.com 785956.com 78654321.com 78665.vip 786e7138b09934b3.com 78785z.com 7881.com 788111.com 7888.com 788899.com 788v.com 7890.net 78901.net 7899.cc 789hi.com 789hsw.com 789win07.com 78bar.com 78dian.com 78diy.com 78dm.net 78ee.com 78fz.com 78gk.com 78hr.com 78md.com 78oa.com 78os.com 78plat.com 78tp.com 78v.com 78yx.net 79.biz 790.com 79008500.xyz 790a8f76c10301.beer 7928a82f311032.beer 79332.agency 793360.com 793688.com 79432.com 7951ee2a510281.beer 79521.cc 7979u.com 797sun.com 7988.com 798com.com 798edu.com 798ydh.com 798zb.tv 799.net 79979.loan 7997v.com 7999.tv 79999.net 799job.com 79abc.com 79bb57f37108d1b9.com 79ecb629691d165f.com 79f9bf9e410292.beer 79jr.com 79tao.com 79yougame.com 79yx.com 7a.cm 7a1dd6b621020.beer 7a1f7ba4211042.beer 7a31jmf.com 7a8k.com 7a9b89eb3d333f2c.com 7ade93e381021.beer 7ahr.com 7analytics.com 7b2.com 7b6466e191019.beer 7b761738c10261.beer 7bess.com 7bip9h1k5s.com 7c.com 7c5ba8e2b10281.beer 7c637ea6d10271.beer 7c644b8a21013.beer 7caiyun.com 7capp.com 7ccj.com 7cdfad1816def43d.com 7cgw.org 7chacha.com 7ci.com 7cname.com 7cnv.com 7cv.com 7cxk.com 7cyn.com 7d4b19ab710241.beer 7d5y.com 7d604703e1023.beer 7d8fc91771017.beer 7d9c2005e1015.beer 7dah8.com 7dc0d8dad10281.beer 7dc20a92cc1da04d.com 7didc.com 7do.net 7down.com 7down.net 7dsw.com 7e.hk 7e051eec511021.beer 7e9dba1891021.beer 7east.com 7ed.net 7edown.com 7ee.com 7f0107332e0db161.com 7f36600721781324.com 7f416cfd411012.beer 7f86a2a17fcd5a5d.com 7fa19203510241.beer 7fa973f8c7bdcddb.com 7fei.com 7fff5701c5415d77.com 7fgame.com 7flowers.com 7forz.com 7fresh.com 7glb.com 7gongzhu.net 7grandcross.com 7gugu.com 7hcn.com 7head.icu 7help.net 7ho.com 7hon.com 7hua.com 7icp.com 7il.co 7ipr.com 7its.com 7jia.com 7jia2.com 7jiaqi.com 7jjjj.com 7jk.com 7juju.com 7k35.com 7k7k.com 7k8k.com 7ka.co 7kk.com 7kla.com 7kla.net 7ko.com 7kww.net 7littlemen.com 7lk.com 7luohu.com 7lw.com 7mah2.com 7moor-fs1.com 7moor-fs2.com 7moor-zx.com 7moor.com 7msj.com 7mx.com 7mz3a.com 7nepal.com 7net.cc 7oh.net 7pa.com 7paiqun.com 7piq.com 7po.com 7q5.com 7qile.com 7quw.com 7r7z.com 7rdao.com 7road.com 7road.net 7ronggame.com 7runto.com 7sef.com 7sfashion.com 7sodu.net 7souti.com 7sown.com 7soyo.com 7su.com 7syc.com 7t9.com 7tapp.com 7tenet.net 7tgame.com 7tnt.com 7tou.com 7tqy.com 7tui.net 7ugl.com 7usa.net 7uv.com 7v6.net 7vd7.com 7vk.com 7vyou.com 7wan.com 7wate.com 7wee.com 7wenta.com 7wenyi.com 7wkw.com 7wnews.com 7wsh.com 7wsh.net 7x24cc.com 7x24s.com 7x688.com 7xdown.com 7xiuxing.com 7xm.net 7xz.com 7y5.net 7y7.com 7yc.com 7yigame.com 7youxi.com 7yuki.com 7yun.com 7yun.org 7yundns.com 7yylucky.com 7yz.com 7yzone.com 7z4bz6e2cp.world 7zgame.com 7zhan.com 7zhou.com 7zkj.com 7zm.com 7zz6.com 7zzy.com 8-008.com 8.biz 8.xyz 80.hk 80000.cc 800423.com 800507.com 8006506.com 8006511.com 8006tu.com 800713.com 800820.net 8008202191.com 8008205555.com 80088886.com 800app.com 800bamboo.com 800best.com 800best.net 800bestapi.com 800bestapp.com 800bestex.com 800book.net 800buy.com 800cdn.com 800du.com 800hr.com 800jcw.com 800li.net 800lie.com 800lj.com 800mei.net 800pharm.com 800pifa.com 800tu.com 800tuan.com 800tzw.com 800vod.com 800wen.com 800xiaoshuo.com 800xs.net 800you.com 800youhuo.com 80166.com 802203.com 8025edaf81019.beer 80351.com 804c3f72a13dad45.com 805481.com 80585.com 805a8702410281.beer 8065f8f0f10261.beer 807.com 807d286522a4a453.com 807df2a0610272.beer 80800.vip 8080bl.com 8080i.com 8081.net 80811daa56184e5f.com 8082audio.com 8087sss.com 8087vvv.com 80899999.com 808c6f532d08909b.com 808xs.com 8090.com 8090.pk 809090.xyz 8090app.com 8090cdn.com 8090mt.com 8090st.com 8090vision.com 8090yx.com 8090yxs.com 80982.org 80a2a140710301.beer 80baicai.biz 80bi.com 80c189b091016.beer 80cz.net 80data.net 80day.com 80dd7626911042.beer 80den.com 80dongli.com 80host.com 80kongjian.com 80kuku.com 80lou.com 80paper.com 80s.im 80shihua.com 80sjy.net 80srz.com 80test.com 80txt.cc 80txt.com 80txt.la 80vps.com 80wifi.cc 80x.co 80xg.com 80xs.la 80zw.info 81007.work 8100ab16d11021.beer 810840.com 81138183c1024.beer 81182479.com 811sisp.com 81241g43cj.world 81257.com 81265.com 81265.net 812813.com 8130088.com 81312.com 81366j.com 815.pub 815008.com 8158.com 81593.com 815ybw.com 81629.com 8162t.com 81663344.com 81677.com 816798.net 8169.com 81730450affbad30.com 817398.com 81761.com 818.com 81813.com 8181xw.com 8181zx.com 81835.com 8185t.com 8188.cc 818cq.com 818it.com 818long.com 818ps.com 818tu.com 818u.com 818watch.com 81988888.com 81999.org 81999999.com 81art.com 81book.com 81comdns.com 81ek.com 81gfchina.com 81guofang.com 81hongshi.com 81it.com 81kx.com 81lcd.com 81man.com 81pan.com 81rzqh.cfd 81tech.com 81tt.net 81xy.com 81zhongwenx.com 81zw.com 81zw.la 8203app.com 8207hh.net 8207uu.net 82137777.com 82158.com 82250856.com 822644.com 8228.tv 822ef055f1017.beer 823238fa910271.beer 82335966.com 8243d76487f3a834.com 8246.net 8254ce48211021.beer 8264.com 82676666.com 82686677.com 82686699.com 826pc.com 826wan.com 828385vip.com 82859.com 8289880.com 828g.com 828i.com 82920.com 8295099d311031.beer 8295dc6e7e797638.com 82987977.com 829e30d07853f4fd.com 82d5d0e4f10291.beer 82e0dd98d1edbbb1.com 82flex.com 82ip.com 82ky.com 82l.net 82pk.com 8303.org 83047.work 83124.com 83133.com 83133.vip 83152222.com 8325.com 8329607.com 833006.net 8333dhz.com 8336.com 83480900.com 834834002.com 834834009.com 834834vip4.com 835444.cc 835images48.com 835images55.com 835images61.com 835images73.com 835images76.com 835images83.com 83661111.net 83666.com 83692.com 83753751.com 8379888.com 8383.vip 838413.com 838dz.com 83934.com 83990567.com 83edu.net 83h87d.com 83iiq501o2.com 83kxs.com 83mo7n9giq.com 83x.cc 84.com 84.vc 84008.com 84185858.com 8421.com 84232.com 84308.com 84399.com 844wan.com 84560262.xyz 845de4aca1019.beer 845e4a87610292.beer 846645d29f0aa91f.com 84684.net 8475.org 8477.com 848.com 848.tv 849558.com 84d8388721016.beer 84fk.com 84ju.com 84ke.com 84ktv.com 84ny.com 84zcb.com 850088.com 850718.xyz 8521.org 85229666.com 85253000.com 85384.com 853lab.com 854255.com 8543c0ee3b9082b5.com 8558.org 85657777.com 85679999.com 85791df5e89bcda6.com 8579s.com 857yx.com 857zb1.tv 85814.com 85880234.com 858game.com 85c531cb9c14f457.com 85f46a104256c205.com 85jk.com 85kf.com 85sc.com 85wp.com 85xt.com 86-import.com 86.cc 860029.com 860527.com 860598.com 86079898.com 8613.org 861718.com 86175.com 861817.com 86215.com 86262.com 863.cc 863my.com 863soft.com 86516edu.com 865211.com 86586222.com 86590.com 866.com 86656.net 866ds.com 8671099.com 8673h.com 86754.org 867867jh.com 8682.cc 8684.com 8686c.com 8688g.com 86933.com 869d.com 869v.com 86a92644807597fa.com 86amsdy.com 86bdada6e1019.beer 86bus.com 86crk.com 86ditu.com 86dk.com 86eh.com 86eye.com 86fis.com 86fsp.com 86game.com 86gc.net 86hcdnsuv.com 86hh.com 86hk.vip 86hr.com 86huoche.com 86jg.com 86joy.com 86kang.com 86kl.com 86kongqi.com 86lawyer.com 86mai.com 86mama.com 86mdo.com 86nb.com 86office.com 86pla.com 86pm25.com 86ps.net 86rexian.com 86sb.com 86tec.com 86tree.com 86ty.com 86uuu.com 86wind.com 86wol.com 86xq.com 86y.org 86yqy.com 87.vip 870.com 870818.com 870q.com 87111111.com 87130000.com 87131.vip 87161.vip 871659.org 87188718.com 872.cc 872872.com 8732365.com 8733777251212.icu 87388v.com 875296.org 8756s.com 875902.vip 8765043b5db2cbcb.com 87654321.xyz 8767.com 876920.com 8769d53.com 876dns.com 876web.com 8770000.com 87739b0fc18fe40a.com 8775.com 87753.net 877771.xyz 8779.com 8782.org 87870.com 87872277.com 878998.net 87929796a10271.beer 87949.cc 8799.com 87a37933611021.beer 87b041a2019314d7.com 87bc16a2fc6c4036.com 87e1ed649c57575b.com 87g.com 87money.com 87pk.com 87vr.com 87yy.com 88-z.com 88.com 880.net 8800.org 880022.com 8801.net 880303.xyz 880331.net 88077777.com 88090.com 880sy.com 880you.com 88106.com 88116008.com 8811777.com 881794d571016.beer 881812c.com 88183322.com 88183355.com 881ac9cfd560166d.com 8821.com 8822304.com 88239001.com 8825.com 8828y.com 88303887.com 8831.app 8831398.com 88321268.com 88360.com 88362zubo95838.com 8838sl.com 883dai.com 884358.com 8844.com 88453392.com 8848.com 8848phone.com 8848y.com 885.com 8850006.com 885210.net 88582.com 8860.net 8864.com 8866.org 886623.com 8866316aav.work 8866316apt.work 8866886688.com 8867556d88.net 8868.com 88682089.app 8868a16.app 8868vip130.app 886966.com 886abc.com 886cdead210292.beer 886vps.com 887367.com 88737v.com 88765.com 887777.com 887w.com 888-8.com 8880666.com 888132.com 8882258ab4.shop 888484.xyz 888608.xyz 8886664ad2.shop 88880809.com 88887777.com 8888800000.com 8889997777.com 888ban.com 888chem.com 888eee777eee.com 888jiagong.com 888pic.com 888ppt.com 888rj.com 888twt.com 888win12.com 8890.com 8890tu.com 8896.com 88966.net 8899.net 88995799.com 8899yyy.vip 889d9745511021.beer 88adb49761022.beer 88bank.com 88bx.com 88c3eaa9f1015.beer 88caijing.com 88cdn.com 88dushu.com 88fang.com 88fe6607b11011.beer 88gogo.com 88h3.com 88ht.com 88icon.com 88ipa.com 88k.site 88koo.com 88la.cc 88la.la 88lan.com 88laser.com 88lmfff666.com 88lmtupian.com 88lot.com 88meishi.com 88mf.com 88ming.net 88order.com 88pets.com 88rpg.net 88sup.com 88sus.com 88tang.com 88tph.com 88ttv.com 88wbet.me 88xiaoshuo.com 88xr.org 88y5.com 88ysg.com 88zha.com 88zjzy.com 89006006.com 890bf715220716f3.com 8910.io 89178.com 8926174358102.icu 8928.org 892qipai.com 89303.com 89438.com 894994.com 89538777.com 89567.cc 89609335.com 8961zx.com 896de44003a72c48.com 896qipai.com 89713742a93610e3.com 897cdb929ebd7ee2.com 898.travel 89801133.com 89808222.com 8980cc.com 8989118.com 8989jt.com 8989u.com 8999.cc 89b12b5e3ff8085c.com 89dj.com 89doc.com 89ds.com 89f0e4a1603d3372.com 89f9ee46410292.beer 89qw.com 89uu.com 8a.hk 8a10847841cdf19b.com 8a53ccb021015.beer 8ab113871fb000b2.com 8ah.cc 8ao8ao.com 8aza.com 8b0dead347366514.com 8b2.net 8b3efd3d91017.beer 8b753196c6c34891.com 8b92b52bd10301.beer 8badedce210292.beer 8bb.com 8bcd9.com 8bce394a2cdc5541.com 8bd02a5c35c9ab25.com 8bo.com 8btc-ops.com 8btc.com 8btm.com 8c657a4ba5616b4f.com 8ce7bc1173775468.com 8cname.com 8cnet.com 8d36745b85e5711c.com 8d6a9a22611032.beer 8d7c51ca60de7bc5.com 8d8215f2d2278f42.com 8d99e9f8b690b895.com 8ddbf947e1020.beer 8dei.com 8dexpress.com 8dn.com 8dol.com 8dou.com 8dp.net 8dt.com 8dudata.com 8dus.com 8dwww.com 8e5da0c5911031.beer 8e8z.com 8eda52911f4518b6.com 8ee1834c110272.beer 8eeea09bc1009.beer 8europe.com 8f72500e910271.beer 8faa7.com 8fe.com 8fenxiang.com 8ggq.com 8gl.com 8gov.com 8gui.com 8gyu.com 8hgame.com 8hsleep.com 8i8b.com 8jdns.net 8jie8.com 8jxn.com 8jzw.cc 8k69vb6421.com 8k7k.com 8kana.com 8kjl34x2gj08.com 8kmm.com 8kwebs.com 8kzw.com 8l8e.com 8lag.com 8le8le.com 8lhx.com 8liuxing.com 8lj.cc 8llp.com 8lun.com 8m8t.com 8mcn.com 8mhh.com 8mi.tech 8minzk.com 8miu.com 8miu.net 8mkt.com 8moom.com 8mpaoche.com 8ms.xyz 8n2.com 8n6n.com 8njy.com 8o9o.com 8pig.com 8pingce.com 8pu.com 8qwe5.com 8qzy.com 8rn4u.com 8rs8i.com 8s123.com 8shop.cc 8so.net 8tennis.com 8tgh.com 8tool.club 8tupian.com 8tupian.net 8u18.com 8u58.com 8uid.com 8uyx.com 8wan.com 8win.com 8win.net 8wiu.com 8wq.com 8wss.com 8wym.com 8x5vviy4r2.com 8x6x.com 8xs.org 8xz8.com 8yao2hds35sv.com 8ydsp.com 8ym8.com 8ytech.com 8yx.com 8z.net 8zhuayu.cc 8ziben.com 8zntx.com 8zy.com 9-xin.com 9-zhuce.com 9.biz 9.xyz 90.cc 900.la 900.vc 9000wy.com 900112.com 900501.xyz 900cha.com 900d8ac6110261.beer 900php.com 900ppt.com 900yi.com 90123.com 9018.net 90231611e4973cbb.com 90370.com 904e0d2ba10241.beer 9056b8f915baba58.com 90576.com 90686.com 906you.com 90747.pro 9090cdndns.com 90a7597f835b14bd.com 90ao.com 90b5d42ca1016.beer 90c6.com 90dao.com 90ers.com 90game.bet 90ko.net 90lhd.com 90qh.com 90sheji.com 90sjimg.com 90tank.com 90vm.com 90wmoyu.com 90yang.com 90yk.com 90zm.net 91-box.com 91.com 91.plus 9100.ink 9105.cc 9105.com 91084.com 910app.com 910play.com 911.cc 911.vip 91103d3a31014.beer 9111.tv 91118.com 91160.com 911zy.com 912355.com 912366.com 9125flying.com 912688.com 912hf.com 912k.com 912yx.com 91300.com 9133.com 9136.com 91360.com 91378.com 913aefac85f5bf8f.com 913pc.com 913vr.com 913you.com 9149df3441020.beer 915.com 915.tv 9154wan.com 91558.com 915658.com 91583.com 91588kf.org 915d.tv 916360.net 9166yx.com 916m.com 917.com 9170.com 917st.com 91827364592013.icu 91827364592018.icu 9186.com 9188.com 9188.work 918canyin.com 918dxs.com 918fg.com 918ka.cc 918rc.com 919.com 9191mr.com 9191net.com 9191steel.com 9191zx.com 9193.com 91985.com 9199.com 919watch.com 91ac.com 91act.com 91ajs.com 91all.net 91anjian.com 91art.net 91baby.com 91boshi.net 91boshuo.com 91bushou.com 91carnet.com 91cdkey.com 91cha.com 91changxie.com 91chengguo.com 91convert.com 91ctc.com 91cy.app 91cy.cc 91czxs.com 91daizhang.com 91danji.com 91datong.com 91dba.com 91dbb.com 91dbq.com 91ddcc.com 91ddedu.com 91dict.com 91dnso.com 91doujin.com 91dub.com 91duba.com 91duobaoyu.com 91em.com 91es.com 91exam.org 91exiu.com 91facts.com 91fangan.com 91fifa.com 91fyt.com 91game.com 91goodschool.com 91haigui.com 91haiju.com 91haoka.com 91haoke.com 91health.net 91hecheng.com 91hmi.com 91https.com 91huayi.com 91huayi.net 91hui.com 91huifu.com 91huoke.com 91huola.com 91hy.com 91idc.gg 91ifx.com 91ios.com 91ios.fun 91ivr.com 91jbz.com 91jf.com 91jiabohui.com 91jiafang.com 91jianguo.com 91jin.com 91jinjindai.com 91jinrong.com 91jinshu.com 91jiujige.com 91jkj.com 91jkys.com 91jlb.com 91jm.com 91jmw.com 91job.com 91join.com 91jtg.com 91k7.com 91kami.com 91kq.com 91kw.net 91laihama.com 91laiz.com 91ld.com 91lda.com 91lewei.com 91listen.com 91lsf.com 91lx.com 91m.co 91maibiao.com 91maths.com 91meitu.com 91mh.me 91miaoshou.com 91muou.icu 91muzhi.com 91ninthpalace.com 91nzh.com 91pandian.com 91pdf.com 91petct.com 91php.com 91post.com 91pusi.com 91q.com 91quce.com 91qycl.com 91rjz.com 91ronghui.com 91ruyu.com 91saishi.com 91sd.com 91sem.cc 91sfdj.com 91shenfan.com 91short.com 91shouce.com 91smart.net 91soer.com 91soker.com 91sotu.com 91soumu.com 91sph.com 91sst.com 91strategy.com 91student.com 91suan.com 91suke.com 91switch.com 91syun.com 91taojin.com 91taoke.com 91ting.net 91toolbox.com 91tty.com 91tvb.cc 91tw.net 91up.com 91vpn.com 91vps.com 91vrchat.com 91vst.com 91waijiao.com 91waitang.com 91wan.com 91wangcai.com 91wangyx.com 91way.com 91weimai.com 91wenmi.com 91wenwen.net 91wllm.com 91wujia.com 91wutong.com 91wzg.com 91x.org 91xch.com 91xcm.com 91xfw.com 91xiake.com 91xiazai.com 91xinshang.com 91xjcs.com 91xsj.com 91xunyou.com 91xxt.com 91xy.com 91y.com 91yao.com 91yinpin.com 91yixun.com 91yk.com 91yong.com 91you.com 91youban.com 91youchai.com 91youxi.com 91yoyo.net 91yu.com 91yuedu.com 91yunxiao.com 91yunying.com 91yxbox.com 91zhongkao.com 91zhuti.com 91znyx.com 91zxw.com 92.net 920uc.com 921.com 9211.com 9217fdb98dcc13a8.com 9217web.com 92220556.com 92220558.com 92220577.com 92220668.com 92220701.com 92220760.com 92224i.net 92224s.com 922997xtz2.shop 923f92a4e1df1753.com 924747.com 925g.com 925ps.com 926kf.com 92751437c39b61ee.com 927927.com 927953.com 927game.com 928.sale 928vbi.com 928xpj.com 92913.com 929825.com 92987.com 9299.net 929g.com 929vip.shop 92anycall.com 92ay.com 92bbs.net 92bce178d60f5a3e.com 92cf4088b1014.beer 92cloud.com 92demo.com 92dp.com 92dpw.com 92dydh.com 92e483231a9103f8.com 92fa.com 92fox.com 92gyw.com 92hidc.net 92jzh.com 92kaifa.com 92kk.com 92le.com 92lm.com 92lucky.com 92mp.com 92nas.com 92ni.com 92scj.com 92shuoshuo.com 92sucai.com 92to.com 92txt.cc 92u93e.com 92wan.com 92wudao.com 92wx.com 92wx.la 92wy.com 92xygame.com 92y.co 92yanqing.com 92yo.com 92zc.com 92zhiqu.com 92zuqu.com 930a48879eaa652b.com 930hh.com 9312.net 93126.org 93135.com 931931jh.com 933.moe 933332.xyz 93376v.com 934dsw.com 934hd.com 93636.com 93692zubo66936.com 936u.com 9377.com 937791.com 9377a.com 9377d.com 9377df.com 9377g.com 9377j.com 9377ja.com 9377os.com 9377s.com 9377z.com 9378.com 93913.com 939394.xyz 939397.vet 93966.com 93977v.com 93984.org 93e8209f610272.beer 93eu.com 93fbf3a7f10281.beer 93gaokao.com 93hdw9.com 93jiang.com 93jx.net 93kk.com 93land.com 93lh.com 93njf0.com 93pk.com 93sdk.com 93sem.com 93soso.com 93trf.com 93tyy.com 93wgames.com 93yo.com 93you.com 93zp.com 94001.com 94001.vip 940177.com 940304.xyz 94113162.xyz 94117.net 941adu.com 941gb.com 942mc.com 94362.com 9437803d210271.beer 944.com 94445.com 9453job.com 945d3447ed068dbd.com 945n48.com 946000.com 9466.com 947fd9a0011042.beer 94831.com 9486483.com 948hj.com 9495.com 94994.com 949949.com 94ab.com 94ad.com 94afx.com 94beb5b921021.beer 94cb.com 94cto.com 94fcb6f5810241.beer 94gan.net 94goo.com 94he38.com 94i5.com 94kuai.com 94mxd.com 94nw.com 94php.com 94q.com 94qy.com 94rmb.com 94rp.com 94te.com 94xy.com 94you.net 94ys.com 95-1.vip 95.com 95001111.com 95007.com 95013.com 95021.com 950901.com 950c6df3c6ee90b1.com 95105105.com 95105369.com 95105555.com 95105888.com 95105899.com 9512.net 951280.com 951368.com 95158.com 95169.com 95191.com 95195.com 951dns.com 95262.com 9527cha.com 9527cloud.com 9527dns.com 9527g.com 95303.com 95311.com 9533.org 953yx.com 95408.com 9540f8f83e1e7a8c.com 95447.com 95504.net 95504test.com 95508.com 95516.com 95516.net 95526.mobi 95528.com 9553.com 9557.com 95572.com 95579.com 95580.net 95588.com 95598pay.com 95599.hk 955yes.com 9560.cc 95600.vip 9564.com 95659.org 9567.com 95684f80222b921a.com 957431860395659.icu 95779.com 958358.com 9588.com 95890.com 959.com 9595111.vip 9596yy.com 95a.co 95b.co 95bd.com 95dns.cc 95dushu.com 95dushu.net 95e.co 95en.com 95epay.com 95fenapp.com 95ib.com 95ip.com 95jizhang.com 95k.com 95links.com 95ns.net 95px.com 95shubao.info 95to59.com 95xiu.com 95ye.com 95yijing.com 95zh.com 96005656.com 960123.com 960638.com 96090090.com 96096kp.com 960rc.com 961.com 9610.com 96110.org 9611111.com 96138.net 96160.cc 96189.com 96189.tv 9618968.com 96192.com 962.net 962007.com 962168.com 962222.net 96225.com 962360.com 962518.com 962600.com 96262.com 96335.com 96355.com 96369.net 963695.com 96382zubo66756.com 963999.com 96459.com 964yx.com 965.one 96519.org 96528.com 96533.com 965373.com 96558.com 9655bcfbe1022.beer 96567.com 96590.net 9663.com 9665.com 966599.com 9665yx.com 9666666.com 9666sr.com 9669.com 966zlnfjuza4oloh2bk.app 96804.com 96811.com 96811.net 96822.com 968309.com 968550.com 96856.org 9686000.com 96877.net 968816.com 9688896.com 968pk.com 969009.com 9692bc70da600f84.com 969368.com 96966.com 969g.com 96ac893dd11011.beer 96b25c0edb71ca11.com 96caifu.com 96cc09c581022.beer 96ce3cebe11042.beer 96daa24471013.beer 96dp.com 96eaa004b05872ae.com 96f2d.com 96flw.com 96hq.com 96kaifa.com 96lh.net 96lou.com 96ni.net 96pk.com 96sdk.com 96sir.com 96weixin.com 96yx.com 96zxue.com 97.biz 97.cc 9700hg.com 970mhz.com 97111.work 9718.com 9718game.com 972.com 9724.com 9736s.com 97576.com 97616.net 97654.com 97665.com 97775.com 9778.com 977k.com 977zy.com 97866.com 9787.com 978clouds.com 978s.com 97936.com 97971166.com 97971188.com 97972209.com 97973.com 97973309.com 97973399.com 97975508.com 97976608.com 9797cp2.com 9797ly.com 9797x4.com 9797x7.com 9799.com 9799251212480.icu 97a12bb360b26d1c.com 97add.com 97bacdab676db530.com 97ce6cbd010292.beer 97d9f793c1022.beer 97doc.com 97f6185064157973.com 97gg.net 97go.com 97jiayou.com 97jindianzi.com 97jz.com 97kid.com 97kks.com 97lp.com 97lpw.com 97ol.com 97rp.com 97rx.com 97ting.com 97ui.com 97uimg.com 97wd.com 97wyw.com 97xdj.net 97zm.com 98.com 98.ma 9800.com 98030.center 980512.com 980cje.com 981.ee 98182.com 98187411.com 984g.com 985.so 985900.com 985dh.com 985hezi.com 985ks.com 985ks.net 985sy.com 98612.com 9862ad1f310292.beer 98654.com 987.com 9873.com 9876game.com 9877.com 987app.com 987dns.com 987you.com 98809.com 988848a9d1013.beer 988878.com 98892.com 988sl.com 9891.com 9891760ee2389285.com 989198.com 98945.org 9898049.com 98982201.com 98982202.com 98982288.com 98982601.com 98983355.com 98984422.com 98986688.com 9898758.com 98987729.com 9898c.com 9898jh2.com 98b8cd6b21011.beer 98cloud.com 98d4c586f11012.beer 98du.com 98e774f505d78b1a.com 98ep.com 98eye.com 98k4.com 98lm.com 98mc.cc 98mp.com 98nice.com 98one.com 98t.la 98t.net 98tang.com 98tsg.com 98w.co 98weixin.com 98xiaoshuo.com 98xz.com 98yl.com 98zhibo.com 98znz.com 98zw.com 99.com 99113guoji.com 99114.com 99118.com 9911yx.com 99166.com 9917.com 9918.tv 99193.com 991fd1ce91009.beer 991kang.com 991quka.com 9928.tv 99357b59811012.beer 9939.com 993937.com 99394.com 993h.com 9942.org 99442.com 9944wb.com 99469.com 994wan.com 9950air.com 9951.cc 995120.net 99520.love 996.com 996007.icu 9963.org 996404.xyz 9965dns.com 9966.com 9966.org 9966333.com 9966886699.com 996996.com 996a.com 996box.com 996dns.com 996pic.com 996sdk.com 9973.com 997788.com 998.com 9981ypk.com 9982.com 998231.com 998274.com 99844666.com 99887w.com 998917.com 99895.org 998jk.com 998jx.com 998law.com 998tool.com 9991.com 999120.net 999125.com 999136.xyz 999178.com 999765.xyz 999777.com 9998.tv 99988866.xyz 9999224xtz1.shop 99999dns.com 999abc333abc.com 999ask.com 999brain.com 999d.com 999d743c51022.beer 999inandon.com 999mywine.com 999shengqian.com 999tea.com 999welder.com 999wx.com 99aiji.net 99aly.com 99bdf.com 99biaozhun.com 99bill.com 99bo.cc 99box.com 99brand.com 99bs.club 99caiba.com 99cc.com 99cfw.com 99cha.com 99cloud.net 99corley.com 99count.com 99danji.com 99ddd.com 99dingding.com 99down.com 99dushu.com 99dushuzu.com 99dw.com 99eo.com 99eyao.com 99fang.com 99fei.net 99fenlei.com 99fund.com 99fund.org 99haoche.com 99haoling.com 99hdf.com 99hkjf.com 99huodong.xyz 99ielts.com 99inf.com 99inn.cc 99jee.com 99jianzhu.com 99jiasu.com 99jiasu.net 99jrk.com 99kf.com 99kt.com 99ku.cc 99ku.vip 99kypay.com 99leidun.com 99max.me 99mc.com 99meihua.com 99meiju.tv 99mk.info 99mk.la 99mk.net 99mssj.com 99mst.com 99music.net 99n.me 99nets.me 99pdf.com 99ppt.com 99qh.com 99qibang.com 99qimingzi.com 99qumingzi.com 99read.com 99shi.com 99shou.com 99sj.com 99sky.com 99sun.com 99sushe.com 99sy.co 99thz.com 99tianji.com 99tongxuelu.com 99uri.com 99weiqi.com 99wj.com 99wuxian.com 99xr.com 99xueshu.com 99youmeng.com 99ys.com 99yunshi.com 99yx.com 99zihua.com 99zuowen.com 99zzw.com 9a04d8da811031.beer 9a9m.com 9aca7ec4f5ae25e5.com 9ailai.com 9aimai.com 9air.com 9amts.com 9aoduo.com 9aola.com 9b09eea7810251.beer 9b11b109-ab3d-4193-ac60-79cc19b3e76d.link 9b37f3cc81011.beer 9bb4cf93e10261.beer 9bianli.com 9c0c0433602d188a.com 9c67282f22796ac6.com 9c941a3b41021.beer 9ca4b8eca1019.beer 9cao9.com 9cb.com 9ccapital.com 9ce69ea6b10272.beer 9cfa10ad910291.beer 9che.com 9chew.com 9clive.com 9conn.net 9d19.com 9d47e2c251009.beer 9d86072bbc545262.com 9d87bc4302122ef4.com 9damao.com 9damao.net 9day.cc 9db.cc 9ddm.com 9de3c7ffb10291.beer 9deli.com 9dfb917ee1019.beer 9dfx.com 9dian.info 9dida.net 9dinn.com 9douyu.com 9dreams.net 9droom.com 9duw.com 9dwork.com 9e707bdb763386bf.com 9eacc080d10291.beer 9ead.com 9eae58cbc333acf8.com 9earth.com 9efca2b9a1009.beer 9eip.com 9ele.com 9etravel.com 9f113d434f8c49f0.com 9f7ef6acd10291.beer 9fapi.com 9fav.com 9fb8d5b6bff66a4d.com 9fbank.com 9fe3e7d4c10311.beer 9fh5.com 9first.com 9flb.com 9fmk.com 9fo.com 9fonecard.com 9fpuhui.com 9fs.com 9fzt.com 9fzt.net 9g8g.com 9gg.cc 9ghao.com 9gt.net 9he.com 9hier.com 9host.org 9hou.com 9ht.com 9i0i.com 9icad.com 9icode.net 9icy.com 9idudu.com 9igcw.com 9ihb.com 9ihome.com 9ijf.com 9ilrc.com 9ilu.com 9imobi.com 9inx.com 9ioldgame.com 9iphp.com 9ishe.com 9ist.com 9iwz.net 9ixf.com 9j9y.com 9ji.com 9juewu.com 9jx.com 9k01.com 9k9k.com 9ka.vip 9kcs.com 9kd.com 9kff.com 9kkk.xyz 9kld.com 9kus.com 9laidu.net 9linux.com 9liuda.com 9ljr84.xyz 9longe.net 9man.com 9mayi.com 9miao.com 9mic.com 9nali.com 9newlive.com 9ngames.com 9niu.com 9now.net 9ok.com 9om.com 9one.cc 9open.com 9orange.com 9p.net 9pinke.com 9pk.net 9pkw.com 9qu.com 9ria.com 9sb.net 9sgx.com 9shadow.com 9skb.com 9skm.com 9sky.com 9slab.com 9sleep.org 9sug.com 9syw.com 9t-tech.com 9taobao.com 9taohao.com 9tax.com 9to.com 9tong.com 9tonglian.com 9tov.com 9u8u.com 9upk.com 9vf.com 9w1an.com 9w9.com 9wad.com 9wee.com 9wee.net 9wuli.com 9wwx.com 9xdb.com 9xgame.com 9xiazaiqi.com 9xic.com 9xinli.com 9xiu.com 9xiuzb.com 9xo9.com 9xs.org 9xu.com 9xun.com 9ya.net 9yao.com 9yaocn.com 9yc.com 9ye.com 9yiban.com 9you.com 9you.net 9yread.com 9yue.com 9yuntu.com 9yuonline.com 9yz.com 9zas5.com 9zhen.com 9znet.com 9zx.com a-b.cc a-du.net a-isv.org a-jazz.com a-liai.com a-map.co a-map.link a-map.vip a-startech.com a-sy.com a-xun.com a0318.com a049636971024.beer a04d48409e40ca3f.com a0598.com a0770.com a0bi.com a0c77.com a0d73230f9d52dfb.com a0fca7a55be096ef.com a135.net a142b5e7511011.beer a1789.com a18.ltd a1891cc2258a919b.com a1a22678d1019.beer a1coin.xyz a21fs.com a29e2657018e645b.com a2dongman.com a2e1c81dce0fd3ce.com a2gu2.com a30437f3510292.beer a32bd427dd.skin a335cb802c120705.com a33a8c8c81011.beer a3p4.net a40dc409e2ea86b1.com a42c6d113874e1f3.com a44aeaeac1016.beer a45e4f5fd10272.beer a465a95641016.beer a490cce2411032.beer a4da96ae511032.beer a4s6.com a4size.net a4xvv2g18l.com a5.net a5089302099a537e.com a5380a8e41016.beer a5399.com a549543886.asia a5600.com a58cd776cc.baby a5b.cc a5idc.com a5idc.net a5j.cc a5lt.com a5xiazai.com a5y.net a61cee76f4df41b1.com a632079.me a6562752811032.beer a6h8.com a6ksw.net a7.com a700in.ren a7479032d1014.beer a74be6c3e1021.beer a756716251017.beer a75d755806b1095d.com a7647e3f151b4a5d.com a766.com a789.org a7a13fde51022.beer a7c6e291d10292.beer a7d4bd3ce10281.beer a7dcb6d9011032.beer a7shun.com a8.com a83c8524b88a06ae.com a87807b4811031.beer a87f34a60cf36893.com a88b9f894719c3d8.com a88dc138be.run a8f947.com a8tg.com a8u.net a8z8.com a909ed7022b1ecc1.com a9188.com a963.com a96b32e2b1015.beer a9998f7ed11042.beer a9c7f491710251.beer a9market.com a9vg.com a9x9.com aa-lsk.com aa03010iiko.com aa08072678.xyz aa152.com aa360.net aa433d1b51013.beer aa43z7.com aa4491.com aa50b44761011.beer aa56238652.com aa5c82aeb10271.beer aa65535.com aa6666.com aa67678156.com aa6f0397a3cf50d7.com aa76858896.com aa77kk.com aa84c23fc4aa335a.com aaalawfirm.com aaalogisticsgroup.com aaareplicawatch.com aaawz.cc aaayu.com aaayun.com aabooo.com aabqn.com aac3442de07869c0.com aacoptics.com aactp.net aad5.com aadcloud.com aadongman.com aads-cng.net aafanke.cc aafxw.com aai07251mu.com aai07260mu.com aai07280mu.com aakss.com aaltosemi.com aamets.com aamev.com aamgame.com aamgame.mobi aamgame.net aamsmart.com aanroute.net aap5.com aapinche.org aardio.com aaronlam.xyz aaspt.net aastartups.com aatccn.com aateda.com aauc.net aaucwbe.com aavisa.com aawvw.com aaxinwen.net aaygw.com aaym.net aayu.today aayun.icu aazao.com ab-sm.com ab126.com ab173.com ab1989.com ab365.com ab839c2562b8ae05.com abaa.cc abacaipu.com abackup.com abaizx.com abang.com abaoge.com abatour.com abbbio.com abbisko.com abbooa.com abbreviat.com abbyschoice.net abbyychina.com abc-ca.com abc-love.com abc119.tv abc12366.com abc151.com abc188.com abc369.net abc4game.com abc56692388.com abc59783718.com abc7722.com abcache.com abcbank.shop abcdd10006.icu abcdd10032.icu abcdd10034.icu abcdd10046.icu abcdocker.com abcdv.net abcerikk8.com abcfintech.com abcgonglue.com abchina.com abchinalife.com abcjiaoyu.com abckantu.com abcleasing.com abclogs.com abcpost.com.au abcrcw.com abcs8.com abcsbank.com abctime.com abcve.com abcxb.com abcxx.net abcxyzkk.xyz abcydia.com abd007.com abddn.com abdf002.com abe-sz.com abe-tech.com abeacon.com abedu.net abef6142010291.beer abesmoke.com abhouses.com abiechina.com abifsey.com abitcg.com abite.com abiz.com abkou.com able-elec.com ablejeans.com ablesci.com ablesky.com abletive.com ablman.com abloz.com ably.fan abmjc.com abnen.com abnotebook.com aboatedu.com aboboo.com aboilgame.com abond.net abordy.com aboutcg.com aboutcg.net aboutcg.org aboutgk.com aboutmy.name aboutnew.net aboutyun.com aboveyunbo.com abox.plus abpuvw.com abreader.com abslw.com absoloop.com absst.com abtd.net abtnetworks.com abtpaper.com abtt266.com abublue.com abundancen.com abuquant.com abusi.net abusky.com abuyun.com aby.pub abykt.com abyssdawn.com ac.fun ac268.com ac3ba49731016.beer ac57.com ac6891953e265977.com ac78416978de6213.com acabridge.net acachina.com academygkusa.com academypublication.com acadn.com acb365.com acbiot.com acc3.net acc5.com accdisplay.com accelerateg.com acceleratet.com accelink.com acceptablt.com accessads.net accessgood.com accessibility-union.com accessibility-union.net accessibilityunion.com accessicp.com accessoft.com accesspath.com accgame.com accio.ai accio.com acclb.com acconsys.com accopower.com account.htcvive.com accr.cc accsh.org acctdns.net accu.cc accuramed.com accurate-china.com accurate520.com accxiaoheihe.com acdianyuan.com acdnrvh.com ace-info.com ace-pow.com ace-rubber.com ace06a98610272.beer ace113.com acejoy.com acelamicro.com aceoo.com acepanel.net acesheep.com acetace.com acetaffy.club acetar.com acewill.net acexpress.org acfechina.org acflow.com acftu.org acfun.com acfun.net acfunchina.com acfunchina.net acg.gd acg.tv acg.xin acg169.com acg17.com acg183.com acg18s.com acg4.com acg6.com acgdb.com acggit.com acgist.com acglivefan.com acgmc.com acgorg.com acgpic.net acgpp.net acgrenwu.com acgres.com acgsan.com acgsky.win acgtofe.com acgtubao.com acguxhda.com acgvideo.com acgvr.com acgwolf.com acgzc.com acgzyj.com achiming.com achizi.com acing.com acingame.com acirclea.com acirno.com acjw.net ackjled.com acloud.com acloudbaas.com acloudrender.com acmcoder.com acmec-e.com acmemob.com acmetranslation.com acmoba.com acmsearch.com acmturc.com acnow.net aco-musical.com acobt.tech acoloo.com acoolread.com acpf-cn.org acplay.net acq42.com acqiche.com acqyjg.com acrel-eem.com acrel-microgrid.com acrel-znyf.com acrossmetals.com acroview.com acs.org acshoes.com acsrq.com act-telecom.com actacams.com actamath.com actbbs.com actcn.net acthao.com acthd123.com actime.net actions-semi.com actionsky.com activation-gp.com activeclub.net activepower.net activity-dy.com activity-wbsj.com activity-zhendingtech.com activity01.com activity02.com activity03.com activity04.com activity05.com activitybyte.com actoys.com actoys.net actranslation.com actself.me actuive.com acuangle.net acumoxj.com acwapowercn.com acwifi.net acwing.com acwlkj.com acxk.net acxxg.com ad-cn.net ad-diamond.com ad-gone.com ad-goods.com ad-squirrel.com ad-survey.com ad-young.com ad110.com ad22b2e021014.beer ad2b0298510251.beer ad321.cc ad5.com ad518.com ad7.com ad77.com ad778.com ada-post.com adamahf.com adamcdn.com adamcoder.com adamerck.net adanachina.com adanxing.com adaog.com adapay.tech adas.com adbana.com adbgz.com adbiding.com adbkwai.com adbvllc.cfd adbxb.com adc-expo.com adcdn.com adcomeon.com adcotechina.com addaad.com addchina.com addgog.com addimmar168.com addinghome.com addnewer.com addog.vip addoom.com addpcn.com addpv.com addww.com addx.live ade8.com adeasyx.com adeaz.com adebang.com adebibi.com adeccogroupcn.com adellock.com adesk.com adeskpro.com adexplain.com adfaith.com adfortest.com adfunlink.com adfuns.com adfyt.com adg-dental.com adgomob.com adguardprivate.com adhei.com adhimalayandi.com adhubbj.xyz adhudong.com adi-whatsepp.com adianshi.com adiexpress.com adigifactory.com adiic.com adinall.com adinju.com adipman.net adjdds.com adjucai.com adjuz.com adjwl.com adjyc.com adkjpx.com adkwai.com adl163.com adl888.com adlainortye.com adlefee.com adlefei.com adlo.net adluckin.com adm88888.com adm999.com admai.com admaimai.com admama.com admamax.com admbucket.com admile.xyz admin04.com admin10000.com admin345.com admin5.com admin5.net admin6.com admin88.com admincdn.com adminer.com admintony.com adminxe.com adminxy.com admobclick.com admobile.mobi admonitor.org admqr.com admsger.com admsidea.com admtvs.com admunan.com admxh.com adnineplus.com adnrhy.com adnyg.com adobe-tool.com adobeae.com adobeedu.com adoebike.com adonest.com adongyu.com adoregeek.com adoutu.com adparticle.com adpchina.com adpfm513.com adplusx.com adpsh.com adqtt.net adquan.com ads66.com ads8.com adsalecdn.com adsalecprj.com adsame.com adscover.com adsctl.com adseye.com adseyeservice.com adsfancy.com adshonor.net adshuju.com adsjdy.com adslr.com adsmogo.com adsmogo.mobi adsmogo.net adssaas.com adssap.com adsspr.com adstarcharm.com adsue.com adsuni.com adszs.com adt100.com adtaipo.com adtchrome.com adtianmai.com adtime.com adtmm.com aduan.cc adubest.com aduer.com adukwai.com adult-stem-cells.com adunicorn.com adunimax.com adunioncode.com adunite.com adups.com aduspot.com adutou.com adutp.com advanced-microsemi.com advanced-pneumatics.com adventsoft.org advertcn.com advich.com adview.com advisionhorizon.com advlion.com advuser.com adwangmai.com adwanji.com adwebcloud.com adwep.com adwery.com adwetec.com adwintech.com adwke.com adwo.com adwork.net adx.ms adx.pw adxflow.com adxhi.com adxhome.com adxiaozi.com adxiuqia.com adxliangmei.com adxmax.com adxmq.com adxpand.com adxqd.com adxvip.com adxwork.com adxyun.com adyoc.com adyounger.com adyuedong.com adyun.com adzhongdian.com adzhp.cc adzhp.net adzhp.site adznb.com adzshd.com ae-inbr.xin ae0f9d6cf11021.beer ae1234.com ae224e62eb93c42a.com ae256.com ae3a6d6e09359c15.com ae58c58c051aacd9.com ae5de9f6f1021.beer ae60.com ae7b5112dd1be127.com aebell.com aebiz.net aec188.com aecbattery.com aecc-mall.com aecichina.com aecname.com aecsian.com aeec9b62d1016.beer aeenergy.com aeenets.com aeespace.com aegcar.com aegis-env.com aegisafe.com aegisx.net aegonthtf.com aehyok.com aeicei.com aeink.com aeinsen.com aekyungnb.com aemedia.org aemoban.com aeneag.xyz aeo-cctv.com aeolustyre.com aeonbuy.com aeonmall-china.com aeonmed.com aeoto.net aepku.com aeqfuyc.com aerchs.com aerdai.com aerfaying.com aerivon.net aero-shenyang.com aerochina.net aerocityholding.com aerofugia.com aes-beijing.org aesimka.com aesoftland.com aestheticbutler.xyz aesucai.com aevit.xyz aexpec.com af122.com af165fa2910261.beer af26a21252823cc6.com af36.com af360.com af4bfc60f11011.beer af8d4587126e00c0.com afaisouth.com afang.com afanti100.com afarway.com afbd4a3905a4a9a5.com afca-asia.org afca6b82c11032.beer afcec.com afcfsf.xyz afdian.com afdian.net afdiancdn.com afdsc.com afdvr.com afe-whatsepp.com afea4f9221023.beer afeica.com afengblog.com afengsoft.com afenxi.com affann.com affluenze.com afgame.com afhao.com afirstsoft.com afj.cc afjk.com afjob88.com aflink.com aflytec.com african-styles.com afriendx.com afrindex.com afshanghai.org afszc.com aft1v1.com aft56.com aftersale-amazon.com aftersales.cc aftvc.com afudan.com afunapp.com afuvip.com afzhan.com ag03.com ag8.com agcen.com agcloudcs.com agconnect.link age.tv age06.com age6000.com aged100.com agedm.app agefans.com agel-tech.com agelocer.com agenge.com agenow.com agentyun.com aggresmart.com aghcdn.com agi360.xyz agile-china.com agileex.com aginomoto.com agiquery.com agiso.com agitationi.com agitekservice.com aglory.com agmos012.com agnaw.com agoow.com agora.io agoralab.co agpolis.com agrantsem.com agriotcloud.com agrittex.com agrochemshow.com agrodt.com agrofairs.com agrosg.com agrowingchina.com agstt.com agtech.ltd agucn.com agui.cc agumd.com agv-amr.com agvag.com agxs.net ah-inter.com ah-suuwaa.com ah-zl.com ah12333.com ah163.com ah163.net ah3c.com ah788.com ah7907.com ah8.cc ah9yu.com ahacpp.com ahaec.com ahaiba.com ahaiba.net ahalei.com ahanxun.com ahaohao.com ahaoyw.com ahatjt.com ahauto.com ahbagy.org ahbanker.com ahbb.cc ahbbsun.com ahbbtv.com ahbrt.com ahbsxh.com ahbxgwy.com ahbys.com ahbzgs.com ahbztv.com ahbzxnykj.com ahbzyy.com ahc.ink ahcaijing.com ahcaw.com ahceisc.com ahcfrc.com ahchanye.com ahcnb.com ahcoating.com ahcsdz.com ahcyfc.com ahczqy.com ahczwater.com ahdaer.com ahdahda.com ahdbsst.com ahdci.com ahdf56.com ahdfjt.com ahdhf.com ahdjbh.com ahdngj.com ahdohpiechei.com ahdsez.com ahdxj.com ahdzfp.com aheading.com ahean.com ahetyy.com ahfda.com ahfeixi.com ahfensitong.com ahfg.net ahfgb.com ahfszx.com ahfytx.com ahgae.com ahgkw.org ahglj.com ahgssh.com ahguangbo.com ahgyrn.com ahgzedu.com ahhaige.com ahhanmi.com ahhaoze.com ahhbxh.com ahhcbiotech.com ahhdb.com ahhhjx.com ahhkedu.com ahhngsjt.com ahhnsz.net ahhome.com ahhouse.com ahhsxyy.com ahhtzx.com ahhwdp.com ahhyzn.com ahhzi.com ahianzhang.com ahiib.com ahinv.com ahipi.com ahitv.com ahjdq.com ahjgxy.com ahjiankong.com ahjinyu.com ahjixi.com ahjk.com ahjkjt.com ahjlcd.com ahjoe.com ahjpgroup.com ahjsexam.com ahjszls.com ahjtxx.com ahjyec.com ahjzjy.com ahjzw.com ahjzzs.com ahkds.com ahkemi.com ahkende.com ahkjksw.com ahkjwx.com ahkxsoft.com ahlca.org ahlib.com ahlife.com ahljnews.com ahlqgs.com ahlsm1.com ahltgroup.com ahluqiao.com ahlxb.com ahlyjt.com ahlzgd.com ahmif.com ahmky.com ahmwgroup.com ahnanfang.com ahnec.com ahnluh.com ahnmc.com ahno-tool.com ahnxs.com ahohai.com ahome365.com ahomezc.com ahougn.com ahpdkj.com ahphi.com ahplm.com ahqian.com ahqmdq.com ahqxsw.com ahrccp.com ahrcu.com ahrcw.com ahread.com ahrenji.com ahrenkun.com ahrsksw.net ahrunzi.com ahs.pub ahsalt.com ahscl.com ahscxyy.com ahsea.com ahsfdxrmyy.com ahshbszyyy.com ahsj-group.com ahsjxjy.com ahsjyxh.com ahspxh.com ahsqjt.com ahssgs.com ahssnews.com ahsthzx.com ahswyz.com ahsxkyb.com ahsxscsw.com ahsyj.com ahsylsy.com ahsz.tv ahszbx.com ahteacher.com ahtelit.com ahtlbyby.com ahtongyuan.com ahtrq.com ahtxyyjt.com ahtypg.com ahuano.com ahubbs.com ahudows.com ahuyi.com ahwater.net ahwbkf.com ahwjnews.com ahwjxx.com ahwmw.com ahwmyy.com ahwnqzs.com ahwnwl.com ahwwnews.com ahwwx.com ahwxcs.com ahwxhr.com ahxcyy.com ahxmgk.com ahxunbu.com ahxwkj.com ahxyol.com ahydnet.com ahyessoft.com ahyijiali.com ahyiqing.com ahyouchengedu.com ahyouth.com ahyqx.com ahysxh.com ahyuning.com ahyx.cc ahyx.net ahyyxh.com ahyzzx.com ahzcw.cc ahzp.com ahzs10000.com ahzssw.com ahztsh.com ahzxy.com ahzyw.com ai-abc.com ai-anchor.com ai-augmented.com ai-cai.com ai-cctv.com ai-classes.com ai-cool.com ai-daxue.com ai-factory.com ai-indestry.com ai-qingchang.com ai-rtc.com ai-start.com ai-test.com ai-thinker.com ai-vip.net ai-ways.com ai-yuanjing.com ai.cc ai.run ai012.com ai0513.com ai257.com ai572.com ai7.com ai7.org aiacfo.org aiacgn.com aiagain.com aiagain.net aiage.com aiaigame.com aiaigu168.com aiaitie.com aialbb.com aianno.com aiaor.com aiappx.com aiba.com aibaimm.com aibang.com aibang.run aibangbaoxian.net aibanges.com aibank.com aibank.link aibao.com aibaocloud.com aibaogao.com aibaohu.com aibaov.com aibaoxian.com aibase.com aibeike.com aibiaomei.com aibiaow.com aibing.cc aibll.com aibo123.com aiboce.com aiboco.com aibookba.com aibreeno.com aibrm.com aibwz.asia aic707.com aicai.com aicaicdn.com aicailang.com aicairen.com aicait.com aicccloud.com aicdn.com aicdn.work aicdn2.com aicdn3.com aicdn4.com aicdn5.com aichagu.com aichaicp.com aichan.info aichangbaishan.com aichaoxing.com aichat.net aichat1234.com aichehome.com aichi-zhe.com aichinaw.com aichunjing.com aiclicash.com aiclk.com aicloud.com aicoauto.com aicode.cc aicoinstorge.com aiconn.com aicsemi.com aicsuk.net aicthink.com aicu8.com aicunfu.com aicunxibao.com aicydb.com aida64.cc aida64cn.com aidabest.com aidai.com aidaijia.com aidaily.com aidaiz.com aidalan.com aidangbao.com aidanji.com aidapeid.com aidaxing.com aidaxue.com aidcgroup.net aidcstore.net aideep.com aidenleong.com aidianji.net aidiao.com aidien.fun aidigong.com aidimedia.com aidjyun.com aidlearning.net aidlux.com aidoctor.world aidoczh.com aidog.com aidong-ai.com aidong.me aidonghai.com aidoor.net aidouzuji.com aidpaper.com aidream.website aidrive.com aidubuluo.com aidugame.com aiduoka.com aidusk.com aidusk.org aiduwenxue.com aidynamic.com aidytt.com aiec-alliance.com aieco.org aiecoms.com aiegde.com aiegle.com aiema.com aiemy.com aieok.com aier020.com aier021.com aier0431.com aier0755.com aier0771.com aier0775.com aierchina.com aierfano.com aierhb.com aierhs.com aierlz.com aieryk.com aierzy.com aievsge.com aieye8.com aiezu.com aifabu.com aifacelab.com aifamu.com aifanfan.com aifang.com aifanyi.net aifcdn.com aifei.com aifei.info aifengjie.com aifengkeji.com aifenlei.com aifont.com aifooler.com aifoxtech.com aifu10.com aifu360.com aifuturex.com aifuwus.com aifuxi.com aigame.com aigame100.com aiganggu.com aigc-cloud.com aigc369.com aigcarena.com aigccdn.com aigclsp.com aigcxm.com aige010.com aigei.com aigewc.com aigexing.com aigexing.net aigo.com aigobook.com aigodiy.com aigodlike.com aigou.com aigrammar.net aigtek.com aiguhuishou.com aiguilai.com aiguo.tech aigupiao.com aihaisi.com aihala.com aihanfu.com aihanfu.net aihangtian.com aihao.org aihecong.com aihehuo.com aihelp.net aihelpcn.net aihero100.com aihke.com aihoge.com aihotel.com aihst8.com aihua1998.com aihuajia.com aihuaju.com aihuau.com aihuazhou.com aihubs.net aihuhua.com aihuishou.com aii-alliance.org aiia.xin aiibii.com aiig.cc aiihu.com aiijournal.com aiimg.com aiimooc.com aiioii.com aiit.me aiitec.com aiiup.com aiji66.com aijiajiankang.com aijianji.com aijiatui.com aijiayou.com aijingu.com aijishu.com aijiuku.com aijizhang.net aijuhome.com aik.com aikaixin.com aikaiyuan.com aikan669.com aikan8.com aikanba.cc aikang.com aikanggroup.com aikeapp.com aikep.com aiketour.com aikf.com aikonchem.com aikucun.com ail-online.moe ailaba.com ailabs.xin ailai6.com ailbaba.me ailemon.net ailete.com ailewan.com aileyun.net aili.com ailiao360.com ailibang.com ailibi.com ailingmao.com ailinux.net ailinzhou.com ailipu.com ailite.com ailiyun.com ailom.com ailongmiao.com ailuckyboy.com ailugroup.com ailuluz.com ailuntan.com ailvxing.com aim-ec.com aimaker.space aimap.com aimatech.com aimatrix.ai aimcx.com aimeas.com aimeideni.com aimeifen.vip aimeike.tv aimeilid.com aimengang.com aimergroup.com aimeter.com aimgroupcn.com aimicron.com aimilebc.com aimin1979.com aimingmed.com aimingtai.com aimipay.net aimiplay.com aimo.work aimo2o.com aimoeart.com aimoge.com aimoneshoes.com aimoon.com aimsen.com aimu-app.com ainas.cc ainb01010zh.com ainb12251zh.com ainiapp.com ainirobot.com ainiseo.com ainiu.net ainixing.com ainm.cc ainol.com ainuoedu.com ainyi.com aioclinic.com aioexpress.com aiops.com aioptics.com aiotoolbox.com aip-gz.com aip.net aipage.com aipai.com aipaike.com aipaixt.asia aipaiyinghua.com aipark.com aiparkvip.com aipay.cloud aipcc-gz.com aipedu.net aipenglai.com aipgy.com aiphz.com aipiaxi.com aipingxiang.com aipintuan.com aipiwu.com aippt.com aiprose.com aipu-waton.com aipuo.com aipz.com aiqfd.com aiqgy.com aiqi-pharma.com aiqiangua.com aiqianxq.com aiqibaba.com aiqicha.com aiqiche.com aiqin.com aiqingyu1314.com aiqisoft.com aiqiye.cc aiqiyi.com aiqiyicloud-mgmt.com aiqiyicloud.com aiqiyicloud.net aiqiyivip.com aiqle.com aiqu.com aiqu.design aiquxs.com aiqygogo.com air-level.com air-matters.com air-matters.io air-world.com air.cc airacm.com airbft.com airboo.com airchangan.com airchina.com airchinacargo.com airchinagroup.com airchinaim.com airchinamedia.com aircourses.com aircx.bid airdali.com airdoc.com airdropin.com airenche.com airepay.net airfex.net airguilin.com airj.website airjd.com airkunming.com airland1966.com airleaderchina.com airmart.vip airmate-china.com airmb.com airmobyte.com airnut.com airoha.com.tw airpipetech.com airpointshop.com airportcip.com airportcn.com airsavvi.com airshipads.ru airspa.net airstar-finance.com airstar.com airstarfinance.com airstarfinance.net airtac.com airtofly.com airtu.me airwh.com airworksoft.com aisaohuo.com aisbeijing.com aise.chat aisecurius.com aisee.tv aiseeking.com aiseminar.com aisenseinc.com aishangba.info aishangba.org aishangyangyu.com aisharenet.com aishengji.com aishenhua.com aishenqi.net aishuge.cc aishuge.la aishukong.com aishuola.com aishushu3.com aishuttler.com aisidi.com aisila.com aisilipu.com aisin-sh.com aisino.com aisinogd.com aisinogz.com aisitool.com aisixiang.com aiskr.com aisky.cc aiskycn.com aislharrow.com aisnogames.com aisojie.com aisou.club aisoutv.com aispeech.com aisportsapp.com aispreadtech.com aistar.site aistar666.com aistudio-app.com aisx.cc aisy.com aitangyou.com aitaotu.com aitcfw.com aite.xyz aitecar.com aitecc.com aitechforsafety.com aitemall.com aiterent.com aitesu.com aitetech.com aitiancheng.com aitielu.com aiting.com aitists.com aititia.com aitiyu.com aitkcn.com aitntnews.com aito.auto aitoolwang.com aitrans.net aitransfy.com aituan.com aituanche.com aitutor100.com aitutu.cc aitype.net aiufida.com aiutdns.com aiuxdesign.com aiuxian.com aiuxstudio.com aiv5.cc aivaylaco.com aiveola.com aivivo.com aiviy.com aiviysoft.com aivote.com aiwaly.com aiwan4399.com aiwan91.com aiwanba.net aiwanma99.com aiwatchs.com aiwebsec.com aiwei365.net aiweibang.com aiweibk.com aiweline.com aiwenyi.com aiwisland.com aiworkspace.com aiwuzhou.com aiww.com aixag.com aixcoder.com aixiangtan.com aixiaoduo.com aixiaoka.net aixiaola.com aixiaomedia.com aixiashu.com aixiashu.info aixiashu.net aixiatxt.com aixiawx.com aixiaxs.com aixiaxsw.com aixiezuobao.com aixifan.com aixigua.com aixin-ins.com aixin-life.com aixin-life.net aixinmusic.com aixinwechat.com aixinwu.org aixiu.net aixiuyingyu.com aixq.com aixs.info aixs.org aixue.net aixuebanban.com aixueche.com aixuedai.com aixuejun.com aixuekku.com aixuesheng.net aixuetang.com aixuexi.com aixyy.com aixzu.com aiya.live aiya8.com aiyaapp.com aiyamax.com aiyangedu.com aiyanqing.com aiyaopai.com aiyecdn.com aiyewj.com aiyewjc.com aiyichuan.com aiyidu.com aiyinghun.com aiyingli.com aiyingshi.com aiyinteli.com aiyishu.com aiyisoft.com aiyituo.com aiyjs.com aiykj.com aiyo99.com aiyong.work aiyongaiwan.com aiyou.com aiyoumi.com aiyouxi.com aiyouzj.com aiyoweia.com aiysm.com aiyue520.com aiyuke.com aiyunxiao.com aiyy.org aizaoqi.com aizgtc.com aizhan.com aizhantj.com aizhanzhe.com aizhengli.com aizhet.com aizhibo.net aizhishang.com aizhugong.com aizools.com aizuna.com aizuopin.com aizusheng.com ajbcloud.com ajbtv.com ajcass.com ajcctv.com ajclass.com ajedu.com ajfcxx.com ajgts.com ajhchem.com ajhimalayanqf.com ajiang.net ajihuo.com ajinga.com ajiu.xin ajiuqian.com ajkcdn.com ajkdns2.com ajkfc.com ajkimg.com ajkinclude.com ajlty.com ajmide.com ajpysz.com ajrcb.com ajs-app.com ajs17.com ajtmy.com ajuhao.com ajutwatch.com ajwang.com ajxhgy.com ajyg.com ajzq.com ak-d.tripcdn.com ak-medical.net ak-v.tripcdn.com ak.cc ak0.tw ak03150hou.com ak03211hou.com ak03220hou.com ak03230hou.com ak1ak1.com ak47ids.com aka700.com aka700.net akadns88.net akadns99.net akaifa.com akailibrary.com akamai.com akashadata.com akashic.cc akaxin.com akbchina.com akbe.com akbing.com akbkgame.com akcomemetals.com akdashang.vip akdns.net akeeps.com akesobio.com akey.im akey.me akey.work akeyun.com akgjgs.com akhlwyy.com akhtm.com akhy.com aki-game.com aki-game.net aki-game2.com aki-game2.net akile.net akjianding.com akkogear.com aklyw.com akng.net akniu.com akoeva.com akomr.com akoo0509uis.com akpig.com akplayer.com akppt.net akptfe.com akr-developers.com akru.plus akscan.com akspeedy.com akswjt.com aksxw.com aku.pub akuziti.com akylq.com akymmzs.com al-jin.com al8l.com alabmed.com alaboshuiyan.com alacun.com aladdin-assets.com aladdin-e.com aladdin-reagent.com aladdinedu.com aladdinnet.com alafy.com alai.net alameal.com alanyhq.com alavr.com alayanew.com alayu.com alayunchina.com alazv.com albeche.com albertaz.com alc-iot.com alcasset.com alcha.com alcty.com alcy.cc aldeee.com aldf.online aldgo.com aldnew.com aldsd.com aldtop.com aldwx.com aledeco-hk.com aleenote.com alenable.com alertover.com alevelwx.com alexhaohao.com alexinea.com alexpad.fun alexyan.cc alfa-x.sbs alfachemar.com alfafull.com alfingfuda.com algkfd.com algogear.com algorithmart.com alh6.com alhug.com alhywj.com ali-api-test.net ali-cdn.com ali-expo.com ali-gtm-01.net ali-gtm-pressure.com ali-health.com ali-restore.net ali-star.com ali213.com ali213.net ali37.net aliadvance.com aliajj.com alialipay.com alianhome.com aliapp-inc.com aliapp.com aliapp.org aliappcdn.com alibaba alibaba-inc.com alibaba.com alibaba.net alibabacapital.com alibabachengdun.com alibabachengdun.net alibabacloud.com alibabacorp.com alibabadesign.com alibabadns.com alibabadoctor.com alibabafonts.com alibabafoundation.com alibabafuturehotel.com alibabagroup.com alibabaonline.com alibabapictures.com alibabaplanet.com alibabastars.com alibabatech.org alibabatechqa.com alibabaued.com alibabausercontent.com alibjyun.com alibjyun.net alibole.com alibtc.com alibtrip.com alibuybuy.com alic.com alicache.com alicall.com alicaptcha.com alicdm.com alicdn.com alicloud.com alicloudapi.com alicloudccp.com alicloudlayer.com alicloudsec.com alicloudwaf.com alicontainer.com alictf.com alidata.org alidayu.com aliddmall.com alidns.com alidns.net aliedge.com alienfans.net aliensidea.com alientek.com aliexpress-media.com aliexpress.com aliexpress.ru aliexpress.us alifabu.com alifanyi.com alifejk.com alifenxiao.com aligames.com aligaofang.com aligenie.com aligfwaf.com alighting.com alihd.net alihealth.hk alihh.com alihuahua.com aliimg.com aliiotapp.com alijijinhui.org alijk.com alikunlun.com alikunlun.net alili.tech aliliying.com aliloan.com aliluya.com alimama.com alimebot.com alimmdn.com alinx.com alinx.vip aliog.com alionexpo.com alipan.com alipansou.com alipay alipay-corp.com alipay-eco.com alipay-inc.com alipay-traffic.com alipay.com alipay.hk alipay.net alipayauto.com alipaycs.com alipaydesign.com alipaydev.com alipaydns.com alipayhk.com alipaylog.com alipaymo.com alipayobjects.com alipayplus.com alipcsec.com aliplay.com aliplus.com alippm.com aliqiche.com aliqq.cc aliresearch-internal.com aliresearch.com alirtc.com alirui.com alisealing-pre.com alisealing-sit.com alisealing-uat.com alisealing.com alishine.net aliso.cc alisoft.com alisolarlight.com alisports.com alitchina.com alithefox.net alithon.com alitrip.com alitrip.hk alittle-tea.com alittlesoldier.com aliued.com aliunicorn.com aliuv.com alivcr.com alivecdn.com alivv.com aliway.com aliwd.com aliwears.com aliwork.com aliwx.net alixiaomi.com alixiaoyouhui.com alixixi.com alixox.com aliyiyao.com aliyizhan.com aliyue.net aliyun-esa.net aliyun-inc.com aliyun-iot-share.com aliyun.com aliyun.org aliyun.xin aliyunbaas.com aliyunbaike.com aliyuncdn.com aliyuncdn.net aliyunceng.com aliyuncname.xyz aliyuncs.com aliyuncsslb.com aliyuncsslbintl.com aliyunddos0002.com aliyunddos0003.com aliyunddos0005.com aliyunddos0006.com aliyunddos0007.com aliyunddos0010.com aliyunddos0011.com aliyunddos0012.com aliyunddos0014.com aliyunddos0015.com aliyunddos0017.com aliyunddos0018.com aliyunddos0019.com aliyunddos0020.com aliyunddos0023.com aliyunddos0024.com aliyunddos0025.com aliyunddos0026.com aliyunddos0027.com aliyunddos0029.com aliyunddos0030.com aliyunddos1001.com aliyunddos1002.com aliyunddos1003.com aliyunddos1004.com aliyunddos1005.com aliyunddos1006.com aliyunddos1007.com aliyunddos1008.com aliyunddos1009.com aliyunddos1010.com aliyunddos1011.com aliyunddos1012.com aliyunddos1013.com aliyunddos1014.com aliyunddos1015.com aliyunddos1016.com aliyunddos1017.com aliyunddos1018.com aliyunddos1019.com aliyunddos1020.com aliyunddos1021.com aliyunddos1022.com aliyunddos1023.com aliyunddos1024.com aliyunddos1025.com aliyunddos1026.com aliyunddos1027.com aliyunddos1028.com aliyunddos1029.com aliyunddos1030.com aliyundrive.cloud aliyundrive.com aliyundrive.net aliyunduncc.com aliyundunwaf.com aliyunedu.net aliyunfile.com aliyunfuwuqi.com aliyunga.com aliyunga0004.com aliyunga0005.com aliyunga0006.com aliyunga0007.com aliyunga0008.com aliyunga0009.com aliyunga0010.com aliyunga0011.com aliyunga0012.com aliyunga0013.com aliyunga0014.com aliyunga0015.com aliyunga0016.com aliyunga0017.com aliyunga0018.com aliyunga0019.com aliyunga0020.com aliyunga0021.com aliyunga0022.com aliyunga0023.com aliyunga0024.com aliyunga0025.com aliyunga0026.com aliyunga0027.com aliyunga0028.com aliyunga0029.com aliyunga0030.com aliyunga0031.com aliyunga0032.com aliyunga0033.com aliyunga0034.com aliyunga0035.com aliyunga0036.com aliyunga0037.com aliyunga0038.com aliyunga0039.com aliyunga0040.com aliyunga0041.com aliyunga0042.com aliyunga0043.com aliyunga0044.com aliyunga0045.com aliyunga0046.com aliyunga0047.com aliyunga0048.com aliyunga0049.com aliyunga0050.com aliyunga860004.com aliyunga8601.com aliyunga8602.com aliyunga8603.com aliyungf.com aliyungrtn.com aliyunhelp.com aliyunhn.com aliyunidaas.com aliyunj.com aliyunjiasu.cloud aliyunlive.com aliyunlivetest.com aliyunos.com aliyunparking.com aliyunpds.com aliyunqifu.com aliyunrtc.com aliyunssl3.com aliyunvpc.com aliyunwaf.com aliyunwaf1.com aliyunwaf2.com aliyunwaf3.com aliyunwaf4.com aliyunwaf5.com aliyunx.com alizhaopin.com alizhizhu.com alizila.com alkpharm.com alkuyi.com all-in-data.com all3c.com all4seiya.net allapp.link allawnfs.com allawno.com allawntech.com allbrightlaw.com allchips.com allcitygo.com allcitysz.net alldk.com alldobetter.com alldragon.com alleadprint.com allenmarket.com allfang.com allfootballapp.com allfunnies.com allgamesky.com allhistory.com alliancebrh.com allianz360.com allicdata.com allied-corp.com alliedrongda.com allinbots.com allinfinance.com allinpay.com allinpaygx.com allinpayhb.com allinpaysz.com allinso.com alllandnet.com alllget.com alllook.tv allmaga.net allmed-china.com allmei.com allnow.com alloyteam.com allpay.xin allpayx.com allpku.com allposs.com allrace.com allred.vip allsafeip.com allsaintsmusic.com allschool.com allschoolcdn.com allsenseww.com allshiping.com allshopwatch.com allspark-cn.com allstack.net allstatics.com allstor.org alltechmed.com alltion-cn.com alltoall.net alltobid.com alltopposts.com alltosun.com alltuu.cc alltuu.com allvalue.com allwellsports.com allweyes.com allwin368.com allwinnertech.com allwinso.com allyes.com allyes.net allyfurn.com allystar.com allyvn.com alminecn.com almondoy.com alnan.com alo7.com aloha-ukulele.com alonemonkey.com along96.com alongsky.com alookweb.com alpha-browser.com alpha-star.org alphabiopharma.com alphabole.com alphassl.com alphay.com alrailpha.com alskbc.com alsolife.com alsovalue.com alszxyy.com altamob.com altratek.com altstory.com altwavehub.cfd altxw.com alu-ledprofile.com aluaa.com aluminiumchina.com aluntan.com alwaysnb.com alwayzev.com alwindoor.com alxw.com alyasset.com alyisheng.com alypw.com alyzq.com alzls.com alzscl.com am-sino.com am1116.com am774.com am810.net am89.com amaiche.com amallb2b.com amalrob.com amantang.com amanyi.com amap.com amapauto.com amarsoft.com amassfreight.com amasswww.com amaxchina.com amayad.com amazfit.com amazingsys.com amazom-update.com ambassadorchina.com amberbj.com amberedu.com amberhotelsgroup.com amberknit.com ambier.net ambition-soft.com ambow.com amcarebsh.com amcaresz.com amcarewl.com amcfortune.com amchamchina.org amcvoyages.com amdotibet.com amec-inc.com amegroups.org ameisx.com amemv.com amemv.net ameow.xyz americachineselife.com amethystum.com amexpressnetwork.com ameya360.com amflowbikes.com amflower.com amgbs.com amgepic.com amh.sh amhimalayanet.com amhl.net amiao.co amicc.com amijiaoyu.com amindbox.com aminglinux.com amishii.com amishow.com amivian.com amiyabot.com amo-solar.com amo9.com amobbs.com amoe.cc amonxu.com amoydxmed.com amp-intl.com ampcn.com amperobots.com amphenol-auto.com amphenol-industrial.com amphenol-jet.com amphibiachina.org amplesky.com amplly.com ampmake.com ampxl.com amqyl.com ams-aigc.com amsky.cc amsoveasea.com amssro.net amswater.com amtbbs.org amtf18.com amtjt.com amtron-ic.com amuletj.com amuletor.com amuluze.com amunion.com amusic.shop amyart360.com amymx.org amyroutes.com amysql.com amyxun.com amz123.com amz520.com amz800.com amzcaptain.com amzcfo.com amzdh.com amzkeys.com amzmm.com amzndns-cn.biz amzndns-cn.com amzndns-cn.net an1health.com an2.net an68.com analog.com analogfoundries.com analysysdata.com anan123.vip anan666.com anandoor.com anandzhang.com ananlighting.com ananpet.com anao.vip anatuprak.com anav.com anbang-life.com anbanggroup.com anbaool.com anbokeji.net ancbk.com ancda.com ancdwqob.asia ancesours.com anchnet.com ancii.com ancun.com anda-cn.com anda-tech.com andaike.com andakc.com andan.me andazr.com andcaifu.com andemed.com andertechs.com andes.tech andesbrain.com andeshengtec.com andfx.net andgele.com andhj.com andpay.me andreader.com android-doc.com android-studio.org androidesk.com androidga.com androidinvest.com androidmi.com androidmov.com androidonline.net androidperformance.com androidtea.com andtosi.com andwi.com andygcj.com andyx.net ane56.com aneasystone.com anei.tv anestcang.com anetuo.com anf-z.com anfan.com anfangnews.com anfangzb.com anfeng.com anfensi.com anfine-healthcare.com anfipet.com angeeks.com angel-game.net angel-hospital.com angel-medical.net angel-usa.com angelacon.com angelakillian.com angelarabbit.com angelcrunch.com angelhome.org angeljjangnara.com angell-studio.com angelmom.org angeltranslation.com angelyeast.com angelyeast.ru angelyeast.xyz angine.tech angleebeauty.com anglo-chinese.com angogotech.net angrymailer.com angrymiao.com angui.org anguilasia.com anguomob.com angustar.com angwei.net anhei2.com anhei3.net anheng.com anhengcloud.com anheyu.com anhkgg.com anhouse.com anhuaedu.com anhuanjia.com anhui-expressway.net anhui365.net anhuiaia.com anhuicta.com anhuigaokao.com anhuihr.com anhuihuayun.com anhuijszp.com anhuilife.com anhuimeijia.com anhuimobile.com anhuinews.com anhuiry.com anhuisjx.com anhuisuya.com anhuiwine.com anhuiyun.com anhuizk.com ani-sh.com aniccw.net aniceapp.com anicoga.com anictdns.click anictdns.store anijue.com anileyehospital.org animalchina.com animate.art animationcritics.com animetamashi.com animetaste.net anischools.com anitama.net aniu.com aniu.so aniu.tv aniworld.tv anjgas.com anji-ceva.com anji-logistics.com anji-tonghui.com anji66.net anjia.com anjiala.com anjialaw.com anjian.com anjianghu.net anjiangshi.com anjiechem.com anjiecorp.com anjifood.com anjilog.com anjimicro.com anjismart.com anjixg.com anjoyfood.com anjubao.com anjujituan.com anjuke.com anjukestatic.com ankai.com ankang.net ankang06.org ankangfulu.com ankangtong.com ankangwang.com ankaotong.com ankebio.com ankelife.com ankeni.net anker-in.com ankerjiedian.com ankevip.com ankeyunda.com ankianki.com ankichina.net ankki.com ankobot.com ankogroup.com ankuai.net anl-cn.com anlai.com anlaiye.com anlewo.com anlian.co anliantest.com anlibaby.com anlilaw.com anlink.com anlitai.com anlogic.com anlu.net anlu114.com anlusy.com anmco8.com anmeisheng.com anmo.com anmobc.com anmpserver.com anmumchina.com ann9.com annabelz.com annainj.com annearkham.com anneijun.com annelhair.com annhe.net anniekids.net annil.com annoron.com annto.com annuoxun.com anoah.com anonym-hi.com anosmcloud.com anoyi.com anpig.com anpsk.org anpu119.com anpush.com anpuzx.com anqingonline.com anqingwt.com anqingzhiyun.com anqn.com anqu.com anquan.info anquan.org anquanbao.com anquanjs.com anquanke.com anquanone.com anquanssl.com anquantong.com anquanzhao.com anran233.com anrangas.com anranhs.com anrayer.com anren.org anrenmind.com anrenxmed.com anrlm.com anruan.com anruichina.com ansendun.com anshahouse.com anshibuff.com anshiduo.com anshig.com anshinko.com anshism.com anshunfiber.com anshunholdinggroup.com anshuntech.ltd ansiding.com ansimeter.com ansky.com ansteelgroup.com ansucai.com ansuner.com ansxtech.com ant-biz.com ant-cloud.net ant-financial.com ant-open.com anta.com antaifans.com antaiib.com antairui.net antangbusiness.com antao.hk antaq.com antbank.hk antbuyhot.com antchina.com antcloud-miniprogram.com antcut.com antdigital.com antebao.com antebo.com antekoptics.net antespace.com antewer.com antfans.com antfin-inc.com antfin.com antfinancial-corp.com antforecast.com antfortune.com antgroup.com antgv.com antibanads.com antibodychina.com anticheatexpert.com antiquelearn.com antiviruspcsuite.com antiy.com antiy.net antmoe.com antom.com antpcdn.com antpedia.com antping.com antplay888.com antriver.com antrol.com antsdaq.com antso.com antsoo.com antspainter.org antto.cc antuan.com antuan365.com antuni.com antuofh.com antutu.com antutu.net antvr.com antwork.link antyikangih.com anw.red anweilan.com anweishi.com anweizhi.com anwen.cc anwfm.com anwha-auto.com anxia.com anxiangkeji.net anxiaoer.com anxin.com anxin.link anxin168.com anxin360.com anxin360.net anxinapk.com anxinbianmei.com anxindavisa.com anxinfloor.com anxinfloors.com anxinlirong.com anxinmai.com anxinssl.com anxintrust.com anxinwangdun.com anxinyisheng.com anxinzhonghui.com anxiu.com anxiw.com anxjm.com anxunshihui.com any123.com any8.com anyan.com anyang100.com anyangedu.com anyant.com anybeen.com anybox.com anychem.com anycoh.com anycross.com anycubic.com anye.xyz anyelse.com anyew.com anyforprint.com anyforweb.com anygame.info anyihua.com anyimai.com anyizn.com anyka.com anyknew.com anyline.org anymcu.com anymetre.com anyni.com anynote.org anyolife.com anyong.net anyoy.com anyrtc.io anyrui.win anysafer.com anyscdn.com anyskygame.com anysql.net anystandards.com anytesting.com anytocopy.com anyun100.com anyunjianzhan.com anyv.net anyview.net anyway.fm anyway.red anywlan.com anywood.com anyxz.com anzerclub.com anzext.com anzhen.org anzhengshipin.com anzhi.com anzhiguolv.com anzhitan.com anzhixun.com anzhuauto.com anzhuo.com anzhuo.me anzhuoapk.com anzhuoe.com anzhuoshouzhuan.com anzmy.com anzogame.com anzow.com ao-di.com ao-hua.com aoao365.com aoaob.com aoasign.com aobacore.com aobaishi.com aobanghb.com aoboor.com aobosoft.com aocde.com aocdn.com aoch.com aochengcdn.com aocslb.com aocter.net aodabo.tech aodaliyaqianzheng.com aodbw.com aoddoll.com aode8.com aodeline.com aodeng.cc aodianyun.com aodingsy.com aoecq.com aoedi.com aoerdz.com aoetech.com aofanxx.com aofeida.com aofenghuanjing.com aofenglu.com aofs.vip aogocorp.com aograph.com aoguan.com aoguansteel.com aoguanwns.com aohaosiyq.com aohuasports.com aohuatextiles.com aojauto.com aojia-oil.com aojiahuashare.com aojian.net aojian2.net aojiaostudio.com aojiyingyu.com aojiyouxue.com aoju.net aokang.com aokangsports.com aolai.com aolaigo.com aoligei.site aolijsj.com aolinjy.com aolinpharma.com aoliongame.com aolvyou.com aolylcd.com aomao.com aomeikeji.com aomolit.com aomygodstatic.com aonaotu.com aoni.cc aoofu.com aoogee.com aoohu.com aoongmob.com aooooz.com aopayun.com aoqiangtc.com aorankj.com aoratec.com aoscdn.com aoscom.net aosenm.com aosens.com aoseo.com aoserp.com aoshine.com aoshitang.com aoshite.net aoshowsh.com aoshu.com aosikazyimage.com aosong.com aosoo.com aoswtc.com aotaidianqi.com aotchina.com aotian.com aoto.com aotoso.com aotrip.net aotuzuche.com aotxland.com aoun.ltd aovud.com aowei-sh.com aowei.com aowenmarketing.com aoxiang100.com aoxingrelang.com aoxintong.com aoxsb.com aoy-power.com aoya-hk.com aoyanchang.com aoyangzg.com aoyanwl.com aoye.com aoyige.com aoyii.com aoyiluoad.com aoyor.com aoyotech.com aoyou.cc aoyou.com aoyou365.com aoyoulife.com aoyoux.com aoyu100.com aoyuanlives.com aoyunque.com aozare-acemak.com aozare-avernai.com aozhanls.com aozhougoufang.com ap-china.com ap1983.com ap88.com ap8888.com apaas-zone-test.com apabi.com apad.pro apartments-bj.com apayun.com apbiao.com apcc2.com apcdns.com apcdns.net apclc.com apcso.com apcta.com apcups.org apcupse.com apdcdn.com ape8.com apearth.com apecloud.ltd apecome.com apehorse.com apeloa.com apesk.com apet.vip apetdog.com apetops.com apevolo.com apexhuntingau.com apexmic.com apexquartzstone.com apextechnik.com apeyun.com apfeien.com apgoview.com aphidic.com api-expo.com api-forwards.com api-m.com api-vod-qcloud.com api.anythinktech.com api.so apiairasia.com apiandroid.com apicase.io apicgate.com apichina.com apickup.com apicloud.com apifabric.net apifox.com apifoxmock.com apigateway.info apigwtencent.com apilyzy.com apim.work apimkt.net apipost.net apira.org apirc.org apiseven.com apispace.com apistd.com apitask.com apitd.net apitutu.com apiunion.com apiview.com apizl.com apizza.cc apizza.net apjingsi.com apk02061oo.xyz apk3.com apk4399.com apk8.com apkbus.com apkdv.com apkevery.com apkhot.com apkj.com apkpackagesys.com apkplug.com apkrj.com apkxz.com apkyx.com apkzu.com aplaybox.com aplnk.com aplum-inc.com aplum.com aplus100.com apluscap.com aplusda.org aplusunion.com apmarry.com apmbooth.com apme-magnetics.com apmengfan.com apmgmedical.com apmvista.com apnring.com apodaenvi.com apollo-platform.com apollo-share.com apollo.auto apolloon-group.com apollopump.com apollotop.com apous.com apowo.com apowogame.com apoyl.com app-router.com app001.com app0772.com app111.com app111.org app1116.app app16688.com app168.cc app17.com app178.com app2006.com app2pixel.com app86.com app887.com appadhoc.com appadhoc.net apparest.com appbi.com appbk.com appbocai.com appbsl.com appbw.com appbz.info appbza.com appchina.com appchizi.com appcms.org appcoo.com appcool.com appcpa.co appcpa.net appcpx.com appcup.com appdao.com appdi.com appdown.info appdp.com appeasou.com appeeres.com appfeng.com appfimo.com appganhuo.com appgenuine.com appia.vip appicad.net appicplay.com appidfx.com appifan.com appinn.com appjiagu.com appkaifa.com appkefu.com applausefz.com apple-corer.com apple-x2.xyz apple110.com apple114.com apple17.club apple4.us apple523.club apple886.com appleadstech.com applebl.com applejp.cloud applemei.com applepopo.com appletuan.com applex.net applezhang.com applinzi.com applm.com applogcdn.com applogo.net applon.net applysquare.com applysquare.net appmifile.com appmiu.com appnode.com appol.com appollochina.com appotronics.com appqv.com approvebook.com apps-solayer.org apps121.com appscan.io appsflower.com appsflyer-cn.com appshike.com appshop.cc appsimg.com appsina.com appso.com appstorehuan.com apptao.com apptaxi.net apptrackerlink.com appubang.com appublisher.com appurl.cc appurl.me appvipshop.com appweb1.com appweiyuan.com appwill.com appwuhan.com appwuhan.net appxzz.com appyao.com appying.com appykt.com appyouni.com appzhigong.com appzhonghua.com aprche.net apriltq.com aprunchuang.com apsdai.com apsfon.com apsgo.com apsoto.com apspharm.com aptchina.com aptchip.com aptdn.net aptenon.com apubond.com apusic.com apwuyou.com aq2y.com aqara.com aqb.so aqbxcdn9.com aqbz.org aqc100.com aqd-tv.com aqdcdn.com aqdesk.com aqdlt.net aqdstatic.com aqee.net aqfen.com aqgygc.com aqhospital.com aqidb.org aqioo.com aqisite.com aqjx.com aqjz.net aqlife.com aqniu.com aqpta.com aqqcx.com aqrose.com aqrsblg.com aqsc.org aqsiqauto.com aqtd.com aqtowngas.com aqtwpc.com aqtwwx.net aqtwwxemail.com aqtxt.net aqua-worth.com aquabk.com aquacity-tj.com aquair-china.com aquanliang.com aquanutriera.com aquanyou.com aquapipetech.com aquaterramail.com aquathlondenice.com aquaticowatch.com aquayee.com aquazhuhai.com aqueck.com aqumon.com aqxx.org aqyad.com aqyqqy.com aqyun.com aqyzm.com aqzpw.com aqzt.com aqzyzx.com ar-max.com ar0101.com arabsquash.com aragexpo.com araldite2014.com aranya.cc arapp.online aray1981.com arayzou.com arbays.com arc-uds.com arcas-da.com arcdmi.com archaeuscapital.com archcollege.com archcookie.com archcy.com archermind.com archeros.com archgo.com archgrid.xyz archi-motive.com archiant.com archina.com archiname.com archio.pro archiposition.com architbang.com archrd.net archsummit.com arco.design arcsoftai.com arcstack.club arcteryx-log.com arctic007.com arcticray.com arctiler.com arctime.org ard-china.com ardmon.com ardsec.com areader.com arealx.com arebz.com arefly.com arenabreakoutcn.com arerberte.com areweloongyet.com arextecn.com arglasses.work argylehotels.com arhoo.com ariacraft.net arielcosmetic.com arin-elec.com arinchina.com arisastar.com ark301.com arkfeng.xyz arkfwq.com arkid.cc arkid.org arkntools.app arkoo.com arkrdigital.com arkread.com arks.red arksz.com arliki.com arlmy.me arm9.net arm9home.net armbbs.net armchina.com armdesigner.com armfly.com armin.cc arminuntor.com armourtires.com armracolostrumes.site armsrock.com armsword.com armvm.com armystar.com arnstbearing.com arocmag.com aroseks.com arowanahome.com arp.cc arpbox.com arpun.com arqinge.com arrbid.com arromaxinc.com arrow-sh.com arrow-tower.com arrowceramic.com arrowos.net arrowwardrobe.com ars-china.com arswp.com arswz.com art-ba-ba.com art-child.com art-coding.com art138.com art238.com artacode.com artaime.com artbookinchina.com artcg.design artcool.com artcto.com artdata.net artebuy.com artech-graphite.com artemedhospital.com arterytek.com artexamcq.com artfinace.com artfoxlive.com artgogo.com arthals.ink arthing.org arthome163.com arthubdam.com arthurchiao.art arthurpharma.com articclothes.com article.cool artimg.net artinchip.com artisan-cloud.com artisan-tek.com artistry-club.com artistrylab.net artlianhe.com artlinkart.com artlnk.com artmuseumonline.org artnchina.com artop-sh.com artopgroup.com artopia-group.com artp.cc artpangu.com artpro.com artpro.vip artproglobal.com artrade.com artrobot.com artron.net artronartdata.com artronimages.com artrus.net arts-nj.com artsbuy.com artshanghaifair.com artsoa.com artverse.work artvisioncg.com artwaker.com artwe.com artwun.com artww.com artxun.com arvato-ocs.com arvinhk.com aryasec.com as-doll.com as-hitech.com as.mr as01271kkp.xyz as02010kkp.xyz as16.com as3f.com as5.com as66588.com asa-asia.com asasd.online asatiles.com asattitude.com asbazainville.org asc-events.org asc-wines.com ascend-bio.com ascendgene.com ascendgz.com ascenpower.com ascentawits.com aschina.org aschip.com aschtj.com asciima.com asczwa.com asczxcefsv.com asd.red asd868.com asdbfjoiug.com asdeshan.com asdf-bj.net asdf010.com asdlkjf.com asdx.io asean-china-center.org aseann.com aseanparts.com asemi360.com asemi99.net asen-pharm.com aseoc.com aseoe.com asf4asgfrxc.com asfuwu.com asfzl.net asgezhi.com ashan.org ashidc.com ashining.com ashoucang.com ashqgpxy.com ashsilent.com ashvsash.net asi-midea.com asia-cdn.com asia-dns.com asia-sh.com asiabt.com asiaci.com asiacold.com asiacool.com asiacorp.net asiadvb.net asiae.com asiaeap.com asiaecs.com asiafactor.com asiafm.hk asiafm.net asiagreenfund.com asiaidc.net asiainfo-sec.com asiainfo.com asiainfo.org asiainfodata.com asiametallurgical.com asianev.com asianewsphoto.com asianmetal.com asiarobot.net asiaseiki.com asiasymbol.com asiatelco.com asiayun.com asiet.net asifadeaway.com asilu.com asim-emc.com asimi8.com asit.cc asjnu.com ask.amd.com askbrisk.com askci.com askdd.org askdiandian.com askemq.com asketchup.com askk.cc asklib.com asklink.com askpanda.cc askququ.com askraste.com asktao.com asktempo.com asktug.com askxt.org asleyu.com aslk2018.com asls.space asm64.com asmasm.com asmlc.com asmr.gay asmr.red asnlab.com asnlab.org asnowsz.com aso.ink aso100.com aso114.com aso120.com asoasm.com asosde.com asosoaiid.com asp168.com asp300.com asp300.net asp8php.com aspbc.com aspcms.com aspiration-cn.com aspirationtesting.com aspire-info.com aspirecn.com aspiresun.com aspnet.tech aspsky.net aspx.cc aspxhome.com asqhr.com asqql.com asr-cn.com asrmicro.com assassinscreedcodenamejade.com assemblydragon.com asset-us-store.msi.com asset-vendor-event.msi.com asset.msi.com assets-global.viveport.com assets.uxengine.net assrt.net assyrb.com astbbs.com asterfusion.com asteriavs.com astestech.com astfc.com asthis.net astipaint.com astra-biotech.com astraintel.com astral-vector.com astroai-in.com astroaio.com astron.ac astronergy.com astropulsion.com astrostanleystudio.com asty664.com asujp.com asurada.zone asus-sh.com asussmart.com asusw.net asvm.net aswetalk.net asxrpcb.com asxw.net asxzcn.com asyzonline.com aszhuyuan.com at-e.com at0086.net at188.com at317.com at58.com at78.com at98.com ata-edu.com ata-test.net atacchina.com atanyu.com atatech.org atats.shop atb.so atbug.com atc-sh.com atcc360.com atchip.com atcloudbox.com atcontainer.com atcpu.com aterminal.net atfeng.com atgbiotechnology.com atguigu.com atguigu.org athaitao.com athensgamulch.com athmapp.com athub.com atianqi.com atidesoft.com atido.com atimeli.com ating.info atjoqgi.com atk-film.com atk.pro atk.store atkgear.com atlab.ai atlaslovestravel.com atlhb.com atlmall.com atlxm.com atmbox.com atmcu.com atmib.com atmlimited.com atmob.com atob100.com atobo.com atollbath.com atom-hitech.com atomgameteam.com atomgit.com atomgit.net atomhike-en.com atomhike.com atomic-art.com atomlife.net atomlock.com atpanel.com atrenew.com atri.ink atriptech.com atrustdns.com ats6355866.com atshph.com atstudy.com atsws.com attacker.fit attainsgroup.com attendees.link atticus.vip attomotion.com attop.com attri.mobi attribuly.com atukjhesk.com atum-tech.net atuoyi.com atwbz.com atwtech.net atyomi.com atyun.com atyun.net atzjg.net atzlinux.com atzuche.com au-daiwa.shop aube-archi.com aubemobile.com aubor-ind.com aubye.com aucanlink.com auchexpo.com aucnln.com audan2011.com audatex.ch audatex.com audatex.net audio-gd.com audio-technica-hz.com audio-y.com audio160.com audioadx.com audiobuy.cc audiocn.com audiocn.net audiocn.org audiofamily.net audiotop.net audiowell.com audiowell.net audiowellzq.com audioxj.com auditcn.com audlabs.com audtools.com aufewb.com augix.me augsky.com augurit.com augustcn.com auiou.com aulacn.com auldey.com aumantruck.com aunapi.com auniontech.com aunload.com auoda.net auok.run auozzjs.lol aupu.net aura-el.com auroapi.com aurogon.com auromcs.com aurora-jy.com aurora-oa.com aurorauo.com aurumdriver.vip aus.cc ausaview.com ausbio.com ausca-oils.com ausdn.com ausdream.org aushinelyn.com aushy.com ausner.net ausnutria.com ausny.com ausperbio.com auspous.com aussino.net austargroup.com austarstudy.com australiaxy.com ausunpharm.com authbus.com authing-inc.co authing.co authing.com auto-ccpit.org auto-changchun.com auto-ekontrol.com auto-expos.com auto-learning.com auto-made.com auto-mooc.com auto-purify.com auto-testing.net auto-union.net auto-wo.com auto1768.com auto18.com auto318.com auto328.com auto510.com auto6s.com autoahk.com autoai.com autobaidu.com autobaojun.com autobit.xyz autobizreview.com autocamel.com autochinashow.org autochinazh.com autochips.com autochongqing.com autodl.com autodmp.com autodnsv1.com autodnsv1.net autodwg.com autoecosystems.com autoengine.com autoesd.com autofull.net autogslb.com autohao.com autohenan.com autoho.com autohome.com autohome.tel autohr.org autohunan.com autoij.com autoitx.com autojiaoyi.com autojingji.com autojs.org automall365.com automsen.com autonavi.com autoparts-yoto.com autopartsdk.com autopeitao.com autophagy.net autoqingdao.com autosey.com autoshafa.com autoshanghai.org autosmt.net autostreets.com autosup.com autothinker.net autounicom.com autovideo.club autovolke.com autowelds.com autowise.ai autoz.net autozi.com autumndesires.com auwincmc.com aux-home.com auxgroup.com auy07161km.com auy07170km.com auy07180km.com auy07190km.com auy07200km.com auy07201km.com auy07211km.com auy07230km.com auyou.com av-ic.com av199.com av2.me av269.com av380.net av77.org avadairy.com avalon233.com avanpa.com avanzacorp.com avaryholding.com avatamveda.com avatarmind.com avatarmobi.com avatr.com avaya.hk avc-mr.com avc-ott.com avdgw.com avemaria.fun aves.art avfline.com avgh5.com avgnati.com avgnatii.com avgroft.com aviationsnip.com avic-acs.com avic-apc.com avic.com avichina.com avicnews.com avicsec.com avicsgt.com avicui.com avilive.com avinex.com avischina.com avivaqueen.com avl-hitec.com avlinsight.com avlsec.com avlyun.com avlyun.net avlyun.org avnpc.com avoscloud.com avp76.com avp76.net avpic.xyz avptec.com avq360.com avrvi.com avstar4.com avt-cn.com avtechcn.com avtt830.com avuejs.com aw-ol.com aw.cc awaker.net awaliwa.com awardsequence.com awc618.com awcloud.com awcn.cc awehunt.com awemeughun.com awemeuglang.com awemeugsoul.com awemeugwave.com aweray.com awfggc.com awhouse.art awi-intl.com awinic.com awmote.com aword.net awotuan.com awoyun.com awsamazonlab.com awsdns-cn-00.com awsdns-cn-00.net awsdns-cn-01.biz awsdns-cn-01.net awsdns-cn-02.biz awsdns-cn-02.net awsdns-cn-03.biz awsdns-cn-04.net awsdns-cn-05.biz awsdns-cn-05.net awsdns-cn-06.com awsdns-cn-06.net awsdns-cn-07.biz awsdns-cn-07.com awsdns-cn-07.net awsdns-cn-09.biz awsdns-cn-09.com awsdns-cn-09.net awsdns-cn-10.com awsdns-cn-11.biz awsdns-cn-11.com awsdns-cn-12.biz awsdns-cn-12.net awsdns-cn-14.biz awsdns-cn-14.com awsdns-cn-15.net awsdns-cn-16.biz awsdns-cn-16.net awsdns-cn-17.biz awsdns-cn-17.com awsdns-cn-17.net awsdns-cn-18.biz awsdns-cn-18.net awsdns-cn-19.biz awsdns-cn-19.net awsdns-cn-20.biz awsdns-cn-20.com awsdns-cn-20.net awsdns-cn-21.biz awsdns-cn-21.net awsdns-cn-22.com awsdns-cn-22.net awsdns-cn-23.com awsdns-cn-23.net awsdns-cn-24.biz awsdns-cn-24.com awsdns-cn-24.net awsdns-cn-25.com awsdns-cn-25.net awsdns-cn-26.com awsdns-cn-27.biz awsdns-cn-27.com awsdns-cn-28.biz awsdns-cn-28.net awsdns-cn-29.biz awsdns-cn-31.net awsdns-cn-33.biz awsdns-cn-33.net awsdns-cn-34.com awsdns-cn-34.net awsdns-cn-35.biz awsdns-cn-35.net awsdns-cn-36.biz awsdns-cn-36.com awsdns-cn-36.net awsdns-cn-37.biz awsdns-cn-37.com awsdns-cn-37.net awsdns-cn-38.net awsdns-cn-39.biz awsdns-cn-39.com awsdns-cn-39.net awsdns-cn-40.biz awsdns-cn-40.com awsdns-cn-40.net awsdns-cn-41.biz awsdns-cn-41.com awsdns-cn-41.net awsdns-cn-42.biz awsdns-cn-42.com awsdns-cn-43.biz awsdns-cn-44.biz awsdns-cn-44.com awsdns-cn-44.net awsdns-cn-45.biz awsdns-cn-45.com awsdns-cn-45.net awsdns-cn-46.biz awsdns-cn-46.com awsdns-cn-46.net awsdns-cn-47.biz awsdns-cn-47.com awsdns-cn-47.net awsdns-cn-48.biz awsdns-cn-48.com awsdns-cn-48.net awsdns-cn-49.biz awsdns-cn-50.biz awsdns-cn-50.net awsdns-cn-51.biz awsdns-cn-51.com awsdns-cn-52.biz awsdns-cn-52.com awsdns-cn-52.net awsdns-cn-53.com awsdns-cn-54.biz awsdns-cn-54.net awsdns-cn-55.biz awsdns-cn-55.com awsdns-cn-55.net awsdns-cn-56.biz awsdns-cn-56.net awsdns-cn-57.com awsdns-cn-58.biz awsdns-cn-58.com awsdns-cn-58.net awsdns-cn-59.biz awsdns-cn-59.net awsdns-cn-60.biz awsdns-cn-60.com awsdns-cn-60.net awsdns-cn-61.biz awsdns-cn-62.biz awsdns-cn-62.com awsdns-cn-62.net awsdns-cn-63.biz awsdns-cn-63.com awsdns-cn-63.net awsdns-vip.com awsok.com awsonamazon.com awspaas.com awspony.com awstar.net awtmt.com awuming.com awx1.com awyerwu.com awyx.xyz ax196.com ax2nc4.ren axa123.com axatp.com axbsec.com axbur.com axcf.com axentbath.com axera-tech.com axfys.com axhimalayancc.com axhjfobr.shop axhub.im axiang.com axiaoxin.com axiba66.com axic6906.com axilone-shunhua.com axinsur.com axisfluid.com axjm-ex.com axjsw.com axjx.com axmro.com axmw.com axnsc.com axoij.com axq66.com axqqq.com axqswm.net axs8.com axshuyuan.com axuer.com axuexiw.com axunyou.com axure.us axureshop.com axureux.com axxsw.org axybio.com axyxt.com axzchou.com ay-china.com ay-health.com ay001.com ay001.net ay2fy.com ay57.com ay5y.com ay99.net ayalm.com ayatuan.com aybwg.org aycav.com aycgu.com aychfy.com ayctgy.com aydaojia.com aye.ink ayfdc.com ayfy.com ayfyfy.com ayguge.com ayhmjy.com ayhuowan.com ayhyxg.com ayi800.com ayibang.com ayidada.com ayijx.com ayilaile.com ayilian.com ayjewelry.com ayjs.net aykj.net ayklgas.com aymym.com aynchem.com ayoushu.com ayqy.net ayrbs.com ayrc.cc ayrc.net ayrmt.com ayrq.com aysbxxh.com ayshq.com aysjhod.xyz aysjyjjh.com ayudasalud.com ayump.com ayunlian.com ayuren.com ayuyun.com ayw.ink ayxz.com ayzzxx.com az009.com azad.asia azbingxin.com azbq.org azchcdna.com azchcdnb.com azchcdnc.com azchcdnd.com azchcdne.com azchcdnf.com azchcdng.com azchcdnh.com azchcdni.com azchcdnj.com azchcdnk.com azchcdnl.com azchcdnm.com azchcdnn.com azchcdno.com azchcdnp.com azchcdnq.com azchcdnr.com azchcdns.com azf010.com azhimalayanvh.com azhituo.com azhubaby.com azjy88.com azmcode.com azonete.com azooo.com azoyacdn.com azoyagroup.com azp315.com azpdl.com azpdl.net azt365.com azuiblc.com azure-wave.com azure.cc azureflying.com azuremigrate.download.prss.microsoft.com azuremigratetest.download.prss.microsoft.com azurestackhub.download.prss.microsoft.com azurestackhubuat.download.prss.microsoft.com azuretouch.net azurew.com azureyun.com azxdiy.com azy288.com azycjd.com azyfy.com azz.net azzdm.com b-chem.com b-cro.com b-eurochina.com b-fairy.com b-k-automation.com b-raymedia.com b.biz b01.net b02f0d7f3745ba7c.com b041e427810281.beer b07cceaf011012.beer b08.com b082392de1024.beer b13075593271.com b13bc577fd.run b18e55f8a1010.beer b19a352d2336941a.com b1bj.com b1n.net b1qg.com b214bd8861009.beer b2216419b1013.beer b22fb6d6d1015.beer b23.tv b230756fa1114.beer b230ed9d61010.beer b262a49751023.beer b27ceaa1053.skin b287f400810291.beer b29f45a5b10271.beer b29gj.com b2b-builder.com b2b.biz b2b123.com b2b168.com b2b168.net b2b168.org b2b3.com b2b6.com b2b818.com b2bdq.com b2bgo.com b2bic.com b2bkk.com b2bname.com b2bvip.com b2bvip.net b2byao.com b2c-28loops.com b2c.biz b2cedu.com b2clouds.com b2jiaxiao.com b2q.com b2star.com b3198a37310281.beer b3727743007e8b15.com b384f2fff3e6d159.com b3b97f52c55246d7.com b3inside.com b3log.org b3logfile.com b40e80b301022.beer b44fd0fd51014.beer b4ca25f717d58cac.com b5.com b510qh.shop b5232b4da6e285b2.com b53358ed31009.beer b555b.com b5669d7a0a.vip b5a3f14042830b91.com b5b6.com b5b6308ab4859018.com b5csgo.plus b5esports.me b5m.com b6098130711042.beer b612.me b612kaji.com b643bce461009.beer b6522.com b670bffdf1021.beer b68f0a844eec7fff.com b6a531b371011.beer b6cc0921b1024.beer b6r.com b71ea195f05f569c.com b71ef13941015.beer b75c5da009ac3871.com b76ad11181024.beer b7av.com b7e314d4810241.beer b7eeeb26810241.beer b812824ed173a8c0.com b83d11444463a621.com b883481331023.beer b8b4ix7bj.com b8e4d120a10271.beer b8kk.com b8yx.com b9127b1b510292.beer b93a0ccdfcd1d26c.com b93df4bea4666064.com b963aae3c10272.beer b9a3e87f01023.beer b9ad.com b9bdc7d62dfb0e5e.com b9noqayb1s.work ba-li.com ba08e2f96f675d22.com ba1400.com ba20db47708bc51f.com ba7jcm.live baacloud32.com baae91ac810311.beer baalchina.net baaniarts.com baba-blog.com baba12.com bababian.com bababus.com babady.com babai.cc babaicai.com babaike.com babaimi.com baballs.com babao.com babapi.com babawar.com babaxiong.com babedy.com babeijiu.com babeword.com babifood.com babiguoguo.com babolchina.com baboshan.com babsoft.net babuxiang2005.com baby-bus.com baby-joy.com baby577.com baby611.com baby7blog.com baby868.com babybus.com babybus.org babycdn.com babymoro.com babymozart.cc babyqiming.com babytree.com babytreeimg.com bacaizi.com bacaola.com bacaoo.com bacaosh.com bacic5i5j.com backaudio.com backdata.net backendman.com backmany.com backoffice-cms.com backupdesktopcloud.com bacninhlocalguide.com bacocis.com bacts.com bacyfzjt.com badambiz.com badapple.pro badazhou.com bademeiji.com badmintoncn.com badmintone.com badong.net badou.com badouxueyuan.com badu.com badudns.cc badwe.com baeapps.com baertt.com baetyl.tech baf566dfd40e3413.com bafangjuhe.com bafangwy.com baful.net bag198.com bagb2b.com bagevent.com bags163.com bagsnet.com bagstory.net bagtree.com baguichong.com baguilingyun.com bagxs.com bahealpharma.com bahecloud.com bahens.com bahepark.com bai.com baian-group.com baiao.com baibaipei.com baibaoyun.com baibm.com baibo8.com baibomedia.com baibu.com baic-group.com baicai.asia baicai.com baicaijie09.com baicaio.com baicaiyouxuan.com baicaolu.net baicaosoft.com baiccapital.com baiccl.com baicdnx.com baicells.com baicfc.com baicheng.com baichengtax.com baichengyuehua.com baichuan-ai.com baichuan.tech baichuanhd.com baichuanhudong.com baichuannet.vip baichuanweb.com baicizhan.com baicizhan.org baiclouds.com baicmotor.com baicmotorsales.com baicrx.com baicuoa.com baidajob.com baidao.com baideled.com baidenafu.com baidesz.com baidevalve.com baideye.com baidiapp.com baidinet.com baidu baidu-bank.com baidu-cdn.com baidu-cdn.net baidu-int.com baidu-itm.com baidu-mgame.com baidu-nj.com baidu-tech.com baidu-wenxue.com baidu.cc baidu.com baidu.hk baidu.mobi baidu120.cc baidu123.com baiduads.com baiduapp.com baidubaidubaidu.net baidubce.com baidubcr.com baidubos.com baiducloudapi.com baiducontent.com baidudaquan.com baidudw.com baidufe.com baidufree.com baiduhtml5.com baiduhui.com baidujinshu.com baidulook.com baiduor.com baidupan.com baidupcs.com baidupcs.net baidupeixun.com baidusmartapps.com baidustatic.com baidusx.cc baidusx.com baidutab.com baidutieba.com baidutt.com baiduux.com baiduwaf.com baiduwebgame.com baiduwpan.com baiduxiaodai.com baiduxiaoshuo.com baiduyangguang.org baiduyun.com baiduyun.wiki baiduyuncdn.com baiduyuncdn.net baiduyundns.com baiduyundns.net baiduyunsousou.com baiduyunwaf.com baiduzjn.com baieryk.com baifae.com baifang.in baifangdianqi.com baifangzh.com baifeiyue.com baifendian.com baifubao.com baigebao.com baigebg.com baigehuidi.com baigeseo.com baigo.net baigolf.com baigongbao.com baigougou.com baigouwanggong.com baiguitang.com baihangbao.com baihangdai.com baihaocha.com baihe.com baiheee.com baihelove.com baihemedical.com baihemob.com baihezi.com baihong.com baihongsoft.com baihuayan.com baihui.com baihui.live baihui168.com baihuibio.com baihuillq.com baihuiyaoye.com baihuwang.com baiila.com baiinfo.com baijia.com baijiacloud.com baijiahulian.com baijiantest.com baijiasheping.com baijiaxingwang.com baijiayun.com baijiayuncdn.com baijiegroup.com baijiexiu.com baijincdn.com baijingapp.com baijiudl.com baijob.com baijunjz.com baijunyao.com baijus.net baijuyi.com baikaigroup.com baikalasia.com baikalminer.com baikalyq.com baikangyun.com baike.com baikecs.com baiked.com baikehuanjing.com baikemy.com baikemy.net baikeshiji.com baikeshijie.com baikevod.com baikewenda.com baikexueshe.com baikezh.com bailb.com bailepin.com bailiaijia.com bailiangroup.com bailiann.com bailiban.com bailiguangmang.com bailing.online bailing88.com bailingdanci.com bailingjk.net bailinsi.net bailitech.com bailitools.com bailitop.com bailizw.com bailucloud.com bailvanquan.xyz baima.com baimao-expo.com baimao.com baimaohui.net baimatech.com baimda.com baimei.com baimeidashu.com baimiao.tech baimiaoapp.com baimin.com baina.com bainaben.com bainaruibusiness.com baineng.cc bainmedical.net bainus.com baiousen.com baiozhuntuixing.com baipin.pw baipu365.com baiqian.com baiqiangart.com baiqiangyl.com baiqianxin.com baiqiaogame.com baiqishi.com baiqiso.com baiqiyaoye.com baiquefahuasi.com bairenzbg.org bairoe.com baironginc.com bairuitech.com baisainuo.com baise.cc baise123.vip baise1314.com baisecn.com baiselife.com baiselyw.com baiseshiyu.com baiseylj.com baiseyun.com baisha.com baishan-cloud.com baishan-cloud.net baishan-gateway.com baishan.com baishancdnx.com baishancdnx.net baishancloud.com baishancloud.org baishandnsx.com baishandnsx.net baishangeek.com baishanyun.com baishicha.com baishimeipai.com baishinetwork.com baishishuju.com baishixi.xyz baishuku.la baishulou.net baishunet.com baishuyun.com baishuzhai.cc baishuzhai.com baisihan.com baisiterzh.com baisiweiting.com baisu.cc baisuifc.shop baisuizhixiang.com baitahe.net baitaihuge.com baitanheichang.com baitaoidc.com baitdu.com baite666.com baithu.com baitianinfo.com baitiao.com baitomould.com baitongplastics.com baitongwang.com baitu.com baitugu.com baituibao.com baiu.com baiven.com baiwandz.com baiwang.com baiwangjs.com baiwen100.com baiwenbao.com baiwujt.com baiwulin.com baiwushi168.com baiwutong.com baiwv.com baixiangfood.com baixiangnews.com baixiaosheng.net baixiaoxs.com baixihuang.com baixing.com baixing.net baixingjob.com baixingyllh.com baixiong.info baixiu.org baiyang.com baiyangseo.com baiyaohy.com baiycap.net baiye5.com baiyewang.com baiyi.shop baiyi181.com baiyiba.com baiyikc.com baiying.com baiyinggd.com baiyintouzi.com baiyishequ.com baiyizg.com baiyjk.com baiyou100.com baiyu.tech baiyujingfeng.com baiyumedia.com baiyun-hotel.com baiyunairport.com baiyunholding.com baiyunhuojia.com baiyunmh.com baiyunpump.com baiyunxitong.com baiyuyu.com baiyyy.com baizengtech.com baizhan.net baizhanke.com baizhanlive.com baizhouniao.com baizhu.cc baizlink.com bajasaechina.com bajie1.com bajiebofang.com bajiexinxi.net bajintech.com baka.im baka.plus bakaxl.com bakbitionb.com bakclass.com bakerdavid.shop bakingerp.com baklib.com bakpower.com bakshifen.com bakstotre.com bala.cc balance-net.com balancer-sh.com baldc.com baldor-tech.com baletu.com balift.com balihe.com balijieji.com balimtoy.com balingtxt.com balldollars.com ballgametime.com ballpure.com balltv.cc baltamatica.com baltamatica.net bama-supercon.com bamaiwo.com bamalifelong.com bamaol.cc bamaol.com bamashenspring.com bamatea.com bamaying.com bamboofactorychina.com bambooolab.com bambu-lab.com bambulab.com bamengame.com bamensq.com bamenzhushou.com bamuwu.com bamuyu.com bananafather.com bananain.com bananalighter.com bananau.com bananaumbrella.com bananaunder.com banban.work banbang.com banbanjia8.com banbao22.com banbijiang.com bancai.com bancheng08.fun banchengyun.com banchuan.net banciyuan.me bandainamcoshanghai.com bandao.com bandaoapp.com bandari.net bandayun.com bandcevent.com bandcoder.com bandeyu.com bandianli.com bandoristation.com bandvr.com banfubbs.com bangandi.com bangbang.com bangbang93.com bangbanghuoyun.com bangbendi.com bangboss.com bangbuy.com bangcaiwu.com bangcheng0769.com bangchengchem.com bangcle.com bangcn.com bangdao-tech.com banggeen.com banggo.com banghaiwai.com bangivf.com bangjiantong.com bangjigroup.com bangju.net bangkaixin.com bangkao.com bangkaow.com bangkebao.com bangkehui.com banglianai.com bangmai.com bangninji.com bangnixia.com bangnizexiao.com bangongtuku.com bangongyi.com bangongziyuan.com bangqi66.com bangqike.com bangqu.com bangrong.com bangsee.com bangshouwang.com bangtaixcl.com bangthink.com bangtukj.com banguanjiabc.com bangwo8.com bangwo8.net bangwoting.com bangxuetang.com bangyike.com bangzechem.com bangzhuta.com banji001.com banjia1680.com banjiajia.com banjiang.cc banjiekuaiji.com banjing.com banjixiaoguanjia.com banjuanshu.com banjunxingkeji.com bank-139.com bank-of-china.com bank-of-tianjin.com bankalliance.net bankcomm.com bankcomm.com.mo bankcomm.com.tw bankcz.com bankgz.com bankhr.com bankksw.com banklilv.com bankofbbg.com bankofchangsha.com bankofchina.com bankofdl.com bankofshanghai.com bankofshanghai.net bankofsv.com bankoftianjin.com bankoftieling.com bankofvolc.com bankofyk.com banksteel.com bankyellowriver.com banlikanban.com banma.com banmaaike.com banmacdn.com banmadayuwen.com banmaedu.com banmaerp.com banmagushi.com banmajsq.com banmajz.net banmamedia.com banmasiwei.com banmasrf.com banmasusuan.com banmayingyu.com banmeng.com banmi.mobi bannei.com banner668.com.hk banqumusic.com bansha.com banshangong.com banshier.com bantangapp.com bantangbuy.com bantouyan.com banwagong.men banwagongcn.com banwagongzw.com banwo365.com banwoo.net banwoyo.net banwugongsi.com banxiaomazaojiao.com banxiayue.com banye.tech banyiyi.com banyuetan.org banyuetanapp.com banyuetanedu.com banyuetanxcx.com banyunjuhe.com banzhe.xyz banzhuti.com banzou.name banzouzhizuo.com bao-fang.com bao-hulu.com bao12333.com bao265.com bao315.com bao369.com baoanchina.com baob123.com baobanli.com baobao001.com baobao88.com baobaobang.com baobaoqiming.site baobaoshu.com baobei360.com baobeicang.com baobeigezi.com baobeihr.com baobeihuijia.com baobeio.com baobeita.com baobeituan.com baobeiy.com baocdn.com baochaojianghu.com baochunyiran.com baocps.com baocuicoin.com baodan100.com baodan360.com baodaohealth.com baodaren.net baodery.com baodian.com baodigs.com baodu.com baoduys.com baofeng.com baofeng.la baofeng.net baofeng365.com baofon.com baofoo.com baofoo.net baofu.art baofu.com baofu.info baofull.com baofumuye.com baogang.info baogao.com baogao.store baogaobox.com baogaoku.com baogaoting.com baoge.net baogebei.com baoguangtai.com baoguogroup.com baohanghr.com baohebao.com baohongbao.net baohua-pec.com baohuagroup.com baohuatravel.com baohuaxia.com baohuiming.net baoimg.net baoinsurance.com baoji-marathon.com baoji3g.com baojia.com baojiagaiye.com baojian.com baojiazhijia.com baojiegy.com baojijob.com baojinews.com baojinling.com baojule.com baojun.net baojunev.com baokan.tv baokang.com baokanhuicui.com baokao.net baokaodaxue.com baoke-cn.com baoku.com baokuaishou.com baokuandi.com baokutreasury.com baolansz.com baoliannet.com baolic.com baolijuyuan.org baolizx.com baolong.biz baolong.com baoltx.com baolu.store baomaxs.com baomei.tv baomi.com baomi365.com baomidou.com baomihua.com baoming.com baoming.work baomingge.com baomitu.com baoneng.com baoqin.com baoqingvip.com baor.work baoruan.com baoruisi.com baoshe.net baoshe01.com baoshengcable.com baoshengele.com baoshenggroup.com baoshuanglong.com baoshuiguoji.com baoshuiguoji.net baoshuo.ren baoshuo.xyz baosight.com baosiwushidhex.work baosteel.com baosteel.info baosteelpackaging.com baostock.com baotadns.com baotaiclad.com baotaikonggu.com baotang5.com baotime.com baotoulawyer.com baotounews.com baotoushizx.com baotuba.com baotuo.cc baowu.com baowuenergy.com baowugroup.com baoxian.com baoxian72.com baoxianhai.com baoxianjie.net baoxianqi.com baoxianshichang.com baoxiaobar.com baoxiaohe.com baoxiaoke.com baoxinchewang.com baoxingmuye.com baoxinleasing.com baoxins.com baoxiu.com baoxiu.net baoxuexi.com baoxuexiedu.com baoyagroup.com baoyang1.com baoyang888.com baoyegroup.com baoyehb.com baoyejs.com baoying.com baoyizn.com baoyt.com baoyuanchem.com baoyueai.com baoyuekj.com baoyuncm.com baoyung.com baoyuntong.com baoz.net baozang.com baozengzhang.com baozhenart.com baozheng.cc baozhenlu.com baozhilin.com baozhuang.biz baozhuangren.com baozi.fun baozi178.com baozijishu.com baozipu.com baozou.com baozoudi.com baozoumanhua.com baozugongkeji.com baozun.com baozy.com bapengpc.com baping.com baqi28.com baqiu.com barhuta.com barjiang.com barlosi.com barman.vip baron-bj.com baronyhotels.com baronzhang.com barretlee.com bartender.cc bartistar.online bartymedical.com basechem.org basecity.com based-edu.com baseopendev.com basequan.com basestonedata.com bashan.com bashenghuo.com bashigao.com bashuhuapai.com bashuku.com basiccat.org basicfinder.com basischina.com bastcn.com basunlighting.com bat-sz.com batchat.com batengtiyu1.com batian.net batman.plus batmanit.com batmsg.com batplay.com battery-cert.com battery-expo.com battery8.com batterydir.com batterykey.com battle-fsd.com battlecare.net battleofballs.com batupian.net baufortune.com bauschlombchina.com bawagon.com bawanglongbengye.com bawjxt.net bawu.net baxiami.com baxichina.com baxisuye.com baydn.com baye.tech bayee.cc bayescom.com bayimob.com bayinh.com baykee.net baynoe.com bayucar.com bayuche.com bayuegua.com bayueju.com bayunhome.com bayuxuexiao.net bayzedhealthcare.com bazaarjewelrychina.com bazai.com bazhan.com bazhepu.com bazhong.com bazhongol.com bazhua.me bazhuay.com bazhuayu.cc bazhuayu.com bazhuayukeji.com bazi.cloud bazi.run bazi.xin bazi5.com baziguwen.com bazizeri.com bb-game.com bb-hy.com bb-pco.com bb06.com bb361a58c1015.beer bb39977653.com bb3a14ca57af4d81.com bb52e27c75560d3f.com bb730b04b6cc8c57.com bbanp.com bbaod.com bbaqw.com bbb1415.com bbbaaa.com bbbao.com bbbb.com bbbcdns.com bbbmq.com bbbms.com bbbtgo.com bbc54c1281125042.com bbcagroup.com bbcayy.com bbchin.com bbctop.cc bbctop.com bbdj.com bbdservice.com bbdup.com bbecpsc.com bbef-tech.com bbef.com bbeshop.com bbez.com bbfkjkh.com bbfoxgame.com bbfstore.com bbfytsn.com bbgdex.com bbgsite.com bbgstatic.com bbguangcai.com bbhou.com bbicn.com bbioo.com bbjgr.com bbk.com bbk000.com bbkantu.com bbkys.com bblcdn.com bblmw.com bblops.com bbmuwwxyk.com bbmy.net bbobo.com bbonfire.com bbosu.com bbphonix.xyz bbpph.com bbpu.com bbqcdn.com bbqe.com bbqk.com bbqk.net bbqming.com bbqwhg.com bbrmedia.com bbrtv.com bbs-alsontech.com bbs0415.com bbs0551.com bbs1x.net bbscloud.com bbsds.com bbsls.net bbsmc.net bbsnet.com bbsufida.com bbsut.com bbsxp.com bbszjj.com bbtang.info bbtcaster.com bbteapress.com bbtengfeizaixian.com bbthy.net bbtkid.com bbtpress.com bbtwatch.com bbugifts.com bbunion.com bbvjs.com bbw-portnet.com bbwcec.com bbwcq.com bbwfish.com bbwgw.com bbwhy.com bbwict.com bbwoils.com bbwotc.com bbwport.com bbwport.net bbwrc.com bbwse.com bbwunisco.com bbxarq.com bbxinwen.com bbxinwen.net bbxstjx.com bbydsol.com bbzhh.com bbzhi.com bbzhsw.com bbzxky.fun bc150.com bc4785bd211012.beer bc5539.com bc754c518ef6127a.com bc966.com bcaacademy.org bcactc.com bcb5.com bcbjjy.com bcbksbx.com bcbpm.com bcbvi.com bccastle.com bccn.net bccnsoft.com bccoder.com bccv.com bcdaren.com bcdnx.com bcdy.net bce-cdn.com bce-cdn.net bce0619341023.beer bceapp.com bcebos.com bcedns.com bcedns.net bcedocument.com bcegc.com bcehost.com bcehosts.com bceidaas.com bceimg.com bcelive.com bcevod.com bcewaf.com bcf1ef2511022.beer bcfmglobal.com bcfy188.com bcgf.cc bcghotel.com bchdemo.site bchlkj.com bchrt.com bcisz.org bcitb.com bcjkcloud.com bcjp.net bclcraft.com bcmcdn.com bcmonomial.xyz bcn.cc bcpcn.com bcpgame.com bcpharma.com bcplab.com bcpmdata.com bcreat.com bcrjl.com bcrmtzx.com bcryo.com bcsfoong.com bcshipgo.com bcsloong.com bcsytv.com bctdtx.com bctest.com bctts.com bcty365.com bcvbw.com bcvdmovie.com bcwangluo.net bcxgame.com bcxgps.com bcxww.com bcy.net bcyimg.com bczcdn.com bczyyy.com bd-caict.com bd-gti.com bd-union.com bd001.net bd0afb0887.xin bd3be95d910301.beer bd682bc7d22322eb.com bd689.com bd7kzs.site bdactivity.com bdaenviro.com bdajob.com bdall.com bdapark.com bdatu.com bdbae.com bdc-rays.com bdcb.cc bdcgz.com bdchangtujs.com bdchina.com bdcloudapi.com bdclouddns.com bdcn-media.com bddhospital.com bddlm.com bde5fc098b5291bf.com bdebid.com bdeceimg.com bdegnine.com bdf2.com bdfczx.com bdfmj.com bdfmkj.com bdfyy999.com bdfzcd.net bdfzkyy.com bdg-brain.com bdgamelive.com bdgp.cc bdgqx.com bdgslb.com bdgw.cc bdhdtv.com bdhengding.com bdhhome.com bdhulanwang.com bdimg.com bdinfo.net bdispatch.com bdispatch.net bdjz.vip bdkyr.com bdlcqjw.com bdmozon.com bdmyandex.com bdns-api-test.net bdns-boe.com bdns-boe.net bdns-gtm-01.net bdns-gtm-pressure.com bdns-restore.net bdns-test.com bdns-test.net bdo-dahua.com bdpan.com bdpnt.com bdppe.net bdqn027.com bdqn666.com bdqnwh.com bds-cn.com bds666.com bdsagslb.com bdsagslbtest.com bdsana.com bdsd.design bdsgx.com bdshengce.com bdshuang.com bdsimg.com bdsj.net bdspacetime.com bdstar.com bdstatic.cc bdstatic.com bdsytime.com bdszh.vip bdtianchang.com bdtic.com bdtjrcv.com bdtm.net bdtsc.com bduapp.com bdurl.net bdvending.com bdwater.com bdwhyscjh.com bdwkxz.com bdwm.net bdwork.com bdxc.com bdxdgs.com bdxiguaimg.com bdxigualive.com bdxiguastatic.com bdxiguavod.com bdxpa.com bdxx.net bdxyykj.com bdxyz.com bdycdn.com bdycdn.net bdydns.com bdydns.net bdyhhb.com bdylzbyy.com bdymkt.com bdysc.com bdysite.com bdysites.com bdyz.xyz bdzhipin.com bdzjdsagslb.com be-xx.com be1775.com be1dbb20578c1b79.com be20e436e111e1f7.com be30d71aea370488.com be7076f2b2ff2953.com be79d8d36f962bd6.com be84433f5ce02a66.com be896b364b76c6df.com be90.com beadwallet.com beamweldingmachine.com beancomm.com beantechyun.com bear20.com bearead.com beargoo.com bearingclub.com bearrental.com bearsing.com bearyboard.com bearychat.com beastush.com beasure.com beatbeatone.com beats-digital.com beatsbydre.com beaucare.org beautifulbank.com beautifulcarrot.com beautifullinux.com beautifulzzzz.com beaverbio.com beb688d9cad7d208.com bebhmongb.com bechangedt.com becker-china.com beckwai.com beckyroom.com becod.com becomingcelia.com becominggroup.com becukwai.com beduu.com bee-core.com bee-net.com bee-station.com bee3d.com beebeepop.com beebeeto.com beecook.com beedancing.com beeeeego.com beeflower-cn.com beegoedu.com beejoygames.com beelink.com beep365.com beeplay123.com beeshow.tv beespal.com beestor.com beeui.com beeweart.com befar.com begcl.com begeel.com begindcc.com bego.cc begoto.com begowin.com behake.com behao.net behaviac.com behe.com behrenswatches.com behrenswatches.shop bei1688.com beiamp.net beianw.com beibaobang.com beibaozq.com beibei.com beibenkc.com beicaiyuan.com beicdn.com beichende.com beicity.com beidasoft.com beidd.com beidian.com beidisi.com beidoou.com beidou.org beidou66.com beidouchong.com beidouedu.net beidouone.com beidousafety.org beidouxingxueche.com beiduolab.com beierbio.com beierchina.net beierjin.net beieryouxi.com beifa.com beifang.net beifangfoshifen.com beifangjiaoyu.com beifeng.com beifuni.com beigangyouxuan.com beigedi.com beigonggroup.com beiguorc.com beihai365.com beihai97.com beihaidc.com beihaigame.com beihailihe.com beihaimayi.com beihaiqiuzhi.com beihaireexpo.com beihaiwuyeguanli.com beihaiwz.com beihan.net beihansoft.com beihuasoft.com beihuo.net beiing.net beijin100.com beijing-air.com beijing-chopard.com beijing-girardperregaux.com beijing-halfmarathon.com beijing-hmo.com beijing-hualian.com beijing-kids.com beijing-lipin.com beijing-marathon.com beijing-office.com beijing-time.org beijing-tokyo.com beijing101.com beijing120.com beijing518.com beijingaierfei.com beijingapt.com beijingbang.com beijingbaomu.com beijingbio.tech beijingcenterforthearts.com beijingcustoms.com beijingfenxiangkeji.com beijingfire.com beijingfojiao.com beijinggobroadhospital.com beijingguoyitang.com beijinghopemedcare.com beijinghuafu.com beijinghuiyizhongxin.com beijinglandbridge.com beijingnongjiayuan.com beijingnorthstar.com beijingrc.com beijingrc.net beijingsanchi.com beijingtaixie.com beijingtoon.com beijingtrucks.com beijingwatch.com beijingxiantour.com beijingxinzhuoyue.com beijingyouxi.com beijingyuanxin.com beijingzc.com beijingzoo.com beijinxuetang.com beijiu.ink beijzc.com beikeba.com beikeiot.com beikeread.com beikongyun.com beilayl.com beileike.com beileimaoedu.com beiletoys.com beilewh.com beilianjd.com beilile.com beilin.ltd beilinbox.com beiliufuyang.com beimai.com beimeihongfeng.com beimeizhijia.com beimeizhiying.com beinglab.com beingmate.com beipenggroup.com beipy.com beiqujy.com beirangroup.com beiren-tech.com beiren.cc beiren.com beironsign.com beirunjie.com beise.com beisen.com beisenapp.com beisencloud.com beisencorp.com beisenpaas.com beisenyl.com beismei.com beitaguoguo.com beitaichufang.com beitao8.com beitown.com beitre.com beiwaibest.com beiwaiclass.com beiwaiguoji.com beiwaionline.com beiwaiqingshao.com beiwo.com beiww.com beixibaobao.com beixingmh.com beiyijt.com beiyinqi.com beiyiskjc.com beiyongzhan.com beiyu.xin beiyuwangxiao.com beizhua.com beizi.biz beiziman.com bej9.com bejirog.com bejson.com bekko.com belarusvisacenter.com belfone.com belgiumvisacenterd.com beliefbiomed.com beliefy.com belimked.com belle8.com belletrip.com bellinlaser.com belllan.com belloai.com beloj.com belray-coffee.com beltandroadforum.org beltxman.com belverra.com bemanicn.com bemfa.com bemhome.com benbenlong.com benber-tech.com benber.com benbun.com bencaopu.com bendan.website bendi5.com bendibao.com bendijin.net bendis.cc bendiso.com bendiw.cc bendizhidao.com benduo.net benewake.com benfuip.com bengbeng.com bengbufan.com bengden.com bengfa.biz benghuai.com bengku.com bengou.com bengrong.com bengtie.com bengyechina.com bengzhanc.com benhs.com beniao.com benjamin.fun benkejieye.com benkua.com benlai.com benlailife.com benlaisy.com benling-sh.com benliuxinwen.com benlizu.com benlkjc.com benlong.vip benma.com benmi.com benmu-health.com bennybu.fun benpsbp.com benqhospital.com benqmedicalcenter.com benqmedicalcentersz.com bensewang.com benshouji.com bensiea.com benweitang.com benweng.com benxiang.com benyh.com benyouhui.com benyuannet.com benzhb.com benzhibbs.com benzhiwangluo.com benztto.com beodesj.com beony.com beook.com bepal.pro bepurestandards.com bequ6.com bequ6.org bequgew.com bequgexs.com bequgezw.com bequw.com bequwx.org berchina.com berens-china.com berfen.com bergerda.com berlinchan.com berlinix.com bernouly.com berrydigi.com berrygenomics.com bersella-ai.cc bersilion.com bertadata.com berui.com berylbot.com bes.ren besbranding.com bescar.com beschannels.com bescity.com bescloud.com besclouds.com bescn.com besg-bee.com besget.com beshtech.com besile.com besino.com besonchina.com bessystem.com best-display.com best-inc.com best-intl-school.com best-lookstone.com best1.com best198.com best66.me best73.com bestadprof.com bestapp.wiki bestarzx.com bestatic.com bestb2b.com bestbeibao.com bestblower.com bestcdn.vip bestcem.com bestchoiceco.com bestcloudcdn.com bestclouddns.com bestcood.com bestcovered.com bestcrossborder.com bestdataclub.com bestdo.com bestdon.net bestdosas.com bestechnic.com bestedm.net besteduchina.com bester-cn.com bestexpresser.com bestfood517.com bestfuturevip.com bestgo.com besthairextensions.com besthub.tech besticity.com bestincapi.com bestincapp.com bestjy.net bestkids.net bestlec.com bestlee.net bestlosslessmusic.com bestmate.net bestmoban.com bestomro.com bestone.com bestone.vip bestopview.com bestpay.net bestpeng.com bestqliang.com bestraylaser.com bestreplicheitalia.com bestrhy.com bestsdwan.com bestshinhwa.com bestsign.info bestsign.tech bestsignuniversal.com bestsrc.com beststeel-sh.com bestsungas.com bestsuppliers.com bestswifter.com besttrav.com bestugali.com bestv6.com bestvcdn.com bestvcdn.net bestviewstock.com bestwa.com bestwatch.cc bestwatchaaa.com bestwaysh.com bestwehotel.com bestweshop.com bestwesternfelicityshenzhen.com bestzone.org bestzumo.com bet007.com bet2268.com bet2396.com bet33040.com bet365uo.com bet3739.com bet505.app bet5993.com bet6598.com bet6737.com bet6755.com bet8.cm beta-dns.com betaband.net betadance.net betaenv.com betaflare.com betahub.tech betaidc.com betamao.me betaquantity.com betasmart.tech betavolt.tech betawm.com betazixun.com betcctv.com betely.com bethh777.com betokapp.com betop-cn.com betop365.com betophall.com bettapharma.com bettbio.com better-cn.com better365.com betterclyde.com betteredu.net betteryeah.com betterzip.net betterzipcn.com betwayasia.org beuyinm.com beva.com bevol.com bewellbio.com bewg.net bewgnn.com beyebe.com beyond-perfection.com beyondbit.com beyondcompare.cc beyondcomparepro.com beyondfund.com beyondh.com beyonditsm.com beyondq.com beyonds.com beyondsungroup.com beyoner.net beyotime.com bezbzsyf.com bf-jxqc.com bf-z.com bf-zhengzhou.com bf07e33c810281.beer bf35.com bf99.com bfcdnbf.com bfcdnrd.com bfcdnsc.com bfchayuan.com bfcmovie.com bfdcloud.com bffyun.com bffzb.com bfgho.com bfhdp1120.com bfhmj.com bfikuncdn.com bfimg.com bfjr.com bfnbgame.com bfqh.com bfqifu.com bfqtchayuan.com bfscoc.com bfsea.xyz bfsmy.com bfssj.com bfsu-artery.net bfsutw.com bft-robot.com bftq.com bftv.com bfvvs.com bfw.wiki bfxiuxianqipai.com bfxpj888.com bfyx.com bfyx.net bfzhan.com bg45.com bg7ywl.com bgbfds.com bgbk.org bgbluesky.com bgccn.com bgctv.com bgdeco.com bgdzsw.com bgfl.net bggd.com bghc.net bghgw.com bghmj.com bgi-graphene.com bgi.com bgic.com bgici.com bgigc.com bgjbq.com bgk100.com bgkj.pro bgl88.com bglmzm.com bgmfans.com bgmrecord.com bgnyl.com bgosp.com bgrdh.com bgri.com bgrimm.com bgrwgglz.com bgs123.com bgsdk.net bgsdyz.com bgsyb.com bgteach.com bgtwater.com bgucu.com bgv888.com bgvalve.com bgwcsz.com bgwl.net bgwxc.com bgxcl.com bgxu.com bgyfhh.com bgyfhyx.com bgyhotel.com bgyhotels.com bgypc.com bgypsc.com bgyshop.com bgyvfs.net bgzchina.com bgzx365.com bh-lay.com bh-mangrove.com bh-med.com bh-xhhd.com bh1t.com bh3.com bh5.com bh568.com bh8sel.com bhabb.com bhbd-alliance.org bhccn.com bhcd.net bhcgky.com bhcpu.com bhcyhotel.com bhcyts.cc bhcyy.com bhczxx.com bhdata.com bhdl520.com bhdns.com bhdxfsyy.com bhdyjs.com bhecard.com bheyy.com bhfc.net bhfeiyang.com bhfz114.com bhghy.com bhgjjy.com bhgmarketplace.com bhgroups.com bhgsb.com bhhfsc.com bhhospital.com bhhsx.com bhhthl.com bhhzjt.com bhidi.com bhiv.pro bhjcsc.com bhjinghao.com bhjjj360.com bhjuxian.com bhkyxy.com bhlib.com bhlietu.com bhlqjt.com bhluoer.com bhlyw.net bhnet.net bhnge.com bhnsh.com bhpcc.com bhpiano.com bhpiston.com bhqd6688.com bhqzyy.com bhrencai.com bhrssp.com bhsanfan.com bhsbdcdjzx.com bhsence.com bhsgnk.com bhshtksp.com bhshunhui.com bhshyy.com bhsr.com bhszyyy.com bhtv.cc bhuitong.com bhuvgy.com bhwzdnweys.com bhxww.com bhxx.net bhxxpt.com bhxz.net bhybskq.com bhyby.com bhyintan.com bhyueda.com bhyuu.com bhzck.club bhzck.xyz bhzd88.com bhzdzx.net bhzhu203.com bhzp.net bhzpw.com bhzw.com bhzyxy.net bi-ci.com bi-sage.site bi4sight.com bi5u.com bi8brp.com bian-fengwei.com bianbao.net bianbu.xyz biancheng.net biancui.com biandangroup.com biandiantong.com biandouyun.com biandown.com bianews.com bianfeng.com bianfengkuailai.com bianhaiyun.com bianjianzen.com bianjiebao.com bianjiqi.net bianjiyi.com bianju.me bianlei.com bianlifeng.com bianlun.net bianmachaxun.com bianminwang.com bianpingyou.com bianquchina.com bianquzyk.com biantaishuo.com biantongzixun.com bianwa.com bianwanjia.com bianxian.com bianxianmao.com bianxianwu.com bianxiazai.com bianyifang.com bianyuandaigou.com bianzhia.com bianzhile.com bianzhirensheng.com biao12.com biaobaini.com biaoceo.com biaoda.me biaodan.info biaodan100.com biaodiancloud.com biaodiandichan.com biaodianfu.com biaofaw.com biaoge.com biaoge.me biaohs.com biaoju01.com biaomi.com biaopan8.com biaopeibao.com biaopu.cloud biaoqing.com biaoqing888.com biaoqingjia.com biaoqingwen.com biaoshixinyi.com biaoshula.com biaosucdn.com biaotianxia.com biaotuan.com biaotukeji.com biaoyi.com biaozhaozhao.com biaozhiku.com biaozhun.org biaozhun8.com biaozhuns.com bib0.com bibaodao.com bibenet.com bibibi.net bibigpt.co bibiku.com bible.vip bicido.com bicobrand.com bicoin.info bicomoptics.com bicpaedu.com bicredit.xin bicv.com bicyc.com bid-view.com bidchance.com biddingx.com bidemi.com bidepharm.com bidepharmatech.com bidgojp.com bidianbao.com bidianer.com bidingxing.com bidizhaobiao.com bidns.net bidtoolads.com biduo.cc biduobao.com biduoxs.com biduwenxue.com bidwhy.com bie-plc.com biec.com biechila.com biede.com biedoul.com biekanle.com biema.com biept.com bieshu.com bietongfeng.com bieyangapp.com bieyelighting.com bifabu.com bifengxia.com bifiv.com biftsce.com big-bit.com big-shanghai.com big5network.com bigaaa.net bigaka.com bigan.net bigbaicai.com bigballbiz.club bigbangux.com bigbenmeng.com bigbigai.com bigbigsun.com bigbigwon.com bigbigwork.com bigbrosci.com bigbrx.com bigcakegame.com bigcat.com bigcloud.click bigda.com bigdata-expo.org bigdata.ren bigdatacq.com bigdatasafe.org bigdatastudy.net bigdatawuhan.com bigddg.com bige0.com bigecko.com bigehudong.com bigemao.com bigemap.com bigerdata.com bigerwall.com bigeshuju.com bigesj.com bigeyes.com biggaming.online biggerlens.com biggeryun.com bigherdsman.com bigjpg.com bigniu.com bignox.com bigo.sg bigo.tv bigogm.com bigoledog.com bigolive.tv bigops.com bigplayers.com bigpt8.com bigqiao.com bigquant.com bigrnet.com bigtide.com biguiyuan.net biguo100.com biguolunwen.com biguotk.com bigwayseo.com bigwh.com bigwinepot.com bigwww.com bigxiao.com bigyulin.com bigzhong.com bihaipack.com bihe0832.com bihongbo.com bihoo.com bihu.com bihu.work bihuatuku.net bihubao.com bihuoji.com biikan.com biioii.com biji.com bijiago.com bijiagou.com bijianzw.com bijiao.org bijiasso.com bijiatu.com bijienetworks.com bijingdi.com bijirim.com bijixia.net bijsc.com bikecool.com bikehome.cc bikehome.net biketo.com biketour-giant.com biking-m.com bilalipay.com bilandtech.com bilezu.com bilfinance.com biliapi.com biliapi.net bilibil.com bilibili.cc bilibili.co bilibili.com bilibili.li bilibili.net bilibili996.com bilibiligame.co bilibiligame.net bilibilihelper.com bilibilipay.com bilibiliq.com bilicdn1.com bilicdn2.com bilicdn3.com bilicdn4.com bilicdn5.com bilicomic.com bilicomics.com biligame.co biligame.com biligame.net biligo.com biligx.com bilihot.com biliimg.com biliintl.co biliintl.com bilimanga.net bilinl.com bilinovel.com biliui.com bilive.com bilivideo.com bilivideo.net biliyu.com bill-jc.com billchn.com billionaireboard.com billionbottle.com billionconnect.com billionfocus.com billionseo.com billowlink.com billu.cc billwang.net bilnn.com bim-times.com bimant.com bimawen.com bimface.com bimfmchina.com bimhuite.com bimige.net bimiwu.com bimjoy.com bimsa.net binancezh.kim binancezh.link binary-semi.com binaryai.net binaryai.tech binbinbiji.com binbinyl.com bincailiuxue.com binfang.com binfenniao.com binfenquzu.com binfenshikong.com binfenyeke.com binfenyingyu.com binfenzhilv.com bing400.com bingchenvacuum.com bingd.com bingdian01.com bingdoc.com bingdou.site bingfan.com bingganqy.com binggo.com bingguner.com binghelengmei.com bingjo.com bingjun.cc binglai.net binglanggu.com binglianhuajianzhan.com bingliekeji.com binglixue.com bingninglaowu.com bingo321.com bingocinemas.com bingoenglish.com bingolink.biz bingosci.com bingqipu.net bingquan.com bingshandashu.com bingsin.com bingtuannet.com binguo.me bingxs.com bingyan.net bingyandianqi.com bingyongjin.vip bingyuanhb.com bingzunkeji.com binhaiinv.com binhaiwater.com binhangtech.com binjie.fun binjie.site binligzj.com binliwatch.com binmt.cc binmtplus.com binnong.com binpang.me binqsoft.com binstream.live binuoniu.com binxin.com binzc.com binzhi.com binzhikeji.com binzhouw.com binzz.com bio-dxzf.com bio-equip.com bio-fount.com bio-fuyang.com bio-info-trainee.com bio-island.com bio-protocol.org bio-review.com bio1000.com bio360.net bio4p.com biobiopha.com biobw.org biocause.com biocellcharger.com bioceltech.com biochemsafebuy.com biocloud.net biocome.com biocompounds.com biodiscover.com biodiscover.net biodx.com bioeast.com biogeeker.com biogo.net biogot.com bioguoke.com biohf.com biohong.com biohuaxing.com biohyalux.com biohymn.com bioinfo-scrounger.com biokangtai.com biokerun.com bioktech.com biolab.xyz bioligo.com biolihe.com biome-expo.com biomedicchina.com biominhai.com bionav.cc bionovapharma.com bioon.com bioon.net biopotentia.com biorule.com bioscenepharma.com biosci-cq.com bioscienceres.com bioshineking.com biosmelt.com biosrepair.com biosschina.com biostar-pharm.com biostatistic.net biosune.com biotanon.com biotecan.com biotech-meds.com biotechina.com biotechwell.com biothink.tech bioustar.com biovector.net biovip.com bioway-pku.com bioxtime.com bipaihang.com bipvcn.com biqg8.com biqige.cc biqiuge.com biqu.ge biqu6.com biquan8.com biqubao.com biqubao10.com biqubu.com biqudu.com biqudu.tv biqufu.com biqugao.cc biquge.info biquge.la biquge123.com biquge8.com biquge9.cc biquge99.cc biqugeg.com biqugena.com biquges.com biqugesk.org biqugex.com biqugexs.com biqugexs.la biqugexsapp.com biqugexsw.com biqugezw.us biqugg.org biqugo.net biqugu.cc biqukai.com biqukan.com biquke.com biquke.la biquke.me biquku.la biqukun.com biqukun.la biquluo.com biqupai.com biqusa.com biqushu.com biqusk.com biqusoso.com biquw.com biquw.info biquw.la biquwo.com biquwo.net biquwx.la biquxs.com biquyue.com biquzw.info biqwo.com biransign.com bird.art bird4d.com birdback.org birdol.com birdotech.com birdwork.com birentech.com bisairi.com bisco777.bet bisenaccess.com bisenet.com bisenpark.com bisgz.com bishen.ink bishengoffice.com bishengyuan.com bisheziliao.com bishijie.com bishuiwan.com bisjigang.com bison-technologies.com bisonglighting.com bisonscm.com bisp.com bistream.net bit-coin-cash.asia bitahub.com bitauto.com bitautoimg.com bitautotech.com bitbe.at bitbrowser.net bitcar.com bitcron.com bitdave.fun bitdefender-cn.com biteabc.com bitech-automotive-wuhu.com bitecoin.com biteedu.com bitekou.com bitell.com bitenn.com bitett.com bitgo.cc bitgo.net bitguai.com bithosts.net bitiful.com bitiful.net bitintelligence.net bitjd.com bitjia.com bitky.cc bitlib.cc bitmain.vip bitmingw.com bitmoe.com bitol.net bitongtech.com bitonloop.com bitosscdn.com bitqiu.com bitscn.com bitsde.com bitse.com bitvh.com bitzsoft.com biubiu.tv biubiu001.com biuged.com biulie.com biusoft.com biwangxiao.com biwuke.com bixiaxs.net bixishang.com bixu.cc bixu.me bixuecrm.com bixueke.com biya.ltd biyabi.com biyan8.com biyangwang.com biyao.com biye.net biyehome.net biyele.com biyelunwenjiance.com biyequna.com biyequnar.com biyezheng8.com biyi.net biyidc.com biyingniao.com biyinjishi.com biyong007.com biyork.com biyou.tech biyouxue.com biyuandi.com biyuansh.com biyuanshuiwu.com biyuwu.cc biyuzg.com biz-abroad.com biz-east.com biz-email.net biz178.com biz37.net biz72.com bizatmobile.com bizcent.com bizchallenge.net bizcharts.net bizcn-test.com bizcn.com bizcn.net bizcn666.com bizconfstreaming.com bizhi360.com bizhi88.com bizhigq.com bizhimiao.com bizhiquan.com bizhiwang.com bizhixia.com bizhizj.com bizhizu.com bizhongchou.com bizmoto.com biznewscn.com bizopsmall.com bizpai.com bizsmooth.com bizsmooth.org bizsn.com bizsofts.com bizvane.com bj-big.com bj-brother.com bj-brsf.com bj-bts.com bj-byjz.com bj-cronda.com bj-dahon.com bj-dsmzyy.com bj-fm.com bj-fxh.com bj-git.com bj-hengdeli.com bj-ipcf.org bj-jzgg.com bj-klws.com bj-kpn.com bj-nego.com bj-pr.com bj-px.com bj-sea.com bj-syc.com bj-sydc.com bj-tencentclb.cloud bj-tencentclb.com bj-tencentclb.net bj-tencentclb.work bj-tvart.com bj-tygy.com bj-win.com bj-wjh.com bj-yt.com bj-zkhb.com bj003.com bj0yx.com bj1.api.bing.com bj1000e.com bj148.org bj159zx.com bj1777.com bj17z.com bj2scmm.com bj315.org bj35.com bj360.com bj42195.com bj51.org bj520.com bj597.com bj5i5j.com bj5iodzgyi.com bj7z.com bj80.com bj918.com bj96007.com bjadks.com bjadmix.com bjadn.net bjagro.com bjaja.com bjanjili.com bjartmuseum.com bjatv.com bjbaidianfeng.com bjbalb.com bjbaodao.net bjbb.com bjbeichen.com bjbeifangjx.com bjbfdt.com bjbkwy.com bjblackhole.com bjbna.com bjbpi.com bjbrew.com bjbtfu.com bjbus.com bjbywx.com bjbzc.com bjbzszxy.com bjc-ent.com bjcae.com bjcag.com bjcancer.org bjcankao.com bjcapital.com bjcathay.com bjcatzgroup.com bjcdc.org bjcdomain.com bjceis.com bjcgtrain.com bjchishengkeji.com bjchunxin.com bjcjl.net bjcjyt.com bjckkj.com bjclover.com bjcls.net bjcma.com bjcoco.com bjcomic.net bjcomm.com bjcomparison.com bjconrad.com bjcontinent.com bjcorona.com bjcpjzhyxh.com bjcrg.com bjcsfx.com bjcshy.com bjcsyg.com bjcta.net bjcxdf.com bjcxqd.com bjcycg.com bjcyjt.com bjcymt.com bjcymyy.com bjcyzg.com bjd-mc.com bjdcfy.com bjdclib.com bjddtm.com bjdf110.com bjdfrw.com bjdfxj.com bjdhwy.com bjdiaoyu.com bjdjc.com bjdllti.com bjdongxin.com bjdp2p.com bjdragon.com bjdsppa.com bjdth.com bjdw.org bjdwl.net bjdxfsxx.com bjdxzxy.com bjdyhsy.com bjdyyc.com bjeasycom.com bjebc.com bjeesa.org bjef.com bjei.com bjent.org bjepea.com bjesg.com bjesound.com bjewaytek.com bjexmail.com bjexx.com bjfc.cc bjflc.com bjfmart.com bjfpw.com bjfqy.com bjfriendshiphotel.com bjfsali.com bjftfy.com bjfzst.com bjgas.com bjgasgh.com bjgastx.com bjgcl.com bjgdkn.com bjgdzx.com bjgfa.com bjggk.com bjggxh.com bjgjjcapital.com bjgjjmxy.com bjgjtjk.com bjgk.com bjglxf.com bjglxt.com bjgongteng.com bjgongyu.com bjgoodwill.com bjgree.net bjgujibaohu.com bjgumu.com bjguodu.com bjgvpn.amd.com bjgvpn2.amd.com bjgxs.com bjgymq.com bjgyzjw.com bjgyzs.com bjgzc.com bjhaiguang.com bjhaijixing.com bjhanlin.com bjhdcp.com bjhdhm.com bjhdnet.com bjhdrx.com bjhee.com bjhengchi.com bjhengjia.net bjhenson.com bjherbest.com bjhgbjgs.com bjhlgw.com bjhmcm.com bjhmyq.com bjhouse.com bjhrha.com bjhsyk.com bjhsyuntai.com bjhszp.com bjhtlckj.com bjhtzsgs.com bjhuaxin.com bjhuiqi.net bjhuizhu.com bjhwbr.com bjhwtx.com bjhwxy.com bjhx110.com bjhxqh.com bjhxzlyy.com bjhytjxjg.com bjhzkq.com bjhzzs.com bjiab.com bjiae.net bjiaep.com bjicpark.com bjicrm.com bjidc.net bjidit.com bjinfobank.com bjipwqzx.com bjitic.com bjiwex.com bjjbbayy.com bjjbls.com bjjchf.com bjjdwx.com bjjfsd.com bjjgyy.com bjjhhft.com bjjhhn.com bjjhsw.com bjjihui.com bjjingdong.com bjjinl.com bjjinming.com bjjinsong.com bjjiuhe.com bjjizhun.com bjjjst.com bjjk66.com bjjkglxh.org bjjkw.net bjjmzh.com bjjnrl.com bjjnzf.com bjjqe.com bjjqzyy.com bjjr-tencentclb.cloud bjjr-tencentclb.com bjjr-tencentclb.net bjjr-tencentclb.work bjjsj.com bjjsschool.net bjjstyyzzyy.com bjjsyy.com bjjszyyy.com bjjtat.com bjjubao.org bjjuli.com bjjzjt.com bjjzjxhyxh.com bjjzsc.com bjjzzpt.com bjk30.com bjkaihua.com bjkaihua.net bjkcsj.com bjkdhy.com bjkdvm.com bjkeyscin.com bjkgedu.com bjknrt.com bjkqj.com bjkqyx.com bjkrtwl.com bjkswy.com bjktaz.com bjktwe.com bjkxgroup.com bjl777.com bjlacc.com bjlangbo.com bjlanqiao.com bjlaw995.com bjlcs-tech.com bjlevsoft.com bjlg.com bjljzw888.com bjlkhd.net bjllsy.com bjlmg.com bjlongview.com bjlot.com bjltsj.com bjltwp.com bjltxk.com bjlyjszx.com bjlysy001.com bjlyw.com bjmailqq.com bjmama.com bjmama.net bjmamiai.com bjmania.com bjmantis.net bjmda.com bjmeikao.com bjmerson.com bjmjm.com bjmslp.com bjmti.com bjmts.net bjmxkn.com bjmxxh.com bjmxy.net bjmylike.com bjmzdx.org bjmzw.com bjn2ms.net bjnai.net bjnaxl.com bjnhsw.com bjnja.com bjnkzx.com bjnsr.com bjnxgbyy.com bjota.com bjp321.com bjpag.com bjpcyd.com bjpfh.com bjpifu.com bjpinweixuan.com bjpmhyxh.com bjpowernode.com bjppa.com bjpryk.com bjqcjdcj.com bjqh.org bjqhgjj.com bjqichezl.com bjqingyang.com bjqlg.com bjqtbase.com bjqtfifthbase.com bjqtforthbase.com bjqtsecbase.com bjqtthirdbase.com bjqtti.com bjqyjjlb.com bjqykc.com bjqzhd.com bjraee.com bjrc.com bjrcb.com bjrdhx.com bjretech.com bjreview.com bjrjgj.com bjrjtdkj.com bjrjyy.com bjrlzyw.com bjrock.com bjrqjt.com bjrtcdn.com bjrtjt.com bjrun.com bjrussia-art.com bjrwdx.com bjry.com bjsasc.com bjsava.com bjsbnet.com bjscfl.com bjscszh.com bjscyxh.com bjsdcm.net bjsdeyy.com bjsdfz.com bjsdgroup.com bjsdr.org bjsfdr.com bjsfrj.com bjsftzxyjhyy.com bjsgzgs.com bjshaet.com bjshdjy.com bjsheng.com bjshgzzxh.com bjshowinfilm.com bjsiasun.com bjsinglewindow.com bjsj5.com bjsjds.com bjsjgyy.com bjsjsch12333.com bjsjstxyy.com bjsjsyly.com bjsjwl.com bjskjzs.com bjsoho.com bjsound.com bjsoyo.com bjsptf.com bjspw.com bjsrc.com bjsrmyy.com bjsryc.com bjssjsyy.com bjsskdn.com bjstcc.com bjstjy.com bjsubway.cc bjsubway.com bjsuewin.com bjsxdgzc.com bjsxjt.com bjsxt.com bjsydq.com bjsyhy.org bjsyqw.com bjsytv.com bjsyzy.com bjszhd.net bjszlsjt.com bjtaihua.com bjtcf.com bjtcy.com bjtdhkj.com bjtelecom.net bjtieke.com bjtitle.com bjtjhn.com bjtjw.net bjtjzx.com bjtkyy.com bjtmjr.com bjtndao.org bjtobacco.com bjtonghui.com bjtongjian.com bjtopli.com bjtqcy.com bjtradestar.com bjtth.org bjttsf.com bjtvnews.com bjtxc.com bjtysj.com bjtyzh.org bjtzeduyun.com bjtzfy.com bjtzzg.com bju-flo.com bjucd.com bjun.tech bjunionstar.net bjuri.com bjvps.net bjvtc.com bjweizhifu.com bjwenchen.com bjwenyu.com bjwftd.com bjwfz.com bjwhds.com bjwhmedia.com bjwig.com bjwkhotel.com bjwkzl.com bjwpjs.com bjwqxh.com bjwt.com bjwwhc.com bjwyseo.com bjxa.com bjxchjxx.com bjxcloud.com bjxcsy.net bjxdfk.com bjxf315.com bjxhly.com bjximei.com bjxingma.com bjxingzheng.com bjxinku.com bjxjyy666.com bjxjzyy.com bjxku.com bjxtjmsb.com bjxtkj.com bjxueche.net bjxwcq.com bjxwx.com bjxx.vip bjxx8.com bjxxw.com bjxyjf.com bjxyjy.com bjxzlou.com bjxzxw.com bjyah.com bjyald.com bjyc.online bjycwa.com bjycxh.com bjyczb.com bjydzy.com bjyestar.com bjyhjt.net bjyhwy.com bjyingge.com bjyingyun.com bjyirui.com bjyizhimei.com bjylhyxh.com bjyme.com bjyn.com bjyouth.net bjypw.com bjyqsj.com bjysxh.com bjysyunsheng.com bjyszb.com bjythd.com bjyuantong.com bjyubing.com bjyueshenzj.com bjyujinxiang.com bjywt.com bjyxl.com bjyyb.net bjyyun.com bjyzfjj.com bjzalaw.com bjzaxy.com bjzbb.com bjzbkj.com bjzcha.com bjzcth.com bjzg.com bjzgh.org bjzgh12351.org bjzghd.com bjzhaxikj.net bjzhiborui.com bjzhishi.com bjzhongyi.com bjzhsx.com bjzkgc.com bjzkgr.com bjzkhs.com bjzklk.com bjzklp.com bjzmdlsxs.com bjzmkm.com bjzmqj.com bjznkq.net bjznnt.com bjzph.com bjzqw.com bjzrzc.com bjzs.cc bjzs114.com bjzsxccm.com bjzunlaotang.com bjzwbc.com bjzwhz.com bjzwx.com bjzwzx.com bjzxcp.com bjzxsf.net bjzxyy.com bjzy360.com bjzybaoan.com bjzybc.com bjzyjt.com bjzyrxgs.com bjzysx.com bjzzcb.com bjzzdb.com bjzzrx.com bjzzschool.com bk-cdn.com bk-cdn01.com bk3r.com bk41.net bk5u.com bkaivl2daed.com bkapigw.com bkapps.com bkbgame.com bkbyxa.com bkcloud.cc bkclouds.cc bkcode.net bkdou.com bkeconomy.com bkill.com bkill.net bkjia.com bkjk-inc.com bkjk.com bkjk123.com bkjpress.com bkjsemi.com bkkchina.com bkn.cc bkneng.com bknzdh.com bkpcn.com bkqq.com bkrgame.com bkscc.com bktencent.com bktsj.com bkuax.com bkvps.com bkweek.com bkzzy.com bl.com bl0757.com bl91.com bla01.com black-unique.com blackbirdsport.com blackdir.com blackdragon.com blackeep.com blackh4t.org blackint3.com blackluxury.com blackshark.com blackswancake.com blackxl.org blazefire.com blazefire.net blazingnight.cfd blazor.zone blbilibili.com blbl.online blbx.com blctsy.com bld365.com bldaea.store bldimg.com bldlive.com bldpharm.com bldybbb.com bldz.com bldzlsb.com bleege.com blemall.com blendercn.org blessedbin.com blestech.com blgl8.com blgxhn.com blhdazhe.com bliao.com blibao.com blibee.com blibee.net blicube.com blimage.com bliner.me bling.link blingabc.com blinghour.com blingoffice.com blissmall.net blizzardcn.com blju.com blksails.net bllsbz.com blm.net blmpb.com blockchain.hk blockchain123.com blockchainlabs.org blockmeta.com blockob.com blocrepresents.com blog.htc.com blog.htcvive.com blog.vive.com blogcdn-dns.net blogchina.com blogchina.org blogchinese.com blogcn.co blogfeng.com bloggern.com bloghub.fun blogjava.net blogofmusic.com blogou.com blogqun.com blogturn.com blogways.net blogwe.com blogxuan.com bloom-powder.com bloomage.com bloomagebiotech.com bloomchiic.com bloomgamer.com bloomtoursvip.com bloqp.com blossommo.com blossomwed.com bloves.com blovestorm.com blowawards.com blowing-mould.com blowmoldmachines.com blpack.com blqugex.cc blqx.com blqy.com blr206.com blschain.com blshthb.com blskye.com blsw.cc blsweda.com blsx.com blszf.hk blszhifa.com blszyy.com bltyyls.com bltzw.com blue-city.com blue-skylandscape.com blue-zero.com blue0123.com blueaggrestore.com bluearchive-cn.com bluebeebox.com bluebellalingerie.com bluebellls.com bluebirdme.com blueboxasia.com bluebridge-amc.com bluebullcn.com bluebungalow-au.com bluecardpay.com bluecardsoft.com bluecardsoft.net bluecatyun.com bluecefa.com bluecity.com bluecloudprod.com blued.com bluedarti.com bluedgames.com bluedhealth.com bluedimg.com bluedon.com bluedoorindex.com bluedotcc.com bluefite.com bluefocus.com bluefocusgroup.com blueglass.vip bluegogo.com bluegoon.com bluehn.com blueidea.com bluek.org bluelettercn.org bluelightfuse.com bluelive.me bluenotechina.com blueocean-china.net blueplus.cc bluepoch.com bluesdream.com blueseaict.com bluesharkinfo.com blueshow.net blueskykong.com blueskyschool.net blueskystudy.com blueskyxn.com blueslc.tech bluesoleil.com bluestep.cc bluetime.com bluetowngroup.com bluetrum.com bluewhaleremote.com bluezz.net blurdev.com blw.moe blwire.com blxfc.com blxs.info blxs.la blycctv.com blyun.com blzls.xyz blzpw.net blzsjx.com bm-inv.com bm-mc.com bm001.com bm0392.com bm12166.org bm369.net bm50ue2uwnj7.com bm8.tv bmbios.com bmbn100.com bmbqwater.com bmc-medical.com bmcedu.net bmcx.com bmdbr.com bmdxcx.com bme-assemble.com bme-clock.com bme-grow.com bme-introduce.com bme-invite.com bme-mp.com bme-wx.com bmeicn.com bmema.org bmeol.com bmfsm.com bmh1958.com bmimage.com bmjet.com bmjzkj.com bml365.com bmlink.com bmlxkj.com bmm-assemble.com bmm-clock.com bmm-grow.com bmm-introduce.com bmm-invite.com bmm-mp.com bmm-wx.com bmmmd.com bmmsteel.com bmob.site bmobapp.com bmobcloud.com bmobpay.com bmolive.help bmoook.com bmosecuritylogin.com bmp.ovh bmpj.net bmrtech.com bmrtjt.com bms16.com bmser.com bmshow.com bmtrip.com bmw8033.com bmwallpaper.com bmwchina.cloud bmwnc.com bmxinfang.com bmyl2.com bmzxw.com bn21.com bnacg.com bnbba.com bnbcamp.com bnblogs.cc bnbtrip.com bnc66.com bnchina.com bncp.xyz bncwork.com bncyh.com bndsfc.com bnhelm.com bnhshiguan.com bnjyks.com bnk-jaoptions.com bnncn.com bnnd.net bnnnk.com bnocode.com bntyh.com bnup.com bnupg.com bnwin.com bnxf.online bnysq.com bnyy.com bnzone.com bo-blog.com bo0s.com bo56.com boadge.com boai.com boai120.com boaigx.com boaihospital.com boairl.com boaiswgs.com boanits.com boao.press boaoforum.org bob-cardif.com bob-leasing.com bob.com bobaow.com bobbns.com bobcare.com bobcfc.com bobcoder.cc bobdirectbank.com bobdog.com boblog.com bobmao.com bobo.com bobo2008.com bobo91.com bobobird.com bobohome.store bobopic.com boboyq.com bobswatchstore.com bobtranslate.com boc-leasing.com bocai.life bocaicms.com bocaiwawa.com bocamchina.com boccfc.cc boce.com boce003.com bocep2c.com bocetest.com bocfullertonbank.com bocgins.com bochaai.com bochengmed.com bochkonline.com bochyun.com bocichina.com bocifco.com bocifunds.com bociim.com bocim.com bocins.com bocohz.com bocomcc.com bocommleasing.com bocommlife.com bocommtrust.com bocondalian.com bocsolution.com bodaedu.net bodahu.com bodatek.net bode-e.com bodestone.com bodiantrading.com boditechgx.com bodoai.com bodocn.com bodu.com boduhappiness.com bodyguard007.com boe.com boendejc.com boerchina.com boerzg.com bof98.com bofangw.com bofyou.com bog.ac bogaochem.com bogokj.com boguanpaimai.com bogute.com boguub.com bohaiadx.com bohaigs.com bohaileasing.com bohailife.net bohaishibei.com bohaisports.com bohaiyun.com bohaoclub.com bohe.com bohejiasuqi.com bohewangluo.com bohu.co bohua.com bohuanchina.com bohuasanhe.com bohui-tech.com bohuigk.com bohuihe.com bohuitalent.com boilerinfo.net boill.com boincdn.live boiots.com bojianger.com bojiaojituan.com bojicdmo.com bojie.bid bojolight.com bojoy.net bojun-import.com boka.vc bokaishi.com bokao2o.com boke.com boke.one boke.pw boke112.com boke8.net bokecc.com bokecs.net bokee.com bokee.net bokesoft.com bokesoftware.com bokexia.com bokeyz.com boktour.com bokunwatch.com bolaa.com bolan.net bolaninfo.com bolanjr.com boldfrontierdesign.com boldseas.com bole-china.com bole.com bole.name bole766.com bolead.com boledir.com bolegs.com bolehu.net bolei99.com boleihg.com bolejiang.com bolejiaoxue.com bolelink.com bolexiaozhao.com bolin1688.com bolink.club bolken.com bolo.me bolo.video bolongxm.com bolq.com boltp.com boluogouwu.com boluomee.com boluomeet.com boluomi01.com boluoyun.com boluoyunyu.com boluozaixian.com bom.ai bom2buy.com bomanair.com bomeeting.net bomin-china.com bominelec.com boming-sc.com bomman.com bomyg.com bon-top.com bon-wine.com bonan.vip bonbonbongame.com bond120.com bond520.com bondent.com bondlady.com boneboat.com bonepuppy.com bonestgattiwatch.com bongm.com bongmi.com bongv.com bongwell.com boningad.xyz bonjour.bio bonkee.net bonkgb.com bonree.com boobooke.com boodo.com booea.com booen.co booeoo.com boohee.com book118.com book1993.com bookabc.net bookapka.com bookask.com bookdao.com bookdown.net bookedu.com bookersea.com bookfedex.com bookfeel.com booking001.com bookingtee.com bookinlife.net booknest.net bookof.com bookqi.com books51.com bookschina.com booksgoo.com bookshadow.com bookshi.com bookshoptw.com bookshuku.com booksky.cc bookskys.com booksn.com booksos.net booktxt.com booktxt.net bookuu.com bookxnote.com boolan.com boolaw.com boole-tech.com boolv.com boomallha.com boonew.com boonoo.net boooba.com boooming.com boooog.net booop.net boopwater.com boosj.com boost77.com boostsolar.com boosyi.com bootcdn.net bootcss.com bootmb.com bootstrapmb.com boox.com booyu-import.com booz88.com bopai.com bopaisemi.com bopinquwei.online bopuyun.com boqianpvm.com boqii.com boqiicdn.com boqugew.com boracaybestdeals.com borain.com borcci.com borderlessbd.com borenhospital.com borlonclan.com born-tw.com born123.com borninsummer.com boroyf.com borpor.com borscon.com borui-group.com borui1001.com boruipinggu.com boruiqin.com boruisx.com boruixun.com boruiyanjiu.com borun-sun.com boruntong.com boryou.com bos.xin boscuser.com bosdsoft.com boseclub.com boseip.com bosen-fuji.com bosenrui.com bosera.com bosera.com.hk boshgame.com boshi.tv boshihoujob.com boshijob.com boshika.com boshixitong.com boshungame.com bosi12315.com bosibest.com bosidata.com bosideng.com bosideng.me bosideng.net bosigame.com bosikj.com boslon.com bosmaa.com bosmarter.com bosmia.com bosomchina.com bosondata.net bosong.online bosonnlp.com bosonshop.com boss-young.com bosscdn.com bossco.cc bosscome.com bossgoo.com bossgy.com bosshr.com bossincom.com bosszhipin.com bostonis.org bosunman.com botaogroup.com botaoo.com botaopac.com bote777.org botemotor.com botnet.cc botny.com botocard.com boton-tech.com botongr.com botorange.com botsfy.com botslab.com bottlekj.com bouffalolab.com bountech.com bountyteam.com boway.com boweifeng.com bowerp.com bowok.com bowu66.com bowuzhi.fm box-anchor.com box-z.com box3.fun boxdouyin.com boxiaole.com boxilink.com boxim.online boxisign.com boxmoe.com boxuegu.com boxueio.com boxui.com boxunyt.com boxz.com boy-toy.net boya300.com boyaa.com boyaapoker.com boyaastar.com boyaceo.com boyais.com boyamedia.com boyamicro.com boyaobang.com boyasoftware.com boyaxun.com boydwang.com boyi.co boyikang.com boyingsj.com boyinhotel.com boyishu.me boylondonchina.com boyoucy.com boyouquan.com boysky.com boyuan-pharma.com boyuan.com boyuan.net boyuanchemical.com boyuanjiaxin.com boyue.com boyuecasting.com boyueedu.com boyuemobile.com boyuesh.com boyunso.com boyuntu.com boyuonline.com bozhihua.com bozhong.com bozifs.com bp1w.com bpaykwai.com bpec.com bpgjuice.net bpimg.com bpmlt.com bpmuseum.com bppan.com bpqwxsh.com bpsemi.com bpteach.com bpuvuun0xg.com bpxxfw.com bpxxvo.com bpztsxx.com bq04.com bqb.xyz bqbh.org bqfy.com bqg8.cc bqg8.la bqg99.cc bqgjt.work bqgwap.com bqgxsw.com bqjeep212.com bqlcev.com bqpoint.com bqq8.com bqqpx.com bqrdh.com bqsnn.com bqteng.com bqu123.com bqyhb.com br-cn.com br737.com bra-cdche.com brabus-china.com bragood.com brain1981.com brainmed.com brainqaf.com brand-isv.com brand24k.com brand4x4.com brandcn.com brandpano.com brandsitejp.com brandvista.com brasaude.com brasilcn.com braveybelief.com bravognss.com brazzaleqingdao.com brcpower.com bre-line56.com bre-linex.com breadtrip.com breathfilm.com breenomeet.cc breeze-chem.com brentron.com brewbeerwiki.org brewersmix.com brg0.com brgame.app brgame.vip brick4.com brickmachinery.net bricksball.com bricktou.com bricsgo.com bridge-image.com bridgee.net bridgelawfirm.com brighost.com bright-gene.com bright-trend.com bright21cn.com brightdairy.com brightdecolighting.com brightfood.com brightliao.com brightmeat.com brilliance-auto.com brilliant-optoelectronics.com bringbuys.com bringspring.com brire.com britesemi.com brlinked.com brlmed.com brmnq.com brmyx.com broad-ocean.com broad.com broad.org broadair.net broadbio.com broadcom-wuxi.com broadcredit.org broadex-tech.com broadon.net broadskytech.com broadview-auto.com brochef.com bronzesoft.com broqiang.com brosmed.com brother-bsh.com brother-cn.net brother-movie.com brotherchem.com browurl.com brpcb.com brsiee.com brsnzp.com brtbeacon.com brtbeacon.net brtn.org brtpawn.com brttc.com brtv.xyz brtvcloud.com brunoxu.com brxjzp.com brxtal.com bryzq.com bs-56.com bs-dolfin.net bs-lab.com bs-marathon.com bs-yc.com bs008.com bs2005.com bsagit.com bsbgjj.com bsbkjt.com bsbydd.com bscabank.com bsccdn.com bsccdn.net bscdns.com bscdnweb.com bscea.org bscedge.com bscgslb.com bsclink.com bscomc.com bscsjsn.com bscstorage.com bscstorage.net bsctg.com bscxypx.com bsd-lifescience.com bsd4fz.com bsdcdsy.com bsdexp.com bsdfyyls.com bsdongxin.com bsdt1688.com bsehk.com bseqp.com bserc.com bsgcnc.com bsgoal.com bsgsgl.com bsgslb.com bsgz.com bsh-safety.com bsh-tech.com bsh.com bshare.com bshark.com bshdmotor.com bshgem.com bshmzx.com bshsrl.com bshu.com bsida.com bsidu.com bsitcn.com bsjhlx.com bsjyjt.com bskrt.com bskuav.com bslongyin.com bsmatrix.com bsmjdjzx.com bsmy.cc bsnljt.com bsnniubi.com bspapp.com bsping.com bsquant.com bsrczpw.com bsrkt.com bsrmyy.com bsrse.com bssfy.com bssgnkyy.com bst-lab.com bstatics.com bstbattery.com bstchemical.com bsteel.net bstgjg777.com bstinfo.com bstj.com bstjiaoyu.com bstjt.com bstzcs.com bsurl.cc bswtan.com bswxw.com bsxhly.com bsxiaoshuo.com bsxldl.com bsxyzsdec.com bsybx.com bsydns.com bsydns.net bsyjrb.com bsyjt.com bsyrimw.xyz bsyxx.com bsyyjt.com bsz666.com bszhly.com bszip.me bszxtl.com bszyqc.com bt-club.com bt6.club bt66.tv btaxwy.com btb8.com btbat.com btbctex.com btc-precisionmedical.com btc114.com btc38.com btc789.com btcbbs.com btcbca.com btcbtc.tech btcc886.com btccjt.com btcha.com btclass.net btcqingbao.com btcside.com btcwatch.com btcxue.com btd56.com btdad.live btdad17.xyz btdair.com btdog.com btdos.com btdy.com btechina.com btgame.com btgcjs.com btgdt.com btgljt.com btgtravel.com bth.vip bthhotels.com bthlt.com bthome.com bthuifu.com bthxjd.com bthyhb.com btiii.com btime.com btjhcc.com btjtfz.com btjy.net btjzgc.com btl-cn.com btltl.com btmayi.cc btmeiju.com btnotes.com btophr.com btorange.com btosolar.com btp-pharm.com btpig.com btplay.net btpxbf.com btrbdf.com btropdi.xyz btsemi.com btshidai.com btspreads.com btsteel.com btten.com bttiantang.cc bttiantang.com btttg.com bttzy.com btv.org btvcd.net btvcloud.com btwater.com btwmw.net btwoa.com btwob.net btxintong.com btydjxc.com btyhkj.com btyijiaxueyuan.com btyou.com btytgj.com btzbjt.com btzgamepkg.com btzhcc.com btzthb.com btzyc.com buaaer.com bubaigei.com bubalusplus.com bubbb.com bubugao.com bubuko.com bubuol.com bubuying.net bubuyouqian.com bubuzheng.com bubuzou.com bucg.com bucg6.com buchang.com buchaq.com buchina.net bucid.com buckydrop.com bucuo100.com bucuoba.com budao.com budao24.com budhano.com budiankj.com budikeji.com buding.tv budingmore.com budingscan.com budiot.com budou.com budui.com bueryx.com bufan.com buff8.com buffaloex.com buffst.com bufpay.com bughz.com bugjump.net bugku.com bugnull.com bugscan.net bugscaner.com bugtags.com bugu120.com bugua.com buguangdeng.com bugukj.com bugutime.com bugxia.com buhuyo.com buickcare.net buidea.com build-decor.com build8.com build9s.io builddecor.org buildface.com buildhr.com building9s.io buildjob.net buildnewapp.com buildwaterexpo.com buka365.com buke999.com bukesiyi8.com bukeyi.net bulaisi.com bulaoge.net bulapingc.com bulbsquare.com bulejie.com bullads.net bullcome.com bullmachinery.com bullvet.net buluanmai.com bululusexdoll.com bumenkeji.com bumiu.com bundor.com bundpic.com bundsummit.org bungba.com bunze.com buread.com burgud.com burnelltek.com burningvocabulary.com burongyi.com bus365.com bus6e.com bus84.com busbaoche.com bushangban.com bushi123.com busilinq.com businessconnectchina.com businesssaga.com businessweekchina.com busionline.com busituzi.com busnc.com bustoprint.com bustruckexpo.com but7.com butair.com butao.com butel.com butian.net butiao.com butjx.com butongshe.com butterapis.com button-nt.com buxia.net buxian8.com buxiuga.com buy-bar.com buy-copi888.com buy-copys888.com buy0596.com buyanshufa.com buyaocha.com buycoor.com buydeem.com buydouke.com buyfine.net buyhot.vip buyi9.com buyiju.com buyjingxi.com buyjk.com buylabel.com buyoudao.com buysun.net buysweet.com buyu1314.com buyueyuyun.com buyun.co buzao.net buzhi.com buzhibushi.com bva68.com bvcxd.com bvfcdn.com bvfcdn2.com bvgv.com bvmc.cc bvseo.com bw1006.com bw30yun.com bw40.net bw8848.com bwae.org bwangel.me bwave.cc bwbeer.com bwbot.org bwchinese.com bwcj.com bwcjxt.com bwda.net bwell-tec.com bweyi.com bwfapiao.com bwfhmall.com bwgqwea.com bwgrt.com bwhero.com bwhgsb.com bwie.net bwin2808.com bwjf.com bwlc.net bwmelon.com bwoer.com bwokai.com bwpx.com bwsm.org bwsoft.net bwtlab.com bwton.com bwxsj.com bwxxw.com bwzhcs.com bx0byte.com bx169.com bx1k.com bx24k.com bxbest.net bxcc.vip bxd365.com bxdaka.com bxdbf.com bxdlkj.com bxfish360.net bxgcb.com bxgdl.com bxgdunhua.com bxgkzy.com bxgmmw.com bxgshengwang.com bxgt.com bxgycfsb.com bxhaibao.com bxjob.net bxjyxx.net bxkejian.com bxktv.com bxldz.com bxltw.com bxmd51.com bxnfsy.com bxnjmj.com bxpedia.com bxr.im bxrfund.com bxshscc.xyz bxsnews.com bxtag.com bxwatch.com bxwljt.com bxwst.com bxwx.cc bxwx.io bxwx.tv bxxhtsw.com bxxy.com bxyuer.com bxzc123.com bxzczx.com bxzhiku.com bxzxw.com by-health.com by-leasing.com by56.com by6.app by6sx.com by899.com byai.com bybieyang.com bybily.com byboai.com bybon.com bybutter.com byc168.com byclean.net byd.auto byd.com bydauto.com bydglobal.com bydhaiyang.com bydit.com bydmax.com bydoceanauto.com bydpcic.com bydq.com bydsfy.com bydyhos.com byefy.com byf.com byfen.com byfen.net byfunds.com bygamesdk.com bygpu.com bygqlsj.xyz byguitar.com bygw.net byhao.net byhiv.com byhlds.com byhlds.net byhua.com byi.pw byjd.com bykszb.com bylw.com bylwcc.com bylwjc.com bymygf.com bymz.net bynesyy.com bynezyy.com bynmc.com bynonco.com bynrnews.com bynsyh.com byodonline.com bypanghu.xyz bypbn.com bypos.net byqsc.net byr-navi.com byr.cc byr.wiki byread.com byrhkj.com bys120.com bysb.net byshf.com byshjg.com byshr.com bysocket.com byspharm.com bystack.com bystatic.com bysxfz.com byszc.com bytapp.com bytcm.com byte-dns.com byte-dns.net byte-edge.com byte-edgeworker.com byte-gslb.com byte-test.com byte-test.net byte-ticket.com byte.online byte00.com byte00.net byte000.com byte008.com byteac.com byteacct.com byteacctimg.com byteactivity.com byteactivity11.com byteactivity12.com byteadverts.com byteapi.com byteapk.com bytecdn.com bytecdn.net bytecdntp.com bytecho.net bytecimg.com bytecloud.com byted-dast.com byted-edu.com byted-static.com byted-ug.com byted.org bytedance-boe.net bytedance.com bytedance.net bytedance.org bytedanceapi.com bytedancehermestest.com bytedanceoss.net bytedancevod.com bytedcdn.com bytedeliver.com bytedgames.com bytedns.com bytedns.net bytedns1.com bytedns2.com bytedns3.com bytedns4.com bytedns5.com bytedns6.com bytedns7.com bytednsdoc.com bytedsocial.com byteedu.com byteeffecttos.com bytefae.com bytefast.net bytefcdn.com bytefcdnrd.com bytegecko.com bytegeckoext.com bytegle.site bytegle.tech bytegoofy.com bytegrowth.com bytegslb.com bytehwm.com byteics.com byteics.net byteimg.com byteimgc.com byteinspire.com byteisland.com bytelb.net bytelb000.net bytell.net bytemaimg.com bytemastatic.com bytemedi.com bytemelody.com bytenew.com bytenewst.com byteoc.com byteorg.com byteorge.com byteox.com bytepoker.fun byteq8u.net bytescm.com bytesfield.com bytesim.com bytesmanager.com bytespeech.com bytesslb.net bytesus.com bytesyscdn.com bytetcc.com bytetech.info bytetos.com bytetraffic.net bytetstatic.com bytetstatic.net byteug.com bytevalk.com bytevcloudvod.com bytevdn-boe.com bytevdn.com bytewars.cc bytewebservice.com byteww.com bytexns.com bytexns.net bytexservice.com bytezhi.com bythealthy.com bythewayer.com bytianshankd.com byts.com bytter.com bytzjt.com byvast.com byw.lol byxrmyy.net byxsnzg.com byxtzn.com byxue.com byxx.com byxy.com byyapp.com byyc.net byydkj.net byyfy.net byytfy.com byzhihuo.com byzjbyq.com byzkj.com byzoro.com byzp.com byzsyy.com byzt.net byzxy.com bz-e.com bz01.com bz55.com bz889.com bzbgr.com bzbs.net bzbyzk.com bzchaxun.com bzcjw.com bzcm.net bzcm88.com bzcw8.com bzd6688.com bzddrive.com bzfar.com bzfpms.com bzfwq.com bzfwy.com bzfwzs.com bzfxb.com bzfxw.com bzgd.com bzglyfjq.com bzgwl.com bzhou.cc bzhslyj.com bzjsjt.com bzjulihg.com bzjw.com bzkad.com bzko.com bzlxzl.com bzmfxz.com bzmhm.com bzname.com bzonl.com bzqmz.com bzrb.net bzrqfd.com bzsanyuan.com bzsb.info bzsoso.com bzszxyy.com bzszyjx.com bzszyy.com bzszyy123.com bzt120.com bztdxxl.com bzvtc.com bzwater.com bzwz.com bzwzw.com bzxinwen.com bzxz.net bzxzk.net bzy.net bzy2015.com bzzpw.com bzzxq.com c-119.com c-3.moe c-abc.site c-ame.com c-banner.com c-c.com c-canyin.com c-china.com c-cpp.com c-ctrip.com c-discover.com c-estbon.com c-fehong.com c-fol.net c-jet.com c-lodop.com c-markaudio.com c-nin.com c-ps.net c-rst.com c-snd.com c-sz.com c-t.work c-thme.com c-vcc.com c-wms.com c-yl.com c03b92b501009.beer c098d113b11031.beer c0c0b511e1009.beer c114.net c122e63a111031.beer c133.com c1a8330703dc6f12.com c1ass.com c1channel.com c1el.com c1km1.com c1km4.com c1s.com c2427457b16e03ea.com c27619fb01019.beer c2ax1yu599.com c2h4.org c360dn.com c369a0f0611031.beer c3806.com c3810.com c39cb900df.run c3acg.com c3b9cd3fb10311.beer c3crm.com c3pool.org c3x.me c4006.com c4008.com c400c.cc c402f6df11021.beer c4190cb63e65819b.com c41b1d28472ea27c.com c437dfd45f96b488.com c43c3cb111011.beer c469f14b911012.beer c4752e8a51.vip c47cb27580c5de6b.com c49.com c495f3eb10d6cf13.com c4c6c49a6453534d.com c4d.com c4d.live c4datc.com c4dcn.com c4dco.com c4dpro.com c4dsky.com c4hcdn.com c4ys.com c4yx.com c50forum.com c516b5c2510272.beer c53c4e56510281.beer c54sauo3y85m2g.com c558624c4b6f5f42.com c578801be1009.beer c57e6607c10292.beer c57fbfc585.skin c5a13eec21010.beer c5a7e584ed460dcd.com c5b27c7c01019.beer c5b3c3db298ea985.com c5b6bpoq7q.world c5bf2b35337761f4.com c5game.com c5iot.com c6133f7f98120d7f.com c631dlc0br.com c658e6a643fe3a95.com c659e27c366ae634.com c6a0cbdfa0be06e6.com c6bad2ad01020.beer c6c.com c6n708.ren c7.net c7032.com c705e5bdb71ae01d.com c7197.com c7200.com c7233.com c73567b858ce4908.com c7526.com c77200.com c77c.com c7878.com c7bc68c2811032.beer c7c1jx3ikk.bar c7c8.com c7fffvip16.com c7fffvip29.com c7g.com c7games.org c7vvv.com c7y.com c835249c31017.beer c837c4e951009.beer c8571e9ad7689b0a.com c88a8ae86f58a489.com c8a8b0af81014.beer c8f8537d91013.beer c9018.com c919.sbs c944748d38bcc258.com c953b5d8b1013.beer c969.com c9b5b03e0ef62dc0.com c9c855b3da9b3b66.com c9d1d314b98f8fe3.com c9e8e19a411012.beer c9ec9c2f0c2de043.com c9o8nlanfm.work ca-aicc.com ca-sme.org ca-smefs.com ca-tencentclb.cloud ca-tencentclb.com ca-tencentclb.net ca-tencentclb.work ca001.com ca002.com ca003.com ca0d7b2da10271.beer ca163.net ca168.com ca2e9ea18bedfdf2.com ca315.com ca39.com ca5d4ce601013.beer ca800.com ca91a5eb7ed4495e.com ca9ce6rv872ce1.com caa830d2710251.beer caa86.org caaa-spacechina.com caaad.com caacbook.com caacchina.org caacsri.com caagei.com caagov.com caakee.com caaladi.com caanb.com caapa.org caasai.com caasbuy.com caasse.com caayee.com cab346ef31016.beer cabbagebox.com cabbeen.com cabc-online.com cabee.org cabhr.com cabinetbuy.com cableabc.com cabletiegun.com cabling-system.com cabplink.com cabr-fire.com cac-citc.com cac2667b8c265fb8.com cacakp.com cacc-sf.org cacfo.com cacfo.net cache4ever.com cache666.com cachekit.com cachemoment.com cachiyeung.com cackui.com cacpp.com cacre.org cacs-summit.com cacsec.com cacter.com cactiapi.com cactifans.com cactmc.com cad1688.com cad2688.com cad5.com cad8.net cad888.com cada.cc caddcc.com cadenzayueqi.com cadforex.com cadict.net cadmon.net cadreg.com cadrolift.com cadzhuan.com cadzj.com cadzxw.com caecc.com caeda-cxrh.com caeef787f1694f47.com caeerr.com caeete.net caefa.org caein.com caeri-te.com caes.store caexpo.com caexpo.org cafachine.com cafagame.com cafamuseum.org caffci.org cagentle.com cagetest.com cageystone.com cagoe.com cahkms.org cai-ba.com cai110.com cai58t.com cai88.com caiacn.com caiair.com caian.net caibangzi.com caibaojian.com caibaopay.com caibaotao.com caibeike.com caibihui.com caibowen.net caicao.net caidan2.com caidao1.com caidao8.com caidaocloud.com caidian.com caidian365.com caidianqu.com caiens.com caifei.net caifengprinting.com caifu.com caifu500.net caifupai.com caifuxingketang.com caifuxingmingxue.com caifuzhongwen.com caigaowang.com caigeqiu.vip caigou2003.com caigou365.com caigoubao.cc caiguayun.com caiguu.com caih.com caihanlin.com caihcloud.com caihcom.com caihdata.com caiheht.com caihong.com caihong5g.com caihong8888.com caihongbashi.net caihongche.com caihongduoduo.com caihongjia.com caihongjianzhan.com caihongmeng.com caihongqi.com caihongsheying.com caihongto.com caihongx.com caihoo.com caihuapak.com caihuicloud.com caihuoxia.com caiips.com caij100.com caijing365.com caijingche.com caijingmobile.com caijingnews.net caijingwu.com caijinyuan.com caijiruanjian.com caijj.com caike.com caiku.cc caiku.com caikuai91.com caikuaitoutiao.com caikuo.com cailele.com cailianpress.com cailiao.com cailiaoniu.com cailiaoren.com cailutong.com caimaiba.com caimei365.com caimitech.com caimogu.cc caimogu.net caimomo.com cainachina.com caing.com cainiao-inc.com cainiao-inc.net cainiao.com cainiaobaoka.com cainiaocc.com cainiaojc.com cainiaojiaocheng.com cainiaoxueyuan.com cainiaoya.com cainiaoyizhan.com cainongnet.com cainuan365.com caipiaogu.com caipintu.com caipopo.com caipucaipu.com caiqizhe.com cairenhui.com cairongquan.com cairot.com cairuijun.com caisan.io caishen.ai caishenpo.com caishenyy.com caishuiedu.com caisixiang.com caistc.com caistv.com cait.com cait1981.com caitaimg2.com caitaw.com caitun.com caituyou.com caiu8.com caiwan.com caiweiming.com caiwennews.com caiwu51.com caiwuchina.com caixadirectaanalisar.com caixin.com caixinfoundation.org caixinmedia.com caixinonline.com caiyeml.pw caiyicloud.com caiyiduo.com caiyu.com caiyuemedical.com caiyun.com caiyunai.com caiyunapp.com caiyuncdn.com caiyunhub.com caiyunyi.com caizhaowang.com caizhihr.com caj11.com cake400.com cake6.com calatopia.com calawei.com calb-tech.com calccn.com caldigit.net caledoniancable.com calendar520.com calgoncarbon-china.com cali-light.com cali999.net callbei.com callcenter88.com callergen.com callmekeji.com callmysoft.com callrui.com caloinfo.com calorietech.com calt.com calterah.com calvinneo.com camartsphotography.com cambm.com cambodiafang.com cambricon.com camc.cc camcap.us camcard.com camce-rc.com camdihg.com came-online.org camera360.com cameraunion.net camhen.com camilliar.com camir.org camnpr.com camoryapps.com campanilechina.com campari1987.com campbicycle.com campgreenbox.com campingcn.com campiu.com campus-app.net campuschina.org campushoy.com campusphere.net campusplus.com camscanner.com camsnetec.com camyu.net can-dao.com can-gas.com can-lead.com can.tv cana.space canaan-creative.com canaanmt.com canadaae.net canalmuseum.net canasy.com canature.com canbaojin.com cancda.net cancer361.com candiabiotech.com candou.com candybook.com candyhaw.com candylab.net candypay.com candystars.net canet.com canevent.com canfire.net cang-jia.net cang.com cangdu.org cangfengzhe.com canghaiip.com canghaimachine.com canglanghospital.com cangmang.xyz cangoonline.com cangowin.com cangpie.com cangqiang.com cangqiongkanshu.com cangshui.net cangshutun.com cangxiaoer.com cangxitianli.com cangya.com cangzhouhd.com canhighcenter.com canhot.net caniculab.com canidc.com canjio.com cankao100.com cankaoshouce.com cankaoxiaoxi.com cankaoxx.com canlanjy.com cannelton.org canonpumps.com canpdu.com canpoint.net canpopo.com canrill.com cansee.net cansemitech.com cansine.com cantoge.com cantonbio.com cantonde.com cantonfairad.com cantontower.com canvcan.com canway.net canwayit.com canwaysoft.com canxingmedia.com canyin.cc canyin.com canyin168.com canyin2017.com canyin375.com canyin88.com canyincha.com canyinzixun.com canyouchina.com canyousoftware.com canyuanzs.com caoanhospital.com caobao.com caocaobusiness.cc caocaocustomer.cc caocaoglobal.com caocaojourney.cc caocaokeji.net caocaomarketing.cc caocaomedia.cc caocaoproduct.cc caocaopromotion.cc caocaoservice.cc caocaosx.com caocaotravel.cc caocaotrip.cc caocaotrip.com caochai.com caochai.net caochen.net caogen.com caogenb2b.com caogong.org caohai.com caohaifeng.com caohejing.com caohua.com caoke.net caoliao.net caomall.net caomei.wiki caomeipai.com caomeishuma.com caomeixz7.xyz caoniang.com caonimazuzong.com caonmp.com caos-china.org caoshiyabo.com caotama.com caotianmiao.com caotu66.com caovan.com caoxianfc.com caoxie.com caoxudong.info caoyudong.com capablist.com capatue.com capellahotelsanya.com capitalcloud.net capitaleco-pro.com capitalip.org capitalonline.net capitaltoday.com capjfx.club capjoy.com cappdr.org caps-china.org capsuleshanghai.com captain-cro.com capturetheflag.fun capvision.com capwhale.com caqzlsgs.com car-metaverse.com car0575.com car2sharechina.com car369.com car388.com carapk.com carben.me carbinpower.com carbonbiking.com carbononegroup.com carbonscn.com carbonxprogram.com carcav.com carcdn.com cardaudio.com cardbaobao.com cardcmb.com cardcn.com cardinfolink.com cardlan.com cardlogroup.com cardniu.com cardniudai.com cardplus.work cardqu.com cardyang.com care-challenge.com care110.com caredear.com careduka.com careerchina.com careerexe.com careerintlinc.com careerqihang.com careersky.org carefiber.work careked.com carelifefood.com carellicpa.com carertec.com careuc.com carezb.com cargai.com cargeer.com cargo001.com cargodiscovery.com cargofee.com cargosmart.com caribgalaxy.com carimg.com carisen.com carivisa.com carking001.com carlinkin.com carmov.com carmucn.com carnegiebj.com carnoc.com carodpiano.com carp56.com carpoly.com carrotchou.blog carrotchou.com cars001.com carschina.com carsmp3.com cart-med.com cartaocontinente-ptssta.cfd cartech8.com cartersda.com carthane.com cartimen.com cartoonwin.com cartx.cloud carutoo.com carxinwen.com carxoo.com caryoud.com carzd.com carzenplus.com carzone365.com carzyuncle.com cas01.com casarocinante.com casarte.com casbin.com casbin.org casboc.com cascadepharm.com casctcp.com casdoor.com casdoor.org case-platformhealth.com case91.com casear.net casece.org caseinnoo.com casemic.com cashbackok.com cashbus.com cashcatads.com cashtoutiao.com cashwaytech.com casia.com casibase.com casic-addsino.com casic-t.com casic.com casic304.com casic3s.com casicloud.com casicyber.com casis.work casjob.com caslease.com casmeit.com casmita.com casmn.com casnb.com casp.hk caspte.com casqy.com casszzy.com castbd.com castelu.com castiron-bathtub.com castlepeakhospital.moe castyum.com casvino.com casvisor.com casvm.com casystar.com casyueda.com cat-cn.com cat898.com catalike.com catalyst-loading.com catcat321.com catchingdoll.com catchyrime.com catering-shizuoka.com catfish-cms.com catguo.com cathassist.org cathayagroup.com catia-china.com catic-dde.com caticgz.com caticol.com catjc.com catl.com cato-chem.com cato-travel.com catofes.com cattsoft.com cattsp.com catugbio.com catv.net catv114.com catweiqi.com catyun.cc caua1988.com caua99.com caup.net caupd.com caupdbj.com cauvet.com cav-ad.com cavca.org cawae.net caxa.com caxx.net cayzlh.com cazpw.com cazx.net cb-h.com cb07fef6ccb66c8e.com cb6037f1b10261.beer cb8888.shop cb8a5dff61011.beer cb8e405b81014.beer cbaleague.com cbbn.net cbc32120f1014.beer cbca.net cbcechina.com cbcgroup.net cbcie.com cbcloud123.com cbcsnote.com cbcuri.com cbd-china.com cbd0512.com cbd263.com cbdcn.com cbdd9912fb913294.com cbdio.com cbdstest.download.prss.microsoft.com cbdz13.com cbe21.com cbea.com cbec365.com cbecok.com cbecx.com cbeeexpo.com cbes21.com cbex.com cbf92cea38c259ee.com cbfau.com cbgcloud.com cbhb.biz cbi360.net cbiachina.com cbiao.com cbice.com cbiec.com cbiec.net cbigame.com cbinews.com cbismb.com cbitft.com cbivisa.com cbj1998.com cbjq.com cbjuice.com cbjy520.com cbjzw.org cbmexpo.com cbmf.org cbminfo.com cbmsci.com cbmwz.net cbn.me cbndata.com cbndata.org cbnri.org cbnweek.com cboad.com cbquan.com cbsbearing.com cbsrc.com cbtgc.com cbtimer.com cburi.com cbvac.com cbvvt.com cbvx8.com cbxs.net cby.me cbzr.com cc-airshow.com cc-honor.com cc-image.com cc-pharming.com cc-q.com cc-uavia.com cc.cd cc.co cc06040d408f65b1.com cc0808.com cc11bh.com cc1588.com cc55k.com cc707.com cc7m.com cc8.cc cc86.com cc89aba4a2ccad27.com cca135.com ccabchina.com ccai.cc ccall.cc ccamc.co ccaon.com ccapbook.com ccapedu.com ccartd.com ccarting.com ccasn.com ccasy.com ccatcloud.com ccatnet.com ccawz.com ccb.com ccbb6be551024.beer ccbcos.com ccbec-shenzhen.com ccbecexpo.com ccbflift.com ccbft.com ccbfund.com ccbfutures.com ccbhome.net ccbiam.com ccbleasing.com ccbnd.com ccbookfair.com ccbpcn.com ccbpension.com ccbride.com ccbxt.com ccc-ch.com ccc-chn.com cccamtop.com cccbs.net cccc-capital.com cccc-sdc.com cccc-sjer.com cccc58.com cccc8cccccc.cc ccccccccccc.cc cccccd.com cccclc-gd.com cccclc.com ccccoe.cc ccccoe.com ccccsg.com cccdun.com cccdzxw.com cccf-cloud.com cccitu.com cccity.cc cccking.com ccckq.com cccm-em120.com cccmat.com cccmii.com cccmtf.com cccnec.com cccovvv.com cccpan.com cccppp.com cccsql.com ccctspm.org cccwaf.com cccyun.cc ccd86.com ccddb877c1024.beer ccdma.org ccdol.com cce-china.com cce0bd02011032.beer ccea.pro cceato.com ccebbs.com ccedia.com ccedisp.com ccedpw.com ccedtu.com ccee.com cceea.net cceep.com ccement.com ccen.net ccepc.com cces2006.org ccesda.com ccets.com ccfddl.com ccfeb.com ccflow.org ccfourth.com ccfta.com ccgaa.com ccgdc.com ccgff.com ccgfie.com ccggd.com ccgim.com ccgjbus.com ccgogogo.com ccgoyi.com ccgs120.net ccgslb.com ccgslb.net ccgxk.com cchaosheng.com cchc-hyd.com cchccc.com cchcch.com cchengr.com cchezhan.com cchfound.org cchlgame.com cchorse.com cchorse.net cchoubo.com cchpu.com cci-intervention.com ccia-cleaning.org ccia.xin cciaiot.org cciatv.com ccic-8.com ccic-auto.com ccic-lab.com ccic-set.com ccic.com ccic2.com cciccloud.com ccice.com ccicgd.com ccicgx.com ccicsd.com ccidcom.com ccidconsulting.com cciddata.com cciddesign.com ccidedu.com ccidexpo.com ccidgroup.com ccidnet.com ccidreport.com ccidsmart.com ccidthinktank.com ccidwise.com cciea.com ccieh3c.com ccifc.org ccig.com ccigchina.com ccinchina.com ccip.ren ccipp.org ccirm.org ccit360.com ccita.net ccitimes.com ccitu.com cciup.com ccj88.com ccjec.com ccjhdljs.com ccjkncdc.com ccjkwjjedu.com ccjoo.com ccjoy.com ccjoyland.com ccjs120.com ccjt.com ccjxcn.com ccjytv.com ccjzzj.com cckefu1.com cckefu3.com cckggroup.com ccknbc.cc cckyedu.com cclawer.com cclawnet.com cclbook.com cclcn.com ccle5.com ccler.com cclexpo.com cclgpx.com cclimg.com cclinux.org cclndx.com cclolcc.com cclqme.xyz ccluster.net cclyun.com ccm-1.com ccm-hardware.com ccm99.com ccmama.com ccmcgc.com ccmdl.adobe.com ccmdls.adobe.com ccme.cc ccmfcm.com ccmicroera.com ccmn.net ccmodel.com ccmw.net ccn.ren ccn360.com ccnbdh.com ccnee.com ccnew.com ccngx.com ccnovel.com ccnovo.com ccnpic.com ccnt.com ccoalnews.com ccoaonline.com ccoco.vip ccode.cc ccoi.ren cconn.cc ccoop.net ccoopg.com ccops.net ccopyright.com ccostm.com ccotcm.com ccoymc.com ccp3060.com ccpaie.com ccpc.io ccpc360.com ccpgssd.com ccpit-academy.org ccpit-sichuan.org ccpit-sx.org ccpit-tga.org ccpit.org ccpitbj.org ccpitbm.org ccpitbuild.org ccpitcft.com ccpitcq.org ccpitecc.com ccpitfujian.org ccpitgs.com ccpitgx.org ccpithebei.com ccpithn.org ccpitjinan.org ccpitjs.org ccpitlight.org ccpitln.org ccpitnb.org ccpitsd.com ccpittex.com ccpittj.org ccpitxiamen.org ccpitxian.org ccplay.cc ccplay.com ccpnt.org ccpod.com ccprec.com ccproxy.com ccps56.com ccqctg.com ccqf.com ccqg.com ccqtgb.com ccqtm.com ccqyj.com ccrate.cc ccrc.com ccrfmed.com ccrgt.com ccrici.com ccrjk.com ccrjkf.com ccrjw.com ccsacacasfdghh.com ccschangsha.com ccscrbyy.com ccsedqrmyy.com ccsfuchan.com ccskqyy.com ccsngqyy.com ccsnpower.com ccsp365.com ccssmm.com ccst.cc ccsuu.com ccswuhan.com ccsx.net ccsxlyy.com cct-g.com cct-lab.com cct365.net cctalent.com cctalk.com cctalk.net cctash.com cctaw.com cctbn.com cctc.cc cctcce.com cctcct.com cctcdn.com cctek.com cctg.cc cctheze.com cctime.com cction.com cctlife.com cctmt.com cctocloud.com cctpgm.com cctpress.com cctry.com cctsz.com cctu.org cctv-19.com cctv-caijing.com cctv-peiyin.com cctv-star.com cctv.com cctv0002.com cctv13cctv13.com cctv18.com cctv4g.com cctv5bo.com cctvcdn.net cctvcj.com cctvctpc.com cctvdyt.com cctvfendou.com cctvfinance.com cctvjingji.com cctvmall.com cctvpic.com cctvplus.com cctvsdyxl.com cctvse.net cctvweishi.com cctvxftx365.com cctw.cc cctypx.com cctzz.net ccughc.net ccunf.com ccutchi.com ccv160.com ccv168.com ccview.net ccvui.com ccwcw.com ccwcyw.com ccwifi.cc ccwl.net ccwonline.com ccwonline.net ccwork.com ccwow.cc ccwqtv.com ccwto.net ccxcn.com ccxcredit.com ccxhfk.com ccybeta.cc ccydkj.com ccygmy.com ccyia.com ccynice.com ccyts.com ccyunmai.com ccyyxx.com cczel.com cczjyy.com cczk.com cczkdmkj.com cczq.com cczq.net cczxyjhyy.com cd-cxh.com cd-estt.com cd-hk.net cd-hss.com cd-kc.com cd-motorshow.com cd-ox.com cd-pa.com cd-psychologist.com cd-rail.com cd-sd.com cd-tencentclb.cloud cd-tencentclb.com cd-tencentclb.net cd-tencentclb.work cd-web.org cd-wx.com cd-wx.net cd-zc.com cd00c44f211031.beer cd120.com cd12371.com cd1958.com cd20.net cd2120.com cd23f.com cd3120.com cd365689f11012.beer cd37wan.com cd3hospital.com cd42195.com cd58.com cd6.com cd658ad6a610b9a5.com cd7a871ab11011.beer cd7yy.com cdabon.com cdacz.com cdadata.com cdadsj.com cdairport.com cdajcx.com cdajzp.com cdamdi.com cdanet.org cdangel.com cdapex.com cdaten.com cdb-leasing.com cdbaidu.com cdbdsec.com cdbfb.net cdbokon.com cdborz.com cdbsdyk.com cdbsfund.com cdc80b3514292771.com cdcbj.com cdcbn.com cdcc.ink cdccic.com cdccpit.org cdcea.org cdcgames.net cdchjyy.com cdchuandong.com cdcitypark.com cdcoslm.com cdcxhl.com cdcyts.com cddayun.com cddc56.com cddengji.com cddgg.com cddgg.net cddjip.com cddlhx.com cddlkj.net cddq120.com cddscj.com cddsgk.com cde-os.com cdea4d2cb10261.beer cdeaa.com cded23c0b11011.beer cdedu.com cdeledu.com cdenvironment.com cdfanmu.com cdfcjg.com cdfcn.com cdfeimi.com cdfer.com cdfgsanya.com cdfgt.com cdfhnmall.com cdfhnms.com cdfinger.com cdfmembers.com cdfortis.com cdfsunrise.com cdfuwuqi.com cdgas.com cdgdad.com cdgdp.com cdggq.com cdggzy.com cdgjbus.com cdgmgd.com cdgoufang.com cdgowell.com cdgql.com cdgrf.com cdgtw.net cdgxfz.com cdgxq.com cdgxsyzx.com cdgxxy.net cdh3c.com cdhaiguang.com cdhfund.com cdhglsc.com cdhgr.com cdhjsw.com cdhke.com cdhkxy.com cdhld.com cdhr.net cdhrsip.org cdhsgb.com cdhtgroup.com cdhtgs.com cdhtrq.com cdhuaying.com cdhxdq.com cdii-leasing.com cdirs.com cditv.tv cdjcow.com cdjfwy.com cdjhqczl.com cdjiaoan.com cdjingfeng.com cdjituan.com cdjnrc.com cdjsjlxh.com cdjsjx.com cdjtzhtc.com cdjxjy.com cdjzso.com cdjzw.com cdjzzg.com cdkeynogap.com cdkf.com cdkjbg.com cdkjw.org cdks.run cdkyfc.com cdlaobing.com cdlbmy.com cdlbyl.com cdlchd.com cdlgp.com cdliangwang.com cdlingsou.com cdlsym.com cdlvbao.com cdlxqn.com cdmcaac.com cdmddyf.com cdmfund.org cdmgiml.com cdmhwh.com cdmjwater.com cdms-china.com cdn-build.com cdn-build.net cdn-cba.com cdn-cdn.net cdn-dodo.com cdn-gw-dv.net cdn-gw-dv.vip cdn-hotels.com cdn-speed.com cdn-static.farfetch-contents.com cdn-uc.cc cdn-v.com cdn.fun cdn.ist cdn.jetbrains.com cdn.samsung.com cdn.shanghai.nyu.edu cdn.show cdn.vin cdn000.com cdn08.com cdn1.vip cdn1008.com cdn1218.com cdn16.com cdn20.com cdn20.info cdn20.org cdn2000.com cdn2020.com cdn30.com cdn30.info cdn30.org cdn3344.com cdn35.com cdn365gnlc.vip cdn365lc.vip cdn40.com cdn56.com cdn86.com cdn86.net cdn90.com cdn90.net cdn90.org cdn99.com cdnb.net cdnbbb.net cdnbuild.com cdnbuild.net cdnbye.com cdnc.org cdncache.com cdncache.net cdncdncdn.com cdncenter.com cdncg.com cdnchatgpt.com cdnchushou.com cdncl.net cdnclouds.net cdncode.com cdnczydwl.com cdnddd.com cdnddd.net cdndm.com cdndm5.com cdndm5.net cdndns.vip cdndns1.com cdndns2.com cdndo.com cdndoctor.com cdndu.com cdnet110.com cdnetdns.net cdnetworks.net cdnexus.com cdnf.cc cdngia.com cdngot.com cdngslb.com cdngslb8.com cdngtm.com cdnhhh.net cdnhub.net cdnhwc1.com cdnhwc10.com cdnhwc2.com cdnhwc3.com cdnhwc4.com cdnhwc5.com cdnhwc6.com cdnhwc8.com cdnhwc9.com cdnhwcajk17.com cdnhwcatq08.com cdnhwcbni108.com cdnhwcbqs106.com cdnhwcbzj102.com cdnhwcchh18.com cdnhwccmz121.com cdnhwcedi10.com cdnhwcedt124.com cdnhwcggk22.com cdnhwcgnc118.com cdnhwcgqa21.com cdnhwchcg02.com cdnhwcibv122.com cdnhwcjlg112.com cdnhwcjog12.com cdnhwcjsb120.com cdnhwckfz116.com cdnhwckon103.com cdnhwcljk104.com cdnhwcllh11.com cdnhwclxu105.com cdnhwclxw05.com cdnhwcoem01.com cdnhwcohm19.com cdnhwcoph123.com cdnhwcprh113.com cdnhwcpsd13.com cdnhwcqgw115.com cdnhwcqir15.com cdnhwcqve117.com cdnhwcqwg14.com cdnhwctnm107.com cdnhwctxz24.com cdnhwcuim119.com cdnhwcupf06.com cdnhwcurq03.com cdnhwcvix16.com cdnhwcxcy07.com cdnhwczba04.com cdnhwczjt20.com cdnhwczmn114.com cdnhwczth23.com cdnhwcztu09.com cdnhwczxh101.com cdnidc.net cdnjs8888.com cdnjson.com cdnjtzy.com cdnkxy.com cdnle.com cdnle.net cdnlinkcloud.com cdnlinking.com cdnmama.com cdnmaster.com cdnmg.com cdnnx.com cdnok.com cdnoutcheck.com cdnpe.com cdnqttdispatcher01.com cdnrl.com cdnsvc.com cdntip.com cdntipbak.com cdntips.com cdntips.net cdntxt.com cdnudns.com cdnunion.com cdnvp.com cdnvpn.net cdnvue.com cdnwaf.net cdnxcrpl.vip cdnyoyun.com cdnyt69.com cdnyyds999.com cdoers.com cdpgroupltd.com cdqcnt.com cdqcp.com cdqcw.net cdqcxy.com cdqczx.com cdqmw.net cdqph.com cdqsng.com cdqss.com cdqszz.com cdqzcz.com cdrbs.net cdrcb.com cdren.net cdrich.com cdrjob.com cdronghai.com cdrqxh.com cdrsigc.com cdrtvu.com cdruzhu.com cds-seal.com cdsb.com cdsb.mobi cdscdscdn.com cdsenfa.com cdsgsz.com cdshangceng.com cdshishi.net cdshx.com cdsixun.com cdsjjy.com cdsjtech.com cdskdxyy.com cdsledu.net cdslsxh.com cdslsxh.org cdsme.com cdsns.com cdsnzx.com cdspace.net cdsslz.net cdsuns.com cdswjs.com cdswx.net cdsxdd.com cdsxlc.com cdt-ec.com cdt-md.com cdt-re.com cdtcxh.org cdtianda.com cdtkdw.com cdtlev.com cdtlxx.net cdtnrq.com cdtszn.net cdtyxx999.com cdtz.net cdu.cc cduncname.com cdvcloud.com cdvisor.com cdwulian.com cdxdyy.com cdxrdz.com cdxsxbx.com cdxw.net cdxwcx.com cdxwxy.com cdxydb.com cdydlx.com cdyee.com cdyestar.com cdyfy.com cdygdq.com cdyj56.com cdylzx.net cdynt.com cdyouhui.com cdyrjygs.com cdysxx.com cdysxy.com cdyushun.com cdyywz.com cdyzhotel.com cdzdgw.com cdzgh.com cdzgzs.com cdzhuoyu.com cdzimo.com cdzixun.net cdzjryb.com cdzk.com cdzk.net cdzk.org cdzls.net cdzongtian.com cdzp8.com cdzrjdgc.com cdzs.org cdzuche.com cdzvan.com cdzxy.com cdzzhn.com ce-air.com ce04.com ce2293.com ce247ce247.shop ce33m7.com ce71jubc2.com cea45b9f61023.beer ceacq.com ceair.com ceairdutyfree.com ceairgroup.com ceaj.org ceamg.com ceba.tech cebbank.com cebcn.com cebike.com ceblease.com cebpubservice.com cebu.vip cecafdb.org cecb2b.com cecbh.com cecc-cx.com ceccen.com cecdc.com cece-mall.com cece.com cece.la cecesat.com cecewu.com cecgw.com cecgx.com cechoice.com cecisp.com cecloud.com cecloudcs.com cecmath.com cecom.cc ceconline.com ceconlinebbs.com cecport.cc cecport.com cecxtal.com ceda-fluid.com cedachina.org cedarhd.com cedfxub.org cediy.com cedock.com ceeger.com ceegpower.com ceeia.com ceeji.net ceepower.com ceepsp.com ceeunion.com cef114.com ceggd.com cehiy.com cehome.com cehuan.com cehuashen.com cehui8.com cei1958.com ceiaec.org ceibs.edu ceibsonline.com ceic.com ceice.org ceicloud.com ceicsz.net ceiea.com ceigd.com ceinettgt.com ceitcl.com cekeis.com cekid.com celebpalace.com celebritywallpapershq.com celgenpharm.com celhr.com celiang.net celinlawyers.com celiss.com cell-gene.com cell-origin.com cellcook.com cellixsoft.com cellocation.com cellprobio.com cellprotek.com cells-net.com cells-net.net cellwise-semi.com celucasn.com celwk.com cemat-asia.com cematsh.com cement365.com cementren.com cemho.com cemni.com cemodule.com cemsurveys.com cemsurveys.net cemyun.com cen-li.com cenano-china.com cenbel.com cenbest.com cenboomh.com cencimeter.com cencs.com cendes-arch.com cengceng.chat cengcloud.net ceniiat.com cenjiasu.com cenkersz.com cenn.com cennjt.com cenray-ic.com censh.com centainfo.com centaland.com centanet.com centauriglobal.com centbrowser.net centec.com cententcymbals.com centerm.com centit.com centong.com centos.bz centralchina.com centralsolomon.com centrechina.com centricsoftwarechina.com centrincloud.com centrixlink.com centrmus.com centroidtec.com centrostuditaliani.com century-carrier.com century-cn.com century21cn.com centurycreation.com centuryenglish.com centurystar.net centurytrip.com cenuan.com cenvan.net cenvandns.com cenwan.com cenwaymaterials.com cenwor.com cenwoy.com cenxinews.com cenya.com ceobiao.com ceoeo.com ceoim.com ceolaws.net ceolearn.com ceook.com ceotx.com ceowww.com ceoxq.com ceozero.com cepark.com cepea.com cepeta.com cepin.com ceping.com ceping365.com cepmh.com ceppea.net ceppedu.com ceprei.com ceprei.org cer.net ceracdn.net ceradir.com cerambath.org ceramicschina.com ceramsoc.com cercg.com cere.cc ceremony79.com cerestools.com cernet.com cernet.net cernet2.net cersign.com cersp.com certicn.com certificatey.com certlab.org ces-transaction.com cese2.com cesfn.com cesfutures.com ceshanmi.com ceshi.com ceshi112.com ceshigo.com ceshigu.com ceshiren.com cesinet.com cesipc.com cesko-dl.com cespc.com cestco.com cesu.net cetanfa.wiki cetc33.com cetc52.com cetc55.com cetccloud.com cetceg.com cetcio.com cetcmotor.com cetcssi.com cetgps.com cethik.com cetkmh.com cetsteam.com cetzig.com ceultimate.com ceve-market.org cevsn.com cewud.com ceydz.com ceyice.net ceyige.com cezhu.net cf-china.info cf-ns.com cf-ns.net cf-ns.site cf-ns.tech cf01e170e475757b.com cf115.com cf69.com cf6ea43741014.beer cf8587a521017.beer cfachina.org cfanlost.com cfb30e2181013.beer cfbond.com cfc365.com cfca-c.org cfccd.com cfcf1958.com cfchem.com cfchi.com cfchint.com cfcpn.com cfd-china.com cfd163.com cfdp.org cfdwater.com cfecq.com cfedu.net cfei.net cfej.net cfeks.com cffote.com cfgbj.com cfgfr.com cfgjwl.com cfgpu.com cfgyp.com cfhfz.com cfhi.com cfhpc.org cfhuodong.cc cfhuodong.com cfido.com cfiec.net cfimg.com cfishsoft.com cfjbqc.com cfjqr.com cfjzyxh.com cfkjgx.com cflab.net cfldcn.com cflm.com cflpla.com cfluid.com cfm119.com cfmcc.com cfmeutencent.com cfmmc.com cfmna-tencent.com cfmoto.com cfmseatencent.com cfnotes.com cfoft.online cfogc.com cfogc.net cfpa.team cfrlr.com cfsbcn.com cfscar.com cfsggjt.com cfsino.com cfss.cc cfsuper.com cftcredit.com cftea.com cftecgroup.com cftest7.com cftest8.com cftsupport.com cftzqinzhou.com cfucn.com cfunctions.com cfund108.com cfuture.shop cfvvv.com cfxydefsyy.com cfxyfsyy.com cfxyjy.com cfyedu.com cfyy.cc cfyygf.com cfyzs.com cfzpw.com cfzq.com cfztq.com cg-ku.com cg-orz.com cg-schools.com cg009.com cg100iii.com cg1993.com cg3da.com cg98.com cg99.com cgacar.com cgadmob.com cgahz.com cgames.com cgangs.com cgboo.com cgbtek.com cgc.press cgcable.com cgcg01010ht.com cgcg01060ht.com cgcss.com cgdbia.com cgdeuvip.com cgdg.com cgdown.com cge.cc cgebio.com cgebook.com cgeinc.com cgejournal.com cger.com cgguy.com cggygs.com cghhospital.org cghospital.com cgicop.com cgiia.com cgiumuo.xyz cgjoy.com cgjoy.net cgke.com cgkjvip.com cgksw.com cgktudr.xyz cgl.cc cglw.com cglzw.net cgmama.com cgmantou.com cgmao.com cgmcc.net cgmjh.com cgmodel.com cgmol.com cgmxw.com cgnei.com cgnjy.com cgnmc.com cgnne.com cgoec-tencentclb.cloud cgoec-tencentclb.com cgoec-tencentclb.net cgoec-tencentclb.work cgonet.com cgowater.com cgown.com cgpbatech.com cgplayer.com cgplusplus.com cgreentown.com cgris.net cgrpark.com cgrzzl.com cgsec.com cgsfusion.com cgsoft.net cgtblog.com cgtn.com cgtsg.com cgtsj.com cgtsj.org cgtyhk.com cgtz.com cguardian.com cgufo.com cguiw.com cgutech.com cgvoo.com cgwang.com cgwenjian.com cgwic.com cgws.com cgxcig.net cgxdm.com cgxia.com cgxlzdm.com cgxm.net cgylke.com cgylw.com cgyou.com cgyouxi.com cgyu.com cgzair.com cgzj.com cgzy.net cgzyw.com ch-auto.com ch-chip.com ch-gk.com ch-guerrant.com ch-tools.com ch-water.com ch.com ch028.net ch12333.com ch9888.com ch999.com ch999img.com cha-china.org cha-tm.com cha127.com cha138.com chaba123.com chabansheng.com chabeichong.com chacd.com chacewang.com chacha.com chachaba.com chachawenshu.com chache-cn.com chache808.com chacheku.com chachengji.com chacihai.com chacuo.net chadianhua.net chadoc.com chaej.com chafanhou.com chafei.net chagee.com chaguan.center chahua.org chahui.com chahuo.com chaic.com chaichefang.com chaiderl.com chaiding.com chaidongpower.com chaihezi.com chaijing.com chaimage.com chain.cc chain56.com chaincar.com chaincatcher.com chaindd.com chainedbox.com chainhd.com chainknow.com chainlinkpcp.com chainlinkwork.com chainnode.com chainpharm.com chainsql.net chaint.net chainwinlaw.com chaiqian88.com chaishiguan.com chaitin.com chaizz.com chajiage.com chajian5.com chajiandaquan.com chajianxw.com chajiayuan.com chajie.com chajn.org chakahao.com chakahui.com chakonghao.com chakuaizhao.com chalaili.com chalangautozone.com chalaoshi.de chalcochem.com chalieco.com challenge-21c.com challenge-design.com chalwin.com chamcfae.com chamei.com chameiwang.com chamfond.com chamiji.com champconsult.com champion-ic.com championasia.hk championmkt.com championunion.com champsely.com chan.ink chance-ad.com chanced112.com chancel.ltd chandao.net chandashi.com chandi.biz chandixiu.com chanfine.com chang-xiang.com changan.biz changancap.com changanfunds.com changanren.com changantaihe.com changba-ktv.com changba.com changbaapi.com changbaapp.com changbaimg.com changbalive.com changbiyuan.com changchun-ccpit.com changchunmarathon.com changchunwater.com changda.life changdaore.com changdunovel.com changergroup.com changfa.com changfaproperties.com changfaqifu.com changfengpacking.com changfengsteeltube.com changfon.com changhaigfrp.com changhe-suzuki.com changhe.com changhe.tech changheauto.com changhedayun.com changheng88.com changhong-network.com changhong.com changhongit.com changhongnetwork.net changhu12333.com changhualaw.com changhuist.com changingie.com changingtek.com changjiangdata.com changjiangjin.com changjiangtimes.com changjianxy.com changjingtong.com changjiulogistics.com changjiuqiche.com changker.com changkezhe.com changlipeixun.com changliuabc.com changloong.com changloong.net changmengyun.com changning.net changpingquzhongxiyijieheyiyuan.com changpu3d.com changqingshu.net changqu.cc changshabdc.com changshang.com changshaship.com changshatong.com changshazrkj.com changshengmobi.com changshengshangye.com changshengyiliao.com changshiban.com changshizu.com changshouchemgroup.com changshu-marathon.com changshunhuojia.com changtong2800.com changtounet.com changtubus.com changuanjia.com changwang.com changwankeji.com changwei.asia changx.com changxianchem.com changxiao.co changxiaow.com changxie.com changxingyun.com changxuew.com changyan.com changyegroup.com changyifan.com changyin-lab.com changying.com changyizu.com changyonggame.com changyou.com changyoyo.com changyuangroup.com changyudz.com changyushengwu.com changzhinews.com chanjet.com chanjue.net chanluntan.com chanmama.com channelbeyond.com channingsun.bid chanpay.com chanpin100.com chanpindashi.com chansemt.com chanshi.vip chanway.net chanwind.com chanxuan.com chanxuehezuo.com chanzhi.org chao-cn.com chao-fan.com chaoart.com chaobohui.com chaodamould.com chaodavalves.com chaodu123.com chaofan.com chaofanlin.com chaofanshuma.com chaofantian.com chaoge.press chaogejiaoyu.com chaogu1688.com chaohuatech.com chaohuishou.com chaoji.com chaojibiaodan.com chaojibiaoge.com chaojibuy.com chaojicdn.com chaojifan.com chaojihetong.com chaojijianli.com chaojiping.homes chaojituzi.net chaojiying.com chaojiyun.com chaokaixin.net chaolean.com chaoliangkj.com chaoliangyun.com chaoliuguan.com chaolongbus.com chaoluoluo.com chaonanclub.com chaonanrc.com chaonei.com chaopaiyizu.com chaopx.com chaoren.com chaoschina.com chaosec.com chaoshanren.com chaoshen.cc chaoshengboliuliangji.com chaoshengxin.com chaoshi168.com chaosqh.com chaosw.com chaov.com chaowanjoy.com chaoweb.com chaowei-machine.com chaoxibiao.net chaoxin.com chaoxing.cc chaoxing.com chaoxingv.com chaoyang.com chaoyi996.com chaoyinjiu.com chaoyuesd.com chaozhenht.com chaozhoudaily.com chaozhouyin.com chaozuo.com chapangzhan.com chapaofan.com chaping.tv chappell1811.com char123.com charcaius.com charge-mobile.com chargedot.com chargerlab.com chargerlink.com chariotpharm.com charlinserver.online charllena.com charlottedaviesrmt.com charlsdata.com charmdeer.com charmingglobe.com charmkeytextile.com charmsunfund.com chartboost-china.com chase-secure55.wiki chasedorisu.com chaseyanyu.net chashebao.com chashudi.com chat12m.cfd chat14da.cfd chat2db-ai.com chat778.com chatairc.com chatanywhere.tech chatartpro.com chateaustarriver.com chatglm.site chatgptboke.com chatm.com chatmindai.net chatnos.com chatqp.net chatvgx.com chatyygpt.com chawo.com chaxiaow.com chaxinyu.net chaxun.biz chaxunchina.com chaxunfapiao.com chaxunjiao.com chayanfamily.com chayangge.com chaye.com chayeo.com chayu.com chayueshebao.com chayuqing.com chaz.fun chazhengla.com chazidian.com chaziyu.com chazuo.com chazuo.net chazuowang.com chbcnet.com chbdunt.com chblt.com chbml.com chbpp.com chce-expo.com chcedo.com chceg.com chceshi001.com chcmu.com chcnav.com chcoin.com chcompass.com chcontrol.com chcpay.com chda.net chdajob.com chdelphin.com chdies.com chdmc.com chdqyy.com chdtp.com che-shijie.com che-youhui.com che.com che0.com che101.com che168.com che168.net che2.com che300.com che314.com che777.com cheaa.com cheaa.org cheaca.org cheapdoma.com cheaphost.me cheapreplicawatch.com cheapviagraws.com cheapyou.com cheari.com cheasa.org cheatmaker.org chebaba.com chebada.com chebaipishu.com chebianjie.com chebianjie.net chebiao.cc chebiao.net chebrake.com checar.mobi chechakj.com chechaoxue.com checheng.com chechong.com chechuan.com checi.org check.cc checkaigc.com checkip.pw checkmath.net checkoo.com checkpass.net checkzeit.com checkzoo.com checom.net chediandian.com chedongxi.com cheduo.com cheegu.com cheerfun.dev cheerjoy.com cheersee.com cheersofa.com cheerspublishing.com cheersson.com cheertech.ltd cheerycouture.com cheetahfun.com cheetahgames.com cheetahgo.net cheetahmobile.com chefafa.com chefugao.com cheguo.com chegva.com chehang168.com chehejia.com chehui.com cheil.site chejianding.com chejingjie.com chekuaipai.com chelajanitorial.com chelangauto.com chelifang.com chelink.com chellex.com chelun.com chem-stone.com chem17.com chem234.com chem31.com chem36.com chem365.net chem366.com chem960.com chem99.com chemalink.net chemao.com chembeango.com chembible.com chembk.com chemcd.com chemchina.com chemcp.com chemcyber.com chemdodgen.com chemdrug.com chememall.com chemfish.com chemgogo.com chemi-tech.com chemicalbook.com chemicalreagent.com chemingpian.com chemishequ.com chemm.com chemmade.com chemmerce.com chemmuseum.com chemnet.com chemourscg.com chempacific-china.com chemptc.com chemrc.com chemsrc.com chemtour.com chemwells.com chemwith.com chemyouth.com chemyq.com chen-design.com chen.fun chenag.com chenall.net chenapp.com chenbo.info chenduaomei.com chener.net chenfan.info cheng-sen.com cheng.xin chengaizixun.com chengan-web.com chengan.tech chengbanggroup.com chengcai.net chengchuanren.com chengde-jz.com chengdebank.com chengdegj.com chengdegroup.com chengdewater.com chengdu-expat.com chengduair.com chengdubao.com chengdufanyi.com chengdun.com chengdurail.com chengduzhishang.com chengegeya.com chenger0711.com chengezhao.com chengfankj.com chengfeilong.com chengfengboli.com chengfengerlai.com chenggnet.com chenggongguiji.com chenghai.cc chenghct.com chenghen.com chenghua888.com chenghuijituan.com chenghuiqian.xyz chengji-inc.com chengjianjituan.com chengjing.com chengjinholdinggroup.com chengkao365.com chenglang.net chenglangyun.com chenglil.com chenglin.name chenglinpak.com chenglispv.com chengliwang.com chengloongcishan.org chenglou.net chengmei.games chengmeiyouxuan.com chengpeiquan.com chengrang.com chengrengaokaobaoming.com chengrenjiaoyu1.com chengruide.com chengshan.com chengshidingxiang.com chengshiguanjia.com chengshijun.com chengshu.com chengsmart.com chengtaijiaju.com chengtay.com chengtianxiajy.com chengtiexinxi.com chengtongjz.com chengtu.com chengwei.com chengweitx.com chengxiangqian.com chengxiangzhineng.com chengxiaoliu.com chengxingjicj.com chengxinyouxuan.com chengxua.com chengxuan.com chengyangyang.com chengye-capital.com chengyi.press chengyitex.com chengyouyun.com chengyuanwenquan.com chengyucidian.net chengyun.com chengyuwan.com chengzhaoxi.xyz chengzhinj.com chengzijianzhan.cc chengzijianzhan.com chengzivr.com chenhe.cc chenhe.me chenhr.com chenhuangxun.com chenhui.org chenjia.me chenjiehua.me chenjinghealth.com chenjt.com chenkeiot.com chenksoft.com chenlb.com chenlianfu.com chenliangroup.com chenlinux.com chenlinzuwu.com chenlong.com chenmingpaper.com chenmomo.com chennianyoupin.com chenpe.com chenplus.com chenpon.com chenpot.com chenroot.com chenruixuan.com chenruo.net chens.life chenshipin.com chensuyang.com chenva.com chenwenwl.com chenxiao.cc chenxin99.com chenxinghb.com chenxingweb.com chenxisoft.com chenxm.cc chenxuehu.com chenxuhou.com chenxunyun.com cheny.org chenyang.com chenyanghg.com chenyea.com chenyifaer67373.com chenyistyle.com chenyongqi.com chenyou123.com chenyu.me chenyudong.com chenyuemz.com chenyuwulian.com chenyuxia.com chenyyds.com chenzao.com chenzhicheng.com chenzhongkj.com chenzhongtech.com cheonhyeong.com cheoo.com cheoz.com cherentec.com cheriexsky.love cherry-ai.com chervonauto.com chervongroup.com cheryholding.com cheryjaguarlandrover.com cherylalopes.com cherymanuals.com cheshenghuo.com cheshi-img.com cheshi.com cheshi111.com cheshi18.com cheshijie.com cheshipin.com cheshirex.com cheshizh.com chesicc.com chesicc.net chesir.com chesir.net chesono.com chessease.net chestercharles.com chesthospital.com chesudi.com chetiansi.com chetodeng.com chetuanwang.net chetuobang.com chetx.com chetxia.com chetxt.com chevip.com chevlen.com cheweiguanjia.com chewen.com chewulin.com chexian9.com chexiancha.com chexiang.com chexiaoliang.net chexinmeng.com chexiu.com chextx.com chexun.com chexun.net cheyaoshi.com cheyian.com cheyipai.com cheyishang.com cheyisou.com cheyou123.com cheyuan.com cheyun.com cheyuu.com chezhanri.com chezhibao.com chezhubidu.com chezhutech.com chezhuzhinan.com chezizhu.com chezvi.com chfsmartad.com chgcw.com chghouse.org chgi.net chgie.com chglmp.com chgreenway.com chgry.com chgzfls.com chhqtest.com chhua.com chhuc.org chhw.com chhzm.com chi2ko.com chi588.com chi86.com chianbaohan.com chibanting.com chichuang.com chickfrp.com chiconysquare.com chicopharm.com chida.org chidafeiji.com chidaolian.com chidaoni.com chidaoni.net chidaotv.com chidd.net chidowl.com chidudata.com chidutech.com chiefmore.com chiefpharma.com chieftin.org chietom.com chihao.com chihe.so chihealbio.com chiheba.com chiheshan.com chihkao.com chihm.com chiji-h5.com chiji.app childjia.com childlib.org childrentheatre.org chileaf.com chili3d.com chillyroom.com chilwee.com chimboon.com chimbusco.com chimelong.com chimezi.com chimoph.com chin-fine.com china-10.com china-3.com china-315.com china-ah.com china-anhe.com china-applefix.com china-asahi.com china-aseanbis.com china-audit.com china-autotech.com china-b.com china-baiyun.com china-bdh.com china-bee.com china-bestmind.com china-bicycle.com china-biding.com china-bluestar.com china-bme.com china-borun.com china-boy.org china-boya.com china-caa.org china-caihua.com china-cale.com china-capsule.com china-cas.org china-cba.net china-cbn.com china-cbs.com china-ccc.org china-ccie.com china-ccii.com china-ccw.com china-cdig.com china-cdt.com china-ceco.com china-ced.com china-ceec-cooperation.com china-cet.com china-cfa.org china-chair.com china-channel.com china-chca.org china-chigo.com china-cicc.org china-citytour.com china-clearing.com china-cloud.com china-cmca.org china-cmd.org china-cnic.com china-co.com china-coc.org china-consulate.org china-core.com china-cotton.org china-cpu.co china-cpu.com china-cri.com china-csm.org china-cssc.org china-denox.com china-designer.com china-dingjie.com china-drama.com china-drm.net china-dt.com china-dtv.com china-eaea.com china-ecee.com china-eia.com china-embassy.org china-engine.net china-entercom.com china-enterprise.com china-epa.com china-erzhong.com china-fangyuan.com china-fei.com china-feininger.com china-fire.com china-fishery.com china-flash.com china-flower.com china-futian.com china-g.com china-galaxy-inv.com china-gehang.com china-genius.com china-gg.com china-giant.com china-gnd.com china-goffen.com china-gold.com china-goldcard.com china-greenfund.com china-greenlighting.com china-gwy.com china-hechang.com china-hengyuan.com china-hhsj.com china-highway.com china-holiday.com china-hongfei.com china-house.com china-hp.com china-hrg.com china-htdl.com china-huamin.com china-huazhou.com china-hulong.com china-hushan.com china-hxzb.com china-hzd.com china-iace.com china-ida.com china-inse.com china-invests.net china-ipif.com china-isotope.com china-j.com china-jianan.com china-jinlong.com china-jit.com china-jlt.com china-jm.org china-jxcf.com china-kaidiwt.com china-kaihua.com china-kaoshi.com china-key.com china-khgroup.com china-kids-expo.com china-kids-fair.com china-kingmold.com china-knobs.com china-lantu.com china-latv.com china-lawoffice.com china-led.net china-light-guides.com china-lithium.com china-liye.com china-logistics.com china-longgong.com china-lottery.net china-lsh.com china-m2m.com china-mcc.com china-mile.com china-moutai.com china-mt.org china-mx.net china-nengyuan.com china-nlp.com china-nns.com china-norbin.com china-npa.org china-nsftz.com china-obgyn.net china-office-solutions.com china-orientgroup.com china-oulu.com china-pa.org china-packcon.com china-payments.com china-pcba.com china-pengye.com china-pharmacy.com china-pinyuan.com china-planet.com china-pub.com china-qiao.com china-qjbz.org china-radiology.com china-re.net china-refrigerants.com china-ric.com china-riscv.com china-russia.org china-sand.com china-sce.com china-sea.net china-season.com china-security.com china-see.com china-seeq.com china-sfc.com china-shancun.com china-shimo.com china-shjyx.com china-shufan.com china-shugaung.net china-sites.com china-slate.com china-smartech.com china-sorsa.org china-soyea.com china-spirulina.net china-springs.com china-sss.com china-stainless.com china-sunshine.com china-sz.com china-thk.com china-tin.com china-tisense.com china-tje.com china-tongyu.com china-topplus.com china-tops.com china-tower.com china-toy-expo.com china-train.net china-tsac.com china-uju.com china-up.com china-valve.com china-vcom.com china-vision.org china-vn.com china-vo.org china-wanlin.com china-warping.com china-waste.com china-weldnet.com china-whwaterexpo.com china-ws.org china-wss.com china-xb.com china-xcsy.com china-xian.com china-xiba.com china-xiuzheng.com china-xzgec.com china-xzkg.com china-yaguang.com china-yansheng.com china-yd.com china-yiang.com china-yida.com china-yinda.com china-yintai.com china-yongfeng.com china-yt-expo.com china-yuanfang.com china-yuli.com china-yxt.com china-zbycg.com china-zeiss.com china-zhongda.net china-zikao.com china-zjj.net china-zrg.com china-zysj.com china.com china.mintel.com china000799.com china001.com china12345.net china12365.com china124.com china17.net china1baogao.com china1f.com china2000.org china3-15.com china30s.com china35.com china356.com china3gpp.com china4a.org china5e.com china60.com china6688.com china724.com china777.org china918.org china95.com china95.net china95.xyz china9y.com chinaab.com chinaacc.com chinaacme.net chinaacryl.com chinaadec.com chinaadren.com chinaadvance.com chinaaeri.com chinaaet.com chinaagrisci.com chinaags.net chinaagv.com chinaahth.com chinaairer.com chinaamc.com chinaant.com chinaant.net chinaapper.com chinaarabcf.org chinaaris.com chinaartificialstone.com chinaasaservice.com chinaasc.org chinaaseanenv.org chinaaseanfertilizer.com chinaasic.com chinaath.com chinaautoms.com chinaautoregs.com chinaautosupplier.com chinaave.org chinaaviationdaily.com chinab4c.com chinababy365.com chinabac.com chinabaike.com chinabaiker.com chinabancai.com chinabaoan.com chinabaogao.com chinabashan.com chinabattery.org chinabbtravel.com chinabdh.com chinabeego.com chinabeer.net chinabencaogangmu.com chinabenson.com chinabesteasy.com chinabeston.com chinabeverage.org chinabgao.com chinabge.com chinabid315.com chinabidding.cc chinabidding.com chinabiddingzb.com chinabigdata.com chinabigwin.com chinabike.net chinabim.com chinabird.org chinablackcat.com chinablowers.com chinabmi.com chinabn.org chinabooktrading.com chinaboyun.com chinabreed.com chinabrightstone.com chinabsb.com chinabuildingcentre.com chinabulk.com chinabus.info chinabuses.com chinabuy1002.com chinabxwx.com chinabym.com chinabyte.com chinabzp.com chinac.com chinac3.com chinacable.com chinacace.org chinacache.com chinacache.net chinacacm.org chinacaj.net chinacamel.com chinacapac.com chinacapg.com chinacarbide.com chinacars.com chinacasa.org chinacatel.com chinacba.org chinaccia.com chinaccm.com chinaccsi.com chinacct.org chinacdc.com chinacdnb2b.com chinacelacforum.org chinacenn.com chinacentrifuge.com chinaceot.com chinaceotv.com chinacfa.com chinacfi.net chinacfo.net chinacft.org chinacge.com chinachangbo.com chinachangfang.com chinachant.com chinachaoyang.com chinacharityfederation.org chinachemnet.com chinachild.org chinachina.net chinachugui.com chinachuntian.com chinaciaf.org chinacib.com chinacid.org chinacie.org chinacil.com chinacir.com chinacity.net chinacitywater.org chinacld.com chinaclean.org chinacleanexpo.com chinacljt.com chinacma.org chinacmo.com chinacoal.com chinacoatingnet.com chinacoffee.vip chinacomix.com chinaconch.com chinacondiment.com chinaconsulatesf.org chinaconsun.com chinaconveyor.com chinacordblood.org chinacosco.com chinacourt.org chinacpda.com chinacpda.org chinacqme.com chinacqpgx.com chinacqsb.com chinacraa.org chinacrane.net chinacrankshaft.com chinacreator.com chinacrops.org chinacrosspoint.com chinacrt.com chinacses.org chinacsf.com chinacsky.com chinactv.com chinaculture.org chinacustomsdata.com chinacxjs.org chinacyx.com chinadachi.com chinadafen.com chinadafeng.com chinadaily.net chinadailyglobal.com chinadais.net chinadaja.com chinadance.com chinadart.com chinadas.net chinadatapay.com chinadatatrading.com chinadbs.com chinaddn.com chinaddos.com chinadds.net chinadentalshow.com chinadep.com chinadewei.com chinadforce.com chinadianji.com chinadianming.com chinadidao.com chinadipl.com chinadjba.com chinadkec.com chinadmoz.org chinadns.com chinadns.org chinadongchu.com chinadougong.com chinadra.com chinadrtv.com chinadrum.net chinadsl.net chinaduo.com chinadyt.com chinadz.com chinadzfp.com chinadzyl.com chinae.net chinaeastlaw.com chinaebizal.com chinaebr.com chinaecnet.com chinaeda.org chinaedu.com chinaedu.net chinaedunet.com chinaedunewsw.com chinaefu.net chinaega.com chinaehs.net chinaeia.org chinaeinet.com chinaeinv.com chinaejiao.com chinaembassy.at chinaepoxy.com chinaepu.com chinaequity.net chinaerdos.com chinaerospace.com chinaesf.net chinaeshare.com chinaesm.com chinaet.net chinaev100.com chinaeve.com chinaexam.org chinaexpo365.com chinaexpressair.com chinafa.org chinafangxing.com chinafarad.com chinafarming.com chinafashionbao.com chinafasten.com chinafastpcb.com chinafbdq.com chinafcx.com chinafeiting.com chinafert-gov.com chinaffmpeg.com chinafga.org chinafiber.com chinafic.org chinafilm.com chinafilmhy.com chinafilms.net chinafinancenet.com chinafinanceonline.com chinafininfo.com chinafishtv.com chinafix.com chinaflashmarket.com chinaflier.com chinafolklore.org chinafoma.com chinafoodj.com chinafoodsltd.com chinaforklift.com chinafpd.net chinafph.com chinafpma.org chinafranchiseexpo.com chinafruitime.com chinafsl.com chinaftat.org chinafuda.com chinafudaoban.com chinafumao.com chinafxd.com chinafxkj.com chinag.pro chinagames.net chinagayles.com chinagb.net chinagb.org chinagba.com chinagcl.com chinagdda.com chinagdn.com chinaghwl.com chinagiftsfair.com chinaglassnet.com chinagoldcoin.net chinagoldgroup.com chinagongcheng.com chinagoods.com chinagosun.com chinagp.net chinagpay.com chinagps.cc chinagrandauto.com chinagrandinc.com chinagrazia.com chinagreenbio.com chinagreentown.com chinagrid.net chinagrowthcapital.com chinagslb.com chinagslb.net chinagsrc.com chinagungho.org chinaguohuan.com chinaguyao.com chinagwy.com chinagwy.net chinagwy.org chinagwyw.org chinagzn.com chinahacker.com chinahaixun.com chinaham.com chinahanang.com chinahao.com chinahaochuan.com chinaharp.com chinahazelnut.com chinahbj.com chinahbjob.com chinahengying.com chinahho.com chinahhxh.com chinahighnew.com chinahightech.com chinahighto.com chinahighway.com chinahiron.com chinahiron.ltd chinahiyou.com chinahj.club chinahkidc.net chinahky.com chinahnjs.com chinahongdu.net chinahonghui.net chinahongying.com chinahorologe.com chinahorse.org chinahosesupply.com chinahotelgz.com chinahpa.org chinahqjjw.com chinahr.com chinahrd.net chinahrt.com chinahsdp.com chinahte.com chinahtz.com chinahualai.com chinahuashan.com chinahuaxicun.com chinahuaxue.com chinahuben.com chinahudong.com chinahugong.com chinahuizhanjie.com chinahumo.com chinahvacr.com chinahw.net chinahylq.com chinahyyj.com chinahzkj.com chinaiat.com chinaiatb.org chinaidcnet.com chinaidcnet.net chinaido.com chinaidr.com chinaief.net chinaielts.org chinaiern.com chinaiia.org chinaiiss.org chinainfoseek.com chinainout.com chinainsbrokers.com chinaiol.com chinaiprlaw.com chinairn.com chinairport.net chinait.vip chinaitcapital.com chinaitlab.com chinaiut.com chinajan.com chinajcz.com chinajeweler.com chinajfj.com chinajienuo.com chinajierda.com chinajinguo.com chinajinlong.com chinajinsheng.com chinajinzhan.com chinajinzhou.com chinajiuquan.com chinajj.org chinajjz.com chinajnhb.com chinajoiner.net chinajorson.net chinajoy.net chinajs120.com chinajsc.com chinajsjmxh.com chinajsxx.com chinajungong.com chinajuva.com chinajyhj.com chinajyjxh.com chinajyxdh.com chinajyy.net chinajzqc.com chinakab.com chinakangping.com chinakangyue.com chinakaoyan.com chinakeon.com chinakewei.com chinakidville.com chinakiln.net chinakingho.com chinakingland.com chinakingo.com chinakinzo.com chinaklb.com chinakong.com chinakongzi.org chinakqn.com chinakshx.com chinaksi.com chinakuangshi.com chinakyzl.com chinalabexpo.com chinalabs.com chinalahigh.com chinalancoo.com chinalandpress.com chinalanhua.com chinalao.com chinalaobao.com chinalawbook.com chinalawedu.com chinalawinfo.com chinalawyer.co chinalawyeryn.com chinaleather.com chinaleather.org chinaledger.com chinalep.org chinalibs.net chinalicensing.org chinalicensingexpo.com chinalifang.com chinalims.net chinalingshan.com chinalink.tv chinalions.com chinaliriver.com chinalive.com chinaliyou.com chinalm.org chinalonghu.com chinalowcarb.com chinalpharm.com chinalsjt.com chinalubricant.com chinalulutong.com chinalure.com chinalushan.com chinaluxury.net chinalww.com chinalxnet.com chinamadas.com chinamae.com chinamags.org chinamani.com chinamaohong.com chinamap.com chinamaven.com chinambn.com chinamca.com chinamcache.com chinamcloud.com chinamea.org chinameat.net chinamedicinej.com chinamendu.com chinamenwang.com chinamerger.com chinametro.net chinameyer.com chinamie.org chinamingyan.net chinamining.com chinamission.be chinamissun.com chinamobile.com chinamobiledevice.com chinamost.net chinamotian.com chinamsa.org chinamssp.com chinamule.com chinamuscle.org chinamusical.net chinamworld.com chinamypp.com chinananda.com chinananyang.com chinanbb.com chinanet-sh.com chinanet.cc chinanet88.com chinanetcenter.com chinanetidc.com chinanetsun-dns.com chinanetsun.com chinanev.net chinaneweast.com chinanewera.com chinanewkey.com chinanews.com chinanim.com chinaningbo.com chinanmi.com chinanrb.com chinanums.com chinanwa.com chinaobp.com chinaoceanwide.com chinaoct.com chinaoly.com chinaomp.com chinaonebuild.com chinaonstreetparking.com chinaonward.net chinaopc.org chinaopen.com chinaopticsvalley.com chinaore.com chinaorff.com chinaorff.org chinaorganicchem.com chinaorientgroup.com chinaott.com chinaott.net chinapag.com chinapandi.com chinapanocean.com chinapantheum.com chinapantom.com chinapaper.net chinaparking.org chinapastel.com chinapay.com chinapayhongkong.com chinapbw.com chinapcd.com chinape168.com chinapearlk.com chinapeier.com chinapelletizer.com chinapeople.com chinapet.com chinapet.net chinapharm.net chinaphp.com chinaphper.com chinapilotage.org chinapipe.net chinapiston.com chinaplasonline.com chinaplat.com chinapm.org chinapnr.com chinaportrait.org chinaports.com chinapost-life.com chinapoto.com chinapower.org chinapowerbi.com chinapp.com chinapp.net chinapsy.com chinapubmed.net chinapuleather.com chinapusirui.com chinapv.org chinaqcb.com chinaqfc.com chinaqi.net chinaqigong.com chinaqikan.com chinaqingtian.com chinaqipeihui.com chinaqjydxh.com chinaql.org chinaqoe.net chinaquickpcb.com chinaqunsheng.com chinaqw.com chinaray-oled.com chinarayying.com chinarca.com chinardr.com chinardr.net chinaredstar.com chinaredsun.com chinareform.net chinaren.com chinarenzhi.com chinaresin.com chinarespiratory.org chinarjw.com chinarta.com chinartlaw.com chinaruiji.com chinarun.com chinarunau.com chinarzfh.com chinasaat.com chinasalestore.com chinasanbai.com chinasanc.com chinasantian.com chinasareview.com chinasatcom.com chinasbm-eet.com chinasbm.com chinasciencejournal.com chinascope.com chinascopefinancial.com chinascpjy.com chinascrap.com chinascsoft.com chinasecuritization.org chinaseed114.com chinasexq.com chinasg.com chinashadt.com chinashenglu.com chinashengmao.com chinashj.com chinashop.cc chinashpp.com chinashunyi.com chinasia.org chinasie.com chinasigma.com chinasiia.com chinasilk.com chinasilkmuseum.com chinasilver.hk chinasinew.com chinasinging.com chinasiwei.com chinaslc.com chinasmartpay.com chinasmcc.com chinasmp.com chinasnow.net chinasnto.com chinasnw.com chinaso.com chinasoftbank.com chinasofti.com chinasoftinc.com chinasoftosg.com chinasooa.com chinasoushang.com chinaspringtown.com chinasrg.com chinasrif.com chinassbc.com chinassl.com chinassl.net chinasspp.com chinastarlogistics.com chinastationeryfair.com chinasti.com chinastoneforest.com chinasufa.com chinasunglow.com chinasuntree.com chinasupercloud.com chinasuperwool.com chinaswa.org chinaswim.com chinaswimmer.com chinasws.com chinasydw.org chinaszma.com chinataa.org chinatai.com chinatairun.com chinataitan.com chinataiwan.org chinatalent.org chinatalentgroup.com chinatat.com chinatechie.com chinatechie.net chinatechinsights.com chinatelecom.com.hk chinatelecom.com.mo chinatelecomglobal.com chinatelecomhk.com chinatelecomiot.com chinatelling.com chinatet.com chinatex.com chinatex.net chinatex.org chinatg.com chinathinksbig.com chinatianyin.com chinatibetnews.com chinaticket.com chinatikfans.com chinatimber.org chinatimes.cc chinatiner.com chinatiredealer.com chinatla.com chinatle.com chinatlzm.com chinatmco.com chinatongjia.com chinatopbrands.net chinatoplon.com chinatourguide.com chinatpm.com chinatpm.net chinatrace.org chinatranslation.net chinatravel.net chinatravelacademy.com chinatraveldepot.com chinatruck.org chinatrucks.com chinatsi.com chinatsp.com chinatt.com chinattas.com chinattl.com chinatungsten.com chinatupai.com chinatv-net.com chinatyco.com chinatypical.com chinau.cc chinaufo.com chinaui.com chinauidesign.com chinauma.com chinauma.net chinaums.com chinaun.net chinaunicom-a.com chinaunicom.com chinaunionpay.com chinaunionpay.net chinauniversalasset.com chinaunix.com chinaunix.net chinaunix.org chinauo.com chinauos.com chinauos.net chinaups.com chinaus.com chinauwei.com chinava.net chinavalin.com chinavas.com chinavcpe.com chinavfx.net chinavid.com chinavideo.org chinavideos.net chinaviewstone.com chinaviolin.net chinavipsoft.com chinavisual.com chinavivers.com chinaviwon.com chinavr.net chinawanbang.com chinawanda.com chinawanlitrans.com chinawatchnet.com chinawaterexpo.com chinawatertech.com chinawch.com chinawebber.com chinawebmap.com chinaweiyu.com chinaweizheng.com chinawepon.com chinawerewolf.com chinawie.com chinawindnews.com chinawinjoy.com chinawiserv.com chinawitmedia.com chinawr.net chinaws.net chinawssdxh.com chinawudang.com chinawulong.com chinawutong.com chinawutong.net chinawuyuan.com chinawxfoundry.com chinaxiaokang.com chinaxidian.com chinaxinge.com chinaxingye.com chinaxinhuaair.com chinaxinport.com chinaxintu.com chinaxinzhi.com chinaxiuqi.com chinaxiv.com chinaxiv.net chinaxiv.org chinaxpp.com chinaxq.com chinaxqf.com chinaxuchuan.com chinaxuehang.com chinaxueqian.com chinaxwcb.com chinaxy.com chinaxzrc.com chinayacht.org chinayadea.com chinayanghe.com chinayanming.com chinayaojiang.com chinayarn.com chinaybx.com chinaygj.com chinayigui.com chinayikangyaoye.com chinayinyi.com chinayis.com chinayishuhua.com chinaymc.com chinayms.com chinayongfa.com chinayoubang.com chinayounao.com chinayouthpower.org chinays.com chinayuanwang.com chinayucai.com chinayulin.com chinayunlang.com chinayuns.com chinayuqiu.com chinayyhg.com chinayyjx.com chinaz.com chinaz.net chinazbd.com chinazbj.com chinazh.net chinazhaoye.com chinazhifu.com chinazhijiang.com chinazhz.com chinazikao.com chinazipper.org chinazjgc.com chinazjph.com chinazjy.com chinazkjc.com chinazmhb.com chinazmob.com chinaznj.com chinazns.com chinaznyj.com chinazov.com chinazsgroup.com chinaztg.com chinazwds.com chinazxjc.com chinazxt.com chinazy.org chinca.org chindices.com chine-info.com chinee.com chinemiss.com chinese-no1.com chinese315.org chineseacc.com chineseafs.org chineseall.com chinesechip.com chinesecio.com chineseconsulate.org chineseembassy.org chinesehongker.com chinesejk.com chineselaw.com chineselighting.org chinesemale.com chinesemedical.net chinesemeter.com chinesemooc.org chinesemoocs.org chinesepaper-cut.com chineserose.com chinesetown.net chingan.com chingkun.com chingli.com chingmi.com chinjpd.com chinlingo.com chinrt.com chinsc.com chint.com chint.net chintanneng.com chintautomation.com chintautoparts.com chintcable.com chintim.com chinulture.com chip37.com chipcoo.com chipcreation.com chipdance.com chipdebug.com chipeasy.com chiphell.com chiphometek.com chiplayout.net chipmanufacturing.org chiponeic.com chipown.com chippacking.com chipsbank.com chipsec.com chipsgo.com chipsir.com chipup.com chipwing.com chipyun.com chiq-cloud.com chiralquest.com chisage.com chisai.tech chisc.net chishine3d.com chishoes.com chitic.com chitu.com chitudexiaozhi.com chitus.com chivast.com chivox.com chivoxapp.com chiway-repton.com chiwayedu.com chiwayind.com chiwigogo.com chixia.com chixm.com chixuyun.com chiyanjiasu.com chiyekeji.com chiyifen.com chiyufeng.com chizao.com chizhou.cc chizhoubus.com chizhouchacha.com chizhouhospital.com chizhoujob.com chizhouren.com chiznews.com chj-care.com chjchina.com chjgg.com chjiye.com chjso.com chjyw.org chkee.com chkschool.com chlbiz.com chlingkong.com chlmfm.com chlmiao.com chloe99.com chlxj.com chmc.cc chmecc.org chmed.net chmgames.com chmia.org chmod0777kk.com chmti.com chn-cstc.com chn-das.com chn-new-9sport.com chn0769.com chn112.com chn168.com chnart.com chnau99999.com chnbook.org chnboxing.com chnbsg.com chnchi.com chnci.com chncia.org chncomic.com chncon.com chncopper.com chncpa.org chncwds.com chndaqi.com chndeli.com chndesign.com chndoi.com chndoi.net chndoi.org chnews.net chnfi.com chnfund.com chngalaxy.com chngc.net chngsl.com chnjet.com chnlanker.com chnmed.com chnmodel.com chnmus.net chnmusic.org chnpac.com chnpec.com chnppmuseum.com chnpush.com chnqiang.com chnqifeng.com chnqsedu.com chnrailway.com chnroad.com chnso.com chnsuv.com chntel.com chnxw.com chocei.com chofei.com chofn.com chofn.net chofn.org chofnipr.com choiceform.com chomixbiotech.com chong4.net chongbuluo.com chongchi.com chongdawang.com chongdeedu.com chongdiantou.com chongdk.net chongdugou.net chonger.org chongfabianli.com chongguanglawfirm.com chongjisyj.com chongjiyashiji.com chongkongwang999.com chongmingzhuce.com chongnengjihua.com chongqingbbs.com chongqingdongjin.com chongqingrenpin.com chongqingyoupin.com chongqu.com chongso.com chongsoft.com chongwenwen.com chongwu.cc chongwudian.com chongwujiaoyi.com chongwunet.com chongya.vip chongyejia.com chongyike.com chongyitang.org chongyunpowu.com chongzhi.com chongzuo.club chonka.com chontdoled.com chonton.com choosepickhere.com choositon.com chooway.com chopetto.com chosign.com choubag.com chouchoujiang.com chouchoumao.com choujue.net choukang.com choupangxia.com chouqu.com chouti.com choututech.com chowtaiseng.com chplayer.com chq360.com chrent.com chrice.net chrieschina.com christophero.xyz chrmn.com chroad.com chrome64.com chrome666.com chromecj.com chromedownloads.net chromefor.com chromegw.com chromeliulanqi.com chromezj.com chronusartcenter.org chrstatic.com chs.pub chs5e.com chsbs.com chsdl.com chsdpharma.com chsgw.com chshcms.com chshcms.net chshsaas.com chsmarttv.com chsndt.org chspra.com chspv.com chste.com chszzy.com chtcmotor.com chtf.com chtfund.com chtgc.com chtjf.com chtmxp.com chtpe.com chtwm.com chu-ying.com chu0.com chu110.com chu21.com chu58.com chuairan.com chuaizhe.com chualamdimsum.com chuan-s.com chuanbojiang.com chuanboyi.com chuandaizc.com chuandasolar.com chuandong.com chuang-fan.com chuang-pin.com chuangansou.com chuangcache.com chuangcdn.com chuangchangnet.com chuangchenwangluo.com chuangcifang.com chuangdaxx.com chuangduyouyue.com chuangen.com chuangfeixin.com chuanggallery.com chuanghe.net chuanghui-cn.com chuangjiangx.com chuangjie.com chuangjing.com chuangkem.com chuangkeup.com chuangkit.com chuanglan.com chuangli.net chuanglian.net chuanglinggame.com chuangliukeji.com chuangluo.com chuangmaoshanghai.com chuangmei8.com chuangongsi.com chuangseo.com chuangshiwl.com chuangshiyuli.com chuangtie.com chuangtoo.com chuangx.org chuangxin.com chuangxinapi.com chuangxinbateng.com chuangxinoa.com chuangxuan.xyz chuangyebaba.com chuangyehai.com chuangyejia.com chuangyetv.com chuangyijisu.com chuangyimao.com chuangyiqifu.com chuangyisai.com chuangyiwh.com chuangyouqi.com chuangyuan.ltd chuangyuejoy.com chuangzaoshi.com chuangzuoniu.com chuanhai.net chuanhuan.com chuanjiaoban.com chuanke.com chuanloo.com chuanmeixing.com chuannan.net chuanpuyun.com chuanqi.com chuanqiart.com chuanqibbs.com chuanshanjia.work chuanshanqundao.com chuansong.me chuansongme.com chuantangjitrade.com chuantec.com chuantiegroup.com chuantu88.com chuanxincao.net chuanye.com chuanyejinxuan.xyz chuanyifu.com chuanyinet.com chuanying365.com chuanying520.com chuanyuanbang.com chuanyuapp.com chuanzhen.com chuapp.com chuasu.com chuban.cc chubanyun.me chubaohui.com chucheng.wiki chuchujie.com chuchur.com chufaba.me chufw.com chuge8.com chugou360.com chuguo.tech chuguo78.com chuguohao.com chuguoqu.com chuhai.group chuhaige.com chuhailiqi.com chuimg.com chuinet.com chuisax.com chuishen.xyz chuixue.com chuiyue.com chuizi.net chujian.xyz chujing-electric.com chujingapp.com chujuan.net chujunkeji.com chukong-inc.com chukonggame.com chukou1.com chukouplus.com chuleg.com chumenwenwen.com chun-wang.com chun-xiang.com chundi.com chundi.org chunengauto.com chunfengapp.com chunfengxing.com chungkwong.cc chunhaijx.com chunhingplasticbags.com chunhuinongye.com chunjiangvalve.com chunjingban.net chunlan.com chunliangpai.com chunliao.net chunloo.com chunmen.com chunmi.com chunqiuhong.com chunsheng.com chunshuitang.com chunshuizhijia.com chunsuns.com chuntaoyisheng.com chuntsuan.com chunxing-group.com chunxuanmao.com chunxudianqi.com chunyiscdk.com chunyu.me chunyu.mobi chunyuqiufeng.com chunyuyisheng.com chunzuo.com chuoemg.work chuolitech.com chuquan.me churenjixie.com churuisy.com chusan.com chusenscm.com chuseo.com chushan.com chushang027.com chushi.cool chushihome.com chushiji.com chushixiu.com chushou.tv chushu.org chushu123.com chutianlaser.com chutianzhinu.com chuxindata.com chuxingpay.com chuxingyouhui.com chuxinhd.com chuxinhudong.com chuxinvip.com chuxueyun.com chuyaer.com chuyigao.com chuyu.me chuzhaobiao.com chvacuum.com chvoice.com chw818.com chwang.com chwedu.com chwlsq.com chxchips.com chxent.com chxin-oil.com chxq.org chxyl.com chxyq.com chyitech.com chysoft.net chyw.pub chyxx.com chyyyygl.com chz.cc chzhkeji.com chzhsw.com chzhw.com chzpw.com chzsks.com chzwater.com chzybj.com ci-cn.com ci-du.com ci-ele.com ci-xing.com ci123.com ci800.com ciaie.com cialisrxmsn.com ciallo.cc ciaoca.com ciapst.org cibaike.com cibawl.com cibfintech.com cibia.org cibn.cc cibn.com cibnlive.com cibnott.net cibntv.net cibnvst.com ciboedu.org cibonet.com cibresearch.com cibuser.com cic-js.com cicadayun.com cicaf.com cicba.net cicc.com ciccfund.com cicconline.com ciccphoto.com ciccwargame.com ciccwm.com ciceme.com cicfexpo.com cicg.tech ciciec.com cicihappy.com cicmag.com cicnn.com cicoe.net cicphoto.com cict.com cidf.net cidi.ai cidianbao.com cidiancn.com cidianso.com ciding.cc cidschina.com ciduw.com cie-lgr.com cieaast.com ciec-expo.com ciec.com ciect.com ciecte.com ciecworld.com ciedata.com cieet.com ciepe.com cietac-hb.org cietac-sc.org cietac.org ciezn.com cifa-china.com cifalshanghai.org cifco.net ciff-gz.com cifm.com cifnews.com cifoo.com ciftis.org cig-cq.com cigadesign.com cigarambassador.com cigh.com cignacmb-ipmi.com cignacmb.com cignacmbamc.com cignacmbuser.com cigtech.com ciguang.com cih-index.com cihai123.com cihexpo.com cihua.net ciiccq.com ciicgat.com ciichr.com ciicjs.com ciicsh.com ciidoo.com ciie.org ciif-expo.com ciiplat.com cijiasu.com cijiyun.com cikelink.com cilgroup.org ciliba.life cilin.org cilishenqi.cc cilogo.com cim2025.net cimamotor.com cimc-tianda.com cimc.com cimccity.com cimcdlem.com cimcjm.com cimclogistics.com cimcreefertrailer.com cimcvehiclesgroup.com cimen.club cimic.com cimicgroup.com cimictiles.com ciming-bj.com ciming-sh.com ciming.com cimingaoya.com cimingbj.com cimingsy.com cimsic.com cimtshow.com cinacom.net cinasoft.com cindaflc.com cindasc.com cindasoft.com cinehello.com cineplexsn.com cingta.com ciniao.me cinic.com cinsee.com cinsos.com cio114.com cio360.net cioage.com cioln.help ciomp-cggc.com ciopharma.com ciotimes.com ciotour.com ciou.com cioxom-top.com cip.cc cipgtrans.com cipherupcloud.com ciplawyer.com cippe.net ciprun.com cipscom.com cipukj.com cipunited.com circday.com circleharmonyhealth.com circlelog.com circuitboardchips.com cirmall.com cirrowings.com cirs-ck.com cirs-group.com cirs-reach.com cirscn.com cisbeijing.com cisdish.com cisgz.com cisia.org cismef.com cisskwt.com cistds.org cistsports.com cisuntech.com cit168.com citahub.com citaq.com citeaexample.com citegalleries.com citexpo.org citgc.com citiais.com citic citic-wealth.com citic.com citicbank.com citicbankuser.com citiccard.com citicdameng.com citicenvirotech.com citicfunds.com citicguoanbn.com citichmc.com citicleasing.com citicnetworks.com citics.com citicsf.com citicsinfo.com citicsteel.com citie-gd.com citiraise.com citisa.org citiz.net citizenmech.com citreport.com cits-jl.com cits-sz.net citsbj.com citscq.com citscsc.com citsgbt.com citsgs.com citsguilin.com citshq.com citsp.net citsqd.net citssh.com citswx.com citsxa.com citsyn.com citszz.com citvc.com city12580.com city199.com city8.com city8090.com citybrain.com citygf.com cityhui.com cityhuitech.com citylinker.com cityoncenter.com cityos.com citypaly.com citys114.com citysbs.com citysz.net citytogo.com cityup.org citywy.com ciunofor.com civicswarm.com civigas.com civilizec.com civilness.com civiw.com ciweek.com ciweekforum.com ciweekly.com ciwei.net ciweimao.com ciweishixi.com ciweiyuedui.com ciwong.com ciwong.net ciwork.net cixcomputing.com cixibank.com cixiedu.net cixtech.com cixuanfuw.com ciyagroup.com ciyew.com ciyitech.com ciyocon.com ciyoga.org ciyuan.men ciyuanji.com ciyuans.com ciyun.link ciyynodegroup.cyou cizip.com cj0515.com cj120.com cj5bs.com cj5bs.net cj8.ren cjaljs.com cjasen.com cjavapy.com cjbeng.com cjbjedu.com cjbxt.com cjccb.com cjchina.net cjcn.com cjdcw.com cjdg.com cjdropshipping.com cjdsp.com cjeduw.com cjftb.com cjhospital.com cjhxfund.com cjhydrogen.com cjia.com cjiahome.com cjienc.com cjiit.com cjitri.com cjj365.cc cjjd01.com cjjd02.com cjjd03.com cjjd04.com cjjd05.com cjjd06.com cjjd07.com cjjd08.com cjjd09.com cjjd10.com cjjd11.com cjjd12.com cjjd13.com cjjd14.com cjjd15.com cjjd16.com cjjd17.com cjjd18.com cjjd19.com cjjd20.com cjjhb.com cjjhk.com cjjjs.com cjjnff.com cjk3d.net cjkhd.com cjkihgroup.com cjkjks.com cjkt.com cjkz.com cjlap.com cjlulu.com cjm.so cjmakeding.com cjmit.com cjmkt.com cjmr.org cjmx.com cjmxhedu.com cjn.com cjnas.com cjnis.com cjol.com cjrcsc.com cjs-lwh.love cjsc.com cjsgegs.com cjshipin.net cjsic.com cjslcg.com cjspd.com cjsy.net cjsyedu.com cjtl.com cjtmsp.com cjtouzi.com cjveg.com cjwcjyy.com cjwlb.com cjww.com cjx2.com cjxqjt.com cjxz.com cjycode.com cjys.net cjyun.org cjyy6789.com cjyyw.com cjzcb.com cjzcgl.com cjzsy.com cjzww.com cjzx.net cjzzc.com ck-coinmcap.lol ck0771.com ck100.com ck180.net ck586.com ck830.com ck921.com ckair.com ckan.tv ckbv165.org ckd-mbd.com ckd.im ckd.so ckd8.com ckdzb.com ckefu.com ckernel.org ckeyan17.com ckeyan17.net ckeyedu.com ckfxx.com ckhdvt.com ckia.org ckimg.com ckj100.com ckj1000.com ckjr001.com ckjryy.com ckpharm.com ckplayer.com ckqjyjq.xyz cksct.com cksic.com cksschool.com cksx.org cktshare.com ckuai.com ckw205.com ckxx.net ckzcc.com ckzhaoyaojing.com ckzhijiaedu.com cl-acg.com cl-kongtiao.com cl-power.com cl0438.com cl0579.com cl2.apple.com.edgekey.net.globalredir.akadns.net cl2009.com cl868.com clady.cc claiks.com clam-itc.com clamc.com clamptek.com clangcn.com clangtx.com clanzx.net clapreptile.com claritywallpaper.com classa-z.com classcms.com classic023.com classinpaas.com classmateer.com classpassincn.com classpod.com classpodcdn.com claviercn.com clawchat.com clawhub-mirror.com clay-wangzhi.com clayidols.com clb6.net clboss.com clbu.club clbug.com clbz666.com clcgq.com clcindex.com clclibrary.com clcoolyun.com clcs.cc clcwwyj.com clcz.com cldfsv.com cldisk.com clean-cn.com cleandfd.com cleanupsys.com clear-sz.com clear888.com clearaki.com clearcrane.com cleargrass.com clearmediatech.com clearofchina.com clearsky360.com cleartone.club clevercn.net cleveroom.com clewm.net clfcgc.com clfdked.icu clfile.com clfzsn.com clgcxs.com clgslc.com clhimalayanxx.com clhqcyx.com cli.im clianjie.com clickfuntech.com clicksdiy.com clicksun.net clickwifi.net clidone.com client51.com clifford-hospital.org cliffordtrading.com cliim.com cliim.net clijc.com climedic.com clinbrain.com clivia.fun clj178.com cljport.com cljtscd.com cljtwr.com cljtzycw.com clled.com cllk.net clloz.com clmmw.com clmpg.com clngaa.com cloooud.com cloopen.com cloopen.net cloopm.com closeli.work closertb.site clothes178.com clothinggg.store clothjob.com clothr.com clotliu.com clouclip.com cloud-b2b.com cloud-beijing.com cloud-dahua.com cloud-dns.net cloud-frame.com cloud-hebi.com cloud-hub.co cloud-industry-delivery.site cloud-link.com cloud-links.net cloud-neofussvr.sslcs.cdngc.net cloud-ningbo.com cloud-ordos.com cloud-rtc.com cloud-rtc.net cloud-scdn-ns.net cloud-scdn-ns.tech cloud-scdn.com cloud-shenzhen.com cloud-shiyan.com cloud-sun.com cloud-wuhan.com cloud-xian.com cloud-xm.com cloud-zhaoqing.com cloud-zhongwei.com cloud21cn.com cloud301.net cloud56.net cloud887325.com clouda.com cloudacc1.com cloudacc1.net cloudajs.org cloudangelfunds.com cloudanqing.com cloudappl.com cloudbaoshan.com cloudbase.net cloudbeibei.com cloudbility.com cloudbinzhou.com cloudbool.com cloudcachetci.com cloudcc.com cloudcdn.net cloudcdns.com cloudcdns.net cloudcdnvip.com cloudcflare.com cloudchangde.com cloudchangsha.com cloudchangzhou.com cloudchaozhou.com cloudchengde.com cloudchengdu.com cloudchinese.com cloudchuzhou.com cloudcross.com cloudcsp.com cloudczs.com clouddalian.com clouddatong.com clouddcs.com clouddiffuse.xyz clouddig.com clouddn.com clouddongying.com clouddream.net cloudencent.com cloudflare-cn.com cloudflare.fun cloudflareanycast.net cloudflarecn.net cloudflareglobal.net cloudflareinsights-cn.com cloudflareip.com cloudflareperf.com cloudflareprod.com cloudflarestaging.com cloudflarestoragegw.com cloudfoshan.com cloudfront-cn.net cloudfuqing.com cloudganzhou.com cloudgap.net cloudgfw.com cloudgfw.net cloudgoing.com cloudguangzhou.com cloudguarding.com cloudgx.net cloudhaidong.com cloudhefei.com cloudhengshui.com cloudhin.com cloudhlo.com cloudhost.link cloudhua.com cloudhuaihua.com cloudhuizhou.com cloudhvacr.com cloudidaas.com cloudinnov.com cloudinward.com cloudiplc.com cloudjinan.com cloudjinchang.com cloudjingzhou.com cloudjining.com cloudjiujiang.com cloudkirin.com cloudkunming.com cloudleshan.com cloudlijiang.com cloudlishui.com cloudluohe.com cloudluoyang.com cloudlvs.com cloudmarket-apigw.com cloudmaster.hk cloudmeishan.com cloudmes.io cloudminds.com cloudmob.vip cloudmob.xyz cloudmountainproducts.com cloudnanan.com cloudnanjing.com cloudnanning.com cloudnantong.com cloudnapps.com cloudnet.world cloudnetb2b.com cloudouc.com cloudp.cc cloudpense.com cloudpnr.com cloudquanzhou.com cloudrmt.com cloudroom.com clouds1000.com cloudsanya.com cloudsation.com cloudsconverge.com cloudsec1.com cloudsec1.net cloudsee.com cloudsee.net cloudseeplus.com cloudseetech.com cloudserver01.com cloudses.com cloudsgis.com cloudshanghai.com cloudshaoyang.com cloudshenfuxingqu.com cloudsiping.com cloudsite.vip cloudskysec.com cloudstencent.com cloudstudio-app.net cloudstudio.club cloudstudio.net cloudstudio.run cloudstudio.work cloudsuqian.com cloudswift.cloud cloudtalkers.com cloudtangshan.com cloudtencents.com cloudtianjin.com cloudtomicro.com cloudtongchuan.com cloudtongliang.com cloudtopo.com cloudtrans.com cloudtui.com cloudv.cdnetworks.com cloudvast.com cloudvdn.com cloudvogue.com cloudvse.com cloudwalk.com cloudweinan.com cloudwise.ai cloudwise.com cloudxiangtan.com cloudxianyou.com cloudxining.com cloudxns.com cloudyanan.com cloudyancheng.com cloudyantai.com cloudyee.com cloudyinchuan.com cloudyo.net cloudyouku.com cloudytrace.com cloudytrace.org cloudyueyang.com cloudyuncheng.com cloudyuxi.com cloudzhongshan.com cloudzhuhai.com clpcdn.com clpga.org clqccy.com clqcgsgw.com clqctxc.com clqrmyy.com clroi.com cls-a.com cls-c.com cls.cc clsbhs.com clsgd.com clshanghai.com clsj.com clsshare.com clssn.com clssnews.com clsz-group.com clto.cc cltt.org club-pc.com clubcarev.com clubhy.com clubske.com cluerich.com clx360.com clxlb.com clxsbj.com clxsczx.com clyiyuan.com clz.me clzd.com clzd.fun clzqm.com clzqxp.com clzt.com clzyqche.com cm-analysis.com cm-health.com cm-inv.com cm-iov.com cm-worklink.com cm233.com cm3721.com cm442.com cmacredit.org cmaif.com cmaifz.com cmakaoj.com cmanuf.com cmastd.com cmb-leasing.com cmbajia.com cmbchina.biz cmbchina.com cmbchina.net cmbchinawm.com cmbi.com.hk cmbimg.com cmbuat.com cmbwinglungbank.com cmbwlb.com cmbyc.com cmca-view.com cmcc.in cmccb2b.com cmcconenet.com cmccsim.com cmcgd.com cmcha.org cmcink.com cmcloud.org cmclound.com cmcm.com cmcmadmin.com cmcmapp.com cmcmcdn.com cmcmcmai.com cmcmpc.com cmcmsecurity.com cmcmserv.com cmcmtrans.com cmco-cn.com cmcrcw.com cmct22.com cmctea.net cmd.tw cmd5.com cmd5.la cmd5.org cmd8.com cmda-ccs.com cmda.net cmdcxls.com cmdpe.com cmdschool.org cmdsir.com cmdw.vip cme-am.com cme-cq.com cme021.com cmea-crtc.com cmec.com cmechina.net cmedia360.com cmedns.com cmeii.com cmejob.com cmenergyshipping.com cmer-ningbo.com cmer.com cmerdi.com cmersz.com cmes.org cmf.biz cmf.ltd cmfchina.com cmfish.com cmfspay.com cmft.com cmfu.com cmfwiper.com cmgadx.com cmgame.com cmgchengdu.com cmgdb.com cmge.com cmgemooc.com cmgn.cc cmgos.com cmgrasp.com cmhello.com cmhijs.com cmhk.com cmic.site cmicapm.com cmidc.net cming.com cmiotcd.com cmiyu.com cmjz.net cmlog.com cmltzz.com cmmaap.com cmmchn.com cmmim.com cmnetech.com cmnxt.com cmo2o.com cmoc.com cmodel.com cmodes.com cmol.com cmpassport.com cmpay.com cmpe360.com cmpedu.com cmpo1914.com cmr-co.com cmread.com cmreltd.com cmri.cc cmrid.com cms1924.org cms258.com cmschina.com cmscmc.org cmseasy.cc cmsfg.com cmsjournal.net cmsk1979.com cmskchp.com cmskcrm.com cmsta.org cmstop.com cmstp.com cmswin.com cmt1993.com cmt7.com cmtauto.com cmtdi.com cmtopdr.com cmtrq.com cmtv1.com cmu1h.com cmudental.com cmugx.com cmuliang.com cmviking.com cmvtc.com cmwb.com cmwin.com cmxrcw.com cmykjx.net cmypsc.com cmys.cc cmyunerp.com cmyynet.com cmzd.com cmzi.com cmzj.net cmzyk.com cn cn-5.com cn-833.org cn-ab.com cn-aci.com cn-bldc.com cn-bowei.com cn-boxing.com cn-c114.net cn-caa.com cn-cav.com cn-cddc.com cn-cdn1.skymansion.net cn-ceramic.com cn-cg.com cn-chenguang.com cn-comfort.com cn-cr.com cn-elite.com cn-em.com cn-ferment.com cn-food.net cn-ghtube.com cn-goldeneagle.com cn-hbs.com cn-healthcare.com cn-healthclass.com cn-heipa.com cn-huaguang.com cn-huar.com cn-hw.net cn-immunotech.com cn-kanghong.com cn-lance.net cn-lcd.com cn-lingte.com cn-lq.net cn-mingda.com cn-msedge.net cn-mw.com cn-natural.com cn-only.com cn-psy.com cn-railway.net cn-rcqc.com cn-roofexpert.com cn-school.com cn-sdf.com cn-shine.com cn-soft.com cn-tf.com cn-tom.com cn-truck.com cn-unitech.com cn-vending.com cn-visa.com cn-weida.com cn-wisely.com cn-witmed.com cn-xsl.com cn-zhentai.com cn-zhongrui.com cn.bing.com cn.bing.net cn.eset.com cn.mm.bing.net cn.net cn.online.standardchartered.com cn.pool.ntp.org cn.sc.com cn.vc cn.windowssearch.com cn0-6.com cn006.com cn010w.com cn0434.com cn0577.net cn0713.com cn0851.com cn0917.com cn11185.com cn12365.org cn156.com cn168.com cn18k.com cn2030.com cn22.net cn2che.com cn2rv.com cn314.com cn357.com cn360cn.com cn365a.com cn365c.com cn365d.com cn365e.com cn3wm.com cn486.com cn49.com cn4e.com cn51.com cn5135.com cn6szx.com cn880.com cn939.com cn99.com cnaa123.com cnaaa.com cnaaa.net cnaaa6.com cnaaa7.com cnaaa8.com cnaaa9.com cnaai.com cnabc.com cnaca.org cnacg.cc cnacgc.com cnaction.com cnad.com cnaf.com cnafc.org cnagcoin.com cnaidc.com cnaifm.com cnain.online cnaio.net cnaiplus.com cnair.com cnaja.com cnal.com cnalu.com cnambition.com cname-cdn.com cname-syd.com cname123.net cname88.com cnamegslb.com cnameip.xyz cnamexingzuoy.com cnamico.com cnanzhi.com cnaomeng.com cnatom.com cnats.com cnautofinance.com cnautonews.com cnautotool.com cnb.cool cnb.run cnb.space cnbabylon.com cnball.net cnbanbao.com cnbang.net cnbaosi.com cnbaowen.net cnbct.org cnbeinuo.com cnbfjt.com cnbidding.com cnbio.net cnbiocell.com cnbis.com cnbis.org cnbizmedia.com cnbjx.com cnbksy.com cnbkw.com cnblogs.com cnblogs.vip cnblower.com cnbm-njks.com cnbmltd.com cnbmtech.com cnbmys.com cnbnl.com cnboat.com cnbonly.com cnbooking.net cnbooks.org cnbp.net cnbrass.com cnbsm.com cnbugs.com cnbuses.com cnbysc.com cnbzol.com cnbzs.com cnc-bga-oca.com cnc-gd.net cnc-school.com cnca.net cncad.net cncaifu.com cncame.com cncanghai.com cncapital.net cncapital.org cncbpc.com cncc.bingj.com cnccac.com cnccchina.com cnccdn.com cnccea.com cncdh2.com cncdn.com cncdnx.com cncdomain.com cncecci.com cncecsci.com cncecyc.com cncfans.com cncgdns.net cncgw.org cnchainnet.com cnchangyi.com cnchaowei.com cnchemmy.com cncheng.com cnchezhan.com cnchospital.com cnchu.com cncico.com cncjichuang.com cncjishu.com cncjj.com cncjmjg.com cnclead.com cncljt.com cncloud.com cncma.org cncmrn.com cncms.com cncmun.com cncn.com cncn.net cncnbd.com cncncn.com cncnet.net cncnki.com cncolour.com cncompute.com cncoolm.com cncopter.com cncosmic.com cncotton.com cncourt.org cncqcloud.com cncqcy.com cncqsw.com cncqti.com cncr-it.com cncrk.com cncrony.com cncruise.com cncrypt.com cncsen.com cncsj.net cncsparetools.com cnctg.net cnction.com cnctrip.com cncwkj.com cncxjyu.com cndailu.com cndaizi.com cndao.com cndata.com cndatacom.com cndbl.com cndc-pl.com cndcpta.com cndds.com cndelong.com cndesign.com cndesk.com cndezhong.com cndf.net cndfdt.com cndfele.com cndfilm.com cndhl.com cndhotels.com cndi-bj.com cndi.com cndids.com cndingli.com cndingxi.com cndits.com cndl.vip cndledu.com cndmaterial.com cndns.com cndns5.com cndnscn.com cndoct.com cndog.net cndongrun.com cndongxiao.com cndoornet.com cndoors.com cndqjc.com cndrealty.com cndsnet.com cndtour.com cndw.com cndy.org cndzh.com cndzq.com cndzys.com cne-motor.com cne-om.com cne.com cnean.com cnecc.com cnechc.com cnecport.com cnedulaw.net cneeex.com cnegood.com cnegov.com cnegov.org cnelc.com cnelecom.net cnelite.org cneln.net cnemb.com cnena.com cneol-dns.net cneonl.com cnep001.com cnepaper.com cnepaper.net cnepub.com cnerlang.com cnetea.net cnetec.com cnetsec.com cnexp.net cnexpo.com cnexps.com cneyoo.com cnezsoft.com cnfanews.com cnfantasia.com cnfarasia.com cnfashion.net cnfca.com cnfce.net cnfcyy.com cnfczn.com cnfczy.com cnfeat.com cnfeol.com cnfeol.net cnfg.cc cnfia.com cnfiberhome.com cnfin.com cnfina.com cnfirst.net cnfish.com cnfisher.com cnfjwz.com cnfla.com cnflyinghorse.com cnfol.com cnfolimg.com cnfood.com cnforever.com cnforex.com cnfosale.com cnfpc.com cnfpia.org cnfpzz.com cnfq.com cnfrag.com cnfrey.com cnfrp.com cnfrp.net cnfruit.com cnfth.com cnfuhuaqi.com cnfuyin.org cnfxc.com cnfxj.org cnfyyj.com cnfzflw.com cngal.org cnganen.com cngaosu.com cngaoxiu.com cngb.org cngba.com cngbdl.com cngbol.net cngdhl.com cngin.com cngjtx.com cngma.com cngold.org cngoldres.com cngolf.tv cngongfu.com cngrain.com cngreatop.com cngreenfield.com cngsda.net cngsf.com cngslb.com cngslb.net cnguangxing.com cnguibao.com cnguibie.com cngulu.com cngwv.com cngwzj.com cngxbj.com cngxjy.com cngxsmj.com cngyff.com cngyi.com cnh5.net cnhacker.com cnhaifan.com cnhalo.net cnhanjia.com cnhantide.com cnhanxing.com cnhaomen.com cnhaoshengyi.com cnhbql.com cnhbstock.com cnhbtc.com cnhcb.com cnhd.com cnheader.com cnhemiao.com cnhenda.com cnhengkai.com cnhhgjx.com cnhhl.com cnhiger.com cnhiker.com cnhis.cc cnhis.com cnhli.com cnhls.com cnhlsxe.com cnhnb.com cnhongke.org cnhonker.com cnhow.net cnhqt.com cnhsjz.com cnhsw.net cnhszx.com cnhuafag.com cnhuafas.com cnhuanya.com cnhubei.com cnhuoche.com cnhvacrnet.com cnhwjt.com cnhyc.com cnhyjt.com cnhyky.com cnhzsc.com cnhzz.com cniao5.com cnibx.com cniceberg.com cnicif.com cnielts.com cniiib.com cnimg.elex.com cnimporter.com cninfo.net cninj.com cninnovatel.com cninsure.net cninternetdownloadmanager.com cnios.net cnipa-gd.com cnipa-hb.com cnipa-pesc.com cnipa-sc.com cnipa-tj.com cnipai.com cnipr.com cnirtrade.com cnispgroup.com cnitblog.com cniteyes.com cniti.com cnitom.com cnitpm.com cnitv.net cnix.cc cnjccrusher.com cnjdz.net cnjecc.com cnjf.com cnjffb.com cnjfsilk.com cnjgtec.com cnjhyg.com cnjiajun.com cnjiali.com cnjiaolian.com cnjingchu.com cnjingtong.com cnjingyigroup.com cnjiuze.com cnjiwang.com cnjj.com cnjjwb.com cnjkzxw.com cnjlc.com cnjnsb.com cnjob.com cnjournals.com cnjournals.net cnjournals.org cnjp-exp.com cnjpetr.org cnjrna.com cnjsdz.com cnjunhe.com cnjunnet.com cnjunzilan.com cnjurry.com cnjurui.com cnjxl.com cnjxol.com cnjyky.com cnjyw.net cnjzb.com cnjzgroup.com cnk8.com cnkaile.com cnkang.com cnkanshu.com cnkefa.com cnkeg.com cnkesai.com cnkeyboard.com cnkgraph.com cnkh.com cnki.net cnki.vip cnkicheck.info cnkidoi.com cnkidoi.net cnkidoi.org cnkinect.com cnkingjoy.com cnkis.net cnkivip.net cnkix.com cnkizw.com cnklog.com cnkly.com cnknowledge.com cnkosun.com cnkpgs.com cnkuai.com cnky.net cnkyz.com cnlampholder.com cnlandport.com cnlang.org cnlanhui.com cnlanling.com cnlaunch.com cnlaw.net cnlawweb.net cnlcg.com cnldedu.com cnldzc.com cnledw.com cnlianjie.com cnliequan.com cnlight.com cnlightnet.com cnlink8.com cnlinka.com cnlishuai.com cnlist.com cnlist.org cnlive.com cnliveimg.com cnljxh.com cnlng.com cnlongkou.net cnlot.net cnlso.com cnluan.com cnlubadd.com cnluolun.com cnlushan.com cnlwg.com cnmagtec.com cnmanhua.com cnmansi.com cnmarathon.net cnmarinefan.com cnmattson.com cnmcl.net cnmdy.com cnmec.biz cnmeiwei.com cnmf.net cnmhg.com cnmhh.work cnmia.org cnmie.com cnmill.com cnmineqs.net cnminiorange.com cnmjcn.com cnmjcn.cyou cnmjcn.net cnmjin.net cnmla.com cnmmsc.org cnmo.com cnmobile.net cnmods.net cnmods.org cnmoershu.com cnmooc.org cnmp3.com cnmsl.net cnmsn.com cnmsn.net cnmstl.net cnmtpt.com cnmuseum.com cnmysoft.com cnn-wali.com cnn100.com cnnaihuo.com cnnb.com cnnbfdc.com cnnbsa.com cnncbhy.com cnncguilin.com cnndns.com cnnetsec.com cnneweragx.com cnnfootballclub.com cnnic.net cnnice.com cnnmol.com cnnorge.com cnnorip.org cnnosolar.com cnnot.com cnnpz.com cnns.net cnntzr.com cnnuo.com cnnx.net cnnyye.org cnobin.org cnod.net cnoddt.com cnoic.com cnoil.com cnolnic.com cnolnic.net cnolnic.org cnonjx.com cnonline.org cnoocengineering.com cnoocltd.com cnool.net cnopendata.com cnops.xyz cnoptec.com cnork.com cnosr.com cnoswiki.com cnoutdoor.com cnovirt.com cnovtec-chamber.com cnpaf.net cnpaiwei.com cnpaiwo.com cnpanda.net cnparking.org cnpatent.com cnpatrickstar.com cnpcbidding.com cnpcgas.com cnpcmall.com cnpdccutter.com cnpenjing.com cnpereading.com cnpfjt.com cnpghouse.com cnpgjt.com cnphar.net cnpharm.com cnphotec.com cnphotos.net cnpickleball.com cnpickups.com cnpicl.com cnpiecgb.com cnpiecsb.com cnpkm.com cnpl-ltl.com cnplanetary.com cnplugins.com cnpmjs.org cnpoli.com cnponer.com cnpot.com cnpou.com cnpoultry.com cnpowdernet.com cnpowdertech.com cnpp100.com cnppa.org cnpressphoto.com cnprofit.com cnprs.com cnpsec.com cnpubc.com cnpubg.com cnpv.com cnpxyy.com cnpython.com cnqc.com cnqcc.com cnqd.net cnqiang.com cnqichun.com cnqifeng88.com cnqjw.com cnqr.org cnquanjing.com cnqwt.com cnradio.com cnraksmart.com cnrancher.com cnrceo.com cnrcloudfm.com cnrdm.com cnrdn.com cnreagent.com cnree.com cnrencai.com cnrepair.com cnrepark.com cnrft.com cnrhwq.com cnricc.com cnrih.com cnrj45.com cnrmall.com cnrmc.com cnrmobile.com cnrotech.com cnrouter.com cnrsj.com cnrubbermachinery.com cnrunda.com cnrunlin.com cnrust.com cnrv.io cns.hk cnsaes.org cnsal.com cnsanf.com cnsantech.com cnsav.com cnsb.org cnsbjy.com cnsc8.com cnsce.net cnscee.com cnsciedu.com cnscn.com cnscnet.com cnscore.com cnsdb.com cnsdjxw.com cnseay.com cnseeq.com cnsesan.com cnsetsail.com cnsfk.com cnshende.com cnshexinji.com cnshiri.com cnshjy.com cnshuizu.com cnshzm.com cnside.com cnsihai.com cnsikao.com cnsilkworm.com cnsimeng.com cnsimin.com cnsiwu.com cnskg.com cnskyit.com cnsleep.org cnslpa.com cnsnpj.com cnsnvc.com cnso.org cnsoc.org cnsoftbei.com cnsoftnews.com cnsolarwind.com cnsolomo.com cnsorl.com cnspeed.com cnspeedtest.com cnspeedtest.net cnsphoto.com cnsrack.com cnssr.org cnssssl.com cnste.org cnstock.com cnsudong.com cnsug.com cnsun.net cnsunbird.com cnsundin.com cnsuning.com cnsuv.com cnsuzi.com cnswds.com cnswy.net cnsynews.com cnsz.org cnszjlt.com cnszxw.com cnszyzz.com cntagore.com cntaiping.com cntally.com cntan.net cntangka.com cntapp.com cntaz.com cntc.com cntech.com cnten.com cnteno.com cntex-ian.org cntexjob.com cntexnet.com cntgol.com cntheory.com cnthinkers.com cntingyun.com cntjq.net cntle.com cntlfs.com cntofu.com cntopgear.com cntoplead.com cntour365.com cntplus.com cntrades.com cntranslators.com cntries.com cntronics.com cntslawfirm.com cntuw.com cntv.com cntvan.com cntwg.com cntyjt.com cntywhcm.com cnu.cc cnuninet.net cnuozu.com cnur.com cnuschool.org cnutcon.com cnvcs.com cnvf.com cnvfq.com cnvn.net cnvps.com cnvtech.com cnwa.com cnwaci.com cnwaishi.com cnwaking.com cnwansun.com cnwaternews.com cnwb.net cnwbwb.com cnwear.com cnweblog.com cnwebshow.com cnweiju.com cnweiming.com cnweisou.com cnwest.com cnwhc.com cnwindows.com cnwinenews.com cnwood-ipp.org cnwsgj.com cnwtn.com cnwutong.com cnww1985.com cnww9.com cnwxw.com cnwzd.com cnwzhd.com cnxad.com cnxcjt.com cnxclm.com cnxct.com cnxds.com cnxdw.com cnxfans.com cnxhacker.com cnxhyp.com cnxiangyan.com cnxiantao.com cnxianzai.com cnxiaobai.com cnxiaoyuan.com cnxibu.com cnxieku.com cnxile.com cnxincai.com cnxingoplastics.com cnxishui.net cnxk.com cnxklm.com cnxmxf.com cnxnmy.com cnxos.com cnxox.com cnxulong.com cnxunren.com cnxuntu.com cnxyk.com cnxzm.com cnyada.net cnyanglao.com cnyce.com cnydgroup.com cnyeig.com cnyibs.com cnyings.com cnyipu.com cnyixun.com cnyouhao.com cnypa.org cnys.com cnytgy.com cnyw.net cnywinfo.com cnyydj.com cnzcn.net cnzdfm.com cnzdhg.com cnzgc.com cnzgcec.com cnzhanting.com cnzhanzhang.com cnzhengmu.com cnzhepai.com cnzhhy.com cnzhiyuanhui.com cnzhjk.com cnzhongcha.com cnzhongzhuan.com cnzici.com cnzjdd.com cnzjj.com cnzjol.com cnzkzg.com cnznfy.com cnzps.com cnzrc.com cnzscx.com cnzskj.com cnzsqh.com cnzsrf.com cnzsyz.com cnzweal.com cnzxsoft.com cnzxwh.com cnzy56.com cnzyao.com cnzz.com cnzz.net cnzzla.com cnzznz.com co-effort.com co-farming.com co-inclusion.org co-mall.net co-mens.com co-plant.com co-sail.com co-trust.com co188.com co188cdn.com co1in.me co2coin.org coach-edu.com coach-japanese.com coahr.net coalcloud.net coalstudy.com coantec.com coaoo.com coastalcitycinema.com coatingol.com cobenet.com cobetterfiltration.com cobioer.com coboak.com cobtecinternational.com cobuy.net cobvgroup.com cocas.cc cocav.com cocfan.com cochemist.com cochicon.com cocia.org coco413.com cocoachina.com cocodiy.com cocogoat.work cocohealthcare.com cocololo.com coconuet.com cocoon-data.com cocophp.com cocoren.com cocos.com cocos.org cocos2d-x.org cocos2d.org cocos2dx.net cocosgame.net cocounion.com cocozq.com cocss.com codante.org code-abc.com code-by.org code222.com code369.com code666.com code84.com codeachange.com codeages.work codeaha.com codebaoku.com codebe.org codebuddy.info codebuddy.net codebuddy.pro codebuddy.work codebus.net codebye.com codechina.net codecomeon.com codedefault.com codeeeee.com codeflying.net codeforge.com codehy.com codeidc.com codeios.com codekissyoung.com codekk.com codelife.cc codemart.com codenews.cc codeofchina.com codepku.com codeplayer.vip codeplaygames.com codeprj.com codepub.com coder.work coder100.com coder4.com coder55.com coderbee.net coderclock.com codercto.com coderhuo.tech coderli.com codernav.com coderplanets.com coderprepares.com codersec.net codersrc.com coderyuan.com coderzh.com codes51.com codesdq.com codesoft.hk codesoftchina.com codess.cc codetop.cc codewd.com codeweblog.com codeweixin.com codewoody.com codex-watch.com codezh.com codezyw.com codigoscript.com coding-io.com coding-newsletter.com coding-pages.com coding.love coding.me coding.net coding3min.com codingapp.com codingchangeworld.com codingcorp.net codingdao.com codingke.com codingsky.com codingwhy.com codingyang.com codj.net codm.com codming.com codmwest.com codoon.com codooncdn.com coelmont.com coeusssyp.com cofco-capital.com cofco-trust.com cofco.com cofcoet.com cofcofuturesintl.com cofcoko.com cofcosp.com cofcotrading.com cofeed.com coffee-hdl.com coffee-iot.com coffee-script.org coffee08.com coffeecdn.com coffeejp.com coffeeofchina.com coffeeteaimagazine.com cofferxm.com cofile.net cofly.com cofool.com cofortest.com cogcpa.org cogdelschool.com cogitosoft.com cognizepower.com cogobuy.com cogolinks.com cogonline.com cogskl.com cohim.com cohl.com cohuatech.com coicjs.org coin007.com coin163.com coinabc.com coinall.live coinall.ltd coincsd.com coindog.com coinglo.store coinhaven.store coinnice.com coinrobotics.com coins-carnival.com coinsky.com coinvs.com coinyue.com cokll.com cokutau.com colahotpot.com colasmart.com coldextrusion.com coldfunction.com coldlake1.com coldlar.com coli688.com colineapp.com colinker.com colipu.com collaborate.download.prss.microsoft.com collaborateppe.download.prss.microsoft.com collect-med.com collect-v6-51.la college-ing.com collt.org colly-pink.com collycn.com colobu.com colocess.com color-measure.com color365.com colorbird.com colorfulclouds.net colorfulltech.net colorimeter.com coloros.com coloros.net colortechchina.com colorv.com coloryr.com colosseo7143.xyz colourlife.com columbia-china.com columbia-kaiyuan.com columbia-wuxi.com com.fi com.mp com.tv com4loves.com comac.cc comake.online combestlogistics.com combiosz.com combocn.com combofin.com combomen.com combosm.com combpm.com combss.com comdeep.com come-bio.com comebond.com comebt.com comefilm.com comeken.com comeorg.com comestuff.com comet.cc comeyes.com comflowy.com comfylink.com comiai.com comic520.com comicdd.com comicer.com comicfans.net comicv.com comicyu.com comiis.com cominbio.com comingchina.com comlan.com comlbs.com commchina.net comme.work communicatte.com comnergy.com comocloud.net compal.com companydns.com compassedu.hk compevt.com compgoo.com complant.com complemeny.com complexstudio.net componentcn.com compose99.com composolder.com compoundsemiconductorchina.net comprame.com computeinit.com computer26.com comra.org comsenz.com comseoer.com comsharp.com comway-mro.com comweixin.com comwin-sh.com con-star.com con.sh con3c.com conan06.com conantoptical.com conbagroup.com conceptan.com conchdate.com conchdesktop.com conco-esd.com concordiashanghai.org concordmedical.com concox.net concretehr.com conda-group.com condorchina.com cone-x.com conele.com conergas.net conew.com conextweb.com confluxrpc.com conghua.com congmiqq.com congratulatiy.com congresobolivariano.org congrongfund.com congtoo.com congtoukaishi.com congwuku.com congyicn.com congzao.com congzhi.com conhagroup.com conlerpharm.com conodmedical.com conoha.vip conpak.com conpak.com.hk conquerom.com conquerore.com conshow.com considerice.com conslive.com consmation.com console-integration.cdnetworks.com console.cdnetworks.com constao.com constar-gd.com constgroup.com content4ads.com contentchina.com contentstore.htcvive.com controlinai.com conuo.com convertlab.com convoypayments.com cony-tech.com conyedit.com conyli.cc coo1read.com coobar.com coobos.com cooboys.com cooc-china.com coocaa.com coocaatv.com coocare.com coocent.net coodesker.com coodir.com coodove.com coofandy.com coofans.com cooffee.net cooh5.com coohua.com cooioo.com cookcai.com cookicut.com cookie4you.com cookiezhong.com cool-admin.com cool-de.com cool-play.com coolact.net coolaf.com coolapk.com coolapkmarket.com coolapkmarket.net coolaw.com coolban.com coolbcloud.com coolbuy.com coolcar.cc coolccloud.com coolcode.org coolcode.tech coolcou.com cooldock.com cooldu.com cooleasy.net coolecho.net coolecloud.com coolexe.com coolfd.com coolgaga.com coolgamebox.com coolgua.net coolight.cool coolkaba.com coolkit.cc coolkk.net coolku.cc coollf.com coolmitech.com coolnull.com coolook.org coolool.com coolpad.com coolping.com coolqi.com coolsdream.com coolshark.com coolsite.vip coolsite360.com coolsphoto.com cooltechsh.com cooltui.com cooltuku.com cooluc.com coolwarmsy.com coolweb.work coolwei.com coolxcloud.com coolxigua.com coolyun.com coolzcloud.com coomix.net coomo99.com coomodel.com coonote.com cooole.com coooolfan.com coooz.com coopcc.com cooperningbo.com coor.work coordsx.com cootek.com cootekos.com cootekservice.com coovee.com coovee.net coowor.com cooyun.com cop.cdnetworks.com copl.com.hk copperalliance.asia copperhome.net copyedu.com copyfuture.com copythelink.com copywatchstyle.com cor-games.com coralset.com core-biopharma.com corebai.com coreesports.net corehalo.com coreldrawchina.com coremakingsolutions.com corerain.com corex-design.com corgichina.com corlercar888.com coros.com corp-email.com corp.cc corpallies.com corpautohome.com corpease.net corpize.com corpring.com correoc.asia coryes.com cos-beauty.com cos-show.com cos126.com cosbuluo.com coschat.com cosco-logisticsqd.com cosco.com coscon.com coscoshipping.com coscoshippingenergy.com cosdnsresolve-wxzf.com cosdnsresolve.com cosedm.com cosen.net coshelper.com coshin.com coship.com cosideabl.com cosinedu.com cosineg.com cosize.com cosjiang.com coslinic.com cosmileonly.com cosmo-lady.com cosmoplat.com cosmoschem.com cosmosource.com cosmx.com cosoar.com cosofteck.com cosplay8.com cosplayla.com costku.com costuan.com cosunter.com cosxu.com cosyjoy.com cosz.com cotek-robotics.com cotong.com cotticoffee.com cottonchina.org cotv.tv couas.com couns.com couplefish.com couponover.info couqiao.net courage-magnet.com coursegraph.com courtesya.com cousz-gd.com covcec.com coverequire.com coverweb.cc covinda.com covoart.com covtv.com cowarobot.com cowcs.com cowealth.com cowellhealth.com cowlevel.net cowrycare.com cowtransfer.com coyigroup.com coyis.com coyotebio-lab.com coyuk.com coyuns.net coze.site cozonenet.com cp-keji.com cp0556.com cp121.com cp2804.com cp365.org cp7iys8fp.com cpa51.com cpaddress.com cpaed.org cpajia.com cpakg.com cpass.com cpatrk.net cpbao.com cpc.cc cpcaauto.com cpcadata.com cpcccac.com cpcell.com cpcep.com cpciei.org cpcni.net cpcphone.com cpcw.com cpdad.com cpdaily.com cpdasoft.com cpdhd.com cpdyj.com cpe-fund.com cpecc.net cpeccgx.net cpema.org cpeol.net cpepgc.com cpfia.org cpfwzs.com cpg-motor.com cphfgg.com cphiic.com cphoto.net cphoto.org cphu.org cpiano.com cpiaoju.com cpiccdn.com cpicfiber.com cpicfunds.com cpidi.com cpihualai.com cpitsh.org cpixe.com cpjltx.com cplamc.com cplotus.com cpm1000.com cpmiao.net cpmrc.org cpnalb.org cpo.xyz cpo2o.com cpolar.com cpolive.com cpooo.com cposchool.com cpp-prog.com cpp114.com cpp32.com cppb-wg.com cppblog.com cppc123.com cppdebug.com cppfoto.com cpph.com cpplay.com cppoly.com cpppf.org cppszw.com cpqrmyy.com cproton.com cps1688.com cps800.com cpsbeijing.org cpse.com cpsenglish.com cpt-world.com cpt123.com cpt564.com cptae.com cptc56.com cptmcp.com cptn.tv cptv2018.com cpu114.com cpu668.com cpu7.com cpubbs.com cpuchaopin.com cpudj.com cpuh2.com cpury.com cpuxn.com cpwlx.com cpwnews.com cpwzb.com cpzls.com cpzst.com cpzyrj.com cq-cable.com cq-city.com cq-ct.com cq-ct.tech cq-eatge.com cq-gyw.com cq-md.com cq-ns.com cq-pf.com cq-qqcg.com cq-rongjia.com cq-sound.com cq-tencentclb.cloud cq-tencentclb.com cq-tencentclb.net cq-tencentclb.work cq-wnl.com cq-yj.com cq-yt.com cq168.com cq315house.com cq3a.com cq5135.com cq556.com cq6.com cq69.com cq6969.com cq8.com cq96868.com cq9yuan.com cqaaa.com cqace.com cqaflopack.com cqai.vip cqaihua.com cqaky.com cqallcure.com cqange.com cqangel.com cqanmei.com cqapg.com cqaso.com cqatec.com cqbafumen.com cqbayy.com cqbbzyy.com cqbdfeng.com cqbfc.com cqbm2007.com cqbnedu.com cqbnjsjt.com cqbnrc.com cqbntv.com cqbode.com cqbondrite.com cqbosai.com cqbshyy.com cqbwjc.net cqbys.com cqc-ts.com cqc.so cqcartest.com cqcasin.com cqcatr.com cqcb.com cqcbank.com cqcbd-jbc.com cqcbl.com cqccci.com cqccn.com cqccsic.com cqcdbs.com cqcdc.org cqcdxl.com cqcfe.com cqchinabase.com cqchuangjing.com cqcico.com cqcig.com cqciig.com cqcitymedia.com cqcjnj.com cqcjxx.com cqcklib.com cqcmi.com cqcmxy.com cqcoal.com cqcp.net cqcpt.com cqcrane.com cqcrossmobil.com cqcsic.com cqcssk120.com cqcsskyy.com cqcy.com cqcyhuagong.com cqcyxyxh.com cqczx.com cqdahan.com cqdai.com cqdailynews.com cqdaming.com cqdashun.com cqdayou.com cqdc.com cqdcg.com cqdcgj.com cqddpaint.com cqddyl.com cqddzx.com cqdent.com cqdggs.com cqdianxin.com cqdic.com cqdingqi.com cqdingyan.com cqdj.cc cqdjzyy.com cqdkj.com cqdky.com cqdongnanhospital.com cqdongyang.com cqdpt.com cqdting.com cqduoliu.com cqe.cc cqeca.org cqedo.com cqedu.online cqeec.com cqelyy.com cqem.net cqemme.com cqenergy.com cqest.com cqetcvip.com cqeyeyy.com cqfdcxy.com cqfesco.com cqfic.com cqfind.com cqfire.com cqfjly.com cqflct.com cqfmbank.com cqfus.com cqfuyou.com cqfygzfw.com cqgaoke.com cqgc.com cqgdcy.com cqgdkf.com cqgearbox.com cqgewerv.com cqggwx.com cqggx.com cqggzy.com cqgh.org cqgj.net cqglcj.com cqglion.com cqgmfw.com cqgnhg.com cqgrain.com cqgreat.com cqgsdb.com cqgtjt.com cqguangren.com cqguangrong.com cqguli.com cqguohua.com cqguorui.com cqgwd.com cqgwy.org cqgwzx.com cqgxjscy.com cqgxqsmartedu.com cqgyjsxy.com cqgyjt.com cqgymsxx.com cqgyzone.com cqgz.com cqgzdlgc.com cqgzf.net cqh2o.com cqhac.com cqhansa.com cqhaofeng.com cqhasin.com cqhbcy.net cqhbzh.com cqhejuda.com cqhengbogroup.com cqhengding.com cqhengr.com cqhewin.com cqhhm.com cqhimalayanky.com cqhjj.com cqhjjt.com cqhjyzl.com cqhkcdns.com cqhkyy.com cqhma.com cqhnbsb.com cqhncd.com cqhongshuangda.com cqhouse.net cqhrjd.com cqhsjs.com cqhtu.com cqhushan.com cqhwr.com cqhwzs.com cqhxdbj666.com cqhxeye.com cqhxf.com cqhxfk.com cqhxgf.com cqhxyy.com cqhxzz.net cqhyd.com cqhydraulic.com cqhyjtss.com cqhyky.com cqhylab.com cqhyyy120.com cqhz510.com cqhzjy.com cqiic.com cqiivc.com cqindex.com cqink.com cqinstinct.com cqioe.com cqios.com cqiot.cc cqipa.com cqipc.net cqirobot.com cqiss.com cqit.com cqiter.com cqiti.com cqitic.com cqivc.com cqj.net cqjat.com cqjbrc.com cqjchg.com cqjdc.com cqjdgc.com cqjdgyx.com cqjdjczx.com cqjet.com cqjgx.com cqjhfk.com cqjhgczx.com cqjhsy.com cqjhtxy.com cqjiangxue.com cqjiaxian.com cqjieli.com cqjiexun.com cqjingyu.com cqjizhi.com cqjj.net cqjjnet.com cqjkhb.com cqjlyy.net cqjnjs.com cqjnkgjt.com cqjnw.org cqjob.com cqjpyg.com cqjsaq.com cqjsd.com cqjtedu.com cqjtsn.com cqjunan.com cqjx.net cqjy.com cqjyfcyy.com cqjyhuida.com cqjyn.com cqjyxh.com cqjzxy.com cqjzy.com cqkangshan.com cqkaogu.com cqkbjd.com cqkcyy.com cqkdtui1.com cqkeguan.com cqkejufu.com cqkepu.com cqkerui.com cqkexun.com cqkeye.com cqkfb.com cqkhjt.cc cqkjb.com cqkjwx.com cqkjzyxy.com cqknls.com cqkqinfo.com cqkqjt.com cqkundian.com cqkx.com cqkxhospital.com cqkytech.com cqkytq.com cqlaifu.com cqlandtower.com cqlba.com cqlbjg.com cqld.com cqlfn.com cqlhyy.com cqlibo.com cqlilan.com cqlincom.com cqlinrui.com cqliving.com cqljhr.com cqljjrjd.com cqljjt.com cqljmjs.com cqljzp.com cqlkuav.com cqllfood.com cqlonghoo.com cqloway.com cqlp.com cqlpa.com cqls.work cqlummy.com cqlxzjzx.com cqlyckj.com cqlydc.com cqlys.com cqlyy.com cqlzz.com cqmaika.com cqmama.net cqmanzhong.com cqmarathon.com cqmas.com cqmbkq.com cqmbyy.com cqmcu.com cqmeidoing.com cqmeiyuan.com cqmiaoa.com cqmiaochi.com cqminghua.com cqmlmh.com cqmmgo.com cqmmjt.com cqmpf.com cqmsdq.com cqmstech.com cqmtek.com cqmtswkj.com cqmva.com cqmw.com cqmylike.com cqmzj.com cqnc.cc cqncnews.com cqndl.com cqnetcn.com cqnews.net cqnhn.com cqnht.com cqnkhz4j8nmhqp.com cqnongzi.com cqntdq.com cqnurse.com cqnx.com cqnydb.com cqooc.com cqpac.com cqpartek.com cqpbx.com cqpearlriver.com cqpeidu.com cqpeixin.com cqpet120.com cqpfh.com cqpfjt.com cqpfmz.com cqph.com cqphar.com cqpix.com cqpost.com cqpump.com cqpwt.com cqpwy.com cqpwz.com cqpx.cc cqpzjc.com cqqcjzsj.com cqqgsafe.com cqqgx.com cqqianggu.com cqqiujing.com cqqiyi.com cqqjyy.com cqqnb.net cqqnjt.com cqqp.com cqqsys.com cqqsyy.com cqqttk.com cqqxxny.com cqrafk.com cqrailway.com cqranxie.com cqrc.net cqrcb.com cqrcdsc.com cqrcfl.com cqrfym.com cqrig.com cqrksw.com cqrm.com cqrmb.com cqrmrq.com cqrqdx.com cqrwys.com cqryxfp.com cqs-hm.com cqsaea.com cqsamr.com cqscmy.net cqsdei.com cqsdzy.com cqsfqcpj.com cqsfybjy.com cqsgczjxx.org cqshenou.com cqshic.com cqship.com cqshoucheng.com cqshrq.com cqshulan.com cqshyzx.com cqsifang.com cqsj365.com cqsjb.com cqsjbc.com cqsjd.xyz cqsjky.com cqsjnzx.com cqsjsyy.com cqslhjx.com cqslim.com cqslim.net cqsms.net cqsoft.org cqsongshan.com cqspx.com cqsq.com cqssgf.com cqsta.com cqstgxy.com cqstjt.com cqstjzx.com cqstudents.com cqsuoqi.com cqswah.com cqswjjx.com cqswxcy.com cqsx.net cqsxdb.com cqsxedu.com cqsxhb.com cqsxjsj.com cqsxrj.com cqsxsl.com cqsyjq.com cqsyjz.com cqsymj.com cqsyz.com cqszfy.com cqsznyy.com cqsztech.com cqszyy.com cqszyyhyxh.com cqszzs.com cqt-top.com cqtalent.com cqtally.co cqtally.com cqtanlaoda.com cqtaotan.com cqtbyy.com cqtctech.com cqtea.com cqtfjs.com cqtiantai.com cqtieba.com cqtkjj.com cqtkyy.com cqtl.org cqtlskj.com cqtn.com cqtnfs.com cqtqzx.com cqtrans.com cqtransit.com cqtrend.com cqtresearch.com cqtrvl.com cqttech.com cqtuoda.com cqtxyy.com cqtyanglao.com cqtynpx.com cquae.com cquc.net cqud.net cqudp.com cqukf.com cqulit.com cquni.com cqvantai.com cqvavo.com cqvcet.com cqvip.com cqvip.vip cqvist.net cqw.cc cqwanli.com cqwanshang.com cqwater.net cqwbdq.com cqwbgg.com cqweh.com cqwenbo.com cqwest.com cqwin.com cqwlg.com cqwlzz.com cqwsnews.net cqwsrmyy.com cqwszjs.com cqwtqc.com cqwtqx.com cqwulong.net cqwuxi.com cqwxnews.net cqwzax.com cqwzwh.com cqwzwl.com cqxayl.com cqxcx.net cqxdfpr.com cqxdjgxx.com cqxdnzyy.com cqxdyy.com cqxfxh.com cqxh120.com cqxhdc.com cqxhyz.com cqxianfeng.com cqxiheng.com cqxinge.com cqxingyun.com cqxinhua.com cqxinshuo.com cqxitou.com cqxj-hospital.com cqxjr.net cqxm-group.com cqxnyy.com cqxpxt.com cqxqz.com cqxshs.com cqxsxt.com cqxszx.net cqxtcx.com cqxwdb.com cqxwtx.com cqxxly.net cqxxt.com cqxyfl.com cqxygf.com cqxyjc.com cqxzxy.com cqybhr.com cqybxl.com cqyc.com cqyc.net cqycqzyy.com cqydgz.com cqydxy.com cqyestar.com cqyfjs.com cqyfkgjt.com cqyfsk.com cqygfm.com cqyhpx.com cqyhss.com cqyhyq.com cqyingang.com cqyisen.com cqyixiao.com cqyljgxx.com cqym120.com cqynzz.com cqyongfeng.com cqyouloft.com cqyqjz.com cqysgyy.com cqysp.com cqysxx.com cqysxy.com cqyti.com cqytjt.com cqytjzgc.com cqytsw.com cqytu.com cqytyk.com cqyu.com cqyuanjing.com cqyuhong.com cqyunshi.com cqyuxing.com cqyuzhoujx.com cqyx999.com cqyxlx.com cqyxzz.com cqyygz.com cqyyjc.com cqyysx.com cqyyzy.com cqyznews.com cqzbcg.com cqzcjw.com cqzct.com cqzdrl.com cqzgl.com cqzgzdh.com cqzhihaolaw.com cqzhongxingyuan.com cqzhqyjt.com cqzikao.com cqzike.com cqzjt.com cqzk.net cqzkjs.com cqzls.com cqzoan.com cqzq6.com cqzql.com cqzrsh.com cqzskj.com cqzuxia.com cqzww.com cqzxmoto.com cqzxrmyy.com cqzxwx.com cqzxzlyy.com cqzyktqxxh.com cqzymj.com cqzyx.net cqzyyd.com cqzyzs.com cqzz.net cqzzcd.com cr-artisan.com cr-cts.com cr-expo.com cr-leasing.com cr-newenergy.com cr-nielsen.com cr-power.com cr11gcsgd.com cr15g.com cr173.com cr175.com cr18g.com cr19gj.com cr20g.com cr6868.com cr8gc.com crabchina.com cracmedu.org craer.com craftcontact.com craftria.com craftsb2b.com craigmaher.net craim.net crandom.com crane-china.cc crane-net.com cranewh.com crash.work cravatar.com crazepony.com crazybig.fun crazyenglish.com crazyflasher.com crazyjs.org crazyming.com crazymoneys.com crazyones.world crazyphper.com crazypm.com crazyrtc.com crazywong.com crbbg.com crbc.com crbeverage.com crbiopharm.com crc-bj.com crc.com.hk crc.hk crc81.com crcapm.com crcccl.com crccfl.com crccig.com crcctc.com crcebg.com crcegsd.com crcement.com crcgas.com crchi.com crclogistics.com crcrfsp.com crcsz.com crct.com crctrust.com crdyf.com cre.net cread.com creality.com crealitycloud.com creatby.com createcdigital.com createpoint.qti.qualcomm.com createw.com createwf.com creati5.com creation-bj.com creationventure.com creative-micro.com creativityeco.com creator-sh.com creatreme.com creatunion.com creavidia.com crec4.com crec4mc.com crecexpo.com crecg-jt.com crecg.com crecgi.com crechan.com crecohe.com crecshif.com crectgroup.com crecu.com cred.com credibleglass.com credit100.com creditcn.com credithc.com creditrepairjournal.com creditsailing.com creditzuji.com creegc.com creflux.net creia.net creo-support.com crep-led.com crepcrep.com creplus.net crestv.com cret-bio.com crewcn.com crfchina.com crfsdi.com crgdpharm.com crgecent.com crggcn.com crgkxl.com crgy.com crhealthcare.com.hk cri-grandera.com criarabic.com cric.com cric2009.com cricbigdata.com cricchina.com crieasyfm.com crienglish.com criezfm.com crifan.org crifst.com crimoon.net crimoscow.com crinductance.com crisydney.com criwashington.com crjfw.com crl.globalsign.net crl.kaspersky.com crlf0710.com crlg.com crlintex.com crm.cc crm1001.com crmch.com crmclick.com crmeb.com crmeb.net crmicro.com crmip.com crmyy.com crnews.net crodigy.com crodigynat.com croot.com croplifechina.org cross-border-public.com cross-zone.com crossborderlion.com crossingstar.com crossingstarstudio.com crossmo.com crossoverchina.com crosswaycn.com crov.com crown-chain.com crowndth.com crowya.com crpaas.com crpcg.com crpharm.com crracelve.com crrcgc.cc crrjz.com crs811.com crsc.cc crscm.com crsky.com crsn168.com crtc-hr.com crtdri.com crtg.com crtrcloud.com crtrust.com crtyhr.com crucg.com cruelcoding.com crukings.com crvc.com crvic.org crwnt.com crx4.com crxdl.com crxsoso.com cry33.com crysound.com crystaledu.com crystalskeleton.com cryuantafund.com cs-air.com cs-airport.com cs-cjl.com cs-cydq.com cs-eval.com cs-jinwei.com cs-pos.com cs-video.com cs-xf.com cs0799.com cs090.com cs12333.com cs12d.com cs2-aipn.com cs27.com cs2c.com cs2ccloud.com cs2pw.com cs30.net cs451.com cs48.com cs528.com cs53.com cs6zhong.com csaimall.com csair.com csairdutyfree.com csairholiday.com csairshop.com csapa.org csarw.org csaspx.com csau.com csbes.com csbew.com csbme.org csbtv.com csbyjy.com csc100.com csc108.com csc86.com cscac.net cscan.co cscatv.com cscdf.org cscec.com cscec1b-bj.com cscec1b.net cscec7b.com cscec81.com cscec8bud.com cscecbjadi.com cscecparking.com csci.hk cscjedu.com csclc.com cscmgg.com csct-china.com cscxsemi.com csd568.com csdc.info csdczx.com csdeshang.com csdewater.com csdh.com csdhe.com csdhxx.com csdiy.wiki csdk.com csdn.com csdn.net csdn.work csdyjs.net csdyx.com cse-bidding.com csea1991.org csebank.com csec-tencentclb.cloud csec-tencentclb.com csec-tencentclb.net csec-tencentclb.work csemc.com cseptc.net cserveriip.com cserwen.com cseve.com csflgg.com csflwl.com csfounder.com csfreezer.com csftyy.com csfudu.com csgasgroup.com csgcjxxh.com csgcyy.com csgdjtxy.com csgfjc.com csghy.com csgjhzzx.com csgjjgxx.com csgjjt.com csgkjt.com csgocn.net csgongshui.com csgpc.org csgwexpo.com csgxyl.com cshaodu.com csharpkit.com cshbl.com cshbxy.com cshcp.com cshijian.com cshixi.com cshltx.com cshnac.com cshnkj.com cshrzc.com cshslf.com cshst.com cshuanyu.com cshufanyi.com cshxdc.com cshxschool.com cshypg.com cshzywkj.com csiamd.com csic-711.com csic612.com csic6801.com csic76.com csicmakers.com csicpl.com csictec.net csiea.net csig158.com csiic.com csilp.com csimcc.com csisolar.com csj-stcloud.com csjcs.com csjdeveloper.com csjgwy.com csjiexin.com csjitian.com csjkjs.com csjkjt.com csjmould.com csjmzy.com csjplatform.com csjqfz.com csjsdz.com csjtys.net csjtz.com csjunwei.com csjvision.com csjwang.com cskaoyan.com cskefu.com cskjgc.com cskliz.com cskrl.com csksoft.net cskx.com cskxjk.com cslbbs.net cslfans.com cslgfd.com cslkjt.com cslou.com cslxzx.com cslyrc.com csmadik.com csmall.com csmama.net csmar.com csmbcx.com csmc-cloud.com csmedlab.com csmh-semi.com csmjzs.com csmscon.com csmxh.com csmzxy.com csnbgsh.com csnhjyxx.com csnhszjy.com csnhw.com csnzxl.com csoly.com csomdmyxy.com csomick.com cspasz.org cspbj.com cspcbaike.com cspda.net cspengyuan.com cspiii.com cspmk.com cspplaza.com cspro.org cspruc.com csptia.org csqsg.com csrcare.com csrcbank.com csrcsc.com csrda.com csres.com csrgm.com csrlzyw.com csrunhe.com css-js.com css3er.com css6.com css88.com cssaaa.com cssbe.com cssbkj.com cssbyy.com cssccq.com csscia.com csscmall.com cssdsyy.com csseplastic.com cssf.cc cssf.com cssf.net cssforest.org cssfybjy.com cssg-ahi.com csshenda.com csshenyu.com csshjdxh.com csshuobo.com cssjzy.com csslcloud.net cssmagic.net cssmoban.com cssqt.com cssthxx.com csstoday.net cssuez.com cssywgy.com csszone.net cst119.com cst6.com cstccloud.org cstcloud.net cstcq.com csteamian.work cstech.ltd csteelnews.com cstexun.com csthxx.com cstianye.com cstimer.net csto.com cstonepharma.com cstong.net cstparking.com cstriker1407.info cstuotian.net cstxgz.com csuboy.com csuct.com csudgroup.com csuedu.com csundec.com csunews.com csur.fun csvii.com csvw.com csw333.com cswamp.com cswef.org csweigou.com csweiwei.com cswszy.com csxbank.com csxdf.com csxiangfeng.com csxingfutemple.org csxingya.com csxinhua.com csxinshun.com csxinxu.com csxjedu.com csxjzx.com csxsjc.com csxsrcw.com csxww.com csy17.com csyamei.com csyestar.com csygz5c6qk.best csykgs.com csylxy.com csylzx.net csyrtcs.com csysgz.com csytv.com csyunkj.com csyuwei.com cszec.com cszhgjzx.com cszhjt.com cszhonghui.com cszhxf119.com cszit.com cszjgj.com cszjzx.com cszkzn.com cszlgs.com cszn120.com cszpra.com cszsjy.com csztv.com cszuxing.com cszx.com cszyedu.com cszyjsxx.com cszykt.com ct-cdm.com ct-emall.com ct-laser.com ct-parking.com ct108.com ct52.com cta613.org ctaca.com ctags.net ctalive.com ctans.com ctaweb.org ctb50.com ctbcdn.com ctbcleasing.com ctbjia888.com ctbpsp.com ctbyq.net ctc-ctc.com ctc-zj.com ctc.lol ctc100.com ctcai.com ctcdn.com ctcdn.net ctcdnov.net ctce8.com ctcefive.com ctcisz.com ctcloudmeeting.com ctcmo.com ctcnj.net ctcnn.com ctcnpa.com ctcontents.com ctcsci.com ctcsz.com ctcwri.org ctcxzgs.com ctdatacare.com ctdcdn.com ctdcn.com ctdisk.com ctdns.net ctdsb.com ctdsb.net ctdzsk.com ctea-ctea.org cteaw.com cteb.com ctecdcs.com ctech-alpha.com cteic.com ctex.org ctexcel.com ctexcel.com.hk ctexw.com ctfhub.com ctfile.com ctfile.net ctfmall.com ctfo.com ctftools.com ctfund.com ctgapp.com ctgcdn.com ctghealthy.com ctghr.com ctghro.com ctgia.com ctgne.com cthcdn.com cthcdn.net cthgjx.com cthh9mnv.com cthhmu.com cthj-co.com cthuwork.com cthuwork.net cthy.com cti-cert.com ctibet.com ctic-lab.com ctic-labs.com ctiea.com ctiforum.com ctiku.com ctils.com ctimall.com ctime.com ctiot.info ctis-cn.com ctjin.com ctjituan.com ctjl.net ctjsoft.com ctkon.com ctkq.com ctlcdn.com ctlcdn.net ctldl.windowsupdate.com ctlife.tv ctma.net ctmcq.com ctmgid.com ctmon.com ctmwow.com ctn1986.com ctnma.com ctntech.com ctnyypt.com ctnz.net ctobsnssdk.com ctocio.com ctoclub.com ctongonline.com ctoutiao.com ctovcdn.com ctpdd.com ctr-media.info ctrcw.net ctrender.com ctrip-ttd.hk ctrip.co.id ctrip.co.kr ctrip.com ctrip.my ctrip.sg ctripbiz.com ctripbuy.hk ctripc.com ctripcorp.com ctripgslb.com ctripins.com ctripqa.com ctrmi.com cts010.com ctsbw.com ctsec.com ctsfreight.com ctsgx.com ctshk.com ctsho.com ctsitravel.com ctsmed.com ctsscs.com ctssd.com ctsto.com ctszh.com ctszs.com cttbj.com cttgd.com cttip.org cttms.com cttpptrs-pt.cfd cttptru-pt.icu cttq.com cttsd.com cttv.co ctuaa.com ctv56.org ctvpost.com ctvrd.org ctvwx.com ctwx.net ctwxc.com ctxcdn.com ctxcdn.net ctxcollect.com ctxcpa.com ctxirang.com cty9.com ctycdn.com ctycdn.net ctyny.com ctyo.com ctyun.net ctyun.online ctyuncdn.net ctyuninner.com ctyunwaf.com ctyunwaf1.com ctzb.com ctzcdn.com ctzcdn.net ctzg.com cu-air.com cu5gaia.com cuaa.net cuahmap.com cuav.net cubavcenter.com cubead.com cubegoal.com cubejoy.com cubespace.city cubestation.com cubicise.com cubie.cc cubing.com cubox.pro cucdc.com cuchost.com cucldk.com cuctv.com cudaojia.com cueber.com cuebzzy.com cuelog.com cufeyk.com cugala.com cuggw.com cugroup.com cugstore.com cuhnj.com cui1000.com cuihuan.net cuijiahua.com cuilai.com cuiniaoedu.com cuiniuhui.com cuiqingcai.com cuiru123.com cuiruo.com cuirushi.com cuiuc.com cuiv.com cuixingreen.com cuixueshe.com cuiyongjian.com cujs.com cuketest.com cul-studies.com culaiwan.com culdata.com culia.org culiangwang.org culturemagasin.com cumboly.com cumen.fun cummins-cq.com cumtenn.com cumulon.com cunan.com cuncunle.com cunfang.com cunhao.net cunliangtech.com cunnar.com cunshao.com cunylyu.work cunyoulu.com cunzhen.vip cunzj.com cuobiezi.net cuonc.com cuopen.net cuoss.com cuour-edu.com cuour.com cuour.org cuoxin.com cupdapp.com cupdata.com cupddns.com cupddns.net cupdns.com cupfox.com cupinn.com cuplayer.com cuplayer.net cupmcn.com cuppot.com curlc.com current.vc cursor.zone curtisasia.com cusdvs.com cusdvs.net custeel.com customizedfasteners.com customsapp.com customskh.org custouch.com custpref.com cutemidi.com cuteng.com cutepet-hk.com cutieshop153.com cutowallpaper.com cutv.com cuuhn.com cuumo.com cux.cc cuz.cx cuzz.site cvc898cvc.com cvchome.com cvcri.com cvftc.net cvicse.com cvicseks.com cvillazc.com cvmart.net cvmassageocs.com cvn-china.com cvoazsxs.cfd cvoesnzau.cfd cvoit.com cvonet.com cvoon.com cvrobot.net cvszavosz.icu cvtapi.com cvte.com cvtestatic.com cvtvcn.com cwag.com cwbaike.com cwbgp.space cwbpsi.com cwcec.com cwdma.org cwdtf.com cwems.com cwestc.com cweun.org cwewater.com cwfls.com cwgarnet.com cwgsdl.com cwhnh.com cwiaj.com cwjedu.com cwjt.com cwlchina.com cwliupaotea.com cwmcs.com cwmtn.com cwmzyyy.com cwq.com cwst.net cwtc.com cwun.org cwxzx.com cwyan.com cwz12123.com cwzdgroup.com cwzww.com cx-smarthome.com cx.cc cx001.com cx312.com cx368.com cx580.com cx930.net cxacg.com cxas.com cxbbattery.com cxbiji.com cxbio.com cxbsx.com cxbz958.com cxc233.com cxcc.me cxcentury.com cxcijiedu.com cxcyds.com cxdm-tech.com cxdqkj.com cxdz2000.com cxf1999.com cxfccs.com cxfuwu.com cxgame.net cxgeo.com cxgj56.com cxglmc.com cxglys.com cxgw.com cxh99.com cxhan.com cxhl365.net cxhr.com cxhuoyun.com cxhyy.com cxic.com cximg.com cxisc.com cxjrh.com cxjt.net cxju.com cxkfwn.com cxkjjy.com cxkyz.com cxlyzj.com cxmoe.com cxmt.com cxmtc.net cxnyjt.com cxnykjy.com cxory.com cxpharm.com cxqex.com cxql.net cxrczpw.com cxsdszx.com cxsk.work cxsm.com cxstar.com cxsteel.com cxstgc.com cxsw3d.com cxta.com cxthhhhh.com cxtld.com cxtrip.cc cxtuku.com cxumol.com cxvlog.com cxw.com cxwl.com cxwyf.net cxxjs.com cxy521.com cxy61.com cxy7.com cxybattery.com cxycsx.vip cxydh.xyz cxydw.net cxyfjd.com cxylfc.com cxylx.com cxyob.com cxytiandi.com cxyule.com cxyxiaowu.com cxyxwl.com cxyyls.com cxyym.com cxz.com cxzg.com cxzntc.com cxzw.com cxzyjt.com cy-cdn.com cy-coo.com cy-credit.com cy-email.com cy-isp.com cy-isp.net cy-jg.com cy-jm.com cy-mmm.com cy-pharm.com cy-scm.com cy-ymtw.com cy.com cy2009.com cy365.com cy580.com cy88.com cyagen.com cyalarm.com cyanhillcapital.com cyanpeach.com cyb-bot.com cyb800.com cybaojian.com cyberspace.com cybertogether.net cyberway-china.net cybstar.com cybtc.com cyc2018.xyz cychaiqian.com cyclemixcn.com cyclewell.com cyclingchina.net cyclone-robotics.com cyclonemoto.com cycnet.com cycoo.com cyctapp.com cyd5918.com cydiaa.com cydiakk.com cydow.com cyegushi.com cyfeng.com cyfengchao.com cyflscb.com cyfyydyfy.com cygbdst.com cygia.com cygs.com cygse.com cyhazyy.com cyhlwhb.com cyhlwmt.com cyhm.com cyhone.com cyhx98.com cyicts.com cyida.com cyie.com cyikao.com cyimking.com cyjcloud.com cyjhfm.com cyjiasu.com cyjjw.net cyjlighting.com cyjoycity.com cyjsh.com cyjysb.com cyjyxxw.com cyjzzd.com cyk-cable.com cyktqdrp.com cylaowu.com cylh.com cylink.bond cylong.com cymcgs.com cynee.net cynovan.com cyo.cc cyol.com cyol.net cyou-inc.com cyoupic.com cyouzai.com cypatent.com cypharma.com cyphouse.com cypmedia.com cypresstel.com cyprestar.com cyqyfyxh.com cyr168.com cyruc.com cyrx.com cys.world cysq.com cystool.com cyswkj.com cyswxa.com cysy-cn.com cysygroup.com cyszxyy.com cyt369.com cytcard.com cytoniche.com cytosinlab.com cyts.com cytsdl.com cytslinkage.com cytsls.com cytsonline.com cytstibet.com cytuig.com cyuandao.com cyudun.net cyuew.com cyuntech.com cyuyin.com cyvalve.com cywetc.com cywl.org cywlxy.com cywyjj.com cyxh.org cyxigua.com cyxny.net cyxshop.com cyy18.com cyyangqiguan.com cyycdn.com cyyo.vip cyypscl.com cyyself.name cyyvip.com cyzl.com cyzm.net cyzs97.com cyzwb.com cyzywl.com cyzzzz.com cz-toshiba.com cz-yk.com cz.cc cz121.com cz128.com cz88.net cz89.com czb365.com czbanbantong.com czbank.com czbcpaint.com czbq.net czbtv.com czbx18.com czcarbon.com czcdt.com czcgewater.com czchuanlin.com czchyz.com czcia.com czcid.com czclzc.com czcqly.com czctech.com czdaiwei.com czddbearing.com czdingming.com czdlj.com czdqyy.com czdsfy.com czduxinban.com czdyrmyy.com czech-visacenter.com czedu.com czepb.com czey.com czfangshuo.com czfcdp.com czfcw.com czfdc.com czfesco-mg.com czfhdmls.com czfph.com czgcsb.com czgd.tv czgdly.com czgjj.com czgjj.net czgmjsj.com czgongzuo.com czgtjt.com czguangfu.org czhaobiao.com czhbgx.com czhjs.com czhmjx.com czhtff.com czhuayuansuye.com czie.net czifi.org czinfo.net czitc.com czjake.com czjdgz.com czjdjt.com czjdu.com czjfa.com czjiangteng.com czjilijia.com czjju.com czjlsb.com czjoel.com czjpw.com czjsy.com czjyzx.net czkbdq.net czkctl.com czkingdee.com czlgj.com czlingke.com czlkgy.com czlsgz.com czlskj.com czlxgc.net czmarathon.net czmc.com czmh.com czmstt.com czmw.com czmypx.com cznengshuo.com cznewcom.com czolgame.com czongyi.com czopen.com czpbxc.com czpoly.com czpv.net czqingzhifeng.com czqqkj.com czrcw.com czrjh.com czrmyy.com czrsymt.com czsafjx.com czsbtjx.com czsfy.com czsldy.com czsmk.com czsrc.com czsrmyy.com czsshb.com czstx.net czswdx.com cztaojiu.com cztour.com cztrjs.com cztv.cc cztv.com cztv.tv cztvcdn.com cztvcloud.com cztzkg.com czur.com czvv.net czwie.com czws.com czwsg5.com czwxbyq.com czwxtz.com czxiu.com czxixi.com czxixigu.com czxr.net czxthmls.com czxuexi.com czxxp.com czxxw.com czxy.com czyabo.com czyefy.com czyfxd.com czyl.cc czyongfeng.com czypcb.com czyuxing.com czyxba.com czzqp.com czzsw.com czzy-edu.com czzyc.com czzyvideo.com czzzbwg.com d-controls.com d-ctrip.com d-d.design d-heaven.com d-innovation.com d-long.com d-robotics.cc d-stars.net d-techs.com d-wolves.com d.cg d.design d00.net d03jd.com d05512bf210292.beer d0be5a65855b67f1.com d0bf4234011011.beer d0ff97cf35c6a919.com d11180a781015.beer d1226c9c010311.beer d13fa03a1909beae.com d163.net d17.cc d1be4a4fdf902c14.com d1c73dbb1de91850.com d1cm.com d1com.com d1cy.com d1dengju.com d1dytt.com d1ev.com d1f20dc1910272.beer d1f25004011021.beer d1f41d7b74d2717d.com d1ld.com d1lx.com d1miao.com d1mm.com d1net.com d1rcw.com d1sm.net d1xf.net d1xn.com d1xny.com d1y.cc d20d0896ac7f79d3.com d22fa4e66e2dbda2.com d23c41a0511031.beer d27c2e00d10251.beer d2940a1d3924e37f.com d2core.com d2film.com d2kdi2ss.com d2scdn.com d2shost.com d2ty.com d2ziran.com d30c8d2641021.beer d3490d69fd4b2039.com d3581247411021.beer d3bc311b910311.beer d3ch.com d3cn.net d3e5f7g9.work d3eurostreet.com d3f.com d3games.com d3iz9md.com d3tt.com d3zone.com d4000.com d406dc73a1016.beer d475a937d0e92b96.com d48c3443110281.beer d4cd5439c1009.beer d4ctech.com d54a00143de85b64.com d56c84cfb4a786f7.com d58.net d5a18ed7b2f74e45.com d5h.net d5power.com d5render.com d5xs.net d65d6.com d65fee3222cbaf80.com d6861213910261.beer d6ffdb55d1009.beer d7585a05210281.beer d777.com d7e29629277.luxe d7ftpecw.work d7vg.com d7w.net d7ytrv7yxa.com d837c367d34d7bb5.com d8e8664c05df452c.com d8fb1ffab10251.beer d8th.com d90eeacb0ed722f9.com d920c164caf0ebba.com d959fb95dd5cc433.com d9741b1859dfcfee.com d99net.net d9b5cc7f82ccfc18.com d9j8.com d9js.com d9k99.com d9ym.com da-mai.com da-quan.net da.anythinktech.com da.biz da01.com da3h.com da563c3c21010.beer da88.net daai.fun daanbar.com daanche.com daangene.com daanjiexi.com daanwang.com daanwo.com daanxi.com daas-auto.com daba.com dabai4.com dabaicai.com dabaicai.org dabaidaojia.com dabaise.com dabangong.com dabangsoft.com dabanke.com dabao123.com dabao22.com dabaoge.host dabaoku.com dabapiao.com dabaqian.com dabeiduo.com dabiaoji.info dabiaojituan.com dabieshu.com dabin69.com dabingseo.com dabjy.com daboluo.net dabusi.com dacai.com dacang.ltd dacankao.com dacankao.net dacaomei.com dacbiotech.com daccc.com daccf.com dachanet.com dachao.com dachaokn.com dachaoshan.org dachengbiochemical.com dachengge.com dachenglaw.com dachengsh.com dachengshuiwu.com dachengzi.net dachkj.com dachuanchina.com dachuizichan.com dachun.tv dachushicai.com dad86b446ac9f8b7.com dada114.net dada360.com dadaabc.com dadagame.com dadagem.xyz dadajiasu.com dadaogroup.com dadaojiayuan.com dadaqipai.com dadasasa.com dadasou.com dadateach.com dadayou.com dadclab.com daddybaby.com daddymami.net daddysweety.com dadeedu.com dadetong.com dadicinema.com dadighost.com dadikid.net dadisalt.com dadiwang.com dadiyimao.com dadongwu.com dadou.com daduoduo.com daduofa.com dadushixiecheng.com daeac4faf10292.beer daerzhu.com daeshin-china.com daf-rs.com daf30622c1010.beer dafaji.com dafang24.com dafangtour.net dafangya.com dafanshu.com dafaun.com dafenghk.com dafenghk.net dafmgroup.com dafork.com dafosi.org dagangcheng.com dagongcredit.com dagongnet.com dagongtech.com daguan.com daguangnews.com dagufood.com daguiot.com daguipc.com dagun.net daguzhe.com dagyujt.com dahachuxing.com dahai96.com dahainan.com dahaiwater.com dahaiyang.com dahan-sports.com dahanghaiol.com dahangroup.com dahangsky.com dahangzhou.com dahantc.com dahanyinbang.com dahanyu.com dahao-dahao.com dahaoexpo.com daheapp.com dahecube.com dahei.com daheng-image.com daheng-imaging.com daheng-imavision.com dahengit.com dahepiao.com dahetest.com dahongba.net dahongtec.com dahongtool.com dahouduan.com dahua-cpa.com dahua-ferrules.com dahuaab.com dahuabloc.com dahuaddns.com dahuagong.com dahualan.com dahuap2p.com dahuap2pcloud.com dahuasurvey.com dahuatech.com dahuawang.com dahuhg.com dahuifuwu.com dahuodong.com dai-shi.com dai361.com daiaotech.com daiban0571.com daibanke.com daibi.com daicelchina.com daicuo.cc daicuo.net daidaicp.com daidaipu.com daidongxi.com daigege.com daigou.com daigraphia.com daihaobiao.com daihing.com daijuchuang.net daijun.com daikandq.com daikuan.com daili321.com dailianmama.com dailianqun.com dailiantong.com dailianzj.com dailiba.com dailidaili.com dailijizhang.cc dailiweishang.com dailugou.com dailybing.com dailygn.com dailyqd.com daimafans.com daimagongfang.com daimami.com daimao.work daimawang.com daimay.com daimg.com dainiter.com dairao.net daishangqian.com daishanmarathon.com daishu.com daishucha.com daishujiankang.com daishutijian.com daisyfin.com daita.red daittotrade.com daivc.com daiwofly.com daiwoqu.com daixiaji.net daixiaobao.com daixiaomi.com daixiaorui.com daixiehyl.com daiyanbao.com daiyanmama.com daiyinzi.com daizitouxiang.com dajan.com dajiabao.com dajiachou.com dajiadou6.com dajiadu8.com dajiaka.com dajialaikan.com dajialawyer.com dajianet.com dajiang365.com dajiangsai.org dajiangtai.com dajianhui.com dajianyouju.com dajiashequ.com dajiashuo.com dajiazhao.com dajiazhongyi.com dajiazulin.com dajibacdn.com dajibapass.com dajie.com dajieimg.com dajilin.com dajinan.com dajingdiao.com dajingmed.com dajixie.com dajke.com dajudeng.com dajuntech.com dajuyuan.net daka.net dakage.com dakahr.com dakamao8.com dakangchem.com dakangmedical.com dakao100.com dakao8.com dakao8.net dakapath.com dakaruanwen.com dakasi.com dakedakedu.com dakejie.com dakekj.com dakele.com dakw.xyz dalaba.com dalanyouxi.com dalao.net dalaosz.com daleigroup.com dalelingtea.com dali-group.com dalian-chuanpiao.com dalianair-china.com dalianbus.com daliancs.com dalianiso.com dalianjiaojing.com dalianshengmi.com daliansky.net daliantyre.com dalianwater.com dalianxianting.com daliaolaser.com daliapp.net dalidaily.com dalidm.com dalifa.com daliha.com dalipan.com dalisanta.com dalongkeji.com dalongyun.com daltonbio.com dalu.net daluma.com daluo.com daluom.com daluwang.net daluxinxi.com dalvhe.com dalvlaw.com dalwiaavieru.com dalwiaebulon.com dalwiakieyne.com dalwiaresham.com dalwl.work dalyfeds.com damai.com damaicheng.com damaimed.com damao.city damatu1.com damddos.com dameisheng.com dameiweb.com dameng.com damiercapital.com damijing.com damingweb.com damiw.com damixs.biz damndigital.com damo-academy.com damodel.com damonroller.com damostar.com damotu.com damoyang.com damuchong.com damuite.com dan-my.com dan-sing.com dan8gui.com danale.com danaleplatform.com danaonao.org danaqsy.com danatlas.com danbagui.com danbaodan.com dance365.com danceinchina.org dancf.com danchuangglobal.com dancihu.com dancingcg.com dancizhan.com dandaiqh.com dandan818.com dandang.org dandanhou.net dandanjiang.tv dandanman.com dandanplay.com dandantang.com dandanvoice.com dandanz.com dandanzkw.com danding.com danding.fun dandinghuayi.com dandongbank.com dandou.com danews.cc dang-jian.com dang3.com dangaocn.com dangaoss.com dangbei.com dangbei.net dangbeiprojector.com dangbiao.com dangcdn.com dangdaiyiyao.com dangdang.com dangdj.com dangguai.com danghongyun.com danghuan.com dangjian.com dangjianwang.com dangjinguiping.com dangpu.com dangtianle.com dangwan.com dangzhi.com dangzhi.net dangzhu.net dangzhuntianqi.com danhao51.com danhaowang.org danhuaer.com danhuangyun.com daniao.org danilelxp.com daningcenter.com daningdaning.com daningtv.com daniopack.com daniuguwang.com daniuit.com daniujiaoyu.com daniushiwan.com daniuwangxiao.com danji100.com danji6.com danji8.com danji9.com danjiang.com danjuanapp.com danjuanfunds.com danjuantaxi.com danjuantec.com danke.com dankegongyu.com dankexiaoyuan.com danlan.org danlancare.com danlanlove.com danlingfuyou.com danlirencomedy.com danlu.net danmaku.live danmaku.tv danmakupie.com danmi.com danming-ic.com danmo.com danmofun.com danmoshui.com danmu.com danniao.com danotest.com danpin.com danqi.com danten.org danteng.me dantengge.org dantin.com dantins.com dantuvc.com danxia.com danxin.net danyang.com danzhaoedu.com danzhou8.com dao-fu.com dao123.com dao3.fun dao42.com dao50.com daoapp.io daoapp.me daoboime.com daochen.com daocloud.io daocloud.vip daocloudapp.com daodao.com daodaojizhang.com daodaozz.com daodejing.org daodian100.com daodianfu.com daodoc.com daododo.com daoduoduo.com daofengdj.com daoguo.com daohang198.com daohang4.com daohang88.com daohangtx.com daohu123.com daohui.net daohuo.shop daoiqi.com daoisms.org daojia-inc.com daojia.com daojiale.com daojialianmeng.com daojishiqi.com daojishiwang.com daokers.com daokeyuedu.com daokoudai.com daomengad.com daomengren.com daomicfo.com daomuol.com daonong.com daopei.net daopub.com daoqin.net daoran.tv daoru.in daoruimi.com daoscript.org daoshui.com daotin.com daotour.com daotudashi.com daovay.com daovoice.io daoxiangcun.com daoxila.com daoxila.net daoyoudao.com daoyu.fun daoyu.me daoyu8.com daoyumiao.com daozhao.com dapai8.com dapan.com dapei.cc dapenggangguanchang.com dapenti.com dapingshidai.com dapiniu.com dappdiscover.com dapustor.com daqi.com daqiao.host daqiguanli.com daqihui.com daqing8080.com daqiso.com daqizhong.com daqo.com daqqd.com daqsoft.com daquan.com daquan.la daquangroup.com daquncnc.com daraz.com daraz.lk daraz.pk dare-auto.com darehui.com daren.today darenfund.com darenjiazu.com darensky.com dareu.com darewayhealth.com darkcloudpiece.com darkmi.com darknight.games darmao.com darongcheng.com darryring.com dartchina.com dartou.com dartzon.com daruan.com darwinlearns.com dasctf.com dasfbio.com dasfjd.com dashanghaizhuce.com dashangu.com dashen520.com dashen8.com dashengji.com dashengpan.com dashengshan.com dashengzuji.com dashenquan.com dashentv.com dashenw.com dashet.com dashgame.com dashi518.com dashichang.work dashigame.com dashikou.com dashisx.com dashitech.com dashiyou.com dashu.com dashubaba.com dashuju123.com dasiyingyu.com dasong108.com dasoujia.com dassm.com dasuan110.com dasuanwang.com dasung.com dasungtech.com dat881.com data-speaker.com data380.com data4h.com data5u.com data86.com data86.net data985.com dataarobotics.com datacaciques.com datacanvas.com datacname.com datacomo.com datacvg.com datadragon.net dataduoduo.com dataesb.com dataeye.com datafun.vip datag.vip datagear.tech datagrand.com datahome2026.com datahubtrack.com datahuif.com dataie.com dataing.com datang.com datang.net datangnxp.com datangweishi.com datangyouxi-inc.com datangyouxia.com datangyouxib.com datangyouxic.com datangyouxie.com datangzww.com dataodu.com dataojo.com dataoke.com datarelab.com datarj.com datasheet.hk datasheet5.com datastoragesummit.com datatang.com datatech-info.com datatist.com datatocn.com datatool.vip datauseful.com dataxcrm.com datayes.com datazt.com datealive.com datebao.com datepj.com datesdata.com datia-inspect.com datianmen.com datk.anythinktech.com datong.info datongjianshe.com datongtaxi.com datuc.com daugres.com dauteen.com dav01.com davdian.com davidlovezoe.club davincimotor.com davinfo.com davost.com davycloud.com dawangling.com dawawa.com daweiai.com daweijita.com daweisoft.com daweiyishu.com dawenbo.com dawenling.com dawenming.com dawensk.com dawenxue.net dawenxue.org dawnarc.com dawndiy.com dawnjs.com dawnlab.me dawnled.net dawntech.net dawuhanapp.com dawurencai.com dawuyu.com dawx.com dawx.net daxfix.com daxia.com daxiang91.com daxianghuyu.com daxiangkeji.com daxianglingke.com daxianglink.com daxiangqun.net daxiangshouche.com daxianzuji.com daxicn.com daxiit.com daxiongxueyixue.com daxishi.com daxitouzi.com daxue52.com daxuecidian.com daxuecn.com daxueit.com daxuejiayou.com daxuelu.com daxuepc.com daxuesoutijiang.com daxuetian.com daxuewang.com day66.com dayaguqin.com dayainfo.com dayang.group dayangjt.com dayangliangyou.com dayangmotorcycle.com dayangmuye.com dayangshop.com dayangsz.com dayanmei.com dayanyanglao.com dayanzai.me dayapress.com dayayu.com dayclover.com daydao.com dayday.plus daydaymap.com daydays.com daydaytest.com daydayup123.com daydx.com daye.hk dayee.com dayehome.com dayesmart.com dayezheng.com dayhao.com dayhellohotel.com dayhr.com dayi100.com dayichang.com dayifund.org dayihangqing.com dayila.net dayilive.com dayima.com dayin.com dayin.la dayin8.com dayinhu.com dayinjiqudong.com dayinmao.com dayinpai.com dayinpiano.com dayirc.com dayishengwu.com dayitea.com dayiwater.com dayong.name dayoo.com dayrui.com dayscamera.com daysou.com dayspringpharma.com dayss.com daysview.com dayu-group.com dayu-valve.com dayu.com dayu.work dayuanqy.com dayuansouti.com dayuanzong.com dayucdn.com dayucdntip.com dayue.com dayue8.com dayugame.net dayugf.com dayugslb.com dayukaoshi.com dayukeji.com dayulego.com dayulegobak.com dayungroup.com dayuntongzhou.com dayup.org dayustudy.com dayutukun.com dayuzy.com daza168.com dazanggui.org dazhangfang.com dazhangqiu.com dazhantai.com dazhe5.com dazheda.com dazhengtop.com dazhenzimiao.com dazhewa.com dazhicorp.com dazhistudy.com dazhitech.com dazhixue.com dazhong-valve.com dazhong.com dazhongbanben.com dazhonghr.com dazhongkanche.com dazhoumzj.com dazhoushan.com dazhouwater.com dazhu1988.com dazhuangwang.com dazhuangyan.com dazibo.com dazidazi.com dazijia.com daziya.com dazizhuanqian.net dazoread.com dazpin.com daztoutiao.com dazuhang.com dazui.com dazuichazi.com dazzle-fashion.com db-cache.com db.ci db162.com db23bc6de1024.beer db2b0d032aefa755.com db5f9bf125415ac9.com db6bfe859b7825fc.com db6f227cfb009078.com db8b41ie5.com db9w.com db9x.com dba95a0a82447ac3.com dbank.com dbankcdn.com dbankcdn.ru dbankcloud.asia dbankcloud.com dbankcloud.eu dbankcloud.ru dbankedge.asia dbankedge.net dbanote.com dbaobao.com dbatmb.com dbbqb.com dbc2000.net dbcdh.com dbcsq.com dbdna.com dbe5c181b58111e2.com dbf71743f55a8ff4.com dbh123.net dbjsjt.com dbkan.com dbkuaizi.com dblgf.com dbljj.com dbmailserver.com dbmall.com dbmeta.net dbnuo.com dbpan.com dbparking.com dbqf.xyz dbqgg.com dbs724.com dbscar.com dbshop.net dbss360.com dbtclub.com dbyun.net dbzy5.com dc-cn.com dc0792.com dc168cc6a2fe73d3.com dc568.com dc5febe781010.beer dc625.com dc8c1b13e8a9a886.com dcarapi.com dcarimg.com dcarlive.com dcarstatic.com dcarvod.com dcatgame.com dcb-group.com dcb123.com dcccji.com dcdapp.com dcdkjx.com dcdnx.com dceb32e758290eed.com dcef3671664fa11b.com dcement.com dcexport.work dcf365.com dcg.microsoft.com dcg123.com dcgqt.com dcgsi.com dcgstd.com dchotel.net dcic-china.com dcits.com dckgjt.com dckj19.com dckygroup.com dcloud.io dcloud.xin dcloudlive.com dcloudlive.net dclouds.cloud dcloudstc.com dcloudstc.net dclygroup.com dcmagcn.com dcmk17.com dcn01.ps4.update.playstation.net dcn01.ps5.update.playstation.net dcpc.com dcpfb.com dcqsq.com dcsapi.com dcshow.com dcsjw.com dcsme.org dcsq.com dcstack.org dcutp.com dcwucu.com dcxnews.com dcxx.vip dcxzmxa.com dcybkj.com dcyiyao.com dcyjc.com dcyz.com dcyzq.com dczcsc.com dczkj.com dczy168.com dd-advisor.com dd-gz.com dd-img.com dd.ci dd.ma dd001.net dd01.com dd0415.net dd0513702337fb4b.com dd0d7e15310311.beer dd128.com dd2007.com dd208.com dd369.com dd373.com dd4.com dd536adb110272.beer dd666mir.com dd903b8fbe36755d.com ddadaal.me ddahr.net ddbiquge.cc ddbiquge.com ddbiu.com ddblquge.cc ddbqgtxt.cc ddcdn.com ddcheshi.com ddcits.com ddcorp.net ddcsjw.com ddcwl.com ddd-china.com dddazhe.com ddddns.net ddddocr.com ddddyres.com dddfe.com dddgong.com dddja.com dddki.com dddkq.com dddwan.com dde-desktop.org ddedush.com ddfans.com ddfchina.com ddfresh.net ddfzb.com ddgjjj.com ddguanhuai.com ddhly.com ddhy.com ddiaas.com ddianle.com ddimg.mobi ddimg.net dding.net ddj123.com ddjjzz.com ddjk.com ddjs-cn.com ddjsyx.com ddkanqiu.cc ddkanqiu.net ddkanqu.com ddkids.com ddkt365.com ddky.com ddle.cc ddlequ.com ddmaicai.net ddmap.com ddmc.mobi ddmer.com ddmogo.com ddnddn.com ddnscn.com ddnspod.com ddnsto.com ddnx.com ddong.com ddonplan.com ddooo.com ddoor.net ddos.com ddos567.net ddosc.com ddosendns.com ddosfh.com ddoshy.com ddosjq.xyz ddove.com ddpai.com ddpoc.com ddqcw.com ddsaas.com ddsiojf.xyz ddsk.la ddsm.com ddstarapp.com ddsy.com ddtk.vip ddtsg.com ddtugame.com ddtxgame.com ddun.com ddunyun.com ddurl.to dduser.mobi dduwork.com ddvaj.com ddweilai.com ddwgame.com ddwhm.com ddwjs.com ddxhx.com ddxhyl.com ddxq.mobi ddxs.vip ddxsku.com ddxstxt8.com ddyjapp.com ddyqh.com ddyun.com ddyun123.com ddyylczz.com ddyylczzs.com ddz.com ddzf.cc ddzhj.com ddzl.net ddzls.net ddzn.tech ddznzj.com ddztv.com ddzui.com ddzuqin.com ddzuwu.com de-ele.com de-moe.org de-tencentclb.cloud de-tencentclb.com de-tencentclb.net de-tencentclb.work de0.cc de1000.com de123.net de1919.com de2edec3011032.beer de56.com de83cc01111.xin de9745f491023.beer deaconhousewuxi.com deadnine.com deafchina.com deahu.com dealsbank.com dealsmake.com deansys.com dear520dear.com dearclick.com dearda.com dearedu.com dearisland.com deartree.com dearxuan.com deasun.com deathearth.com deau-cable.com deb1c7bad11031.beer debao.com debao123.com debaochina.com debbe32e10b635a7.com deben.me debug.moe debugdump.com debugo.com debuycn.com decansmd.com decard.com decd5279411012.beer decent-china.com decentcapital.com decerp.cc dechang-chem.com dechingroup.com dechlogi.com dechong.site dechua.com deckmanager.net declous.com decohome.cc decoration.ltd decorcn.com decwhy.com deczh.com dede-zj.com dede168.com dedeadmin.com dedebiz.com dedecms.com dedecms8.com dedecmsmuban.com dedecmsplus.com dedeeims.com dedegg.com dedejs.com dedemao.com dedesos.com dedezhuji.com deebio.com deeceal.com deehon.com deemos.com deep-os.com deep56.com deepblog.net deepc.cc deepcloudsdp.com deepcoin.red deepcool.com deepdone.work deepepg.com deepermobile.com deepfast.com deepin-ai.com deepin.com deepin.org deepinghost.com deepinmind.com deepinos.org deepinout.com deepinstall.com deepleaper.com deeplearn.me deeplearn.work deepmd.net deepoon.com deeprouter.org deepseapioneer.com deepseek.com deepseeksvc.com deepsheet.net deeptechchina.com deeptrain.net deeptrip.com deepvinci.tech deepvps.com deer-express.com deerex.com deerfieldbch.com deerhappy.com deerjet.com deerma.com deernice.com deexchina.com def5feeaeb220776.com defair.online defcoding.com defeng999.com defineabc.com defoen.com defofy.com defoile.com defuv.com defvul.com degitec-jiangyin.com deguoguanjia.com dehe99.com deheheng.com deheng.com dehengclinic.com dehenglaw.com dehsm.com dehua.net dehuaca.com dehuigroup.com dehuisk.com dehuiyuan.com dehumidifierchina.com deifgs.com deikuo.com dejia-shijiebei1.com dejiart.com dejiplaza.com dekeego.com dekekc.com dekls.com dekonglife.com dektw.com dekuncn.com dekunyy.com dekyy.com del.pub delaiyun.cloud delanauto.com dele.com deli-tools.com delib2b.com delibao.com delicacyup.com delicloud.com delilegal.com delin-sh.com delingkeji.com delinklab.com delipu.cc delishi.com deliworld.com delixi-electric.com delixi.com delixidrive.com deliyun.com dell-alw.com dell-brand.com dell027.com dellecs.com dellemc-solution.com dellenglish.com dellfuwuqi.com dellhpibm.com dellrsm.com dellzj.com delong-group.com delonggou.com delonix.group delovabio.com delphi-connect.com delphijiaocheng.com deltaverse.net delun-group.com delunyk.com deluxewatchbox.com deluxworld.com deluya.com demanmedical.com demark-jgkj.com demaxmedical.com demingzi.com demix.cc demixc.com demizhongbao.com demlution.com demo-15.work demo1024.com demo8.com demodashi.com demogic.com demon.tw demonlee.tech demososo.com denachina.com denaircompressor.com deng88.com denganliang.com dengbaogonggao.com dengbi8.com dengbiao.com dengdingsheng.com dengfengwater.com dengguobi.com denghao.org denghaoxuan.com denghuo.com dengkanwen.com dengmoe.com dengni.org dengta120.com dengtabao.com dengtacj.com dengtadaka.com dengxiaolong.com dengxiaopingnet.com deniulor.com denon-proaudio.com denopark.com denson168.com dentistshow.com denverokie.com denza.cloud denzacloud.com deosen.com deosin.com dep-star.com depailed.com depamu.com dependdns.com dephir.com deppon.com depthlink.com depuchem.com deqingbank.com dercase.com derekchou.com derenbs.com derlook.com derucci.com derun-env.com derunbao.com derunss.com deruxi.com derzh.com des8.com desano.com desay.com desaysv.com deserts.io deshaus.com desheng-edu.com desheng-school.com desheng.net deshengdachem.com deshenghonglan.com deshengtea.com deshengzj.com deshicheng.com design-engine.org design006.com designjiaoshi.com designkit.com designmoma.com designshidai.com designsketchskill.com designuuu.com designwithlove.org designyunasai.com desk-site.com deskcar.com deskcity.com deskcity.org deskguanjia.com deskpool.com desktop-calculator.com desktopcal.com deskwc.com desnerboats.com desoonproduct.com destoon.com desunpv.com desuntech.com deswfggabc.work detailroi.com detaisy.com deteufelde.shop detion.com detonfan.com detonger.com detu.com dev-dh.com dev59.com devashen.com devask.net devbean.net devblogs.microsoft.com devclub.cc devdir.biz devedu.net develenv.com developer.htcvive.com developer.microsoft.com developer.vive.com developers.pub developwechat.com developweixin.com develpress.com devemi.com devework.com devexel-tech.com devexel.com devexpresscn.com devicewell.com devil0629.com devio.org devops-dev.com devotiongroup.com devourad.com devpss.com devsapp.net devsiki.com devskyr.com devtang.com devui.design devweixin.com devzeng.com deweier.com deweisi.net dewmobile.net dewu.com dewu.net dewucdn.com dewumall.com dewx.net dexejhyxh.com dexi009.com dexian.mobi dexingroup.com dexingrv.com dexinhr.com dexinmobi.com dexinquan.com dexinrq.com dexinsg.com dexiya.com dextercai.com dexuee.com dexueedu.com dexunyun.com dexxg.com deyangbk.com deyatech.com deyayk.com deyecloud.com deyeehome.com deyerchem.com deyi.com deyi.net deyicc.com deyijijin.org deyiso.com deyle-electric.com deyouec.com deyoulife.com deyuan.fun deyuantextile.com deyun.fun dezhanyigou.com dezhongmobi.com dezhoudaily.com dezhoulawyer.com dezhuyun.com dezstia.com df-1912.com df-college.com df-gd.com df-nissanfc.com df-nissanfl.com df0535.com df321b81208721f1.com df33.com df3n43m.com df81.com df9377.com df962388.com dfb232ce910241.beer dfcfs.com dfcfw.com dfcms.net dfcx-bj.com dfdaily.com dfdd-toubiaole.com dfdinsin.com dfdtt.com dfebda0512.vip dfedu.com dfeeb7ee91022.beer dfev.net dffcw.net dfggq.com dfgiso.com dfgsb.com dfgsz.com dfham.com dfhog.com dfhon.com dfhr.com dfhrc.com dfhy888.com dfi09181kq.com dfine.tech dfjyun.com dfkhgj.com dfkj.cc dflmtc.com dflzm.com dflzmxs.com dfmc.com dfmcastrol.com dfmingya.com dfnzhp.com dfpost.com dfpz.net dfqcmy.com dfqy.com dfratings.com dfrcb.com dfs168.com dfshurufa.com dfshw.com dfshysw.com dfsjsoft.com dfsmw.com dfsouth.com dfss-club.com dfstw.com dfsyjm.com dftcdq.com dftryy.com dftyyls.com dftzj.com dfwl.net dfwlg.com dfxq.com dfxqc.com dfxwdc.com dfxy.net dfxyw.com dfy027.com dfyanyi.com dfyapp.com dfyl-luxgen.com dfyne.cz dfynet.com dfyoo.com dfysgs.com dfysscy.com dfysw.net dfyuan.com dfyyc.com dfyzx.com dfzbsh.com dfzk.com dfzmzyc.com dfzxvip.com dfzyxy.net dg-360lhx.com dg-dns.com dg-dx.com dg-hanxin.com dg-mall.com dg-niuniu.com dg-tcm.com dg11185.com dg121.com dg456.com dg688.com dgaefi.org dgaiia.com dgbaineng.com dgbgw.com dgbia.com dgbyxny.com dgbzy.com dgcct.com dgchenghe.com dgcia.com dgcpkl.com dgddh.xyz dgdq1688.com dgdqw.com dgdydd.com dgegbj.com dgeia.com dgg.net dggcyy.com dggdk.com dgggs.com dgghy.com dggjqw.com dggjyy.com dggosungroup.com dggq.com dggxxh.com dggywx.com dghgzm.com dghjt.com dghobo17.com dghonggao.net dghqmotor.com dghuafuli.com dginfo.com dgjijiagong668.com dgjiuqi.com dgjoy.co dgjwsy.com dgjx.net dgjxmk.com dgjy.net dgkj888.com dglpool.com dglyjx.com dglyyun.com dglzd.com dgmama.net dgn.cc dgndf.com dgnekon.com dgnet.net dgnkj.com dgobch.com dgod.net dgouyijiance.com dgovp.com dgozp.com dgpenghao.com dgphospital.com dgpp.com dgprj.com dgpump86.com dgqczz.com dgqianguan.com dgqjj.com dgqzxx.net dgrbcj.com dgrcw.com dgrsa.org dgruizhi.com dgrunhe.com dgs-td2.com dgsbtjx.com dgsfweb.com dgshifeng.com dgshunjin.com dgsltx.com dgsme.org dgspk.com dgswhg.com dgsztyy.com dgt-factory.com dgtianbao.xin dgtle.com dgtn1718.org dgtpcj.com dgtungwah.com dgtuoyue.com dgtzjt.com dgw888.com dgweierwj.com dgweitian.com dgwia.com dgwlhj.com dgwtrl.com dgxbjg.com dgxinde.net dgxue.com dgxxz.com dgxzxjj.com dgyanda.com dgyejia.com dgyhsb.com dgyian.com dgyibiao.com dgykz.com dgylec.com dgyq-water.com dgysdx.com dgytdz.com dgyuanyi.com dgyw.cc dgzaixing.com dgzcsy.net dgzhihongjx.com dgzhisen.com dgzj.com dgzp.com dgzx.net dgzz1.com dh.cx dh01.com dh0580.com dh08126.net dh33660.com dh3t.com dh5idnf.com dh7373.com dh7999.com dh810.com dh818.com dh9191.com dh978.com dhaitun.com dhaof.com dhasgf.com dhb.hk dhb168.com dhboy.com dhbs86.com dhchain.com dhcooker.com dhdly.com dhg858a07.shop dhgfhgsfg.com dhgsqjcnd.com dhgsqjcnj.com dhgsqjcnm.com dhguanye.com dhgz.com dhh-gz.com dhhqfw.com dhidcw.com dhimavision.com dhj3413.com dhjt.com dhkm.vip dhkq120.com dhkqyy.com dhl-online.com dhl-y.info dhl8o3x5.bond dhlfki.shop dhlijg.bond dhlvux.asia dhlzhif.asia dhmeri.com dhmsnyy.com dhppa.com dhqfz.com dhqtech.com dhrcbank.com dhrest.com dhrest2.com dhs-sports.com dhsrmyy.com dhszyy.net dht5867.com dhtest.com dhtopology.com dhtv.tv dhuili.com dhvisiontech.com dhw-wiremesh.com dhw22.com dhwooden.com dhxx.com dhyct.com dhyjaqa.com dhyz.net dhzfgm.com dhznib.com di1k.com di3ke.com di7cn.net di88.net diablohu.com diact.com diaidi.com diaigame.com dialogue32.com dialoguechinefrance.com diamondfavour.net diamondfsd.com diamondinnovations.cfd dian-ai.com dian-stable.com dian.so dian123.com dian234.com dian5.com dian500.com dian68.net dianapp.com dianbaobao.com dianbb.com dianbio.com dianbo.org dianbobao.com dianbucuo.com diancang.xyz dianchacha.com dianchizhijia.com dianchouapp.com diandanbao.com diandao.org diandaxia.com diandeng.tech diandian.com diandian.net diandianmeijia.com diandiannuo.com diandianqi.com diandianshu.com diandianwaimai.com diandianys.com diandianzhe.com diandong.com diandongche.biz dianfanyingyu.com dianfengcms.com dianfuji.com diangan.org diangeapp.com diangong8.com diangongbao.com diangongjiang.com diangongwu.com dianhen.com dianhong.com dianhou.com dianji007.com dianjianggame.com dianjiangrcw.com dianjiangxin.cc dianjihr.com dianjin123.com dianjinghu.com dianjingzhe.com dianjipinpai.com dianjiqi.com diankeji.com dianlanbao.com dianlanyibiao.com dianli.com dianli08.com dianli100.com dianlinet.com dianlut.com dianlut.net dianmi365.com diannaoban.com diannaodian.com diannaodiy.net diannaoxianka.com dianopen.com dianou.com dianpifa.com dianping.com dianpingba.com dianpushuo.com dianqikaiguan.com dianqizazhi.com dianqugame.com dianranart.com dianremo1688.com dianrong.com dianru.com dianru.net dians.net diansan.com dianshanchina.com dianshang.com dianshangmulu.com dianshangyi.com dianshi.com dianshihome.com dianshijia.com dianshu119.com diansu-cdn.net diantads.com diantangzuyi.com diantonghudong.com diantoushi.com diantui.net dianwanhezi.com dianwannan.com dianwanshidai.com dianwantu.com dianwo98.com dianwoba.com dianwoda.com dianwolf.com dianwoyou.com dianxian.net dianxian8.com dianxiandianlanchang.com dianxiaobao.net dianxiaomi.com dianxin.com dianxin.net dianxinnews.com dianxinos.com dianyacloud.com dianyingshow.com dianyingwenxue.com dianyong123.com dianyongqi.com dianyuan.com dianzhanggui.net dianzhangzhipin.com dianzheli.com dianzhenkeji.com dianzhentan.com dianzhi.com dianzhong.com dianzi6.com dianziaihaozhe.com dianzihetong.net dianzixuexi.com dianzizhao.com diaoben.com diaochapai.com diaochapai.net diaochatong.com diaocnc.com diaoding.biz diaojiang.com diaokeji.net diaosaas.com diaosi.net diaosiweb.net diaosu9.com diaosu98.com diaosunet.com diaosuoju.net diaox2.com diaoy.com diaoyan001.com diaoyou.com diaoyoupai.com diaoyu.com diaoyu123.com diaoyu365.com diaoyuren.com diaoyuwang.com diaoyuweng.com diary365.net diaxue.com diazha.com dibaifang.com dibang18.com dibaotong.com dibchina.com dibcn.com diboot.com dibunet.com dic123.com dicastal.com dichan.com dichan.net dichanlao.com dichanren.com dichanw.com dichedai.com dicila-china.com dicksflashsale-vip.com dicom365.com dictall.com dida110.com dida365.com didabds.com didacar.com didachuxing.com didamall.com didao.com didaoshidai.com didapaper.com didapinche.com didatravel.com didatxt.com didctf.com dideu.com didi-food.com didi-trip.com didi.xin didialift.com didiapp.com didibuluo.com didichuxing.com dididadidi.com dididapiao.com dididi88.com didiglobal.com didimobility.com didiopenapi.com didipai.com didiqiche.com didishijie.com didispace.com didistatic.com diditaxi.com didiwuxian.com didixk.com didiyun.com didiyun.org didiyunapi.com diducoder.com diebian.net dieclock.com diemoe.net dieniao.com dieqiu.com diershoubing.com dietfd.com diexuan.net diexun.com dieyanli.com difanapp.com difersports.com diffusefuture.com diffusenetwork.com dig-gy.com digcredit.com digeeker.com digi-wo.com digigd.com digihail.com digihuman.com digiic.com digiinfr.com digimons.net digirepub.com digisky.com digit3ds.com digital-hangzhou.com digital-ren.com digitalchina.com digitalchinahealth.org digitalcloudshield.com digitalcnzz.com digitalcq.com digitaldrew.net digitalfiles.org digitaling.com digitaljx.com digitalmanu.com digitalvolvo.com digitalwuhan.com digitalwuhan.net digitalyili.com digitclouds.com digitguangdong.com digitimetech.com digitlink.net digitser.net digitwater.com digiwin.com digiwoods.com digiwork.com digod.com digoexpress.com digsur.com digu.com digu.plus digu365.com digua.com diguage.com diguazu.com dihaobedding.com dihaopipe.com dihaowa.com dihuaikeji.com diiqu.com dijianggroup.com dijingchao.com dijiuban.com dikeqc.com dili360.com dili365.com dilidili.com diliy.com dima-industry.com dimei88.com dimeng.vip dimensi-9.com dimenspace.com dimg04.tripcdn.com dimocap.com dimolabel.com dimsmary.tech dimsolo.com dimtown.com dinais.com dinarspeculator.com dindin.com ding-chuang.com ding-liang.com dingbang99.com dingcaicai.com dingcooltech.com dingdachuxing.com dingdandao.com dingdangchem.com dingdanggj.com dingdangjia.net dingdangnao.com dingdanxia.com dingdatech.com dingdd.com dingdean.com dingdi.com dingdian001.com dingdiange.org dingdiann.com dingdiann.net dingdiansk.com dingdianxs.la dingdianzw.com dingding.com dingding.xin dingdingdan.com dingdingdoctor.com dingdingkaike.com dingdingtingche.com dingdingzn.com dingdone.com dingdongcloud.com dingdongebusiness.com dingdongmao.com dingdongxiaoqu.com dingdx.com dingefactory.com dingertai.com dingfubang.com dinggebaojian.com dinggou.org dinggu.net dinghaiec.com dinghantech.com dinghengjc.com dinghu.com dinghuakuai.com dinghuaren.com dinghui.org dinghuo123.com dinghuo365.com dinghuoche.com dinghuovip.com dingjiwangluo.com dingkeji.com dinglia.com dingliangame.com dinglianhuanbao.com dinglicom.com dinglipin.net dinglongchem.com dinglongjx.com dinglutang.com dingoa.com dingqiao.cc dingqiaoks.com dingqibao.com dingqidong.com dingqingyun.com dingrongxd.com dingrtc.com dingruxin.com dingsheng.com dingso.com dingtalent.com dingtalk.com dingtalk.net dingtalkapps.com dingtalkcloud.com dingtangzqx.com dingteam.com dingtoo.com dingweilishi.com dingwenacademy.com dingxiang-inc.com dingxikeji.com dingxinwen.com dingxiushipin.com dingxutonghui.com dingyang.com dingyanqf.com dingyantec.com dingyao17.com dingyue-ele.com dingyueads.com dingzhijl.com dingzhoudaily.com dingzhourencai.com diningcity.asia dinju.com dinpay.com dinsense.com dinte.work dinyocasa.com dinzd.com diodecy.com dioenglish.com diomasce.com dionly.com diopic.net dious-f.com dipan.com dipephoto.com dipont.com dippstar.com diqiuw.com diqua.com dir001.com dir28.com directui.com dis9.net disccrds.com discount-polska.store discourse-studies.com discoversources.com discoveryriflescope.com discrepancye.com discuz.chat discuz.com discuz.net discuz.org discuz.vip discuzfans.net discuzlab.com disenjn.com dishanhuanbao.com dishen.com dishuge.com dishuizhijia.com disimy.com dislux.com dislytegame.com dismall.com displink.com distantmeaning.com distinctclinic.com ditai.fun ditan.com ditan360.com ditian-tech.com ditianshanhe.com ditiefuli.com ditiezu.com ditiezu.net ditrit.com ditu.live.com dituhui.com dituw.net dituwuyou.com dituyi.com diugai.com diuta.com diuut.com divcss5.com divepai.com diving-fish.com divizg.com divoiotcloud.com diwork.com diwuyuan.com dixinkj.com dixintong.com diy10.com diyahz.com diybcq.com diydiymall.com diygogogo.com diygw.com diyhi.com diyibox.com diyicai.com diyidan.com diyidan.net diyidanhao.com diyiedu.com diyifanwen.com diyifanwen.net diyigaokao.com diyihuifu.com diyiliuxue.com diyinews.com diyishijian.com diyixiazai.com diyixin.com diyiyou.com diyiyt.com diyiyunshi.com diyiziti.com diyleyuan.com diymianmo.com diymysite.com diynova.com diyosl.com diypda.com diyring.cc diyyh.com diyzhen.com dizalpharma.com dizgslb.com dizh.net dizhimei.com dizhu.org dizhuche.com diziguiwang.com dizishu.com dizzylab.net dj-dj.net dj.net dj.tc dj10.com dj134.com dj16.com dj175.com dj193.com dj63.com dj89.com dj92.cc dj92cc.com dj96.com dj97.com dj99.com djbh.net djbhjg.net djbx.com djc8888.com djcc.com djcp099.com djcscs.com djcx.cc djdjapp.com djdkk.com djdsh.com djduoduo.com djec.net djeconomic.com djf.com djf313.com djfensi.com djfrj.com djgy.com djhxn.com dji.com dji.ink dji.net djiang.net djiavip.com djicdn.com djigate.com djiits.com djiops.com djiservice.org djjgj.com djjlseo.com djjw.com djjyzly.com djkgongshui.com djkk.com djkpai.com djksh.com djksq.com djkxl.com djlcom.net djlmvip.com djlsoft.net djm-bj.com djmillison.com djserver.center djsh5.com djstechpc.com djstg.com djtpf.com djtpt.com djtt.com djttw.com djtz.net dju8.com djunf.com djuu.com djwjsj.com djxcable.com djxww.com djy517.com djye.com djyg.shop djyinyue.com djyjob.com djymjsw.com djyule.com djzhj.com djzr88.com djzyg.com dk-lexus.com dk8s.com dkashop.com dkcloudlive.com dkdangle.com dkdgroup.com dkdlsj.com dkdsfrwety.xyz dkewl.com dkfinancing.com dkgyw.com dkhg23.com dkhs.com dkjiaoyang.com dkjmy.com dkjmyq.com dklogs.net dkmol.net dknsankf.com dkntgc.com dksgames.com dkskcloud.com dktad.com dktzjt.com dku51.com dky.cc dkybpc.com dkykyt5516.vip dkzt.com dkzx.net dl-hf.com dl-hr.com dl-kg.com dl-meitu.com dl-rc.com dl.delivery.mp.microsoft.com dl0728.com dl23zx.com dl2link.com dl56.net dl8z.com dlairport.com dlbaohuang.com dlbbdk.com dlbbs.com dlbh.net dlbiotech.com dlcaic.com dlcsos.com dld56.com dldlsw.com dldm.com dle-news.xyz dledu.com dlfederal.com dlfeyljt.com dlfy-metalparts.com dlg-expo.com dlgouji.com dlgslb.net dlgwbn.com dlgxbl.com dlhaibaobio.com dlhope.com dlhospital.com dlhuayang.com dlhwjq.com dljczb.com dljianbing.com dljierui.com dljlxx.com dljrw.com dljs.net dljsjt.com dlkldz.com dlkykycc55.com dllawyers.org dllzj.com dlmeasure.com dlmianshuiche.com dlmonita.com dlmyzf.com dlmzk.com dlnel.com dlnel.org dlnyzb.com dlonng.com dlosri.com dlouf.com dlphoschem.com dlpuwan.com dlqcgz.com dlrkb.com dls88.com dlsccn.com dlsgs.com dlshian.com dlsjyy.com dlsqb.com dlssa.com dlsstax.com dlsunworld.com dlszywz.com dlteacher.com dltm.net dltobacco.com dltubu.com dlvalve.com dlw-lighting.com dlw360.com dlw666.com dlwang.vip dlwjdh.com dlwmkj.com dlwx369.com dlxgjy.com dlxk.com dlxmicro.com dlxww.com dly56.com dlyy365.com dlzb.com dlzbxx.com dlzj.net dlzs-audio.com dlztb.com dlzxyy.com dlzyc.com dm-hr.net dm004.net dm0775.com dm21.com dm300.com dm456.co dm5.com dm591.com dm5u.com dm67.com dm9.com dma13.org dmacg.net dmaking.com dmall.com dmallcdn.com dmallovo.com dmb168.com dmcdn.com dmd968.com dmdaili.com dmeg88.com dmeiti.com dmeiti.net dmeng.net dmentt.help dmgapp.com dmgeek.com dmggb.com dmgpark.com dmguo.com dmgyta.com dmgytb.com dmhlj.com dmhmusic.com dmhy.com dmicrobe.com dmiug.com dmjk120.com dmjnb.com dmjvip.com dmm.ink dmmaterial.com dmooo.com dmpdmp.com dmpdsp.com dmplugin.net dmqhyadmin.com dmqst.com dmqwl.com dmread.com dmrta.com dmrtb.com dms365.com dmssc.net dmtemp.com dmtg.com dmtgy.com dmu-1.com dmvvv.com dmxs.net dmyy.cc dmzfa.com dmzgame.com dmzj.com dmzlcn.com dmzx.com dmzzbjb.net dn.com dn23.com dn580.com dn8188.com dnake-park.com dnatupu.com dnbbn.com dnbbs.com dnbiz.com dncable.com dndc.cloud dnettvbox.com dnfziliao.com dngswin7.com dngz.net dnhcc.com dningbo.com dnion.com dnjd.com dnjsb.com dnlunwen.com dnmall.com dnmcn.com dnnunion.com dnole.com dnparking.com dnpz.net dnpz123.com dnqc.com dnrenfang.com dns-diy.com dns-dns.net dns-sky.com dns-url.com dns-waf.com dns.com dns.la dns.pub dns002.com dns0755.net dns100.net dns110.com dns123.net dns12345.com dns200.net dns2008.com dns567.com dns6132.com dns666.com dns6868.com dns800.com dnsabc.com dnsany.com dnsapi12.com dnsbbzj.com dnsbubu.com dnsce.com dnscnc.com dnsdaquan.com dnsddos.com dnsdizhi.com dnse0.com dnse0.net dnse1.com dnse1.net dnse2.com dnse2.net dnse3.com dnse3.net dnse4.com dnse4.net dnse5.com dnse5.net dnse6.com dnse6.net dnse7.com dnse7.net dnse9.com dnse9.net dnsfamily.com dnsfast.online dnsff.com dnsfox.net dnsgtm.com dnsgulf.net dnsh6666.com dnshe.com dnsidentity.com dnsinside.net dnsip.com dnsip.net dnsis.net dnsjia.com dnsjiasu001.com dnslin.com dnsmeasurement.com dnsmsn.com dnsng.net dnsns5.com dnsns6.com dnsnut.com dnsnw.com dnso.fun dnsoe1.com dnsoe2.com dnsoe3.com dnsoe4.com dnsoe5.com dnsoe6.com dnsoray.net dnsour.com dnspai.com dnspig.com dnspod.com dnspod.mobi dnspod.net dnspod.org dnspood.net dnsppdd.com dnspro.icu dnsrw.com dnss.vip dnssina.com dnstest.vip dnstx88.cc dnsurl.net dnsv1.com dnsv1.net dnsv2.com dnsv2.net dnsv20.com dnsv3.com dnsv3.net dnsv4.com dnsv4.net dnsv5.com dnsv5.net dnsv8.net dnsvcache.com dnsvhost.com dnsvip1.net dnsw7777.com dnswa.com dnswhk.com dnswind.net dnsx9.cc dnsxdp.com dnsxv1.com dnsxv1.net dnsxv2.net dnsxv3.com dnsxv3.net dnsxv4.com dnsxv4.net dnsxv5.com dnsxv5.net dnsy8888.com dnsyy.net dnszftp.com dnszh.com dnszw.com dnurse.com dnv-group.com dnwxwww.com dnxtc.net dnxttech.com dny123.com dny8.com dnyywl.com dnzh.org dnzhuti.com dnzjds.com dnzp.com do-global.com do-won.com do123.net do1618.com do1999.com do35.com doabit.com doata.net dobe-game.com dobechina.com dobest.com dobosc.com dobunkan.com doc-baidu.org doc163.com doc361.net doc88.com doccamera.com docer.com docexcel.net docin.com docin.net dockerinfo.net dockerone.com dockerpull.pw dockone.io dockx.app doclass.com docn.net docodgroup.com docoi.cc docpe.com docs.cdnetworks.com docs.oracle.com docschina.org docshare.org docsj.com docsmall.com docsou.com doctor-network.com doctorbridge.com doctorcom.com doctorkickstart.com doctorscrap.com doctoryou.ai docuarea.org documents.cdnetworks.com docx88.com docxz.com doczj.com dodjoy.com dodo8.com dodobook.net dodoca.com dodoeasy.com dodoedu.com dodoh5.com dodonecq.com dodonew.com dodovip.com doducity.com doercn.com doergob.com doerhr.com doerjob.com doffry.com dofolong.com dog-e-clothing.com dog089a-a66.com dogain.com doganinsaatemlak.com dogecast.com dogecdn.com dogecloud.com dogecoin.studio dogedns.com dogedoge.com dogevideo.com dogfight360.com dogfuzhu.com doggygosubs.com doghun.com doglg.com doglobal.net dogmr.com dogwhere.com dogyun.com doh.plus doh.pub dohai.com dohia.com dohuo.com doibns.com doii.cc doingv.com doit.am doitim.com doitwiki.com doiua.com doki8.com dolcn.com dolfincdnx.com dolfincdnx.net dolfindns.net dolfindnsx.com dolfindnsx.net dolgma.com dolike.com doll-leaves.com doll-zone.com dollphoin.site dollun.com dolovely.net dolphin-browser.com dolphin-global.com dolphin.com dolphincube.com dolphinpaper.com dolphinphp.com dom-3d.net domabio.com domaingz.com domigewear.com domilight.com domob-inc.com domobcdn.com domor.net domp4.cc domp4.net dondonwenda.com done-home.com donews.com dong-shou.com dong-xu.com dong10.com dongaigc.com dongannews.com dongao.com dongaoacc.com dongaocloud.com dongba.com dongbao-cn.com dongbao120.com dongbaoshengwu.com dongbd.com dongbeishifandaxue.com dongbing.wiki dongboauto.com dongbochem.com dongbosy.com dongbucaijing.com dongcai.net dongcaibao.com dongcaibaoxian.com dongcaijijin.com dongchali.net dongchedi.com dongchediapp.com dongcheng120.com dongchenghotels.com dongcheyun.com dongchuangipr.com dongchuanmin.com dongdao.net dongdianqiu.com dongdong.world dongdongaijia.com dongdongliu.com dongdongmai.com dongdongwenda.com dongdongzu.com dongeejiao.com dongfahouse.com dongfang-heater.com dongfang-sisal.com dongfang-wh.com dongfang.com dongfang77.com dongfangfuli.com dongfanglicaishi.com dongfangnews.com dongfangnuojin.com dongfangqb.com dongfangtech.net dongfangzi.cafe dongfeng-honda-ur-v.com dongfeng-honda.com dongfeng-nissan.com dongfeng-robot.com dongfeng.net dongfengem.com dongfengtc.com dongfengtrucks.com dongfou.com dongfund.com donggaoshiye.com dongge.com dongguanguoyao.com dongguantoday.com donghaidl.com donghaifunds.com donghaileasing.com donghailighter.com donghaotest.com donghetea.com donghongzx.com donghuangshanquan.com donghugroup.com donghui.tech donghuihospital.com donghulvdao.com donghushequ.com dongjian.cc dongjiao.cc dongjiaoapp.com dongjiaotn.com dongjiax.com dongjin-cn.com dongjinyu.com dongjueonline.com dongjujituan.com dongjun.cc dongjungroup.com dongjunhui.com dongkafei.com dongkelun.com dongkouren.com donglaishun.com donglangroup.com dongli720.com donglidianji.com donglin.org donglinchem.com donglingying.cc donglinkeji.com donglishuzhai.net donglivillage.com dongliw.com donglizhixin.com donglongfm.com dongman.la dongmansoft.com dongmanwang.com dongmanxingkong.com dongmanzx.com dongmiban.com dongmk.com dongnanmaifeng.com dongnanshan.com dongnanwangjia.com dongni100.com dongniao.net dongnienglish.com dongniyingyu.com dongpeng.net dongpengjieju.com dongpingren.com dongputech.com dongqiang.com dongqiniqin.com dongqiudi.com dongqiudi.net dongri.com dongricn.com dongrv.com dongsentire.com dongsenzs.com dongshengdasha.com dongshiju.com dongshou.com dongshunxinxi.com dongsport.com dongtai588.com dongtaijt.com dongteng.cc dongting.com dongtu.com dongua.com dongwm.com dongxi.net dongxingkonggu.com dongxingnet.com dongxong.com dongxu.com dongyanggas.com dongyangmotor.com dongyao.ren dongyaods.com dongyaowuliu.com dongyewenhua.com dongyimg.com dongyin.com dongyin.net dongyixiang.com dongyoutu.com dongyuansl.com dongyuetruck.com dongyun.biz dongyun01.com dongzee.com dongzhougroup.com dongzhuandi.com dongzhuoyao.com dongzsec.com donhonet.net doniv.net donlim.com donnor.com donoo.net donper.com dontfar.com donvv.com doodoobird.com doofull.com doohe.com dooioo.com dookay.com dooland.com doonsec.com dooo.cc doooor.com doooor.net door-expo.com dooready.com doorhr.com doorqr.com doorzo.app doorzo.net doosunggroup.com doov5g.com dooya.com dopa.com dopic.net dopo-online.net dopoil.com dopool.com dora-control.cdnetworks.com dora-family.com dorapp.com dorcen.com doremi.ink dorgean.com dorole.com dorpule.com dorrr.com doseeing.com doserv.com doservice.com doshome.com dosilicon.com dosk.win dosnap.com dospy.com dossav.com dossen.com dostor.com dosxs.com dot.pub dotaindex.com dotamax.com dotcpp.com dotdotnews.com doteck.com dotgate.com dothantech.com doticloud.com dotty-china.com dotwe.org dou.bz dou.li dou6.cc doubaijiu.com douban.com douban.fm doubanio.com doubao.com doubaocdn.com doubaozhidao.com doubean.com doubilm.com doubimeizhi.com doublearrow.net doublecoinholdings.com doubleeagle-group.com doublestarmingren.com doublewin123.com doublleclinic.com doubo03.com douboshi.net douc.cc doucang.com doucanlk.xyz doucehua.com douchacha.com douco.com doudang.com doudehui.com doudeke.com doudier.com doudou.com doudou.fun doudou.in doudou1217.com doudou520.online doudouad.com doudoubird.com doudouditu.com doudouguo.com doudouknot.com doudouso.com doufan.tv doufm.net dougong.net dougongyun.com douguo.com douguo.net douhao.com douhaomei.com douhua.net douhuameiquan.com douhuawenxue.com douhuaxiongmao.com douhuibuy.com douhuomall.com doujis.com doukantv.com doukeji.com doukou.com doulaicha.com doulaidu.cc doulaidu8.cc doule-ref.com douleyun.net doulongyun.com doumenqu.com doumi.com doumiip.com doumistatic.com doumob.com douniwan.org doupai.cc doupay.com doupocangqiong1.com doupuer.com douqi.com douqq.com doushen.com doushisan.com dousonvalve.com doutian.me doutianshequ.com doutub.com doutuimao.net doutukeji.com doutushe.com douwanweb.com douxiangtao.com douxie.com douya2.com douyabo.com douyacun.com douyadaili.com douyar.com douyin.com douyin766.com douyinact.com douyinact.net douyincdn.com douyinclips.com douyincloud.net douyincloud.run douyinec.com douyinfe.com douyingequ.com douyinhanyu.com douyinliving.com douyinmusicclips.com douyinmusicpromotion.com douyinmusicvideo.com douyinpay.com douyinpic.com douyinshortvideo.com douyinstatic.com douyinvideo.net douyinvod.click douyinvod.com douyinxs.com douyongtuan.com douyou100.com douyu.com douyu.tv douyuex.com douyuscdn.com douyushepin.com douyutv.com douzaimai.com douzi.com douzihuyu.com douzijiasu.com dovechina.com dovepay.com dovesky.com dovov.com dowater.com dowebok.com doweidu.com dowell-health.com dowhere.com down10s.com down123.cc down123.me down199.com down568.com down6.com downabc.com downbei.com downcc.com downcodes.com downfi.com downg.com downhand.com downjoy.com downke.com downkr.com downkuai.com download-cn.msi.com download.microsoft.com download.visualstudio.microsoft.com download.windowsupdate.com downloadcenter.samsung.com downloads.ltd downok.com downos.com downpp.com downqa.com downsave.com downwn.com downxia.com downxing.com downxy.com downyi.com downza.com dowv.com dowway.com dowyuan.com doxo.fun doxue.com doxygen.io doyeah.com doyee.com doyoimg.com doyoo.net doyoudo.com doyouhike.net dozview.com dp.tech dp168.com dp2u.com dpanel.cc dpangzi.com dpcafc.com dpcq1.net dpcyjt.com dpd-hul.cfd dpdfsd.com dpdp.net dpdpt-prtra.cfd dper.com dpfile.com dpgz.com dpifloor.com dpin100.com dpjszs.com dpkyz.com dplor.com dplord.com dplslab.com dpma.cc dpn.net dpqct.com dptech.com dptechnology.net dptel.com dpurat.com dpw.pub dpwl.net dpxkjw.com dpxq.com dpy8.com dq123.com dq247.com dq3c.com dq800.com dq99.net dqccc.cc dqccc.com dqcccc.com dqdaily.com dqdbrc.com dqdg.cc dqdgame.com dqdm.com dqguo.com dqhsrq.com dqhui.com dqhyxh.com dqiis.com dqjob88.com dqlaketour.com dqlnyy.com dqntv.com dqntwl.com dqoooo.com dqpi.net dqpkb.com dqpu.com dqrailing.com dqshdj.com dqshjt.com dqsjt.com dqsldz.com dqsq.net dqsy.net dqtzdt.com dqyadong.net dqyfapiao.com dqyouqi.com dqyq.com dqzboy.com dqzrrq.com dqzsteel.com dr-bj.com dr-jm.com dr-ku.com dr009.com draftstatic.com drageasy.com dragon-chem.com dragon-download.msi.com dragon-guide.net dragon-hotel.com dragonballcn.com dragonest.com dragonfgame.com dragonfly.fun dragonlab.org dragonlcm.com dragonnewsru.com dragonsea-china.com dragonseagroup.com dragonspringwater.com dragontrail.com dragontsc.com dragonwell-jdk.io dragonyq.com drakeet.com dramasclub.com dramx.com drartisan.com drasy.net dratio.com drawyoo.com drbdp.com drcact.com drcbank.com drcg8.com drclvs.com drcnetdns.com drcuiyutao.com drdwy.com dream-loft.com dream-marathon.com dream.ren dream211.com dreamad.mobi dreamai.fun dreamavatar.com dreambig.work dreamboys.org dreamcast.hk dreamchasercapital.com dreame.tech dreamershop.com dreamkite.net dreammeta.net dreamo100.com dreampiggy.com dreams-travel.com dreamshell.cc dreamspark.download.prss.microsoft.com dreamsparkuat.download.prss.microsoft.com drearry.com dreawer.com drebella.com dressmeup-hk.com drgou.com drice.cc driect-jajpviewd00.com driect-sntpjpviewa08.com driectjp-jeobnksad01.com drinkmagazine.asia drinkpoem.com drip.im dripcar.com driver114.com driverchina.com driverdevelop.com drivergenius.com drivers.amd.com driverzeng.com driverzj.com drivethelife.com drjou.cc drlai.com drli.group drlmeng.com drm-lic-dom.net drm-x.com drmaml.com drmsoft.net drockart.com droi.com droiapps.com droiseewd.com droitstock.com droiyou.com drokozz.club dropsec.xyz drouma.com drp321.com drpika.com drry.site drscrewdriver.com drscrm.com drsmilehealth.com drsrp.com drstour.com drtyf.com drugadmin.com drugfuture.com druggcp.net drughk.com drugoogle.com druid.vip drupalla.com drupalproject.org drvceo.com drvi.net drvsky.com drxexpo.com ds-360.com ds-lg.com ds028.com ds123456.com ds5f.com dsary.com dsb.ink dsbaike.com dsblog.net dscbs.com dscq.com dsdbxg.com dsdod.com dsdyf.com dseman.com dser.com dsfdy.com dsfjh.vip dsfpz.com dsfuse.com dsfzcz.com dsfzh.com dsgaokao.com dshigao.com dshltech.com dshrc.com dsilicone.com dsjt.com dskb.co dskj-ops.com dsktjt.com dskystudio.com dslbuy.com dslr120.com dslrpark.com dslt.tech dslvts.com dslwk.com dslyy.com dsm888.com dsmxp.com dsmyiyuan.com dsmzyy.com dsmzyy120.com dsnpz.com dsnzyy120.com dsook.com dsp.com dspczg.pw dspga.com dspgo.com dspmt.com dspwhy.com dsq.com dsqzls.com dsqzxyy.com dsrepark.com dss.hk dsspinfo.com dsssp.com dsstudio.tech dssz.com dst.gov.mo dstcar.com dstfsbc.com dstguanwang.com dsti.net dsw6.com dswjcms.com dswljt.com dswmt.com dswql.com dswx.cc dswzxh.com dsx.ac dsx2020.com dsxdn.com dsxliuxue.com dsxys.pro dsyqt.com dsyun.com dsz.cc dt-paint.com dt-stor.com dt123.net dt830.com dtao.com dtcj.com dtcms.net dtcoalmine.com dtcxw.com dtdcjt.net dtdream.com dtdxcw.com dtechcn.com dtfjw.com dthgdq.com dthr.com dtidc.com dtime.com dtjh-bj.com dtjhgs.com dtlpt.com dtlqg.com dtlty.com dtmbw.com dtmiller.com dtminds.com dtmuban.com dtnews.net dtq.com dtrcb.com dtrcw.net dts007.com dtssyy.com dtstack.com dtstatic.com dtston.com dttc-icp.com dttt.net dtuosh.com dtuyun.com dtwave.com dtxww.com dtxxjq.com dtysky.moe dtyunxi.com dtyzg.com dtzj.com du-hope.com du-xiaomai.com du.biz du7.com du8.com dualaid.com dualspace.com dualspacetech.com duan.red duangks.com duanju.com duanju.fun duanjuzi.com duanlonggang.com duanmale.com duanmeiwen.com duanqu.com duanrong.com duanshipin.vip duanshu.com duantian.com duanwdm.com duanwenxue.com duanwenxue8.com duanxb.com duanxiansen.com duanxianxia.com duanxin.com duanxin520.com duanxindao.com duanzaixian.vip duanzao001.com duanzikuaizui.com duanziya.com duapp-preview.com duapp.com duapp.net duapps.com duasrdwb.com duba.cc duba.com duba.net dubairen.com dubao123.com dubbing.tech dubbingx.com dubbo.io duble.live dubola.com dubprince.com dubyc.com ducafecat.com ducafecat.tech ducar.cc duchina.com duckycn.com duckyset.com dudong.com dudongsheji.com duduaa.com dudubashi.com dududm.com dudujb.com duduji.com dudujuzi.com dudulu.org dudutalk.com duduwo.com duelcn.com dugoogle.com dugrqnn.xyz duguying.net duhao.net duhaobao.net dui.ai dui88.com duia.com duiai.com duibiao.com duibiao.org duibimao.com duiduihuishou.com duiduilian.com duiduipengds.com duijie666.com duikuang.com duimg.com duimin.com duiopen.com duipu.com duishu.com duitang.com duitangwang.com duitianhe.com duiyou360.com duiz.net duizhuang.com dujiabieshu.com dujin.org dujixiao.com dujiza.com dujun.io dukang.com dukechiang.com duketop1.com dukharo.com dukku.com dukuai.com dule.cc dulesocks.com duliangaotu.com dulife.com dulifei.com dullr.com dulwich.org dumall.com dumanhua.com dumasoftware.com dumi0898.com dumpapp.com dun.la dun555.com dun599.com dunan.net dunanac.com dunankeji.com dunbaigo.com dundianwang.com dungeon-server.com dungkarime.com dunhuang-yueqi.com dunhuang.com dunhuangtour.com dunjiaodu.com dunkhome.com dunstanhardcastle.com dunsuan.com dunwang.com dunzhiwang.com duoao.com duobiyi.com duocaish.com duocaitou.com duocengban.org duochang.cc duodaa.com duodanke.com duodele.com duodian.com duodiwan.com duodunj.com duoduo.link duoduo123.com duoduo365.com duoduobang365.com duoduocdn.com duoduocm.com duoduodashi.com duoduoipo.com duoduopan.com duoduoshipin.vip duoduoyin.com duoduoyoucai.com duoduoyouli888.com duoduoyuncai.com duoduozb.com duodutek.com duoduwang.com duoerpharmacy.com duofriend.com duofugroup.com duogouhui.com duohuanbao.com duohui.co duoic.com duokaima.com duokaiwang.com duokaiya.com duokaiyun.com duokan.com duokanbox.com duoke.com duoke.net duokebao.net duokebo.com duoku.com duolabao.com duolabaocdn.com duoladayin.com duolahua.com duolaika.com duolaima.com duolapiao.com duolatom.com duolawk.asia duolayunwang.com duole.com duolebaohuang.com duolebh.com duolebo.com duolegame.com duolegd.com duolegj.com duolegouji.com duolemahjong.com duolemajiang.com duolemao.com duolepdk.com duolephz.com duolesj.com duolesk.com duolexing.com duolexq.com duoliheng.com duoliucui.com duoluodeyu.com duomai.com duomeng.fun duomi.com duomian-static.com duomian.com duomiao.pro duomicheng.com duominuo.com duomiyou.com duomni.com duomo3205.xyz duomob.com duomoyu.com duomu.hk duomu.tv duonvlangceo.com duopaiad.com duopao.com duopei.cc duopei.xyz duopingka.com duoqu.com duorenwei.com duorou.com duorou.me duorou42.com duosai.com duose.com duosenfashion.com duoshan.com duoshitong.com duoshoubang.com duoshuo.com duososo.com duost.com duotai.net duotaoli.com duote.com duotegame.com duoteyx.com duotin.com duotoupiao.com duotuscdn.com duowan.com duowanns.com duoweijt.com duoweisoft.com duowenlvshi.com duoxinqi.com duoxue.com duoyewu.com duoyi.com duoying.com duoyinsu.com duoyoumi.com duozhi.com duozhuayu.com duozhuayu.net duoziwang.com dup2.org dupingzu.com duplo-shandong.com dupola.net dur9.com duread8.com durkcell.com durkeesox.net durkflex.net durongjie.com dusaiphoto.com dusao.vip dusays.com dusdn.com dusdn.net dushaofei.com dushewang.com dushi118.com dushicn.com dushifen.com dushiliren.net dushiquan.net dushu.com dushu.io dushu263.com dushu365.com dushu369.com dushu66.com dushudaren.com duskonlinestore.com dustess.com dustglobal.com dusulang.com dute.me dutenews.com dutils.com dutyfreeyun.com dutype.com duuchin.com duunion.com duusuu.com duwenxue.com duwenz.com duwenzhang.com duwfi.org duxiaomai.net duxiaoman-int.com duxiaoman.com duxiaomanfintech.com duxiaomanfund.com duxiaomantech.com duxiu.com duxuetang.com duyandb.com duyao001.com duyaonet.com duyixing.com duyunfk.com duyunshi.com duzelong.com duzhe.com duzhoumo.com dv37.com dv58.com dvagent.com dvbbs.net dvbcn.com dvbei.com dvd2017.com.tw dvdc100.com dvidc.com dvmama.com dvmission.com dvr163.com dvrdydns.com dvsadive.com dvvvs.com dw-microbiology.com dw4.co dwbxg.com dwdds.com dwforging.com dwgbj.com dwgszc.com dwgwatch.com dwhub.net dwidc.com dwinput.com dwion.com dwjkgl.com dwjpwf.com dwjxz.com dwmoniqi.com dwntme.com dwoke.com dwq.com dwrh.net dwsedu.com dwsgases.com dwstatic.com dwstock.com dwt.life dww11.com dwwin.com dwxyamaha.com dwyeuy.com dwywood.com dwywooden.com dwz.lc dwzhs.com dwzjd.com dx-job.com dx-marine.com dx-tech.com dx00.net dx10000.com dx2008.com dx86.com dxbei.com dxcc.org dxclinics.com dxda.com dxdl1688.com dxdlw.com dxe520.com dxecs.com dxf6.com dxfbk.com dxfblog.com dxgg.co dxguanxian.org dxhuafu.net dxinzf.com dxjs.com dxjt2013.com dxjzz666.com dxlfile.com dxm-cdn.com dxm-int.com dxm-yibai.com dxmjinr.com dxmjuhe.com dxmlcf.com dxmlcfintech.com dxmpay.com dxmstatic.com dxmwx.com dxmyqh.com dxncyy.com dxnky.com dxnt.com dxnwyjw.com dxper.net dxpmedia.com dxqck.com dxqjg.com dxqyy.com dxr.com dxrc.com dxs8.com dxsaxw.com dxsbb.com dxsclass.com dxsdermyy.com dxshtb.com dxsk.com dxsng.com dxsport.com dxsrmyy.com dxsvr.com dxszx.com dxton.com dxtradedata.com dxtyy.com dxuexi.com dxwei.com dxwfgg.com dxxxfl.com dxxzjgdgs.com dxy.com dxy.me dxy.net dxyan.org dxyb.com dxycdn.com dxyer.com dxyff.com dxys.pro dxyykj.com dxzanzhu.com dxzhz.com dxzk88.com dxzq.net dxztc.com dxzw.com dxzx.com dy-bus.com dy-hospital.com dy120.net dy163.cc dy172.com dy1905.net dy2018.com dy2066.com dy3j.com dy558.com dyaobo2029.com dybeta.com dycar.net dyccb.net dycdn.com dycic.net dycjy.com dycloud.run dycloudbk.com dycmyl.com dycnchem.com dycom365.com dycyw.com dydab.com dydata.io dydt.net dye-ol.com dyechina.com dyedu.net dyemp.com dyets-cn.com dyfc.net dyfm200.com dyfsp88.wiki dyg-hec.com dygf.com dygmotor.com dygod.org dygyjs.com dygzs.com dyhculture.com dyhengli.com dyhgames.com dyhjw.com dyhongshun.com dyhuidong.com dyhxgame.com dyjqd.com dyjqlrj.com dyjs.com dyjw.info dyjxjt.com dyjxsj.com dyjymy.com dykszx.com dykz66.com dylc.com dyls.app dyly.com dylyghm.com dymatic.com dymexhealthcare.com dyml.net dymusictape.com dymusicvideo.com dynabook-dbh.com dynavolt.net dynguyeniq.com dyonr.com dypf8.com dyqc.com dyqh.info dyqm888.com dyrbw.com dyrcb.net dyrmt.com dyrs.cc dyrtg.com dysday.com dysgydlc.com dyshf.com dyshortvideo.com dysj.com dysji.com dyspcdntip.com dythmy.com dytmgm.com dytss.com dytt2028.cc dytt789.com dytt7899.com dytt8.net dytt89.com dytuj6zs26.com dyvideotape.com dywcc.com dywuyuan.com dywxs.com dywzx.com dyxldjy.com dyxsdwm.com dyxtw.com dyxuexin.com dyxw.com dyxz.la dyxzyy.com dyys.com dyysdhv.xyz dyysoft.net dyyy120.com dyzdx.com dyzpw.com dyzs163.com dyzsart.com dyzxw.org dz-ailive.com dz-ic.net dz-x.net dz-z.com dz.tt dz000.com dz0566.com dz11.com dz137.com dz169.com dz19.net dz1982.com dz211.com dz31hao.com dz88.com dz98.com dzabosn.com dzbarcode.com dzbchina.com dzbdq.com dzblo.com dzboligang.com dzbxk.com dzcch.com dzcj.tv dzcjw.com dzcmedu.com dzcnc.com dzcolor.com dzcrcgas.com dzdesign.cc dzdiy.com dzdu.com dzdvip.com dzdxs.net dzdzzd.com dzemotor.com dzfang.com dzfc.com dzfjsm.com dzfwjd.com dzgg.com dzglsb.net dzgxq.com dzh.link dzhlive.com dzhope.com dzhqexpo.com dziuu.com dzjc.com dzjkw.net dzjob.net dzjzg.com dzkbw.com dzkx.org dzlaa.com dzlems.net dzljy.com dzllzg.com dzlndygh.com dzmachines.com dzmhospital.com dzng.com dzoptics.com dzp.tv dzpc.net dzpezp.com dzpk.com dzpklite.com dzpknews.com dzqrmyy.com dzqu.com dzqxj.com dzr120.com dzrbs.com dzrcd.com dzronghui.com dzrsteel.com dzs2004.com dzsaas.com dzsaascdn.com dzsc.com dzsdg.com dzsg.com dzsjgroup.com dzsjtjt.com dzsm.com dzspzx.com dzsrcw.com dzst999.com dzszlsyxgs.com dztester.com dztugongbu.net dztv.tv dztz168.com dzvv.com dzw3.com dzwad.com dzwebs.net dzwindows.com dzwork.net dzwww.com dzwww.net dzwy.com dzxsw.net dzxw.net dzxwnews.com dzxxzy.com dzxzh.com dzy.link dzybk.com dzyqc.com dzyule.com dzyysb.com dzyzj.com dzz.cc dzzcgs.com dzzgsw.com dzzoffice.com dzzui.com dzzy88.com dzzyisp.com e-10031.com e-adcon.com e-ande.com e-bidding.org e-buychina.com e-byte.com e-cbest.com e-celap.com e-chinalife.com e-cig-market.com e-ciie.com e-cloudstore.com e-cookies.net e-cspc.com e-cuc.com e-czt.com e-elitech.com e-eway.com e-fangtong.com e-flyinc.com e-fong.com e-ging.com e-ging.net e-giordano.com e-gooo.com e-guofu.com e-hongw.com e-hqins.com e-huaxue.com e-icco.com e-jianxiu.com e-jitp-dom.com e-jitp-dom.net e-jitp-glo.com e-jitp-glo.net e-jjj.com e-jlt.com e-kawai.com e-kays.com e-length.com e-lining.com e-mallchina.com e-mmt.com e-nci.com e-nebula.com e-net.hk e-onekey.com e-peilian.com e-picclife.com e-pointchina.com e-power.vip e-pxn.com e-qdpm.com e-readbook.com e-ruikd.com e-seenet.com e-sleb.com e-sscard.com e-tecsun.com e-tiller.com e-ufnb.com e-uniongroup.com e-vaulting.com e-xina.com e-xp05.vip e0453.com e0514.com e0575.com e0734.com e0838.com e12345.com e1288.com e1299.com e12e.com e13000d6f1019.beer e151475d71020.beer e1617.com e1988.com e213155.com e21cn.com e22a.com e23dns.net e24c.com e253.com e27e02c891010.beer e2capp.com e2edesign.com e2esoft.com e2say.com e307586127f21050.com e32047a8e21fbc0a.com e32a01b94145bb23.com e3492587711012.beer e360e.com e363172a110241.beer e365mall.com e36b9a1c210301.beer e3861.com e38647b2411b17c3.com e399.com e3j.co e3ol.com e4008.com e43bb71e710272.beer e44e4e8c11020.beer e452a362210291.beer e495f363ae7187cf.com e4d0c1f1d1021.beer e4e4c4415fd53198.com e4l4.com e4xk2cvh.work e508250086b14d75.com e53w.com e5413.com e5865f69dee0.xyz e58860e249bf56ad.com e58b70798965b223.com e58f8d5eb11032.beer e5a743f9511d287d.com e5d929dd82a164f1.com e5d9384f510292.beer e5e333e55e5e3d.xyz e5hc.com e5n.com e5sj.com e5tech.com e600.com e656gps.com e65u.com e66609.com e68cname.com e6ad1d0761021.beer e6gps.com e763.com e77b0ff1f10241.beer e7890.com e7ba7566e10291.beer e7cc97fab56d13b6.com e7cn.net e7e6.net e7e7e7.com e7f60ece99e82d92.com e7flash.com e7lang.com e7wan.com e7wei.com e7z.net e8034d5ac1022.beer e80bf18e978d9e37.com e80fb4ced1015.beer e81fd4b49ca5e6a4.com e836g.com e88u.com e890.com e8bfeae1bf34023d.com e8cfdb0ee10272.beer e9527ad346cb0157.com e9797.com e9898.com e99999.com ea-china.com ea-retina.com ea-xing.com ea360.com ea3w.com ea65d2a2f16d6b8c.com ea6d86dbe8e3e423.com ea7c8805e10241.beer ea89f50fde822303.com eabax.com eachnet.com eachsee.com eachtravel.com eachwave.com eadianqi.com eaeacn.com eaecis.com eaf341cc30c286cf.com eafifaonline2.com eagle-sight.com eaglebgm.com eaglebrandgroup.com eagleceramics.com eaglecoin.com eaglejt.com eaglemale.com eaglenos.com eagleyun.com eagllwin.com eagonxc.com eagsen.com eaibot.com eaka365.com eal-ceair.com eallcn.com eallerp.com eamn.net eanfang.com eanmed.com eap2.net eapchina.net ear0.com eardatek.com earlytrip.fun earningapp.info earth-science.net earth-traveller.com earth2037.com earthdq.com earthedu.com earthstar-cloud.com earture.org easck.com eascs.com easea.net easebar.net easecation.net easeconvert.com easefun.info easeheal.com easemob.com easerun.com easesale.com easesdk.com easeslb.com easetuner.com easeus.com easeyedelivery.com eashu.com easi-tech.com easilysend.com easipass.com easipay.net easitcn.com easiu.com easonad.com easou.com east-regis.com east.net east263.com eastall.com eastar-group.com eastbest.com eastbuy.com eastchinafair.com eastcmc.com eastcom-group.com eastcom-sw.com eastcom.com eastcom.site eastcompeace.com eastcoms.com eastday.com eastdesign.net eastdrama.com eastdushi.com easteat.com eastecloud.com eastecp.com eastelsoft.com eastent.com eastern-tek.com easternalong.com easternpose.com eastforever.com eastfu.com easthc.com easthome.com eastib.com easticloud.com eastjl.com eastjq.com eastled.com eastlen.com eastlending.com eastmab.com eastmannplastics.com eastmarathon.com eastmoney.com eastmoneyfutures.com eastmoneyloans.com eastmoneysec.com eastobacco.com eastpharm.com eastpump.com eastshanghaifair.com eastsilver.com eastsoo.com eastspacelight.com eaststarbio.com easttone.com eastunion.net eastups.com eastwin-zc.com eastwinn.com eastwudpharma.com eastyule.com easu.net easugar.com easy-all.net easy-china.com easy-dotnet.com easy-eai.com easy-ent.com easy-h5.com easy-linkholiday.com easy-mock.com easy-signing.com easy163.net easy2world.com easy361.com easy888.com easyapple.net easyar.com easyarvr.com easybug.org easyclean.fun easydarwin.org easyder.com easydo.work easydoc.net easyeda.com easyfang.com easyfapiao.com easyfunfun.com easygame2021.com easygametime.com easygovm.com easyhaitao.com easyhin.com easyidc.com easylabplus.com easyliao.com easyliao.net easylinkin.com easylinkin.net easymule.com easynet.vip easypakk.com easypayx.com easyrecovery.cc easyrecovery.net easyrecoverychina.com easyrecoverycn.com easyscholar.cc easysensor.net easysofthome.com easyswoole.com easytifen.com easytimetv.com easytite.com easytocn.com easytogophuket.com easytomessage.com easytouch-manager.com easytouch.com easytrip.com easyv.cloud easywza.com easyya.com easyzw.com eaton-samc.com eatonbusbar.com eatuo.com eavic.com eawh.com eaydu.com eayh.com eaymusic.com eayou.com eayuan.com eayyou.com eazypharm.com eazytec-cloud.com eb-ind.com eb0de9d6bc52f2d0.com eb10c842d10291.beer eb623580160e8cbc.com eb80.com eb94ccc9625d8539.com ebadfbe1278533ae.com ebadu.net ebaifo.com ebaina.com ebaixing.com ebama.net ebancom.com ebangchina.com ebank96518.com ebanma.com ebanshu.net ebaodai.com ebaoquan.org ebaotech.com ebasset.com ebb6ea72919edea2.com ebbcb476210291.beer ebbf2f9101016.beer ebchina.com ebchinaintl.com ebchinatech.com ebcvm.org ebdan.net ebdoor.com ebfb8c1c2f714608.com ebfcn.com ebfkc.com ebfortune.com ebgic.com ebibi.com ebico.com ebidbid.com ebidding.com ebigear.com ebiobuy.com ebiomall.com ebiotrade.com ebioweb.com ebjfinance.com ebjservice.com eblockschina.com ebls-group.com ebnew.com ebocert.com ebookmen.com ebopark.com eboxmaker.com ebpftravel.com ebptp.com ebrun.com ebscn-am.com ebscn.com ebseek.com ebsfw.com ebt.group ebtang.com ebtcbank.com ebtrust.com ebuckler.com ebullienceconsultancy.com ebumbrella.com ebuy16.com ebuy1718.com ebways.com ebyet.com ebyte.com ec-ae.com ec-cloudtech.com ec-dns.com ec-founder.com ec-sz.com ec-world.com ec.com ec07yxgd11.com ec233.com ec3s.com ec45f2d84111f960.com ec4ca59341009.beer ec4e54545d0e31fa.com ec51.com ec6056a95386f752.com ec8j.com ecac1cd921021.beer ecadi.com ecaidian.com ecaihr.com ecamzone.cc ecanmed.com ecaptechnology.com ecaray.com ecare365.com ecarechina.com ecarxgroup.com ecb43b6f5064acc6.com ecbcamp.com ecboo.com ecbos.com ecbuy.net eccang.com eccc-china.com eccdnx.com eccn.com eccnmall.com ecco-market.com eccpos.com ecdag.net ecdnx.com ecduo.com ece-global.com eceibs.com eceibs.net eceibs20.com ecej.com ecer.com ecerdns.com ecerimg.com ecf-gov.com ecgci.com ecgoods.com ecgtool.com echanceyun.com echangye.com echao8.com echargenet.com echarpile.com echatsoft.com echead.com echemsrc.com echepiao.com echiele.com echinacareers.com echinacities.com echinagov.com echinalife.org echinatobacco.com echo-isoftstone.com echo188.com echoing.tech echoteen.com echovelle.com echu-cable.com echuaren.com echunlan.com echuzhou.com eci-everconn.com eciawards.org ecice06.com ecinnovations.com ecitic.com eciticcfc.com ecjobhome.com ecjson.com eckwai.com ecloud-gdu.com ecloud.hk ecmc-nj.com ecmould.com ecnpl.net ecnu.net ecnuas.com ecnudec.com eco-seavol.com eco-system.xyz ecoalchina.com ecocn.org ecodreamers.com ecoland-plan.com ecoliving168.com ecolovo.com ecom-lightapp.com ecomanbiotech.com ecombdapi.com ecombdimg.com ecombdpage.com ecombdstatic.com ecombdvod.com ecomoter.com econtactsplus.com ecool.site ecoplastech.com ecoprint.tech ecorr.org ecotourgroup.com ecouser.net ecovacs.com ecovacsgroup.com ecowrd.com ecp-cloud.com ecp-cloud.net ecphk.com ecplf.com ecppn.com ecpsrplus.com ecqd.com ecqun.com ecr-global.com ecrrc.com ecs6.com ecsage.net ecscoupon.com ecscpu.com ecshop.com ecshop123.com ecsits.com ecspartner.com ecsponline.com ecsxs.com ectdno.com ectencent.com ectnno.com ectnno.org ectrip.com ecuc123.net ecukwai.com ecustmde.com ecv360.com ecvv.com ecwan77.net ecydm.com ecyti.com ecyzm.com ed-textile.com ed21.cc ed2k.vip ed2kers.com ed2kk.com ed403ab821011.beer ed77fc33a10241.beer ed834dbe3264d3a0.com eda-china.com eda1024.com eda2.com eda365.com eda365.net eda4bf686e3ac7d4.com eda7fb17710272.beer edaboss.com edadoc.com edagit.com edai.com edaibo.com edaili.com edaixi.com edaizhijia.com edajob.com edaka.org edaocha.com edata100.com edatahome.com edatop.com edawiki.com edaxiang.com edazhang.com edb-tech.com edcba.com edcdfg.com edcfda.com eddic.net eddingpharm.com eddong.com eddycjy.com ede35.com ededian.com edefang.net edengjiang.com edesson.com edge-byted.com edge-cluster-hk-pre.com edgefn.net edgegslb.com edgekey88.net edgemec.com edgeone-ai-dev.com edgeone-ai.com edgeone-browser-rendering-dev.com edgeone-browser-rendering.com edgeone.ai edgeone.app edgeone.cool edgeone.run edgeone.site edgeonedy1.com edgeonev1.com edgeonev1.net edgeonev2.com edgeonev2.net edgeonev3.com edgeonev3.net edgeonev4.com edgeonev4.net edgeonev5.com edgeonev5.net edgep.net edgesrv.com edgetls.xyz edhic.com edi198.com edianda.com edianshang.com ediantec.com edianyun.com edianzu.com ediaoyu.com ediconf.org edifier.com edimob.com edingzhuan.com edisec.net editorjianying.com editsprings.com ediuschina.com edlcaster.com edmcn.net edmseller.com edns.com edojia.com edong.com edongeejiao.com edongli.net edongyun.com edoou.com edowning.net edozx.com edqgk.com edragongame.com edrawsoft.com edream-tech.com edsionte.com edspay.com edt2017.com edt2018.com edtsoft.com edty.com edu-cj.com edu-edu.com edu-nw.com edu03.com edu0851.com edu1488.com edu24o1.com edu24ol.com edu4399.com edu510.com edu5a.com edu63.com edu777.com edu84.com edu84.net edu88.com eduaaf.com eduaiplat.com eduancm.com eduapaashwc.com eduardoam.com eduartisan.com educg.net educhn.net educoder.net edudc.net edudigital123.com eduease.com eduego.com eduei.com eduglobal.com eduglobalchina.com eduhuoshi.com edui.fun eduic-sh.com eduiso.com edujia.com edujianshe.com edujiaoyu.com edukuang.com edulawonline.com edulivevideo.com edumail.pub edumine.net edumq.com edumsys.com eduour.com edupm.com edurck.com edushi.com edusoho.com edusoho.net edusy.net edutalkingdata.com edutao.com edutime.net edutrackconsult.com edutxw.com eduu.com eduuu.com eduwenzheng.com eduwest.com eduwo.com eduwx.com edux.design eduxcxportal.com eduxiji.net eduydt.com eduyf.com eduyo.com eduzb.com eduzhai.net eduzhixin.com eduzs.net edwiv.com edxmy.cc ee-nav.com ee067e33bd637916.com ee123.net ee1234.com ee409d6370bfc826.com ee45560.com ee68.com ee6da7410adfd3aa.com ee702ec398aaecfd.com ee99.net eeban.com eebbk.com eebbk.net eeboard.com eechina.com eecnt.com eecourse.com eecso.com eedevice.com eedns.com eedzvv.com eee-eee.com eee4.com eeeam.com eeedri.com eeedu.net eeeen.com eeeetop.com eeeff.com eeekkk.com eeeknow.com eeeqi.net eees.cc eeetb.com eeezahomemena.com eefans.com eefcdn.com eeff.net eefocus.com eefung.com eegem.com eehk.net eehu.com eei168.com eeio99.com eeioe.com eeju.com eelly.com eema.info eenzo.com eeook.com eeparking.com eepw.com eeqiu.com eeskill.com eeso.net eestar.com eetoday.com eetop.com eetrend.com eetrust.com eeuetqbv.shop eevision.com eeworld.com eeworm.com eexiaoshuo.com eeyd.com eeyxs.com eeyy.com eeyys.com eezml.com ef-cdn.com ef17145aecd7dd06.com ef360.com ef360.net ef369594911012.beer efang.tv efangcdn.com efangwang.com efapiao.com efasco.com efashionchina.com efashioncloud.com efb6ff0d81022.beer efbf407b011021.beer efchina.org efe.cc efengqing.com efesco.com eff-soft.com eff85fd9610292.beer effapp.com efficient.hk effirst.com effood.net efglobal-gy.com efivestar.com efl-tech.com eflagcomm.com eflybird.com eflycloud.com eflydns.net efmac.net efnchina.com eforclub.com efotile.com efount.com efoxconn.com efpp.com eftime.com efucms.com efueloil.com efuin.com efunchina.com efuncn.com efunent.com efunq.com efusc.com efwh.com efy-tech.com efzhou.com efzzs.com egainnews.com egbt.net egcmedia.com egeel.com egfb2221.com eggbnk.com eggrj.com eghimalayanak.com eghnmj.xyz egjqgs.com ego-robotics.com egoint.com egongzheng.com egooad.com egood995.com egoonet.com egotops.com egou.com egou68.com egouz.com egovsum.com egpctiz.com egpharm.com egqch.link egrdrill.net egreatworld.com egret-labs.org egret.com egridconsulting.com egrowads.com egsea.com egshuyuan.com egsssy.com egt365.com egu365.com eguangjie.com eguantao.com egwealth.hk egxlx.com ehafo.com ehaier.com ehaini.com ehaiwang.com ehang.com ehanglian.com ehangtian.com ehaohai.com ehaoyao.com ehaoyao.us ehclglobal.com ehealthcareforum.com ehecd.com ehedco.com ehejun.com ehengjian.com eheren.com ehetech.com eheyin.com ehijoy.com ehinvest.hk ehnasia.com ehnchina.com ehome-env.com ehome5.com ehome8.com ehomeclouds.com ehomeday.com ehousechina.com ehowbuy.com ehowbuy.net ehrel.com ehschina.com ehsy.com ehtcn.com ehualu.com ehuarun.com ehuatai.com ehuataifund.com ehub.net ehui.net ehuijing.com ehujia.com ehuoke.com ehuoyan.com ehuoyun.com ehutu.com ehuyao.com ehuzhu.com ei6nd.com eia-data.com eia543.com eiacloud.com eiafans.com eiccmall.com eickaopei.com eicodesign.com eicourse.com eicp.net eicp.vip eicuhq.xyz eiczz.com eid-sft.com eidcenter.com eidlink.com eidtokencloud.com eifini.com eightbridge.com eightedu.com eigpay.com eihtfire.com eiicn.com eiisys.com eiixx.com eijiucq.com eilieili.cc eimoney.com einfo-tech.com eingdong.com einkcn.com einsteintiles.com eintone.com eiot.com eisoo.com ejamad.com ejc56.com ejcms.com ejcop.com ejdrone.com ejdyin.com ejectu.com ejecx.com ejee.com ejeegroup.com ejfeng.com ejhimalayanje.com ejia7.net ejiacn.com ejianlong.com ejianmedia.com ejiawang.cc ejiayou.com ejiayu.com ejie.me ejiecheng.com ejinshan.net ejion.net ejktj.com ejmrh.com ejomoo.com ejoo.cc ejoy.com ejoy365.com ejoy365hk.com ejrfood.com ejsoon.win ejtieyi.com ejtsyc.com eju.com ejudata.com ejuhome.com ejunshi.com ejustcn.com ejy365.com ek-edu.com ek1ng.com ekaidian.com ekan001.com ekang99.com ekangji.com ekaobang.com ekaoyan.com ekaoyan365.com ekclubinternational.com ekdoc.com ekecdn.com ekewy.com ekimmigration.com eking-tech.com ekingair.com ekingtopwood.com ekoooo.com eks0451.com ekuaibao.com ekumao.com ekumb.com ekuzy.com ekweixin.com ekwing.com ekxx.net elabinfo.com elabpic.com elaina.vin elaiter.com elameyal.com elane.com elangchina.com elanking.com elanp.com elanso.com elanw.com elascloud.com elawoffice.net elbmodel.com eldamu.com eldawa.com ele.me ele.to ele001.com ele1.com ele12.com elec100.com elecfans.com elecfans.net elecinfo.com elecloud8.com elecrystal.com elecshop.com elecspn.com eleduck.com elefang.com elefirst.com elegant-prosper.com elegsant.com elelx.com eleme.hk eleme.io elemecdn.com element3ds.com elementaw.com elementfresh.com elenet.me elephant-base.com elephantrobotics.com eleui.net elevator-expo.com elex-tech.net elexcon.com elextec.com elfartworld.com elfinbook.com elfjs.com elht.com elian5.com elianhong.com elianmeng.vip eliansy.com elianwiz.com eliaoxuke.com elicht.com elikeme.com elikeme.net elimautism.org eling.me elingka.com elingyun.com elinzy.com elita.work elite-shooters.com elitecrm.com elitenexusgroup.com elitesland.com elitetie.com elitimes.com eliwang.com elkpi.com ellassay.com ellechina.com ellemen.com elleschool.com elliotxing.com elmerlxy.com elmerzhang.com eloancn.com elong-edm.com elong.com elong.net elongai.com elonghotel.com elongshine.com elongstatic.com elongtrip.com elontest.com eloonggame.com eloongsun.com elpcon.com elpland.com elpont.net elpsky.com els001.com elsker.com elsz5.xyz eltmall.com eltt.org eltws.com eluxiu.com eluying.com elvgufen.com elvshi.com elvxing.net elxk.com elysia.beauty em86.net emai.com email.fund emaileds.com emailflame.com emailuo.com emailxqq.com emak.hk emakerzone.com emall001.com emao.com emao.net emaozi.com emapgis.com emarbox.com emarketingw.com emas-poc.com ematong.com emaup.com emavil.com emax.cc embcom.net embed-cloudstudio.net embed.cc embedfire.com embedhq.org embedmcu.com embedsky.com embedtrain.org embedu.org embedunion.com embedway.com embest-tech.com embryform.com embryochina.com embsky.com emby.men emby.yun embyvip.org emcbj.com emcdir.com emcsosin.com emdoor.com emea.cdnetworks.com emed.cc emeiju.com emeixian.com emeixs.com emengju.com emeok.com emepu.com emeratech.com emergencyexit.xyz emfuture.com emilechouriet.com emiltorres.com emin123.com eminsheng.com emiretasnbd.com emjianshen.com emjob.com emlinix.com emlog.net emmmn.com emodor.com emoji6.com emojimobile.com emoriko.com emotibot.com emotofine.com emots.cc emoyu.com emqx.cloud emqx.com emqx.net emr-volces.com ems-audio.com ems517.com emsepc.com emshost.com emshua.com emsym.com emtana.com emtcm.com emtronix.com emtx.com emu999.net emuban.com emuch.net emuchong.com emugif.com emui.com emui.tech emuia.com emulatedlab.com emumax.com emupic.com emushroom.net emwan.com emzexzfp.com en-micro.com en.tm en51.com en5static.com en8848.com en998.com enacdn.biz enacdn.info enacdn.net enaiter.com ename.com ename.net enantiotech.com enappstore.com enbamaoyi.com enbrands.com encthinking.com enderbbs.fun enderuixm.com endianpp.com endovastec.com endowa-auto.com endress.store endurance-shinmaywa.com enec.net enelcn.com energy-greenland.com energy-root.com energy-zj.com energychina.press energyhz.com enerpat.net enet16.com enet16.net enet360.com enet369.com enetedu.com enfi.vip enflame-tech.com enfodesk.com enforever.com eng24.com engeniustec.com engeyuan.com engkoo.com engley.com englibrary.com english163.com englishdict.cc englishmasterclub.com englishtimes.cc engloncar.com engpx.com engr-z.com enguo.com engz.net engzai.com enianteam.com enicn.com eniu.com enjerr.com enjlink.com enjoy.link enjoy1992.com enjoy3c.com enjoycare.com enjoydiy.com enjoyfe.com enjoyglobal.net enjoying3d.com enjoykorea.net enjoymeet.com enjoynowapp.com enjoyor.net enjoyyue.com enjoyz.com enketu.com enkichen.com enkj.com enkris.com enlaide.com enlightent.com enlistsecurely.com enmonster.com enmotech.com enmuo.com enn-ng.com ennenergy.com ennew.com ennewpower.com ennews.com ennmt.com ennobay.com ennocad.com ennovabio.com ennpet.com ennpower.com ennresearch.com enovatemotors.com enoya.com enpapers.com enpht.com enpower-sd.com enpowermicro.com enproscm.com enqoo.com enread.com enricgroup-sh.com enrlb.com enroo.com enroobbs.com enruida.com enruigroup.com enrz.com ens4.com enshide.com enshijob.com ensignworld.com enstylement.com ent001.com ent120.com entengll.com enterdesk.com enterdesk.net entive.com entstudy.com entts.com enunix.com enuomachinery.net envi-ch.com envisionagents.com envisioncn.com enwing-tech.com enxicled.com enyamusical.com enyugame.net enzj.com eo-edgefunctions.com eo-edgefunctions2.com eo-edgefunctions3.com eo-edgefunctions4.com eo-edgefunctions5.com eo-edgefunctions6.com eo-edgefunctions7.com eo-edgefunctions8.com eo-edgefunctions9.com eo-ns.com eo-preview.com eo-shieldspace.com eo-vod.com eo-vod1.com eo-vod2.com eo-vod3.com eo-vod4.com eo-vod5.com eo-vpcgw.com eoacc2.com eoacme-dev.com eoaluminium.com eobuwieplonline.com eoeandroid.com eoemarket.com eoemarket.net eoffcn.com eofreqctrl.com eofreqctrlbk.com eogamewechat.com eoivisa.com eojofdrzei4.com eolce.com eolink.com eolinker.com eomgames.net eomoo.com eomoy.com eonad.org eonlytech.com eonun.com eoof.net eoofoo.com eooioo.com eoopoo.com eooqoo.com eoouoo.com eoovoo.com eoriver.com eorzea.moe eosantpool.com eoss-hj.com ep-china.net ep-zl.com ep12.com ep365.com ep8u.com epaas.net epaiclub.com epailive.com epalfish.com epandian.com epanshi.com epark.cc epassway.com epay.com epaynfc.com epbiao.com epchina.com epcnn.com epcservicio.com epcsw.com epd3.com epday.com epeaksport.com epeimall.com epeo.net epermarket.com epesr.com epet.com epetbar.com epetpet.com epexpo-asia.com epfrontier.com epg-power.com ephen.me ephua.com epian1.com epiaogo.com epibiotek.com epicgamesspot.com epichust.com epinautomation.com epinduo.com epinga.com epinhoo.com epinv.com epinzu.com epjike.com epjob88.com epkey.com eplove.com epluspvy.com epnnel.com epoos.com eportyun.com eprcw.com eprezi.com eps-tigermed.com epsea.com epshw.com epstsoft.com eptchina.com eptsz.com epub360.com epubit.com epweike.com epwitkey.com epwk.com epzcw.com epzwxs.com eq321.com eqding.com eqh5.com eqicha.com eqidi.com eqie.com eqifa.com eqigou.com eqingdan.com eqixiu.com eqiyingxiao.com eqlky.com eqmis.com eqmobi.com eqnvip.com eqoavtbu.com eqq.net equalocean.com equdong.net equipmentimes.com eqxiu.com eqxiul.com eqxiuzhan.com eqyn.com er07.com eraclean.com eraedu.com eral.com eran123.com eranet-dns.com eranet.com eranqi.com erapp.run erbadu.com erbingimg.com ercc.cc ercfh.com erda.cloud erdaicms.com erdangame.xyz erdangjiade.com erdiamond.com erdianzhang.com erdong.site erdosedu.com erdosrcb.com erdossysw.com erelcn.com erentalcarpro.com ereter.com ereuiib.com erfang-ic.com ergeapp.com ergecdn.com ergedd.com ergediandian.com ergeduoduo.com ergengtech.com ergengtv.com ergouzi.fun erhlyc.club erhss.org erhua.cc eric-bot.com ericdeng.net erichfund.com eriqua.com erji.com erji.hk erji.net erjianglin.com erjiren.com erk8.com erke.com erkuai.com erldoc.com erlo.vip erlou.com ermain.com ermao.com ermao.live ermeiti.com ermiao.com ernaonet.com ernest.me ernxzc.com eroacg.com eromesalo.com erongdu.com erp321.com erp321.net erpang.cc erpingge.com erpwd.com erro.life ersantian.com ershicimi.com ersjk.com ersoso.com ersuo.com ert.icu ert7.com erthb.online ertmineq.com ertongkongjian.com ertongtuku.com ertoutiao.com erun.cloud erun360.com ervtqeq1206.vip erw.cc erxin360.com erxitong.com erya100.com eryajf.net eryanet.com eryi.org eryyutu.com erzzz.com es-soccer.com es100.com es2q.com es86.com es9e.com esa2000.com esafenet.com esandcloud.com esavip.com esbedu.com esbook.cc esc.show escdn.com escjy.com esclt.net escortevenly.com esdaxiagu.com esde.cc esdhm.net esemseo.com esenagro.com esensoft.com esgforum.com esgz.com eshangle.com esheep.com eshenlin.com eshimin.com eshine-logistics.com eshiyun.info eshop-switch.com eshopb2c.com eshow365.com eshufa.com eshuizong.com eshukan.com eshzp.com esilk.net esinidc.com esipark.com esjlf.com esjson.com esk365.com eskedu.com eskimall.com eskysky.com eslosity.com eslygroup.com esmartwave.com esnai.com esnai.net esni.tech esnpc.com esoboy.com esoho.org eson.org esoo.org esoogle.com esou.biz esoua.com esound.vip esouou.com espeedpost.com esplus.club espnlol.com esports-console.com esportsreg.com esr.com essaystar.com essca.com essclick.com essemi.com essencefund.com esseniot.com essent-tech.com ession.com essjj.com esstglobal.com essurl.com esswye.com essxp.com essyy.com estandonhotel.com esteellink.com estelchina.com estonegroup.com estory365.com estrongs.com esttools.com estudychinese.com estun.com esudai.com esugimoto.com esun21.com esun88.com esune.com esunny.com esunresin.com esurging.com eswin.com eswincomputing.com eswlnk.com eswxj.com eswzx.com esxlt.com eszmall.com esztsg.org esztyg.com eszwdx.com eszyb.com et-api.com et-cdn.com et-fine.com et001.com et0731.com et363.com et59.com etagri.com etang.com etao.com etaog.com etaswisswatch.com etbet.com etccenter.com etccenters.com etcchebao.com etcgsx.com etchcb.com etcifk.vip etcifw.vip etciwe.vip etcsd.com etcsx.com etcupor.cc etczs.net etczx.com etelux.com eternalsys.com eterngroup.com etescape.com etest8.com eteste.com etf.group etf88.com etfcjz.com etfiber.net etg56.com ethainan.com ethan.pub ethercap.com ethereum.work etian365.com etiantian.com etiantian.net etimeusa.com etitgo.com etiv.me etjournals.com etjy.com etlong.com etmoc.com etmtoy.com etmwanju.com etocrm.com etokzt.site etolies.com etomlink.com eton-tech.com etonetech.com etonfood.com etong.com etongchem.com etongguan.com etonjx.com etonkidd.com etonkids.com etool.cc etoote.com etoote.net etoplive.com etoprun.com etoptour.com etoubao.com etoujie.com etovl.org etowncapital.com etownestate.com etpass.com etpcar.com etplat.com etpowers.com etrack01.com etrack02.com etrack03.com etrack04.com etrack05.com etrack07.com etrack08.com etradegx.com etransfar.com etranshare.com etrasemi.com etrd.org etrol.com etrump.net ets100.com etsc-tech.com etsingshan.com etsoon.com etsstar.com ett-cn.com ett.cc ettabiotech.com ettbl.org ettdnsv.com ettdnsv.net ettinn.com ettshop.com etu6.com etuan.com etuan123.com etudu.com etuogroup.com etuoyi.com etuschool.org etxcs.com etycx.com etyy.com etyyy.com etz927.com etzj.net etzqw.com etzzy.com eu4cn.com eub-inc.com euci-software.com eucure.com eudic.net euejia.com euetsp.website eueui.com eufc.org euforums.com eui.cc euibe.com euino.com eulike.com eulixos.com eumt.com eur-go.com eurasia.edu eurasiacasinolasvegas.com euratao.com eureka.name eurkon.com euroasia-p.com eurochinesedaily.com eurofinscn.com europapa.com europe.com.hk europewatch.com europewatch.com.hk eursell.com eusercenter.com eushophq.com eusoftbank.com euwan.com euzw.net ev123.com ev123.net ev3ds.com ev88.com ev98.com eva-group.com eva001.com evacellbio.com evan.xin evancg.com evanway.net evask360.com evcar.com evcard.com evcard.vip evcrrc.com evdays.com evdo.vip eve.moe evebattery.com evefashion.com evening.me eventown.com events.pub eveqbow.xyz ever9527.com everbox.net everbright.com everbright21.com everbrightlaw.com everbrightphotonics.com evercarecn.com everdns.com everdrawing.com evereasycom.com everedit.net everet.org evergrande.com evergrandeauto.com evergrandeservice.com evergrandespring.com evergreen-plastics.com evergreen2012.org everichgroup.com everisker.com everknight.net everlight-space.com evernakedcake.com everpay.org everrobot.com eversino.com everspry.com everstar.xyz everstray.com eversun-chn.com everybodysuo.com everychina.com everydo.com everyinch.net everyonejun.com everyouthtech.com evestemptation.com evewan.com evfchina.com evget.com evgezphv.com evhui.com evideostb.com evileyesaint.com evilleaker.com evinchina.com evisa99.com evisionics.com evisugo.com evketang.com evkworld.net evlightpro.com evlook.com evmam-tbrat.com evobserver.com evoc.com evocqd.com evotrue.com evpartner.com evpowergroup.com evtcn.com evtrust.com evyy.net evzhidao.com evznl.org evzs.com ew-wirestripping.com ew80.com ew80.net ew80yun.com ew9z.com ewaga.com ewang.com ewaninfo.com ewarecomputer.com ewaterchina.com ewatt.com ewceo.com ewdcloud.com ewebeditor.net ewebsoft.com ewecha.com ewei.com eweiqi.com eweirong.com eweis.com ewemt.com ewen.co ewenyan.com ewhnzmqncm7.com ewidecloud.com ewidewater.com ewidewater.net ewie.net ewin007.com ewinshine.com ewinshocks.com ewoka.com ewomail.com eworksglobal.com eworldship.com ewpeinfo.com ewqcxz.com ewrrpuquc1.com ewsaas.com ewstudy.com ewt360.com ewteacher.com ewtp.com ewtp.org ewu.cc ewuzhen.com ewzqsyuc.link ex-energybattery.com ex-silver.com ex-starch.com ex360.com exact-ic.com exam100.net exam58.com exam76.com exam8.com examcoo.com examda.com examebook.com examk.com exampx.com examw.com exands.com exaphotons.com exasic.com exbaotuan.com exbapp.com exbot.net exc-resin.com exc118.com excake.com excalibur.link excarepharm.com excbio.com excean.com exceedconn.com excegroup.com excegroupur.com excel8.com excel880.com excelbbx.net excelcn.com excelhome.net excellbio.com excellencegroupfoundation.com excelpharma.com excelpx.com excm.net excoino.com exd.design exdoll.com exedus.com.co exeedcars.com exemplifyt.com exexm.com exezhanqun.com exfree.com exhera.com exhobby.com exia.xyz exiaoba.com exiliumgf.com exinee.com exingbao.com exiqu.com exllog.com exmailgz.com exmailqq.com exmay.com exmetis.com exmoo.com exmrw.com exnpk.com exntech.com exound.com exp99.com expba.com expdns.net expec-tech.com expensiveg.com expin.site expingworld.com expiredns.net expirenotification.com expirepausedns.com expku.com explinks.com explorehainan.com explorexd.com expo-china.com expo-nb.com expocemat.com expodmc.com expoeye.net expohsp.com expolifestyle.com exponingbo.com expoon.com expoooo.com expoquan.com expotu.com expowindow.com expozh.com expressboo.com expresscompanynetwork.com expreview.com exprun.com expsky.com exquisite-automotive.com exscapesmoke.com exsvc.net ext2fsd.com extech-sh.com exteriorm.com externalcoop.com extfans.com extqq.com extron-tech.com extscreen.com extstars.com exuanfang.cc exuanpin.com exuanshi.com exuekt.com exueshi.com exuezhe.com exyws.org ey100.com ey3g.com ey99.com eyacn.com eyangfan.com eyangguang.com eyangzhen.com eyao168.com eyaobei.com eyaodev.xyz eyar.com eyasglobal.com eyasgloble.com eybond.com eybook.com eycfhb.com eycms.net eydata.net eydns.com eye023.com eye024.com eye025.com eye027.com eye0510.com eye0515.com eye0561.com eye0712.com eye0731.com eye0746.com eye0770.com eye0771.com eye0773.com eye0774.com eye0775.com eye0776.com eye0777.com eye0779.com eyeabc.com eyee.com eyeofcloud.com eyeofcloud.net eyepetizer.net eyeplay.org eyesar.com eyeshenzhen.com eyeso.net eyhsj.com eyili.com eyingchuang.com eyingyubao.com eyiwu.com eyiyoxz.xyz eyoodns.com eyoogo.com eyou.com eyou.net eyoubaidu.com eyoucms.com eyouct.com eyoumb.com eyoungindustry.com eyourbusiness.com eyouwx.com eyprint.com eyspwkg.com eyuangong.com eyuconnect.com eyugame.com eyunidc.com eyunzhu.com eyuyan.com eyuyan.la eyuyao.com eyuzhu.com eywedu.com eywedu.net eywedu.org eyy168.com eyy8.vip eyyyye.com eyz.ink ez-leaf.com ez01.com ezagoo.com ezaiai.com ezca.org ezchip.tech ezcname.com ezcpt.com ezcun.com ezdnscenter.com ezeeship.com ezeroshop.com ezfuns.com ezhangdan.com ezhangu.com ezhayan.com ezhicai.com ezhijiantuoluo.com ezhiwan.com ezhou.com ezhousetech.com ezhu.com ezhun.com ezhupei.com ezindie.com eziot.com ezjhw.com ezlippi.com ezliushao.com ezloo.com eznowdns.com eznowdns.net ezone-h5.com ezonsport.com ezpro.pro ezreal.cool ezrent.hk ezrpro.com ezshou.com ezsuperfans.com eztcn.com eztest.org eztvnet.com ezucoo.com ezviz.com ezwan.com ezwanjia.com ezwise.com ezzls.com ezzxw.com f-0.cc f-biology.com f-dou.com f-insight.com f-stack.org f.biz f.cx f008.com f015dfc4510292.beer f049443d111032.beer f0580.com f0758.com f08ecb0455f06f18.com f09qgja1.com f0f21399311031.beer f1-shanghai.com f11w.com f130.com f139.com f14ed7c801022.beer f1943w.com f1d28bdd11019.beer f1zd.com f26.cc f2c8017f110281.beer f2cca7592f8a0441.com f2time.com f2zd.com f315.cc f32365.com f3322.net f3322.org f33eb245b1022.beer f385e7fcd1013.beer f397350c0958109e.com f3bed1ef51013.beer f3ff28a3e1015.beer f40ca6aa911042.beer f419a55f61023.beer f41g.com f42cccb808.forum f442165e29dbca6e.com f44b9bd1fe4e913f.com f49f8e0421015.beer f4a107d7a11012.beer f4b2ed8f711011.beer f4e2a302f1016.beer f52o04oylrbmfw.com f537.com f542d8de71022.beer f5432.com f54321.com f54c463ad528b39a.com f567c912a077aacc.com f5cs.com f5ec7553b5ec6ea3.com f5fa5ff8ef7379ba.com f5gh.com f5sd.com f5yx.com f66a747451016.beer f69a662cb11031.beer f6b06c2d5821c34e.com f6c62f7ab11031.beer f6d4a4f461010.beer f6yc.com f704204fa11021.beer f71f38e6a1015.beer f746c2da252336a6.com f7777.net f79ca805111881f6.com f79f9e5b71019.beer f7aa9093710281.beer f7chinavip.com f7e84829210281.beer f7yuncdn.com f800909401015.beer f8167007e7bf667d.com f831fb9ce11031.beer f8e772f41348c086.com f8fm.com f92ec0629f52f064.com f94fa469f5680337.com f9ee74bf602c79cf.com f9f4a38021013.beer fa-part.com fa-today.com fa-tojoin.com fa2da1f5b1024.beer fa80a608ec3e1ead.com faadcf6d01009.beer faakee.com faanw.com faayoo.com fabang.com fabao365.com fabaofoundation.com fabaogou.com fabiao.com fabiaoqing.com fabigbig.com fablusa.com fabpo.com fabu114.com faburuanwen.com fabuzhushou.com facaishu.com facang.com facash.com face-plus-plus.com face100.net face2ai.com faceboer.com facebookol.com facebooksx.com facecloud.net facedic.com faceface2.com facehufu.com faceid.com facejoking.com facephoto.com faceplusplus.com facernt.com faceu.com faceu.mobi faceu.net faceui.com faceunity.com fachcloud.com facri.com factchina.com factj.com factube.com fad9e7ce5a0de13c.com fada12888888.work fadada.com fadesky.com fadfunds.com fadior.cc fadoudou.com fadoushi.com fadsc.com fadsfasd.asia fadui.com faer.work fafa9.com fafaku.com fafawang.com fafeng.com fafuli.com fagaoshi.com fageka.com fagua.net faguowenhua.com fahai.com fahuolianmeng.com faidev.cc faidns.com faieduusr.com faihdusr.com faimallusr.com faioo.com faipod.com fair-guard.com fair1688.com fairguard.net fairguard.tech fairhr.com fairkwa.com fairplaycloud.com fairso.com fairygui.com fairysen.com fairysoft.net fairysoftware.com fairytest.com faiscm.com faisco.com faisys.com faiusr.com faiusrd.com faiww.com fajiayun.com fajihao.com fakamiao.com fakamiao.shop fakeloc.cc fakeluxurywatches.com falconnet.app falconsending.com falcontalent.com faloo.com famascro.com fameile.net fameirui.com famen163.com famenbaike.com famens.com famens.vip famensi.com family-marathon.com familyincloud.com familykoloro.com familylifemag.com familyzuji.com faminuo.com famiyou.com famobiotech.com famousoffice.com famoustone.com famulei.com fan-lun.com fan-md.com fan-tastic.fun fan-xun.com fan88.com fanai.com fanbook.mobi fancl-vip.com fancyapi.com fancydmp.com fancydsp.com fancyecommerce.com fancygo.xyz fancysmp.com fancysocialtalk.com fandcode.com fandengds.com fandian.com fandiankeji.com fandongxi.com fane8.com fanerkongjian.com fanfannet.com fanfou.com fang-te.com fang-zhou.com fang.com fang.xin fang24k.com fang33.com fang668.com fang91.com fang99.cc fang99.com fangbaba.xyz fangbei.org fangcang.com fangcece.com fangchan.com fangche.net fangchengbao.com fangchengbaoapp.com fangchengganglvxingshe.com fangchip.com fangcloud.com fangcunshan.xyz fangda-specialsteels.com fangda.com fangdacarbon.com fangdaijisuanqi.com fangdaquan.com fangdd.com fangdichanceo.com fangdr.com fangdudu.com fangfa.net fanggeek.com fangguan6.com fanghenet.com fangheng.com fanghua120.com fanghuafu.com fanghuihui.com fangjia.com fangjiadp.com fangjinsuo.com fangkeduo.net fangkewang.com fangko.com fangkuai.com fangkuai.link fangkuaiwang.com fangkuaiyi.com fanglb.com fangle.com fangliju.com fanglimei.com fanglinad.com fanglitong.com fangma.com fangming.com fango8.com fangpaiwang.com fangqk.com fangrun.com fangshan.us fangshanzi.com fangsheji.com fangshengaxle.com fangsi.net fangstar.com fangtan007.com fangtangtv.com fangte.com fangtian.net fangtong.com fangtx.com fangwei315.com fangweima.com fangwuzaixian.com fangxfang.com fangxian.org fangxiaobao.net fangxiaoer.com fangxin.com fangxinbao.com fangxinbiao.com fangxinmai.com fangxinzhuomian.com fangxu.work fangyanzazhi.com fangyb.com fangyi.com fangyiai.com fangyou.com fangyouquan.com fangyouw.com fangyuan-group.com fangyuan365.com fangyuanhp.com fangyuannew1zycdn.cc fangyunlin.com fangzd.com fangzew.com fangzhengip.com fangzhengshufa.com fangzhenxiu.com fangzhipeng.com fangzhouad.com fangzhoukonggu.com fangzhoulawyer.com fangzhouqihang.com fangzhoushidai.com fangzhouyanglao.com fangzongguan.com fanhai-hk.com fanhaib.com fanhaic.com fanhangame.ltd fanhaoyue.com fanhar.com fanhonghua.net fanhougame.com fanhuaholdings.com fanhuan.com fanhuan.org fanhuishou.com fanin.cc faniuwenda.com fanjianhome.com fanjinyan.com fanjunyang.zone fankebang.com fankhome.com fankuweb.com fanli.com fanli001.net fanlibei.com fanlihe.com fanlihi.com fanlihotels.com fanlitou.com fanlv.fun fanmeilantian.com fanmimi.com fanmingming.com fanmugua.net fannaojiputi.com fanooo.com fanpaijidian.com fanpanjidain.com fanpusoft.com fanqianbb.com fanqiang.com fanqianxs.com fanqianzhushou.com fanqie.im fanqiecopyright.com fanqiejiang.net fanqienovel.com fanqieopen.com fanqieopenpic.com fanqieopenstatic.com fanqieopenvod.com fanqier.com fanqiesdk.com fanqiesdkpic.com fanqiesdkstatic.com fanqiesdkvod.com fanqietianqi.com fanqievv.com fanqiewin10.com fanqiexitong.com fanquanwang.com fanruan.com fanruanclub.com fanryes.com fans35.com fans8.com fanshicekong.com fanshigang.com fanshui.net fansiji.com fansimg.com fansjoy.net fansobattery.com fansoon.com fansx.com fansyes.com fantablade.com fantaiai.com fantaicdn.net fantaitech.com fantanggame.com fantasticbin.com fantatech.com fantawild.com fante.com fantibody.com fantnet.com fantong.com fantsida.com fanttec.com fantuan.hk fanuc666.com fanuchdf.com fanw8.com fanwantianyu.com fanwe.com fanwen118.com fanwenbaike.com fanwenq.com fanwenzhan.com fanwubi.org fanxian.com fanxiang.com fanxianw.com fanxiaojian.com fanxing.com fanxingliveshow.com fanxingshidaitech.com fanxuefei.com fany-eda.com fany-online.com fanyantao.com fanyeda.com fanyedu.com fanyi.com fanyi1234.com fanyiba.net fanyibase.com fanyigou.com fanyigou.net fanyijia.com fanyiqi.net fanyishang.com fanyitec.com fanyouvip.com fanyu.com fanyu.work fanyuip.com fanzehua.com fanzhidu.com fanzhiyang.com fapharm.com fapiao.com fapiao365.com fapiaobang.com faq-whtasapp.com faq-whtasapp.net faqianjia.com faqiren.com far-china.com far123.com far800.com faraconix.com faradayfuturecn.com faradynamics.com fareastcontainers.com farenhui.com farennews.com farerdak.com farfir.com farisl.com farmasino.com farmkd.com farmsec.com farsee2.com farsightdev.com farsiightppc.com fas-bee.com fasensor.com fashaoyou.net fashengba.com fashilawfirm.com fashionan.com fashionszshow.com fashiontrenddigest.com fashuounion.com fasionchan.com fast-eyes.com fast-heat-cartridge-heaters.com fast.im fastadmin.net fastapi.net fastbuild.run fastcdn.com fastchina.net fastdo.cc fastener-cn.net fastener.cc fastgz.com fastidea.cc fastidea.me fastindexs.com fastliii.com fastmirror.net fastmirror.org fastmis.com fastmock.site fastmovie88.com fastmyna.com faston56.com fastonetech.com fastoper.com fastposter.net fastreportcn.com fastsdwan.com fastsilver.press fastsoc.com fastsoso.cc faststatics.com fastx-ai.com fat-tail.com fat999.com fatangmedia.com fatbobman.com fateadm.com fatedier.com fateqi.com fatfreader.com fatherai.com fatiao.pro fatier.com fatoan.com fatvg.com faussefrance.com faussemontrerolex.com favang.com favdeb.com favopen.com favoreducation.com favorites.ren faw-vw.com faw.com fawan.com faway.com fawmc.com fawsoft.com fawulu.com fawuzaixian.com faxdns.com faxdns.net faxianjingpin.com faxianla.com faxianlaw.com faxianpindao.com faxingbao.com faxingchina.com faxingcn.com faxingsj.com faxingzhan.com faxiufang.com faxuan.net faxy-tech.com fayfans.com fayifa.com fayimen.com fayiyi.com fayufaguo.com fazhijx.com fazz.fun fb32dc52302e6b9b.com fb46cd5483f029aa.com fb4bc82f71019.beer fb56.com fbaichuan.com fbank.com fbatop.com fbf6c93bf10272.beer fbflex.com fbjsgf.com fbkjapp.com fbku.com fblife.com fblsj.com fbnxb.com fbook.net fbpaas.com fbsjedu.com fbuy365.com fbxslw.com fbyvalve.com fc-smartglobal.xyz fc0531.com fc0633.com fc224220480630b3.com fc3e2b88fc5254c9.com fc571.com fc62.com fc811.com fc858.com fc92322b910311.beer fcachinagsdp.com fcai.com fcapp.run fcb16888.com fcbox.com fcboxmall.com fcbs999.com fcbsgroup.com fcbu.com fcc8aa32d10251.beer fcchbj.com fccs.com fccscar.com fccxgjg.com fcczp.com fcd2448c6211c5a6.com fcdecb0b610261.beer fcg01.com fcg0770.com fcgasj.com fcgby.com fcgfcjy.com fcgfzjy.com fcggsj.com fcghbxx.com fcglib.com fcgsaps.com fcgsnews.com fcgstzjt.com fcguoan.com fcgxt.com fcgzjchy.com fcgzph.com fcgzrkq.com fcgzrzyqxyj.com fchospital.com fcjjdbsc.com fcjjt.com fcjob.net fcjob88.com fcjtaobao.com fcjuxian.com fckpw.com fclassroom.com fcldaf.com fcljt.com fclouddns.net fcloudpaas.com fcnes.com fcnode.net fcpawn.com fcpiao.com fcpowerup.com fcqjc.com fcrc114.com fcs1.com fcsc.com fcsccz.com fcsdzly.xyz fcseiko.com fcstor.com fcsubcn.cc fcsubcn.pro fctaiwan.com fcto.rest fcuit.com fcvvip.com fcw0633.com fcw6.com fcwei.com fcwr8.com fcwyglyxgs.com fcxxh.org fcxzb.com fcz.ink fcz360.com fczhongwang.com fczlpt.com fczlsc.com fczst.com fczx.com fd-capital.com fd-trust.com fd-yy.com fd-zj.com fd08a9f9a1016.beer fd7c.com fdbatt.com fdc0746.com fdcjj.org fdcyun.com fdczbstatic.com fdd0cd79c10281.beer fdeent.org fdeer.com fdevops.com fdf46bd061024.beer fdfhtl.com fdfinvoice.com fdgearbox.com fdjskf.com fdjzu.com fdkfloor.com fdkm88.com fdlbeckwai.com fdleckwai.com fdlt.net fdmhmm.com fdooo.com fdqc.com fdren.com fdrobot.com fdtsgs.com fdttgroup.com fdx-fund.com fdxww.com fdxxjs.com fdzcxy.com fdzq.com fdzyy.com fdzzjs.com fe-cable.com fe15a959f1020.beer fe232d4b510271.beer fe2x.cc fe520.com fe7f9abcbf8e1dd2.com feadi.com feanton.com feapp.net featchina.com febbab1472011af4.com fecc.cc fecify.com fecmall.com fecn.net fecshop.com fedlearner.net fedte.cc feeair.com feeclouds.com feedcoop.net feedcoopapi.com feedsp.com feeeco.com feehi.com feejii.com feekr.com feel-bar.com feelcars.com feelchat.net feelec.net feelnowtrip.com feelsoar.com feemoo.com feemoo.vip feepan.com feeprint.com feesing.com feeyan.com feeye.com feeyo.com feeyun.com fefd203.xin fegine.com feheadline.com fehelper.com fehorizon.com fei580.com feiair.com feiauto.com feibajiasu.com feibaokeji.com feiben-starter.com feibians.com feibing.tech feibisi.com feibisi.org feibit.com feibo.com feichangrice.com feichicloud.com feichong.net feicool.com feicui168.com feicui99.com feicuishuo.com feicuiwuyu.com feida-china.net feidacrusher.com feidaep.com feidagroup.com feidaoboke.com feidavalve.com feidazuanji.com feidee.com feidee.net feidi.com feidiao.com feidou.com feie.work feierlaiedu.com feiersmart.com feifandesign.com feifanindustry.com feifantxt.com feifantxt.net feifdx.com feifei.com feifeiboke.com feifeishijie.com feifeixitong.com feifeiziyuan.com feifustudio.com feigang.net feige.ee feigeblog.com feigo.fun feihe.com feihe168.com feiheair.com feihengip.com feihongtec.com feihu.me feihua.com feihuadns.com feihuo.com feihutaoke.com feijie.org feijing88.com feijipan.com feijiu.net feijiuzs.com feijix.com feijs.com feikework.com feikongbao.com feiku.com feikua.net feiliao.com feilihua.com feiliks.com feiliu.com feilixi888.com feilu.cc feilvway.com feimalv.com feimao666.com feimaoweb.com feimaoyun.com feimawaiqin.com feimayun.com feimogames.com feimooo.com feimosheji.com feimoustex.net feinews.com feiniao.name feiniaomy.com feiniaowangluo.com feiniu.com feinno.com feiphp.com feipin.com feipin.net feipinzhan.com feipr.com feiq18.com feirar.com feiruikeji.com feisaidi.com feisan.net feishu-3rd-party-services.com feishu-boe.net feishu-pre.net feishu.net feishuapp-cdn.net feishuapp.com feishucdn.com feishudoc.com feishuhuiyi.com feishuimg-boe.com feishuimg-pre.com feishuimg.com feishukacdn.com feishumeetings.com feishuoffice.com feishuopenplatformrecord.com feishupkg.com feishuvc.com feishuwx.net feishuzw.net feisiplus.com feistech.com feisu.com feisuwx.org feisuxs.com feisuzhibo.com feitaomall.com feitengsoft.com feitent.com feitian001.com feitianma.com feitianwu7.com feitsui.com feituo126.com feiwan.net feiwentianxia.com feixian.cc feixiansoft.com feixiaodata.com feixiaoqiu.com feixiong.tv feixue666.com feixuege.com feixueteam.net feiyang.com feiyang.hk feiyang233.club feiyang971.com feiyangholiday.com feiyangjm.com feiyangstar.com feiyiblog.com feiyin2016.com feiying-china.com feiyit.com feiyouyun.com feiyu.com feiyuapi.com feiyue.online feiyueconglin.com feiyuhu.com feiyun.cc feiyunjs.com feiyuteam.com feizan.com feizhaojun.com feizhiyi.com feizhu.com feizhuke.com feizhupan.com feizhuqwq.com feizutrip.com feizw.net felicitysolar.com feling.net felink.com felix021.com felizpg.com felmvip.com felo-ev.com femrice.com fen360.com fenbaner.net fenbei.com fenbeijinfu.com fenbeitong.com fenbi.com fenbike.com fenbilantian.com fenbu.net fenby.com fencescn.com fenchuan8.com fenda.com fendytech.com fenfen.com fenfenriji.com fenfentang.com fenfenwz.com fenfenyu.com fenfenzh.cc feng-du.com feng.com feng.pub feng1.com fengakj.com fengaomedical.com fengba888.com fengbangleasing.com fengbao.com fengbaowo.com fengbohan.com fengbolive.com fengbuy.com fengcaijiaju.com fengchaoyuan.com fengche.us fengchengroup.com fengchizixun.com fengchuanba.com fengchui.cc fengchusheng.com fengcms.com fengcx.com fengdu.com fengdu365.com fengdufrp.com fengduqi.com fengduxiaoshuo.com fengedu.com fengeek.com fengei.com fengeini.com fengex.com fengfeng.cc fenggangzulin.com fenggongliangrenju.com fenggui-baking.com fenghaibin.com fenghenever.com fenghong.tech fenghua001.com fenghuangcanyin.com fenghuangxs.com fenghui-motor.com fenghuidongman.com fenghuo.cc fenghuoyunji.com fengimg.com fengj.com fengji.net fengjiawang.net fengjierc.com fengjing.com fengjinggroup.com fengjinketang.com fengjr.com fengjx.com fengkeji.com fengkongbao.com fengkongcloud.com fengkuangzaoren.com fengkui.net fenglao.org fengli.com fengli.su fengliankeji.com fenglichem.com fenglingroup.com fenglinjiu.com fenglinlab.com fenglu-alu.com fengmaniu.com fengmap.com fengmeng.net fengmios.com fengnayun.com fengniao.com fengniaohd.com fengniaojianzhan.com fengone.com fengousm.com fengpintech.com fengread.com fengse.com fengshangroup.com fengshangweekly.com fengshankeji.com fengshi8888.com fengshigroup.com fengsung.com fengsutb.com fengtai.tv fengtalk.com fengtao365.com fengtaochanglai.com fengtianz.com fengtingsmart.com fengtupic.com fengwanyx.com fengwatch.com fengwenyi.com fengwo.com fengwohao.com fengxb.com fengxian110.com fengxianrc.com fengxianwater.com fengxiaotx.com fengxing007.com fengxinglihua.com fengxuan.co fengyan.cc fengyang.fun fengyeholding.com fengyitong.name fengyixin.com fengyuangufen.com fengyuncad.com fengyuncx.com fengyunlu.com fengyunmusic.net fengyunpdf.com fengyushan.com fengyx.com fengzegroup.com fengzhan.vip fengzhangame.net fengzhao.net fengzigame.com fengzusw.com fenha.net fenhong123.com fenhuo360.com fenixmall.com fenjiji.net fenjj.com fenke.com fenking.club fenlei168.com fenlei265.com fenleidao.com fenleihu.com fenlekeji.com fenliu.net fenmitech.com fennessy.hk fenqile.com fenqix.com fenqubiao.com fens.me fensaas.com fensebook.com fenshua123.com fensishenghuo.com fenssy.com fentorsolar.com fenxi.cc fenxi.com fenxi.org fenxiangdashi.com fenxianglife.com fenxiti.com fenxm.com fenxmi.com fenxuekeji.com fenyu.net fenyucn.com fenzhi.com fenzhi.net fenzijr.com feotech.com fequan.com ferlie.net ferlytc.com fermatmind.com ferqwo.sbs ferro-alloys.com fescoadecco.com fescoadeccochongqing.com fescoadeccozhejiang.com fescogroup.com fescoguangdong.com fescojinan.com feso.tech festaint.com fetiononline.com fettesgz.com feverales.com feverassets.net fevermi.com fevia.work fevte.com feydj.com feyer-tc.com ff14.cloud ff54.ink ff63.com ff722fbac1011.beer ffalcon.com ffan.com ffasp.com ffb199e9266142c6.com ffbc6bb121021.beer ffbc82f8d1013.beer ffbook.cc ffbuddy.com ffc540c0611031.beer ffca028de10292.beer ffcell.com ffcloudcdn.com ffdbj.com ffe06ebc91024.beer ffe0be9f91019.beer ffeeii.com ffepower.com fffont.com ffhome.com ffis.me ffj.cc ffls-edu.com ffmobi.com ffmomola.com ffnmu.com ffpedia.com ffpw1688.com ffquan.com ffreeslott.com ffsgame.com ffsky.com fftcc.com fftub.com ffxivhuntcn.com ffy.com ffyoo.com ffzww.com fg.cc fg114.com fgba.net fgcndigital.com fgeekcloud.com fgfed.com fggyw.com fghi34.com fgi90.com fgidna.com fgkj.cc fglt.net fgnwct.com fgo.wiki fgowiki.com fgq.net fgtxnews.com fgvisa.net fh01.com fh1551.com fh21.com fh21static.com fh77.net fh86.com fh888.com fhaircut.com fhb971.com fhclm.com fhcomp.com fhd001.com fheb-four.com fheb-six.com fhfxys.com fhgame.com fhgjds.com fhguotai.com fhl05161ps.com fhldns.com fhldns.net fhlmotor.com fhlun.com fhmion.com fhmooc.com fhmv.com fhonest.com fhoverseas.com fhrlw.com fhsfilm.com fht360.com fhtao.com fhtj.com fhtlw.com fhtre.com fhvalley.com fhwlgs.com fhwzx.com fhycedu.com fhycs.com fhyl56.net fhyx.com fhyx.hk fhzggame.com fhzl.co fi-play.com fi0.cc fi11.com fi7.cc fi94.com fia-china.com fibercrops.com fiberglasschina.com fiberhome.com fiberhomegroup.com fibocom.com fibodata.com fibrlink.net ficochina.net ficowshen.com fiehff.com fieldcommunicator.net fifa666.com fifaschool.com fifedu.com fifsky.com figure-it.com fiifh.com fiil.com fiinote.com fiio.com fiio.net filcochina.com file.tripcdn.com filediag.com filez.com filfox.info fillersmart.com fillseo.com film-yuelongchina.com filteringlist.com fily.fun fim34s.com fimky.com fimmu.com fin-shine.com finaleden.com finaltheory.me finance365.com financetcloud.com financeun.com financialdatamining.com financialstreetforum.com finchina.com finclip.com finddanandlaura.com finderweb.net findhro.com findic.com findic.kr findic.tw findic.us findlawimg.com findlinked.com findmyfun.xyz findmyrepair.com findoout.com findshu.net findxk.com findxz.com findyou.xin findzd.com finebey.com finebi.com fineex.com fineforming.com fineheads.com fineidc.com fineimmu.com finelybook.com finer2.com finereport.com finereporthelp.com fineset.com finesilver.store finetooling.com fineui.com finewatchcare.com fineway.com finewyx.com fineyoga.com finezb.com fingard.com finger-cnc.com fingerflyapp.com fingerjoys.com fingerstylechina.com fingertc.com fingu.com fingu.net finjetchemical.com finndy.com finogeeks.com finovo.com finshell-cib.com fintechinchina.com fintechquan.com finupfriends.com finupgroup.com finzfin.com finzjr.com fiocco-group.com fir.vip firadio.net fire233.com fire2333.com fire24h.com firebirdprint.com firebit.com firedata119.com fireemblem.net fireemulator.com fireflyacg.com firegz.com firerock.tech firetry.com firevale.com firhq.com firm-lithium.com first-panel.com first-swg.com firstarpc.com firstdrs.com firstfood-cn.com firstlinkapp.com firstmetcs.net firstonesource.com firstp2p.com firstproduction.net firstpvm.com firsunbioscience.com firwinds.site fiscan007.com fisdhu.com fish2bird.com fish3000.com fishcn.com fisherac.com fisherv.com fishfay.com fishfd.com fishflying.net fishin2boat.com fishing-sh.com fishing-sinkers.com fishingjoy.com fishingmarkets.com fishings.biz fishlee.net fishmobi.com fishqc.org fishros.com fishs.com fishtui.com fishwantg.com fishyoung.com fit-start.co fit120.net fit2cloud.com fitgroup.com fitit100.com fitoneapp.com fittentech.com fittingcn.com fiu07021kl.com fiu07040kl.com fiu07050kl.com fiu07060kl.com fiu07070kl.com fiu07090kl.com fiui.org fivecakes.com fivedo.net fiveplus.com fivestarsolar.com fivision-tech.com fix666.com fixdown.com fixhdd.org fixmath.com fiyta.com fj-atfz.com fj-ba.com fj-cc.com fj-eprint.com fj-jima.com fj-kn.com fj10010.com fj133165.com fj173.net fj2000.com fj3c.net fj888.com fj95560.com fj96336.com fj987.com fjbcjt.com fjbdex.com fjber.com fjbgwl.com fjbiopharma.com fjbk.org fjbyjs.com fjc001.com fjce.com fjcee.com fjcgxc.com fjcid.com fjcoop.com fjcqjy.com fjcredit.com fjctw.net fjctyz.net fjcyl.com fjcyl.org fjdaily.com fjdaze.com fjdc.xyz fjdf.vip fjdfxy.com fjdh.com fjdkjt.com fjdygljt.com fjdzmy.com fjeca.com fjejjt.com fjepn.com fjetc.com fjeverone.com fjfgroup.com fjfhsteel.com fjfoxiang.com fjfs.net fjfxjt.com fjfzsx.com fjgczjxh.com fjgdwl.com fjgkedu.com fjgsgl.com fjgtfood.com fjguanyue.com fjgwy.org fjhaizu.com fjhcw.com fjhospital.com fjhps.com fjhrjt.com fjhsjg.com fjhssy.com fjhuayagroup.com fjhxbank.com fjhxcaee.com fjhxvc.com fjii.com fjjcjy.com fjjcled.com fjjgn396.com fjjianxin.com fjjmylbx.com fjjnsn.com fjjoyz.com fjjsp01.com fjjszg.com fjjyt.net fjjyxy.com fjjzjt.com fjkdxh.com fjkqyy.com fjkst.com fjlawyers.net fjlb.com fjlcjs.com fjlcjt.com fjleixin.com fjlg.com fjlh.com fjlib.net fjllsn.com fjlstz.net fjlszbc.com fjly.com fjlygroup.com fjlyrmyy.com fjlyzls.com fjlzy.com fjm.info fjmap.net fjmego.com fjmh.com fjmlh.com fjmotor.net fjmstc.com fjmzw.com fjndqx.com fjndwb.com fjnet.com fjnhjt.com fjotic.com fjpca.com fjpcz.com fjpicc.com fjpit.com fjpta.com fjptdy.com fjptyz.com fjptzs.com fjptzx.com fjptzyt.com fjqfkg.com fjqjsw.com fjrclh.com fjrcw.com fjrmyy.com fjrtv.net fjsafxh.com fjsalt.com fjsanheng.com fjsdn.com fjsdsrmyy.com fjsdxy.com fjsdzj.com fjsen.com fjsenda.com fjsfa.org fjsfjyl.com fjsfy.com fjshgx.com fjshjy.net fjsj.com fjsjkyy.com fjsmjj.com fjssjt.com fjstfc.com fjstjt.com fjstmgcjzhyxh.com fjsxqy.com fjsxyqygl.com fjsyyhyxh.com fjszx.com fjtd-logistics.com fjtelecom.com fjtianya.com fjtp.net fjtv.net fjtzlt.com fjvs.org fjwanan.com fjwjgs.com fjwr.xyz fjwxj.com fjwzjt.com fjxfgroup.com fjxhfx.com fjxhyw.com fjxhyy.com fjxiehe.com fjxn.com fjxsxx.com fjxwx.com fjxxal.com fjybyjjysos.com fjyc8.com fjycw.com fjydnews.com fjyfjsjt.com fjyklc.com fjyunba.com fjyxdm.com fjyxgl.com fjyy.org fjyyjt.com fjzbgf.com fjzikao.net fjzixun.com fjzol.com fjzx.org fjzyxx.com fjzzct.com fk100.com fkask.net fkblog.org fkbuff.com fkcaijing.com fkdex.com fkdmg.com fkdxg.com fkeduwxxcx.com fkesfg.com fkgou.com fkguolu.com fkhdactive.com fkhdview.com fkhongdan.com fklhb.com fklngy.com fktool.com fkw.com fkw100.com fkwapi.com fkwatchtw.com fkwvya4035.vip fkyuer.com fkyun.com fkyxt.com fl-game.net fl0632.com fl160.com fl168.com fl365.com fl5.co fl580.com flacc.com flagchem.com flairmicro.com flamecdn.com flamesky.org flamingcold.com flan1688.com flaredup.com flash8.net flash8f.com flashcat.cloud flashgame163.com flashgene.com flashkrypton.com flashmemoryworld.com flashsalesfb.store flashv8.com flashwar.com flashwing.net flashwolfcn.com flashxsport.com flaskflock.com flatsh.com flawcache.com flclb.com flduo.com fle078.com flebm.com fleeper.com fleetlogd.com fleety.com flexifont.com fleyun.com flfc5999.com flgame.net flhimalayandn.com fliggy.com fliggy.hk flightroutes24.com flikfill.com flintech.org flintos.com flip.fun fliplus.com flleasing.com flmgr.net flml.cc floatcamellia.com floatingislandapps.com floatmaze.com flockypet.com flomoapp.com floorb2b.com flora009.work florentiavillage.com flourish-fs.com flowchemchina.com flower188.com flower33.com flowerknows.co flowever.net flowinnglobal.com flowlbkj.com flowportal.com flowtechgd.com flowtechsh.com flpsz.com flpwb.com flqrmyy.com flrcw.com flstudiochina.com fltau.com fltcsb.com fltrp.com fluke-ig.com flumatic.com flutterchina.club flvcd.com flvlog.com flvpw.com flvsp.com flvurl.net flwatertech.com flxc.net flxdns.com flxzz.com fly-exp.com fly139.com fly160.com fly1999.com fly2lan.cc fly3949.com fly63.com fly84.com fly998.com flyadx.com flyai.com flyancctv.com flycc.net flyco.com flycua.com flydigi.com flyenglish.com flyertea.com flyertrip.com flyfishx.com flyfunny.com flygo.net flygon.net flyhand.com flyingeffect.com flyingpigeon1936.com flyme.com flyme.net flymeauto.com flymeos.com flymeyun.com flyml.net flymobi.biz flymodem.net flymopaper.com flyneutron.com flysand.com flysheeep.com flytcloud.com flytexpress.com flzc.com flzhan.com fm-uivs.com fm058.com fm0754.com fm0758.com fm086.com fm120.com fm365.com fm3838.com fm4399.com fm520.com fm6w.com fm875.com fm918.net fm960.net fmbimg.com fmc123.com fmcoprc.gov.mo fmd360.com fmetro.net fmi33.com fminers.com fmjmm.com fmkefu.com fmkpharm.com fmmob.com fmscm.com fmsdlb.com fmsh.com fmssrc.com fmswift.net fmtmed.com fmtt6.xyz fmwei.com fmwhahaha.com fmy90.com fmyunlv.com fn-mart.com fn-tech.com fn010.com fnconn.com fnedge.net fnetlink.com fnf-foods.com fnfcutlery.com fnhealth.com fnji.com fnji.net fnjiasu.com fnjs.cc fnjsq.com fnkq.com fnkslift.com fnkvision.com fnlvshi.com fnmobi.com fnnas.com fnnas.net fnnsh.com fnnspa.com fnos.net fnrcw.com fnrczp.com fnsbqvz.com fnscore.com fnwlzz.com fnxzyy.com fnyes.com fnysb.com fob123.com fob580.com fobaoyou.com fobbusinessforum.com fobcentury.com fobmy.com fobshanghai.com focaj.com focalbrand.com focalhot.com focc.cc fochot.com focigc.com focobio.com focofish.com foctek.com focus-efc.com focus-eloan.com focus-fusion.com focuschina.com focusight.net focussend.com focustock.com fodaba.com fodexin.com fodian.net fodizi.com fodizi.net fodlab.com fodonline.com fofa.info fofa.so fofcn.tech fofen.com fofstudio.net fofuai.com fogcloud.io fohohr.com foidn.com foisonad.com foisongroup.com fojiaonet.com fojiaoyongpin.com fokstone.com foldur.com folidaymall.com folij9nry5cxy8.com followintg.com followsteel.com folou.com fondcosplay.com foneplatform.com fonian.com fonsview.com font.im font6.com fontgoods.com fontke.com fontong.com fontoohotels.com fontowns.com fontsfile.com fontshow.com fontvip.com fontyi.com fonye.com foodaily.com foodbk.com foodciexpo.com foodex360.com foodjx.com foodkz.com foodmate.net foodqs.com foods1.com foodsc.net foodspace.net foodspjm.com foodszs.com foodu14.com foofish.net fooher.com foojoo.com fookunion.com fookwood.com fookyik.com fooleap.org foomx.com foooooot.com foosheng.com football8888.store footballdown.com footbig.com footgamer.com footseen.com foovoo.com fooww.com foqian.com for-she.com for512.com for68.com forbeschina.com forbetty.com forbuyers.com forceclouds.com forcecreat.com forcemz.net forcger.com forcloudcdn.com ford.com fordgo.com forecam.com foreignapi.com foreignserver.com foremostgroup.com forenose.com forerunnercollege.com foreseahealth.com foresealife.com foreseamall.com foresightfund.com foresl.com forestfood.com forestmusicnanjing.com forestpolice.net forestpolice.org forevernine.com foreveross.com foreweld.com forface3d.com forgame.com forindata.com forkeji.com forkliftnet.com forlinx.com form-create.com formeasy.cc formeneed.com formessengers.com formingcn.com formssi.com formtalk.net formysql.com fornass.com fornature.com forrealbio.com forrelaxing.com forrerri.com forshine.net forsol.net forsou.com forthxu.com fortiortech.com fortrustpower.com fortunatelyt.com fortune-co.com fortunebs.net fortunehair.com fortunepdc.com fortunevc.com forwardgroup.com forwe.store forwell-parking.com foryone.com foryou56.com foryouge.com foryougroup.com forys-at.com fos.cc foscam.com foshanaosibo.com foshanmuseum.com foshannews.com foshannews.net foshanplus.com foshanpower.com foshion.com fosss.org fosstea.com fosun-uhi.com fosun.com fosunhealth.com fosunholiday.com fosunmetal.com fosunpharma.com fosunwanbang.com fotao9.com fotile.com fotileglobal.com fotilestyle.com fotomore.com fotoplace.cc fotosay.com fototuan.com foturn.com fou.net foumobile.com founder.com founder.net founderaipu.com founderbn.com founderchip.com foundereagle.com founderff.com founderfu.com founderic.com founderinternational.com founderit.com founderpcb.com founderpod.com foundersc.com foundertech.com foundertype.com founpad.com four-faith.com fourco-inc.com fourfaithwater.com fovmy.com fow.ink fowep.com fox-studio.net fox008.com foxconn.com foxconnmall.com foxera.com foxirj.com foxmail.com foxphp.com foxqq.com foxtable.com foxuc.com foxugame.com foxwaf.com foxwho.com foxwq.com foxzld.com foyuan.net fozhidaoxs.cc fozl.sg fpaixfl.com fpc-nb.com fpccn.com fpcn.net fpdclub.net fpdisplay.com fpdvision.com fpe-china.com fpg.com.tw fpga-china.com fpgabbs.com fpgakey.com fpgaw.com fphis.com fphs.cc fphs5.com fpi-inc.com fpliu.com fpoll.net fpsace.com fpsjk.com fpstt.com fpwap.com fpxz.net fpyy120.com fq688.com fqapps.com fqbnbg1311.vip fqfilm.com fqghj.net fqgyljt.com fqhospital.com fqis.xin fqjob.net fqlook.com fqnovel-op.com fqnovel.com fqnovelim.com fqnovelop.com fqnovelpic.com fqnovelstatic.com fqnovelvod.com fqpai.com fqrsw.com fquwcs3089.vip fqvpc.online fqworld.org fqxdw.com fqxs.org fqxsw.cc fr-trading.com fr0528.art fr2007.com fractal-technology.com fraeco.com fraee.com fragpunk.com fragrance.ink frainfo.com framemaker.com franceqz.com francissoung.com franckfw.com francochinois.com frankenman.group frankyrobot.com franzsandner.com fraproperty.com frcisforce.com frdic.com fread.com fredamd.com fredestiny.com free-863.com free-api.com free-coin.org free-doctor.com free-e.net free-img.com free9.net freebuf.com freebz.net freecomm.net freedgo.com freedirlist.com freedomscm.com freedoonline.com freegeeker.com freehpcg.com freeidea.win freejishu.com freekaobo.com freekaoyan.com freelycode.com freelynb.com freelynet.cloud freelynet.com freemancn.com freemindworld.com freemoban.com freemudgame.com freemypay.com freeoa.net freeovp.com freeqingnovel.com freeshoppingchina.com freessl.org freestman.com freestyle666.com freetech.com.hk freetiku.com freeuid.com freevm.com freewhale.net freeydch.com freeyun.com freezhw.com freezl.net frefloya.com frensworkz.com freqchina.com fresh-ideas.cc freshfresh.com freshhema.com freshippo.com freshippomarket.com freshiz.xyz freshnewsnet.com freshtrgetgendyalert.xyz frgsupps.store frhelper.com friendeye.com friends-exchange.com friends8.com friendship-match.com frigate-cn.video fright-tattoo.com frigidpine.com fringe-zero.com frisobaby.com fristweb.org frlawyer.com frler.com frodzo.club froglesson.com frombyte.com fromgeek.com fromshandong.com fromwiz.com frontierbiotech.com frontjs.com frontopbd.com frontpharm.com frontstreetcoffee.com frontwize.com frost-s.com frostchina.com frostwell.cc frostwell.net frostwing98.com frp-act.com frp-air.com frp-all.com frp-any.com frp-arm.com frp-bag.com frp-bar.com frp-bid.com frp-box.com frp-boy.com frp-bus.com frp-china.net frp-dad.com frp-dog.com frp-egg.com frp-end.com frp-era.com frp-fan.com frp-fee.com frp-fog.com frp-fox.com frp-fun.com frp-gap.com frp-gas.com frp-gym.com frp-hat.com frp-hen.com frp-hip.com frp-hub.com frp-ice.com frp-jar.com frp-key.com frp-kit.com frp-lab.com frp-leg.com frp-mad.com frp-mix.com frp-mom.com frp-net.com frp-now.com frp-nut.com frp-off.com frp-oil.com frp-one.com frp-own.com frp-pen.com frp-put.com frp-rib.com frp-rug.com frp-run.com frp-say.com frp-sea.com frp-shy.com frp-six.com frp-ski.com frp-sun.com frp-tag.com frpapp.com frt.ltd frtgraphite.com fruitday.com frysb.com frytea.com frzmh.com fs-ade.com fs-bus.com fs-czx.com fs-eliza.com fs-qiyun.com fs-yld.net fs.microsoft.com fs0757.com fs121.com fs1982.com fs31.com fs58.com fs7000.com fsabwy.com fsaii.com fsbankonline.com fsbldjd.com fsbqgd.com fsccjy.com fsccyy.com fschems.com fschico.com fscinda.com fscjfm.com fscjkj.net fscm.tech fscmjt.com fscsps.com fsdxzhpt.com fsecity.com fseig.com fseport.com fsesa.com fsfsfz.com fsfund.com fsfy.com fsgas.com fsgbly.com fsgcw.com fsgechao.com fsggb.com fsgplus.com fsgzhg.com fshczf.com fshd.com fshh1688.com fshj118.com fshones.com fshpharm.com fshsfl.com fshsl.com fshuiren.com fshyschool.net fshzg.com fsigc.com fsight.ai fsightai.com fsilon.com fsjgchina.com fsjgw.com fsjinlan.com fsjinma.com fsjoy.com fsjrl.com fsjsdtc.com fsjx.org fsjy.net fsky.pro fskzpw.com fslgz.com fslinker.com fsllq.com fslsg.com fsltsmhjq.com fslyx.com fsmama.com fsmcled.com fsmeeting.com fsmi818.com fsoet.com fsohu.com fsoptronics.com fsou.com fspage.com fspcdn.com fspinqiu.com fspits.com fspride.com fspt.net fspublic.com fsruibin.com fssdbjyy.com fssdlhyxh.com fsspc.com fssptjj.com fsstone.com fsswsxh.com fst-pipe.net fstaoci.com fstcb.com fstgs.com fsthr.com fstrhb.com fstvgo.com fsukj.com fswater.com fswateraso.net fswchina.com fswk.com fsxchina.com fsxinquan.com fsxsj.net fsxzygz.com fsy6.com fsyanhe.com fsygroup.com fsyhlz.com fsylr.com fsyq.net fsysyy.com fsytss.com fsyule.net fsyuncai.com fsyxg.com fsyy.net fsyyy.com fszhihuiyan.com fszhiko.com fszyjx.com ft.tech ft12.com ft22.com ft98.com ftaro.com ftbj.net ftcoaster.com ftd.nz ftdevice.com ftesop.com ftfast.com ftfund.com ftfx.ink fthformal.com fthgz.com fthimalayandb.com ftium4.com ftlcloud.com ftls.xyz ftlzghz.com ftmespro.com ftnwater.com ftoc.com ftourcn.com ftp.pet ftsafe.com ftsfund.com ftswcc.com fttrs.com ftuan.com ftwafer.com ftxad.com ftxft.com ftxgame.com ftxia.com ftxsoccer.com ftylw.com ftzbq.com ftzn.net ftzx.com fu-guan.com fu-rui.com fu2zu.com fu57.com fu62.vip fuanna.com fubabafumama.com fubangauctions.com fubaochem.com fubaofei.com fubonchina.com fubonplastic.com fuca-china.com fucantec.com fuchaipower.com fuchaoqun.com fuchen33.com fuchengshicai.com fuchuangyu.com fucnm.com fucol.club fuczx.com fuda.com fuda120.com fudaguangzhou.com fudahospital.com fudaiapp.com fudajishu.com fudajn.com fudakang.com fudancell.com fudanglp.com fudanmed.com fudanpress.com fudasafe.com fudayiyao.com fudian-bank.com fudongdong.com fudu167.com fudubao.com fuduwang.com fuduxiao.com fuduxuexiao.com fuedf.org fuel-lab.com fuelcellchina.com fuermu.com fufeng-group.com fufuidc.com fufuok.com fugary.com fugetech.com fuguangchina.com fuguangwater.com fuguantang.com fuhai360.com fuhancapital.com fuhanziben.com fuhaoku.com fuhefu.com fuheng.org fuhouyin.com fuhuibao.club fui.im fuiou.com fuioupay.com fujfu.com fujiabin.com fujianbenz.com fujiangames.com fujianguofu.com fujianmei.com fujianrc.com fujianryt.com fujiansme.com fujianyinruan.com fujincenter.com fujinguo.com fujinjiazheng.com fujinotrade.com fujutec.com fuka.cc fukangjixie.com fukangqipai.com fukangyuanyanglao.com fuke39.com fukexie.com fulanka.com fulantv.com fulengen.com fuliansheng.com fuliao.com fuliaotech.com fuliba.com fulicat.com fulimin.org fulin.org fuling.com fulinpm.com fulinsujiao.com fulinxiuxian.com fuliquan.com fulishemusic.com fulitec.com fuliti.com fuliw.net full-way.com fullcopecb.icu fullde.com fullhan.com fullics.com fulllinks.com fullluckcalendar.com fullsemitech.com fullstack.love fulltech.work fulltruckalliance.com fulou.life fultree.com fulu.com fulykong.com fuma-carbide.com fumake.com fumaofawu.com fumi.com fumiaoyinpin.com fumin.com fumu.com fumubang.com fumuhui.com fun.tv fun2ex.com fun4go.com funcdn.com funcrea.com functionads.com functionaltextilesshanghai.com functorz.com fund001.com fundebug.com fundebug.net fundegroup.com fundog.cc fundrive.com fundxy.com funenc.com funengscm.com funeralchain.com funfungolf.com fungichina.com fungj.com funhillmedia.com funhillrm.com funi.com funi365.com funik.com funiutang.net funjsq.com funkoonlinegb.club funletu.com funliving.com funmz.com funnet.net funnycore.com funnycorelive.com funnyplaying.com funnysphere.com funpaer.com funplay66.com funqipai.com funsens.com funshareamusement.com funshion.com funshion.net funshion.tv funshipin.com funtouchos.com funtoygame.com funvba.com funwear.com funxun.com funyard-hotels.com funzm.com fupanwang.com fupin832.com furagon.com furama-beihai.com furderdriving.com furenchina.com furenkeji.com furielec.com furongedu.com furrybar.com furrychina.com furuijiaju.vip furuise.com fusaide.com fusheng-group.com fushengal.com fushibao.com fushite.com fusiling.com fusion-inte.com fusion.design fusionappl.com fusure.com fusureum.com futa.eu futaike.net futang.org fute.com futianlvshi.com futongquartz.com futu5.com futuau.com futuesop.com futufin.com futuhn.com futuniuniu.com futunn.com future-sh.com futureengineer.org futurejuzhen.vip futurenetlab.com futureprize.org futurescontest.com futustatic.com fututrade.com fututrustee.com fuwa.org fuwahgroup.com fuwai.com fuwaliuxue.com fuwei.com fuweifilms.com fuweivision.com fuweiwang.com fuweizn.com fuwit.com fuwj.com fuwo.com fuwu7.com fuwuce.com fuwucms.com fuwuqinet.com fuwuqu.com fuxila.com fuxinbank.com fuxinews.com fuxinghf.com fuxingtech.com fuxingwang.com fuxuanji-jp.com fuxunpay.com fuyang.com fuyang.net fuyangbio.com fuyangjituan.com fuyangren.org fuyangtv.com fuyaogroup.com fuyaozb.com fuyaozhubao.com fuyingdai.com fuyingkeji.com fuyingyanke.com fuyiou.com fuyiwang.net fuyou.online fuyou888.com fuyoubank.com fuyougame.com fuyoukache.com fuyuan5.com fuyuan6.com fuyuehotels.com fuyunbj.com fuyuncc.com fuyunjiasu.com fuyuzhe.com fuz.cc fuzadu.com fuzamei.com fuzeetech.com fuzegame.com fuzfu.net fuzhenghos.com fuzhhc.com fuzhimao.com fuzhoufashi.com fuzhuangwang.com fuzhugo.com fuziche.com fvfvxs.com fview.com fvo2o.com fvti.com fw-12365.com fw365.online fw4.co fw4.me fwbsjnakjabdname.com fwcfwg.com fwcranes.com fwcx315.com fwdq.com fwdqw.com fwfly.com fwhzxxgbyy.com fwljmwf.com fwlxtc.com fwqje67h.work fwqlt.com fwqtg.net fws-china.com fwtoys.com fwvv.net fwwevez.xyz fwxgx.com fx-plc.com fx120.net fx168api.com fx168news.com fx168vip.com fx3q.com fx678.com fx678.net fx678img.com fx678red.com fx696.com fx898.com fxbaogao.com fxccp1296.com fxcdev.com fxclass.net fxcsxb.com fxcw.com fxdp.com fxe0898.com fxeyee.com fxeyetips.com fxfbx.com fxfcyy.com fxgjwy.com fxgz8.com fxhaoke.com fxian.org fxiaoke.com fxingw.com fxjia.shop fxkedu.com fxkjnj.com fxlbb.com fxlbl.com fxltsbl.com fxm.so fxo2opt.com fxpai.com fxpan.com fxpharm.com fxrcw.net fxsh.com fxsou.com fxsw.net fxt365.com fxtrip.com fxtrips.com fxw.la fxwe.com fxxww.net fxxz.com fxyf99.com fxzb.vip fxzhj.com fxzhjapp.com fxzygc.com fy-connect.com fy-game.com fy-mold.com fy027.com fy169.net fy1938.com fy2d.com fy35.com fy65.com fy6b.com fyaaz.org fyab.net fyage.com fyak.net fyal.net fyan.net fyapi.net fyat.net fyau.net fyaw.net fybiji.com fybj.net fybjsd.com fyblogs.com fybxw.com fycpu.com fycrcgas.com fyddj.com fyddjys.com fydeos.com fydvtu.com fyec.net fyeds.com fyeds0.com fyeds1.com fyeds2.com fyeds3.com fyeds4.com fyeds5.com fyeds6.com fyeds7.com fyeds8.com fyeds9.com fyedu.net fyeedu.net fyehare.com fyfch.com fygame.com fygdrs.com fygi.com fygift.com fygjyljt.com fygmbc.com fygroup.com fygsoft.com fyigou.com fyjl.org fyjsz.net fyjzyxh.com fylcg.com fyleasing.com fyluo.com fymaduoji.com fymall0.com fymall1.com fymall2.com fymall3.com fymall4.com fymall5.com fymall6.com fymall7.com fymall8.com fymall9.com fymallqa0.com fymallqa1.com fymallqa2.com fymallqa3.com fymallqa4.com fymallqa5.com fymallqa6.com fymallqa7.com fymallqa8.com fymallqa9.com fynas.com fynb.net fynews.net fypage.com fypt.net fyqyjt.com fyrc.net fyrcbk.com fyrexian.com fyrmyy.com fyrqgs.com fyrwzz.com fyscs.com fysfzk.com fysip.com fysoft3.com fysyy.com fytcw.com fythbkj.com fytire.com fytschool.com fytxonline.com fytz.net fyuanpack.com fyun.cc fyun.org fyvart.com fywip.com fywx.cc fyxhlink.com fyxtzc.com fyxxcl.com fyxxwb.com fyxz.com fyydnz.cc fyynlx.com fyyy.com fyzku.com fyzls.com fyzp.net fz-aefi.com fz-energy.com fz-gf.com fz0752.com fz222.com fz2sc.com fz597.com fzahw.com fzaqjy.com fzbbk.com fzbdcj.com fzbidding.com fzbingo.com fzbm.com fzccpit.org fzcollege.org fzcpos.com fzcrg.com fzcyjh.com fzddg.com fzdmag.com fzdzyun.com fzec-tencentclb.cloud fzec-tencentclb.com fzec-tencentclb.net fzec-tencentclb.work fzele.com fzengine.com fzentertainment.com fzetyy.com fzfhg.com fzfinancing.com fzfrp.com fzfu.com fzfzjx.com fzg360.com fzghy.com fzgolden.com fzhlkx.com fzhqzx.net fzhzxh.com fzithome.com fzjdct.com fzjingzhou.com fzjs.work fzjxr.com fzjxw.com fzkjg.com fzl7.com fzlawyers.net fzlbar.com fzlean.com fzlft.com fzlizhi.net fzlol.com fzmama.net fzmetro.net fzmtr.com fzn.cc fzport.com fzqywater.com fzrsrc.com fzs.com fzsdtkq.com fzsdyyy.com fzshouji.com fzslyy.com fzswgc.com fzswjt.com fzswyc.com fzsybj.com fzthinking.com fzvcolco.com fzwater.com fzwcn.com fzwhzn.com fzwqq.com fzwtqx.com fzwxxcx.com fzxiaomange.com fzxm.com fzyfan.com fzyfs.net fzyinghe.com fzyun.net fzyvis.com fzyz.net fzzhaobiao.com fzzhtc.com fzzhuoyi.com fzzixun.com fzzpw.net fzzqcdn.com g-biomed.com g-bits.com g-digital4ud.com g-film.com g-hi.com g-medon.com g-proxy.com g-spin.com g-tar.com g-var.com g.biz g00gle.vip g052m43e2ghn.com g1080.com g12e.com g12e.org g15wt3ci68.com g188.net g1c5.com g1d.net g1f5.com g1yx.com g2.link g20chn.org g2ak5.com g2h3.com g2us.com g2work.com g32365.com g3d.org g3img.com g3user.com g3voip.com g3wei.com g4weixin.com g59p.com g5h.com g5h4.com g5kj.com g63.fun g66667777.com g768r.com g77775555.com g77776666.com g7bd307de.skin g80mx.com g82btd54.work g88885555.com g88886666.com g8hh.com g983.com g9china.com ga-me.com ga-zn.com ga002.com gaaamee.com gaapqcloud.com gaaptest.com gac-capital.com gac-nio.com gacfca.com gacfcasales.com gacfiatauto.com gachn.com gaclib.net gacmotor.com gacrnd.com gacsofinco.com gadlee.com gae-pro.com gaeadata.com gaeamobile-inc.net gaeamobile.net gaetausohyei.com gafata.com gafei.com gafencuchina.com gagacafe.com gagaga.icu gagaga.tech gagahi.com gai.net gaiabiohx.com gaiamount.com gaiaworkforce.com gaibang365.com gaibar.com gaibieshu.net gaicas.com gaigeshen.work gainchip.com gainda.net gaineng.net gainet.com gainifyads.com gainscha.com gaintop.com gairuo.com gaisen.ltd gaishichina.com gaishitongshu.com gaitu.com gaituba.com gaitubao.com gaituya.com gaixingchang.com gaixue.com gaiyadajidali.com gaiyazhanlan.com gaizhui.com gajerseys.com gajsk.com gal3d.info gala-v.com galaxix.com galaxus.work galaxy-geely.com galaxy-immi.com galaxyappstore.com galaxyasset.com galaxycarepair.com galaxyfont.com galaxyinfo.com galaxymagnets.com galaxyoversea.com galileo.work galsun.com galudisu.info galvincdn.com gamder.cc gamdream.com game-as.com game-client.com game-props.com game-reign.com game10000.com game112233.com game123.space game12315.com game13.com game2.com game234.com game332.com game3vs7novel.com game499.com game5.com game5399.com game773.com game798.com game80s.com game89.com game900.com game9012.com game95.cc gameabc.com gameabc2.com gameabc2.net gameapida.com gameapp.club gamebar.com gamebean.com gamebean.net gamebee.net gamebonfire.com gamebto.com gamecat.fun gamecatstudio.com gamecomb.com gamecps.com gamed9.com gamedachen.com gamedo.org gameducky.com gameegg.com gameexp.com gamefang.com gamefeile.com gamefm.com gamegamept.com gamege.com gameggg.com gamegocenter.com gamegocenter.net gamehaopu.com gamehome.tv gameinns.com gameitop.com gamejym.com gamekee.com gamekezhan.com gamekuaishou.com gamelet.games gameley.com gameloop.com gameloop.fun gamemale.com gamemcu.com gamemei.com gamemili.com gamenow.club gameol.com gamepingce.com gamepp.com gamer520.net gamerboom.com gameres.com gamerhome.com gamerhome.net gamermake.com gamersky.com gamersky.net gamerstorm.com gamesh.com gameshr.com gamesifu.com gametanzi.com gametaptap.com gametdd.com gametea.com gametea.net gamethk.com gamett.net gamewifi.net gamewower.com gamexdd.com gamexhb.com gamexun.com gameyiming.com gameyisi.com gameyj.com gamfe.com gammabicycle.com gammatimes.com gamutsoft.com gamux.org gamxex.com gan-ren.com ganboo.com ganduee.com gangbao365.com gangbogroup.com gangduotech.com ganggangguoji.com ganggg.com gangguan8.com gangguana.com ganghaowang.com gangjiajieli.com gangpaibao.com gangqinpu.com gangqinxiansheng.com gangshenglian.com gangtise.com gangwan.com gangyu.org gangyuan.com ganhao.vip ganji.com ganjiangrc.com ganjiangvpn.com ganjiazheng.com ganjin.com ganjistatic1.com ganjistatic2.com gank-studio.com gank.io gankang.com gankao.com gankaomao.com gankaosheng.com gankgames.com gankh5.com ganlj.com ganlongjt.com ganlv.net ganlvji.com ganniu.com ganode.org ganqi.com ganqi.net ganqing10.com ganrobot.com ganso.net gansuairport.com gansumuseum.com gansuyouxi.com gantanhao.com gantanhao.vip gantong.net ganwan.com ganxb2.com ganxi.com ganxianw.com ganxianzhi.win ganxinet.com ganyeah.com ganyu.com ganyu.org ganyu8.net ganyurc.com ganzhe.com ganzhishi.com ganzhong.net ganzitv.com gao-shou.com gao.bo gao.com gao7.com gao7gao8.com gaoan.net gaobei.com gaobiao.xyz gaobohealthcare-sh.com gaocangyun.com gaoce.cc gaocegege.com gaochun.info gaoda8.com gaodage.com gaodangbiao.com gaode.com gaodilicai.com gaodimed.com gaoding.com gaoduan.cc gaoduanqianzheng.com gaoduguoji.com gaodun.com gaodunwangxiao.com gaofacable.com gaofangcache.com gaofangm.com gaofangz.com gaofans.com gaofeie.com gaofen.com gaofenplatform.com gaofenzi.org gaofushuai.com gaogpress.com gaoguai.com gaogulou.com gaohaipeng.com gaohangip.com gaoheconsult.com gaohr.com gaohuasec.com gaoimg.com gaojer.com gaoji.ren gaojie.com gaojihealth.com gaojima.com gaojipro.com gaojitui.com gaojiua.com gaokao.com gaokao365.com gaokao789.com gaokaobaoming.com gaokaohelp.com gaokaomeishu.com gaokaopai.com gaokaoq.com gaokaozhiku.com gaokaozhitongche.com gaokeny.com gaokin.com gaokowl.com gaokw.com gaokzx.com gaolian.com gaoligroup.com gaolihanjie.com gaolouimg.com gaomeif.com gaomeluo.com gaominews.com gaomon.net gaopaiwood.com gaopeng.com gaopin.tech gaopinimages.com gaopost.com gaoqidian.com gaoqingdianshi.com gaoqinghua.com gaoqingpai.com gaoqiwenda.com gaoqixhb.com gaoqixie.com gaore.com gaosafe.com gaosan.com gaoseng.com gaoshou.me gaoshouvr.com gaoshouyou.com gaosiedu.com gaosivip.com gaosouyi.com gaosu.com gaosudu.com gaotang.cc gaotangwang.com gaotieshike.com gaotu006.club gaotu007.club gaotu100.com gaotu11.com gaotuxueyuan.com gaowoip.com gaoxiaobang.com gaoxiaodashi.com gaoxiaoit.com gaoxiaojob.com gaoxiaoo.com gaoxiaozp.com gaoxin123.com gaoxincarbon.com gaoxinedu.com gaoxinedu.net gaoxinjy.com gaoxitech.com gaoyawang.com gaoyizaixian.com gaoyoujob.com gaozhaiedu.com gaozhentang.com gaozhidazhuan.com gaozhongwuli.com gaozhouba.com gaozi365.com gap.hk gapitech.com gaqcloud.com gaqcloud.net gaqcloud1.com gaqcloud2.com gaqcloudbackup.com gaqcloudbackup.net gara.cc garage-bastide.com gardencn.com gardenhotel.com gardenhotelshanghai.com garfopg.org garleden.com garmuri.com garnoc.com garnor.com garphy.com garply.com garyee.com gas-analyzers.com gas-scrubber.com gas-turbine-parts.com gas775.com gas800.com gasfw.com gasgoo.com gasgood.com gashr.com gashw.com gaspeedup.com gaspim.com gasshow.com gastank-china.com gastronomy.gov.mo gate-dhgames.com gateface.com gateweb3.cc gateweb3.io gather-dns.com gaudie.org gaugan.com gaush.com gautomator.com gavill.com gavindesign.com gavinzh.com gaxgame.com gaxrmyy.com gayzyhh.com gaze.run gazemd.com gazx.org gb324.com gb55009.com gb56.net gb5842.com gbacd.com gbase8a.com gbasebi.com gbasig.com gbdex.com gbdz.net gbeca.org gbffchina.com gbgba.com gbgcn.com gbhome.com gbiac.net gbicdn.com gbicom.com gbictc.com gbimg.com gbma.org gbofd.com gbox.pub gboxchina.com gbphar.com gbrgz.com gbskptu1044.vip gbsrobot.com gbstape.com gbt88.com gbtranswins.com gbvh.com gbw114.com gc-zb.com gc0771.com gc1616.com gc39.com gc48tdh6gm.com gc73.com gc91.com gcable.tv gccdn.net gccgz.com gcchina.com gccmgw.com gccrcw.com gcdcrs.com gcexlab3.com gcgd.net gcgzjt.com gchao.com gchbs.com gchhotels.com gci-china.com gcihotel.net gciig.com gcimg.net gcjc.com gcjgxx.com gcjlkj.com gcjr.com gcjy.info gckychina.com gcl-et.com gcl-perovskite.com gcl-power.com gcld.net gclhgc.com gcloudcs.com gcloudcstest.com gcloudcstestonly.com gclouddolphin.com gcloudf.com gcloudgbs.com gcloudsdk.com gcloudsvcs.com gcmc.cc gcok.com gcomtechnology.com gcopt.com gcoreinc.com gcores.com gcpok.com gcpunion.org gcs66.com gcscmp.com gcstorage.com gctianshanxh.com gctong.com gctzsh.com gcwdp.com gcwduoduo.com gcwith.com gcykj.com gcyts.com gcyy08.com gczyg.com gd-chenxing.com gd-chuangfu.com gd-dl.com gd-esa.com gd-haijing.com gd-hcsj.com gd-hongyuegroup.com gd-hskj.com gd-hstech.com gd-huadi.com gd-id.com gd-jinzhanggui.com gd-jxjy.com gd-kexin.com gd-linux.com gd-linux.org gd-ls.com gd-lt.com gd-realfaith.com gd-shenhua.com gd-tianchen.com gd-tianyue.com gd-wanxi.com gd-weisi.com gd-xrsd.com gd1580.com gd165.com gd2000.org gd2h.com gd32.com gd32mcu.com gd3n.com gd56114.com gd563.com gd9d.com gda086.com gdaa.ltd gdadjs.com gdadri.com gdaep.com gdahua.com gdaia.net gdaii.com gdairport.com gdanano.com gdandun.com gdapi.net gdarcu.net gdase.com gdass.org gdatacube.net gdatc.net gdbailin.com gdbainengbao.com gdbaishun.net gdbbk.com gdbhnk.com gdbicyclexh.com gdbidding.com gdbita.com gdbljd.com gdbmh.com gdbsjd.com gdbzkz.com gdbzkz.org gdcaa.com gdcaia.com gdcaward.com gdcayyebh.com gdccaa.com gdcci.com gdccus.org gdcdsh.com gdceg.com gdcgkg.com gdchanbo.com gdchess.com gdchjt.com gdcia.org gdcic.net gdcjrhcjh.com gdcjtd.com gdcjxx.com gdcocodemer.com gdcoop.com gdcopper.com gdcordblood.org gdcost.com gdcow.com gdcreate.com gdcsgj.com gdctaa.com gdctcd.com gdctdb.com gdctpark.com gdcts.com gdctsvisa.com gdctsy.com gdcvi.net gdcxc2c.com gdcxxy.net gdcygp.com gdcyl.org gdczedu.net gdczkj.com gdczyy.com gddata.net gddci.com gddcjt.com gddcm.com gddelux.com gddeqing.com gddfpaper.com gddfund.com gddg.cc gddhn.com gddianchuang.com gddidg.com gddikasi.com gddingxin.com gddjauto.com gddlaaa.com gddlkj.com gddmsmc.com gddqfs.com gddqfs.net gddrcgzjt.com gddsjt.com gddtop.com gddyhb168.com gddysl.com gddz0769.com gde.cc gdeams.com gdebidding.com gdecn.com gdedia.com gdedu123.com gdeeia.com gdefair.com gdeia.com gdems.com gdepi.com gdevops.com gdfanhua.com gdfcjz.com gdfeiyang.com gdfenxiao.com gdfggvfsd.asia gdfgq.club gdfjsh.org gdfplaza.com gdfs.com gdfsg-yxva.vip gdfshx.com gdfuji.com gdfushefanghuxiehui.com gdfzsy.com gdgajt.com gdganhua.com gdgassoc.com gdgcjhf.com gdgczb.com gdggkf.com gdghg.com gdgkfn.com gdgkty.com gdgowe.com gdgpc.net gdgrsw.com gdguangdong.com gdguozhi.com gdgwyw.com gdgxxbw.com gdgzhengzhou.com gdgzrb.com gdhairun.com gdhaoma.com gdhbsh.com gdhchina.com gdhcsh.com gdhdbxg.com gdhdgc.com gdhengdian.com gdhfjt.com gdhfkg.com gdhhgroup.com gdhhjs.net gdhhotels.com gdhjtz.com gdhjzs.com gdhla.com gdhmgc.com gdhongsha.com gdhpwx.com gdhqzy.com gdhsbid.com gdhtcm.com gdhuana.com gdhuaxun.net gdhuaya.com gdhwater.com gdhwgf.com gdhwjl.com gdhxgf.com gdhylhh.com gdhzsb.com gdicoou.com gdida.org gdie.com gdinfo.net gdinin.com gdinm.com gdinsa.org gdinsight.com gdipa.org gdippa.com gdiso.com gdj-tech.com gdjdxh.com gdjdxy.com gdjhh.com gdjiabao.com gdjinge.com gdjinguan.net gdjingyin.com gdjinzong.com gdjiutu.com gdjky.com gdjlfood.com gdjlxh.org gdjly.com gdjs120.com gdjshd.com gdjugong.com gdjuhan.com gdjuntai.com gdjxjy.com gdjxzs.com gdjydg.com gdjysteel.com gdjyw.com gdjyyy.com gdkailin.com gdkcsj.com gdkepler.com gdkingma.com gdkjb.com gdkjk56.com gdkjw.com gdkjzy.net gdks168.com gdkszx.com gdktzx.com gdkxpcb.com gdkyhj.com gdkz88.com gdlaoan.com gdlgsw.com gdlgxy.com gdlighting.com gdlii.com gdlinefly.com gdlingjie.net gdlins.com gdliontech.com gdlkjt.com gdlmetc.com gdlnpumps.com gdlsgz.com gdlswl.com gdly-motor.com gdlz.com gdmagam.com gdmain.com gdmca.org gdmhjjt.com gdmia.com gdminda.com gdmm.com gdmoa.org gdmschina.com gdmtjt.com gdmuah.com gdmusah.com gdmuseum.com gdmzh.com gdmztv.com gdnanbo.com gdnbdaqi.com gdnd2016.com gdnengyuan.com gdneptunus.com gdnewmedia.cc gdnfu.com gdnfzb.com gdnhci.com gdnin.com gdniubang.com gdnjuae.com gdnybank.com gdnyjt.com gdofun.com gdoip.com gdojbk.com gdokpackaging.com gdolai.com gdomall.com gdou.com gdpace.com gdpdd.com gdpengquan.com gdpia.com gdprm.com gdprm.net gdpsc.org gdpysc.com gdqcxcl.com gdqianliang.com gdqianyou.com gdqlxh.com gdquannong.com gdqxjt.com gdqynews.com gdrc.com gdrc360.com gdrc365.com gdrcu.com gdrdcy.com gdrfyy.com gdronggang.com gdroro.com gdrqj.org gdrsrc.com gdruien.com gdruisheng.com gdrxyy.com gdrxzx.com gdryc.com gds-huanbaogroup.com gds-services.com gdsa.com gdsaipu.com gdsalt.com gdsanlian.com gdsanling.com gdsbaxh.com gdscse.net gdsday.com gdsdays.com gdsdkg.com gdsdwan.com gdsdyy.com gdsflbs.com gdsfpharma.com gdsfsgl.com gdsgd.com gdsgj.com gdsgjgxh.com gdshcm.com gdshe.org gdshunna.net gdshuojin.com gdsia.net gdsjqr.com gdsjx.com gdsjxjy.com gdskfz.com gdskills.com gdskin.com gdslrobot.com gdslwl.com gdsme.org gdsoftpark.com gdspeedtest.com gdsports.net gdsqyg.com gdsrcw.com gdssie.com gdsspt.net gdst.cc gdstc.group gdstie.com gdstlab.com gdsugar.com gdsunfly.com gdsunhot.com gdsunli.com gdsuxie.com gdswgc.com gdswine.com gdsxgd.com gdsxgf.com gdsytech.com gdsyy.org gdsyzxsz.com gdszjgdj.org gdszkw.com gdszsl.com gdszxh.com gdtaihao.com gdtap.com gdtc.cc gdtcoin.com gdtcyy.com gdtengen.com gdtengnan.com gdtex.com gdtextbook.com gdtianrun.com gdtianshanoa.com gdtichy.com gdtimg.com gdton.com gdtongda.com gdtongjiang.com gdtongyi.com gdtravel.com gdtri.com gdtstream.com gdttaph.com gdttc.com gdtu.org gdtx56.com gdtykj.net gdtz888.com gdtzb.com gdu-tech.com gduaee.com gdunis.com gdunt.com gdupi.com gdus.cc gdutbbs.com gdveren.com gdvolunteer.net gdwanlv.com gdwanshun.com gdwbyq.com gdwca.com gdwczb.com gdweilaisw.com gdwha.org gdwia.com gdwlcloud.com gdwld.com gdwlife.com gdwsa.com gdwse.com gdwsrc.net gdww.com gdwxyf.com gdwz.com gdxdf.com gdxdpg.com gdxdy.com gdxfl.com gdxindun.com gdxinqiang168.com gdxinxiang.com gdxise.com gdxjzx.org gdxmsx.com gdxscode.com gdxsn.com gdxueyin.com gdxxb.com gdxy.vip gdxych.com gdybkjjt.com gdyd.com gdydgj.com gdydzb.com gdyeb.com gdygsk.com gdyhgn.com gdyhsp.com gdyiyou.com gdykhb.net gdylhp.com gdyngl.com gdyouyes.com gdypt.com gdyqxc.com gdyslyh.org gdysnk.com gdysxh.com gdytc.com gdytxh.com gdyuanshun.com gdyuasa.com gdyuegou.com gdyuhi.com gdyunxiao.com gdyunyin.net gdyxc.com gdyyjgxh.com gdyyyy.net gdz.co gdzbha.com gdzcjt.net gdzd-motor.com gdzdbidding.com gdzgjl.com gdzgy.com gdzhcx.com gdzhenxing.com gdzhiding.com gdzhig.com gdzhonghua.com gdzhongpeng.com gdzhongshan.com gdzjdl.com gdzjqy.com gdzp.org gdzrlj.com gdzs2018.cc gdzs2018.vip gdzskj.tech gdzsxx.com gdzszt.com gdztbz.com gdzuoxie.com gdzxgj.com gdzxmm.com gdzy5413.com gdzygroup.com gdzygy.com gdzyinvest.com gdzyjnw.com gdzz114.com gdzzjc.com gdzzw.net gdzzz.com ge-garden.net ge100.com geakr.com geality.com geapu.com gear5.me gearbbs.net gearfront.net gearkr.com gearpharma.com gearsnet.com geatmap.com geautos.com gebaiwan.com gebchina.com gebertech.com gebilaoshi.com gebinlong.com gebiqu.com gec123.com geci123.com gecimi.com gecpc.com gedi2099.com gedou8.com gedoumi.com gedu.org geeboo.com geebook.com geedai.com geedu.com geeetech.com geeeu.com geehy.com geejing.com geek-docs.com geek-papa.com geek-share.com geek32.com geekbang.com geekbang.org geekbangtech.com geekcar.com geekcar.net geekclo.com geekdata.com geekdaxue.co geekdive.com geekefu.com geekercloud.com geekerconsulting.com geekerhua.com geekfans.com geeklab.work geeklei.com geekluo.com geekmaker.com geekman.vip geeknev.com geekpark.net geekpwn.com geekpwn.org geeksblog.cc geeksman.com geektcp.com geektutu.com geeku.net geekwom.com geekxia.com geekxue.com geekzhao.me geekzl.com geelevel.com geely-auto-gtm.com geely-test.com geely.com geely.pe geelycv.com geelyholding.com geelylaos.com geelyminiprogram.com geelyph.com geelysc.com geement.com geeqee.com geermunews.com geermurmt.com geeseteam.com geesic.com geespace.com geetest.com geevisit.com geewaza.com geexek.com geezn.com gegame.site gegeailu.org gegedao.com gegejia.com gegemm.work gegeselect.hk gegeyingshi.com gehaowu.com gehope.com gehua.com gehua.net gei-journal.com gei.pw gei6.com geicloud.com geihuasuan.com geihui.com geilicdn.com geilijiasu.com geilijiasu.net geiliwx.com geimian.com geindex.com geiniwan.com geisnic.com geizan.cc gelaha.com gelicang.net geline.net gelinya.com geliqi.net gellec.com gelonghui.com gelu.me gelufu.com gem-soft.com gemac-cn.com gembotech.com gemchina.com gemdale.com gemei.com gemelai.com gemiaomiao.org gemii.cc gemini-galaxy.com gemini530.net gemjz.com gemled-tech.com gempharmatech.com gempoll.com gemuedu.com genchim.com gendan5.com gendantong.com gendone.com genegeo.com geneliunx.com genelotus.com genepharma.com general-power.com generalfushi.com generalichina.com generaltouch.com generalwatertech.com genergy-technology.com genericfixer.com generosbio.com genesis-rock.com geneskies.com genetalks.com genevoyager.com geneway-bio.com geneworldcn.com genfleet.com gengchuangz.com gengfuwang.com genghai.com gengius.com gengleyuan.com gengls.org gengnie.com gengsan.com gengshangpin.com gengstar.com gengzhongbang.com genhousebio.com geni4s.com genial.vip geniatech.com genie-robot.com geniusafc.com geniusara.com geniuscn.com geniusite.com genmiao.com genobank.org genomeditech.com genrace.com genscript.com gensee.com genshinimpact.com genshinimpact.moe genshuixue.com genstars.com gentags.com gentags.net gentco.com gentechchina.com gentize.com genudite.com genuine-bio.com genuway.com genvict.com genway.net geo-compass.com geo.kaspersky.com geo2k.com geoactivity.net geoai.com geoforcechip.com geogsci.com geoharbour.com geohey.com geoidc.com geolong.com geometryauto.com geons.host georginaarmadas.com geosheen.com geospatialsmart.com geotmt.com geovisearth.com gepcc.com gephb.com gepresearch.com gepubbs.com gepush.com geren-jianli.com gerenjianli.com gerenshuoming.com gerhard-china.com germmc.com geruihuate.com geruishuiwu.com geruisi-bio.com gerzz.com gesanghua.org gescosteel.com gescs.com gesedna.com gesedna.net gesep.com geshitong.net geshui.com geshui100.com geshui99.com geshuiba.com gesuo.com geswl.com get-shell.com get.vip get233.com getbs.com getcai.com getconnectplus.com getddhospi.com getehu.com getelighting.com getgetai.com gethover.com getiis.com getiot.tech getkwai.com getmarkman.com getpm.com getquicker.net getrebuild.com getsays.com getsetgadget.com getsurfboard.com gettopacoustic.com getu.fun getui.com getui.net getui.vip getvidi.co gewala.com gewara.com gewei-wh.com gewei.com geweng.com gewu.vc gewuer.com gewuzhixiang.com gexiao.me gexiaocloud.com gexinda.com gexing.com gexing.me gexings.com gexingshuo.com gexingzipai.com gexiong.com gexiuyixibai.org geyawatch.com geyevalve.com geyifudi.com geyo.com geyoukj.com gezida.com gezila.com gezipu8.net gezivisa.com gf-cloud.com gf-funds.com gf-metals.com gf-nj.com gf.app gf.cc gf139.com gf1579.com gf7979cn.com gfan.com gfanstore.com gfbk.net gfbzb.com gfbzb.net gfcdn.xyz gfcity.com gfcname.com gfcvisa.com gfd178.com gfdj99665.com gfdns.net gfdsa.net gfedu.com gfedu.net gffirm.com gffwq.com gfglb.com gfhealthcare.com gfjeah-rhjeb6.com gfjl.org gflad.com gflz.com gfmpv.com gfnormal00ai.com gfnormal00am.com gfnormal01ab.com gfnormal01ad.com gfnormal01af.com gfnormal01ag.com gfnormal01ah.com gfnormal01aj.com gfnormal01at.com gfnormal02ab.com gfnormal02af.com gfnormal02am.com gfnormal02ap.com gfnormal03ae.com gfnormal03al.com gfnormal03aq.com gfnormal04ai.com gfnormal04ak.com gfnormal04ao.com gfnormal04ar.com gfnormal05af.com gfnormal05ah.com gfnormal05ap.com gfnormal05aq.com gfnormal05ar.com gfnormal06ai.com gfnormal06as.com gfnormal06at.com gfnormal07ac.com gfnormal07ah.com gfnormal07ai.com gfnormal08ag.com gfnormal08as.com gfnormal08at.com gfnormal09ag.com gfnormal09aq.com gfnormal09ar.com gforward.org gfoxsoft.net gfren.org gfrtrttweet.com gfslgy.com gfsz.net gftiec.com gfttek.com gftuan.com gfun.me gfund.com gfvip00ae.com gfvip01ad.com gfvip02aa.com gfvip04ah.com gfvip04al.com gfvip05ae.com gfvip05ag.com gfvip05aj.com gfvip05am.com gfvip06ae.com gfvip07ab.com gfvip08ab.com gfvip08ac.com gfvip08an.com gfvip08at.com gfxaa.com gfxcamp.com gfxtr1.com gfxy.com gfzihua.com gfzj.us gg-lb.com gg-led.com gg.com gg122.net gg1994.com ggac.net ggai12180cp.com ggaiyan.com ggas.com ggbamy.com ggbanfu.com ggbondtech.com ggbygx.com ggcimbar.com ggcj.com ggcx.com ggcykf.com ggdata.com ggecc.com ggecgc.com ggemo.com ggeye.com ggfsfy.com ggfswy.com ggg42.com ggg868.com gggcn.com gggfyl.com gggg5.com ggghny.com gggjs.com gggqa.com gggrp.com gggua.com gggwg.com gggzhi.com gggzpw.com gghb.cloud gghcgg.com gghosp.net gghs.info gghualong.com gghx120.com gghy.org gginto.com ggjcpm.com ggjpay.com ggjrw.com ggjstz.com ggjszp.com ggjt.com ggjtfw.com ggksw.com ggkuai.com ggl.com gglenglish.com gglkw.net gglmg.com ggmlechi.com ggmm55.com ggmm777.com ggmsw.com ggnqmy.com ggo.net ggo10150lq.com ggoplay.com ggowan.com ggqule.com ggqunshanmuye.com ggqx.com ggrcw.com ggren.net ggrsmy.com ggrsrc.com ggsafe.com ggsfcw.com ggshfmy.com ggshmy.com ggslxs.com ggsq.cc ggtime.com ggtjx.com ggtrj.com ggttvc.com ggunk1tn.com ggwan.com ggwan.net ggweb.net ggweijie.com ggwlxx.com ggwxmuye.com ggwzpf120.com ggxarq.com ggxdsmzx.com ggxhx.com ggxiaolinmy.com ggxinzhitaimy.com ggxjhk.com ggxsjz.com ggxue.com ggxx.net ggy.net ggy775.com ggyouyu.com ggysc.com ggysfw.com ggytc.com ggyx666.com ggyy100.com ggzbbj.com ggzc.net ggzgc.com ggzha.com ggzhaf.com ggzs.me ggzuhao.com ggzx.net gh-fm.com gh-reagent.com gh-shipping.com gh8s.com ghatg.com ghboke.com ghbxrj.com ghc168.com ghcec.com ghcis.com ghcxzb.com ghddi.org ghdoor.com ghed119.com ghedu.com ghfdc.org ghgglobal.com ghglzx.com ghgy.com ghhyjc.com ghibliwiki.org ghitcsh.com ghitest.com ghjbh123.com ghlawyer.net ghlearning.com ghlshb.com ghlykj.com ghmba.com ghmcchina.com ghmd448.com ghmisnet.com gho5.com ghoffice.com ghost-him.com ghost008.com ghost11.com ghost32.net ghost64.com ghostchu.com ghostoact.com ghostsf.com ghostwin7win8.com ghostxp2.com ghostxpsp3.net ghostxx.com ghoxz.com ghparking.com ghpepower.com ghproxy.cc ghpy3333.com ghpym.com ghrepower.com ghrlib.com ghs.net ghschool.com ghsd16888.com ghsense.com ghsmc.com ghsmpwalmart.com ght-china.com ght120.com ghtech.com ghtianshancn.com ghtt.net ghturbine.com ghtzgs.com ghwgame.com ghxi.com ghxsw.com ghyg.com ghyhjsw.com ghyl888.com ghzhushou.com ghzs.com ghzs666.com giabbs.com giaimg.com gialen.com giant-china.com giant-cycling-lifestyle.com giantaircompressor.com giantcdn.com giantet.com giantgd.com giantkone.com giao.me gibcp.com gicasa.com giccoo.com gicfg.com gicp.net gidepay.com giecds.com giexya.com gif5.net giffox.com gifhome.com gifshow.com giftres.com giftsbeijing.com gifu-pr.com giga-da.com giga-science.com gigaget.com gigbl.com gigpayroll.com gihg.com gihiji.com giho.com giihg.com giikin.com giiktop.com giiso.com gijsq.com gildata.com gilieye.com giltbridge.com giltworld.com gimcyun.com gimhoy.com gimmgimm.com gimoo.net gimsh.com gin-vue-admin.com ginde.com ginfon.com gingerbreadstudio.cc gingyan.com ginlong.com ginshio.org ginwa.com gio.ren gio07231rp.com gio07250rp.com gioccc.com giocdn.com giomeru.com gionee.com gionee.net gioneemobile.net gioner.com giordano.com giorgiomorandihotels.com giraff3.com girdear.net girl13.com girls-frontline.com girlsfighters.com girlw.net giscafer.com giserdqy.com gispark.org gissaas.com gissinggroup.com gissky.net gistc.com git-repo.info git-star.com gitcafe.ink gitclone.com gitcode.com gitcode.host gitcode.net gitee.com gitee.io githang.com github-zh.com githubim.com githubshare.com gitinn.com gitiu.com gitlib.com gitmirror.com gitnoteapp.com gitom.com gitpp.com gitsea.com gitshell.com gitv.tv gityuan.com gityx.com giveda.com giyu8.com gizaworks.com gizwits.com gj62.com gjbaek.ren gjcars.com gjceshi9.com gjcha.com gjcoil.com gjcweb.com gjcxgs.com gjdk100.com gjds.vip gjdwzp.com gjfmxd.com gjghy.com gjgzpw.com gjhgroup.com gjhl.com gjj.cc gjjcxw.com gjjiaxiao.com gjjnhb.com gjjsbz.com gjkdwl.com gjl15.com gjlease.com gjmbwxpt.com gjmbwxzx.com gjmrk.com gjnlyd.com gjpdh.com gjrwls.com gjsj.com gjsun.com gjsy.org gjtmu.com gjtool.com gjtt.net gjw.com gjw123.com gjwca.org gjwl123.com gjwlyy.com gjxh.org gjxx.com gjxzq.com gjydz.com gjyfish.com gjyuxiang.com gjyys.com gjzfw.com gjzy.com gk-cn.com gk-net.com gk-z.com gk.ink gk.link gk100.com gk114.com gk99.com gkcyc.com gkczgs.com gkczp.com gkfb.com gkgzj.com gkhxtc.com gki88.com gkjzy.com gkket.com gkkxd.com gklx.net gkmao.com gkmems.com gkmhq.com gkmotor.com gkong.com gkoo.net gkoudai.com gkqcw.com gkqxfsl.xyz gkrpgtee.com gkshanghai.com gkshuju.com gktianshanjd.com gkuresx.com gkwo.net gkxd.com gkxs.com gkxx.com gkyly.com gkzhan.com gkzj.com gkzj.net gkzpfw.com gkzppt.com gkzq.mobi gkzqxc.com gkzxw.com gkzy.com gkzy100.com gkzyb.com gkzzd.com gkzzy.com gl-data.com gl-mes.com gl-qf.com gl-uav.com gl-zj.com gl102.com gl114.net gl170.com gl17u.com gl18.com gl258.com gl2mt.com glab.online glacierluo.com gladcc.com gladdigit.com glafamily.com glamever.com glamourred.com glamourtrains.com glanimaltrade.com glanu.com glaproject.com glasercom.com glass-ciac.com glassbottleproducer.com glasseasy.com glassmicro.com glavo.site glaway.com glawyer.net glb3.com glb4.com glb6.com glbaishen.com glbdns.com glblkq.com glby118.com glbyhotel.com glbyjdjt.com glcablesy.com glcanyin.net glcape.com glcct.com glcht.com glchunchao.com glchuyun.com glcits.com glclcsy.com glcszy.com gldaewoo.com gldjc.com gleasy.com glecan.com glelec.com gleyy.com glface.com glfangzhen.com glfdfcyy.com glflyy.com glfpii.com glfund.com glfyjg.com glgangyu.com glgcsj.com glgda.com glgdst.com glgeneng.com glggh.com glgh.org glghy.com glgnmt.com glgsoft.com glgst.com glgtzc.com glgyzn.com glgzlq.com glhcjs.com glhckj.com glhclv-kool.com glhdq.com glhfmy.com glhfsy.com glhmmr.com glhnkj.com glhospital.com glhrzx.com glhsylqx.com glhtpcb.com glhuade.com glhuashi.com glhuayue.com glhycy.com glhygjlxs.com glhzhotel.com glhzzx.com glicon.design glifegame.com glinfo.com glinkmedia.com glinksure.com gljcss.com gljdjt.com gljiatianxia.com gljiayu.com gljieli.com gljinbao.com gljinfeng.com gljinhui.com gljinshan.com gljkfhq.com gljlw.com gljshy.com gljshz.com gljsjl.com gljtkg.com gljtxjy.com gljygd.com gljykj.com gljyrj.com gljzgs.com glk7.com glkgjt.com glkths.com gllcit.com gllfyy.com glljsh.com glljy.com gllshan.com gllstz.com glludiyan.com gllue.com gllue.me gllue.net gllxsb.com gllycs.com glmama.com glmapper.com glmayo.com glmbc.com glmingke.com glmmodels.com glncn.com glnewstar.com glo-slotsimulator.com gloamingtechnology.com global-dba.com global-download.acer.com global-harbor.com global-idc.net global-jf.com global-ks-cdn.com global-leader.com global-otc.com global-scsl.com global-tio2.com global56.com globalaccentchinese.com globalauthorid.com globalbaike.com globalbuy.cc globalchangan.com globalcho.com globalesim.shop globaletrust.com globalgeopark.org globalhardwares.com globalimporter.net globalizex.com globalmil.com globalnevs.com globalpingbao.com globalscanner.com globalsign.com globalsigncdn.com globalslb.net globalso.com globalso.site globalsources.com globalsourcingbiz.com globalstech.com globalston.com globaltenpay.com globaltradecoo.com globalvisa888.com globalx-nest.com globebill.com globecancer.com globeedu.com globrand.com globusevents.com glodon.com glofang.com glofiy.work gloraledu.com gloriahotels.com gloriamedia.com glorygarment.com glorysoft.com gloryview.com glorze.com glosellers.com glosku.com glosspp.com glowapp.fun glowapp.vip glowoman.org glpenhui.com glplyf.com glqh.com glqshb.com glquanji.com glrcjob.com glrcw.com glreading.com glredu.com glriverside.com glrmyy.com glruixin.com glsanhua.com glsdhnt.com glseed.com glsgmr.com glshimg.com glsjf.com glsmy024.com glssgolf.com glsstm.com glsxdlkj.com glsxr.com glsyjd.com glsyjgs.com glsytzjt.com glt365.com gltop.com gltsg.com gltvs.com gltx.tech gltzjt.com gluebon.com glumes.com glvroc.com glvs.com glwangcheng.com glwuhong.com glwxw.net glwyhd.com glxcc.net glxcjt.com glxd.com glxhzs.com glxiaoyaohu.com glxinhu.com glxkbz.com glxsyx.vip glxwdb.com glxxjx.com glxyjx.com glxyrn.com glyhjc.com glyhy.com glyjk.com glylgg.com glyltl.com glyndwrsway.com glyphara.com glyslydjq.com glyummy.com glyxc.com glyxjtgc.com glz8.com glzcqy.com glzdgx.com glzeasun.com glzfst.com glzh-szzx.site glzhcyy.com glzhealth.com glzip.com glzizhu.com glzj88.com glzmn.com glzrflx.com glzsjc.com glzthz.com glztj.com glzx.net glzyjt.com glzzjy.com gm-scm.com gm016.com gm193.com gm3.win gm35.com gm3studio.com gm825.com gm825.net gm86.com gm88.com gm99game.net gmacsaic.com gmacsaic.net gmanhua.com gmatg.com gmaxbiopharm.com gmbbs.net gmbuluo.com gmcc.net gmcinnov.com gmcmonline.com gmdeng.com gmdt9b.com gmdun.com gmecn.com gmed.cc gmedata.com gmeditech.com gmedtech.com gmem.cc gmeri.com gmerit.com gmertc.com gmfc.cc gmfintl.com gmg.so gmgc.info gmgitc.com gmhub.com gmhuijin.com gmhysj.com gmi1001.com gmilesquan.com gmiot.net gmjk.com gmm01.com gmmicro.com gmmsj.com gmmtcc.com gmoe.cc gmoj.net gmonline-all.com gmpbj.com gmqd.com gmquickapp.com gmrmyy.com gmsec.net gmsolid.com gmssl.org gmsyun.com gmt-china.org gmt-cn.com gmtacoa.com gmtv.cc gmtzy.com gmugmu.com gmw.com gmwiki.com gmxmym.ren gmya.net gmyihua.com gmylj.com gmz88.com gmzhushou.com gmzi.com gmzm.org gmzp.net gmzx.com gn168.com gn301.xyz gnber.com gncebest88.com gndaily.com gndown.com gneec.com gneec3.com gneec4.com gneec5.com gneec7.com gneedu.com gnehr.com gnete.com gnetis.com gnetpg.com gng92.com gngnk.com gnhome.com gnhpc.com gnice-it.com gnict.com gninstruments.com gnitif.com gnla02051qp.com gnla02070qp.com gnla02071qp.com gnlearn.com gnnzfw.com gnrcbank.com gnrnye.com gnrtv.com gnsschips.center gnssinfo.com gnssopenlab.org gnt8.com gnvip.net gnway.cc gnway.com gnway.org gnzad.com gnzrk.com go-admin.com go-behind.one go-gddq.com go-goal.com go.cc go007.com go108.com go1314.com go2aaron.com go2eu.com go2map.com go2yd.com go300.com go5kvsiay5wx.com goalchina.net goalhi.com goalmapapp.com goapk.com gobanma.com gobasearcher.com gobelike.net gobivc.com gobroadhealthcare-sh.com gobroadhealthcare.com gobyd.com gocarjourney.com gocashback.com gocchina.com gocdn.cc gocea.net goceshi.com goclee.com gocn.vip gocye.com godaily.org godasai.com godbiao.com godblessrail.com godblessyuan.com goddelivery.com goddessxzns.com godele.com godgy.xyz godic.net godida.com godlu.com godo.pub godoor.com godotcn.com godsendcn.com godsheepteam.com godsignal.com godweiyang.com godwolf.com goeasy.io goelia1995.com goepe.com goertek.com goetheslz.com gofarqzyy.com goforandroid.com goframe.org gofreeplay.com gofrp.org gogbuy.com goglew5sn.com gogo.so gogo123.com gogo123.net gogoauc.com gogocn.com gogofly.com gogolinux.com gogooffer.com gogoqq.com gogoup.com goherbalfood.com gohighfund.com goho.co gohoedu.com gohomesafe.org gohomesh.com gohong.com goi08130kh.com goi08160kh.com going-link.com gojiaju.com gojira.net gokaigai.com goke.com gokemicro.com gokols.com gokuai.com golahsg.com golang8.com golanger.com golangroadmap.com golangw.com golaravel.com gold-dragon-castings.com gold-seagull.com gold-v.com gold58.com gold678.com goldav.net golday666.com golday999.com golday9999.com goldbj.com goldbox.vip golden-bamboo.com golden-book.com golden-infor.com golden-soft.com golden-spri.com golden3t.net goldenad.net goldenbeechina.com goldenexpogroup.com goldengoosee.com goldengreengolf.com goldenhighway-chem.com goldenholiday.com goldenhome.cc goldening.com goldenken.com goldenladies.com goldenname.com goldennumis.store goldenseaair.com goldentec.com goldenthroat.com goldentom.com goldfoil.com goldgov.com goldgrid.com goldhoe.com goldksoft.com goldlion-china.com goldlion-info.com goldmadon.com goldmantis.com goldmarkrealestate.com goldmt.net goldstone-group.com goldstone-investment.com goldstonepack.com goldsunchn.com goldsunmachinery.com goldsupplier.com goldvole.com goldwaterhk.com goldwind.com golenpower.com golfvv.com golink.com golinkapi.com golinkcn.com golinkgroup.com golinksworld.com golive-tv.com golivetv.tv goluckcity.com goluckyvip.com golue.com gomaeps.com gomanlift.com gomeart.com gomecloud.com gomegj.com gomeholdings.com gomehome.com gomeplus.com gomo.com gomocdn.com gomvyxvm.com gona-semi.com gonever.com gong-xin.com gong123.com gongao.net gongbaike.com gongbi.net gongbiaoku.com gongboshi.com gongcdn.com gongchang.com gongcheng168.com gongchengbing.com gongchengjn.com gongchou.com gongchu.com gongfubb.com gongfudou.com gongji58.com gongjiao.com gongjiao160.com gongjiaomi.com gongjiyun.com gongju.com gongju5.com gongjux.com gongkaohub.com gongkaoleida.com gongkaowo.com gongkong.com gongkong001.com gongkongbpo.com gongkongedu.com gongkongjia.com gongkongke.com gongkongmall.com gongkongsaas.com gonglf.com gonglve.net gongmo1688.com gongmutang.com gongnou.com gongpin.net gongpingjia.com gongqiu.biz gongshang120.com gongshiku.com gongsibao.com gongsijiaoyi.com gongsizhang.com gongsizhijia.com gongwuxing.com gongxiangcj.com gongxiao8.com gongxiaodaji.com gongxifc.com gongxuanwang.com gongxueyun.com gongye360.com gongyefengshan.com gongyeku.com gongyelian.com gongyeyun.com gongyeyunwang.com gongyi.la gongyi.net gongyi.xin gongyicn.org gongyidaily.com gongying405.com gongyingshang.biz gongyingshi.com gongyipuhui.com gongyishibao.com gongyou.com gongyouhui.com gongyoumishu.com gongzhao.net gongzhao.work gongzhou.com gongzhou.net gongzhun.com gongzicp.com gongzufudinzu.com gongzuobaogao.xyz gongzuoshouji.net gongzuoyun.org gonsun.com gonvvama.net gonxt.com gonyn.com goo17.com gooagoo.com gooann.com goobai.com goobye.net good-display.com good-expo.com good-import.com good.cc good1230.com good321.net good519.com goodacc.net goodally.hk goodao.net goodapk.com goodbaby.com goodbabygroup.com goodbaike.com goodcang.com goodcloud.xyz gooddr.com gooddu.com goode-china.com goodealwigs.com goodeeis.com goodesocket.com goodfamily.cc goodfamily.com goodgongshi.com goodgupiao.com goodid.com goodix.com goodjd.com goodjili.com goodjob100.com goodk88.com goodkejian.com goodlcm.com goodlift.net goodluckcalendar.com goodmorening.com goodnic.net goododo.com goodonecn.com goodprogrammer.org goodqq.net goodrain.com goodschool.world goodsid.com goodsku.com goodstudydayup.com goodtea.cc goodtech.live goodtp.com goodwe.com goodwillcis.com goodwillresource.com goodwyee.com goodyoungtea.com goofish.com googe.ink google-hub.com google444.com googlebbs.net googlenav.com googleplus.party googleppy.com googlevip8.com googlevoice.org googley8rb.com googleyixia.com googoc.com googol-power.com googolpark.com googvv.com goolemall.com goolink.org goome.net goomj.com goonemei.com gooo8.com goooc.net gooogua.com gooooal.com gooood.hk goootech.com goootu.com goopush2025.com gooray.com goosai.com goosail.com gooseeker.com gootho.com gootoai.com goowine.com gooxi.com gooyo.com goozp.com gopedu.com gopeed.com goplaycn.com gopos.hk goproxy.cc goproxy.io gorebuy.com goregxa.com gorichox.com gorouter.info gorse.com gortune.com gosailgis.com goshijia.com goshopjp.com gosinoic.com goskygroup.com gosonly.com gospelwin.com gost-pct.com gosun.com gosun.ltd gosuncdn.com gosuncdn.net gosuncn.com gosunm.com gotechcn.com gotechina.com goten.com gothe3.com goto-game.com goto-game.mobi goto-game.net goto-game.org gotobath.com gotocdn.com gotocoding.com gotodn.com gotofreight.com gotohui.com gotohz.com gotohzrb.com gotoip.net gotoip1.com gotoip11.com gotoip2.com gotoip3.com gotoip4.com gotoip55.com gotoip88.com gotokeep.com gotolink.net gotonav.com gotonets.com gotopsoft.com gotostudyroom.com gotoubi.com gotozhuan.com gotran.com gotvg.com gou.com goubrand.com gouchezj.com goufang.com goufw.com gougoujp.com gouguoyin.com gouhai.com gouhao.com gouhaowang.com gouhuasuan.shop goujianwu.com goukk.com goukuai.com goulegu.com goulew.com goulong.com goumee.com goumin.com goupautomation.com goupsec.com goupuzi.com gourmet114.com goushh.com gouso.com gousu.com goutanzi.com gouwanmei.com gouwubang.com gouwudang.com gouwuke.com gouwule.com gouwuyu.com gouyoukeji.com gov-static.tech govagroup.com govfz.com govisionox.net govjc.com govmade.com govqcloud.com govuln.com govwq.com gowan8.com goweb1.cc goweb2.net goweb3.net goweike.net gowinamc.com gowincms.com gowinlease.com gowinxp.com gowlc.net gowmo.com gowonganinn.com goww.net goyihu.com goyoo.com gozap.com gozongroup.com gozyq.com gp-tm.com gp1903.com gp1907.com gp241.com gp259.com gp451.com gp51.com gp88888.com gp891.com gpai.net gpall.net gpautobid.com gpbbs.net gpbeta.com gpboke.com gpcang.com gpcqjy.com gpd.hk gpdi.com gper.club gpetrip.com gpfang.net gpgwx.com gpl-express.com gplayspace.com gplqdb.com gplus-lab.com gpmii.net gpmro.com gpnewtech.com gpost-ge.cfd gpowersoft.com gppapp.com gpqnrc.com gps009.net gps010.net gps123.org gps16888.com gpsbao.com gpsgx.net gpslook.net gpsonextra.net gpsoo.net gpsov.com gpspw.net gpsrcw.com gpsspg.com gpstool.com gpsuu.com gpszlsc.com gpticket.org gptkong.com gpubgm.com gpuez.com gpuztrvt.com gpxiv5kew4mvk.com gpxxz.com gpxygpfx.com gpxz.com gpxzw.com gpyck.com gpydxl.com gq-rose.com gq60.com gqbmt.com gqget.com gqgkj.com gqhmt.com gqjd.net gqjtgs.com gqjx.net gqk.tv gqpyh.com gqqsm.com gqsj.cc gqsoso.com gqsyk.com gqsym.com gqt168.com gqxtq.com gr-hospital.com gra-moissanitesorg.com grablan.com grabsun.com grace2015.site gracece.com graceelectron.com gracelaser.com gracg.com gradaimmi.com gradgroup.com gradgroup.net graduallylift.com grafytek.com grainedu.com grainstorage.net grand-tec.com grandcitytours.com granddongshan.com grandee-elevator.com grandelazio.com grandhopebio.com grandinsight.com grandioes.com grandkol.com grandlisboa.com grandlisboapalace.com grandloong.com grandomics.com grandpharm.com grandqueen.com grandskylightgardenshenzhen.com grandskylightshenzhenguanlan.com grandwaylaw.com grapchina.org graphene.tv graphmovie.com graphmovies.com grass98.com grassmoon.net graueneko.xyz gravity-engine.com graz.quest grcbank.com grchina.com grcwzx.com great-future.com greatagroup.com greatbit.com greatesting.com greathink.com greatld.com greatoo.com greatopensource.com greatops.net greatopt.com greatpowercn.com greatran.com greatroma.com greatsk.com greatsoftman.com greatsolid.com greatssp.com greatstargroup.com greatstartools.com greatwallmusic.com greatwuyi.com gredmedic.com gree-jd.com gree.com greebox.com greedc.com greedongaohotel.com greefinance.com greejt.com green-cpc.com green-holdings.com green-sh.com green12306.com greencharm.com greenchengjian.com greendh.com greenism.net greenits.net greenlandcn.com greenlandsc.com greenpine.cc greenswolf.com greentomail.com greentownchina.com greenvalleypharma.com greenwater.cc greenwaychina.org greenwicher.com greenwood-park.com greenxf.com greenxiazai.com greepi.com greeyun.com grender.com greplay.com grescw.com gretf.com greyli.com greywolfcdn.net greywolffast.com greywolfns.com grfexpo.com grfyw.com grg2013.com grgaoren.com grgbanking.com grgreecv.com grgroup.cc grgsecurity.com grgtest.com grgvision.com grgyintong.com grid2048.com gridsum.com gridsumdissector.com gridy.com grikin.com grinm.com grirem.com gritgen.com gritpharma.com grjzjt.com grksc.com grmxdy.com grnuo.com groad.net gronhi.com groovymedicine.com grouk.com groundsun.com group-purchasing.com group-spl.com group-wenyuan.com groupfangyuan.com grouphx.com groupjh.com groupjx.com grouplus.com groupshenxi.com growatt.com growful.com growingio.com growthbox.net grpindex.com grria.net grs-syphu.com grspet.com grstz.com grt-china.com grtrelay.com grtsports.com grumplesgroup.com gruntjs.net gruposeimex.com grxxw.com gryltop.com gryphline.com gryu.net gryw666.com grzmz.com grzq.com gs-cdn.com gs090.com gs12122.com gs14.com gs1cn.org gs2.ww.prod.dl.playstation.net gs307.com gs6699.com gsadds.com gsafc.com gsafety.com gsaxns.com gsbankchina.com gsbankmall.com gscaishui.com gscblog.com gscdn.pub gschaos.club gscidc.net gsdk.tv gsdpw.com gsdswz.com gsdtfx.com gsdyjsgs.com gseen.com gsensebot.com gsfilter.net gsflcp.com gsfrj.com gsfybjy.com gsfycloud.com gsfzb.com gsgltz.com gsgs10086.com gsgundam.com gshangju.com gshis.net gshmhotels.com gshmzs.com gshopper.com gshqqcx.shop gshrgroup.com gsi24.com gsicpa.net gsidy.com gsjb.com gsjkjt.com gsjqtv.com gsjt-cn.com gsjt56.com gsjtky.com gsk801310hh.com gsk801311hh.com gskaiwei.com gskfzxyy.com gskjpt.com gsktraining.com gskwai.com gsl.cc gslbauto.com gslbdns.com gslbdns.net gslmw.net gsmpers.com gsmuban.com gsnhcg.com gsnytz.com gsp11-cn.ls.apple.com gsp12-cn.ls.apple.com gspaceteam.com gspst.com gspt.com gspxonline.com gsqstudio.com gsrc.com gsrcb.net gsrcu.com gsrcw.com gsrecv.com gsrl.net gsrwfyy.com gss56.com gssag.com gssbh.com gssey.com gsshylsh.com gssjyxrmyy.com gsskyst.com gssltxrmyy.com gsslxh.com gsstargroup.com gsstic.com gsstock.com gsstsdgs.com gsswtz.com gst-china.net gst.prod.dl.playstation.net gstarcad.com gsthq.com gstonegames.com gstsz.com gstzyyy.com gswjxjzx.com gswljt.com gswz.com gsx009.com gsxb.net gsxcdn.com gsxetc.com gsxgw.com gsxservice.com gsxtj.com gsyc.icu gsydxzyy.com gsysportwear.com gsyth.com gsyxjyw.com gsyygh.com gszhaopin.com gszlyy.com gszph.com gszq.com gszsc.com gszybw.com gszyi.com gszytcm.com gszyy.com gt-generator.com gt-oil.com gt-semi.com gt47xc.com gt520.com gtac.cc gtadata.com gtags.net gtajl.com gtan.com gtaos.com gtarcade.com gtarsc.com gtastart.com gtaxqh.com gtbuy.work gtc-power.com gtcedu.com gtcfla.net gtcfzp.com gtcim.com gtd-china.com gtder.club gtdgc.com gtdlife.com gtdreamlife.com gtdsc.com gter.net gtetern.com gtfund.com gtg56.com gtgqw.com gtgres.com gtht.com gthzc.com gti56.com gtibee.com gtig-esen.com gtig.com gtiggm.com gtimg.com gtinno.com gtja-allianz.com gtja.com gtjadev.com gtjaqh.com gtjazg.com gtjgzt.com gtjiaoyu.com gtjt.com gtk-china.com gtkj.tech gtkl.net gtlggy.com gtlrxt.com gtm-a1b2.com gtm-a1b3.com gtm-a1b4.com gtm-a1b5.com gtm-a1b6.com gtm-a1b7.com gtm-a1b8.com gtm-a1b9.com gtm-a2b2.com gtm-a2b3.com gtm-a2b4.com gtm-a2b5.com gtm-a2b6.com gtm-a2b7.com gtm-a2b8.com gtm-a2b9.com gtm-a3b1.com gtm-a3b3.com gtm-a3b4.com gtm-a3b5.com gtm-a3b6.com gtm-a3b7.com gtm-a3b8.com gtm-a3b9.com gtm-a4b1.com gtm-a4b2.com gtm-a4b3.com gtm-a4b4.com gtm-a4b5.com gtm-a4b6.com gtm-a4b7.com gtm-a4b8.com gtm-a4b9.com gtm-a5b1.com gtm-a5b2.com gtm-a5b3.com gtm-a5b4.com gtm-a5b5.com gtm-a6b1.com gtm-a6b2.com gtm-a6b3.com gtm-a6b4.com gtm-citycloud.com gtm-host.com gtm-i1d1.com gtm-i1d2.com gtm-i1d6.com gtm-i1d7.com gtm-i1d8.com gtm-i1d9.com gtm-i2d3.com gtm-i2d4.com gtm-i2d6.com gtm-i2d8.com gtm-i2d9.com gtm-we.com gtm.pub gtmlufax.com gtmsh.com gtn9.com gtobal.com gtphotonics.com gtpso.com gtqzg.com gtradedata.com gts.work gtshebei.com gtsnzp.com gttctech.com gttxidc.com gtuanb.com gtuu.com gtx-sh.com gtxf.com gtxh.com gtxp2.com gtycn.net gtyztpt.com gtzlw.com gtzszy.com gtzxhk.com gtzxsg.com gtzy123.com gu166.com gu360.com gua123.com guabu.com guaguay.com guahao-inc.com guahao.com guahao114.com guahaoe.com guahaowang.com guaiguai.com guaihou.com guaiku.com guaileicp.com guaili.org guailuo.com guailuzi.com guaitao.cc guaixun.com guajibao.club guajibao.me guajibaola.com guakaoba.com guan-shi.com guan.com guan5.com guanaitong.com guance.com guanchangnongmu.com guanchao.site guanchiad.com guancibaoku.com guandan.com guandan888.com guandang.net guandata.com guandianle.com guang-yuan.com guang.com guangbali.com guangbao-uni.com guangbo.net guangbogroup.com guangcimh.com guangdamr.com guangdauser.com guangdianyun.tv guangdiu.com guangdong-hotel.com guangdong1039.com guangdonggames.com guangdonglianxing.com guangdonglong.com guangdongrc.com guangdongtaiji.com guangdongtianxi.com guangdongwater.com guangdongyunchen.com guangdv.com guangfan.com guangfeng.com guangfulingyuan.com guanggao.com guanghan-marathon.com guanghe.tv guanghuayigou.com guanghui.com guangjie5u.com guangjieba.com guangjiela.com guangjinghb.com guangjipharm.com guangjiubusiness.com guangjiucompany.com guangju123.com guangjuke.com guangka.com guangkatf.com guangli88.com guanglikou.com guanglilvyuan.com guanglingroup.com guanglongsoft.com guangming.com guangmintou.com guangnengquan.com guangraoluntan.com guangruijixie.com guangsai.cc guangshaxy.com guangshenghang.com guangsuan.com guangsuss.com guangte-ne.com guangtuikeji.com guanguigroup.com guanguser.com guangwaifu.com guangwei.com guangxi910.com guangxibiaoxie.com guangxicarbon.com guangxichunhui.com guangxigames.com guangxiguozhi.com guangxihaihui.com guangxihongji.com guangxijiazhi.com guangxijinhang.com guangxilindakejimeiliyaoshang.com guangxilonghua.com guangxima.com guangximinhang.com guangxinengyuan.com guangxipubeihuaheng.com guangxircw.com guangxishangfu.com guangxishuizhiyangzhigongsi.com guangxisichujiadao.com guangxixinchan.com guangxixinyan.com guangxixinyuwanzixun.com guangxiyijie.com guangxizbq.com guangxizhonghui.com guangxizhutingqi.com guangxunsd.com guangya-group.com guangyapan.com guangyi.net guangyinghj.com guangyuancare.com guangyuangroup.com guangyuanjt.com guangyuanmarathon.com guangyuhb.com guangyv.com guangzhitui.com guangzhou-logistics.com guangzhou-marathon.com guangzhouamc.com guangzhoudazhong.com guangzhougy.com guangzhouxiehe.com guangzhouyibo.com guangzhouzaiyu.com guangzhuiyuan.com guangzizai.com guanhaiwei.com guanhaobio.com guanhejx.com guanhou.com guanhoulz.com guanhuaju.com guanjiajf.com guanjunjg.com guankou.net guanlannet.com guanli360.com guanlixi.com guanliyun.com guanmeikj.com guannews.com guanngxu.com guanpark.com guanpindiaosu.com guanquanapp.com guanrenjiaoyu.com guanshanbaodian.com guanshang1998.com guanshangyu.cc guanshenggz.com guansong.com guansre.com guantao.com guanting.com guanvip8.com guanwang.cc guanwang.com guanwangbao.com guanwangdaquan.com guanwangshijie.com guanwangyun.com guanwuxiaoer.com guanxf.com guanxian.org guanxiaokai.com guanxingyule.com guanxingyun.com guanxintec.com guanxxg.com guanyezipper.com guanyierp.com guanyinshan.com guanyiyun.com guanzhongrc.com guanzhu.mobi guanzhulian.com guanzhunet.com guanziheng.com guapaijia.com guardease.com guardrailchina.com guatedu.com guatuwang.com guazhuan.com guazi-apps.com guazi.com guazi.net guazi75637736.cc guazipai.com guazistatic.com guazixs.com guba.com guba163.com gubaike.com gubo.org gucciblog.net guccistar.com gucheng.com guchengnews.com guchengxiangye.com gucihand.com gucn.com gucunpark.net gudeapp.com gudemanage.com gudianwenxue.com gudongtech.com gufengmh9.com gufenxueshu.net gug66.com gugeapps.net gugexs.com gugezg.com gugong.net gugu.fun gugu5.com gugu6.com gugud.com gugudang.com guguread.com gugushuzi.com guguyu.com guguyun.com guguyuyin.com guguzhu.com guhantai.com guhei.net guheshuyuan.com guhuozaiol.com gui333.com gui66.com guibi.com guicaiyun.com guichanghj.com guichuideng.com guichuxing.com guidecari.com guidechem.com guideir.com guideofsh.com guiderank-app.com guifan.cc guifancha.com guifanku.com guifeng.net guifun.com guigang688.com guigu.org guigushi2.com guihaikj.com guihejr.com guihua.com guihuangfood.com guihuayun.com guiji.com guijingchina.com guijinshu.com guijitech.com guijob.com guikai888.com guikangmaterials.com guikuan.com guilinaohu.com guilincyjt.com guilinhd.com guilinhengda.com guilinihg.com guilinjiaqi.com guilinjizhuangxiang.com guilinlife.com guilinlv.com guilinoutdoor.com guilinpharma.com guilinruntai.com guilinsongyu.com guilintianhu.com guilintravel.com guilinzhiyuan.com guiluohuang.com guimamuye.com guimengjob.com guimengning.com guimengshangeng.com guinsoft.com guipeibao.com guipin.com guiqingkeji.com guiqv.com guirong.com guiscn.com guishangtong.com guishanhotel.com guishequ.com guisteel.com guitan.com guitang.com guitang.fun guitarpro.cc guitarq.com guitongmy.com guitu18.com guiwang.org guiweilian.com guixiaozi.com guixue.com guiyangmarathon.com guiyingclub.net guiyuhuanbao.com guiyuntai.com guizeco.com guizheng.net guizhenghe.com guizhenwei.com guizhougames.com guizhougas.com guizhoushengyang.com guizhutanglao.com gujianba.com gujing.com gujinshici.com gujiushu.com gujiyx.com gukaculture.com gukaifu.com gukaihu.com gukun.com gulandscape.com guliem.com gulinglong.com gulinrongmei.com gullmap.com gulltour.com gulongbbs.com gulove.com gulu.tv gulu001.com gulugj.com gululu.com guluyou.com gumade.com gumang.com gumaor.com gumeng.net gumiji.com gumingnc.com gumo.pro gumodels.com gumpmall.com gundambattle.com gunshitech.com gunsuo.com guo-kai.com guo7.com guo98.com guoad.com guoanaz.com guoanclub.com guoanele.com guoanqi.com guoanwine.com guoaoqiyuan.com guobaihui.com guobaoyou.com guobiao99.com guobiaotest.com guobin120.com guoboshi.com guocaipps.com guocaiqinghai.com guocar.com guochaos.com guocool.com guocuijingju.com guodashi.com guodatzjt.com guodegang.org guodi.net guodiana.com guodingnet.com guodongbaohe.com guodongtech.com guodongtechnology.com guodouw.com guodu.com guodu.hk guodushidai.com guofanglab.com guofen.com guofenchaxun.com guofenchaxun.net guofeng.com guofenkong.com guogongxin.com guoguangmold.com guoguo-app.com guoguojie.com guohanlawfirm.com guohaokeji.com guohongxin.com guohu360.com guohua88.com guohuapharm.com guohuarf.com guohuayule.com guoing.com guoji.biz guoji.pro guojiang.tv guojianglive.com guojiayikao.com guojiayixuekaoshi.com guojiazhiyezige.com guojidaigou.com guojiexpress.com guojijinjia.com guojimami.com guojing-tech.com guojiseka.com guojiwuye.com guojixiao.com guojixuexiao.net guojixuexiao.org guojiyujiaxueyuanzongbu.com guojizhanlanhui.com guojj.com guojusoft.com guokang.com guokelonghui.com guoketest.com guokeyun.com guokongqixie.com guokr.com guokr.io guokr.net guoku.com guolaiwanba.com guolan.com guolannewmaterial.com guole.fun guoli.com guolianchem.com guolianglab.org guolin.tech guolisec.com guolong365.com guolongplastic.com guoluonews.com guolv.com guolv.net guomai.cc guomaoreducer.com guomeijiayuanxiaoxue.com guomeikuaidi.com guomiaokeji.com guomin999.com guominpension.com guomob.com guomu.com guoocang.com guopeiwang.com guopika.com guoping123.com guopop.tech guoqi.org guoqi365.com guoqinwang.com guorongfei.com guoruijx.com guoshengtech.com guoshi.com guosujt.com guotaijsh.com guotailiangyou.com guotangauto.com guotongglobal.com guoturen.com guotv.com guowai.org guoweijt.com guoweistem.com guoweitong.com guowuwushu.com guoxiehao.com guoxikonggu.com guoxinbj.com guoxinlanqiao.com guoxinmac.com guoxinqh.com guoxintek.com guoxue.com guoxue123.com guoxuedashi.com guoxuemeng.com guoxuemi.com guoxuwang.com guoyang.cc guoyang.work guoyangtech.com guoyc.online guoyice.com guoyihuake.com guoyitang.org guoyu.com guoyu.link guoyue.games guoyuegroup.com guoyuejituan.com guoyunjc.com guoyusec.com guoyutec.com guozaoke.com guozh.net guozhangroup.com guozhanjiaoyu.com guozhen.net guozhenyi.com guozhivip.com guozhuan.com guozhuangxincai.com guozi.org guoziyx.com guozucq.org gupang.com gupaoedu.com gupei.com gupen.com gupiao135.com gupiao168.com gupiao8.com gupiaoq.com gupiaowajue.com gupowang.com gupt.net gupuu.com gupzs.com guqiankun.com guqiu.com guqu.net guronge.com gurukeji.com gurun.cc gushengwang.com gushequ.com gushi.ci gushi.com gushi160.com gushi365.com gushiai.com gushici.com gushicimingju.com gushidaquan.cc gushidi.com gushiji.cc gushiju.net gushiwen.org gusspro.com gusucaishui.com gusuwang.com guteke.com gutlighting.com gutou.com gutousoft.com gutx.org guwan.com guwantj.com guweimin.com guwendao.net guwenxs.com guwenxuexi.com guwu121.com guxiang.com guxunw.com guyizisha.com guyuehe.com guyuehome.com guyuenglish.com guyungame.com guzhang.com guzhangting.com guzhenm.com guzhongtrade.com guzuci.com guzwiayz.com gvg-redsun.com gvgoo.com gvi-tech.com gvlocalization.com gvoiceplat.com gvt1-cn.com gvt2-cn.com gw-dv.vip gw-ec.com gw.craft.moe gw4.cc gw66.vip gw7jpuouik.com gwacoe.com gwamcc.com gwauto.com gwbfc.com gwblighting.com gwc.net gwcdncloud.com gwdang.com gwdqsb.com gwdzkj.com gweike.com gwell.cc gwenorcasv1.com gwepy.org gwetech.com gwfls.com gwfx.net gwgl168.com gwgsc.com gwi.cc gwidc.com gwin-cn.com gwinbody.com gwjakzzx.com gwjinan.com gwm-global.com gwmapp-h.com gwmapp-w.com gwmfc.com gwmmarathon.com gwmsoft.com gwnsxx.com gwnz.com gworg.com gwozai.com gwpdi.com gwpp.net gwpstools.com gwrcw.com gwsdns.com gwtt.com gwvpsceping.com gwwg.com gwxeda.com gwy.com gwyclass.com gwyoo.com gwyou.com gwypxw.com gwysydw.com gwyzk.com gwyzwb.com gwzft.com gwzhinan.com gwzwfw.com gwzyxh.com gx-antai.com gx-aozhan.com gx-biosensor.com gx-ds.net gx-etrans.com gx-hengyuan.com gx-hm.com gx-lc.com gx-newmedia.com gx-royalpartners.com gx-stbd.com gx-wl.com gx-xc.com gx-xjyx.com gx-yidaiyilu.com gx-zy.com gx10010.com gx121.com gx12333.net gx12580.net gx163.com gx1g.com gx3j.net gx4485.com gx5127.com gx516.com gx51766.com gx5f.com gx79.com gx81jxzl.com gx966888.com gxaas.net gxabd.net gxacjs.com gxacto.com gxadt.com gxadwh.com gxaedu.com gxahjy.com gxaids.com gxairlines.com gxaist.com gxaixier.com gxalt.com gxanchen.com gxankao.com gxantu.com gxany.com gxaoma.com gxar.com gxarl.com gxasjc.com gxasjn.com gxawjmy.com gxaxjy.com gxaxpc.com gxayn.com gxb.io gxbaichen.com gxbaidu.net gxbaidutg.com gxbaifugch.com gxbaikuang.com gxbakj.com gxbaozhiyue.com gxbasic.com gxbbwsw.com gxbbwyl.com gxbcf.com gxbcgjg.com gxbcjc.com gxbckj.com gxbdcx.com gxbdtx.com gxbeiente.com gxbest.xyz gxbeyy.com gxbf.net gxbgdl.com gxbgtf.com gxbhgas.com gxbhjg.com gxbhlg.com gxbhly.net gxbian.com gxbiandao.com gxbidding.com gxbihongkeji.com gxbinhai.com gxbiyang.com gxblfs.com gxbltz.com gxbml.com gxbmmy.com gxbngs.com gxbochi.com gxboning.com gxbotlan.com gxbqba.com gxbqkj.com gxbr668.com gxbre.com gxbrm.com gxbs.net gxbscbh.com gxbsfj.com gxbsky.com gxbsnx.com gxbssyy.com gxbstlxx.com gxbsyjsw.com gxbtjt.com gxbtka.com gxbtnz.com gxbtsc.com gxbtsy.com gxbtxc.com gxbygs.com gxbyjxc.com gxbykj.com gxbyrcb.com gxbys.com gxbyw.com gxbyx.com gxbzjx.com gxcae.com gxcaining.com gxcaiyiduo.com gxcampus.com gxcards.com gxcareer.com gxcast.com gxcatv.com gxcbjs.com gxcbljt.com gxccblg.com gxccedu.com gxccjt.com gxcd.pw gxcdc.com gxceg.com gxcei.com gxcerc.com gxcexxzx.com gxcfjx.com gxcgmf.com gxcgzh.com gxch168.com gxchanghe.com gxchangjiangpn-jinnuo.com gxchbf.com gxchem.com gxchengjian.com gxchengmei.com gxchengyun.com gxchlrf.com gxchr.com gxchuanghua.com gxchuanlan.com gxchuen.com gxchunmao.com gxchuxin.com gxcic.net gxcimc.com gxcj.cc gxcj.net gxcjcl.com gxcjgt.cc gxcjn.com gxcjtc.com gxclkj.com gxclzz.com gxcmgr.com gxcmicc.com gxcncec.com gxcnjx.com gxcodemaker.com gxcors.com gxcounty.com gxcpa.com gxcq188.com gxcqm.com gxcr.cc gxcrcw.com gxcrh.net gxcrjm.com gxcro.com gxcrzxgs.com gxcschem.com gxcscm.com gxcsfc.com gxcskj.com gxcsmed.com gxcsmx.com gxcsqj.com gxcsycj.com gxcsypm.com gxcszm.com gxctc.net gxctd.com gxcthb.com gxcti.com gxctzb.com gxcuiping.com gxcvuedu.com gxcw.com gxcxhb.com gxcxxny.com gxcxyx.com gxcyaq.com gxcyhjt168.com gxcyzs.com gxcz88.com gxczm.com gxcznews.com gxcznews.net gxczrc.com gxdadu.com gxdairy.com gxdajin.com gxdajixiong.com gxdake.com gxdanbao.com gxdangan.com gxdansi.com gxdanzo.com gxdaos.com gxdaosheng.com gxdbdl.com gxdbxrmyy.com gxdco.net gxdcwh.com gxddcs.com gxddtz.com gxddzl.com gxdegas.com gxdetdq.com gxdfjt.com gxdfzx.com gxdhgy.com gxdhhb.com gxdhyy.com gxdiba.com gxdicai.com gxdig.com gxdingyi.com gxdingyu.com gxdkjmy.com gxdkyr.net gxdljz.com gxdltech.com gxdlxy.com gxdlzl.com gxdmds.com gxdmsq.com gxdmtrade.com gxdmw.com gxdna.com gxdnu.com gxdong.com gxdongce.com gxdongfangshi.com gxdonghong.com gxdongkai.com gxdoulaibo.com gxdqtg.com gxdrh.com gxds1.com gxdse.com gxdslyy.com gxdslyyls.com gxdsoms.com gxdsxf.com gxdsyl.com gxdtchem.com gxdtiot.com gxdtjl.com gxdtsc.com gxdunshen.com gxduomeishi.com gxduyi.com gxdx5.com gxdxbj.com gxdxcredit.com gxdxdt.com gxdxjs.com gxdxlk.com gxdxlxs.com gxdycpa.com gxdygs.com gxdygx.com gxdyxjd.com gxdyyj.com gxea.com gxeaq.com gxecard.com gxecm.com gxeduyun.net gxegoo.com gxehy.com gxeits.com gxej.net gxelang.com gxenews.com gxeph.com gxept.com gxeqjx.com gxeqx.com gxer.net gxeszx.com gxevc.com gxewa.com gxfag.com gxfaj.com gxfanghu.com gxfanlian.com gxfanlu.com gxfanxing.com gxfanyayoga.com gxfcq.com gxfcw.com gxfengjie.com gxfenglei.com gxfengxingjq.com gxffjt.com gxfhjs.com gxfhny.com gxfhxx.com gxfi.net gxfigroup.com gxfin.com gxfinfr.com gxfjly.com gxflm.com gxflpg.com gxfls.com gxflzx.com gxfm.net gxfmmy.com gxfnt.com gxforestry.com gxfrhb.com gxfsms.com gxfssy.com gxfsty.com gxfswl.com gxfsxrmyy.com gxfsyljt.com gxftu.org gxfushun.com gxfusui.com gxfuxue.com gxfuyuan.com gxfxhjwy.com gxfxly.com gxfxm.com gxfxwh.com gxfxzb.com gxfybj.com gxfygp.com gxfysteel.com gxfyzx.com gxfzf.com gxfzkkj.com gxfzpg.com gxfzyjs.com gxg1978.com gxgaia.com gxgangji.com gxgangxin.com gxgangyuan.com gxganhua.com gxgaoling.com gxgaotong.com gxgaoyao.com gxgaoyou.com gxgaty.com gxgba.com gxgbdb.com gxgbkj.com gxgbx.com gxgcedu.com gxgcfscl.com gxgcjs.com gxgczxjt.com gxgd192.com gxgdbg.com gxgdhg.com gxgdlsp.com gxgdpg.com gxgdyy.com gxgdyz.com gxgeek.com gxgentle.com gxgf.net gxgfsh.com gxggcmc.com gxggdq.com gxggfhsmy.com gxgghx.com gxggm.com gxghfs.com gxghjt.com gxghpg.com gxghyysc.com gxghzh.com gxgj.com gxgjgc.com gxgjgg.com gxgjh.com gxgjjl.com gxgjjt.com gxgjny.com gxgjzy.com gxgkzzr.com gxgl588.com gxglft.com gxglgcjs.com gxglhd.com gxglhx.com gxgljhgc.com gxgljy.com gxglkg.com gxglnykj.com gxglory.com gxglyl.com gxglys.com gxglzj.com gxglzs.com gxgm.net gxgmgc.com gxgmjhc.com gxgmtx.com gxgndxdl.com gxgoldpool.com gxgongyinglian.com gxgoodfirst.com gxgp123.com gxgpo.com gxgpzhtc.com gxgqdz.com gxgqsn.com gxgrasp.com gxgree.com gxgrtech.com gxgryy.com gxgsgl.com gxgsgs.com gxgshb.com gxgswlhy.com gxgsxy.com gxgsyy.com gxgszb.com gxgtdg.com gxgtdl.com gxgtghy.com gxgttt.com gxgtxny.com gxgtzb.com gxgtzx.com gxguanghui.com gxguangxin.com gxguangyi.com gxguantai.com gxguanyu.com gxguerte.com gxguicheng.com gxguijiu.com gxguimei.com gxguiping.com gxguiren.com gxguirun.com gxguite.com gxguixing.com gxguiyang.com gxguizhiyuan.com gxguoda.com gxguoen.com gxguojian.com gxguojingjiuye.com gxguoyang.com gxguyu.com gxgwmb.com gxgwyw.org gxgxjc.com gxgxncplm.com gxgxun.com gxgyfy.com gxgyh.com gxgymsxx.com gxgyrq.com gxgyyclc.com gxgyyy.com gxgzlm.com gxgztyy.com gxgzy.com gxgzzn.com gxhaibao.com gxhalw.com gxhanhe.com gxhanlin.com gxhaojian.com gxhaorun.com gxhaozhi.com gxharui.com gxhb8.com gxhbcyxh.com gxhbedu.com gxhbs.com gxhc120.com gxhc18.com gxhc365.com gxhcht.com gxhclw.com gxhcmr.com gxhcnf.com gxhcwy.com gxhcyk.com gxhczx.com gxhdaf.com gxhddj.com gxhddq.com gxhdsy.com gxhealth.xin gxheda.com gxhefei.com gxheguan.com gxhengda.com gxheyumaoyi.com gxhezhixin.com gxhfba.com gxhfdqsb.com gxhfyy.com gxhg.net gxhghg.com gxhgjm.com gxhgkj.com gxhgx.net gxhgzb.com gxhgzc.com gxhh.com gxhhgc.com gxhhgs.com gxhhhb.com gxhhig.com gxhhjk.com gxhhjt.net gxhhmed.com gxhhzsjt.com gxhigreen.com gxhis.net gxhjbw.com gxhjjt.net gxhjky.com gxhjly.com gxhjsh.com gxhjsz.com gxhjwy.com gxhjzbcyy.com gxhjzx.com gxhkd.com gxhkdq.com gxhkdyf.com gxhkgy.com gxhkjc.com gxhkjt.com gxhl.com gxhlc.com gxhljx.com gxhlun.com gxhlx.net gxhly168.com gxhmba.com gxhmcm.com gxhmdjt.com gxhnyt.com gxhongchuan.com gxhonggang.com gxhongning.com gxhongshimuye.com gxhongyunsi.com gxhongzh.com gxhope.org gxhospital.com gxhouse.com gxhovi.com gxhpxrmyy.com gxhqh.com gxhqjy.com gxhqtest.com gxhqwh.com gxhqxmgl.com gxhrcjz.com gxhrkj.com gxhs.site gxhsba.com gxhsjgs.com gxhsltd.com gxhsry.com gxhsshj.com gxhsshjzl.com gxhstars.com gxhsxcl.com gxhsxxkj.com gxhsykj.com gxhszb.com gxhtjx.com gxhtl.com gxhtte.com gxhuabao.com gxhuachi.com gxhuachuang.com gxhuadu.com gxhuaen.com gxhuahui.com gxhuanbaojt.com gxhuaqu.com gxhuar.com gxhuaxing.com gxhuaxintech.com gxhui.com gxhuicuibencao.com gxhuifa.com gxhuihuang.com gxhuiji.com gxhuijvtong.com gxhuiming.com gxhuitong.com gxhuiwanger.com gxhuolong.com gxhxbook.com gxhxgg.com gxhxgroup.com gxhxh.com gxhxysgs.com gxhxyyjt.com gxhxzyh.com gxhyart.com gxhydq.com gxhyey.com gxhygg.com gxhyhs.com gxhykglass.com gxhyq.com gxhyscl.com gxhysm.com gxhyww.com gxhyxf.com gxhyxt.com gxhyz168.com gxhyzixun.com gxhyzx.net gxhzgjyy.com gxhzjsgc.com gxhzkj.com gxhzsbwg.com gxhzsqyg.com gxhztqt.com gxhzxk.com gxhzxw.com gxhzyd.com gxi.ink gxiang.org gxibvc.net gxic.club gxic.net gxicc.net gxicpa.com gxidc.com gxidi.com gxind.com gxinf.com gxinfo.org gxinfotec.com gxipo.net gxjajc.com gxjaw.com gxjbhb.com gxjbk.com gxjbyy.com gxjcbf.com gxjccj.com gxjch.com gxjckc.com gxjcqt.com gxjcxcl.com gxjcxy.com gxjcy.com gxjcys.com gxjdcb.com gxjdgc.com gxjdgczx.com gxjdgyxx.com gxjdxs.com gxjeyy.com gxjf99.com gxjfdz.com gxjfx.com gxjg199.com gxjgdj.com gxjgea.com gxjghy.com gxjgjjc.com gxjgjstzjt.com gxjgjt.com gxjgyj.com gxjgyjgs.com gxjgzcb.com gxjgzppc.com gxjhcj.com gxjhgczx.com gxjhgd.com gxjhgs.com gxjhjcw.com gxjhjdsb.com gxjhjs.com gxjhky.com gxjhsj.com gxjhygs.com gxjhzj.com gxjiahua.com gxjiangyong.com gxjianhong.com gxjianlan.com gxjianrong.com gxjianyi.com gxjiaohang.com gxjiasheng.com gxjiatai.com gxjichang.com gxjiebai.com gxjiefeng.com gxjien.com gxjigeng.com gxjigeyuan.com gxjihu.com gxjinan.com gxjingsheng.com gxjinhai.com gxjinhuiauto.com gxjinjiang.com gxjinsu.com gxjinsui.com gxjintu.com gxjirui.com gxjiufa.com gxjiuxincpa.com gxjiuyi.com gxjiuyi99.com gxjixu.com gxjiyu.com gxjjb.com gxjjfds.com gxjjfjt.com gxjjgy.com gxjjh.com gxjjyb.com gxjkamc.com gxjkhj.com gxjkjg.com gxjkjyjc.com gxjkwy.com gxjl99.com gxjla.com gxjlbw.com gxjljz.com gxjlkj.com gxjlnm.com gxjlrc.com gxjlsc.com gxjm.vip gxjmggs.com gxjmxx.com gxjmxy.com gxjmzg.com gxjnbgzx.com gxjowy.com gxjpfs.com gxjpjs.com gxjpjy.com gxjptw.com gxjqgs.com gxjqt.com gxjqyy.com gxjrxy.com gxjrzl.com gxjs.net gxjsd56.com gxjsfs.com gxjshu.com gxjsstjt.com gxjstkj.com gxjsws.com gxjsxny.com gxjsxszn.com gxjt.net gxjt001.com gxjtaq.com gxjtjx.com gxjtkyy.com gxjtpg.com gxjtsa.com gxjtscm.com gxjtsjy.com gxjttz.com gxjttzjt.com gxjtyab.com gxjtysxx.com gxjtzb.com gxjuancheng.com gxjub.com gxjugu.com gxjuhw.com gxjunan.com gxjunhe.com gxjunliang.com gxjxcloud.com gxjxsy.com gxjxwh.com gxjycjsb.com gxjyfdc.com gxjyfkj.com gxjygljt.com gxjyh.store gxjyhb.com gxjyjs168.com gxjyjt.com gxjyjz.com gxjyxxw.com gxjyy.com gxjyzl.com gxjyzyw.com gxjz123.com gxjzcy.com gxjzdt.com gxjzht.com gxjzhxd.com gxjzj-hotel.com gxjzj.com gxjzjc.com gxjzjl.com gxjznet.com gxjzw12315.com gxjzy.com gxjzzbdl.com gxkaifan.com gxkangtian.com gxkaoba.com gxkcjc.com gxkcmy119.com gxkdefy.com gxkdjc.com gxkdjd.com gxkdjsq.com gxkefei.com gxkehong.com gxkelite.com gxkesui.com gxkfl.com gxkfy.com gxkhjt.com gxkhkj.com gxkhn.com gxkhxxcl.com gxkiwi.com gxkjd.com gxkjdns.com gxkjdsj.com gxkjec.com gxkjhb.com gxkjjt.com gxkjl.com gxkjs.com gxkjzy.com gxkl.com gxkld.com gxklyy.com gxkmkny.com gxkongshan.com gxkorbel.com gxkqjt.com gxkqty.com gxkrqz.com gxkrui.com gxkrx.com gxkrzc.com gxksdl.com gxksdt.com gxksjx.net gxksxf.com gxktdl.com gxktzk.com gxktzx.com gxkunzhen.com gxkyjc.com gxkzxx.com gxlanbowang.com gxlanco.com gxlancogroup.com gxlanlian.com gxlansheng.com gxlbang.com gxlbbwg.com gxlbgf.com gxlbi.com gxlbzszy.com gxlcclean.com gxlcgy.com gxlcjsjt.com gxlclsyf.com gxlcpp.com gxlcwater.com gxlcxs.com gxld168.com gxlddq.com gxldgjgpj.com gxldjs.com gxldpc.com gxldzn.com gxlecheng.com gxlek.com gxlelin.com gxlfzl.com gxlgwl.com gxlgxx.com gxlh168.com gxlhcx.com gxlhgjg.com gxlhhb.com gxlhjc.com gxlhxn.com gxlianci.com gxliangjian.com gxliangla.com gxlianguan.com gxliangyun.com gxlianye.com gxlianying.com gxlib.com gxlihua.com gxlimu.com gxliri.com gxlituo.com gxliuhang.com gxliuqiaojidian.com gxlixin.com gxliyugs.com gxljgc.com gxljh.com gxljjt.com gxljjz.com gxljxs.com gxlk.net gxlke.com gxlkjy.com gxlkl.net gxllcb.com gxllsw888.com gxllxl.com gxlmjt.com gxlmzs.com gxlongfa.com gxlonsen.com gxlove.vip gxlqgcy.com gxlqjs.com gxlqkg.com gxlqsd.com gxlryl.com gxlscf.com gxlsfy.com gxlsfz.com gxlsnm.com gxlstc.com gxlswhg.com gxltbaoan.com gxlteng.com gxltgjg.com gxltjj.com gxltm.com gxltmyjt.com gxltzy.com gxluhai.com gxlulian.com gxluogui.com gxluyun.com gxlvjian.com gxlvtong.com gxlvwang.com gxlwdsslgy.com gxlwlc.com gxlwt.com gxlxgg.com gxlxs2008.com gxlxs2008.net gxlxsn.com gxlxxl.com gxlxyun.com gxly66.com gxlyb.com gxlycq.com gxlycs.com gxlycwb.com gxlycyxh.com gxlyghy.com gxlygyl.com gxlyhbkj.com gxlyjt.com gxlzbbw.com gxlzck.com gxlzdyc.com gxlzgcc.com gxlzgdjt.com gxlzhm.com gxlzlk.com gxlzpc.com gxlzsh.com gxlzsmk.com gxlztz.com gxlzwl.com gxlzxrmyy.com gxlzxt.com gxlzzc.com gxlzzh.net gxma123.com gxmacc.com gxmailu.com gxmanyy.com gxmaocai.com gxmbh.com gxmbs.com gxmdgroup.com gxmdjt.com gxmeiao.com gxmeiduo.com gxmeike.com gxmetalking.com gxmggg.com gxmiao.com gxmiaoshu.com gxminglian.com gxmingshi.com gxmj.org gxmjyy.com gxmjzs.com gxmk.net gxmlba.com gxmlyjy.com gxmmhgs.com gxmmkt.com gxmoking.com gxmqhb.com gxmscbs.com gxmsg.com gxmsgy.com gxmtzn1658.com gxmuch.com gxmuwmfy.com gxmuyfy.com gxmuzi.com gxmxc.com gxmxin.com gxmyjc.com gxmykj.com gxmylink.com gxmytzsn.com gxmzb.net gxmzcl.com gxmzjwy.com gxmzkj.com gxmzly.com gxmznzs.com gxnantong.com gxnapd.com gxnbjc.com gxnccq.com gxncgd.com gxnctzjt.com gxndcxswyxgs.com gxnddq.com gxndgg.com gxnewen.com gxnfxny.com gxnfyk.com gxnhjk.com gxnjqj.com gxnjsy.com gxnjy.com gxnjzj.com gxnk.com gxnkjgnc.com gxnkxjry.com gxnkyy.com gxnkyy.net gxnmkj.com gxnmzj.com gxnncj.com gxnnclt.com gxnndghb.com gxnnedu.com gxnnfx.com gxnnhexiexinli.com gxnnip.com gxnnjn.com gxnnjqgg.com gxnnjw.com gxnnkfzx.com gxnnks.com gxnnlsz.com gxnnlyd.com gxnnmudz.com gxnnncp.com gxnnsdyy.com gxnnsmfbl.com gxnnsy.com gxnntfx.com gxnnthch.com gxnntn.com gxnnws.com gxnnxny.com gxnnybskq.com gxnnyihui.com gxnnyxjx.com gxnnzj.com gxnongmu.com gxnpzbx.com gxnsjt.com gxntjz.com gxnumba.com gxnun.net gxnwjt.com gxnxdb.com gxnxgd.com gxnydq.com gxnymt.com gxnzjz.com gxnzzy.com gxoc168.com gxoem.com gxok.com gxosjc.com gxota.com gxota.net gxoulian.com gxouwen.com gxp.cc gxp2.com gxpanda.com gxpangbo.com gxpbs.com gxpeh.com gxpfyy.com gxpgfood.com gxpgft.com gxpggj.com gxpghj.com gxphc.com gxphd.com gxphj.com gxpingen.com gxpinn.com gxpjzs.com gxpljt.com gxpnzp.com gxpost.com gxppw.com gxptids.com gxptkc.com gxptyy.com gxpu.com gxpuyi.com gxpxdj.com gxpykj.com gxqcjs.com gxqcw.com gxqddfxf.com gxqdkj.com gxqfjzzs.com gxqgjx.com gxqgps.com gxqhcm.com gxqhjc.com gxqhtec.com gxqianhan.com gxqianrong.com gxqianshuo.com gxqianyuan.com gxqiba.com gxqihu.com gxqihuan.com gxqingchang.com gxqintang.com gxqiyang.com gxqiyuan.com gxqkcm.com gxqljt.com gxqllc.com gxqmk.com gxqnjc.com gxqqxcl.com gxqrhb.com gxqrjy.com gxqs.org gxqszl.com gxqtgroup.com gxqtszxc.com gxqyjy.com gxqykj.com gxqymc.com gxqymy.com gxqzdx.com gxqzez.com gxqzfz.com gxqzk.com gxqzrc.com gxqzrm.com gxqztv.com gxqztz.net gxqzxjh.com gxqzxw.com gxqzxyd.com gxqzyz.com gxqzzy.com gxrasafety.com gxrayhome.com gxrc.com gxrcda.com gxrcgs.com gxrcosta.com gxrcpx.com gxrcw.com gxrcyj.com gxrczc.com gxrdgroup.com gxrdjy.com gxrenheng.com gxrfys.com gxrgjd.com gxrgwl.com gxrhdl.com gxrijia.com gxrjf.com gxrjyy.com gxrkyy.com gxrmzs.com gxrnzb.com gxroad.com gxrongpin.com gxrongwang.com gxrqsjhz.com gxrsjc.com gxrskyy.com gxrsmllab.com gxrtbtc.com gxruiheng.com gxruipai.com gxruizhen.com gxrunteng.com gxrxdt.com gxrxsy.com gxrxsyjz.com gxrygc.com gxrzd.com gxrzgczx.com gxsad.net gxsag.com gxsailian.com gxsanchuan.com gxsanleng.com gxsanli.com gxsanyo.com gxsbcj.com gxsbfdc.com gxsbzz.com gxsc88.com gxscbxg.com gxsccl.com gxscjn.com gxscjx.com gxsckj.net gxscq.com gxscse.com gxscsw.com gxsd.net gxsdem.com gxsdpx.com gxsdy.com gxseal.com gxsejy.com gxsell.com gxsenge.net gxsenhao.com gxsenzhou.com gxsfcm.com gxsfht.com gxsfjd.com gxsgcgpt.com gxsgip.com gxsgys.com gxshangbeng.com gxshangjia.com gxshanglong.com gxshangyou.com gxshanyixing.com gxshbs.com gxshck.com gxshdl.com gxshebei.com gxshenglu.com gxshengwei.com gxshenyi.com gxshgk.com gxshile.com gxshiteng.com gxshixinde.com gxshizhi.com gxshjy.com gxshjz.com gxshny.com gxshoufeng.com gxshouji.com gxshtf.com gxshua.com gxshuairun.com gxshudao.com gxshuibao.com gxshuixie.com gxshunxiu.com gxshxc.com gxshxf.com gxshxlpx.com gxshyy.com gxshz01.com gxshzyzs.com gxsika.com gxsilk.com gxsjc.com gxsjgs.com gxsjmilk.com gxsjmy.com gxsjsd.com gxsjtz.com gxsjwh.com gxskf.com gxsksw.com gxsksy.com gxsl.com gxslbj.com gxslcc.com gxslyj.com gxslyy.com gxsme.net gxsmkt.com gxsngc.com gxsntp.com gxsnzw.com gxspas.com gxspri.com gxsrkj.com gxsrtz.com gxsrwl.com gxsrxlzxyxzrgs.com gxssjz.com gxssmg.com gxssrs.com gxstarship.com gxstd.com gxsthb.com gxsthnt.com gxstkw.com gxstzx.com gxsubat.com gxsuda.com gxsunwin.com gxsut.com gxsuyun.com gxswgd.com gxswsw.com gxswzps.com gxsxbj.com gxsxhw.com gxsy.org gxsycpa.com gxsydg.com gxsygg.com gxsyh.com gxsyzs.com gxszf.net gxszgp.com gxszjf.com gxszjk.com gxszyy.com gxtagrm.com gxtaiping.com gxtaishi.com gxtaiyinuo.com gxtalc.com gxtangmi.com gxtcdpp.com gxtckj.com gxtcq.com gxtcsys.com gxtdg.com gxtenger.com gxtengsong.com gxtesjy.com gxtfgg.com gxtfmy.com gxtfxx.com gxthcpa.com gxthxxkj.com gxthyy.com gxtianmiao.com gxtianpin.com gxticket.com gxtizi.com gxtjddc.com gxtjksj.com gxtjsnzg.com gxtk.com gxtkzx.com gxtlgd.com gxtljnhb.com gxtltzjt.com gxtmh.com gxtmhzx.com gxtmrs.com gxtmsy.com gxtodo.com gxtonghui.com gxtongji.com gxtongtai.com gxtongzhu.com gxtopart.com gxtp2021.com gxtrwhy.com gxtskq.com gxtslr.com gxttcc.com gxttjs.com gxttjt.com gxtuipin.com gxtuliao.com gxtuoen.com gxtuoyi.com gxtuscity.com gxtxjk.com gxtxpec.com gxty.com gxty.ltd gxtydt.com gxtydzqy.com gxtyjc.com gxtykj.com gxtyw.com gxtywj.com gxtyymxcgs.com gxtzh.net gxtznn.com gxtzpx.com gxtztech.com gxucreate.com gxue.net gxufl.com gxufz.com gxuit.com gxumi.com gxupdi.com gxups.com gxuzf.com gxvideo.net gxvolardda.com gxwanchao.com gxwanchun.com gxwbl.com gxwcll.com gxwcwl.com gxwdgg.com gxwdjt.com gxweibo.net gxweipeng.com gxweite.com gxwellsun.com gxwenlian.com gxwenyutech.com gxwgdq.com gxwgjf.com gxwhsy.com gxwhwy.com gxwjkj.com gxwjs.com gxwjwswkj118.com gxwjxl.com gxwjxsbcj.com gxwjyllh.com gxwkhb.com gxwkxcl.com gxwmj168.com gxwmpco.com gxwofi.com gxwogan.com gxwohua.com gxwoqi.com gxwqwh.com gxwskq.com gxwsxt.com gxwtai.com gxwtba.com gxwtrlzy.com gxwtt.com gxwtzy.com gxwudun.com gxwuyan.com gxwuzi.com gxwx.com gxwxbjsy.com gxwxjy.com gxwxjz.com gxwxtyn.com gxwzgroup.com gxwzhh.co gxwzj.com gxwzjt.com gxwzjx.com gxwzlhh.com gxwzsz.com gxwztv.com gxwzxhyq.com gxwzyl.com gxxbx.com gxxbysy.com gxxbzm.com gxxdbp.com gxxdit.com gxxdpc.com gxxdzx.com gxxfbfg.com gxxfgg.com gxxfky.com gxxfsl.com gxxfz.com gxxgg.com gxxgle.com gxxgpower.com gxxgrj.com gxxgty.com gxxh58.com gxxhb.com gxxhgj.com gxxhgroup.com gxxhgs.com gxxhn.com gxxhsd.com gxxhtax.com gxxhtsj.com gxxhtx.com gxxhtzp.com gxxhz.com gxxhzp.com gxxiangxing.com gxxiangyi88.com gxxiaofu.com gxxiaolong.net gxxielang.com gxxijiang.com gxxilin.com gxxin.com gxxinchai.com gxxingfu.com gxxingxing.com gxxingyao.com gxxinhui.com gxxinrui.net gxxinxiang.com gxxinye.com gxxinyi.com gxxinzhihai.com gxxiyuanep.com gxxjcz.com gxxjry.com gxxjsy.com gxxkai.com gxxkgs.com gxxkhj.com gxxkslgy.com gxxldl.com gxxlhkj.com gxxlk.com gxxlkj.com gxxls.com gxxlyc.com gxxlzxs.com gxxlzyc.com gxxmglzx.com gxxmjjs.com gxxmyjs.com gxxndz.com gxxpgd.com gxxqsm.com gxxrf.com gxxrwl.com gxxrxmgl.com gxxrzb.com gxxstz.com gxxsy.com gxxszx.com gxxszy.net gxxtlq.com gxxundongtech.com gxxuyang.com gxxw.com gxxwjs.net gxxy.online gxxydhb.com gxxyh.net gxxyhwhcb.com gxxyrbc.com gxxyybc.com gxxyydl.com gxxyzx.com gxxzbjy.com gxxzbzh.com gxxzlx.com gxxztcm.com gxxzwd.com gxyaan.tech gxyali.com gxyanggong.com gxyasuoji.com gxybsw.com gxybyy.com gxyc.net gxycjy.com gxycwh.com gxycwy.com gxycykj.com gxycysw.com gxyd.com gxydbg.com gxydbgjj.com gxyddyf.com gxydeye.com gxydfs.com gxydh.com gxydn.com gxydsc.com gxydspm.com gxydtaxi.com gxydxf.com gxyefang.com gxyesf.com gxyete.com gxyfck.com gxyfdz.com gxyfkj.com gxyfm.com gxyfxc.com gxygfund.com gxyglw.com gxygys.com gxyhdq.com gxyhgcjcxxw.com gxyhjgjt.com gxyhjt.com gxyhmy.net gxyhtz.com gxyhxx.com gxyicheng.com gxyidao.com gxyide.com gxyih.com gxyingchuang.com gxyingdi.com gxyinglun.com gxyingyue.com gxyinniyuan.com gxyintian.com gxyinyulanyingguigang.com gxyixin.com gxyiz.com gxyj.com gxyjcy.com gxyjdc.com gxyjhb.com gxyjmc.com gxyjzx.com gxykjd.com gxylct.com gxyldfyy.com gxylgyx.com gxylink.com gxyljf.com gxyllc.com gxylms.com gxylnews.com gxyls.com gxylsjsp.com gxylswkj.com gxympay.com gxynjx.com gxynlts.com gxyoj.com gxyongjiehb.com gxyongsheng.com gxyongzhitai.com gxyos.com gxypdc.com gxypjy.com gxypnh.com gxyqjc.com gxysbt.com gxysbz.com gxysccsh.com gxyskz.com gxyslkj.com gxysqj.com gxyss.com gxytdyf.com gxytgc.com gxytk.com gxytsy.com gxytzx.com gxyuanan.com gxyuanfeng.com gxyuansheng.com gxyuanyun.com gxyuchuan.com gxyunhua.com gxyunsen.com gxyunsheng.com gxyunxiang.com gxyuqiaoshiye.com gxyushengwenhua.com gxyuyun.com gxyx168.com gxyx1688.com gxyxdl.com gxyxjt.com gxyxlx.com gxyxsh.com gxyxtkj.com gxyxyy.com gxyy.net gxyykj.com gxyyun.com gxyyyc.com gxyyzwy.com gxyz120.com gxyzems.com gxyzh.com gxyzhhb.com gxyzjc.com gxyzrmyy.com gxyzt.com gxyzxf119.com gxyzyy.com gxzanwen.com gxzbfm.com gxzbkj.com gxzbzh.com gxzc888.com gxzcab.com gxzcfd.com gxzchz.com gxzcjh.com gxzckj.com gxzclq.com gxzcpsw.com gxzcs.com gxzdsj.com gxzdyg.com gxzecai.com gxzepu.com gxzero.com gxzfjg.com gxzfnz.com gxzfzx.com gxzfzy.com gxzgdl.com gxzghsp.com gxzgsy.com gxzgt.com gxzgtz.com gxzh.ltd gxzh666.com gxzhdq.com gxzhenghua.com gxzhenhang.com gxzhentao.com gxzhgz.com gxzhicui.com gxzhihui.com gxzhisai.com gxzhixing.com gxzhiyuanxing.com gxzhizhi.com gxzhjj.com gxzhkj.com gxzhlw.com gxzhnm.com gxzhongshui.com gxzhongta.com gxzhongzhai.com gxzhp.com gxzhpm.com gxzhshxx.com gxzhunchengbg.com gxzhzb.com gxzhzy.com gxziheng.com gxzj-metal.com gxzjjs.com gxzjjtgs.com gxzjy.com gxzkl.com gxzky.com gxzkzs.com gxzlcs.com gxzldt.com gxzljt.com gxzljx.net gxzlnm.com gxzls.com gxzlsb.net gxzm.vip gxzmjg.com gxzmlm.com gxzmrl.com gxzmtech.com gxzmzz.com gxznym.com gxzongjun.com gxzoxn.com gxzpjx.com gxzpw.org gxzrdk.com gxzrjc.com gxzrxf.com gxzscloud.com gxzsgl.com gxzsjzsj.com gxzslfz.com gxzsnm.com gxzspg.com gxzssmart.com gxzstsg.com gxzstzjtgs.com gxzsyy.com gxzszw.com gxzt.com gxzt148.com gxzt99.com gxztbf.com gxztzs.com gxzunx.com gxzuojiang.com gxzwhw.com gxzwjt.com gxzwxx.com gxzxgl.com gxzxht.com gxzxmy.net gxzxrh.com gxzy.com gxzydl.com gxzyfs.com gxzygygs.com gxzyhb.com gxzyjl.com gxzyjsgc.com gxzyky.com gxzymodel.com gxzypg.com gxzytx.com gxzyxysy.com gxzyyt.com gxzyzb.com gxzzcpa.com gxzzd.com gxzztkj.com gxzzxin.com gy-ggy.com gy120.net gy1688led.com gy2025.com gy328.com gy3y.com gy794c.com gy7n.com gy818.com gyaqyy.com gyb086.com gybcq.com gybsn.com gybyscy.com gybyxsy1588.com gycharm.com gycode.com gyddos.com gydfsy.com gydongli.com gyedu.net gyersf.com gyfensuiji.com gyfwyy.com gyfyy.com gygmhs.com gygmk.club gyhapp.com gyhb68.com gyhdsj.com gyhht.com gyhimalayanul.com gyhj.org gyhm.cc gyidc.net gyii.com gyip.net gyjc88.com gyjdgs.com gyjiangyuan.com gyjs.net gykgcqtm.com gykggz.com gykghb.com gykgsx.com gykqyy.com gylcxo.xyz gyljc.com gylwgjsyxx.com gylwyy.com gylxq.com gym0boy.com gymama.com gymbo-online.com gymxbl.com gymy.cc gyncb.net gynsh.net gynyzp.com gyouapp.com gypmsl.com gypserver.com gypump.com gypzkat.com gyqcw.com gyqqd.com gyqrmyy.com gyr.cc gyrcw.com gyrmyy.com gyrqfd.com gyrsy.com gyscw.com gysdzy.com gyseals.com gyshwl.online gysk.com gysou.com gysq.org gysrmyy.com gystarch.com gystars.com gystatic.com gystc.com gyswzys.com gytcwb.com gytxnc.com gytzkg.com gyuancdn.com gyurt.com gywlhypt.com gywxedu.com gywygl.com gyxdkjdl.com gyxtyy.com gyxuan.com gyxww.net gyxx.com gyxx365.com gyyb.com gyycc.com gyypw.com gyyuli.com gyyywcpx.com gyzdh.com gyzdkq.com gyzfbz.net gyzhtc.com gz-begreen.com gz-best.com gz-chantou.com gz-chengkao.com gz-cjjl.com gz-cmc.com gz-cube.com gz-data.com gz-ejoy.com gz-goam.com gz-gree.com gz-haohushan.com gz-hipower.com gz-huayuan.com gz-hz.com gz-julong.com gz-junan.com gz-lodihair.com gz-ltjx.com gz-mrt.com gz-notary.com gz-shanguang.com gz-spi.com gz-tencentclb.cloud gz-tencentclb.com gz-tencentclb.net gz-tencentclb.work gz-wx.com gz-xinghe.com gz-xinyu.com gz-xt.com gz-zhongshang.com gz.com gz007.net gz0668.com gz111.com gz121.com gz162.com gz1hua.com gz304.com gz360.com gz4399.com gz4u.net gz51la.com gz528.com gz583.com gz91.com gzac.org gzads.com gzanquan.com gzap.net gzaptech.net gzasp.net gzate.com gzautojet.com gzbaozhilin.com gzbawei.com gzbeaton.com gzbic.com gzbiogene.com gzbl.com gzblssly.com gzboji.com gzbookcenter.com gzbt020.com gzbus.com gzbxyy120.com gzbycq.com gzbyyy.com gzbzsport.com gzbzx.net gzcablec.com gzcancer.com gzcars.net gzccb.com gzccigroup.com gzccvs.com gzceia.com gzch120.com gzchangke.com gzchangzhe.com gzchenggeng.com gzchj.net gzchts.com gzchuanghe.com gzchupai.com gzci.net gzcihui.com gzcjjs.com gzcl999.com gzcmer.com gzcmjl.com gzcn.net gzcots.com gzcppa.com gzcqs.com gzcrdzbk.com gzcsgs.com gzcsjg.com gzcxhd.com gzcxlm.org gzcycling.com gzczjd.com gzdahyxh.com gzdai.com gzdaily.com gzdangaopeixun.com gzdaochen.com gzdaqi.com gzdata.net gzdayue.com gzdbx.com gzdcsmt.com gzdensity.com gzdi.com gzdia.com gzdingan.com gzdingjie.com gzdingyu.com gzdingyue.com gzdingyun.com gzdisheng.com gzdjy.org gzdli.com gzdqyy.com gzdryy.com gzdsw.com gzdtg.com gzduguo.com gzdysx.com gzebpubservice.com gzedu.com gzeic.com gzenxx.com gzeryun.com gzexpo.com gzfc.net gzfengmao.com gzfezx.com gzfgxh.com gzfi.com gzfin.com gzfirst.com gzfisher.com gzfk01.com gzfodak.com gzforge.com gzfpa.net gzfqyy.com gzfrldz.com gzfsnet.com gzfuk.net gzgajy.com gzgas.com gzgayy.com gzgccs.com gzgccxkj.com gzgcg.com gzgdkq.com gzgdwl.com gzgelandi.com gzghic.com gzghyy.com gzgj.net gzgjcm.com gzgjxny.com gzglgcjt.com gzgljx.com gzgmjcx.com gzgongsizhuce.com gzguangjia.com gzguidian.com gzgx020.com gzgxysjx.com gzgyetc.com gzh6.com gzhaigu.com gzhakj.com gzhand.com gzhangcha.com gzhatao.com gzhbchy.com gzhc365.com gzhclw.com gzhcpcb.com gzhd.net gzhd56.com gzhdcs.com gzhe.net gzhengdian.com gzhengdou.com gzheyoukeji.com gzhfschool.com gzhifi.com gzhkl.com gzhkzyyy.com gzhm.com gzhntec.com gzhornet.com gzhotelgroup.com gzhpaier.com gzhpgroup.com gzhphb.com gzhpyy.com gzhpzz.net gzhrsa.org gzhsh.com gzhstars.net gzhtdz.com gzhtinfo.com gzhuake.cc gzhuamei.net gzhuayan.com gzhuiwan.com gzhuiyk.com gzhuiyun.com gzhwgg.com gzhwsp.com gzhx04.com gzhx09.com gzhx10.com gzhxaq.com gzhxyyhos.com gzhygk.com gzhysy.com gzhzcj.com gzidc.com gziec.net gzitvs.com gzitwm.net gzj568.com gzjbjx.com gzjbwm.com gzjc2016.com gzjeeseng.com gzjgpy.com gzjhotel.com gzjiada.com gzjiaw.com gzjiehun.com gzjiema.com gzjingsha.com gzjinsong.com gzjiunuo.com gzjizhong.com gzjk120.com gzjkfk.com gzjkfund.com gzjkjl.com gzjkqh.com gzjkyljt.com gzjlp.com gzjlwl.com gzjlwy.com gzjlxh.com gzjmyy.com gzjob.net gzjpad.com gzjqd.com gzjrkg.com gzjs020.com gzjsxh.com gzjt.cc gzjtch.com gzjtjx.com gzjtjy.com gzjtxh.com gzjtxx.net gzjtzy.net gzjunbo.net gzjunyu.com gzjuqi.com gzjvcom.com gzjxchem.com gzjyh.com gzjykj.com gzjyme.com gzjyypt.com gzjz-auto.com gzjzc.com gzkaiheng.com gzkaiyue.com gzkangyuan.com gzkcsj.com gzkcsjw.com gzking.com gzkint.com gzkmbg.com gzkofa.com gzktm.com gzkuaiyingyong.com gzkunmao.com gzkydzyyy.com gzlarc.com gzlawyer.org gzlex.com gzlgsyxx.com gzli.com gzliancun.com gzlib.org gzlig.com gzlight.com gzliyuanhb.com gzljsl.com gzlnholdings.com gzlsgy.com gzlt.net gzlujiao.com gzlushun56.com gzlutong.com gzluxlife.com gzlwrc.com gzlwycft-tencentclb.cloud gzlwycft-tencentclb.com gzlwycft-tencentclb.net gzlwycft-tencentclb.work gzlyhlawyer.com gzlz307.com gzlzfm.com gzm1.com gzmama.com gzmath.com gzmc668.com gzmcg.com gzmcgjcpt.com gzmediaclick.com gzmedri.com gzmeichang.com gzmiden.com gzminjia.com gzmiyuan.com gzmlfcyy.com gzmofa.com gzmould.com gzmpc.com gzmri.com gzmstech.com gzmtr.com gzmtrticket.com gzmylike.com gzmzedu.com gznaturn.com gznbsyy.com gzncstudios.com gznemo.com gznftz.com gzngn.com gznict.com gznotes.com gznw.com gznxbank.com gznyjj.com gznypfk.com gzocl.com gzomick.com gzopen-tencentclb.cloud gzopen-tencentclb.com gzopen-tencentclb.net gzopen-tencentclb.work gzoyrr.com gzpaco.com gzpeite.com gzpeiyou.com gzpfs.com gzpg.net gzpgroup.com gzpgs.com gzph.net gzpinda.com gzpma.com gzpoint.com gzpotent.com gzppa.org gzprg.com gzprobig.com gzpy120.net gzpydlc.com gzpyxz.net gzqbd.com gzqiche.com gzqixun-tech.com gzqljxd.com gzqsts.com gzqunsheng.com gzqygl.com gzqz.com gzrand.com gzrandr.com gzrch.com gzrcqf.com gzrecruit.com gzredpine.com gzrh.com gzrishun.com gzrkt.com gzrobot.com gzrobots.com gzrqhyxh.com gzrrj.com gzrskh.com gzrsksxxw.com gzrtnet.com gzrycl.com gzsaf.com gzsbdq.com gzscbio.com gzschknyy.com gzscjrh.com gzsdwrmyy.com gzselon.com gzsenergy.com gzsenzheng.com gzsewage.com gzsg.org gzsgczb.com gzshaudio.com gzsheraton.com gzshiran.com gzshuangbao.com gzshuimh.com gzshujuhui.com gzshyk.com gzsiyuan.com gzsj.live gzsjgxcl.com gzsjjs.com gzsjyzx.com gzsjzzsxh.com gzskysoil.com gzslyy.com gzsonic.com gzsouth.com gzspm.com gzspring.com gzspt.com gzsq.com gzsqkfyy.com gzsqmxx.com gzsrmyy.com gzsrunda.com gzssltzinc.com gzssnzx.com gzssyyy.com gzstarship.com gzsttc.com gzstv.com gzstw.com gzstyq.com gzsu.net gzsuike.com gzsums.net gzsunny.com gzsw168.com gzswgf.com gzswjs.com gzsxds.com gzsyyxh.com gzszfgjj.com gzszgas.com gzszgyjt.com gzszjl.com gzszsj.com gzszyy.com gztaiyou.com gztalx.com gztamude.com gztcdj.com gztcm3.com gztea.vip gzteacher.com gztextiles.com gztfgame.com gzthfy.com gzthrc.com gztig.com gztime.cc gztit.com gztlgc.com gztopkt.com gztoptour.com gztotem.com gztowngas.com gztrseo.com gztszl.com gzttjt.com gztv.com gztvu.com gztwkadokawa.com gztxcw.com gztxedu.com gztxfood.com gztyjx.com gztyre.com gztyyedu.com gztz.org gztz120.com gzu521.net gzuc.net gzuci.com gzucm-yhyy.com gzuni.com gzupdc.com gzv6.com gzvalex.com gzvstc.net gzw.net gzwanbao.com gzwanju.com gzwanzhou.com gzwarriortech.com gzwaterinvest.com gzwatersupply.com gzwcfjd.com gzwcit.com gzwcjs.com gzweicai.com gzweix.com gzwhir.com gzwjnt.com gzwlcyjt.com gzwoman.org gzwonbo.com gzwrit.com gzwrjt.com gzwshd.com gzwswjc.com gzwtqx.com gzwxzf-tencentclb.cloud gzwxzf-tencentclb.com gzwxzf-tencentclb.net gzwxzf-tencentclb.work gzwynet.com gzwzhw.com gzxdd.com gzxdf.com gzxdzlyy.com gzxf35.com gzxhcbfx.com gzxhce.com gzxhhs.net gzxianc.com gzxiaoban.com gzxict.com gzxijiu.com gzxinfo.com gzxjgc.com gzxrsqj.com gzxswh.com gzxsyy.com gzxszf.com gzxue.com gzxulang.com gzxwtjy.com gzxxm.com gzxxtiyu.com gzxxty168.com gzxy.net gzxyh.com gzxyprint.com gzxzjy.com gzyajs.com gzyangai.com gzybao.com gzycdy.com gzych.vip gzycsjgs.com gzyct.com gzydnewmaterial.com gzydong.com gzydwh.com gzyfjsjt.com gzyflw.com gzyhg.vip gzyiagu.com gzyilongprinting.com gzyitsy.com gzylhyzx.com gzyouai.com gzyowin.com gzyqtlxs.com gzyqwl.net gzysnkyy.com gzytgf.com gzyucai.com gzyucai.net gzyxedu.net gzyxls.com gzyxtech.com gzyycg.com gzyyjt.net gzyyma.com gzyytj.com gzyywz.net gzyz699.com gzzarts.com gzzbdl.com gzzc-logistics.com gzzcs.com gzzdgg.com gzzdkg.com gzzdqy.net gzzfrl.com gzzgresin.com gzzhanmei.com gzzhitu.com gzzhixin.com gzzhrong.com gzzjgf.com gzzjtx.com gzzkjc.net gzzkzj.com gzzkzsw.com gzzldq.com gzzlfw.com gzzliot.com gzzmedu.com gzzoc.com gzzongsi.com gzzoo.com gzzqy.net gzzrdc007.com gzzulin.com gzzwis.com gzzx.cc h-ceo.com h-cled.com h-college.com h-diode.com h-heguo.com h-partners.com h-shgroup.com h-ui.net h-world.com h-zl.net h0591.com h0758.net h12.net h12345.com h128.com h13.mobi h14z.com h2-bank.com h2fc.net h2gl.com h2o-china.com h2os.com h2vm.com h2weilai.com h3806.com h3807.com h389.com h3c.com h3c.com.hk h3cfuwuqi.com h3dns.net h3ue2s.com h3wog.com h3yun.com h4088.com h4k5.com h4sud3rr4pmu.com h5-share.com h5-x.com h5-yes.com h5.net h51.com h51h.com h554.com h55u.com h576.com h5abc.com h5anli.com h5app.com h5avu.com h5cn.com h5data.com h5designer.com h5ds.com h5eco.com h5faner.com h5gamecdn.club h5gd.com h5gdsvip.com h5gdvip.com h5in.net h5jun.com h5king.com h5kuai.com h5ky.com h5le.com h5login.work h5ma.com h5mc.com h5mgd.com h5mo.com h5mota.com h5mugeda.com h5no1.com h5pack.com h5po.com h5shuo.com h5taotao.com h5tpl.com h5uc.com h5util.com h5video.shop h5wap.com h5war.com h5youxi.com h5yunban.com h5zhifu.com h61889.com h6295.com h6969.com h6app.com h6room.com h6ru.net h7ec.com h7fpuyk8.com h863.com h99998888.com h99999999.com ha-airport.com ha47.net ha95158.com ha97.com haawking.com habadog.com habbygames.com habctv.com habwjc.com hach-hanna.com hachicnc.com hacjkq.com hack0nair.me hack520.com hack58.com hack6.com hackav.com hacker5t2ohub.com hackerav.com hackernews.cc hackhome.com hackhp.com hackhw.com hacking-linux.com hackinn.com hackjie.com hackliu.com hacknical.com hackp.com hackpascal.net hackrf.net hackroad.com hackyh.com hacori.com hacpai.com haczjob.com hadax.com hadewu.com hadobi.com hadsky.com haeicr.world haers.com haersgroup.com haeye.net hafei.com hafuyoufk.com hagaozhong.com hagibis.com haguan.com haguworld.com haha168.com haha33.com haha360.com haha365.com haha9911.com hahack.com hahaertong.com hahait.com hahajing.com hahasou.com hahasz.com hahaurl.com hahawen.com hahayouxi.com hahazhao.com hahon.com hahour.com hai-jiang.com hai.pet hai360.com haianbank.com haianbm.com haianedu.net haianw.com haianyaoye.com haianzhuangshi.com haibao.com haibaobaoxian.com haibaofoods.com haibaoptech.com haibaoyl.com haibaoyouxi.com haibeinews.com haibian.com haibianshibei.com haibowh.com haiboyi.com haica.cc haicent.com haichangchina.com haichangoceanpark.com haichen-logistics.com haichuang3d.com haichufang.com haici.com haicj.com haicnh.com haicoder.net haidaibao.com haidaike.com haidaoteam.com haidaotrip.com haidaozhu.com haidegroup.com haidian-marathon.com haidii.com haidilao.com haidilao.net haidilao.us haidubooks.com haidutouzi.net haier-ioc.com haier.com haier.hk haier.net haiercash.com haierfinancial.com haiermoney.com haiershequ.com haiershui.com haiersmarthomes.com haierubic.com haieruplus.com haifangbest.com haifanwu.com haifuhospital.com haige.com haigeek.com haigeer.com haigehome.com haigoose.com haigouyan.com haigugroup.com haigui001.com haihepharma.com haihetour.com haihuainternational.com haihub.co haihuishou.com haiintelligent.com haijia.org haijianchuxing.com haijianstock.com haijiaonet.com haijiaoshi.com haijiasu.com haijizq.com haijob.com haijt.com haijudoc.com haijunda.com haikegroup.com haikejin.com haikele.com haikeoutdoor.com haiketrip.com haikouvw.com haikouwater.com hailanchem.com hailanggroup.com hailea.com haili-spitzer.com hailiang.com hailiangbio.com hailiangedu.com hailiangip.com hailiangstock.com hailiangxinxi.com hailichemical.com hailidoctor.com haililiang.com hailin.com hailongfoods.com hailouw.com hailunpiano.com hailuoai.com hailuowu.com haima.com haima.me haima001.com haimacloud.com haimacloudpc.com haimaiyun.com haiman.io haimaoji.com haimawan.com haimeec.com haimi.com haimian.com haimin.net haimini.com haimosic.com haina.com haina.net hainaguangdian.com hainajc.com hainan.net hainan0898.net hainanairlines.com hainancom.com hainancp.com hainandc.com hainanfp.com hainanfz.com hainanjiuzi.com hainanjk.com hainanlawyer.org hainanlecheng.com hainanruiyuan.com hainanwangdai.com hainanyouxi.com hainanyumu.com hainanzuojia.com hainawater.com hainayun.net hainiaowo.com hainic.com haining.com haining.tv hainingnews.net hainiubl.com hainiugo.com hainiuxy.com hainuotech.com haiotsys.com haipal.com haipengtoy.com haipinggroup.com haipuzhiwu.com haiqianghm.com haiqigame.com haiqingyanyu.com haiqisoft.com haiqq.com haiqu.vip hair43.com hair8.net hairbobo.com hairboxonline.com hairenren.com hairology.net hairongsw.com hairuichem.com hairuituo.com hairunce.com hairunmedia.com hairunpictures.com hairxmf.com hairycrabs.com haisco.com haisenyouxi8.com haishengfrp.com haishensl.com haishiyiliao.com haishui.cc haishun.com haishuokj.com haishuu.com haisongta.com haita.io haitaibrowser.com haitaichina.com haitakuajing.com haitangmm.com haitangw.cc haitangw.net haitao.co haitaohub.com haitaoj.com haitaolab.com haitaotong.com haitaozu.org haitian-food.com haitian-group.com haitian.com haitiangroup.com haitianhome.com haitianpm.com haitianshuiwu.com haitl.com haitong.com haitongjiaoyu.com haitou.cc haitou360.com haitoujia.com haituie.com haitunshenghuo.com haitunvoice.com haitunwallet.com haitunzhidao.com haitunzixi.com haituoqi.com haitutech.com haiwaicat.com haiwaichongzhi.com haiwaihuafei.com haiwaimoney.com haiwaioo.com haiwaiyou.com haiwaiyoujia.com haiwangbuyu.com haiwanxinxi.com haiwd.com haiwei-tech.com haiweili.com haiwell.com haiwen-law.com haiwenky.com haiwu.com haixiachina.com haixiangkuajing.com haixin.com haixin5.com haixindichan.com haixinews.com haixing6.com haixingbangfu.com haixingcloud.com haixinhui.com haixinpatent.com haixiulive.com haixiumv.com haixiutv.com haixiuvv.com haixuan.com haixue.com haixuemeili.com haixuyun.com haiyang-group.com haiyang.net haiyi701.com haiyiai.tech haiyingmt.com haiyingshuju.com haiyisoft-gz.com haiyisoft.com haiymobi.com haiyong.site haiyuangabion.com haiyuangabiou.com haiyuetechltd.com haiyun.me haizhangs.com haizhanweb.com haizhenzhu.com haizhikj.com haizhlink.com haizhoumo.com haizhu.vip haizhuyx.com haizitong.com haiziwang.com haizol.com hajt-cn.com haju.com hajw.com hajzhyxh.com hakaimg.com hakchina.com hakczz.com hakfqyy.com hakonespring.com hakuya.work halade.com halcyonz.com halead.com halfrost.com haligame.com halixun.com haljl.com halloar.com hallofix.com halobear.com halomobi.com halopepper.com halsplastics.com haluan2u.com haluoha.com haluolinks.com halvie.com ham.xin hamdl.com hamedal.com haminol.com hammypuff.com hamu.site hanabi-live.com hanas.com hanascitygas.com hanbi.live hanbige.com hanboshi.com hanbridge.org hanchacha.com hanchao9999.com hancibao.com hancloud.com hanclouds.com hand-china.com handanhuizhong.com handanjob.com handanyz.com handcn.com handday.com handelic.com handelsen.com handern.com handisele.com handone.com handongkj.com handongruanjian.com handpk.com handsfree.work handu.com handuyishe.com handyfriendship.com hanergy.com hanex.cc hanfakg.com hanfan.cc hanfei.net hanfeiyl.com hanfugong.com hanganxian.com hangbohaorun.com hangcha-forklift.com hangchow.org hangdagroup.com hangdaowangluo.com hangdaxinli.com hangdianzhizao.com hangduhc.com hangf.com hanggao.net hangge.com hanghaimeng.com hanghang.com hanghangcha.com hanghangohye.com hangjia-tech.com hangjianet.com hangjiayun.com hangjizulin.com hangkong.com hangkongxx.com hanglorygroup.com hangnakeji.com hangongjk.com hangpai.org hangpu-topsys.com hangruntech.com hangshitech.com hangsi-bio.com hangtianride.com hangtu-china.com hangtunggroup.com hanguangbaihuo.com hangugc.monster hanguu.com hangw.com hangwei-media.com hangxinyiqi.xin hangyan.co hangyang.com hangyecloud.com hangzhiqiao.com hangzhouboiler.com hangzhoueda.com hangzhouexpo.com hangzhoufujikura.com hangzhoujizhang.com hangzhoujx.com hangzhouleili.com hangzhouluohu.com hangzhoumengfa.com hangzhouqisheng.com hangzhousports.com hangzhoutianqi114.com hangzhouweifeng.com hangzhouyiyao.com hangzhouyq.com hangzhouzehe.com hanhai.net hanhaiqikan.com hanhe-cable.com hanhongchina.com hanhoo.com hanhua.com hanhuatin.com hanihanrf.com hanjea.com hanjianbing.org hanjiaying.com hanjie.biz hanjjl.com hanju-tv.org hanjuejituan.com hanjutv.com hankaiacademy.com hankaikeji.com hankchina.com hanke1688.com hankeer.org hankemaoyi.com hanking.com hankinggroup.com hankmo.com hankunlaw.com hanlanad.com hanlei.org hanlin-tech.net hanlin.com hanlin.press hanlindong.com hanlinedu.com hanlinzhijia.com hanlinzhijia.net hanlka.com hanlongpiju.com hanlunjx.com hanmaa.com hanmads.com hanmaidj.com hanmaker.com hanmeilin.com hanmembrane.com hanmozhai.com hanniulaser.com hannor.com hannto.com hanon.cc hanpian.tv hanpokou.com hanpupharm.com hanqigroup.com hanqinghb.com hanqunfeng.com hanrunbt.com hans-ad.com hansaoxinxi.xyz hanschen.site hansenexpo.com hansetile.com hanshinkiki-xuzhou.com hansholdings.com hanshow.com hansight.com hanslaser.com hanslaser.net hansme.com hansong-china.com hanspower.com hanspub.org hansrobot.com hanstong.com hansuku.com hansunic.com hanswine.net hant.cc hantang59.com hantangxintong.com hantangzy.com hantecables.com hantele.com hanterry.com hantev.com hantinghotels.com hantongrc.com hantongsteel.com hanvitools.com hanvon.com hanvonmfrs.com hanvontouch.com hanwa-ch.com hanweb.com hanwei1234.com hanweimetal.com hanwenzhongyi.com hanximeng.com hanxinsheng.com hanxuew.com hanyanggroup.com hanyangmoto.com hanyanseed.com hanyaohuanbao.com hanyi.com hanyi.studio hanyipo.com hanyou.com hanyougame.com hanyouwang.com hanyu.me hanyuansh.com hanyuguoxue.com hanyulaoshi.com hanyutai.com hanyuwatch.com hanyya.com hanzhesh.com hanzhong123.com hanzhonggas.com hanzhoulaser.com hanzify.org hanziguan.com hao-shangliang.com hao.ac hao.gg hao.ink hao0517.com hao0724.com hao0770.com hao120.cc hao123-hao123.com hao123.com hao123.com.sg hao123.net hao123.ph hao12306.com hao123img.com hao123n.com hao1358.com hao136.com hao163.com hao184.com hao1cm.com hao22.com hao222.com hao222.net hao2345.com hao24.com hao245.com hao251.com hao268.com hao315.cc hao315.com hao353.com hao360.com hao394.com hao3gp.com hao5.net hao528.com hao568.com hao6.com hao61.net hao695.com hao7188.com hao753.com hao76.com hao774.com hao86.com haoad.org haoamc.com haoayi.xyz haobangni.com haobangscm.com haobtc.com haocaa.com haocai.com haocaiqi.net haocang.com haochang.tv haochangyou.com haoche1.com haoche51.com haochedai.com haocheedai.com haochehui.com haochengda.net haochenmo.cc haochi123.com haochijixie.com haochimei.com haochu.com haochuguo.com haocw.com haodai.com haodanku.com haodaquan.com haodekuai.com haodevps.com haodewap.com haodewap.net haodf.com haodf.org haodiany.com haodiaoyu.com haodingdan.com haodisoft.com haodiy.net haodns123.cc haodns789.cc haodns999.cc haodongdong.com haodou.com haodro.com haoduck.com haoduhe.com haoduo.vip haoduobao6.com haoduofangs.com haoduojiaju.com haoduorou.net haoduoziti.com haoe123.com haoejia.com haoeyou.com haofabiao.com haofakeji.com haofan005.com haofang.net haofang007.com haofang5.com haofangkankan.com haofangyu999.com haofeng-group.com haofenshu.com haofenxiao.net haofly.net haofs.com haofz.com haoge500.com haogedu.com haogj8.com haogongzhang.com haohaizi.com haohan-data.com haohanfw.com haohanguo.com haohanju.com haohanjx.com haohanpower.tech haohanstar.com haohao8888.com haohaodoc.com haohaowan.com haohaowan.net haohaoxiuche.com haohaoxz.com haohaoyx.com haohaozhu.com haohead.com haoht123.com haohuan.com haohuanjiao.com haohuoa.com haohuoyuan.com haohxs.com haointl.com haoinvest.com haoji.me haojiao.cc haojiao.net haojiaolian.com haojie.work haojing.org haojit.com haojixie.cc haojixiong.com haoju5.com haojue.com haojue163.com haojushe.com haoka88.com haokale.com haokan.com haokan5.com haokanbu.com haokanqq.com haokanshipin.com haokavip.com haoke100.com haokebang.net haokebio.com haokecheng.com haokejie.com haokeyun.vip haokongbu123.com haokoo.com haoku.net haokuaiya.com haolaba.com haolangtech.com haolaoshi.tv haolawyer.com haole.com haoled9999.com haolexiang.com haolidayiliao.com haolietou.com haolifa.com haolike.com haoliners.net haoling.cc haolints.com haoliv.com haolizi.net haolongsci.com haolvbt.com haolyy.com haoma.com haoma123.com haomagujia.com haomai.net haomaikeji.com haomaishe.com haomaishou.com haomaitong.com haomaizhizao.com haomaku.com haomei-alu.com haomenke.com haomifi.com haomingguan.com haommn.com haomo-tech.com haomove.com haomzl.com haonames.com haonic.com haoniu1.com haonongzi.com haooyuan.com haopeixun.com haoqdl.com haoqiao.com haoqihb.com haoqikan.com haoqiutiyu.com haoqixingstem.com haoqu.net haoqu99.com haoqun.vip haoranbio.com haorantech.com haorc.com haoread.com haoreagent.com haorencai.net haorooms.com haoruanmao.com haoruo.com haosd.com haoseals.com haosedaohang.com haosenchina.com haoservice.com haosf.com haosf.net haoshangqi.com haoshanxi.com haosheng168.com haoshengmall.com haoshengyin.org haoshenqi.com haoshici.com haoshifamen.com haoshipin123.com haoshiqi.net haoshsh.com haoshuaji.com haoshudi.com haoshun666.com haoshunjia.com haoshunjx.com haoshuntm.com haoshuo.com haoshuyou.net haoshuyun.com haositone.com haosix.com haoso.com haosou.com haosou.net haosou123.com haoss.vip haost.com haostay.com haosulu.com haote.com haotengly.com haotgame.com haotianhuyu.com haotihui.com haotijin.com haoting.com haotm.com haotonggg.com haotoufa.com haotougao.com haotougu.com haotoys.com haott.com haotu3.com haotui.com haotyn.com haouc.com haowa.com haowaicaijing.com haowallpaper.com haowandeni.com haowang.shop haowangjiaohospital.com haowangpu.com haowanma.info haowanok.com haowanyou.com haowen100.com haowenbo.com haowenshi.com haowu.com haowu.link haowuguo.com haowusong.com haowuyunji.com haoxg.net haoxiana.com haoxiangmachine.com haoxiangyundong.com haoxiaoguo.net haoxingchen.com haoxingcn.com haoxingroup.com haoxinpinggu.com haoxintaikj.com haoxipu.com haoxitong.com haoxiu.net haoxiyou.com haoxue.com haoxue360.com haoxueche.com haoxuee.com haoxyx.com haoyangmao18.com haoyao.com haoyao163.com haoyaofs.com haoyaogo.com haoychuang.com haoyetaoci.com haoyintong123.com haoyisheng.com haoyishu.com haoyong.cc haoyou666.com haoyouidc.com haoyouqian.com haoyouxi.cc haoyouyinxiang.com haoyuanxiao.com haoyue.com haoyue28.com haoyuepu.com haoyun.life haoyun13.com haoyun56.com haoyunbb.com haoyunlaisz.com haoyunlawyer.com haoyunma.com haoyuntech.com haoyunwuyou.com haoyusw.com haozai120.com haozaishop.com haozhai.com haozhanhui.com haozhebao.com haozhexie.com haozhihs.com haozhougroup.com haozhuan.vip haozhuangji.com haozhuji.net haozi.net haozi.xyz haozip.com haozjj.com haozke.com haozongjie.com haozu.com haozuojia.com hapco-cn.com hapg-hitachi.com hapi123.net hapids.com hapingapp.com hapjs.org haplat.net happi123.com happigo.com happiness9999.com happy-ti.com happy-vpn.com happy88.com happycodeboy.com happycoding.online happydino.com happyelements.com happyeo.com happyet.org happyev.com happyhlddz.com happyjuzi.com happykb.com happykey6.com happylivelife.com happymmall.com happynic.com happypingpang.com happyplaygame.net happysky.org happystudy.cc happytimenet.com happyvalley.link happywalk.net happyya.com hapying.com haqu.com haquan.cc harbin-electric.com harbin123.com harborhousehome.com harbourmooc.com hardcc.com hardcoresir.net hardhard.work hardkr.com hardspell.com hardware114.com hareonsolar.com hariogame.com harj120.com harleyydavidsale.shop harmay.com harmight.com harmony-et.com harmony3.com harmony4s.com harmonyos.com harmonywatch.com harmyy.com harog.net harpost.com harpping.com harryhorsemedia.com harrynull.tech harrypottermagicawakened.com harseen.com harsom.com hart-worldwide.com harvestcm.com harvesthanger.com harworld.com harworld.work harzone.com hasaf.com hasbyk.com hasco-group.com hasea.com hasee.com hasee.net hasen-cn.com hashnest.com hashyrmyy.com hasivo.com haskqyy.com hasoltd.com haspig.com hassbian.com hassfull.com hasstatic.com hastenpharma.com hasuhasu.com hatanggame.com hatangqp.com hatangyx.com hatelifu.club hatfav.com hatjedu.com hatlonely.com hatoem.com hatro.cc hatter.ink haval-global.com have.ink havefun.im havevisa.com havewo.com hawagame.com hawanyx.com hawbel.com haweigroup.com hawjob.com hawjwl.com hawkaoe.net hawkeye.fun hawkfilter.com hawkhai.com hawtaimotor.com haxdjx.com haxm.com haxwx.cc hayao.com hayaoym.com hayge.com haygo.com hayi.cc hayseen.com hazp.net hazpw.org hazq.com hb-163.com hb-ecloud.com hb-gjj.com hb-green.com hb-hengda.com hb-jn.com hb-ly.com hb-sx.net hb-water.com hb-ws.com hb-xydq.com hb-young.com hb0561.com hb0771.com hb10000.com hb10000sale.com hb1000kv.com hb110.cc hb12333.com hb191.com hb2h.com hb30.com hb3rm.com hb500.com hb56.cc hb96369.com hb96568.com hbaas.com hbaec.com hbafa.com hbafxh.org hbahyy.com hbairport.com hbanbao.com hbaog.com hbapia.vip hbasstu.net hbbaidu.com hbbfyfy.com hbbidcloud.com hbbidding.com hbblxb.com hbbmjd.com hbbnqy.com hbbrgd.com hbbst99.com hbbsw.vip hbbutler.com hbbwg.net hbbxpx.com hbbyb.com hbbzyys.org hbca110.com hbcbly.com hbccp.org hbccpit.org hbcdc.com hbcdyz.com hbcg.cc hbchen.com hbchufeng.com hbcjh.net hbcjkcfwjt.com hbcjlq.com hbcjw.com hbcjxx.com hbcl.ltd hbclgg.com hbcljyc.com hbclqcw.com hbcoal.com hbcof.com hbcofco.com hbcourt.org hbct-wiremesh.com hbctgs.com hbcthotels.com hbctic.com hbctjk.com hbctjt.com hbcwt.com hbcxpm.com hbcyclub.com hbcydlqc.com hbcyyy.com hbdangyang.com hbdckj.com hbddjt.com hbddrn.com hbdefon.com hbdfmlw.com hbdjcc.com hbdjk.com hbdmia.com hbdschem.com hbdssb.com hbdtjqj.com hbdx-kdyy.com hbdzcg.com hbdzky.com hbdzxx.com hbeda.org hbedky.com hbeducloud.com hbeeia.com hbekt.com hbema.net hbepec.com hbfesco.com hbfie.org hbfintech.com hbfootball.com hbfoundry.org hbfqyjt.com hbfsh.com hbfy.com hbfybj.com hbfyhb.com hbfzb.com hbg66.club hbgajg.com hbgbdst.com hbgcxj.com hbgdsfy.com hbgdwl.com hbgis.org hbgj-3.com hbgj.com hbgk.net hbglky.com hbglobal.com hbgr.net hbgrb.net hbgroups.com hbgsetc.com hbgswl.com hbgwy.org hbgydxw.com hbgzh.com hbha027.com hbhaolinju.com hbhcdn.com hbhcgt.com hbhdhd.com hbhjrzzl.com hbhm.net hbhml.com hbhmxx.com hbhongrunxwy.com hbhqzyc.com hbhtcm.com hbhtgroup.com hbhtxx.com hbhuamei.com hbhuipu.com hbhxbb.com hbhxgroup.com hbhyychem.com hbhz.net hbiclqc.com hbicpa.org hbidc.net hbifeng.com hbinitiate.com hbipdc.com hbisco.com hbisv.com hbitg.com hbjbjt.net hbjcgjg.com hbjcgy.com hbjcxy.com hbjdxt.com hbjgwl.com hbjhc.com hbjhkfcyy.com hbjhpx.com hbjia.net hbjinnong.com hbjinshenglan.com hbjir.com hbjjrb.com hbjk114.com hbjkjt.com hbjmcjjt.com hbjmyljs.com hbjob88.com hbjomay.com hbjpim.com hbjsinfo.com hbjsxg.com hbjtfwxh.com hbjtjsjt.com hbjttz.com hbjtwljtyxgs.com hbjtwlpt.com hbjtzb.com hbjubao.com hbjxad.com hbjxjy.org hbjxjyw.com hbjxym.com hbjy.net hbjyjmzg.com hbjzgw.com hbjzxh.com hbjzzx.com hbkggroup.com hbkgy.com hbkj-sic.com hbklsl.com hbkqw.com hbksw.com hbky.com hbkyby.com hbkzw.com hblbjg.com hblccy.com hblds.com hbldwx.com hblhfrp.com hblhnykj.com hbliti.com hblq.com hblszzyy.com hbltyh.com hbltzb.com hbltzx.com hblxxx.com hblynk.com hbm360.com hbmajiang.com hbmchina.com hbmes.com hbmingjie.com hbmmtt.com hbn68.com hbnews.net hbnewsoft.com hbneww.com hbnfxm.com hbnholdings.com hbnxb.net hbnyfzjt.com hbnz.net hbomick.com hbooker.com hboxs.com hbpangu.net hbpch.com hbpengxi.com hbpic5.com hbpictures.com hbppa.org hbpryy.com hbptzsbw.com hbpukang.com hbpvc.com hbpx.net hbqcxy.com hbqingteng.com hbqmys.com hbqndc.com hbqtgg.com hbqydz.com hbqyxy.com hbr-caijing.com hbrbmedia.com hbrc.com hbrchina.org hbrchinese.org hbrcxcl.com hbrd.net hbrdt.com hbrebond.com hbrfxh.com hbriso.com hbrmhospital.com hbrsks.co hbrsks.net hbrsksw.com hbruiao.com hbruicai.com hbrunfeng.com hbrunlin.com hbryzx.net hbrzkj.com hbs-nd.com hbscd.com hbsczx.com hbsczzxy.com hbsdenterprise.com hbseasky.com hbsfdx.com hbsfedu.com hbsfjtgs.com hbsgsq.com hbshanhe.com hbshengbangwl.com hbshgzx.com hbshichang.com hbshls.com hbshunda.com hbsia.org hbsjym.com hbsjzyxh.com hbskw.com hbslft.com hbslndx.com hbslxzx.com hbsmservice.com hbsmtxh.com hbsmwljt.com hbsql.com hbsrjt.com hbsrjyy.com hbssfw.com hbssttz.com hbsszx.com hbstars.com hbsti.com hbstoo.com hbsunlink.com hbswjt.com hbswkj.com hbswmyyxgs.com hbsxkyy.com hbsxly.com hbsxwljt.com hbsxzjw.com hbsygw.com hbsz120.com hbszbykj.com hbszfw.com hbszjsjt.com hbszlcc.com hbszsv.com hbsztv.com hbszxyjhyy.com hbszzk.com hbszzx.com hbtcmu.com hbtcw.com hbtea.com hbtengniu.com hbtjryp.com hbtlh.com hbtljg.com hbtmjt.com hbtobacco.com hbtqzx.com hbtvc.com hbtycp.com hbtycyjt.com hbtyxh.com hbun.net hbvtc.net hbwanhao.com hbwanrun.com hbweid.com hbwenchang.com hbwh.net hbwhcyw.com hbwhcyxh.com hbwhexpo.com hbwhjj.com hbwjs.com hbwljm.com hbwlykt.com hbwsrc.net hbwuxue.com hbwuye.com hbww.org hbxcw.com hbxdf.com hbxgzls.com hbxhfc.com hbxhxkj.com hbxinfadi.com hbxingchi.com hbxmcy.com hbxot.com hbxtzx.com hbxtzy.com hbxxy.com hbxyjob.com hbxytc.com hbyangyuan.com hbyczk.com hbydsg.com hbydsy.com hbyh0561.com hbyhfcyy.com hbyidu.com hbyisen.com hbyjfs.com hbylgov.com hbyljf.com hbylzx.com hbymfswz.com hbynet.net hbyouyunyouke.com hbyoyo.com hbyqtl.com hbysfhm.com hbyt56.com hbyuanhao.com hbyunxi.net hbyunyang.net hbyybwff.com hbyysw.com hbzaxh.com hbzbw.com hbzcpg.com hbzgjx.com hbzh.net hbzhan.com hbzhjxzz.com hbzhonghai.com hbzjjk.com hbzjrx.com hbzjzb.com hbzknet.com hbzkw.com hbzkzxw.com hbzm.cc hbzmw.com hbzncz.com hbzqzx.com hbzsb.com hbzst.com hbzszy.net hbztn.com hbzuojia.com hbzyjsjt.com hbzzzzw.com hc-byq.com hc-cdn.com hc-overseas.com hc-ph.com hc-software.com hc-sre.com hc-testing.com hc01.com hc121.com hc12306.com hc23.com hc360.com hc376.com hc39.com hc3yy.com hc6756.com hc79.com hc943.com hca258.com hcaj.com hcazb.com hcbbs.com hcbnjy.com hcbuy.com hcbyq.com hcc11.com hcccia.com hccenter.net hcciot.com hcclhealthcare.com hccoeutg.com hccpcba.com hcdamai.com hcdyhr.com hceia.com hcepay.com hcfac888.com hcfc168.com hcftyy.com hcgaokong.com hcgbhq.com hcglzj.com hcgroup.com hcgtravels.com hch518.com hchbblg.com hchbsb.com hchezhu.com hchik.com hchina.com hchlidc.com hchliot.com hchongren.com hcicloud.com hcinfo.tech hcj1952.com hcjike.com hcjt.cc hckg.com hckj.org hclonely.com hclouder.com hcmiraefund.com hcmofen.com hcnaimo.com hcpharm.com hcqixinhb.com hcqxbj.com hcrlm.com hcschengtou.com hcsd123.com hcsdhgjzx.com hcsemitek.com hcshangwu.com hcsilk.com hcsjddc.com hcsound.com hcswgx.com hcsyjt.com hct-test.com hctxf.org hcty.com hctzbj.com hcvac.com hcwebsite.com hcwh.ltd hcwhjd.com hcwiki.com hcwljy.com hcx123.com hcx99.com hcxcw.com hcxfjq.com hcxwdb.com hcxxy.com hcxy6.com hcyacg.com hcydit.com hcyea.com hcykt.com hcypzy.com hczc.com hczfgjj.com hczl.com hczm1.com hczq.com hczr.com hczs.com hczsbj.com hczshb.com hczxmr.com hczyw.com hczzw.com hd-english.com hd-english.net hd-mw.com hd-tvb.com hd-u.com hd.gg hd027.com hd123.com hd123.net hd12333.com hd199.com hd199.net hd2h.com hd3p.com hd88.cc hd8y.com hdabc.com hdanc.com hdanheng.com hdarea.club hdavchina.com hdb.com hdbaichuan.com hdbgjt.com hdbp.com hdbus.net hdbz.net hdcms.net hdcy123.com hdd-group.com hddata.net hddgood.com hddid.com hddlion.com hddznet.com hdeexpo.com hdeso.com hdfax.com hdfimg.com hdfybjy.com hdgetters.com hdh.im hdhjtz.com hdhosp.com hdhospital.com hdhui.com hditec.com hdj.me hdjad.com hdjingwei.com hdjt.net hdjwj.com hdjx.org hdjxpx.com hdkcsjxh.com hdks.net hdksjp.com hdkwa.com hdkylin.work hdl-watch.com hdlcdns.com hdlchina.com hdletv.com hdlogo.com hdlstage.com hdlsxh.com hdltest.com hdlzmdb.com hdmiaoc.com hdmnw.com hdmooncake.com hdmryy.com hdmtv168.com hdmv.org hdnd01.com hdnychina.com hdp88.com hdph.com hdpyqa.com hdpyqc.com hdpyqd.com hdpyqf.com hdqyf.club hdrcw.com hdsay.net hdschina.com hdschools.org hdsdyyy.com hdslb.com hdslb.net hdslb.org hdsmgw.com hdtgtm.com hdtonghe.com hdtyre.com hduofen.com hdurl.me hdw99.com hdwbcloud.com hdwbsaas.com hdwebpyqa.com hdwebpyqc.com hdwebpyqe.com hdwjc.com hdwtpay.com hdwzz.com hdxing.net hdxweb.com hdxxg.com hdxxw.com hdxynet.com hdyanke.com hdyouxi.com hdyu.com hdyujiu.com hdyxgame.com hdyxi.com hdyy95.com hdyzsw.com hdzbgs.com hdzc.com hdzc.net hdzcwlian.com hdzp.com hdzp.net hdzuoye.com hdzxyy.com he-edu.com he-ku.com he-one.com he17.com he1j.com he29.com he2d.com heacn.net head-way.com headconsultant.com header.cc heading123.com headingfilter.com headphoneclub.com headscm.com heag.com healforce.com healrna.com health-china.com health-foru.asia healthan.net healthbbs.net healthcareol.net healthcareyun.com healthcn.com healthgv.com healthjd.com healthr.com healthybaike.com healthych.com healthydigitallife.com healzentx.com heanyo.com hearfly.com hearstchina.com heart-game.com heartide.com heartinsti.com heartxin.com heating-sh.com heatingtrace.com heavenlywind.cc heavenonearthhealingalternatives.com heavly1.com hebangdianzi.com hebbank.com hebbc.org hebbr.com hebca.com hebcar.com hebecc.com hebeeb.com hebei.cm hebeieb.com hebeifanlin.com hebeifc.com hebeifeimeng.com hebeigwy.org hebeihazhi.com hebeihualang.com hebeijd.com hebeijia.com hebeijiaxin.com hebeilyxh.com hebeiminglan.com hebeimutian.com hebeinongzi.com hebeisaixin.com hebeishifei.com hebeishuangning.com hebeisia.com hebeitongtai.com hebeiwl.net hebeiwulian.com hebeiyouxi.com hebeizuqiu.net heben-eng.com hebetextile.com hebgcdy.com hebgsetc.com hebgtjt.com hebi99.com hebiia.org hebimalasong.com hebinhospital.com hebisf.com hebitv.com hebiw.com hebjxw.com hebjy.com hebkjs.com hebl.name hebmj.com hebmusic.com hebngc.com hebnx.com hebolaw.com hebooming.com hebotc.com hebpi.com hebpolicycube.com hebradio.com hebsg.net hebshanggu.com hebtig.com hebtv.com hebwlfdc.com hebxakj.com hebxyjt.com hebyjxh.com hebzd.com hebzhy.com hebzljx.com hec-al.com hec-changjiang.com hecaijing.com hecdn.com hecdn.net hechaji.com hechanghuyu.com hechangshipin.com hechangtech.com hechengeco.com hechiguotou.com hechijinxin.com hechuang.info hechuangxinxi.xyz hechuann.com heclife.com heclouds.com hecoe.com hecpharm.com hedaoapp.com hedaozi.com hedasudi.com hedaweb.com hedgehogbio.com hedgehogrock.com hedlaonga.com hedongli.com hedpump.com hedu.net heduibu.com heduismart.com hedysx.com heec.com heeeeeh.com heeeepin.com heemoney.com heenee.com heepay.com heerit.com hefagear.com hefei.cc hefeifc.com hefeilaws.com hefeimarathon.com heflc.com hefls.net hefunoodles.com hegii.com hegouvip.com hegsryjq.com hehagame.com hehang.net hehecam.com hehecamera.com hehejin.com hehesheng.com heheshouyou.com hehesy.com hehewan.com heheyx.com hehooo.com hehouse.com hehuapei.com hei.red heibai.net heibaicao.com heibaige.com heibailianmeng.com heibaimeng.com heibaixiaoyuan.com heibandongcha.com heibanwa.mobi heibaow.com heibaowuliu.com heibian.com heicha.com heicheng51.com heidaren.com heidiankeji.com heigaga.com heightindustry.com heiguang.com heiguang.net heiha.net heihei.com heiheiyuyin.com heihekeji.com heijiao.net heijiaovip.com heike07.com heilanhome.com heilei.com heilifun.com heilongjianggames.com heiluo.com heima010.com heima8.com heimabao.com heimac.net heimadao.com heimadata.com heimai666.com heimajijin.com heimalanshi.com heimaoseo.org heimaoseojishu.com heimaoshe.com heimaying.com heimeiai.com heimeng.net heimizhou.com heiniubao.com heiniufeiye.com heinote.com heinw.com heirenlei.com heisha.net heishao.net heishenhua.com heishou.org heistbeer.com heitao.com heitao2014.com heitaosan.com heitiane123.com heitu.com heitukeji.com heiwahospital.com heiwangke.net heixi.com heiyan.com heiyan.org heiyange.com heiyanimg.com heiying.cc heiyu.cc heiyu.space heiyunxitong.com heizhushoes.com hejia-china.com hejiang.com hejiangroup.com hejiantech.com hejichip.com hejicut.com hejin588.com hejujk.com hejun.com hejxf.com heketai.com hekouxin.com heku.org hel168.com helensbar.com heliang.cc helianhealth.com helianwap.com helichina.com heliforklift.com helight.info helijia.com helingqi.com helipay.com helishun.com helitzc.com heliuyan.com hello-fpga.com hello-inc.com hello1010.com hello123.com hellobanma.com hellobike.com hellobiye.com hellocq.com hellocq.net hellodive.com hellof1.com helloflask.com hellogame.net hellogithub.com hellogitlab.com helloglobal.com hellogroup.vip hellogslb.com hellohnb.com hellohuohu.com helloimg.com helloinstruments.com hellojava.com hellokid.com hellokidvip.com hellomeowlab.com hellomida.com hellonitrack.com hellopcb.com hellorf.com hellostreetcat.com hellotalk8.com hellotw.com hellotyping.com helloweba.com helloweba.net hellowebfont.com hellowgame.com helloworld.net helloxjn.com helloxkb.com helloyao.com helmicro.com helmtower.com helnon.com helo11.com helohub.com help-w.com helpmeng.com helpmepick.net helps.live helpson.com helpton.com helptousa.com helpweixin.com helunyun.com heluowenhua.net helywin.com hema.ren hema.wiki hemahuashi.com hemaish.com hemajs.com hemamax.com hemanc.com hemanzi.com hemaos.com hemaread.com hemaxiaofen.com hemayouxi.com hemayouxi.net hemayun.com hemayx.com hemetal.com hempelgroup.com hen360.com henai.com henaiwan.com henan100.com henanart.com henanbojin.com henance.com henanfucai.com henangames.com henaninfo.com henanjianling.com henanjiqiren.com henanjubao.com henanrc.com henansha.com henanshengtang.com henansyj.com henanxinjiang.com henanyikayi.com henanyixue.com henanzhida.com henanzhulongjx.com henanzsb.com henau.net henbt.com hencin.com hencoder.com hendera.com henduofang.com heng-f.com heng98.com hengan-instruments.com hengansl.com hengaodebj.com hengbao.com hengbaochuju.com hengbinzl.com hengbogroup.com hengchangda.com hengdafilm.com hengdafuji.com hengdawenbo.com hengdaxincai.com hengdayun.com hengdeegroup.com hengdian.com hengdianfilm.com hengdianworld.com hengdrive.com hengdulaw.com hengfang.com hengfasd.com hengfengtires.com hengfujz.com henggufood.com henghe-group.com henghe666.com henghengmao.com henghongjixie.com hengjiafish.net hengjianyy.com hengjiatouzi.com hengjiecdn.com hengjiu-pt.com hengjixiaofang.com hengkun.com hengli.com hengliguoji.com henglihotels.com hengqian.com hengqifeng.com hengqijy.com hengqikuaiji.com hengqinmarathon.com hengrui.com hengruisensor.com hengshan01.com hengshanpharm.com hengshengpark.com hengshuilaobaigan.net hengshuiyake.com hengtai-law.com hengtaiboyuan.com hengtiansoft.com hengtianyun.com hengtonggf.com hengtonggroup.com hengtonglog.com hengtongzhineng.com hengxiangtaji.com hengxinjinshu.com hengxinyongli.com hengxucapital.com hengxueedu.com hengyagongshui.com hengyan.com hengyankeji.com hengyemould.com hengyi.com hengyimining.com hengyishihua.com hengyoux.com hengyu.work hengyuansilk.com hengyuanzn.com hengyudata.com hengyuefund.com hengyulighting.com henha.com henhaoji.com henku.com henkuai.com henkung.com henlius.com henluoli.com henmimang.com henningchem.com henovcom.com henrayglass.com henri.ren hensctai.com hensgroup.com henzan.com henzanapp.com heodoraiu.com hepalink.com hepan.com hepan.org hepartshome.com hepatox.org hepingdao.net hepmall.com hepost.com hepu123.com hepurc.com hepuwang.com hepuweilai.com hepuxw.com heqingloong.com hercity.com hercules-logistics.com hercules-micro.com herdacdn.com herdar.com herdcloud.com herdpcdn.com herdsric.com here120.com here325.com herecdn.com heredlift.com herenit.com herllamo-med.com herllamo.com hermod1.com hero-geek.com hero.com herocoming.com heroesports.com herogame.com herohr.net heroic-ltd.com heroje.com heroone.com herosanctuary.com heroskate.com herostart.com heroworld.net herrel.com herrywatch.com herstime.com herta.space herton.net hertzhu.com heryipharma.com heshanghuitong.com heshdity.com heshecasa.com heshimilk.com heshui.com heshuyun.com heson10.com hesongwang.com hesppe.com hessianhealth.com hestudio.net heta.tech hetaigroup.net hetaixin.com hetao101.com hetaoa.com hetaoapis.com hetaobiancheng.com hetaodaxue.com hetaointernal.com hetaolin.com hetaousercontent.com hetaoxingqiu.com hetianlab.com hetianyu.cc hetongamp.com hetunzu.com hetusoft.com heu8.com heungkong.com heupxtct.work heuvan.com hewaner.com hewascreen.com heweather.com heweather.net hewebgl.com heweifurniture.com hewukeji.com hexaamc.com hexagonsemi.com hexchip.com hexdo.com hexgears.com hexi-electric.com hexian.ltd hexianbbs.com hexiangroup.com hexianrc.com hexiaoxiang.com hexicomtech.com hexie.cc hexieshaanxi.com hexilai.com hexin-puleather.com hexinchemical.com hexindai.com hexinli.org hexinwanjia.com hexiny.com hexinyu.com hexmeet.com hexsen.com hextower.com hexun.com hexun.com.tw hexuncaizhi.com hexuu.com heyang.cc heyang365.com heycan.com heycloudy.co heycode.com heycomrades.com heycross.com heycsm.com heydayinfo.com heygears.com heyi.com heyiguangye.com heyiguoyuan.com heyimiao.com heyingcn.com heyingedu.com heyinshiliu.com heyix.com heymeo.net heymeowfm.com heymore.com heyou51.com heyplus.com heyria.com heytap.com heytapcloud.com heytapcs.com heytapdownload.com heytapimage.com heytapmobi.com heytapugc.com heytea.com heythings-iot.com heytime.com heyuanstone.com heyuanxw.com heyuedi.com heyun100.com heyunnet.com heywhale.com heywoodsminiprogram.com heyyo.com hez70.com heze.cc hezebus.com hezegd.com hezejob.com hezejtjt.com hezelawyers.org hezepharm.com hezeribao.com hezeswjt.com hezhidongli.com hezhong-china.com hezhongyihua.com hezhouhuatong.com hezhoujcy.com hezi.com hezibook.com hezijia.com hezimi.com hezongyy.com hezuvip.com hf-alu.com hf-aw.com hf-iflysse.com hf0779.com hf10000.com hf12345.vip hf168.net hf365.com hf3owy4.sbs hf777.com hf960.com hfabiao.com hfairport.com hfanss.com hfbaogao.com hfbaozi.com hfbcjt.com hfbeta.com hfbtv.com hfbz.com hfcentury.com hfchosp.com hfchzyy120.com hfcsbc.com hfdaoyuan.com hfdsgs.com hfeec-tencentclb.cloud hfeec-tencentclb.com hfeec-tencentclb.net hfeec-tencentclb.work hffhq.com hffoil.com hffund.com hffy.com hfgcxx.com hfgdjt.com hfgip.com hfgjj.com hfgxbus.com hfhm.com hfhouse.com hfhuamei.com hfi-health.com hfish.net hfjnxh.com hfjscn.com hfjsj.com hfjtjt.com hfjxwz.com hfjzzsxh.com hfkeheng.com hfkenfan.com hfkjsd.com hfkktt.com hfksmdl.com hflbysm.com hfleda.net hflengku.com hflp88.com hflube.com hfly.net hflz.com hfmama.com hfmdzx.com hfmt.net hfmxs.com hfnuola.com hfoj.net hfplg.com hfpx.cc hfqgmagnet.com hfqinhang.com hfray.com hfrc.net hfrcbc.com hfrsggff.com hfsava.com hfshec.com hfsia.com hfsid.com hfspxh.com hfssw.com hfsszgcxh.com hfswcz.com hft-sz.com hftfund.com hfthink.com hftogo.com hftsoft.com hftx-jt.com hfw.cc hfx.net hfxczj.com hfyestar.com hfykd.com hfykt.com hfyouqi.com hfyt365.com hfyuqin.com hfyyhyxh.com hfyylcy.com hfzfzlw.com hfzhengxu.com hfzjxh.com hfzkgw.com hfzls.com hfzssw.com hg-automation.com hg-capacitor.com hg-daigou.com hg-valves.com hg1218.com hg12333.com hg5177.com hg568.com hg8880.org hg9895.com hga994.com hgaas.com hgame.com hgcapsule.com hgcha.com hgchess.com hgcitech.com hgepc.com hgfdrf.com hghngroup.com hghsd.com hgicreate.com hgimage.com hgitv.com hgj.com hgj668.com hgjart.com hgjl.net hgjob.com hgk-group.com hglaser.com hgmai.com hgmri.com hgnc.net hgo06070uyi.com hgo06071uyi.com hgo06080uyi.com hgo06081uyi.com hgo06090uyi.com hgo06091uyi.com hgo06101uyi.com hgo06111uyi.com hgobox.com hgoqi.com hgptech.com hgqizhong.com hgqrx.com hgs001.com hgscn.com hgsfy.com hgsj.com hgskjc.com hgskyray.com hgsyiyuan.com hgszyyy.com hgto.cc hgty5533.com hgty663.com hgty7598.com hguduo.com hgvalve.com hgveejt270.vip hgxxgz.com hgxxgz.net hgyrnk.com hgyys.com hgzk.com hgzkb.com hgzrt.com hgzxgz.com hgzxgz.net hgzxzc.com hgzyxy.com hh-gltd.com hh-honghu.com hh-jt.com hh-medic.com hh-pcbs.com hh-pmp.com hh-post.com hh.global hh010.com hh04050aoik.com hh6666.com hh88hh.com hhaqpx.com hhax.org hhbraider.com hhbwff.com hhchampion.com hhchsw.com hhcjjy.com hhclby.com hhcn.com hhcx-led.com hhcyt.com hhczy.com hhdglm.com hhdjc.com hhdna.net hhfdjz.com hhfxw.com hhglys.com hhh.tm hhh233.net hhh800.com hhh885.com hhhg258.com hhhji.com hhhkpb.com hhhoo.com hhhstz.com hhhtfdj.com hhhtfin.com hhhtscf.com hhhtyg.com hhitgroup.com hhjctest.com hhjgqh.com hhjsyxh.com hhjtcn.com hhju.com hhk365.com hhkaobo.com hhkin.com hhking.com hhkmls.com hhl1916.com hhlwchem.com hhmage.com hhmajiang.com hhmanhua.net hhnykg.com hhnynews.com hho-hawater.com hhojs.com hholy.com hhozw.com hhpcbs.com hhpj.net hhpmzp.com hhqs.xyz hhrcard.com hhrcw.com hhrdc.com hhrsks.com hhsilk.com hhsoftinfo.com hhsw6688hxcdn.com hhtmm.com hhtravel.com hhtvc.com hhup.com hhuubb.com hhuubb.net hhvv.com hhwenjian.com hhwindowmesh.com hhwl88.com hhxfqc.com hhxnycl.com hhxnyqc.com hhy0.com hhycdk.com hhygame.com hhygames.com hhytm.com hhyungu.com hhyy.com hhyy100.com hhzls.com hhzm88.com hhzyjng.com hi-54.com hi-books.com hi-cloud.net hi-davids.com hi-gtd.com hi-lead.com hi-linux.com hi-mantech.com hi-roy.com hi-sm.com hi-spider.com hi-techspring.com hi-trend.com hi0755.net hi138.com hi169.net hi1718.com hi2000.com hi2000.net hi772.com hi9377.com hiaiabc.com hiao.com hiapk.com hiascend.com hiascend.net hiavr.com hibace.com hibace.net hibbw.net hibea.com hibelarus.com hibgm.com hibixin.com hibogroup.com hibor.net hibor.org hibt.net hibtc.org hibuzz.net hiby.com hibymusic.com hic.cloud hicamelia.com hicane.com hiccupx.xyz hicdma.com hiceon.com hichain.com hicheng.net hichina.com hichina.net hichipharm.com hichips.com hicitech.com hiclc.com hicling.com hicloud.com hicnhm.com hicomp.com hiconey.com hiconics-zn.com hiconics.com hicoo.net hicosmo.com hicp.net hicsharp.com hicss.net hiczp.com hidery.com hidesigncloud.com hidist.com hiditie.com hidna.net hidreamai.com hidva.com hiechangzhou.com hiecheimaetu.com hiencode.com hienshi.com hiersun-ido.com hiesquire.com hifangjia.com hifar.net hifengli.com hifi168.com hificat.com hifidig.com hifidiy.net hifime.net hifiok.com hifishuo.com hifiveai.com hifkw.com hifkw.xin hifleet.com hifly.mobi hifly.tv hifpga.com hifreud.com hifuntv.com hifuture.com higame123.com higer.com higeshi.com higgmm.net high-genius.com high20-playback.com high21-playback.com high22-playback.com high24-playback.com high25-playback.com highdigitizing.com highfaststudio.com highfel.com highfundcorp.com highgo.com highhope.com highleveltrans.com highlightoptics.com highlionceramic.com highlm.com highly.cc highsharp.com highstar.com hightac.com hightopo.com highwayguitar.com higoldgroup.net higon.com higoshipping.com higrand.com higuchi.xyz higy.org hiheartgo.com hihell.com hihocoder.com hihonor.com hihonorcdn.com hihonorcloud.com hihope.org hii-go.com hiido.com hiido.net hiigame.net hiiibrand.com hiiyun.com hijackorg.net hijiangxi.com hijiaoshi.com hijin.vip hijoys.com hik-cloud.com hik-express.com hik-park.com hikailink.com hikari-ch.com hikauto.com hikcreate.com hikemobile.com hikerfans.com hikihj.com hikinginternational.com hikiot.com hiklife.com hikmall.com hikoon.com hikops.com hikparking.com hikrobotics.com hiksemitech.com hikstor.com hikstorage.com hikunpeng.com hikunpeng.net hikvision-jl.com hikvision.com hikvisionauto.com hikyun.com hilantu.com hilau.com hilbcd.com hile-bio.com hileap.com hilemic.com hilfv.com hiliad.com hiliwi.com hillelmilwaukee.org hilllei.com hillstonenet.com hillyton.com hilo8.com hiloletswin.com hilonggroup.com hiloong.com hilqq.com hiluluke.com hima.auto himado.com himaker.com himalaya.cool himanufacture.com himarking.com himawari-japan.com himehear.com himeidian.com himengyou.com himetoo.com himile.com himin.com himmpat.com himoral.com himorale.com himorfei.com hin.cool hinabian.com hinabiotech.com hinavi.net hinocn.com hinotravel.com hinpy.com hinsyeow.org hintsnet.com hiofd.com hiooq0417.com hiosu.com hioug.com hiparking.com hipcam.net hipcapi.com hiphi.com hiphop8.com hiphotonics.com hipiao.com hipole.com hippoanimation.com hippter.com hipu.com hiputian.com hiqiyu.com hirain.com hiram1009-dw.org hirata-cn.com hirata-hts.com hirede.com hiregex.com hireye.com hirige.com hirisemed.com hirisun.com hiroop.com hirosspac.com hirossz.com hirtk.com hirunsport.com his.sh hisaka-china.com hisavana.com hiscene.com hisdnoc.com hisense-home.com hisense-plaza.com hisense-syxs.com hisense.com hisensehitachi.com hisensekf.com hisern.com hishouhui.com hisilicon.com hisiphp.com hislota.com hismarttv.com hisoar.com hisoft.com hisofts.com hisonracking.com historychina.net hisugar.com hisunplas.com hisupplier.com hit180.com hitachi-helc.com hitalk.com hitalkers.com hitao.com hitbot.cc hitctf.com hite.me hitechfrp.com hiteksoft.com hitergas.com hitevision-solution.com hitevision-solutions.com hitevision.com hitgk.com hitnology.com hitoor.com hitouch.com hitoupiao.com hitour2005.com hitozumi.com hitpound.com hitqs.com hitrip.info hitsame.com hitui.com hitv.com hiusers.com hiveshared.com hivi.com hivictor.net hiwafer.com hiwaysemi.com hiwayslaw.com hiwbb.com hiwechats.com hiweixiu.com hiwelcom.com hiwifi.com hiwiyi.com hiwms.com hiworld.com hiwuhuan.com hixgo.com hixianchang.com hixiaoe.com hixuexiao.net hiyd.com hiyongche.com hiyouib.com hiyouqu.com hiyun.site hiyun.tv hizaoan.com hizh.net hizhecheng.com hizj.net hizom.com hizyw.com hizyy.com hj-bits.com hj-ienergy.com hj-mail.com hj-pack.com hj01.com hj1951.com hj217.com hj44103a1.shop hjapi.com hjasiancenter.com hjbbs.com hjbxw.com hjcadc.com hjchee.com hjcjifen.com hjckjt.com hjclass.com hjcm.net hjcpl.com hjd111.shop hjd123.com hjdhdduekcdie.com hjdict.com hjdns.com hjdns.net hjdshop.cc hjdzn.com hjenglish.com hjg365.com hjgcd.com hjgrp.com hjgtjt.com hjhrcloud.com hjido.com hjiesuan.com hjinternationalhotel.com hjiuye.com hjjg.com hjjh.com hjjt.net hjjunhua.com hjkhjkl.com hjkklj.com hjksjx.com hjlrw.com hjlw.com hjmarathon.com hjmtzb.com hjpcc.com hjpp.net hjr-exchange.com hjren.com hjsj.com hjtag.com hjunkel.com hjw169.com hjw68.com hjwsky.com hjwsxzz.com hjwxcps.com hjxcl.com hjxhg.com hjxry.com hjxsjx.com hjxtv.com hjy1314.com hjyanxue.com hjyc.com hjygame.com hjyl.org hjyyjt.com hjz4.com hjz518.com hjzlg.com hjzzcl.com hk-island.hk hk-jztzjt.com hk-pwc.com hk-sz.com hk-tencentclb.cloud hk-tencentclb.com hk-tencentclb.net hk-tencentclb.work hk-titan.com hk-vstart.com hk-xin.com hk.uy hk0523.com hk603.hk hk8668.com hk9.com hkaco.com hkaima.com hkance.com hkance.xyz hkanews.com hkaohua.com hkbchina.com hkca.club hkcd.com hkcgart.com hkchat.app hkcna.hk hkcoalition.com hkcpr.com hkctgbus.com hkcts.com hkctshotels.com hkctsmembers.com hkcwdc.com hkdfc.com hkdfgroup.com hkdqgroup.com hkdzxs.com hkeig.com hkexpressworld.com hkfc.hk hkfcchina.com hkfdi.com hkfe.hk hkfljt.com hkgcloudcs.com hkgcr.com hkgj07.com hkgjcz.com hkgol.com hkgsw.com hkgtedu.com hkgwater.com hkhdsyxx.com hkinsu.com hkinur.com hkjinxin.com hkjnn.com hkjsrent.com hkklock.com hkkuaiyixiu.com hklego.com hklmoto.com hklmxcx.com hklsqc.com hkm168.com hkmedtime.com hkmeinian.com hkmipo.com hkmjd.com hknbc.com hknet-inc.com hkoke.com hkpep.com hkproperty.com hkqbh.com hkroyal.com hkrsoft.com hksc888.com hkscxh.com hkslg520.com hkstv.tv hkt4.com hktheone.com hktidg.com hku-szh.org hkvisen.com hkwb.net hkwzig.com hkxbjt.com hkxen.com hkxtech.org hky360.com hkyukai.vip hkyxfgs.com hkyykq.com hkzlcm.com hl-bandao.com hl-brushes.com hl-epay.com hl-hengsheng.com hl95.com hl95001.com hlapi.com hlashop.com hlb2020.com hlbcks.com hlbe365.com hlbeixiu.com hlbeixiu.net hlbf.net hlblz.com hlbn.cc hlbryy.com hlcdn.cc hlchsw.com hlcm.net hlcode.net hld558.com hldbtv.com hldedu.com hldfcom.com hldgajjzd.com hldgp.com hldhouse.com hldhuanbao.com hldjob.com hldjz8.com hldmzg.com hldnews.com hldszxyy.com hlduanjian.com hledu.net hlej.com hlekk.org hletong.com hlgad.com hlgcj.com hlgdata.com hlgnet.com hlgnet.net hlhfjt.com hlhjapp.com hlhmf.com hlhqdj.com hlhs.cc hlhyc.com hlj10031ip.com hljcqjy.com hljdata.net hljgvc.com hljgwy.net hljgzkj.com hljhgckj.com hljiasen.com hljjjb.com hljjkfp.com hljjytkj.com hljpm.com hljpost.com hljradio.com hljrcc.com hljsdm.com hljszjxhw.com hljtchina.com hljtcm.com hljtv.com hljtx.com hljucm.net hljxgs.com hljyestar.com hljyqnj.com hljyushi.com hljzc.net hljzl.icu hlkd.pro hlkkwl.com hlkncse.com hlktech.com hlkznsb.com hllinks.com hllives.com hlmmold.com hlnhw.com hlnmg.com hlnpic.com hlnpm.com hlo-trade.com hloong.com hlqiaojia.com hlqxj.com hlread.com hlsdq.com hlsimu.com hlstlyy.com hltmsp.com hltx.net hlupr.com hlvitamin.com hlw1588.com hlwarp.com hlwidc.com hlwjnm.com hlwwhy.com hlxky.com hlxstipark.com hlxsykd.com hlxsz.com hlxy.com hly.com hlybar.com hlyds.com hlyiq.com hlytec.com hlyy8.com hlyykp.com hlzaojia.com hlzq.com hlzqgs.com hlzzkj.com hm-3223.net hm-optics.com hm025.com hm120.com hm152n.com hm163.net hm16888.net hm169.com hm588.com hm5988.com hmadgz.com hmarathon.com hmbzfjt.com hmchina.com hmcl.net hmdx.net hmedu.com hmeili.com hmf-china.com hmfxw.com hmgbtv.com hmgj.com hmgreat.com hminvestment.com hmj666.com hmjblog.com hmjc.org hmkp.org hmlan.com hmlcar.com hmltec.com hmly666.cc hmmachine.com hmmryk.com hmnst.com hmoe.link hmplay.com hmqg.com hmqjsb.com hmrczp.com hmreuj.com hmrsrc.com hmsemi.com hmszkj.com hmtgo.com hmting.com hmtnew.com hmtoday.com hmtrhf.com hmus.net hmwdj.com hmwzjs.com hmx-led.com hmxixie.com hmxw.com hmxx.net hmyzs.com hmz.com hmz8.com hmzhtc.cc hmzhtc.com hmzixin.com hmzjzx.com hmzs.net hmzx163.com hn-binglang.com hn-cbec.com hn-hwqjxh.com hn-medical.com hn-xqlhw.com hn0746.com hn165.com hn96520.com hn9mu.com hnacargo.com hnacgs.com hnaec.com hnaec.org hnaee.com hnafxh.com hnagroup.com hnagroup.net hnainfrastructure.com hnair.com hnair.net hnaiya.com hnamdi.com hnangel.com hnanqi.com hnapay.com hnasatc.com hnaues.com hnbaili.net hnbemc.com hnbidding.com hnbits.com hnblc.com hnbljy.com hnblly.com hnbntv.com hnbrush.com hnbsq.com hnbtcy.com hnccpit.org hnceg.com hncfa.com hncgkgjt.com hnchaosu.com hnchemtech.com hnchuangj.net hnchuangxiangkj.com hncj.com hncloud.com hncmsx.com hncnedu.com hncost.com hncourt.org hncpu.com hncreate.com hncsart.com hncsmtr.com hncsvod.com hnct56.com hnctw.com hncu.net hncwc.com hncxwater.com hncytxly.com hncyzx.com hndbsp.com hndca.com hndcyg.com hndec.com hndfbg.com hndfsrmyy.com hndgxh.com hndhsyjt.com hndlhx.com hndlks.com hndmtjc.com hndnews.com hndpf.org hndpx.com hnds88.com hndscg.com hndsyy.com hndt.com hndxzte.com hndybus.com hndysx.com hndz413.com hndzxh.com hnechz.com hnedition.com hnedutv.com hnerkang.com hnetn.com hnetyy.net hnfa.org hnfapiao.com hnfcis.com hnfcjr.com hnfck.com hnfjz.com hnfles.com hnfudu.com hnfyqmj.com hnfysg.com hngajs.com hngangjiegou.com hngbjy.com hngdkg.com hngh.org hnghzl.com hngjj.net hngjx.com hngks.com hngoldcorp.com hngpmall.com hngqjc.com hngs.net hngscloud.com hngsetc.com hngtrust.com hngwg.com hngwkj.net hngwmt.com hngwy.org hngwzk.com hngx.net hngyms.com hnh.cc hnhaofang.com hnhbyxdq.com hnhcrn.com hnhdxd.com hnhflqgc.com hnhho.com hnhj.net hnhjjx.com hnhlpp.com hnhnled.com hnhp.com hnhsjt.com hnht56.com hnhtdg.com hnhw.com hnhwly.com hnhxin.com hnhxs.com hnhxxk.com hnhyfm.com hnhylx.com hnhyrc.com hnhyt.com hniec.org hniic.com hnijunhai.com hninsure.com hnisca.org hniso.net hnisvc.com hnitedu.org hnjbwh.com hnjcly.com hnjg.com hnjiabao.com hnjing.com hnjing.net hnjinmaizi.com hnjkjn.com hnjkw.net hnjme.com hnjmsk.com hnjshzy.com hnjsrcw.com hnjtcl.com hnjttz.com hnjudarhr.com hnjuhuo.com hnjyyz.com hnjzy.org hnkcjt.com hnks.com hnksgf.com hnktgame.com hnktzz.com hnkxy.com hnkygas.com hnkzy.com hnlantian.com hnlat.com hnlawyer.org hnlbdl.com hnleisu.com hnlens.com hnliangku.com hnlipu.com hnlshm.com hnltcw.com hnlxq.com hnlzhd.com hnlzw.net hnmangshan.com hnmcymy.com hnmdtv.com hnmgjr.com hnming.com hnmjyy.com hnmks.com hnmlqianpan.com hnmqtt.com hnmrffm888.com hnmsg.com hnmsw.com hnmudi.com hnmuseum.com hnmyjt.com hnmzmy.com hnnanshang.com hnnbwdiaosu.com hnnews.cc hnnhyy.com hnninglian.com hnnkyy.com hnnx.com hnnxs.com hnnyrzzl.com hnnzwhyy.com hnoak.com hnoceanrace.com hnoexpo.com hnol.net hnoscar.com hnpdig.com hnpfw.com hnpic.com hnpm.cc hnpolice.com hnpta.com hnptschool.net hnpwholesale.com.au hnqczy.com hnqfseed.com hnqinshi.com hnqlhj.com hnqljj.com hnqljt.com hnqnw.com hnquxing.com hnquyou.com hnqz.net hnradio.com hnrcjl.com hnrcjob.com hnrcsc.com hnrcsc.net hnrczpw.com hnredcross.com hnrich.net hnrmb.com hnrmtjg.com hnrmzy.com hnrpc.com hnrrco.com hnrsks.com hnrszhjc.com hnryly.com hns4j.com hns5j.com hnsbxl.com hnsd2fz.com hnsdfz.org hnsdzjy.com hnsdzsrmyy.com hnsfdc.com hnsfjy.net hnsggzy.com hnsghsljt.com hnsgkb.com hnshengben.com hnshqfz.com hnshuntian.com hnshyzx.com hnsiia.com hnsilane.com hnsite.cc hnsiwei.com hnsjgroup.com hnsjlh.com hnsjrd.com hnsktc.com hnskxy.com hnsky.net hnslsdxy.com hnslshyxh.com hnslxh.com hnslytz.com hnsnnews.com hnsoftedu.com hnsong.net hnsqtg.com hnsrmyy.com hnsrmyy.net hnssjn.com hnssyxx.com hnst.org hnstandards.com hnster.com hnstguolu.net hnstjsjt.com hnswljt.com hnswsjy.com hnswxy.com hnsyda.com hnsygroup.com hnsyhj.com hnsyhm.com hnsyu.net hnsyyq.com hnsyzls.com hnsyzxyy.com hnszn.com hnszyxy.com hntba.com hntbpm.com hntchq.com hntcm.com hntcmc.net hntele.com hnthrq.com hntiannuo.net hntianyue.com hntic.com hnticai.com hntican.com hntkg1.com hntky.com hntlxh.com hntncdn.com hntobacco.com hntqb.com hntv.tv hntxcd.com hntxxy.com hntzyy.com hnubbs.com hnucc.com hnukai.com hnwanglong.com hnwbxx.com hnwca.com hnwcl.com hnwczx.com hnwd.com hnwdhk.com hnwhg.org hnwhjy.com hnwisecom.com hnwlcm.com hnwlxh.com hnwlxh.net hnwlycg.com hnwsbz.com hnwtqx.com hnwwsjzx.com hnwyxx.com hnwz8.com hnwzinfo.com hnxdf.com hnxfpfb.com hnxggas.com hnxhdn.com hnxhnews.com hnxhyl.com hnxingda.com hnxljkj.com hnxmht.com hnxtkg.com hnxttv.com hnxunch.com hnxuntang.com hnxxc.com hnxxt.net hnxxyz.com hnxzctec.com hnyanglao.com hnyaoshan.com hnyaosi.com hnydf.net hnydgl.com hnyesf.com hnyfkj.com hnyichang.com hnyingfang.com hnyinhan.com hnyixiao.com hnysfww.com hnytgt.com hnyuanhong.com hnyuanyou.com hnyuedu.com hnyunji.com hnyunsutong.com hnyunzhiyi.com hnyuyuhui.com hnyydg.com hnyygroup.com hnyyws.com hnyyxj.com hnyyyfsyy.com hnyyyz.com hnyzfwlkj.com hnyzzy.com hnzdjsj.com hnzfcgxh.com hnzfgjj.com hnzhangkun.com hnzhaobiao.com hnzhijiang.com hnzhongzhuan.com hnzhouyi.com hnzhy.com hnzjgdkj.com hnzjip.com hnzjj.com hnzjyl.com hnzkclouds.com hnzkhbsb.com hnzlyy.com hnzm.vip hnzoc.com hnzose.com hnzqw.com hnzrjy.com hnzrsc.com hnzsbw.com hnzsxh.com hnztb.org hnztdq.com hnztfs.com hnztqzjx.com hnzxyy.com hnzycfc.com hnzyfs.com hnzyfy.com hnzywh.xyz hnzyxckj.com hnzyydx.com hnzyzx.com hnzzjob.com hnzzlh.com hnzzms.com hnzzrc.com hoau.net hobalab.com hobby-eagle.net hobbyboss.com hobosgroup.com hocheymed.com hochitech.com hocode.com hocodo.com hodgen-china.com hodiasflavor.com hodo170.com hodoop.com hoehub.com hofcc.com hogacn.com hogasky.com hogesoft.com hoghu.com hogon17.com hoho123.com hoho666.com hohode.com hoilon.com hoing.net hoisen.com hojonn.com hok5v5.com hokai.com hokori.online hokparts.com hold168.com holder-pharm.com holdhr.com holdsteel.com holdtwo.com holichip.com holike.com holiland.com holine.com holkx.com holleykingkong.com hollischuang.com hollwingroup.com hollycrm.com hollysource.com hollysys.com hollyuc.com hollywant.com holmesbio.com holmesian.org holoalpha.com holoremax.com holsauto.com holteksupport.com holyfunny.com holymalls.com holyxiongan.com home0311.com home0538.com home0668.com home133.com home178.com home898.com homearch.com homearch.shop homearch.store homearch.vip homeartschina.com homebaseradiators.com homebehind.com homecdn.com homed.me homedgroup.com homedo.com homeindus.com homeinframes.com homeinmists.com homeinns.com homeintour.com homekeji.com homeking365.com homekingcdn.com homekoo.com homekoocdn.com homelandhotel.com homelandol.com homesir110.com homestyler.com hometex114.com hometexjoin.com hometexnet.com hometol.com homey-household.com homeyao.com homhow.com hommk.com homolo.com homolo.net homsoboard.com homsuncap.com homylogistics.com homyu.com honaenergy.com honbro.com honchmedia.com honco88.com honda-sundiro.com honder.com hondugroup.com honestmc.com honestread.com honesty-environ.com honf.net hong-lawfirm.com hong-shun.com hongbao.com hongbao.sh hongbao.show hongbaoli.com hongbeibang.com hongbeicn.com hongbizi.org hongbo-group.com hongbo-sh.com hongbo100.com hongboluo.com hongcesys.com hongchangpawn.com hongchisw.com hongchuangholding.com hongda-steeltube.com hongdaishu.com hongdamach.com hongdatec.com hongdefund.com hongdian.com hongdianfund.com hongdongpumps.com hongdou.com hongdoufm.com hongdoulive.com hongen.com hongfasi.net hongfengye.com hongfuloi.com hongganshebei.net hongguogame.com hongguoyouxi.com honghaibengye.com honghaish.com honghe-tech.com hongheiku.com honghu-muffler.com honghuajz.com honghuotai.com honghusaas.com honghusoft.com hongjia138.com hongjiang.info hongjibp.com hongjiejia.com hongjigroupsz.com hongjin2.com hongjing-wh.com hongjing.com hongjing3.com hongjingedu.com hongjinleather.com hongkang-life.com hongkegd.com hongkeyun.com hongkongairlines.com hongkonganran.com hongkongmeixie.com hongku.com hongkun-tech.com hongkunjinfu.com honglan123.com honglans.com honglimfg.com honglimingbiao.com honglipai.net honglumedia.com hongm.com hongmaoshiye.com hongmeiti.com hongmeiti.net hongmen.cc hongmen.com hongmingbus.com hongmo.xyz hongmoka.com hongmu.com hongniang.com hongniuzyimage.com hongpai.com hongpig.com hongqi.tv hongqiangmjg.com hongqiaochina.com hongqipharma.com hongqipress.com hongrenyiyuan.com hongrida.com hongrinongye.com hongrizi.com hongru.com hongruihuanjing.com hongruike.com hongsanban.com hongsat.com hongsegs.com hongsejiqing.com hongsenlin.com hongshan.com hongshang-led.com hongsheng-group.com hongsheng.shop hongshi88.com hongshigroup.com hongshipaint.com hongshizi.org hongshn.xyz hongshu.com hongshunet.com hongshunth.com hongshuxiao.com hongsong.club hongsong.info hongsungifts.com hongta.com hongtaijixie.com hongtair.com hongtaiscp.com hongtaiwy.com hongtastock.com hongtelecom.com hongtong588.com hongtongtube.com hongttel.com hongtu.net hongtu56.com hongtucad.com hongtunetwork.com hongvv.com hongwenfeh.com hongwu.com hongwuhuan.com hongxiangzaixian.com hongxiaolong.com hongxingdl.com hongxingdl.love hongxinglin.com hongxingshangye.com hongxingzhonggong.com hongxingzn.com hongxiu.cc hongxiu.com hongxiu158.com hongyan-e.com hongyan.info hongyangsoft.com hongyangxiezi.com hongyanhr.com hongyanjin.com hongyanliren.com hongyans.com hongyantruck.com hongyaomall.com hongyawang.com hongyejixie.com hongyewuyang.com hongyi5.com hongyikun.com hongyimarine.com hongyirong.com hongyu-qi.com hongyuanpharm.com hongyuanqh.com hongyue.com hongyugroup.com hongyugz.com hongyumedical.com hongyunduo.com hongyuntx.com hongyunvren.com hongyuzps.com hongze.net hongze365.com hongzerc.com hongzetai.com hongzhengchem.com hongzhentextile.com hongzhigongzuowang.com hongzhoukan.com hongzhuangyuan.com hongzhuojituan.com honhan.ltd honkaiimpact3.com honkaistarrail.com honkonlaser.com honlyu.com honor.com honorfair.com honorfile.com honorofkings.com honpc.com honpery.com honsea.com honson-china.com honsonch.com honstarmemory.com honsuntec.com honyanwl.com honycapital.com honyfunds.com honyone.com honyuan.net hooan.net hoodinn.com hoodong.com hooenergy.com hooh5.com hookan.com hoolai.com hoolaigames.com hoolee8.com hoolinks.com hoolo.tv hoonup.com hoop-archi.com hoopchina.com hoopugames.net hoosho.com hooshun.com hoosuntec.com hooya.hk hooyagroup.com hooyoo.com hope-bridge.com hope-m.com hopebank.com hopebeauty.com hopebiol.com hopebook.net hopechart.com hopecool.com hopeda.com hopegoocdn.com hopehook.com hopemedinc.com hopenoah.com hoperun.com hopes-tech.com hopetrip.com.hk hopexr.com hophingfood.com hopoot.com hopsontong.com horace-liu.com horain.net horan.cc horchips.com hori-gz.com hori3d.com horibaprecision.com horigames.com horion.com horionsw.com horizon-china.com horizon.ai horizon.auto horizon.cc horizonfuelcell.com horizonlawyers.com horizonrcg.com horizonsanya.com horju.com horn-yacht.com hornetcorn.com horosama.com horou.com horphoto.com horsebrowser.com horsechinaone.com horti-expo2019.com hortor-comic.com hortor.net hortor002.com hortor005.com hortor020.com hortorgames.com horwathhtl-cn.com hosane.com hoscogroup.com hosgs.com hoshinesilicon.com hoshiroko.com hosjoy.com hoslen-sh.com hosn168.com hosno7.com hosonglass.com hosory.com hosowin.com hospit.net hospital-cqjs.com hospital-cqmu.com hospital2.com hospitalkg.com hospitalshy.com hospitalstar.com hospite.com host263.com host888.net hostacc.net hostacc1.com hostacc2.com hostadm.net hostbbs.net hostbuf.com hostdie.com hostgw.net hostidc.net hostkvm.com hostloc.me hostmonit.com hostoexp.com hostxen.com hot-test.org hot0755.com hotalk.com hotata.com hotborn.com hotchenghong.com hotcoin.com hotdb.com hoteamsoft.com hoteastday.com hotel-noir-film.com hotel-ochsen-hardheim.com hotelbaijin.com hotelcis.com hotelgg.com hoteljianguo.com hotelpanpacific.com hotelsjianguo.com hotelvi.com hotelyunos.com hotent.com hotent.xyz hotgamehl.com hotgopark.com hotiis.com hotkey123.com hotkidclub.com hotking.com hotlcd.com hotlinegames-jp.net hotnewx.com hotone.com hotoneaudio.com hotoos.com hotpotstq.com hotpub.com hotread.com hotsales.net hotsnow.club hotsnow.org hotsoonapp.com hotsoonapp.net hotsoonvideo.com hotsoonvideo.net hotsoonzb.com hotsoonzb.net hotssp.com hotstoday.com hottechsemi.com hottui.com hotwatchsreplica.com hotwind.net hotwindbox.com hotwon.com hotxf.com hotyihao.com hou5.com houcaller.com houdao.com houdao.net houdask.com houdewl.com houdy.com houfaka.com houfangyiyao.com houge.com houhoucn.com houjiji.com houjt.com houkai.com houkuanshop.com houlangsports.com houmoai.com houngfuh.com houniaohao.com houniaotrip.com houniaoyc.com houpukeji.com houqigo.com houqinbao.com houqun.net houquner.com hourt-cert.com hourui-arch.net house086.com house178.com house365.com house5.net house510.com house86.com houseimg.com houseoftantra.org houshaoan.com housoo.com houwenfei.com houwuedu.com houxue.com houyicaiji.com houyuantuan.com houzhibo.com houzhiwang.com houzi8.com hovfree.com howbuy.com howeipharm.com howelllighting.com howellsto.com howjoin.com howlapm.com howmay.com howsci.com howtoing.com howxm.com howyouinternational.com howzhi.com hoxing.com hoxue.com hoyakeji.com hoyatod.com hoyi-tech.com hoyibox.xyz hoyip.com hoyo.link hoyoverse.com hozest.com hozin.com hozonauto.com hp-marathon.com hp.com hp123.com hp888.com hpbgb.com hpblog.net hpc.cloud hpcang.com hpccake.com hpccube.com hpculturegroup.com hpeft.com hpepea.com hpgamestream.com hpglw.com hpgzf.com hph123.com hphwa.com hpichina.org hpicorp.net hpigc.com hpjd.com hplyy.com hpmicro.com hpnfjx.com hpoi.net hprt.com hprx.com hps-sh.com hpstore-china.com hpstore.cc hptea.com hpv112.com hpwin.com hpwjs.com hpwu.com hpwxc.com hpyiqi.com hpyk.com hpzhatu.com hq-mart.com hq-minerals.com hq0564.com hq114.net hq88.com hqbd.com hqbnb.com hqbuy.com hqbuycdn.com hqc-china.com hqcanyin.com hqcg1984.com hqchip.com hqcr.com hqdlsn.com hqdoc.com hqdoor.com hqengroup.com hqepay.com hqew.com hqew.net hqewimg.com hqfastner.com hqgjzz.com hqgq.com hqhb.com hqhl.net hqhop.com hqhospital.com hqhot.com hqhtfl.com hqidi.com hqis.org hqiye.com hqjcjj.com hqjy.com hqls.com hqnqz.com hqpcb.com hqps.com hqqt.com hqresearch.org hqrvs.com hqsec.com hqsgw.com hqshuaimi.com hqsmartcloud.com hqsoft.cc hqswuye.com hqthw.com hqtong.com hqts.com hqubbs.com hquu.net hqvchina.com hqwhw.com hqwx.com hqxlad.com hqyc.com hqygyg.com hqyj.com hqyjng.com hqyjsuccess.com hqyl.com hqys.net hqyt.net hqytgyh.com hqyun.com hqyxjy.com hqyzx.com hqzhou.com hqzxecd.asia hr-channel.com hr-mp.com hr-self.com hr002.com hr025.com hr0571.com hr0660.com hr0715.com hr0752.com hr0753.com hr0766.com hr0915.com hr1000.com hr10000.com hr135.com hr2002.com hr2003.com hr2trainer.com hr33.com hr369.com hr3ds.com hr448.com hr510.com hr5156.com hr558.net hr668.com hr730.com hr763.com hr78.net hr9000.com hr987.com hrayw.com hrb-dg.com hrbanlv.com hrbaodian.com hrbar.com hrbbcf.com hrbbleasing.com hrbeduy.com hrbesd.com hrbj.net hrbjianchewang.com hrbjishunbanjia.com hrbjunxin.com hrbmama.com hrbmilan.com hrbpattern.com hrbpolarland.com hrbpt.com hrbshuiwu.com hrbswx.com hrbtv.net hrbuyu.com hrbyafeng.com hrbzdty.com hrbzhsd.com hrbzyy.com hrcf168.com hrcfc.com hrday.com hrddqc.com href.lu hrenh.com hrexam.com hrfc.net hrflc.com hrfoods.com hrgsmz.com hrgxyy.com hrhuiyi.com hrhy365.com hrintl.com.hk hrjextruders.com hrjkjt.com hrloo.com hrm100.com hrmarket.net hrmtgroup.com hro-cosmetics.com hroot.co hroot.com hrpackage.com hrrsj.com hrs100.com hrsalon.org hrsay.com hrsee.com hrsel.com hrsoft-china.com hrsteelpipe.com hrtechchina.com hrtfin.com hrtn.net hrtsea.com hrtx.com hruikang.com hrvouge.com hrwuu.com hrxiongan.com hrxz.com hrzy.cc hs-bianma.com hs-biopharm.com hs-defense.com hs-fe.com hs-outlets.com hs-sz.com hs.net hs13z.net hs2z.net hs326.com hs499.com hs5g.com hs65.com hs85.com hsakyy.com hsay.com hsayi.com hsbank.cc hsbbs.com hsbdc.com hsbianma.com hscarbonfibre.com hscbw.com hscc.com hscfjt.com hschina.net hscn.com hscode.net hscode123.com hsdbg.com hsdcw.com hsddyy.com hsdfzp.com hsdjxh.org hsdjz.com hseda.com hsehome.com hsehome.org hsez.net hsfh56.com hsfund.com hsfyyy.com hsfzexsg.com hsfzxjy.site hsg2oi3c.com hsgf.net hsgjj.com hsgjysj.com hshan.com hshdyw.com hshhlj.com hshj.cc hshl360.com hshsjy.com hshsxkj.com hshton.com hshuiyi.com hsijqa.com hsjk.com hsjkaoyan.com hsjpgzx.com hsjrhy.com hsjt1983.com hsjy.com hsjy.net hskehong.com hskgchina.com hskun.com hsleu.com hslid.net hslight.net hslvshan.com hslxhl.com hsly.org hsm-intl.com hsmap.com hsmdb.com hsmob.com hsmrt.com hsnewsnet.com hsoow.com hspeletizadora.com hspharm.com hspm.net hspress.net hsqh.net hsqhfunds.com hsqhospital.com hsqjfw.com hsqt888.com hsqyy.com hsrc.tv hsrcw.com hsrexpo.com hsrjtk.com hsrtd.club hssdk.com hssdtest.com hssenglish.com hssjyj.com hsskyy.com hsslab.com hssrc.com hssyy.com hsszfx.com hst.com hst1966.net hstars.net hstbroker.com hstczkj.com hstd.com hstong.com hstpizza.com hstspace.com hstypay.com hstyre.com hsufuchifoods.com hsuyeung.com hswatersupply.com hsweb.me hswell.com hswkzy.com hswlkj.com hswmb.com hswzyh.com hswzyj.com hsx99.com hsxedu.com hsxt.com hsxt.net hsy188.com hsyaguanjg.com hsyanyi.com hsybyh.com hsyk023.com hsysupply.com hsyuntai.com hsyunyi.com hsyyf.me hsyymusic.com hsyzg.net hszk.org hszq6.com hszq8.com hszsb.org hszsfz.com hszsz.com hsztbzx.com hszw.org hszxlzx.com hszy8.com hszyy8.com hszzsyzx.net hszzzx.net ht-cao.com ht-chem.com ht-med.com ht-motor.com ht-rc.com ht-saae.com ht-tech.com ht-valve.com ht0775.com ht1832.com ht88.com ht9.com htai51.com htaizhou.com htanwang.com htaocloud.com htback.com htbmsc.com htc-media.com htcases.com htcis.net htcrrc.com htcxfund.com htcxms.com htd2000.com htdata.com htdtire.com htdxcl.com hteacher.net htech360.com hteos.com htexam.com htexam.net htfcn.com htffund.com htfilter.com htfoxit.com htfpartner.com htfutures.com htg520.com htgjjl.com htgkdz.com htguosheng.com htgwf.com hth.com hti-instrument.com htidc.com htinfor.com htinns.com htinnsjm.com htinv.com htjinju.com htjob.net htjs.net htjsq.com htjsq.mobi htkaoyan.com htkgsx.com htknow.com htky365.com html5-app.com html5china.com html5code.net html5dw.com html5mark.com html5plus.org html5train.com html5tricks.com htmlai.com htmleaf.com htmlsucai.com htmycn.com htnice.com htong.com htoo.vip htood.com htool.com htqjy.com htqyy.com htrip.biz hts-auto.com htsamc.com htsc.com htsec.com htsec.net htsham.com htsjj.com htslauto.com htsprings.com httdsj.com htths.com httingshu.com httpcanary.com httpcn.com httpdns.pro httpsok.com httpssl.com htucloud.com htudata.com htudns.com hturl.cc htv123.com htvaas.com htvcentral.com htwcq.com htwed.com htwx.net htx.cc htxgcw.com htxgssb.com htxrc.com htxxpx.com htxy.net htycs.com htyduck.com htyhm.com htyou.com htys.cc htys123.com htyswzzgw.com htyunwang.com htzdj.com htzdznjs.com htzhgd.com htzipr.com hu.com hua-chips.com hua-lan.com hua-yong.com hua.com hua1000.com hua168.com hua5.com huaaiangel.com huaan-cpa.com huaao-trust.com huaaojiaoyu.com huaaoranqi.com huaaosoft.com huaaotech.com huaat.com huabaike.com huaban.com huaban.net huabanimg.com huabanpro.com huabbao.com huabeicw.com huabian.com huabianyl.com huabo.net huabocam.com huabokeji.com huabot.com huabuqi.com huacai-tech.com huacai.com huacaijia.com huacaobk.com huacaole.com huacemedia.com huachang-alu.com huachengenjoy.com huachengjx.com huachenholdings.com huachenit.com huachenyuanyang.com huachuangroup.net huaco908.com huacolor.com huacooling.com huada120.com huadabz.com huadachem.com huadan.com huadehyd.com huaderack.com huadian360.com huadiansc.com huadie.com huadihealth.com huadiplan.com huadonghospital.com huadongmedia.com huadongtrack.com huadream.com huaduanbio.com huadun315.com huaduocai.net huaease.net huaeda.com huaer.cc huafaceg.com huafagroup.com huafaih.com huafajituan.com huafang.com huafangdichan.com huafangzhou.com huafasports.com huafatech.com huafeimould.com huafeng-al.com huafeng.com huafengaw.com huafens.com huafer.cc huafu.com huagolf.com huagongkaoyan.com huagujs.com huaguoshan.com huaguoyuan.com huagupai.com huahai-gz.com huahaibiochem.com huahaige.com huahaijiaju.com huahaipharm.com huahanart.com huahanbook.com huahao.com huahengbio.com huahengrobot.com huahengsk.com huahong-group.com huahonggk.com huahongjt.com huahtc.com huahua777.com huahuacaocao.com huahuaka.com huahuamaoyi.com huahuan.com huahuihealth.com huahuizhineng.com huahuo.com huai.gg huaian.com huaiangj.com huaiansgyy.com huaibaobei.com huaibei.com huaibeihosp.com huaicai.cc huaien.com huaigang.com huaihai.tv huaihaixiang.com huaijiufu.com huaimg.com huaimi.com huain.com huainanhy.com huainannet.com huainanren.net huainanzi.com huainet.com huairen588.com huairougreatwallmarathon.com huairtv.com huairui59.com huaitao.vip huaixin88.com huaiyangnews.com huaji.com huaji.store huajia.cc huajiakeji.com huajialishe.com huajian-al.com huajiangai.com huajiankang.com huajianmed.com huajiantong.com huajiao.com huajiaow.com huajiaowu.com huajicnc.com huajieai.com huajifen.com huajin100.com huajinct.com huajing-inf.com huajingsec.com huajingyun.com huajuanma.com huajuanyun.com huajuhotel.com huajx.com huakaifilter.com huake-weixin.com huakewang.com huakeyun.com huakpower.com hualady.com hualaikeji.com hualaiyun.com hualala.com hualan-tech.com hualanbio.com hualay.net hualet.org hualewl.net hualiandie.com hualiandressing.com hualianmining.com hualiantv.com hualianxin.com hualing-pm.com hualingjiangong.com hualiuniversity.com hualong-sz.com hualongholding.com hualongxiang.com hualu5.com hualumedia.com hualuwood.com hualv.com hualvtu.com huaman.pub huamanlou.cc huamanlou.com huamao.com huamaobook.com huamaorice.com huamaoshuo.com huamedicine.com huameili.net huameiyuezi.com huamengxiaoshuo.com huami.com huamou.com huamu.com huamuwo.com huan-tai.com huan.tv huananauctionctf.com huananyiyao.com huananzhi.com huanbao.com huanbaoscx.com huanbearing.com huanbeieloan.com huanbeiloan.com huanbeipic.com huandie.com huandonglg.com huane.net huanenet.com huanergy.com huanfeng580.com huang-biao.com huang-jerryc.com huang-jiang.com huangbaoche.com huangbaoquan.com huangbowei.com huangchujunyulong.com huangchun.net huangdao.in huangdao.net huangdc.com huangea.com huangfusl.net huanggangmarathon.com huanggao.net huanggaole.com huangguanluo.com huangh.com huanghaicollege.com huanghanlian.com huanghegongshui.com huanghehr.com huanghepiao.com huanghuacheng.com huangjiemin.com huangjihuang.com huangka.com huangkong.net huanglei.me huangli.com huangli8.com huangliangbo.com huanglong.com huangma.com huangqi1688.com huangshaotian.com huangshimarathon.com huangwei.me huangwei.pro huangxin.dev huangxinwei.com huangyao.work huangye.net huangye51.com huangye88.com huangye88.net huangyifan.com huangyixiaoshuo.com huangyuehe.com huangyuhui.net huangyunkun.com huangzz.xyz huanhaoba.com huanhuanhuishou.com huanhuanxin.com huanhuba.com huanidc.com huanju.net huanjutang.com huanjuyun.com huanle.com huanle800.com huanlecdn.com huanledd.com huanlefish.com huanleguang.com huanletang.com huanlewan.net huanlingpharm.com huanlingxiuxian.com huanlj.com huanmusic.com huanong1688.com huanongdao.com huanpeng.com huanpingge.com huanq.com huanqiu-ltd.com huanqiu.com huanqiu.org huanqiu56.com huanqiuauto.com huanqiuchuguo.com huanqiujiemi.com huanqiukexue.com huanqiumil.com huanqiutape.com huanqiuw.com huanqiuyimin.com huanqu-tec.com huanqunquan.com huansengifts.com huanshoulv.com huante.com huantest.com huanting.cc huantour.com huanuomenye.com huanwen.com huanwenwen.com huanxi.com huanxia.com huanxiangji.com huanximedia.com huanxinchem.com huanxinfluoro.com huanxing1904.com huanxingedu.com huanxio.com huanxiongdd.com huanxiyl.com huanyatour.com huanyingzq.com huanyouji.com huanyuantech.com huanyudns.com huanyule.com huanyumid.com huanyutv.com huanzhu101.com huanzhucv.com huaoe.com huaon.com huaougas.com huapai.com huapiaoer.com huapiaoliang.com huapinwang.com huapontshengchem.com huaqiaobang.com huaqidigital.com huaqin.com huaqinchi.com huaqingkeji.net huaqingtax.com huaqiu.com huaraytech.com huaren-scm.com huarenyingyu.com huarenyizhan.com huari-furniture.com huari.com huaroem.com huarongdao.com huarongled.com huarui.work huarui1952.com huaruiaero.com huaruicom.com huaruidns.com huaruisales.com huas.co huasadata.com huash.com huashangcbbtv.com huashangedu.com huashanglawyer.com huashangtop.com huashen-edu.com huashen-group.com huashen6.com huasheng-automation.com huasheng100.com huashengchn.com huashengdaili.com huashenghaoche.com huashengjia100.com huashengls.com huashengshiyan.com huashengtoutiao.com huashi-sh.com huashi.cc huashi6.com huashichang.com huashidongman.com huashijie.art huashilm.com huashipharmacymtalionlineybpay.com huashitong.net huashphoto.com huashui.com huashuitax.com huashunxinan.net huashuowork.com huasimtour.com huasiwood.com huasongwang.com huasu.net huasuankeji.com huasuhui.com huasuokeji.com huasyun.com huatai-elec.com huatai-pb.com huatai.com huatai1993.com huataiyc.com huatan365.com huatec.com huatech.net huategas.com huatengsci.com huati.cc huatian-hotel.com huatian.net huatianxiangsu.com huatong-logistics.com huatongcloud.com huatu.com huatugz.com huatuo007.com huatuowenda.com huatuoyf.com huaue.com huavisa.com huawan.com huawangzhixun.com huawanyun.com huawe.com huawei-3com.com huawei-eu.store huawei.asia huawei.com huawei.eu huawei.ru huaweiacad.com huaweiapaas.com huaweicloud-dns.com huaweicloud-dns.net huaweicloud-dns.org huaweicloud-idme.com huaweicloud-koophone.com huaweicloud-smn.com huaweicloud-smn.net huaweicloud.com huaweicloudapis.com huaweicloudsite.com huaweicloudwaf.com huaweidevice.com huaweidevice.tel huaweidun.com huaweifile.com huaweiita.com huaweils.com huaweimall.com huaweimarine.com huaweimossel.com huaweioneaccess.com huaweirtc.com huaweisafedns.com huaweishop.net huaweisoft.com huaweisre.com huaweistatic.com huaweiuniversity.com huaweiyun.com huaweizdl.com huawenwin.com huawo-wear.com huawote.com huaxi.net huaxi100.com huaxia.com huaxia77.com huaxiabeidou.com huaxiaeye.com huaxiaf.com huaxiagg.com huaxiajianyan.com huaxiald.com huaxialiangzi.com huaxiangdiao.com huaxianpai.com huaxianzhaopin.com huaxiao5.com huaxiaobaokeji.com huaxiapawn.com huaxiashiwen.com huaxiasz.com huaxiataike.com huaxiazi.com huaxin303.com huaxinbaojie.com huaxincem.com huaxing.com huaxingas.com huaxingchem.com huaxinhz.com huaxinorthop.com huaxinpark.com huaxiong.com huaxirc.com huaxj.net huaxuezoo.com huaxumag.com huaxunbaili.com huaxunholdings.com huayang.net huayanghui.net huayangsolar.com huayanwater.com huayaocc.com huayaody.com huaye.com huayi-faucet.com huayicn.com huayidiaosu.com huayielec.com huayijiahe.com huayilawfirm.com huayilighting.com huayimedia.com huayiming.com huayin114.com huayingglass.com huayingrc.com huayingsc.com huayinhealth.com huayinjapan.com huayinlab.com huayinyiliao.com huayitaitech.com huayitongkeji.com huayitongtai.com huayiwork.com huayiyunxinxi.com huayou.com huayoumengze.com huayoutianyu.com huayuan-print.com huayuanlcd.com huayuchaxiang.com huayue119.com huayueivf.com huayufilter.com huayug.com huayuhua.com huayulandmarkhotel.com huayun.com huayunfl.com huayuzj.com huazhangautomation.com huazhanggroup.com huazhanwire.com huazhen-gs.com huazhen2008.com huazhen2008.net huazhengcaiwu.com huazhengwuye.com huazhenjiaoyu.com huazhiedu.com huazhiweilai.com huazhixingchina.com huazhongcar.com huazhongcnc.com huazhongtimes.com huazhu.com huazhuanapp.com huazhucorp.com huazirc.com hubamdi.com hubashihuo.com hubcyts.com hubei88.com hubeiamc.com hubeibbs.net hubeibidding.com hubeichengji.com hubeici.com hubeidaily.net hubeifc.com hubeifurui.com hubeigongfu.com hubeihome.net hubeiip.com hubeijingjunf.com hubeikj.com hubeinet.com hubeipbx.com hubeiport.com hubeiqiche.org hubeiwsd.com hubeixuekao.com hubeiyanjiusheng.com hubeiyongtai.com hubeizhengao.com hubiao168.com hubiazhi.com hubing.online hubpd.com hubsound.com hubstudio.vip hubulab.com hubwd.com hubwiz.com huc08.com hucais.com hucdn.com huceg.com huceo.com huchaowei.com hucheng100.com huchihuchi.com hudai.com hudong.com hudong100.com hudong100.net hudong100.org hudongad.com hudongba.com hudongcdn.com hudongku.net hudun.com hudunsoft.com huduntech.com huelead.com huenhuenfood.com hufangkeji.com hufangyun.com hufe.cc hugane.com hugcar.com hugd.com hugecdn168.com hugecore.net hugeland.com hugetall.com hugong-js.com hugong.com huhaha.net huhanba.com huhaoyang.com huhexian.com huhoo.com huhoo.net huhua.net huhuang.net huhudi.com huhuguanjia.com huhui-sh.com huhustory.com huhutian.com huhutong315.com hui-ben.com hui-chao.com hui.net hui10.com hui10.net hui100.com hui43.com hui800.com hui800.net huians.com huibag.com huibiao-group.com huibiaoinfo.com huibo.com huibojob.com huiboparking.com huiborobot.com huicaishui.net huiche.com huiche100.com huicheimg.com huichenbz.com huichenghuijia.com huichengip.com huichengy.com huichewang.com huichongduo.com huichuangjialife.com huichuangzhanlan.com huicx7.com huida18.com huidabbs.com huidafrp.com huidagroup.com huidan.net huidang.com huidaocaishui.com huidaqg.com huidawanan.com huidazhe.vip huiddo.com huide-medical.com huiderui.com huideyecai.com huidian.net huidiantech.com huidu.com huidu.net huidu001.com huiduogang.com huiemall.com huierming.com huierp.com huifachina.com huifacms.com huifayun.com huifeng-zj.com huifengtools.com huifengxinxi.com huifengzhuzao.com huifenqi.com huifu.com huifudashi.com huifusihai.com huifutz.com huifuzhinan.com huigaiji.com huigao-magnetics.com huigezi.org huiguanwang.com huih110.com huihaha.com huihaicenter.com huihaicn.com huihaiyiyao.com huihe56.com huihefz.com huihengmedical.com huihestone.com huihezx.com huihua365.com huihua8.com huihuaren.com huii.cc huiidea.com huiji.wiki huijiame.com huijian-land.com huijiangroup.com huijiaoyun.com huijiazhileng.com huijidata.com huijie.shop huijiegroup.com huijiewei.com huijimall.com huijing.org huijinggroup.com huijingwl.com huijinshang.com huijinwater.com huijistatic.com huijitrans.com huijiwiki.com huiju.cool huijucn.com huikao8.com huikex.com huikundz.com huila88.com huilaimi.com huilan-online.com huilan.com huilanfoundation.org huilanyujia.com huiliangapp.com huilianyi.com huililong.com huilintyre.com huilinwang.com huilitc.com huiliu.net huiliubao.com huilm.com huilog.com huilongsen.com huilongtech.com huilunbio.com huilv8.com huilvbiao.com huilvwang.com huilvyankuang.com huilw.com huilyn.com huimaiche.com huimaihs.com huiman.net huimee.com huimee.net huimei.net huimeijiaozi.com huimeisports.com huimeiyp.com huimeizr.com huimengchem.com huimengya.com huimiaokeji.com huimin111.com huimincz.com huimingcn.com huimingjia.com huimwang.com huinaimei.com huing.net huinkj.net huion.com huiqia.net huiqianfan.com huiqibaike.com huiqiyidiantong.com huiqiyu.com huiqk.com huiqudsp.com huiqunchina.com huiquzu.com huirde.com huirenshenbao.com huirenyy.com huiris.com huiruanzhuang.com huirui-tech.com huirui1688.com huisem.com huisencapital.com huisenky.com huishandairy.com huishangbao.com huishangol.com huishantech.com huisheng.fm huishengaudio.com huishenghuiying.com huishenghuo.ink huishengqianzhushou.com huishida.com huishou1680.com huishoubao.com huishoubaojiadan.com huishouigbt.com huishoujie.com huishoujiuwu.com huishoushang.com huishouyx.com huishuaka.com huishuirencai.com huishuitech.com huisituo.com huisj.com huisky.com huisou.com huisports.com huisuanzhang.com huisucn.com huisuoping.com huitao.net huitaoche.com huitaoyouhui.com huitengpipe.com huitongqingsuan.com huitoubj.com huitouche.com huitoukao.com huitoukefood.com huitouyan.com huitouyu.com huitouzi.com huitu.com huitu.tech huitu8.com huitun.com huiun.com huiurl.com huivo.com huiwang.net huiweikeji.com huiwenda.com huiwww.com huixianginvest.com huixiangtiandi.com huixiaoer.com huixiaoer.net huixineducation.com huixinggroup.com huixingsoft.com huixinli.com huixinyiyuan.com huixinyt.com huixinyun.com huixsw.com huixuanjiasu.com huixueba.net huiyan315.com huiyangranqi.com huiyankan.com huiyanzhi.com huiyaohuyu.com huiybb.com huiyda.com huiyelaw.com huiyi-123.com huiyi365.net huiyi8.com huiyi9e.com huiyiabc.com huiyiai.net huiyicq.net huiyihealth.com huiyinxun.com huiyizhuo.com huiyou.com huiyou027.com huiyouhotels.com huiyuandao.com huiyuanjia.net huiyuansoft.com huiyuantang.com huiyuanyy.com huiyucn.com huiyuehz.com huiyumedia.com huiyundong.net huiyutools.com huize.com huizecdn.com huizeyoupin.com huizhaofang.com huizhek.com huizhengmachinery.com huizhiguanghua.com huizhihuyu.com huizhijiaxun.com huizhilin.com huizhilin.net huizhimob.com huizhioptech.com huizhou-marathon.com huizhouf.com huiziyuan.net huizone.com huizuche.com huizucloud.com huizuoyuezi.com huizustore.com hujia.org hujiang.com hujianggroup.com hujibbs.com hujingnb.com huke88.com hukeck.com hukecs.com hukelc.com hukenb.com hukexyy.com hukou021.com hukou365.com hukuangroup.com hulai.com hulianfang.com hulianmaibo.com hulianwangchuangye.com hulichuang.mobi hulinhong.com hulixin.com huliyx.com hulubaba.com huluboshi.com huludz.com huluer.com huluip.com huluip.tech huluo.com hulusaas.com hulusi.com hulutrip.com huluwa.cc huluwa365.com huluwa8.com huluxia.com huluxia.net huluzc.com humaiyouxi.com humanplustech.com humanrights-china.org humanwellcaps.com humanwellhb.com humaotec.com humblit.com humengyun.com humensec.com huming.com hummcars.com humpline.com hunaen.com hunan-changda.com hunan-huasheng.com hunan100km.com hunanbestall.com hunancatv.com hunaneu.com hunangaozhi.com hunangy.com hunanhaihong.com hunaniptv.com hunanjz.com hunanpea.com hunantv.com hunanxingxin.com hunanyuneng.com hunanzp.com hunanzy.com hunau.net hunbei.com hunbei1.com hunbei2.com hunbei3.com hunbei4.com hunbei5.com hunbohui.info hunbys.com hunche.net hunchun123.com hundredcent.com hundsun.com hundun.net hundx.com hunger-valley.com hungfei.com hungsh.store hunli100.com hunlian100.com hunlihu.com hunlihu1.com hunlihu2.com hunlihunli.com hunliji.com hunlimama.com hunlimao.com hunmiao.com hunsh.net huntchance.com huntermailfocus.com hunteron.com huntic.com huntkey.com huntkeydiy.com huntsbot.com hunuo.com hunyinyiyuan.com huo07100hy.com huo07110hy.com huo07120hy.com huo07140hy.com huo07150hy.com huo07160hy.com huoas.com huoban.com huobanbot.com huobanhuyu.com huobanimg.com huobanjs.com huobanniu.com huobaowang.com huobaoweishang.com huobaoyx.com huobi.io huocai.com huochai.cc huochai.mobi huoche.com huoche.net huoche.wiki huocheba.com huocheci.com huochehuan.com huochepiao.com huochepiao.net huocheso.com huocms.com huodao.hk huodong.org huodong.store huodong5.com huodonghezi.com huodonghui.net huodongjia.com huodongju.com huodongpro.com huodongshu.com huodongwang.com huodongxing.com huodongzhongguo.com huofar.com huofutp.com huogongdian.com huohao8.com huohoo.com huohuacdn.com huohuahudong.com huohudun.com huohuo.com huoideas.com huoji.com huojiaba.com huojitui.com huoju365.com huokebao.net huokeying.com huokeyuan.com huolala.co huolala.work huole.com huolea.com huoli.com huolieniao.com huolieyun.com huolinhe.com huolishaonianwang.com huolug.com huomakeji.com huomao.com huomaotv.com huomaqun.com huoming.com huomujin.com huonan.net huonao.com huoniuniu.com huopinyuan.com huopu.com huoqibao.com huoqiuw.com huosdk.com huoshan.cc huoshan.club huoshan.com huoshancdn.com huoshangroup.com huoshanimg.com huoshanlive.com huoshanparty.com huoshanstatic.com huoshante8.com huoshanvideo.net huoshanvod.com huoshanxiaoshipin.net huoshanzhibo.com huoshanzhibo.net huoshanzhufang.com huoshen.com huoshen99.com huoshi.shop huosu.com huowan.com huowanes.com huoxiaoyi.com huoxing24.com huoxingyu.com huoxingzi.com huoxun.com huoyan.com huoyan.io huoyanio.com huoyantu.com huoyanyunying.com huoyfish.com huoying.com huoying666.com huoyuan.mobi huoyugame.com huoyuyan.com huoziyin.com hupan.com hupanedu.com hupanoled.com hupo.com hupo.tv hupozhidao.com hupu.com hupu.io hupucdn.com hupun.com hur05100kns.com hur05101kns.com hur05111kns.com hur05120kns.com hur05121kns.com hurom.vip hurricane618.me hurricanechip.com hurun.net hurx04.xyz hurys.com husadw.com husenji.com hushangcaifu.com husini.net husiyang.com hust-laser.com hust-snde.com hust-wuxi.com hust.cc hust.online hustcad.com hustlife.com hustlzp.com hustmei.com hustnews.com hustoj.com hustonline.net hustp.com hustsofc.tech hustunique.com hustwenhua.net hustxb.com hustyy.com husubao.com hutaojie.com hutaolinight.com hutegy.com hutew.com hutong-school.com hutong360.com hutongcdn.com hutoufeng.net hutui9.com hutuii.com hutusi.com huuhoo.com huuing.com huwaibbs.com huwaizb.com huwatech.club huway.com huweihuang.com huweishen.com huwi8.com hux6.com huxianwang.com huxiaofan.com huxiaoshi.com huxiji999.com huxijizhongguo.com huxingroup.com huxishiye.com huxiu.com huxiu.link huxiucdn.com huya.com huyajs.com huyall.com huyanapp.com huyanbao.com huyanjie.com huyaos.com huyaruanwen.com huyatvns.com huyayue.com huyn.com huyouxiong.com huyueidc.com huyuekj.com huyuncdn.com huyuning.com huyuxx.com huzhan.com huzhang.com huzhao1.com huzheng.org huzhongxin.com huzhoumj.com huzhoumuseum.com huzicaotang.com huzwater.com hvacstar.com hvchan.com hvcnitl.com hvcxo.com hvdiy.com hvread.com hvsgqlo.xyz hvtong.com hw-ai.com hw-go.net hw-supply.com hw-tm.com hw100k.com hw3static.com hw555.com hw99.com hwactive.com hwad.net hwagain.com hwait.com hwangda.com hwanw.com hwaq.cc hwashi.com hwasmart.com hwastro.com hwasunpharma.com hwatson.com hwavi.org hwbanaa.com hwbaoan.com hwbfxp5030.vip hwbim.com hwbs.org hwbz.net hwccpc.com hwcdnsre.com hwcloudlive.com hwclouds-dns.com hwclouds-dns.net hwclouds.com hwclouds.mobi hwclouds.net hwclouds.org hwcloudsite.com hwcloudvis.com hwclzq.com hwcpb.com hwcrazy.com hwehs.com hweimall.com hweventgrid.com hwfcw.com hwgis.com hwhidc.com hwht.com hwj.com hwjianmo.com hwjm-mold.com hwjyw.com hwlifting.com hwlpz.com hwlxuz.work hwocloud.com hwoled.com hworld.com hwpan.com hwrecruit.com hwshu.com hwsupplychain.com hwtelcloud.com hwtrip.com hwtzdl.com hwwt2.com hwwt8.com hwxc.com hwxda.com hwxfc.com hwxjp.com hwxnet.com hwxuanliuqi.com hwyton.com hwyxxx.com hwzn.com hwzuku.com hwzyjt.com hx-parking.com hx-qt.com hx-r.com hx008.com hx008.net hx110.com hx1h.com hx2car.com hx2cars.com hx36.net hx416.com hx5658.com hx818.com hx8886.com hx95.com hx99.net hxacc.com hxage.com hxbdf120.com hxbdxled.com hxbl.com hxbsth.com hxbus.net hxc-power.com hxccc.org hxcd.net hxcdn.net hxchem.net hxchx.org hxclouds.com hxcsbj.com hxct.com hxct.ltd hxd56.com hxdec.com hxdi.com hxdkfp.com hxdkj88.com hxdrisk.com hxdsbgg.com hxdspa.com hxdtekf.com hxen.com hxepawn.com hxf111.com hxfilm.com hxfjw.com hxfy888.com hxfzzx.com hxgame.net hxgqw.com hxgro.com hxgroup.com hxgs.com hxgs.net hxgwott.com hxhaoyu.com hxhost.com hxhssw.com hxiangjia.com hxing.com hxinq.com hxjbh.com hxjhcloud.com hxjinqiao.com hxjiot.com hxjiqi.com hxjnyy.com hxjsjkj.com hxjstech.com hxjwang.com hxjxs.com hxjxsw.com hxkba.com hxkfh.com hxkgjt.com hxkj.cc hxkj.vip hxkq.net hxkq.org hxkqyxzz.net hxland.com hxlbc.com hxlbd.com hxledu.com hxlhjt.com hxljjt.com hxlot.com hxlsw.com hxltcj.com hxlxx.com hxm5.com hxmeishi.com hxmlyy.com hxmryy.com hxnews.com hxnk.com hxny.com hxnygx.com hxpdd.com hxposuiji.com hxq123456.com hxqc.com hxqc.mobi hxqcgf.com hxqcjt.com hxqgczx.com hxqnj.org hxqtedu.com hxqu.com hxr100.com hxrc.com hxsd.com hxsd.tv hxseal.com hxsec.com hxsjjt.com hxsmart.com hxsme.org hxspjt.com hxssyy.com hxstrive.com hxsts.com hxsyjt.net hxt5.com hxtk.com hxtrip.com hxtxxw.com hxtzgroup.com hxwglm.com hxx.net hxxkw.org hxxl6.com hxyd.cc hxydup.com hxyjw.com hxys.com hxytea.com hxytw.com hxyxt.com hxyyw.com hxz.ink hxzf9.com hxzlsgs.com hy-china.com hy-express.com hy-f.com hy-la.com hy-lamp.com hy-titan.com hy-tp.com hy-zr.com hy017.com hy01888.com hy031.com hy05190134.com hy053.com hy074.com hy118.com hy120.com hy12048.com hy123.com hy1234567.com hy163.com hy169.com hy1862.com hy2046.com hy219.com hy237.com hy254.com hy261.com hy2809.com hy296.com hy341.com hy345.com hy346.com hy36098.com hy375.com hy3804.com hy385.com hy4.cc hy410.com hy439.com hy4445.com hy450.com hy453.com hy464.com hy5353.com hy552.com hy5553.com hy563.com hy576.com hy628.com hy636.com hy679.com hy702.com hy7050.com hy732.com hy762.com hy7703.com hy7756.com hy8881.com hy9698.com hy9905.com hyagrochem.com hyagv.com hyahm.com hyaimed.com hyakkaryouran.date hyb2b.com hybase.com hybbs.net hybbtree.com hybiome.com hybssy.com hyc.com hyccw.com hycdn.com hycet.com hycfw.com hycgy.com hyckjic.com hycn.com hydarts.com hydbest.com hyddd.com hydesolar.com hydravizoficial.info hydst.com hydun.com hydz999.com hydzfp.com hydzswyxgs.com hyec.com hyedu.com hyexpo.com hyext.com hyey.com hyeycg.com hyflc.com hyfutures.com hyfxbj.com hyfyuan.com hyggfx.com hygkit.com hygmgroup.com hygoldcup.com hygxbgd.com hygy361.com hyham.com hyhcdn.com hyhdtg.com hyhhgroup.com hyhjzc.com hyhl66.com hyhospital.com hyhqjt.com hyhro.com hyhscm.com hyht.fun hyhuo.com hyhxt.net hyhy.cc hyhyn.com hyilp.com hyimmi.com hyipchina.com hyj999.com hyjgxx.com hyjhgy.com hyjnpx.com hyjxmx.com hykang.com hykcsoft.com hykiln.com hykj.cc hyl1.tv hylanda.com hylandslaw.com hylicreate.com hylik.net hylname.com hymake.com hymall.net hymater.com hymcu.com hymicrofiber.com hymicrosystem.com hymjy.net hymson.com hynet.co hynetek.com hynews.net hyngj.com hynixic.com hynpay.com hynyw.com hyocr.com hyouda.com hyp-arch.com hypefolio.com hypefolio.net hyper.sh hyper3d.ai hypercachenet.com hypercachenode.com hypergryph.com hypergryph.net hyperguestai.com hypers.com hypersilicon.com hypersnap.net hyperstrong.com hyphencargo.com hyplc.com hypnotherapyforeverybody.com hyppmm.com hyptec.com hypyimei.com hyqcw.com hyqdxcl.com hyrainbow.com hysbz.com hysec.com hyseim.com hyshengnian.org hyshi.net hysound.com hysteeltube.com hyswcn.com hyswjt.net hysyyl.com hysz.net hyt01.com hyt368.com hytbj.com hytch.com hytcshare.com hytd.com hytera.com hytxhd.com hytzqb.com hyun.cc hyundai-chhm.com hyundai-hmtc.com hyuuhit.com hyuyy.com hywater.net hywaternet.com hywh1999.com hywjjz.com hywx.com hyx1927.com hyxiang888.xyz hyxrmt.com hyxsoft.com hyxt.com hyy99.com hyybj.com hyyf.net hyyl.net hyyoa.com hyypjs.com hyyun.com hyyykj.net hyyyy.net hyyzy.com hyzc.com hyzc.net hyzcservice.com hyzenhospital.com hyzhcdn.com hyzhihe.com hyznjs.com hyzui.com hz-alw.com hz-bdqn.com hz-ch.com hz-delixi.com hz-emc.com hz-etest.com hz-expo.com hz-gaoke.com hz-gn.com hz-hospital.com hz-jsyg.com hz-kedi.com hz-moon.com hz-pharm.com hz-polar.com hz-spring.net hz-tire.com hz-tt.com hz-winone.com hz-xiaofei.com hz-xin.com hz-zhuce.com hz-zq.com hz2jx.com hz2y.com hz3201.com hz3ds.com hz3y.com hz66.com hz6z.com hz7hospital.com hz8z.net hz9hospital.com hzabjt.com hzaee.com hzahy.com hzaiguojiang.com hzairport.com hzajjt.com hzallina.com hzamcare.com hzaoz.com hzapu.com hzapuqi.com hzaygb.com hzazh.com hzbcdp.com hzbcxg.com hzbh.com hzbhjy.com hzbhsh.com hzbianqing.com hzbianqu.com hzbike.com hzbjwy.com hzbk.net hzbojin.com hzbomed.com hzbook.com hzboxing.com hzboxuan.com hzbpm.com hzbx.com hzbxm.com hzc.com hzcables.com hzcbparking.com hzcbs.com hzccb.net hzcctech.com hzcd120.com hzcda.com hzcdhcyy.com hzcdycyy.com hzcdyyhc.com hzcdyyyc.com hzcekong.com hzch.org hzchaoxiang.com hzchengdun.com hzchengdun.net hzchgj.com hzcjtz.com hzcmc.com hzcmdq.com hzcnc.com hzcollege.com hzcopyright.com hzcourse.com hzctjs.com hzctkj.com hzctxh.com hzcy.com hzczjt.com hzdajiangdong.com hzdare.com hzddwk.com hzdelian.com hzdely.com hzdgjc.com hzdjr.com hzdjy.com hzdledu.com hzdlrj.com hzdmpower.com hzdongyu.com hzdq.com hzdsrmyy.com hzdtv.tv hzdx.com hzebang.com hzec-tencentclb.cloud hzec-tencentclb.com hzec-tencentclb.net hzec-tencentclb.work hzecsemir.com hzeeec.com hzeg.com hzelec.com hzepd.com hzeyun.com hzfc.cc hzfc365.com hzfeat.com hzfeiyao.com hzfesco.com hzfj.com hzfllbj.com hzfolo.com hzfpay.com hzfstz.com hzfucai.net hzfuturehos.com hzfwq.com hzfzxh.com hzgcec.com hzgcgl.com hzggfw.com hzgh.org hzgjj.com hzglsb.com hzgmwl.com hzgolong.com hzgoyuan.com hzgrow.com hzgrys.net hzgthb.com hzguode.com hzguojiao.com hzgwzn.com hzgxr.com hzgymd.com hzgzsoft.com hzh0775.com hzh1.com hzhadx.com hzhanbo.com hzhchj.com hzhcia.com hzhcloud.com hzhebei.com hzhehua.com hzhehui.com hzhengding.com hzhengtong.com hzhf.com hzhfdc.com hzhfzx.com hzhike.com hzhisoft.com hzhkai.com hzhl666.com hzhlcc.com hzhlgzx.net hzhlpt.com hzhltec.com hzhm888.com hzhnano.com hzhnzdh.com hzhqdj.com hzhqqz.com hzhr.com hzhssy.com hzhstb.com hzhtlh.com hzhuning.com hzhuti.com hzhx.com hzhxfy88888.com hzhxsy.com hzhy163.com hzhyqp.com hziam.com hzimc.com hzinfo.com hzins.com hzins.net hzj7.com hzjbzg.com hzjcbg.com hzjcp.com hzjcqczl.com hzjcxh.com hzjdi.net hzjiaro.com hzjiaxiao.com hzjie7.com hzjingxian.com hzjinlu.com hzjiuyimo.com hzjizhun.com hzjlcs.com hzjljt.com hzjmjl.com hzjndz.com hzjqhy.com hzjsjl.com hzjtfw.com hzjtgcjt.com hzjtjl.com hzjtjypt.com hzjunglepay.com hzjuzhi.com hzjxapp.com hzjxhy.com hzjxj.com hzjxmd.com hzjyks.net hzjynet.com hzjywl.net hzjzjc.com hzjzmed.com hzjzxh.com hzkaiming.com hzkangji.com hzkayo.com hzkcck.com hzkemengda.com hzkesheng.com hzkjcyy.com hzkjgf.com hzkjn.com hzkln.com hzklyy.com hzkqyyjt.com hzkszx.com hzlange.com hzlawyer.net hzlczx.com hzleaper.com hzleshun.com hzlgzs.net hzliangdong.com hzlingxing.com hzljlyy.com hzlp.com hzlqgroup.com hzlrbiotech.com hzlrhb.com hzlug.org hzlyhs.com hzmama.net hzman.net hzmansheng.com hzmantu.com hzmba.com hzmcd.com hzmctech.com hzmdch.com hzmdcnc.com hzmeizhuo.com hzmest.com hzmetro.com hzmgdj.com hzmixc.com hzmkdq.com hzmobius.com hzmogo.com hzmrcar.com hzmsholding.com hzmt001.com hzmtg.com hzmtjx.com hzmxkj.net hzmygg.com hzmylike.com hzncc.com hznet.tv hznetwk.com hznewface.com hznews.com hznkg.com hznrkj.com hznsh.com hzntjt.com hznunxc.com hznzcn.com hzok.net hzorganicchem.com hzou.net hzpcs.com hzpgc.com hzpswy.com hzpzs.net hzqfy.com hzqiuxue.com hzqj.com hzqjdz.net hzqlpt.com hzqsn.com hzqszl.com hzqvod.com hzqx.com hzqxbg.com hzqyhydrogen.com hzr1.com hzragine.com hzranqu.com hzrc.com hzrczx.net hzrdjt.com hzredream.com hzrib.com hzriyue.com hzrjjg.com hzrjkf.com hzrjmy.com hzrlciec.com hzrlhy.com hzrobam.com hzrqgf.com hzrsl.com hzrxsoft.com hzs2sc.com hzsaifang.com hzsanjiaomao.com hzsaso.com hzsbysj.com hzsbz.com hzsco.com hzscxsj.com hzsdjzgs.com hzsdlrmyy.com hzsdyfzfxxx.com hzseedcorp.com hzsgjj.com hzsh666.com hzshanjie.com hzshantai.com hzshengjia.com hzshudian.com hzshuren.com hzshw.com hzsjnxh.org hzslgf.com hzslgzx.com hzsmbio.com hzsnowcom.com hzsource.com hzsp.com hzspeed.com hzsports.net hzsqhb.com hzsqsmart.com hzsswjt.com hzstad.com hzstad88.com hzstar.com hzstarshuaier.com hzsteel.com hzstlzxyy.com hzsun.com hzsunup.com hzswmotor.com hzswysyy.com hzszls.com hzszyyy.com hztbc.com hztchj.com hztcm.net hztdjt.com hzteaexpo.com hztek.com hzthinker.net hztianchuang.com hztianlang.com hztiger.com hztssy.com hztuoliang.com hztvmg.com hztx.com hztzkj.net hzvillas.com hzvtc.net hzwan.com hzwatch.com hzwaye.com hzweiheng.com hzwentou.com hzwer.com hzwf.link hzwgc.com hzwindpower.com hzwlt.com hzwluo.com hzwmhp.com hzwmw.com hzwomenmarathon.com hzwotu.com hzwqscl.com hzwsa.com hzwsjyjt.com hzwtech.com hzwyx.net hzx.center hzx8188.com hzxbcs.com hzxddt.com hzxded.com hzxdfpr.com hzxdship.com hzxiangbin.com hzxiangshang.com hzxiaoya.com hzxinglong-ip.com hzxiyuege.com hzxma.com hzxqf.com hzxsjgxx.com hzxsjtzt.com hzxuanming.com hzxuhong.com hzxy888.com hzxyns.com hzxywlkj.com hzyanglao.com hzyaohao.com hzyapu.com hzyb.com hzyestar.com hzyhjg.com hzyhzp.com hzyidc.com hzyjd.com hzyllh.com hzylpco.com hzyn888.com hzyoka.com hzyoushu.com hzyqys.com hzyread.com hzyuejie.com hzyuewan.com hzywinf.com hzyxart.com hzyye.com hzyys.com hzyz.net hzyzxx.net hzzbco.com hzzckg.com hzzfxx.com hzzh.com hzzhaobiao.com hzzhhd.com hzzhileng.com hzzhiwei.com hzzhjs.com hzzhonggang.net hzzhonghao.com hzzhuode.com hzzhyl.com hzzhzm.com hzzjjsgc.com hzzjzk.com hzzkj.net hzzp.com hzzpko3186.vip hzzqzc.com hzzrmc.com hzzsfs.com hzzsxh.com hzztkj.com hzzuyin.com hzzx365.com hzzxyjhyy.com hzzxyy.com hzzzpt.com i-27.name i-520.net i-bei.com i-bestmind.com i-bigdatas.net i-click.com i-conference.org i-excellence.com i-f.work i-fanr.com i-firefly.com i-haitao.com i-hifi.com i-ktv.com i-lewan.com i-lu.cc i-m.dev i-manji.com i-markit.com i-md.com i-miguo.com i-mock.com i-modec.com i-mofang.com i-morefun.com i-mylab.com i-neeq.com i-now.com i-oranges.com i-same.com i-sensjs.com i-shu.com i-shunxi.com i-size.com i-swimmer.com i-tetris.com i-tongfang.com i-touchpanel.com i-vista.org i-weichuan.com i-xiaohaibao.com i-xinnuo.com i-xoron.com i-z-e.com i.dell.com i007.vip i027.com i0349.com i0469.com i0734.com i0746.com i075.com i0766.com i0898.org i11r.com i121.net i1236.net i1608.com i16949.com i171.com i1758.com i1766.com i178.info i1r.cc i2863.com i2abc.com i2eas.com i2finance.net i2ya.com i360mall.com i369.com i3839.com i3abox.com i3ciebwk6ixfb.com i3done.com i3dpworld.com i3geek.com i3gt.com i3smot.com i3vsoft.com i3yuan.com i3z.cc i4px.com i4t.com i51game.com i52tt.com i5399.com i56r.com i588ku.com i5a6.com i5i6.net i5p.com i5sto.com i5tea.com i66wan.com i6879.com i72.com i7car.com i7fh.com i7gg.com i7ol.com i7play.com i7txt.cc i8956.com i8i8i8.com i8toys.com i8tq.com i91pv.com i965300.com i987.com i9978.net i9dhjx.ru i9mr.com i9rht.com i9star.com ia-shenzhen.com iaapc.org iacstar.com iaddata.com iadmob.com iadmore.com iadpush.com iadtracker.com iaeac.org iagefans.com iai-robot.com iaion.com iaitao.com iaixue.com iajl.org ialicdn.com ialloc.com iamabio.com iambocai.com iameduwork.com iamfisher.net iamips.com iamle.com iamlintao.com iamlm.com iamshuaidi.com iamsujie.com iamtxt.com iamvloger.com iamvlogger.com iamxcb.com iamxiaoming.net iamxk.com ianbaby.com iandun.com ianvisa.com ianxing.com iaocwbk.com iaoligame.com iaoyou.com iaozi.com iaozu.com iape-js.com iapijy.com iapkk.com iapolo.com iappdaily.com iapple123.com iappler.net iapps.im iappsafe.com iappsign.com iappstoday.com iapptry.com iarlejz.com iars-wuhan.com iask-media.com iask.com iask.in iaskhot.com iasmr.cc iat-auto.com iautodaily.com iautodraw.com iautopress.com iavira.com iaviva.com iavlife.com iaxure.com iazhi.com ib-china.com ib3-gogin.com ibabyjoy.com ibadboy.net ibailve.com ibaiqiu.com ibaitiao.com ibaizhu.com ibanana.club ibanbu.com ibanggo.com ibangkf.com ibangquan.com ibangtiao.com ibanma.net ibanquan.com ibantang.com ibanyu.com ibaobay.com ibaoji.cc ibaoji.com ibaossl.com ibaotu.com ibaoxiu.net ibaralioho.com ibashu.net ibayapp.com ibb2b.com ibbwhat.com ibcet.org ibczy.com ibdxigualive.com ibdxiguavod.com ibee360.com ibeidiao.com ibeifeng.com ibeiig.com ibenxi.com ibestapp.com ibestfanli.com ibeta.me ibianma.com ibicn.com ibidian.com ibiji.com ibingniao.com ibiquge.info ibiquge.la ibiquge.net ibiquges.com ibiquges.info ibiquges.org ibiquke.com ibiquku.la ibiquxs.info ibiquxs.net ibiquzw.info ibireme.com ibituo.com ibixiaxs.com ibkcn.com ibkstore.com ibl520.com iblimg.com iblog.ren ibloger.net iblue.com iblue.me ibluefrog.com ibluesocial.com iblwl.com ibm-dns.com ibmfwqdl.com ibmhz.com ibmwclub.com ibobscs.com ibodao.com ibodyhome.com iboohee.com ibook8.com ibooker.cc ibooloo.com ibornclinic.com ibossay.com ibox.art iboxpay.com ibreader.com ibribery.com ibrilife.com ibroadlink.com ibruce.info ibscdn.com ibtsat.com ibucm.com ibuick.com ibuscloud.com ibuscloud.net ibuychem.com ibw.cc ibytedapm.com ic-bro.com ic-captain.com ic-itssc.org ic-king.com ic-ldo.com ic-leasing.com ic-mag.com ic-spic.com ic-valley.com ic001.org ic2china.com ic37.com ic71.com ic72.com ic98.com ic9cube.com ica-alliance.org icabcm.org icaew-china.com icafe8.com icafe8.net icai.vip icaidao.com icaifu.com icaile.com icall.me ican-x.com ican365.net icandata.com icaneasy.com icangshu111.com icanvideo.com icarbonx.com icardfinancial.com icaredbd.com icasiso.com icastlewar.com icax.org icbc icbc-at.com icbc-axa.com icbc-cz.com icbc-ltd.com icbc-uk.com icbc-us.com icbc.ae icbc.be icbc.jp icbcamg.com icbcasia.com icbcindia.com icbcit.com icbcleasing.com icbcme.ae icbcmy.com icbcparis.fr icbcpl.com icbcstandard.com icbcstandardbank.com icbcstandardresources.com icbcstandardsecurities.com icbcswiss.com icbcwallet.com icbeexpo.com icbkus.com icbuy.com icc.link iccchina.com iccessh.org iccgame.com iccgame.net icchaoren.com iccidchaxun.com iccircle.com iccsz.com icctbs.org iccvlog.com icdeal.com icdemi.com icdmall.com icdn2.com icdream.com icdt-conf.com ice.work ice1000.org ice138.com iceasy.com icebear.me icebound.cc icecloud-car.com icedropper.com iceflowsoft.com icefoxgame.com icehotisland.com iceinto.com icekylin.online icemle.org icentown.com icepie.net iceread.com iceriverbj.com icesimba.com icesofts.com icevpn.org icewingcc.com icewoo.com icfans.com icfcc.com icfgblog.com icfqs.com icfusions.com icg.cc icgbl.org icgebm.org icgoo.net icgu.com ich8.com ichacha.com ichanfeng.com ichang8.com ichangtou.com ichanyu.com ichaoshangyue.com ichaotao.com ichaotu.com ichat800.com ichatcn.com ichdata.com icheese.net ichehome.com ichemsafe.com ichenfu.com ichengli.com ichengsi.com ichengyun.net ichennan.com icheruby.net icheshi.com ichezhan.com ichhlj.com ichika.cc ichinaceo.com ichinaenergy.com ichong123.com ichongdao.com ichtcm.com ichuanglan.com ichuangye.com ichuanyi.com ichuguang.com ichunqiu.com ichunt.com ichzh.com iciba.com iciba.net icicicic.com icignacmb.com icinfo.net icirculation.com icitizens.net icitymobile.com icixun.com iciyuan.com icjs.ink ickeep.com icketang.com ickey.cc ickimg.com iclabcn.com iclicash.com iclickstatic.com icliexpo.com icljt.com icloud-power.com icloudcity.com icloudgslb.com icloudnative.io icloudnews.net iclouds.work icloudv6.com icloudwaf.com icmaxgroup.com icme14.org icminer.com icmomo.com icmp.link icmsdev.com icnal.com icnano-tech.com icncpc.com icnjob.com icnkr.com icntv.tv icntv.xyz icntvcdn.com ico-deli.com icoat.cc icoc.bz icoc.in icoc.me icoc.vc icodelogic.com icoderobot.com icofchina.com icomuimi.com iconntech.com icoolby.com icoonal.xyz icoou.com icoremail.net icos8.com icosky.com icostapp.com icosz.com icot.com icourse163.com icourse163.org icourses163.com icourses163.org icourt.cc icp.red icp100.net icp21.com icpapi.com icpbcm.org icpcdn.com icpcw.com icpdaili.com icpdf.com icpenguin.com icpenguin.net icphu.com icpisp.net icpkuaiban.net icplishi.com ics-sec.com icshanghai.com icsisia.com icslx.com icsoc.net icson.com icspec.com icsprout.com icstreet.com icsuns.com icswb.com ict18.com ict361.com ict88.com ictbda.com ictcsr.org ictdns.cloud ictdns.icu ictdns.store ictdns.tech ictehi.com ictest8.com ictlce.com ictown.com ictp-ap.org ictpaas.com ictun.com ictuniv.com iculture.cc icustomslawyer.com icv-ip.com icvcs.com icver.com icvip.com icxbk.com icxinli.com icy-capital.com icytown.com icyuyan.net icz.com iczhiku.com iczoom.com id-bear.com id-photo-verify.com id57.com id6.me ida-a.org idachu.com idacn.org idadt.com idailycar.com idaima.com idangyang.com idanpianji.com idaocao.com idaotuo.com idasai.com idatacube.com idataforces.com idatage.com idatagx.com idataway.com idatawz.com idayer.com idbhost.com idc-icp.com idc002.com idc021.com idc027.net idc029.com idc123.com idc129.com idc1680.com idc180.com idc218.com idc31.com idc35.com idc4.com idc400.com idc45.com idc789.com idc917.com idcay.com idcbdy.com idcbest.com idcbest.hk idccenter.net idcchacha.com idccom.net idccun.com idcd.com idcdoc.com idceb.com idcfengye.com idcgcloudcs.com idchz.com idchz.net idcicp.com idcicpdns.com idcjf.com idckx.com idcloudbase.com idcmz.com idcoffer.com idcpu.com idcquan.com idcsec.com idcser.com idcsh.com idcsmart.com idcsp.com idcspy.com idcspy.net idcss.com idctalk.com idctq.com idcug.com idcum.net idcun.com idcvendor.com idcvip.net idcwn.com idcwp.com idcys.com idcyunwei.org idczone.net idd1.com iddddg.com ideabody.com ideacarbon.org ideacms.net ideacreated.com ideaflow.pro ideagou.com ideaintellij.com idealbags.com idealcontrol.com idealdeposition.com idealeer.com idealideapromos.com idealjj.com idealshanghai.com ideanote.cc ideapool.tv ideappt.com idearhanyu.com ideasr.com ideassoft.com ideation.love ideazhao.com ideepin.com idejian.com idejian.net iden123.com idepu.org idesktopcal.com idevbase.com idgeeks.net idgou.com idgvc.com idianchou.com idianfa.com idiankj.com idianshijia.com idiaoyan.com idigi.net idingju.com idlegog.com idloves.com idlpc.win idmchina.net idmzj.com idnscloud.com ido-love.com ido512.com idoacg.com idocbank.com idocv.com idodb.com idol001.com idolmoba.com idom.me idong.ren idongde.com idongdong.com idongniu.com idongzhi.com idooshu.com idosend.com idotools.com idoupiao.com idouqu.com idourl.com idouyinliving.com idouyinpic.com idouyinstatic.com idouyinvod.com idouzi.com idoyun.com idqqimg.com idreamsky.com idreamsoft.com idrools.com idrwl.com idscn.net idshi.com idsoo.com idspub.net idss.shop idsuipai.com idtcdn.com idtechwh.com idu9.com iduba.com iduiying.com idukaqi.com iduochong.com iduodou.com iduokan.net iduomi.cc idux-vw.com idwzs.com idwzx.com idx365.com ie13.com ie515.com ie525.com ie57.com ie815.com ie915.com ie935.com ieasn.com ieasou.com ieasy123.com ieasyclick.net ieasytech.com ieasytest.net ieayoio.com iecdn.com iecidc.com iecity.com iecool.com iecworld.com ieduchina.com ieduglobe.com ieechina.com ieee-jas.net ieeepower.com ieeewifi.com ieeod0.com ieepa.org ieevchina.com iefang.com iefans.net ieffect.cc ieforever.com iefrd.com iefxz.com iegcom.com iegourl.com ieh-hz.com iehou.com ieisystem.com iejiu.com ieliulanqi.net ieltsabc.com ieltsonlinetests.com iemailforce.com iemblog.com iemiq.com iemnet.xyz iemouepk.com ienglish.store ienjoys.com ienjoys.mobi ientire.biz iepcn.com iepose.com ieppcn.com ierze.com iesdouyin.com iesdouyin.net ieshs.com ieshs.net ieshuodong.net ieshuoshan.com ieshuoshan.net iessay100.com ietdata.com ietheivaicai.com ietheme.com ietrcd.com ievision.com iewb.net iewie.org iewoai.com iewzx.com iex-group.com iexx.com ieyecloud.com iezuo.com if1f.com ifabao.com ifabiao.com ifaclub.com ifactz.com ifanbei.com ifangarden.com ifangka.com ifanpu.com ifanr.com ifanr.in ifanrcloud.com ifanrusercontent.com ifanrx.com ifareast.com ifatrabbit.com ifaxin.com ifaxin.org ifconfig.cc ifcresidence.com ifdian.net ifeart.ltd ifedge.com ifeehei.xyz ifeilian.com ifeimo.com ifeng.com ifengcdn.com ifengcu.com ifenghui.com ifengidc.com ifengimg.com ifengli.com ifenglian.com ifenglife.com ifengmap.com ifengo.com ifengpai.com ifengqun.com ifenguo.com ifengweekly.com ifengwoo.com ifengyin.com ifensi.com ifenxi.com ifenxiang.cc ifere.com ifeve.com iffline.com ifindever.com ifintechnews.com ifireeye.com ifireflygame.com ifish7.com ifitbox.com ifjing.com ifjqq.com ifkeji.com iflix.com iflow.work iflowercity.com iflyadx.com iflyaiedu.com iflydatahub.com iflydocs.com iflygse.com iflyhealth.com iflying.com iflyink.com iflyiot.com iflynote.com iflyread.com iflyrec.com iflyresearch.com iflysec.com iflytek.com iflytektstd.com iflytoy.com ifmtech.com ifnews.com ifonelab.net ifonts.com iforce-ad.com iforce-media.com ifoxfactory.com ifoxhui.com ifread.com ifreecdn.com ifreecomm.com ifreedom.icu ifreedom001.com ifreetalk.com ifreeurl.com ifresh.mobi ifromvr.com ifscity.com ifseclabs.com ifshot.com ifundstore.com ifunmac.com ifutest.com ifutureworks.com ifxtx.com ifzxs.cc ifzzw.com igaichong.com igame007.com igame58.com igamecj.com igandan.com igao7.com igaoda.com igaokaopai.com igaosheng.com igarwin.com igbill.com igdzc.com igea-un.org igeak.com igeciku.com igeekbar.com igeekys.com igehuo.com igeidao.com igelou.com igenetech.com igengmei.com igeshui.com igetget.com igetmall.net igetui.com igevin.info igexin.com igimu.com igkbroker.com iglda.com iglqh.com igo180.com igocctv.com igome.com igomkt.com igoodgame.com igooma.com igou.com igoyx.com igps123.com igpsport.com igptex.com igreatdream.com igrs.org igta.vip igtm-a101.com igtm-b101.com igtm-c101.com igtm-d101.com igtm-e101.com igtm-meeting-tencent.com igtm-yuanbao.com igtm.pub iguaka.com iguangdiu.com iguanyu.com iguazutraffic.xyz iguder.com iguitar.me iguizao.com iguming.net igumo.cc iguoguo.net iguopin.com iguoplay.com iguowan.com iguoyin.com iguxuan.com igwfmc.com igwzx.com igxbaidu.net ihacksoft.com ihaier.com ihaima.com ihaique.net ihaiu.com ihaiyan.com ihanbridge.com ihanghai.com ihanhua.com ihani.tv ihansen.org ihanshi.com ihaohaoxuexi.com ihaoma.icu ihaoqu.com ihaoxi.com ihaozhuo.com ihappy.vip ihappystudio.com ihappystudio.net ihasl.com ihdt.tv ihdty.com ihealthcoming.com ihei5.com iheima.com ihello.cc ihelpy.net ihemuu.com ihenda.com ihengheng.com ihepa.com ihggccampaign.com ihicon.com ihigee.com ihint.me ihisce.com ihitui.com ihitun.com ihkk.net ihlimtv.com ihmch.com ihnhr.com ihomefnt.com ihomesoft.net ihongde.com ihongma.com ihongmeng.tech ihongpan.com ihonker.com ihotchip.com ihou.com ihourglass.club ihowguide.com ihqfo.org ihr360.com ihrscloud.com ihst8.com ihstatic.com ihtcboy.com ihtmlcss.com ihtwmi.yachts ihuaben.com ihuan.me ihuang.org ihuanling.com ihuanque.com ihuayou.com ihuazhan.net ihuge.net ihui.com ihuidian.com ihuigo.com ihuipao.com ihuisida.net ihuman.com ihumand.com ihuntto.com ihuoli.com ihuoqiu.com ihuoshanimg.com ihuoshanlive.com ihuoshanstatic.com ihuoshanvod.com ihuoyan.com ihupo.com ihuyi.com ihwrm.com ihxlife.com ihyhs.com ihying.cc ihykb.com ihypnus.com ihypo.net ihytv.com ihzzy.com ii.td ii010.com ii090.com ii35.com ii77.com iianews.com iiaq.net iiast.com iiauuw.com iibechina.com iibq.com iicall.com iicats.com iicha.com iicheese.com iicp.net iicz.cc iidns.com iidx.fun iieii.com iiesz.com iieye.cc iii80.com iiiaaa.com iiiddd.com iiiib.com iiiimg.com iiijk.com iiiview.net iikuzhan.com iikx.com iinhotel.com iinorii.com iiolink.com iiong.com iipcloud.com iipiano.com iirii.com iirpwigs.com iis7.com iis7.net iis8.com iischool.com iisfree2.com iisp.com iispbdy.com iissnan.com iitang.com iitcp.com iithz.com iitol.com iituku.com iivd.net iivey.com iiwoo.com iiyi.com iiyiyi.com ijatv.com ijh.cc ijheng.com ijia120.com ijia360.com ijiandao.com ijiangyin.com ijianji.com ijiaoxue.net ijiatv.com ijicai.com ijie.com ijiebao.com ijiedian.com ijiela.com ijieo.com ijindun.com ijingdi.com ijingyi.com ijinshan.com ijinzhuan.com ijishu.cc ijiwei.com ijiwen.com ijizhi.com ijjnews.com ijkuhygabc.work ijkxt.com ijml.net ijnqc.com ijovo.com ijq.tv ijsi.org ijson.com ijsp.net ijuanshi.com ijuer.com ijuhepay.com ijunhai.com ijunxun.com ijuzhong.com ijxuitr.com ijycnd.com ijzhang.com ik123.com ik3cloud.com ikafan.com ikahe.com ikaixun.com ikaka.com ikanchai.com ikang.com ikanoo.com ikantu365.com ikaolaa.com ikaowu.com ikcd.net ikcest.org ikck.com ikcrm.com ikcw.com ikdmjx.com ike-global.com ikebukuro777.org ikeled.com ikemeng.com ikepu.com ikgambwqeqnv.com ikhimalayaniq.com ikj123.com ikj168.com ikjds.com ikjtao.com ikjxc.com ikmoo.com ikmt.net ikncn.com ikonfx.com ikongjian.com ikongjun.com ikonke.com ikoori.com ikozn.com ikqtcbva.com iksea.com ikuai8-wifi.com ikuai8.com ikuaicai.com ikuailian.com ikuaimi.com ikuaiyue.com ikuajing.com ikuayou.com ikuju.com ikunac.com ikuncdnfb.com ikunpay.com ikupan.me ikx.me ikxnes04.com ikyy.cc ikzybf.com il8r.com ilab-x.com ilabilab.com ilaisa.com ilaitui.com ilangqu.com ilanni.com ilanyao.com ilanzou.com ilaoyou.com ilaozhu.com ilaw13.com ilaw66.com ilawpress.com ilazycat.com ilcweloc.com ilea-roswell.org ileadsun.com ileapcloud.com ileci.com ileedarson.com ileehoo.com ileju.com ileopard.com ileshua.com iletou.com ilewan.com iliangcang.com ilianwo.com ilianyue.com ilibrand.com ilifesmart.com ilikemanga.com ilingdai.com ilinki.net ilinkmall.com ilinkone.com ilinksure.com ilinuxkernel.com ilinyi.net ilishi.net ilivehouse.com ilixiangguo.com iliyu.com ilkwork.com illl.xyz ilmgq.com ilohas.com iloli.bid iloli.xin ilongre.com ilongterm.com ilonhoo.com iloveanan.com ilovechao.com ilovefishc.com iloveopened.com ilovey.live iloveyouxi.com ilovezuan.com ilovezz.com ilsungf.com ilucky.net iluckysf.net iluezhi.com ilufan.com iluhang.com ilustrepro.com iluvatar.ai iluvatar.com ilux.ai ilvxing.com ilxdh.com ilxtx.com ilydjk.com ilz.me im-cc.com im-ch.com im.ci im286.com im286.net im2maker.com im323.com im577.com im5i.com imaccn.com imachina.com imaegoo.com image-tech.vip imageaccelerate.com imageedu.com imagefuture101.com imagehub.cc imagelol.com imageoss.com imageplusplus.com imageplusplus.net imagepy.org imagerjt.com images-cache.com images.samsung.com images3.tripcdn.com imagestoryai.com imageter.com imagetotxt.com imagiclouds.com imaginde.com imagineadtech.com imags-google.com imaibo.net imaicai.mobi imaijia.com imaitu.com imalljoy.com imallvip.com imalun.com imandarin.net imanke.com imao2.com imaojiang.com imarketchina.com imarkr.com imaschina.com imatlas.com imayitxt.com imazingchina.com imbackr.com imbeiyu.com imblog.in imbtk.com imcart.com imcclinics.com imcec.org imchinese.net imcn.me imcome.net imcoming.com imconlinereg.com imcq.net imd-marketing.com imdadui.com imdmedical.com imdo.co imdodo.com imdst.com imedao.com imedcloudimage.com imedera.com imedicalai.com imedlab.net imedp.com imeete.com imeete.net imeete1.com imeete2.com imeete3.com imeete4.com imeeton.com imefuture.com imeidb.com imeihei.com imeimama.com imeiren.com imeirongyi.com imeishike.com imeitools.com imeitou.com imelai.com imeme.tv imetacloud.com imeyahair.com imfirewall.com imfooww.com img-space.com img-static.tech img-sys.com img.beauty img.ink img.net img.run img.samsungapps.com img.vin img001.com img005.com img168.net img16888.com img4399.com img898.com imgbed.link imgcdc.com imgchr.com imgcook.com imgdd.cc imgdianying.com imgdianyingoss.com imge.cc imgeek.net imgeek.org imgets.com imgii.com imgkr.com imglefeng.com imglink.win imgmarket.net imgmg.com imgo.tv imgs.ovh imgscdn.com imgse.com imgsha.com imgsina.com imgsohu.com imgtex.com imgtg.com imgurl.org imgyzzy.com imgzy360.com imhan.com imhdr.com imhuchao.com imiaomeng.com imibaby.net imibao.com imicome.com imifun.com imigu.com imiker.com imile-inc.com imile.com imindmap.cc imitui.com imixpark.com imjiayin.com imkero.net imkevinyang.com imlaidian.com imlazy.ink imlb2c.com imlianai.com imlianpu.com imliuyi.com imlizhi.com immediate49.com immeee.com immfast.com immi520.com immiexpo.com immiknow.com immivip.com immomo.com immomogame.com immotors.com immune-path.com immusician.com immviragroup.com imnerd.org imnight.com imnks.com imobile-ent.com imoe.me imoe.tech imoeer.com imofan.com imoffice.com imok.net imok.run imoke.org imol.cc imolive.tv imoo.com imooc.com imoocc.com imop.com imosi.com imotao.com imotion.group imoto.love imou.com imovideo.ru imp3.net impcochina.com imperfectionstudio.com imperial-vision.com imperialsprings.com imperialspringsforum.org impk.cc impnails.com importingtochina.com improd.works improve-ai.com improve-medical.com impta.com imqianduan.com imqq.com imqq.net imquzan.com imrfresh.com imrobotic.com imroc.cc imscv.com imsharecenter.com imshu.cc imshusheng.com imsilkroad.com imsinoexpo.com imsle.com imsun.net imsyy.com imtaweb.net imtics.com imtmp.net imtrwqjier3.com imtuan.com imtyimages.vip imudgame.com imugeda.com imuke.com imummybiz.com imusicking.com imvictor.tech imvtc.com imwaco.com imwallet.com imweb.io imweia.com imwexpo.com imwork.net imwzh.com imx365.net imxh.com imxiaomai.com imxingzhe.com imxpan.com imycdn.com imycloud.com imydns.net imyfone.club imyike.com imyouxin.com imys.net imyshare.com imyuedu.com imyushu.com imzego.com imzhanghao.com imzhongxin.com imzhuomo.com imzudian.com imzy.ink in-driving.com in-en.com in-freight.com in-int.com in-tencentclb.cloud in-tencentclb.com in-tencentclb.net in-tencentclb.work in.th in001.com in66.com in800.com in853.com in955.com inabr.com inad.com inadvanceof.com inaink.com inav.site inbeing.net inbilin.com inbooker.com inboyu.com inc365.com incake.net incensechina.com inch.red inchitech.com incker.com incloudexpo.com incomperlite.com incomrecycle.com incopat.com increasedct.com incsg.com inctrip.com ind-map.com ind4.net ind9ed.com indetek-lab.com indexea.com indexedu.com indexedu.net indexfor.fun indexmob.com indics.com indielight.net indienova.com indier.com indigobeijing.com indmi.com indochinatraveladvisor.com indonesia-daily.com indubd.com industrybamboo.com industryillusion.com induta.com inekoxia.com inengyuan.com inesa-it.com inesa.com inetech.fun inetmaster.net inewhope.com inewoffice.com inewskeji.com inexbot.com infarts.net inferoey.com infertilitybridge.com infimotion.com infineon-autoeco.com infini-ai.com infinisign.com infinitescript.com infinity8ball.com infinitynewtab.com infinitytab.com inflyway.com info-insur.com info-monitor.com info-onesky.com info.cc info10.com info110.com info35.com infobidding.com infobigdata.com infocloud.cc infoeach.com infohand.net infohpc.com infoier.com infoldgames.com infomorning.com infong.net infoobs.com infoodfamily.com infoq.com infoqstatic.com inforbus.com inforeenviro.com inforguard.net informrack.com inforsec.org infosoft.cc infovc.com infoview.com infowuxi.com infoxgame.com infoxiao.com inframe.mobi inftab.com infyniclick.com infzm.com ing10bbs.com ingageapp.com ingags.com ingaoyt.biz ingcore.com ingdan.com ingeek.com ingenic.com ingkee.com ingping.com ingping.net ingzhong.com inhalpharma.com inhdd.com inhe.com inhe365.com inheweb.com inhuawei.com ini5.com inibiru.com inicoapp.com inidc.net ininin.com initaa.com initac.com initaf.com initah.com initaj.com initbb.com initcc.com initdd.com initff.com initialview.com initjj.com initkk.com initll.com initmm.com initnn.com initpp.com initqq.com initroot.com initrr.com inittt.com inituu.com initvv.com initww.com initxa.com initxb.com initxx.com initzz.com inja.com injectionmachine.com injoinic.com ink4you.com inkankan.com inkcc.net inkcn.com inke.com inke.tv inkeygo.com inkonlife.com inkonote.com inktok.com inkuai.com inkwai.com inlandschool.com inlaylink.com inlighting.org inlishui.com inliuzhou.com inluckcalendar.com inmeng.net inmense.site inmuu.com inmyshow.com innatek.com innnnnn.com inno3d.cc innobm.com innocn.com innocomn.com innodealing.com innofidei.com innogenpharm.com innohere.com innojoy.com innolcon.com innomd.org innomddesign.com innopack97.com innoplayfun.com innopro.cc innos.com innotechx.com innotek-co.com innotimegood.com innotron.com innov-xsystem.com innovagt.com innovane.com innovatedigital.com innovationmetal.com innoventbio.com innover.com innoveronline.com innovidcn.com innovisgroup.com innovmedicine.com innvitor.com ino3w.com inoherb.com inoneh5.com inong.net inoteexpress.com inovance-automotive.com inovogen.com inovppg.com inovpu.com inping.com inpla.net inplayable.com inputmore.com inqan.com inrice.com inrice.zone inrugao.com ins110.com insagee.com insarticle.com insenz.com inshion.com inshotapp.com insigma-elec.com insistence.tech insmoin.com insnail.com insneu.com insnex.com insome.com inspeed.biz inspirecloud.com inspmobi.com inspur.com inspurcloudoss.com inspuronline.com inspurpower.com inspurpower.org insta360.com instafogging.com installgreat.com installwage.com instantinfographicspresence.com institution2.com instome.com instrument95.com insulators-china.com insun-china.com inswindow.com insxz.com insytone.com int-agri.com int2018.com int800.com intaek.com intdmp.com intecheye.com intecol-10iwc.com intedc.com integrity-funds.com intekey.com intel-space.com intelcupid.com intellect.black intelligen.ltd intelligence-electricity.net intelligentmanufactory.com intelvisioncn.com intencent.com inter-credit.net inter-rock.com inter1908.net interactivebrokers.hk interchinawater.com interface003.com interiorous.com international-gfe.nvidia.com internationalbrand.net internbird.com internetke.com internettrademark.com intertid.com interval.im intimerent.com intlgame.com intlqydd.info intlscdn.com intmedic.com intmes.com intohard.com intomod.com intopet.com intostarry.com intovfx.com intowz.com intozgc.com intple.com intramirror.com intsavi.com intseamultiply.com intsig.com intsig.net intvolunteer.com intwho.com intwing.com inuobi.com inuorui.com inuu6.com inuyasha.love invaluablu.com inveno.com inverter.so invescogreatwall.com invest-data.com investassistant.com investbjdx.com investgohn.com investoday.net investorscn.com investstkitts.org invocean.com invoee.com invzible.com inwaishe.com inwatch.cc inwuoo.com inxedu.com inxni.com inxunoffice.com inyota.com inzone-auto.com inzotek.com ioa365.com ioage.com ioasaas.com iocdn.cc iocrest.com ioe-times.com iofange.com ioffershow.com ioffice100.com iofomo.com ioigamer.net ioiosafe.com ioiox.com ioiox.net ioioz.com iok.la iol8.com ioms.cc ionchi.com ioncol.com ioneball.com ionewu.com iongentherapeutics.com iooeoo.com iooqoo.com ioozu.com iopenhec.com iophthalmology.net iopiopl.com ioppo.net ioptics.org iorca.net iornnl.xyz ios114.com ios222.com ios98.com iosask.com ioser.fun iosfengwo.com ioshacker.net iosi.vip iosre.com iosrxwy.com ioswg.com iosyyds.com ioszc.com ioszn.com iot-cas.com iot-dc.com iot-tencent.com iot.moe iot0.net iot1001.com iot101.com iot688.com iot889.com iotachem.com iotbay.com iotfair.net iotku.com iotmag.com iotmore.com iotpai.com iotrix.net iotronic.tech iotrouter.com iots.vip iotsafe.net iotshifang.com iotweixin.com iotwrt.com iotxing.com iotxx.com iotyeas.com iotyes.com iouluo.com ioxqm.com ioxray.com ioxunyun.com ip-cdn.com ip-guard.net ip-hercules.com ip-soc.com ip008.com ip138.com ip159.com ip181.com ip192.com ip33.com ip3366.net ip518.com ip66.com ip66.net ip669.com ip77.net ip777xxx.com ip87.com ip938.com ipackbynewstep.com ipadown.com ipadump.com ipadview.com ipaiban.com ipail.com ipalfish.com ipalmap.com ipampas.com ipanda.com ipanda.net ipandao.com ipandata.com ipangcai.com ipanocloud.com ipanta.com ipaobuji.com ipaochaxun.com ipaomi.com ipaotuan.com ipapark.com ipason.com ipay.so ipaylinks.com ipcelou.com ipchaxun.com ipchaxun.net ipcmen.com ipcodm.com ipcorecatalog.com ipctest.com ipcwifi.com ipdaili.com ipdatacloud.com ipddz.com ipdfmaster.com ipdftool.com ipdodo.com ipdsms.com ipduoduo.cc ipduoduo.com ipdz.me ipease.net ipehr.com ipeijiu.com ipengchen.com ipengtai.com iper2.com ipetct.com ipexp.com ipfeibiao.com ipfen.com ipfsbit.com ipgoal.com ipguishu.com iphonediule.com ipin.com ipinba.com ipingke.com ipingyao.com ipinyou.com ipip.net ipjingling.com ipjisuanqi.com ipktv.com ipku.com iplascloud.com iplay11g.com iplay365.com iplaypy.com iplaysoft.com iplcn.com iplusmed.com iplwin999.com ipmay.com ipmi.cc ipmoniqi.com ipmost.com ipmotionmc.com ipmph.com ipo.hk ipo.la ipo1688.com ipo3.com ipoceo.com iposeidonbussiness.com iposeidoncdn.com iposeidongame.com ipostalcode.com ipple.net ipplus360.com ippsport.com ippzone.com ipr007.com ipr114.net ipr123.com iprabc.com iprchn.com iprdaily.com iprdp.net ipresst.com iproyal.co iprtop.com iprub.com iprun.com ips.com ips8.com ipsebe.com ipshu.com ipshudi.com ipsmap.com ipssh.net iptalent.com iptrm.com ipts.com iptvlm.com iptvzj.com ipuer.com ipuu.net ipv4.host ipv4dns.com ipv6-only.com ipv6dns.com ipv6radar.com ipv6testingcenter.com ipwuji.com ipyy.com iq123.com iq33.com iqalliance.org iqbuud.lol iqbxq.com iqcrj.com iqdedu.com iqdii.com iqdnet.com iqhmh.com iqianggou.com iqianjin.com iqianyue.com iqianzhan.com iqiaowai.com iqidian.com iqihang.com iqilu.com iqilun.com iqimengkj.com iqinbao.com iqingguo.com iqingren.com iqingua.com iqingyi.com iqinshuo.com iqinzhou.com iqishu.la iqiyi.com iqiyiedge.com iqiyiedge.net iqiyih5.com iqiyipic.com iqmie.com iqnew.com iqoo.com iqr.cc iqtianshanmw.com iquanba.com iquanben.net iquanfen.com iquanpai.com iquanwai.com iquaveizeeru.com ique.com iquegui.com iquhuo.com iquickfish.com iqujing.com iqunix.com iqunix.store iqupdate.com iqxbf.com iqxedu.com irain.in irainone.com iranmahanair.com iranshao.com iraoping.com irbsh.com irc-risk.com ircmnr.com ireader.com ireader.live ireadercity.com ireaderm.com ireadweek.com ireadyit.com irealbest.com irealcare.com irealtech.com irecyclingtimes.com iredwhale.com ireeda-tech.com irelandvisacenter.com iremaker.com iremax.hk iremax.net iresarch.com iresearchad.com iresearchchina.com irest.tv irestapp.com irexy.com iridescent.ink irisdt.com irisdt.net irisgw.com irisgw.net irising.me irlianmeng.com irmleader.com irober.com irobotbox.com irockbunny.com iroing.com ironfishchina.com irongbei.com ironghui.com irootech.com irort.com irouteros.com irqpa.work irrichina.com irs01.com irs01.net irs03.com irskj.com irsnp.com irtouch.com iruanmi.com iruanshi.com iruidian.com iruixing.com irunner.mobi iryoucai.com is-programmer.com is02041qqp.xyz is36.com is404.com is686.com isa-hsse.com isa1751.com isagzfls.com isagzlw.com isagzlwis.com isagzlws.com isagzsc.com isagzth.com isahome.net isaieg.com isamanhua.com isameforum.org isapt.com isawhis.com isawhs.com isawuhan.com isay365.com isay365.net isayabc.com isbdai.org iscanchina.com iscrv.com isdox.com isdpp.com iseacat.com iseafood.shop isealsuite.com isecsp.com iseedog.com iseekids.com isellerpal.com isenruan.com iseoku.com isf.ink isfashion.com isfdz.com isfirst.net isgo.com ish168.com ishaanxi.com ishaibiao.com ishala.com ishang.net ishanghome.com ishangman.com ishangtong.com ishangu.com ishanjian.com ishansong.com ishaohuang.com isharepc.com isheely.com isheji.com isheji5.com ishell.cc ishenbao.com ishengxue.com ishenping.com ishenyou.com ishijing.com ishipoffshore.com ishouhong.com ishoujizhuan.com ishouka.com ishouping.com ishowchina.com ishowx.com ishubao.org ishugui.com ishuirong.com ishuiyun.com ishumei.com ishuocha.com ishuqi.com ishuqi.net ishuquge.com ishuquge.la ishuquge.org ishuw.com isi-gf.com isiabio.com isign.ren isigqno.com isigu.com isilent.me isilicontech.com isiluke.net isiluke.org isilvermaterials.com isimcere.com isinosig.com isixiang.com isixue.com isjike.com iskryou.com isky000.com iskyjoy.com iskyone.com iskysoft.com islandren.com isli.cc islide.cc isluo.com ismartgo.com ismarthealth.com ismartware.com ismdeep.com isme.pub ismisv.com ismsms.org ismx8.com isnnapp.com isnsz.com iso-est.com iso-iso9000.com iso2004.com iso37001rz.com iso9001rz.com isobar.tech isocgw.net isoftstone.com isogx.com isolves.com isong520.com isongcontrol.com isoqh.com isorange.com isorenzheng.org isosh.com isotoo.com isoucai.com isoudy.com isoyes.com isoying.com isoyu.com isozhijia.com isp.cx ispcache.net ispecial.xyz ispqcloud.com isrcb.com isres.com iss-ms.com isscloud.com issconline.com issedu365.com issjj.com issks.com ist-zl.com istarshine.com istartsurf.com istcw.com istoreos.com istpei.com istrongcloud.com istrongcloud.net istylepdf.com isuanyun.com isudaji.com isuike.com isummi.com isun.org isunon.com isunton.com isurecloud.net isuzhou.me isv-tech.com isvee.com isvjcloud.com isvjd.com isvup.com iswbm.com isweek.com iswifting.com iswweb.com isxtv.com isyour.love it-bound.com it007.com it0772.net it120.cc it165.net it168.com it2021.com it2168.com it224.com it322.com it376.com it399.com it478.com it5.cc it525.com it528.com it578.com it610.com it666.com it689.com it707.com it7t.com it8.com it8g.com it918.com it985.com it9g.com itab.link itacademy.download.prss.microsoft.com itacademyuat.download.prss.microsoft.com itaconicacid.com itaic.org itailai.com itaiping.com itakeeasy.com italyvisacenterd.com itamt.com itangbole.com itangyuan.com itanlian.com itany.com itany.org itanzi.com itao.com itaoke.org itaokecms.com itaored.com itaotuo.com itaoxiaoshuo.com itasci.com itav-gz.com itayao.com itbaizhan.com itbegin.com itblw.com itboth.com itbour.com itboy.net itbug.shop itbulo.com itbulu.com itbuy.com itbyte.net itc.vip itcdlf.com itceo.com itchaguan.com itcm.com itcn.cc itcodemonkey.com itcpn.net itcqf.org itczh.com itdabao.com itdai.com itdayang.com itddo2page.com itdevnow.com itdks.com itdog-dns.com itdog.com itdog.plus itdoisp.com itdoor.net itdos.com itdos.net itdp-china.org iteam-dress.com iteblog.com itechate.com itedou.com iteer.net itek-training.com itelecloud.com itensoft.com iter168.com itest.info itetc.org itexamprep.com iteye.com itfanr.cc itfaster.com itfeed.com itfenghui.com itfly.net itfox.net itfsw.com itfw5.com itgd.net itgeeker.net itgege.com itgemini.net itgochina.com itgoodboy.com itgsa.com ithard.com itheat.com itheima.com itheima.net ithenticatecn.com ithey.com ithlj.com ithome.com ithome.net ithor.com ithor.net ithothub.com ithov.com ithuangw.com itiankong.com itiankong.net itianliao.com itiexue.net itigergrowth.com itigergrowtha.com itigerup.com itilxf.com itilzj.com itimotor.com itingwa.com itjoy.net itjspx.com itjuzi.com itkuku.com itlic.com itlog.vip itlu.org itlz.net itma.org itmakes.com itmanager.club itmanbu.com itmind.net itmoocs.com itmop.com itmuch.com itmuke.com itmyhome.com itnavs.com itnb.cc itnec.org itnihao.com itnxs.com itoec.org itoegd.com itogame.com itoka.com itokit.com itokoo.com itongcheng.cc itonghui.com itonglian.com itongzhi.com itopcoupon.com itopers.com itophis.com itopplay.com itopsdk.com itotii.com itouchchina.com itougu.com itoumi.com itoutiao.co itoutiaoimg.com itoutiaoliving.com itoutiaostatic.com itoutiaovod.com itower-soft.com itoyfx.com itpon.com itpow.com itptg.com itpub.net itpux.com itpwd.com itqaq.com itrace.cc itrackstar.com itredu.com itrid.com itrip.com itripsh.com itrolexshop.com itruelife.com itruke.com itrus.com itruscloud.com itrusign.com itry.com its114.com itsapu.com itsdz.com itshai.com itshubao.com itsiwei.com itsk.com itslaw.com itsmephoto.net itsoku.com itsto.com itsun.com itsvse.com ittellyou.com ittft.com ittime.com itto100.com ittribalwo.com ituad.com ituchong.com ituite.com ituopeng.com iturco.com itutu.tv ituu.net ituun.com ituut.com itv.video itvcn.com itvssp.com itwanger.com itwlw.com itwork.club itwsms.com itxe.net itxia.club itxp365.com itxst.com itxtbook.com itxueyuan.com ityears.com ityg.com itying.com ityizu.com itylq.com ityouknow.com ityxb.com itzhai.com itzhimei.com itzhp.com itzjj.com itzm.com itzmx.com itzmx.net iu18.com iu95522.com iuban.com iucars.com iucdn.com iuctrip.com iufida.com iuinns.com iuiu.site iujkegbpo.xyz iumemo.com iuni.com iunv.com iuoooo.com iusersurvey.com iusertracker.com iusmob.com iuynfg.com iv06.com iv2i.com iva-schmetz.com ivali.com ivanli.cc ivban.com ivcheng.com ivdchina.org ivdys.com ivemusic.net iventoy.com iverycloud.com ivfchina.net ivfdhc.com ivfuture.com ivideostar.com iviewui.com ivinkon.com ivipi.com ivips.site ivistang.com ivixivi.com ivknow.com ivolces.com ivon.work ivqamtkr.com ivrwan.com ivsky.com ivu4e.com ivvajob.com ivwen.com ivxiaoyuan.com ivy-school.org ivybaby.me ivydad.com ivykit.com ivypha.com ivypub.org ivyschools.com ivysci.com ivysun.net ivywing.me iwala.net iwan4399.com iwan78.com iwanbei.com iwanboy.com iwangding.com iwangnan.com iwanoutdoor.com iwanshow.com iwanws.com iwapan.com iwatani-gz.com iwatch365.com iwatertech.com iway-tech.com iwcoo.com iwebad.com iwebchoice.com iwecan.net iweek.ly iweekapi.com iweidu.net iweixiu120.com iweju.com iwellen.com iwen1.com iwencai.com iwenchuan.com iwenson.com iwewin.net iwgame.com iwhalecloud.com iwhopro.com iwhr.com iwhr.org iwiki.com iwin10.net iwingchina.com iwiscloud.com iwishwed.com iwith-smart.com iwithu.net iwjw.com iwmmob.com iwncomm.com iwooji.com iwopop.com iwordnet.com iwordshow.com iwosai.com iwpai.com iwshang.com iwte-expo.com iwteexpo.com iwuchen.com iwurexs.info iwurexs.net iwurexs.org iwwwwwi.com iwxapi.com iwyvi.com iwzbz.com iwztc.com iwzwh.com iwzwy.com ix-edu.com ixbk.fun ixbk.net ixbren.net ixdc.org ixfc.net ixgvideo.com ixianlai.com ixiaochengxu.cc ixiaoma.com ixiatxt.com ixigua.com ixiguavideo.com ixilou.com iximo.com ixingfei.com ixinglu.com ixingmei.com ixingpan.com ixingyan.com ixinqing.com ixintu.com ixinwei.com ixinwenjie.com ixinwu.com ixinyou.com ixiqi.com ixiumei.com ixiupet.com ixiway.com ixizang.com ixmtx.com ixmu.net ixpsge.com ixpub.net ixs.la ixsz.com ixuanquge.com ixuanshu.net ixuenong.com ixueshu.com ixueyi.com ixueyi.net ixunke.com ixxzx.com ixy68.com ixywy.com ixzzcgl.com iy-cd.com iyamusic.com iyangxi.com iyaou.com iyatt.com iyawoqu.com iyaxi.com iyaxin.com iyaya.com iyaya.info iyb.tm iybtv.com iycsky.com iydsj.com iydu.net iyeeda.com iyemao.cc iyenei.com iyeren.com iyiji.com iyincaishijiao.com iyingdi.com iyingji.com iyint.com iyiou.com iyiqi.com iyishengyuan.com iyitu.com iyiyu.com iymark.com iyocloud.com iyong.com iyongpdf.com iyooread.com iyoou.com iyoucai.com iyoudui.com iyouhun.com iyoujia.com iyoujiao.net iyouke.com iyoule.com iyouman.com iyouqian.com iyouxia.com iyouxin.com iyouxun.com iyruan.com iysj.com iytc.net iytcdn.com iyuan.ltd iyuanpei.cc iyue.pub iyuedan.com iyuedian.com iyuezhang.net iyun.com iyunbao.com iyunbiao.com iyunche.com iyunmai.com iyunmu.com iyunnan.travel iyunshu.com iyunv.com iyunxh.com iyunxiao.com iyunyue.com iyunzk.com iyuren.com iyuxiyang.com iyxing.com iyxku.com iyyin.com iyz168.com izacholsm.com izaodao.com izatcloud.net izazamall.com izb.pub izdatatech.com izenith.co izestchina.com izgfu.com izhailong.com izhanchi.com izhangan.com izhangchu.com izhangheng.com izhaohe.com izhaoo.com izhaowo.com izhenxin.com izhihuicheng.net izhihuo.com izhikang.com izhiliao.com izhiqun.com izhishi.com izhixiu.com izhuanfa.com izhuce.com izhuose.com izhuyue.com izihun.com iziyo.com izjj.com izmzg.com izpan.com izpec.com izqdn.com izstz.com izsvip.com izt8.com iztigcpk.com izto.com iztwp.com iztzq.com izuche.com izuchebao.com izuchecdn.com izuciw.com izuichun.com izuiyou.com izumicn.com izywang.com izyz.org izz.cc j-dun.com j-gsexpress.com j-h-k.com j-smu.com j-techcnc.com j-test.com j-ui.com j03og.app j0g0.com j1000plan.org j1998.com j1j5q683cj.world j2822.com j2ee.cc j2up.com j3cx.com j43439.com j4lpr.com j5.cc j5k6.com j66.net j8.net j8j9.com j95a.com j99h8.com j9pic.com ja-cloud.com jaadee.com jaadee.net jab88.com jabansk-auymon.com jabizb.com jabpark.com jabrehoo.com jaccsz.com jacheng.com jackeylea.com jackon.me jackxiang.com jacky-blog.com jackyang.me jackytong.com jackyyf.com jackzhu.com jacoll.com jacxw.com jadeclass.com jademond.net jadetowerccrc.com jadewd.com jadyf.com jaeapp.com jaebanke-jocelyou.com jaebanke-nochujapazsn20.com jaebanke-nochujapazsn5.com jaecdn.com jaedu.com jaeger-hello.com jaeosc.com jaf-china.com jafeney.com jafie.org jafron.com jafronclub.com jafroninternational.com jagjj.com jaguar-guangdong.com jaifang.com jaja123.com jaka.com jakabiotech.com jakeai.com jakehu.me jalorsoft.com jamalube.net jamcz.com jamidol.com jamms.org jammyfm.com jampotgames.com janbao.net jandan.com jandan.net jane7.com janezhang.com janezt.com jangho.com jangyuanzhao.com janpn.com janrain.biz janrainservices.com jansonco.com japanhr.com japansoufun.com jarczpw.com jarencai.com jarhu.com jarods.org jarvisw.com jasangroup.com jasbasnkilonau6.com jasminer.com jasolar.com jason-z.com jason5.xyz jasongj.com jasongzy.com jasonsemicon.com jasonwatches.com jasonzk.com jasperxu.com jasuoenergy.net jatcochina.com java-er.com java1234.com java2000.net javabikes.com javaboy.org javacui.com javaer.xyz javaeye.com javamilk.org javanav.com javascriptcn.com javatang.com javawind.net javaxxz.com javazhiyin.com javazx.com javbuy.xyz javier.io jawouue.com jaxcx.com jay.tg jaya.cc jayce.icu jayfc.com jayfu.tk jayjw.com jayxhj.com jaz581.com jazlxs.com jazzyear.com jb100.com jb1000.com jb51.com jb51.net jbaier023.com jbaobao.com jbb.one jbbzcorp.com jbcz.tv jbddoors.com jbdhome.com jbdown.com jbdown.net jbedu.net jbelf.com jbepharm.com jbers.com jbiev.com jbjc.org jbjdgroup.com jbjw.net jbknx.com jblogistics.com jbote.com jbpmhk.com jbpzs.com jbryun.com jbs-kj.com jbsmartcity.com jbsx88.com jbt.ink jbtlj.com jbtxy.net jbwave.com jbwtm.com jbxy.com jbyy120.com jbzj.com jbzpw.com jbzwread.com jbzyk.com jbzyw.com jc-ai.com jc-dl.net jc-hr.com jc-pcba.com jc-saas.com jc0531.com jc170.com jc315.com jc35.com jc56.com jc615cezcq.world jc808.com jc85.com jc88.net jc899.com jca-china.org jcancer.org jcashore.com jcbjbcak.com jcbmt.com jcbq.net jccchina.com jcceram.com jccinema.com jccjtwl.com jccpay.com jccsoc.com jccug.com jcdd.com jcebid.com jcecom.com jcedu.org jcetglobal.com jcex.com jcf94.com jcgcn.com jcgcw.com jchat.io jchl.com jchla.com jchouse.org jchunuo.com jchxmc.com jcjjwx.com jckjsc.com jcku.com jclab.net jclegend.com jcloud-cache.com jcloud-cache.net jcloud-cdn.com jcloud-live.com jcloud-oss.com jcloud.com jcloudcache.com jcloudcache.net jcloudcs.com jclouddn.com jclouddns.com jclouddns.net jcloudec.com jcloudedge.com jcloudedge.net jcloudgslb.com jcloudgslb.net jcloudimg.com jcloudimg.net jcloudlb.com jcloudlb.net jcloudlive.com jcloudlv.com jcloudoss.com jcloudresolve.com jcloudresolve.net jcloudss.com jcloudstatic.com jcloudstatic.net jcloudvideo.com jcloudvideo.net jcloudwaf.com jcloudwaftest.com jcloudwaftest.net jclps.com jcmeh.com jcmob.net jcnano.com jcnk120.com jcno.net jcnqqnf.com jcodecraeer.com jcorv.org jcpeixun.com jcpesz.com jcqzw.com jcrb.com jcrcw.com jcrgyy.com jcscp.org jcsfs.com jcsjt.com jcsrsj.com jcssolar.com jcsy66.com jcszhtc.com jctmj.net jctrans-shantou.com jctrans.com jcumbrella.com jcvba.com jcwgk.com jcwgo.com jcwiki.net jcwjdg.com jcwljt.com jcwxiao.com jcxzlsgs.com jcyad.com jcyai.com jcyes.com jcys120.com jcys12366.com jcyspt.com jcyx2019.com jcyxds.com jczb.vip jczc.vip jczh100.com jczhijia.com jczhiyao.com jcznzb.com jd-88.com jd-app.com jd-bbs.com jd-credit.com jd-df.com jd-ex.com jd-ex.net jd-fm.com jd-hospital.com jd-link.com jd-sprot-eur.shop jd-zd.com jd.co jd.com jd.hk jd.shop jd100.com jd120.com jd360.hk jd37.com jd5.com jdair.net jdallianz.com jdapi.com jdb-ware.com jdb100.com jdbbs.com jdbbx.com jdbchina.com jdbhw.com jdbjba.com jdbox.xyz jdbpcb.com jdburl.com jdbusiness.com jdcache.com jdcaipu.com jdcapital.com jdcdn.com jdcloud-api.com jdcloud-api.net jdcloud-edu.com jdcloud-elite.com jdcloud-elive.com jdcloud-livebuy.com jdcloud-mail.com jdcloud-openapi.com jdcloud-oss.com jdcloud-scdn.net jdcloud-scdn.tech jdcloud-scdndns.com jdcloud-yd.com jdcloud.com jdcloudai.solutions jdcloudcache.com jdcloudcache.net jdcloudcdn.com jdcloudcdn.net jdcloudcs.com jdclouddns.com jdclouddns.net jdcloudedge.com jdcloudedge.net jdcloudlb.com jdcloudlb.net jdcloudlive.com jdcloudlive.net jdcloudnaming.net jdcloudresolve.com jdcloudresolve.net jdcloudshop.com jdcloudsite.com jdcloudstatic.com jdcloudstatic.net jdcloudstatus.com jdcloudstatus.net jdcloudvideo.com jdcloudvideo.net jdcloudwaf.com jdcmmc.com jdcmoly.com jdcontent.com jdcq.net jdcsww.com jdctky.com jdd-global.com jdd-hub.com jddaojia.shop jddapeigou.com jddaw.com jdddata.com jddebug.com jddglobal.com jddj.com jddmoto.com jddtv.com jddyl.com jdedu.net jdemall.com jdface.com jdfair.com jdfcloud.com jdfeijing.com jdfinance.com jdfjx.com jdfmgt.com jdfryl.com jdfschool.com jdfw1.com jdfybjy.com jdfzm.com jdgogo.com jdgsgl.com jdgslb.com jdgslb.net jdgzf.net jdh.com jdh.healthcare jdhmediajd.com jdhospital.com jdhuafeng.com jdhyplay.com jdianfei.com jdindustry.com jdis.org jdiy.club jdjgq.com jdjingmai.com jdjinrong.com jdjob88.com jdjrdns.com jdjt.com jdjygold.com jdkcb.com jdkjxy.com jdl.com jdl8.com jdlgw.com jdlhb.com jdlhpt.com jdlingyu.com jdlingyu.net jdmwk.com jdmy.com jdnews.net jdon.com jdpay.com jdpaydns.com jdplay.com jdpta.com jdpz44.com jdreader.net jdrns.com jdrq.net jds-china.com jdsafe.com jdsha.com jdsjy.com jdsmartkf.com jdsry.com jdss.cc jdsyjc.com jdt-precision.com jdtiot.com jdtjy.com jdtxgc.com jdunion.com jduoduo.com jdvisa.com jdw001.com jdw2.com jdwdc.com jdweixiao.com jdwgame.com jdwl.com jdwmfj.com jdworldwide.com jdwxwz.com jdwxzp.com jdx.com jdxc.net jdxfw.com jdxlt.com jdxs.com jdxsr.com jdxyydf.com jdxzz.com jdy.com jdycdn.com jdydevelop.com jdyfy.com jdylb.com jdyou.com jdypf.com jdyyeb.com jdzdeyy.com jdzeduyun.com jdzj.com jdzjw.com jdzkw.com jdzmc.com jdzol.com jdzol.net jdzrcw.com jdzs.com jdzwang.com jeacar.com jean.cd jeanphy.online jeanssalon.com jeanswest.com jeawin.com jeawincdn.com jechobio.com jectronic.com jedi-games.com jedoo.com jee-cn.com jeeanlean.com jeecg.com jeecg.org jeecms.com jeee.ltd jeejen.com jeepay.com jeepay.vip jeeplus.org jeepyy.com jeequan.com jeerun.com jeesci.com jeeseen.com jeesite.com jeewong.com jeeyaa.com jeeyee.com jeeyor.com jefen.com jeffdingzone.com jeffjade.com jeffreyitstudio.com jeflon.com jegotrip.com jehudf.com jekeen.com jelleybrown.com jellow.club jellow.site jellymoo.com jellythink.com jemincare.com jemoic.com jengcloud.com jenno-cn.com jenomc.com jeom.org jeongen.com jeoshi.com jepekale.com jereh-gas.com jereh-network.com jereh.com jerei.com jeremycn.com jerpx.com jerrytom.xyz jerryzou.com jescard.com jesdatools.com jesgoo.com jesie.org jesiro.com jesoncom.com jesselauristonlivermore.com jesselivermore.com jestq.com jet-ego.com jet-logistics.com jet-ok.com jetechtool.com jetgroup-cn.com jetgroup-nb.com jethoo.com jethro.fun jetionservice.com jetlogistic.com jetmobo.com jetneed.com jetsum.com jetsum.net jeulover.com jeuronghotels.com jevolpu.com jewellery.gold jewellworld.com jewelryseeds.com jewelryshanghai.com jexus.org jeyi.com jeywatch.com jf-biaotw.com jf-motor.com jf-r.com jf1898.com jf1969.com jf258.com jf900.com jf9p.com jfagroup.com jfbcb.com jfbuilding.com jfchinese.com jfcjt.com jfcoo.com jfdaily.com jfedu.net jfgjwl.com jfgou.com jfh.com jfhzfsn.com jfinal.com jfinfo.com jfj3419.com jfjt.cc jflparking.com jflswl.com jfpal.com jfq.com jfrogchina.com jfrschool.com jfsc.com jfshare.com jfstatic.com jftech.com jftianshancn.com jfwb.com jfwypay.com jfxiaopaoqi.com jfydgame.com jfyf.cc jfyiyao.com jfyskw.com jfz.com jfzhcx.com jfzhiyao.com jg058.com jg1060.com jg1994.com jg91.com jgcarbide.com jgchat.net jgcjjt.com jgdq.org jgdun.com jgdx.com jgew3d.com jgfarm.com jgg.hk jgg09.com jggame.net jghstar.com jgjapp.com jglh.com jglm.cc jgs-ds.com jgscct.com jgsdaily.com jgsemicon.com jgstour.com jgsxfw.com jgtc315.com jguanjia.com jgums.com jguo.com jgxb120.com jgxzy.com jgy.com jgyljt.com jgyun.net jgzx.org jgzyw.com jh-dzcl.com jh-sh.com jh-trace.com jh-uav.com jh0516.com jh3737.com jh3j.com jh597.com jh5l.com jh8k.com jh96095.com jhak.com jhaoyou.com jhcb.net jhcfz.com jhcheku.com jhcms.com jhconba.com jhctbank.com jhddsz.com jhdmro.com jhdpower.com jhdxjk.com jhenten.com jhfl.com jhforever.com jhfsata.com jhgolfcarts.com jhgroup525.com jhgtgb.com jhgykt.com jhhospital.com jhhygl.com jhi.cc jhjt.xyz jhjunda.com jhjy.net jhkao.com jhkj.work jhkuajing.com jhltsl.com jhm2012.com jhmnew.com jhmwo.com jhnsh.com jhnsyh.com jhonge.net jhonse.com jhotel-shanghai.com jhpm.cc jhqrmyy.com jhqshfly.com jhrcbank.com jhrcsc.com jhrcw.com jhsairport.com jhsc201ddd211svds.com jhscl.net jhscm.com jhscrm.com jhsddjd.com jhsjttz.com jhspa6.com jhszyy.com jhtmsf.com jhuishou.com jhvsr.com jhwaimai.com jhwdp.com jhwvjjw.com jhxcms.com jhxjd.com jhxl.org jhxms.com jhxrmyy.com jhxzlsgs.com jhydns01.com jhydns05.com jhygame.com jhyongyou.com jhypcy.com jhytech.com jhyusqo.com jhyz.net jhzdhjt.com jhzhizao.com jhzhkj.com jhzhuji.com jhzoo.com ji-pai.com ji-zhun.com ji.ci ji7.com jia.com jia12.com jia300.com jia360.com jia400.com jia86.cc jiaads.com jiaaohuanbao.com jiaapps.com jiabaiwang.net jiabangcnc.com jiabaoyuanlin.com jiabasha.com jiaben.com jiaboojc.com jiacai001.com jiacaitc.com jiachangshichutieqi.com jiacheng88.com jiachong.com jiadafoods.com jiadapaper.com jiadeqy.com jiadingjiaxiao.com jiadingqiang.com jiadounet.com jiadule.com jiaduobao.ru jiae.com jiaenderen.com jiaenhospital.com jiafang168.com jiafenqi.com jiafu68.com jiafuda.com jiagedan.com jiagela.com jiagle.com jiagoo.com jiagoo.net jiagouyun.com jiaguanlaw.com jiaguboshi.com jiaguhome.com jiagulun.com jiagumen.com jiagumima.com jiaguowenhua.com jiaguwenxf.com jiahecare.com jiaheu.com jiahewushe.com jiahua-sz.com jiahuacinema.com jiahuaming.com jiahui.com jiahuism.com jiain.net jiaji.com jiaji28.net jiajia-china.com jiajia.tv jiajiagroup.com jiajiakt.com jiajiangcake.com jiajiao114.com jiajiao400.com jiajiaoban.com jiajimao.com jiajingink.com jiajiyp.com jiaju.cc jiaju.com jiajuimg.com jiajuketang.com jiajumi.com jiajurenwu.com jiajuservice.com jiajuwo.com jiajuxialiang.org jiajuzhuliu.com jiakao.com jiakaobaodian.com jiakaodashi.com jiakaokemuyi.com jiakelai.com jiakexs.com jialanling.com jialaxin.cc jialebao.cc jialecc.com jialei168.com jialez.com jialiangad.com jialianzg.com jialinep.com jialiwood.com jialiyoukuang8.com jialongsports.com jialvzc.com jiamei123.com jiameidental.com jiameigj.com jiameng.com jiamengbang.net jiamengfei.com jiamens.com jiami110.com jiamiantech.com jiaminghi.com jiamingwenhua.com jiamisoft.com jian-jie.com jian.net jian27.com jianada-qianzheng.com jianae.com jianai.love jianai360.com jianavi.com jianayangzhiguo01.com jianbaizhan.com jianbangchem.com jianbangjiaoyu.com jianbaolife.com jianbihua.com jianbihua.org jianbihua360.com jianbing.com jiancai.com jiancaijia.com jiancaik.com jiancenj.com jiancent.com jiancepai.com jiancepaper.com jianchacha.com jianchiapp.com jianchihu.net jiandaima.com jiandan.net jiandantianqi.com jiandanxinli.com jiandaopay.com jiandaoyun.com jiandati.com jiandiao.com jianeryi.com jianfc.com jianfei.com jianfei.net jianfeiba.com jianfeibaike.com jianfeidaren.com jianfengstudio.com jiang11.com jiang7.com jiangbeijituan.com jiangbeimach.com jiangbeishuicheng.com jiangbeiyiyuan.com jiangbeiyiyuan.net jiangchaochina.com jiangcp.com jiangduoduo.com jiangguimei.asia jiangguo.net jianghaiqu.net jianghaosm.com jianghehuagong.com jianghuamem.com jianghui.xyz jiangidea.com jiangjiuren.com jiangjizhong.com jiangkk.com jianglinminingindustry.com jiangmama.net jiangmike.com jiangmin.com jiangnan-group.com jiangnanmarket.org jiangningwater.com jiangongdata.com jiangongw.com jiangpaipinpai.com jiangpinjiangxin.com jiangqiaomuye.com jiangque.com jiangruyi.com jiangshankeji.com jiangshanlihong.com jiangshi.org jiangshi99.com jiangsudanzhao.com jiangsuedu.net jiangsufilm.com jiangsufootball.org jiangsugqt.org jiangsugwy.org jiangsukj.com jiangsulvhe.com jiangsumobile.com jiangsurc.com jiangsurhi.com jiangsusx.com jiangsuzhongpin.com jiangtai.com jiangtuoedu.com jianguo.tv jianguoyun.com jiangweishan.com jiangxiatech.com jiangxing.pub jiangxinkeji.club jiangxiol.com jiangxirc.com jiangxiwater.com jiangxiwuliu.com jiangxueqiao.com jiangyan.tv jiangyoushang.com jiangyu.org jiangzheba.com jiangzidushu.com jiangzikanshu.com jiangziyuedu.com jiangzuoku.net jianhaobao.com jianhuagroup.com jianhuasheng.com jianhuavalve.com jianhucheng.com jianhui.org jianhuw.com jianianle.com jianidc.com jianjian.tv jianjiaobuluo.com jianjutec.com jiankang123.net jiankang13.com jiankanghebei.com jiankangsn.com jiankangyouyi.com jianke-fangzhou.com jianke.cc jianke.com jianke.net jiankong.com jiankongbao.com jiankunchina.com jianlc.com jianlc.net jianli-sky.com jianli.com jianli88.com jianliao.com jianliben.com jianliduo.com jianlimoban-ziyuan.com jianlisheji.com jianliw.com jianlixiu.com jianliyuan.com jianloubao.com jianlow.com jianlu365.com jianmaidi.com jianmao.net jianmeicao.com jianmeng.net jianmite.com jianmuhub.com jianniang.com jianpaimeiye.com jianpeicn.com jianpian.info jianpu.net jianpu6.com jianpu8.com jianpu99.net jianq.com jianqiaochina.com jianqimao.com jianqiyl.com jianran360.com jianshe99.com jiansheku.com jianshen8.com jianshenmi.com jianshiduo.com jianshihui.net jianshionline.com jianshu.com jianshu.io jianshu.tech jianshuapi.com jianshukeji.com jiansuji001.com jiansujihm.com jiantaokj.com jiantuku.com jianwang360.com jianweidata.com jianweitv.com jianwenapp.com jianwulian.com jianxi-materials.com jianxinchemical.com jianxinyun.com jianxiyasi.com jianyanjia.com jianyechina.com jianyefans.com jianyewx.com jianying.com jianyixinli.com jianyu360.com jianyujiasu.com jianyuweb.com jianyv.com jianzeppt.com jianzhan110.com jianzhan580.com jianzhanbao.net jianzhangongsi.com jianzhe.com jianzhi8.com jianzhian.com jianzhiba.net jianzhibao.com jianzhidaxue.com jianzhidou.com jianzhikeji.com jianzhikeji.net jianzhimao.com jianzhiwangzhan.com jianzhiweike.net jianzhiyixin.com jianzhong-edu.com jianzhusheying.com jiao15.com jiaoben.net jiaobu365.com jiaobuser.com jiaochengzhijia.com jiaoda306.com jiaodian.pub jiaodj.com jiaodong.net jiaodonghr.com jiaofei123.com jiaohezhen.com jiaohuilian.com jiaohuiyun.com jiaohusheji.net jiaojiang.com jiaokaitech.com jiaoko.com jiaoliuqu.com jiaomai.com jiaonan.net jiaonan.tv jiaonizuocai.com jiaopei.com jiaoping.com jiaoshirencai.com jiaoshizhaopin.net jiaoshizhuye.com jiaoshoubang.com jiaoshouhuayuan.com jiaotu.men jiaoya.com jiaoyanyun.com jiaoyf.com jiaoyibao.com jiaoyimao.com jiaoyin.com jiaoyixia.com jiaoyizhu.com jiaoyu361.com jiaoyuangroup.com jiaoyudao.com jiaoyumao.com jiaoyundiandongmen.com jiaoyunw.com jiaoyuwo.com jiaoyuzhan.net jiaozhou.net jiapin.com jiapu.tv jiapuvip.com jiaqiangban.com jiaqianglian.com jiaqing900.com jiaren.org jiarenrecycle.com jiarenvip.com jiarenzs.com jiaruitec.com jiasale.com jiashejianyan.com jiashengguangdian.com jiashida5618.com jiashiguoji168.com jiashuangkuaizi.com jiashuba.com jiashule.com jiasou.cc jiass.cc jiasu.work jiasubook.com jiasucai.com jiasuhui.com jiasule.com jiasule.net jiasule.org jiasulian.com jiataizic.cc jiataizir.cc jiatejijin.com jiatengflycdn.com jiathis.com jiatongyitu.com jiatop.com jiatuhui.com jiatui.com jiatushuke.com jiatx.com jiawei.com jiawei.xin jiawentrans.com jiawin.com jiawonongye.com jiawutech.com jiawuzhanzheng.org jiawuzi.com jiaxianggame.com jiaxianghudong.com jiaxiangxm.com jiaxiao.pub jiaxiao100.com jiaxiaozhijia.com jiaxiaozhilian.com jiaxichina.net jiaxincloud.com jiaxingren.com jiaxinkg.com jiaxinxuetang.com jiaxiweb.com jiaxuanwl.com jiaxuejiyin.com jiaxun.com jiay.press jiayans.net jiayaw.com jiayi56.com jiayin618.com jiayiss.com jiayougo.com jiayoujsq.com jiayouxueba.com jiayu.net jiayu.yoga jiayuan-ev.com jiayuan-law.com jiayuan.com jiayuanzhang.com jiayudata.com jiayue.tech jiayuehua.com jiayuhongwedding.com jiayusx.com jiazaishanghai.com jiazhao.com jiazhao7.com jiazhaoba.com jiazhi.online jiazhichem.com jiazhoulvke.com jiazhua.com jiazhuang.com jiazhuang6.com jiazile.com jiazuo.cc jibai.com jibao.online jibencaozuo.com jibi.net jibing57.com jibite.fun jicaibao.com jicaifund.com jicaixinke.com jice.io jichangbus.com jichangdaba.com jiche.com jicheng.net jichengzao.net jichuangke.com jiclip.com jicnj.com jicon.net jicyun.com jidacheng.com jidanpu.com jidantuoshebei.com jide.com jidekan.com jideos.com jidi.com jidiancdn.com jidianwang.com jidivr.com jidiw.com jidouauto.com jidubook.com jidujiao.com jidujiasu.com jidukeji.com jieanjiaotong.com jiebai.com jiebanchuyou.com jiebaodz.com jiebaogroup.com jiebide.xin jiecang.com jiecangtubemotors.com jiechengcehui.com jiechengcloud.com jiechikeji.com jiechuang.com jiedaibao.com jiediankeji.com jiefadg.com jiefanglinli.net jiefu.com jiefu.net jiefuku.com jiegames.com jiege.pro jiegeng.com jiegon.com jiehua-chem.com jiehua.com jiehualv.com jiehuapharma.com jiehuigroup.com jiehun021.com jiehun027.com jiehunmishu.com jiejichengshi.com jiejing.fun jiekenmould.com jiekon.com jiekou.ltd jieku.com jielaigroup.com jieliapp.com jielibj.com jieligo.net jielijs.com jieling.net jielong-printing.com jielong.co jielong.com jielongcorp.com jielongdaquan.com jielongguanjia.com jielou.net jiemaiyang.com jiemeng.cc jiemeng.tw jiemeng8.com jiement.com jiemian.com jiemin.com jiemo.net jiemodui.com jiemoselect.com jienyl.com jiepai.net jiepaids.com jiepang.com jiepei.com jieqi.com jieqian.co jieqibg.com jieqinwang.com jierengz.com jieri2.com jierili.com jieruchaosheng.com jiese.org jiesen365.com jieshangwei.com jieshengit.com jieshimt8.com jieshitong.com jieshu.me jieshui8.com jieshuitech.com jieshuwang.com jietu365.com jietuhb.com jietuosh.com jietusoft.com jieweijt.com jiewen.run jiexi.net jiexitz.com jiexiuyiyuan.com jiexunyun.net jieyang.la jieyanri.com jieyigroup.net jieyitong.net jieyou.com jieyou.pro jieyougame.com jieyoulai888.com jieyoutsg.com jieyue.net jieyuechina.com jieyuechina.net jifang360.com jifang365.com jifang369.com jifenapp.com jifencity.com jifenfu.net jifengkj.com jifengyun.com jifenh.com jifenyi.com jifenyouhuidui.com jifenzhi.com jifugk.com jifulei.com jigao616.com jigaojituan.com jigecili.com jiguangdaili.com jiguangdanci.com jiguanglan.com jiguo.com jiguzuo.com jihai8.com jihaoba.com jihegui.com jihehuaban.com jihex.com jihexian.com jiheyun.com jihot.com jihuachina.com jihuadyes.com jihuanshe.com jihubear.com jihui88.com jihujiasuqi.com jihulab.com jihuoma.com jihuoniao.com jihuoyx.com jiiaa.com jiimore.com jijia.com jijiaerp.com jijiagames.com jijiang5.com jijiangep.com jijianzhineng.com jijiaoyu.com jijidi.com jijie168.com jijigugu.club jijijijin.com jijing.site jijinhao.com jijitec.com jijiyouxuan.com jijuduo.com jikabao.com jikaicai.com jike.city jike.com jike.info jike800.com jikecdn.com jikedata.com jikedingyue.com jikedog.com jikefan.com jikegou.net jikeiot.cloud jikejiang.com jikejiazhuang.com jikejishu.com jikeq.com jiketuchuang.com jikewan.com jikexiaojiang.com jikexiu.com jikexueyuan.com jikipedia.com jikklfexh.com jikstatic.com jikuai.work jilailawyer.com jilaoshi.com jiletaotao.com jili20.com jiliguala.com jilingames.com jilingwy.org jilinmarathon.com jilinshuiwu.com jilinxiangyun.com jiliuwang.net jiliyun.com jilongsw.com jilu.info jiluchengshi.com jiluer.com jilulijob.com jiluyu.org jilvfaka.com jimagroup.com jimakj.com jimay.com jimei-cn.com jimeilm.com jimeisilk.com jimeng.com jimeng.mobi jimetec.com jimi168.com jimicn.com jimifashion.com jimihu.com jimilier.com jimingbao.com jimistore.com jimmoo.com jimoedu.net jimu.com jimubox.com jimuc.com jimucake.com jimujiazx.com jimuyk.com jin-huang.net jin-wang.net jin-xiang.com jin-xin.com jin10.com jin10x.com jinan-marathon.com jinan7.com jinanfu.net jinanguanggao.com jinanhaofang.com jinanhualian.com jinankingyue.com jinanxww.com jinbangedu.com jinbaobeiqiming.com jinbaoidc.com jinbaonet.com jinbi-an.com jinbiaochi.com jinbiaohui.com jinbiaojv.com jinbifun.com jinbilianmeng.com jinbitou.net jinbondt.com jincaicaiwu.com jincao.com jincaocw.com jincdn.com jincece.com jinchanggps.com jinchanqunale.com jincheng56dl.com jinchengdingjs.com jinchengmf.com jinchengpharm.com jinchuang.org jinchuanrmt.com jinchutou.com jincin.com jindaixx.com jindaoshangwu.com jindati.com jinde-logistics.com jindianweb.com jindianyishi.com jindidata.com jindidq.com jinding.cc jindingfm.com jindongsoft.com jindoushiqi.com jinducw.com jindun007.net jindun9.com jindunfan.com jindunkeji.com jinduoduo.net jinengtisheng.com jinenrunze.com jinergy.com jinerkang.com jinfan-keji.com jinfanda.com jinfangka.com jinfengcx.com jinfengpaint.com jinfengwine.com jinfh.net jinfuzi.com jing-tong.com jing-xian.com jingangfuhui.com jingangjing.com jingangjing.net jingankerrycentre.com jingansicbd.com jingbantong.com jingbo.net jingbotech.com jingc.com jingcai360.net jingcaipaint.com jingcaituijian.com jingch.net jingchang.tv jingchengban.com jingchengwl.com jingchi.net jingchuhao.com jingchurc.com jingdajiance.com jingdaka.com jingdapcb.com jingdata.com jingdeyx.com jingdianju.com jingdianlaoge.com jingdianxitong.com jingdiao.com jingdigital.com jingdong.com jingdongdaili.com jingdongjinrong.com jingdongyouxuan.com jingdudai.com jingdukaoyan.com jingdw.com jingge.com jinggeng.net jinggon.com jinggong-auto.com jinggongvalve.com jingguan.ai jinggui.com jinghaishop.com jinghandianzi.com jinghangapps.com jingheiot.com jinghesh.net jinghonggroup.com jinghongmedical.com jinghongsh.com jinghua.com jinghuans.com jinghuaqimo.com jinghuazhijia.com jinghudianqi.com jinghuitang.com jingjia.net jingjia.org jingjia6.com jingjiamicro.com jingjiang.com jingjiasc.com jingjiawang.com jingjiayl.com jingjidaokan.com jingjie360.com jingjiezhileng.com jingjitech.com jingjiu.com jingju.com jingjuok.com jingjusc.com jingkaiyuan.com jingkan.net jingkaowang.com jingkebio.com jingkeleici.com jingkeyiqi.com jingkids.com jingkunagro.com jinglawyer.com jinglian88.com jingliangad.com jingling.group jinglingbaoai.com jinglingbiaozhu.com jinglingshuju.com jinglou8.com jingluemall.com jingluole.com jingme.net jingmedicine.com jingmeiti.com jingmen.com jingmiguangliangg.com jingmiliangju.com jingnei.net jingnengpower.com jingoal.com jingos.com jingpai.com jingpaidang.com jingpaihao.com jingpainet.com jingpinhui.com jingpinke.com jingpt.com jingqizhitongche.com jingqueyun.com jingrongshuan.com jingruigroup.com jingsailian.com jingsh.com jingshanbus.com jingshibang.com jingshibianhuren.com jingshicd.com jingshistudy.com jingshizyy.com jingshun-wl.com jingshzh.com jingsocial.com jingtai-group.com jingtang.xyz jingtanggame.com jingtao58.com jingtuitui.com jingtuliutongchu.work jingtum.com jingua168.com jinguanauto.com jingugroup.net jinguilvyou.com jingutrust.com jingvo.com jingwacenter.com jingwah.com jingwei.link jingwei.net jingweizhichuang.com jingwuhui.com jingwxcx.com jingxi.com jingxi.net jingxiang.work jingxianglawfirm.com jingxinad.com jingxinclass.com jingyakt.com jingyanben.com jingyanbus.com jingyangzhijia.com jingyanlib.com jingyanshu.com jingyeco.com jingyeqian.com jingyi186.com jingyimetal.com jingyinb.com jingyingshenghua.com jingyingyicheng.com jingyitech.com jingyiyiyao.com jingyougz.com jingytech.com jingyuan.com jingyuelaw.com jingyuetang.com jingyunos.com jingyunyilian.com jingyuweike.com jingyuxiaoban.com jingyuyun.com jingzhengu.com jingzhi5.com jingzhouxw.com jingzhu-bio.com jingzhusz.com jingzong.org jinhaigroup.com jinhaihujingqu.com jinhaisujiao.com jinhe-energy.com jinheamc.com jinher.com jinheshiye.com jinhevip.com jinhongchina.com jinhonggroup.com jinhongnl.com jinhu.me jinhuapp.com jinhuatv.com jinhuawatch.com jinhuazhe.com jinhuo.net jinhusns.com jinhutour.com jinianbi.com jiniance8.com jinianri.com jining.com jiningcoal.com jiningjj.com jiniu.work jiniutech.com jinjia.com jinjiang-group.com jinjiang.com jinjiang.tv jinjianghotels.com jinjianginns.com jinjiangwater.com jinjiaomh.com jinjie.tech jinjiedu.com jinjieshengwu.com jinkaijia.com jinkan.org jinkanghospital.com jinkaoedu.com jinke.com jinkedatex.com jinkeholdings.com jinkejoy.com jinkex.com jinkezhexin.com jinkongauto.com jinkopower.com jinkosolar.com jinkoubaodian.com jinkoucaigou.com jinku.com jinkunlaw.com jinlaiba.com jinlaijinwang.com jinlangbo.com jinlanqihua.com jinlanzuan.com jinletx.com jinlianchu.com jinling.com jinlingholdings.com jinlinghotel.com jinlinghotels.com jinlingjiajiao.com jinlishenghuo.com jinliufu.net jinliyang.net jinliyu.cc jinlonggeishui.com jinluowater.net jinluzl.com jinlvkeji.com jinlyb.com jinma-int.com jinmabrand.com jinmajia.com jinmalvyou.com jinmao-ti.com jinmao88.com jinmaodigital.com jinmaofoundry.com jinmaopartners.com jinmaowy.com jinmaozs.com jinmeiji.com jinmenrc.com jinmi.com jinming.net jinmixuetang.com jinmogame.com jinmuinfo.com jinnong.cc jinpacs.com jinpai365.com jinpanlab.com jinpengecologyhotel.com jinpin.xyz jinpu.com jinpupvc.com jinqi2023.com jinqiang.online jinqiangjc.com jinqianguan.com jinqianma.com jinqiaojob.com jinqiaopu.com jinqiexia.com jinqigroup.com jinqijian.com jinqingdz.com jinqiunc.com jinqiuzhu.com jinquanpharm.com jinqunla.com jinr.com jinri.red jinridiaoyu.com jinriguanzhu.cc jinrilife.com jinriningxiang.com jinrirm.com jinrishici.com jinritemai-inc.com jinritemai.com jinritoutiao.com jinriwushi.com jinrixing.cc jinrongbaguanv.com jinrongchaoshi.com jinrongdianli.com jinronghu.com jinrongren.net jinrui-tech.com jinruimedical.com jinruism.com jinrunsoft.com jins-cn.com jinse.com jinsebook.com jinsehuaqin.com jinsenforestry.com jinsha120.com jinshacapital.com jinshakemei.com jinshanapi.com jinshandaolu.com jinshangdai.com jinshangji.com jinshanglawfirm.com jinshangroup.net jinshangtechnology.com jinshanip.cc jinshanju.com jinshanmz.com jinshasitemuseum.com jinshengceramics.com jinshengtang.net jinsheyi.com jinshi-nj.com jinshier66.com jinshileasing.com jinshisoft.com jinshitan.com jinshixun.com jinshmgw.com jinshu.org jinshuai.com jinshuangding.com jinshuiyuncai.com jinshuju.co jinshuju.com jinshuju.cool jinshuju.net jinshuju.org jinshujuapp.com jinshujucdn.com jinshujufiles.com jinshuluoshui.com jinshun.com jinshuschool.com jinshutuan.com jinsiwei.com jintaiwh.com jintajx.com jintanwang.com jintdev.com jintelisi.com jinti.com jintianjihao.com jintiankansha.me jintone.com jintonghua.com jintouep.com jintouwangdai.com jintuituiapp88.com jinwaimai.com jinweitec.com jinwucdn.com jinxiang114.com jinxianglian.net jinxidao.com jinxinqh.com jinxiu266.com jinxuliang.com jinxun.cc jinyaco.com jinyafu.com jinyawei.com jinyici.com jinyidun.com jinyindao.com jinying.com jinyinghotels.com jinyingimage.com jinyongwang.com jinyoukai.com jinyuan.pro jinyuanbiochem.com jinyuancopper.com jinyuangejiaju.com jinyuanlight.com jinyunal.com jinyunjob.com jinyunweb.com jinyuzd.cc jinzhao.me jinzheled.com jinzhengjt.com jinzhidagl.com jinzhijiance.com jinzhongbus.com jinzhou315.com jinzhou360.com jinzhougroup.com jinzhouoffice.com jinzhucaifu.com jinzhuoqy.com jinzjy.com jinzunjy.com jioluo.com jiongcun.com jiongji.com jiongtoutiao.com jiongyaya.com jiont.com jionz.com jiou.me jiouyun.com jipd.com jiping.site jipinsoft.com jipinwww.com jiqid.com jiqie.com jiqimao.com jiqirenku.com jiqish.com jiqizhixin.com jiqrxx.com jiqw.com jirehhz.com jirengu.com jirenqi.com jiri10.com jiri28.com jirong.com jirongyunke.net jirou.com jisapower.com jisec.com jisheyun.com jishi3.com jishicloud.com jishicn.com jishigou.net jishigu.com jishirili.com jishitailai.com jishiyuboke.com jishubai.com jishuchi.com jishukong.com jishulink.com jishuoshuo.com jishusongshu.com jishux.com jishuzf.com jisi17.com jisikaer.com jissbon.com jisu-cnd.com jisu1688.com jisuanke.com jisuanla.com jisuanzt.com jisuapi.com jisuchou.com jisuim.com jisuimage.com jisuimg.com jisujie.com jisukandian.com jisunton.com jisuoffice.com jisupdf.com jisupdfeditor.com jisupdftoword.com jisupe.com jisutodo.com jisutp.com jisuts.com jisutui.vip jisuwebapp.com jisuwz.com jisuxia.com jisuye.com jisuyilaixingpiyan.com jisuziyuanbf.com jita.fun jita.im jita5.com jitaba.net jitabang.com jitadaren.com jitadog.com jitailian.com jitaivalve.com jitangcn.com jitao.tech jitapai.com jitapu.com jitapuji.com jitashe.org jitavip.com jitetech.com jitgame.com jitianhz.com jitriroad.com jittbang.com jitucdn.com jitukaisuo.com jituofuture.com jituotech.com jituwang.com jiu-b.com jiuaidu.com jiuaizhihe.com jiuanchem.com jiuanyy.com jiub.net jiubaju.com jiubawan.com jiubuhua.com jiucaicaijing.com jiucaigongshe.com jiucaishuo.com jiuce.com jiuchenglaw.com jiuchet.shop jiuchutong.com jiucool.org jiudafu.com jiudaifu.com jiudianhudong.com jiudianjiu.com jiudianrong.com jiudianxing.com jiudianyongpin.com jiuding-group.com jiudingcapital.com jiudinggroup.com jiudingref.com jiufengsuye.com jiugang.com jiugangbid.com jiuguijiu000799.com jiuhantang365.com jiuhengmake.com jiuhewj.com jiuhongwang.com jiuhua0566.com jiuhuaiwenxue.com jiuhuang.com jiuhuashan.cc jiuhuishou.com jiuhuoba.com jiuishizanjin.com jiujiange.com jiujiangjx.com jiujipos.com jiujiuhuyu.com jiujiuyunhui.com jiujiuzu.com jiujun.net jiujunqifu.com jiukaicable.com jiuku.cc jiuku.com jiuligroup.com jiulku.com jiull.com jiulong120.com jiulve.com jiumaojiu.com jiumaster.com jiumei.com jiumei168.com jiumei8.com jiumeisheng.com jiumentongbu.com jiunile.com jiuniok.com jiupaicom.com jiupainews.com jiupaipay.com jiuq.com jiuqianwan.group jiuqianwanjituan.com jiuqijz.com jiuqings193004.asia jiuqings21833.asia jiuquan.cc jiuqucloud.com jiuquhe.com jiurichem.com jiurong.com jiuruigroup.com jius.net jiusanedu.com jiuse.cloud jiuse2.cloud jiuse3.cloud jiushengas.com jiushiadx.com jiushigong.com jiushixing.com jiushui.tv jiusi.com jiusi.net jiusibz.com jiusihengyuan.com jiusili.com jiusitm.com jiusko.com jiutaigroup.com jiutong100.com jiutongqu.com jiutu.net jiutw.com jiuwa.net jiuwan.com jiuwang.shop jiuwanshan.net jiuwei.net jiuweick.com jiuweige.com jiuxian.com jiuxianfeng.com jiuxiaobao.vip jiuxihuan.net jiuxinban.com jiuxing.com jiuxing818.com jiuxingtang.online jiuxinsolar.com jiuxu.com jiuxusb.com jiuyan.info jiuyanchuanmei.com jiuyang.com jiuyangongshe.com jiuyaowangluo.com jiuyejia.com jiuyew.com jiuyezhinan.com jiuyf.com jiuyi120.com jiuyiwenhe.com jiuyue919.com jiuyuehuyu.com jiuyuu.com jiuzg.com jiuzhai.com jiuzhaigou-china.com jiuzhang.com jiuzheng.com jiuzhenge.com jiuzhilan.com jiuzhinews.com jiuzhoupharma.com jiuzhouzb.com jiuzhuanzhuan.com jiuzungame.com jiway.net jiweichengzhu.com jiweixin168.com jiwu.com jiwucdn.com jixiang-ht.com jixiang-tech.com jixiang800.com jixiangjili.com jixiangyou.com jixianku.com jixiao100.com jixiaoedu.com jixie100.net jixie5.com jixie5188.com jixiecun.com jixiehonghong.com jixiejiaoyu.com jixieshi.com jixieshigong.com jixiew360.com jixiewz.com jixinbbd.com jixinet.com jixixx.com jixuanw.com jixueedu.com jixuninfo.com jixunjsq.com jixunlyq.com jiyaogroup.com jiyi.art jiyi.biz jiyida-logistics.com jiyifa.com jiyikj.com jiyili.net jiyin-tech.com jiyin2020.com jiyixcx.com jiyou-tech.com jiyoujia.com jiyouwang.com jiyouzhan.com jiyuantour.com jiyue-auto.com jiyuncn.com jiyunhudong.com jiyunhudong.net jiyuntang.com jiyusi.com jiyx.com jizbmedia.com jizhan.com jizhangla.com jizhaotang.com jizhazha.com jizhiba.com jizhida.com jizhihd.com jizhihezi.com jizhimobi.com jizhiyouke.com jizhouyoupin.com jizhuba.com jizhuomi.com jizhutaoke.com jizustore.com jj-1918.com jj-inn.com jj00.com jj0833.com jj20.com jj59.com jj831.com jj99.icu jjbang.com jjbank.net jjbbs.com jjbctv.com jjbdns.com jjbearings.com jjbhn.com jjbisai.com jjblogs.com jjbnews.xyz jjcbw.com jjccb.com jjcclt.com jjcdn.com jjcoffetel.cc jjcoffetels.com jjcpe.com jjcs66.com jjcto.com jjdd.com jjdede.com jjdqshy.com jjecn.com jjedu.com jjedu.net jjeglobal.com jjfinder.com jjfuzu.com jjg630.com jjgsxc.com jjh11.com jjhb.com jjhgame.com jjhgamedns.com jjhh.com jjhlkqn.com jjhuifu.com jjhuolang.com jjhuoyan.com jjhza.win jjidc.com jjiehao.com jjinfo.com jjisp.com jjj555.com jjjaaa.com jjjcjt.com jjjjjertqqo2222.com jjjkj.com jjjlll.org jjkeq.com jjkjnet.com jjkk.org jjkucunxie.com jjldbk.com jjldxz.com jjledu.net jjlgbj.com jjlhbs.com jjlvu.com jjlysh.com jjmatch.com jjmfc.com jjmh.com jjmkids.com jjmmw.com jjnshop.com jjnz.com jjonline.org jjqj.net jjr.vip jjrau1656.com jjrc.net jjrw.com jjsedu.org jjshome.com jjsip.com jjtang.com jjtianshangi.com jjtonline.com jjtravel.com jjttjx.com jjwdz.com jjwli.com jjwsx.com jjwxc.com jjwxc.net jjwxc.org jjxxk.com jjxyls.com jjy118.com jjycw.net jjygym.com jjypyz.com jjys188.com jjyx.com jjyz.net jjyz360.com jjzc168.com jjzdm.com jjzfgjj.com jjzls.com jjzyy.com jjzyy.org jk-bms.com jk-px.com jk.com jk126.com jk13.net jk169.net jk2h.com jk33zu6.org jk37du.com jk3a.com jk51.com jk725.com jk90.com jkangbao.com jkapi.com jkb7.com jkbexp.com jkbl.com jkc8.com jkchemical.com jkcn365.com jkcorkpads.com jkcsjd.com jkd.com jkd360.com jkdsz.com jkelec.com jkh-ym.com jkhapp.com jkhcfz.com jkhds872.com jkhealth.vip jkimg.net jkjiekuan.com jkjzt.com jkkefv.com jkl6.com jkllbd.com jklsjm.com jklughj.work jknanotech.com jkouu.com jkpan.cc jkpj.com jkqdl.com jkqingman.com jkrcw.net jkt-tencentclb.cloud jkt-tencentclb.com jkt-tencentclb.net jkt-tencentclb.work jktcom.com jktong.com jktower.com jkuntp.com jkwatch99.com jkwshk.tv jkx.cc jkxds.net jkxedu.com jkximg.com jkxw168.com jkyc.com jkydt.com jkypeg.com jkyule.com jkzhilu.com jkzl.com jkzn365.com jl-er.com jl-jssk.com jl0435.com jl0775.com jl1mall.com jl465.com jl519.com jl54.org jl7y.com jladi.com jlafw.com jlairports.com jlakes.org jlandmeditech.com jlaod.com jlaoj.com jlaqjdjt.com jlbhtc.com jlbjcs.com jlbkjt.com jlbry.com jlc-3dp.com jlc-bbs.com jlc-cad.com jlc-cam.com jlc-cnc.com jlc-code.com jlc-dfm.com jlc-drm.com jlc-ecad.com jlc-erp.com jlc-fpc.com jlc-gw.com jlc-jh.com jlc-layout.com jlc-pcb.com jlc-smt.com jlc-zh.com jlc.com jlccad.com jlccam.com jlccnc.com jlccpit.com jlcdfm.com jlcecad.com jlceda.com jlcerp.com jlcfa.com jlcmc.com jlcops.com jlcsj.com jlcsmt.com jldjam.com jldpvc.com jlfba.com jlg66.com jlgf.com jlginyo.com jlgjjt.com jlguorui.com jlguowen.com jlgxmob.com jlgyjj.com jlhc.com jlhdq.com jlhnw.com jlhs.net jlhtcm.com jlhxjt.com jlhzyanxue.com jlinh.com jljcxy.com jljcz.com jljgdj.org jljnkj.com jljob88.com jljzzs.com jlkfapp.com jlkgj.com jlkj.cc jlkjgroup.com jllihua.com jllyzxyy.com jlmhk.com jlmhw.com jlmuban.com jlnku.com jlnls.com jlonline.com jlpay.com jlq.com jlqsugar.com jlrfx.com jlriza.com jlrtvu.com jlsdesyxx.com jlsdwj.com jlsdzgckcy.com jlsebhyy.com jlsegx.com jlsemi.com jlsfcyy.com jlsgjt.com jlsjsjlhgczxxh.com jlsjsxxw.com jlsports.com jlspr.com jlsqwyy.com jlsrc.com jlsrmyy.net jlstt.com jlsw.cc jlswansen.com jlsyqzyy.com jlszlyy.com jlt01.com jltchina.com jlthcc4596.vip jltq.com jltrq.com jltu.net jlty56.com jltzgfgs.com jlwater.com jlwlw.com jlxfw.com jlxhyy.com jlxtxny.com jlylwater.com jlyr2.com jlysgjzx.com jlystatic.com jlytzk.com jlzhongdong.com jlzkb.com jlzsoft.com jlzyz.com jm-gallium.com jm-machines.com jm-talents.com jm1ph.com jm2046.com jm233333.com jm3f.com jm3q.com jmads.net jmbao.com jmbbs.com jmbon.com jmbus.net jmch12333.com jmchn.com jmd-china.com jmd-leatherbag.com jmdedu.com jmdna.com jmdns.com jmed.com jmeii.com jmeizs.com jmev.com jmgle.com jmglg.com jmgo.com jmgsgs.com jmhaofa.com jmhapp.com jmhd8.com jmhjh.org jmhs.net jmi365.com jmj-pharma.com jmj.cc jmj1995.com jmjc.tech jmjxc.com jmjzy.com jmkj.com jmkx.com jmkxjt.com jmlanguan.com jmlfood.com jmlk.co jmmsn.com jmmuseum.com jmnk300.com jmonline.org jmp-cn.com jmp.gd jmqy.com jmqyjt.com jmrb.com jmrcw.com jmsqw.com jmstatic.com jmstation.com jmsxsw.com jmt-bio.com jmtnt.com jmtsg.com jmwater.com jmxckj.com jmxiangyi.com jmxlmc.com jmxw.net jmycapacitor.com jmycbus.com jmyleather.com jmyna.net jmyqsl.com jmzcgs.com jmzgo.com jmzhangfu.com jmzns.com jn-bank.com jn-cits.com jn001.com jn1535.com jn172.com jn720.com jn80.com jnadi.net jnairport.com jnbaibo.com jnbank.cc jnbbbyy.com jnbctv.com jnbosai.com jnbuscard.com jncarw.com jncec.com jncfcj.com jncfjt.com jncgzl.com jnchsd.com jncjjt.com jncjsgroup.com jncncq.com jncyx.com jndfzt.com jndssd.com jndvisa.com jndwyy.com jndzx.com jnec-tencentclb.cloud jnec-tencentclb.com jnec-tencentclb.net jnec-tencentclb.work jnesc.com jnexpert.com jnfx.com jnfxny.com jngaobo.com jngcxy.com jnghm.com jngjj.net jngl.net jnhb.com jnhi.com jnhongyun9.com jnhouse.com jnhwjt.com jnhxzc.com jnhyyy.com jnhzxx.com jnjfwzhs.com jnjingxin.com jnjj.com jnjpkj.com jnjszl.com jnkason.com jnkj.org jnky.com jnlab.com jnlc.com jnlgzs.com jnltwy.com jnmama.com jnmc.com jnnc.com jnnews.tv jnoec.com jnpfsoft.com jnpjyy.com jnqzyy.com jnrain.com jnreli.com jnrmyy.com jnruilun.com jnryc.com jns168.com jnshijia.com jnshu.com jnsjzyxh.com jnskqyy.com jnslyy.com jnsmjt.com jnsms.com jnstdc.com jnszhqyy.com jntcg.com jntig.com jntinchina.com jntyhl.com jnubio.com jnw.cc jnwb.net jnwenlian.com jnwinner.com jnxdgs.com jnxtzdh.com jnxydefsxx.com jnyczx.com jnydgm.com jnyng.com jnyyjt.com jnzcsyj.com jnzhuoxin.com jnzjzx.net jnzl.com jnzongchi.com jnzwgzs.com jnzx.cc jnzycw.com jo-loagm06.com job-sky.com job006.com job0575.net job0663.com job0722.com job0728.com job0768.com job088.com job0917.com job10000.com job1001.com job120.com job168.com job1998.com job225.com job2299.com job250.com job263.com job36.com job510.com job5156.com job5588.com job5678.com job592.com job788.com job88.com job910.com job9151.com job916.com jobbaidu.com jobbole.com jobcdp.com jobch263.com jobcn.com jobczrc.com jobeast.com jobef.com jobgojob.com jobhb.com jobhuaibei.com jobi5.com jobidc.com jobinhe.net jobjm.com jobjy.com jobloser.com jobosoft.vip jobpin.com jobsalon.net jobsdigg.com jobsitechina.com jobsun.com jobtiku.com jobtong.com jobui.com jobuy.com jobvvv.com jobxinpg.com jobyp.com jocat.com jocgreatwall.com jocite.com joclabor.net jocltd.com joctech.com jocund-gift.com jodoll.com joe92.com joessem.com johhan.com johnlz.com johnmedia.com johogames.com johouse.com joi09110pt.com joiest.com joinchitchat.com joindata.net joineonlux.com joinf.com joiningss.com joinkchem.com joinpay.com joinquant.com joinsen.com joinsuns.com joint-harvest.com jointas.com jointech-cn.com jointekbusiness.com jointforce.com jointown.com joinusad.com joinval.com joinway.com joinwaylawfirm.com joinwee.com jojo000.vip jojoread.com jojoreading.com joke66.com jokecommunity.com jokecommunity.net joker.li jokerbai.com jolimark.com jollerge.com jollylifelhq.com jollyspring.com joloplay.com jomocdn.net jomodns.com jomodns.net jomoxc.com jomoxd.com jonesroadbeautyrebate.com jongtay.com jonhuu.com jonllen.com jonln.com jonny.vip jonrmal.com jonsbo.com jonvie.com jooancloud.com joobot.com jooioo.com joojcc.com joojtech.com joojzz.com joomla.work joomobx.com joooz.com joowhee.com joox.com jooxemail.com jooyacn.com jooyoo.net jooyuu.com joozone.com joqoo.com josen.net josephcz.xyz joshreso.com joshua317.com jotop.com jotrin.com jouav.com jouder.com joudou.com joulwatt.com journalmc.com journalsay.com journeyui.com jourserv.com jouypub.com jovcloud.com jovetech.com jovision.com jovisionai.com jovmall.com jowto.com joy-air.com joy-nb.com joy110.com joy147.com joy5151.com joya-electric.com joyact.com joyami.com joyanglab.com joyapi.com joyargroup.com joycity.mobi joydin.com joyes.com joyfire.net joyforce.com joygames.com joyglory.com joyglue.com joyhc.com joyi.com joyinchem.com joying.com joyingbox.com joyingtrip.com joyinpharma.com joyintour.com joyinvleah.com joyj.com joylawyer.com joymeng.com joyncleon.com joynext.com joyochem.com joyocosmetics.com joyoget.com joyoucnc.com joyoung.com joyours2019.com joyowo.com joyplus.tv joyshebao.com joyslink.com joyson.com joyssl.com joystay.net joysung.com joysunsh.com joytest.org joytourvip.com joytrav.com joytraveller.com joytunescn.com joytype.com joyu.com joyuai.com joyugas.com joyulf.com joyware.com joywellsemi.com joywii.net joywok.com joyworkshop.com joywplace.website joyy.com joyyan.com joyyang.com joyyinc.com joyyued.com jozhaopinopin.com jozne.com jp-daigou.com jp-moco.com jp-tencentclb.cloud jp-tencentclb.com jp-tencentclb.net jp-tencentclb.work jp.com jp.run jp0663.com jp95.com jpbeta.net jpcec.com jpchinapress.com jpcoalboss.com jpddc.com jpedo.com jpeen.com jperation.com jpfmor.com jpg.cm jpghd.com jpgjzzs.com jpgreat7.com jphot.net jpisp.com jpjc315.com jpkankan.com jpkix.com jpmetro.com jpmorganchina.com jpmsg.com jpnettech.com jpnlink.xyz jpqgxy.com jprtyun.com jpsdk.com jpseek.com jpshuntong.com jpsmile.com jpspecsz.com jpsto.com jptab.com jpthome.com jptoe.com jpush.io jpushoa.com jpvat.com jpwb.cc jpwb.net jpwind.com jpwindow.com jpwky.com jpwxapp.com jpxm.com jpxue.com jpxww.com jpyoo.com jpyssc.com jpzx.net jpzy01.com jq-school.com jq22.com jq33.com jqbar.com jqcool.net jqdzw.com jqgc.com jqhtml.com jqkgjt.com jqlv.com jqnbp.com jqncp.com jqpress.com jqr.com jqr5.com jqrc.net jqrc88.com jqrkc.com jqs4463333a7.shop jqs4463333a9.shop jqsite.com jqsmm.com jqtxxedk.com jquan.ink jquee.com jquery123.com jqueryfuns.com jquerywidget.com jqwater.com jqwwq.com jqyljt.com jqyou.com jqzhuangshi.com jqzjop.com jqzplat.com jqzw.com jr-soft.com jr123.com jr18.com jr2019.com jravity.com jrbiopharma.com jrbobbin.com jrc-tech.com jrdaimao.com jrexam.com jrfcg.com jrgang.com jrgaofu.com jrhot.com jrj.com jrjiekuan.com jrjingshan.com jrjr.com jrlady.com jrlm81.com jrlxym.com jrmf360.com jrmianban.com jrnba.cc jrntv.com jrpengze.com jrq39d1r8.com jrqiwen.com jrqzw.net jrs-live-football.com jrs-live-score.com jrs-live-z.com jrs-watch-live.com jrs-yc-hupu.com jrsncn.com jrss.com jrszw.com jrteck.com jrtgroup.net jrtx.site jrwenku.com jrxtp.com jrxzj.com jryccm.com jryghq.com jryssj.com jryzt.com jrzj.com jrzp.com js-aeg.com js-aerfa.com js-cct.com js-cxjt.com js-dw.com js-emap.com js-gear.com js-gojo.com js-haiyao.com js-jiatai.com js-jinhua.com js-jwt.com js-leader.com js-lottery.com js-paper.com js-powerstone.com js-rongzheng.com js-seeker.com js-shenghang.com js-talents.com js-weilong.com js-xny.com js-ym.com js-zk.com js.design js04999.com js0573.com js118114.com js165.com js178.com js3.org js3n.com js7xc.com js811.com js9499.com js96008.com js96777.com jsadkg.com jsaeit.com jsaes.com jsafc.net jsahj.com jsaik.com jsanbo.com jsaopa.com jsape.com jsarchi.com jsartcentre.org jsase.com jsatcm.com jsb-syleasing.com jsbaidu.com jsballs.com jsbank.org jsbc.com jsbcfl.com jsbeiyang.com jsbestop.com jsbexam.com jsbfgg.com jsbgj.com jsblj.com jsbsxh.com jsbzwh.com jscba.org jsccn.com jscdn.ink jscdwlw.com jsceb.com jscelltech.com jschahua.com jschanglong.com jschangshou.com jsche.net jschuangnuo.com jschunxing.com jschy.com jscj-elec.com jscj.com jsckw.org jsclearing.com jscmjt.com jscnc.net jscncg.com jscndata.com jscnnet.com jsconi.com jsconnect.com jscrg.com jscsbz.com jscsdr.com jscsfc.com jscssimg.com jscts.com jscz55.com jsd-jasper.com jsd.cc jsd2021.com jsdagua.com jsdas.com jsdcly.com jsddbs.com jsddhjt.com jsddz.net jsdebang.com jsdehui.com jsdesign1.com jsdesoft.com jsdgb.com jsdghfw.com jsdhjssyjt.com jsdjwood.com jsdkdzw.com jsdljn.com jsdmirror.com jsdonglai.com jsdrc.com jsdsad.com jsduopin.net jsdyyt.com jsdz16.com jsdzb.com jsdzgc.com jsdzlm.com jseconomy.com jsedu114.com jseduinfo.com jseea.com jseepub.com jsehealth.com jsendian.com jsenews.com jseoptics.com jsep.com jsepa.com jser.io jsessh.com jsexpressway.com jsfish.net jsfj.net jsfls.com jsfmly.com jsfof.com jsform.com jsform3.com jsfqhwsb.com jsfreiburg.net jsft.com jsfw8.com jsfwpt.com jsfxw.com jsfycdn3.com jsfyjt.com jsfywater.com jsfyxh.net jsgbds.com jsgc.com jsgc168.com jsgcbank.com jsgcjyw.com jsgclaw.com jsgdsb.com jsgerrard.com jsggwhy.com jsgh.org jsghfw.com jsgho.com jsgho.net jsghx.com jsgian.com jsgjksl.com jsgjl.net jsgkw.org jsgogogo.com jsgoldenbridge.com jsgongwei.com jsgpa.com jsgrb.com jsgssb.com jsgsyy.com jsguohua.com jsguolv.com jsgwyw.org jsgx.net jsgxgf.com jsgyrcb.com jsgzgz.com jsh.com jshaipeng.com jshaite.com jshaman.com jshanchao.com jshaorungroup.com jsharer.com jshasy.com jshazz.com jshbank.com jshcsoft.com jshcxn.com jshdata.com jshddx.com jshdwh.com jshealth.com jshemc.com jshfgroup.com jshgfm.com jshggroup.com jshgyb.com jshhjkjt.com jshhqc.com jshhzssj.com jshiway.com jshj.org jshkht.com jshlfd.com jshmrcb.com jshnh.com jshqjt.com jshr.net jshrconsult.com jshrtfl.com jshsoft.com jsht88.net jshtcm.com jshtjt88.com jshtocean.com jshtsteel.com jshuachen.com jshuafu.com jshuana.com jshuanya.com jshuaxiagroup.com jshuaxicun.com jshwyy.com jshy.com jshy1688.com jshykg.com jshysj.com jshywl.net jshyzh.com jshyzh.net jshzfzjt.com jshzzx.com jsi.cc jsifa.org jsinfo.net jsinnopharm.com jsiport.com jsirfe.com jsjajt.com jsjcjx.com jsjclykz.com jsjd.cc jsjdgy.com jsjdjt.com jsjdrcb.com jsjdzf.com jsjeda.com jsjffj.com jsjfz.com jsjgbxg.com jsjgtz.com jsjhtz.com jsjiami.com jsjianli.com jsjianye.net jsjinfu.com jsjinghui.com jsjinqi.com jsjiuda.com jsjj120.com jsjjedu.com jsjjy.com jsjkx.com jsjky.com jsjkzx.com jsjljg.com jsjljy.com jsjnsw.com jsjnw.org jsjrtzjt.com jsjs.cc jsjs1982.com jsjsgroup.com jsjskgjt.com jsjszgz.com jsjtxx.com jsjunma.com jsjwkg.com jsjxh03.com jsjyrcb.com jsjyyz.com jsjzd.com jsk365.com jskale.com jskchem.com jskh.com jskhfm.com jskjcms.com jskjgc.com jskjgroup.com jsklcy.com jskly.com jskoso.com jskpcg.org jskuajing.com jskunquan.com jskwt.com jskxjl.com jslcjt.com jsldweb.com jsldxcl.com jslegal.com jslhgroup.com jslhjg.com jslida.net jslife.net jslijiang.com jslink.com jslmarathon.com jslottery.com jslpk.com jslszz.com jsltgcjt.com jslvzhigu.com jsly001.com jslyjc.com jslysp.com jsmda.org jsmfk.com jsmian.com jsminstar.com jsmjys.com jsmkyy.com jsmo.xin jsmodeling.com jsmolfa.com jsmrmf.com jsmsg.com jsmxgs.com jsmxkj.com jsmxw.com jsna.work jsnaier.com jsnewexpo.com jsningyi.com jsnjck.com jsnjjg.com jsnkmy.com jsnol.com jsnovel.com jsntg.com jsntgas.com jsnx.net jsnxs.com jsnydefy.com jsnydsfy.com jsnzhb.com jsocr.com jsomick.com jsonin.com jsososo.com jspaint.com jspang.com jspatch.com jspcgjg.com jspcinc.com jspdg.com jspeople.com jspesz.com jsph.net jsphjr.com jsphp.net jspoh.com jspp.com jspwc.com jspxcms.com jsq886.com jsqcyjsq.com jsqdsx.com jsqiuying.com jsqlawer.com jsqstg.com jsqt.com jsr.cc jsrail.com jsrc.com jsrcsc.com jsrcu.com jsrdgg.com jsrdsw.com jsrea.com jsrenshi.com jsrgjy.net jsrhzh.com jsright.com jsrongjin.com jsrpebh.com jsrrcb.com jsrsks.com jsrsrc.com jsruifeng.net jsruiyin.com jsrun.net jsrun.pro jsrxjt.com jss52018.com jssaikang.com jssalt.com jssbaoxian.com jssbjt.com jssc.cc jssczxh.com jssdezyy.com jssdh.com jssem.com jssfgl.com jssfx.com jssfzg.com jssgjjt.com jssgjs.com jsshasczzyy.com jsshfcw.com jsshhzx.com jsshichuang.com jsshow.net jsshrzx.com jsshuangxin.com jsshuntai.com jssia.org jssihuan.com jssjchyxh.com jssjiu.com jssjrfw.com jssjxgyw.com jssks.com jssling.com jssltz.com jssnrcb.com jssoar.com jssqwx.com jsssha.com jsssrj.com jsssy.com jsstgs.com jsstt.com jsstyt.com jssunhui.com jssunlord.com jssutong.com jssuty.com jssuwei.com jsswordshop.com jssyj.com jssytc.com jssyyy.net jstcm.com jstedu.com jstex.com jstextile.com jstfdz.com jsthinktank.com jsthjsgc.com jsti.com jstianniao.com jstide.com jstigd.com jstjjs.com jstlcyy.com jstlgn.com jstljs.com jstore.site jstoys.net jstsks.com jstti.com jstv.com jstve.org jstxb.com jstxdm.com jstxrcb.net jstxry.com jsty.com jstyaz.com jstygroup.com jstyjzsg.com jstywl.com jstzhospital.com jstzjy.net jstzloveyuebao.com jstzrcb.com jstzzg.net jsuc.com jsuedc.net jsuhuzhi.com jsure.com jsurehealth.com jsw118.com jsw988.com jswater.net jswb.com jswcc.com jswch.net jswebcall.com jsweiqi.com jsweixiu.com jswel.com jswenguang.com jswenjin.com jswfgroup.com jswjkj.net jswmw.com jswonderful.com jswrhjkj.com jswspocapi.com jswsxx.com jswtc.net jswukong.com jswuyang.com jswwl.com jswx-ej.com jswxhy.com jswxjx.com jswxmax.com jswyglw.com jswyjt.com jswyw.com jswzjt.com jsxbxcl.com jsxcra.com jsxcx.com jsxdf.com jsxdyh.com jsxfedu.com jsxggx.com jsxgjt.com jsxhljt.com jsxhrcb.com jsxht.com jsxhw.org jsxhy.net jsxiangtanzi.com jsxiaoguo.com jsxiaoshi.com jsxiechang.com jsxihu.com jsxinfeng.com jsxinfly.com jsxionghuojxzz.com jsxlhb.com jsxmw.com jsxpbc.com jsxq.com jsxtsw.com jsxxzh.com jsxy.biz jsxyfy.com jsxyjt.com jsxzgjzx.com jsxzkingdee.com jsxzty.com jsy666.xyz jsybjt.com jsybjz.com jsyc-marathon.com jsycmc.com jsycport.com jsycsy.com jsyczls.com jsyd139.com jsydns15.com jsyefc.com jsyes123.com jsyf88.com jsyfxcl.com jsyghw.com jsyhkf.com jsyhxl.com jsyinba.com jsyixin.com jsyjjt.com jsyks.com jsyks.net jsyksw.com jsyljz.com jsymjt.com jsyongbao.com jsypj.com jsypyg.com jsysafe.com jsysedu.com jsysxx.net jsyt.group jsytsw.com jsyun.cc jsyunhao.com jsywjt.com jsyxep.com jsyxh.org jsyxrcb.com jsyypump.com jsyzht.com jsz.asia jsz120.com jszbtb.com jszca.com jszcqy.com jszdlssws.com jszf.org jszfy.com jszg.org jszhaobiao.com jszhiping.com jszhjsjtgs.com jszhongci.com jszhongte.com jszjcg.com jszjgg.net jszjgroup.com jszjrqrd.com jszjscl.com jszjsx.com jszjw.com jszjxh.com jszjzf.com jszkrz.com jszks.com jszlgjg.com jszlyy.com jszmgj.com jszmly.com jszn.ink jsznstny.com jszpw.net jszs-group.com jszs.com jszsgroup.cc jszwpx.com jszxsw.com jszygp.com jszygs.com jszyjsjt.com jszyyguoji.com jszzks.com jszzxjhk.com jt-ele.com jt-it.com jt000.com jt111.com jt120.com jt26wzz.com jt56w.com jt62.com jt91.com jta-travel.org jtamac.com jtamc.com jtbole.com jtbtech.com jtcjd.com jtcopper.com jtexpress.com jtfcg.com jtfengtou.com jtfulfillment.com jtg2g.com jtggame.com jtgloble.com jtgzfw.com jtj-kr.com jtjiaoyu.com jtjms-ae.com jtjms-br.com jtjms-eg.com jtjms-mx.com jtjms-sa.com jtjob.net jtjr99.com jtjt.info jtjyfw.net jtkjbike.com jtktkj.com jtlculture.com jtlfans.com jtlw.com jtlzj.net jtlzx.com jtm-food.com jtm.pub jtmedical.com jtn.com jtnlk.com jtnsh.com jto8.com jtpipeline.com jtrauto.com jtrobots.com jtso.net jtsp98.com jttv.net jttzsy.com jtv123.com jtwmall.com jtxa.net jtxmtxy.com jtxys8.com jtyjy.com jtystz.com jtyxh.com jtzjedu.com jtzyjt.com ju1212.com ju33.com ju51.com ju53.com ju8811.com ju8856.com juaiyou.com juanbao.com juandou.com juangua.com juanyunkeji.com juaq.com jubaihuijia.com jubaiye.com jubaozang.com juben108.com juben98.com juc365.com jucaiw.com jucanw.com jucdn.net jucelin.com jucheng01.net juchengvi.com juchuangbio.com juchuangfushi.com jucool.com jucuiwangluo.com judajia.com judehahh.tech judns.com judong-1.com judouapp.com juduoping.com jue.so juebankongjian.com juecan.com juedui100.com jueduilingyu.com juefeng.com juehuo.com juejin.im juejinchain.com juejinqifu.com juemei.com juemuren4449.com jueqijy.com juequling.com juerguea.com juewei.com juexiang.com juexiaotime.com juexinw.com jueywo.com jufa-composite.com jufa.vip jufaanli.com jufair.com jufeng313.com jufengcap.com jufengcompany.com jufenginfo.com jufengshang.com jufengwuxi.com jufoinfo.com jugao.com jugezi.com jugongdan.com juguang.com juguifu.com juhaihui.com juhangye.com juhaokan.org juhaokanya.com juhaom.cc juhaom.com juhe.com juhe5.com juhebang.com juheweb.com juhomai.com juhome.net juhuasuan.com juhui581.com juhuicloud.com juhuisuan.com juhuiwan.com juhuiwan.net jui.org juicefs.com juicycouture-diaperbags.org juij.fun juiju.com juj66.com juji123.com jujianggcz.com jujiangkk.com jujiangktz.com jujiaobaby.com jujiaonet.com jujias.com jujie.com jujienet.com jujin8.com jujinpcb.com jujoy.com jujumao.com jukan.net juke200.com jukebao.com jukejia.com juketai.net jukeyouxuan.com jukuu.com julaibao.com julang88.com julanggroup.com julanhp.com julanling.com julebu.co julecn.com julefun.com juli-china.com juliandianqi.com juliang8.com juliangcili.com julianghttp.com juliangip.com juliangyinqing.com juliangyinqing.net julifenti.com juligroup.com julihuang.com julink.net julisjj.com julive.com juliym.com juliyuemeng.com julong.cc julongchina.com julonggr.com juluape.com julycn.com julydate.com julyedu.com julysong.com jumanhua.com jumanlou.com jumbo-wpc.com jumbot.net jumei.com jumeinet.com jumengco.com jumengren.com jumengtbs.net jumi-cdn.com jumi.com jumi18.com jumin.cc juming-xz.com juming.com jumingwang.com jumo2.icu jumold.com jumore.com jump-center.com jump-game.com jump301.com jumpjumpcat.com jumple.com jumppo.com jumpserver.org jumpstar-tech.com jumpvg.com jumpw.com jumpwgame.com jumpwo.com jumsz.com jumwayholdings.com jun-hai.com jun.la jun4.com junahotels.com junankeji.com junanres.com junanshengwu.com junao147.com junaotiyu.com junce.com juncyun.com jundacheng.com jundaobaoan.com jundui.net jundushan.com junengdingli.com juneyao.com juneyaoair.com juneyaoairlines.com junezx.com junfalipin.com junfull.com jungewang.com junhaocn.com junhe.com junhegroup.com junhunxiaoshuo.com juniontech.com junjing.net junjingsuodao.com junjue888.com junka.com junkai.net junlanhotels-hp.com junlebaoruye.com junlee.net junli.net junlian.me junlinsz.com junlongtech.com junmoseo.com junnanhao.com junong360.com junpengtouzhi.xyz junph.com junpin.com junpin360.com junpinclub.com junpinghui.com junpinhui.com junpinmall.com junpinzhi.com junqing360.com junrunrenli.com junsaozg.com junshanggame.com junshencm.com junshi.com junshi881.com junshidao.com junshifuxin.com junshijia.com junshijidi.com junshipharma.com junshis.com junshishu.com junshitt.com junshizhanlue.com juntec.com juntu.com junwu262.com junxinmed.com junxunkji.com junyao.tech junyi-auto.com junyimeng.com junying.com junyisj.com junyouxuan.com junyudns.com junyuewl.com junyushop.com junzehb.com junzhenggroup.com junzhi.com junzhuan.com junziboxue.com junzimen.com junziqian.com junziyize.com juooo.com jupiterlauncher.com jupup.com juqi.com juqianwh.com juqibike.com juqingla.com juqk.net juquanquanapp.com jurcc.net juren.com jurenqi.com jurongfangchan.com jurongrencai.com jurp.net jusdasr.com juseey.com jusen2008.com jusha.com jushe.org jushen.co jushequ.net jushequan.com jushewang.com jushi.com jushigj.com jushihui.com jushikk.com jushiwangedu.com jushri.com jushtong.com jushuitan-inc.com jushuitan.com jushuitan.net jushuo.com jusiot.com jusoucn.com jussevent.com jusssports.com jusssportsvenue.com jusstickets.com jussyun.com just-plain.fun just4coding.com just4fun.site just998.com justalkcloud.com justar-cn.com justbbs0.com justbilt.com justbon.com justep.com justering.com justinbot.com justjavac.com justlove.work justmyblog.net justnowmn.com justpodmedia.com justsy.com justtop.com justwe.site jutao.com jutean.com jutengjiqi.com jutingshop.com jutone.com jutongbao.online jutubao.com jutuike.com jutuilian.com juuhe.com juvefans.com juwa.net juwan.com juwang.com juwangmedia.com juwanhezi.com juwanshe.com juweixin.com juxia.com juxian.com juxiang3d.com juxieyun.com juxiiangyou.com juxin.tv juxingj.com juxinguanjian.com juxinhuizhi.com juxuan.net juxuecms.com juxuewen.com juyang-chem.com juyanwenjuan.com juyebwg.com juyingele.com juyingonline.com juyisuliao.com juyoubao.com juyoukuaisong.net juyouqu.com juyoutang.com juyoutv.cc juyouxi.com juyouxuan.vip juyuan.com juyuewang.net juyun.tv juyutube.com juyuweb.net juzhen.com juzhen.io juzhentech.com juzhenyun.org juzhi720.com juzhiliang.com juzhiyuan.com juzhongjoy.com juzicon.com juzicy.com juzifenqi.com juzijiudian.com juzikong.com juzilicai.com juzimi.cc juzioo.com juziseo.com juziss.com juzistore.com juzisy.com juziwulian.com juzix.io juzizhoutou.net juzone.cc juzui.com juzzi-ec.com jv07.com jvbhotel.com jvcxp.com jvdebao.com jvgnwn.sbs jvmai.com jvniubi.com jvpin.vip jvrong.com jvshangwang.com jvshi.net jvtianshanuu.com jvyou.net jw100.net jw1588.com jwappgc.com jwautoparts.com jwbf.online jwbl.com jwdili.com jwedit.net jwetech.com jwfun.com jwgb.net jwgf.com jwick-switch.com jwipc.com jwkj.site jwl100.com jwsaas.com jwsem.com jwshy.com jwsm123.com jwtherapeutics.com jwview.com jwwey.com jwygou.com jwyun.net jwzhn.com jwzykg.com jx-189.com jx-amc.com jx-bank.com jx09.com jx116114.com jx139.com jx163-cname.com jx163.com jx188.com jx3box.com jx3mogu.com jx3pve.com jx3yymj.com jx4.com jx530.com jx8.net jx878.com jxage.com jxairport.com jxausoft.com jxawe.org jxbhwl.com jxbinhong.com jxbond.com jxbscbd.com jxc4.com jxcar.com jxcat.com jxcb.net jxcc.com jxccb.com jxcdkjfz.com jxcfs.com jxchaguan.com jxckd.shop jxcsedu.com jxct.work jxcua.com jxdcnc.com jxdcost.com jxdcw.com jxdhhbhg.com jxdiguo.com jxdinfo.com jxdlzy.com jxdouliang.com jxdown.com jxdx.com jxdxxt.com jxdyf.com jxdyk65ay.com jxdyyy.com jxdzx.com jxeca.com jxedgroup.com jxedt.com jxedu.net jxeduyun.com jxenglish.com jxep.net jxetv.com jxexpressway.com jxey.com jxfeng.com jxfhomes.org jxfls.com jxfrjs.com jxfxky.com jxg1.com jxg866.com jxga.com jxgazx.com jxgcxy.net jxgdhb.com jxgdw.com jxgis.com jxgs.cc jxgtzxc.com jxgwy.org jxgztv.com jxh2000.net jxheming.com jxhesyy.com jxhjxy.com jxhmjx.com jxhmxxjs.com jxhswhcb.com jxhuahang.com jxhxmed.com jxhyxx.com jxiaolan.com jxic.com jximage.com jxjatv.com jxjdgy.com jxjee.com jxjia.net jxjianwei.com jxjktzjt.com jxjmzc.com jxjob.net jxjrw.com jxjt666.com jxjuwentech.com jxjx6.com jxjywater.com jxkeda.com jxkjzb.com jxkp.com jxksw.net jxlgjd.com jxln.com jxlong.com jxlpjt.com jxlsxy.com jxlvs.com jxlwgame.com jxlygo.com jxmhp.com jxmj.com jxmlkd.com jxmrfire.com jxmy18.com jxncyy.com jxndxuebao.com jxnjy.com jxnongjiayuan.com jxnxs.com jxnyc.net jxpdf.com jxphone.com jxpp.com jxpta.com jxqcw.com jxqy.city jxqyfw.com jxrays.com jxrcgame.com jxrcw.cc jxrcw.com jxrczp.com jxrjxh.com jxrmtzx.com jxropan.com jxrqgs.com jxrqhy.com jxrsrc.com jxrtv.com jxrtvu.com jxsdfz.com jxsedu.com jxsenyang.com jxsfjzsh.com jxsg.com jxshangyou.com jxshyzhx.com jxsilkpark.com jxsj-vtech.com jxsjgjt.com jxsjxh.com jxsjypt.com jxslsyy.com jxsltz.com jxslyw.com jxsrfdc.com jxsrjt.com jxsrra.com jxssjx.com jxssjy.com jxstm.com jxsuji.com jxswjt.com jxswskj.com jxswzjx.com jxsxdz.com jxszxyjhyy.com jxszyy.com jxt1314.com jxt189.com jxtcxh.com jxteacher.com jxtech.net jxthz.net jxtransfer.com jxtutechan.com jxtvbbs.com jxtvshop.com jxtwkj.com jxtxzzw.com jxtyzx.org jxtzw.com jxunicom.com jxveg.org jxw12328.com jxwan.com jxwmanage.com jxwmsj.com jxwxai.com jxwz.net jxx7.com jxxdf.com jxxdxy.com jxxhdn.com jxxhsd.com jxxinzhe.com jxxnyqc.com jxxs.net jxycqy.com jxyczs.com jxydt.com jxygroup.com jxyhys.com jxyige.com jxyjxy.com jxyqw.com jxysedu.com jxytech.com jxyuging.com jxyushan.com jxyy.net jxzbx.com jxzeto.com jxzikao.net jxzl.cc jxzxtec.com jxzyx.com jy-leasing.com jy-mach.com jy-sz.net jy.cc jy0604.com jy0832.com jy135.com jy163.net jy1991.com jy391.com jy510.com jy6d.com jyacg.com jyacht.com jyaochi.com jyarton.com jybase.net jyblife.com jyboo.com jycbank.com jycinema.com jycloudgslb.com jycloudgslb.net jydc.com jydj.net jydoc.com jydonghu.com jydtu.com jyebank.com jyebfz.com jyecc.com jyeoo.com jyeoo.net jyfcyy.com jyfprinting.com jyfund.com jyfwyun.com jyg-lighting.com jygch.com jygjsq.com jyglass.net jygo.cc jygpu.com jygsdyrmyy.com jyguagua.com jygyl.com jygz.com jygz.org jyh.com jyhcd.com jyhmz.com jyhome.com jyhwcl.com jyhyfintax.com jyhzsc.com jyimg.com jyinns.com jyip.net jyjhkj.com jyjjc.com jyjk.com jyjxtech.com jykm88.com jykss.com jykuaidi.com jyl88.com jylight.cc jylink.com jyltx.com jylw.com jylxbc.com jymhb.com jymredu.com jynews.net jynongye.com jynyrc.com jyoptical.com jypc.org jypecdn3.com jypipes.com jypmm.com jyqcw.com jyqingfeng.com jyqxz2015.com jyrcjl.com jyrcw.com jyrczp.com jyrlzy.com jyrmtzx.com jyrmyy.com jyrq.net jyry.com jys0755.com jys6z.com jysbcj.com jysd.com jysedu.com jyseeds.com jyshare.com jyshoubao.com jysld.com jysmtech.com jysper.net jysq.net jyss.com jyss.net jysteels.com jysu.com jysyyey.com jysyzk.com jysyzx.net jytaier.com jytcdq.com jytek.com jytjsgyp.com jytmachinery.com jytrump.com jytwp.com jyubbs.com jywanrun.com jywfgg.com jywlcm.com jywmgs.com jywxq.com jyxdyzx.com jyykyy.com jyyun.com jyzb01.com jyzc.com jyzhongg.com jyzz666.com jyzzdq.com jyzzx.com jz-hy.com jz-ins.com jz-job.com jz-marathon.com jz0045.com jz08.com jz100.com jz177.com jz182.com jz26666.com jz36666.com jz5u.com jz6.com jz60.com jz6868.com jz68888.com jzac.org jzagile.com jzb.com jzbar.net jzbull.com jzcbank.com jzchou.com jzcmfw.com jzctmy.com jzcxptm.com jzda001.com jzdd.com jzdlgroup.com jzdwh.com jzedu24.com jzerp.com jzfz.net jzg12315.com jzgc-school.com jzgchy.com jzgcjsysjzz.com jzgczz.com jzgede.com jzggzy.com jzgjbus.com jzgjj.com jzhfz.com jzhkr.com jzhlgg.com jzhospital.com jzhuishou.com jzhx.net jzhy5.com jzj2009.com jzj9999.com jzjgift.com jzjt.com jzking.com jzkjjt.com jzlt100.com jzmbti.com jzmjtjn.xyz jzmlzy.com jzmob.com jzmsmj.com jzmt.net jznygf.com jznyjt.com jzongguan.com jzpat.com jzptt.com jzpu.com jzpx.net jzq9pzcz8b.world jzqe.com jzqlyptall.com jzrb.com jzrc.net jzrsks.com jzsbs.com jzsbxxh.com jzsc.net jzsc8.com jzsec.com jzsf.com jzsgzmhjyxgs.com jzsjyksy.com jzsos.com jzsousuo.com jzsszyjzx.com jzsxinyudianqi.com jzsyy.com jzszdq.com jzszzx.com jztey.com jztsjx.com jztvnews.com jztvxmt.com jztweb.com jzty.com jztylxx.com jztzw.net jzwcom.com jzwl66.com jzwxfrp.com jzx.com jzxian.com jzxjcf.com jzxs.com jzygczx.com jzyqyb.com jzyqzypg.com jzyx.com jzzfyw.com jzzhw.com jzzls.com jzzx.com jzzypt.com k-boxing.com k-dyn.com k-kbox.com k-res.net k.biz k0898.com k0rz3n.com k12.vip k12china.com k12kc.com k12zx.com k165.com k166.org k1815.com k1u.com k1wave.com k22.xyz k2os.com k3072.com k365.asia k366.com k369.com k382.com k3cdn.com k3yes.com k43439.com k518.com k5hp4qte.work k5n.com k6uk.com k73.com k780.com k8.com k8008.com k8k8k8.com k8ser.com k8smeetup.com k8stech.net k913.com k99.cc ka20.com ka5188.com kaaass.net kaadas.com kaaer.org kaayou.com kaayou.net kaayun.com kaba365.com kabapay.com kabasiji.com kaboy.net kabu1.com kaceie.com kachecn.com kacheren.com kacper.fun kada.com kada163.com kadang.com kaduoduohk.com kaeryun.com kafangtech.com kafeng.com kagirl.net kah8.com kahaozhushou.com kahha.com kahuodong.com kai-lun.net kai-ying.com kaiba315.com kaibanglaw.com kaiboer.com kaichejiqiao.com kaichengschool.com kaicn.com kaidanbao.com kaidany.com kaidapack.com kaidechem.com kaidianbang.com kaidicloud.com kaidydrilling.com kaierda.com kaifabang.com kaifae.com kaifage.com kaifakuai.com kaifama.com kaifamei.com kaifangkecheng.com kaifapiao.com kaifaxhl.com kaifaxueyuan.com kaifayun.com kaifu.com kaifu1.com kaifubiao.com kaifubiao123.com kaigao.com kaige68.com kaigongyi.com kaiguo.com kaihei.co kaihong.com kaihu51.com kaihuaeva.com kaihuia.com kaijia-smt.com kaijia.com kaijiage.com kaijiejinrong.com kaijieunion.com kaijiudian.net kaikeba.com kailang17.com kaili-group.com kailinchem.com kailing.pub kailinjt.com kailitech.com kaimanhua.com kaimen360.com kaimenhong.org kaimg.com kaimitech.com kaipai.com kaipanhong.com kaipanla.com kaipuyun.com kaipuyun.net kaiqiancq.com kaiqiu.cc kaiqsz.com kaiquan.com kairui.tech kairunjinshu.com kaisacst.com kaisagroup.com kaisahotel.com kaisalong.com kaisamicf.org kaishan-pv.com kaishancomp.com kaishangroup.com kaishigo.com kaishikan.com kaishuhezi.com kaishujia.com kaishustory.com kaitai668.com kaitaibh.com kaitaishotblasting.com kaitaku.xyz kaiteer17.com kaitianad.com kaitiancloud.com kaiting.cc kaiwenda.com kaiweneducation.com kaiwind.com kaixia.com kaixin.com kaixin00.com kaixin001.com kaixin100.com kaixinbao.com kaixindou.net kaixinguopiao.com kaixinguopiaowu.net kaixinhui.com kaixinhui.net kaixinit.com kaixinjiehun.com kaixinlu.com kaixinvv9.com kaixinzuqin.com kaixue.io kaiyanapp.com kaiygame.com kaiyi.cool kaiyihome.com kaiyinedu.com kaiyuan.me kaiyuanbusiness.com kaiyuancn.com kaiyuangroup.cc kaiyuanhospital.com kaiyuanhotels.com kaiyuanweilaikeji.com kaiyuedoors.com kaiyueyun.com kaiyun.com kaiyun.net kaiyun360.com kaiyuncare.com kaiyunwu.net kaizhan.com kajicam.com kajishou.com kaka.com kaka996.com kakacl.net kakadown.com kakalili.com kakamobi.com kakappt.com kakashuzi.net kakatx.com kakayigui.com kakayuy.net kaken-china.com kaku-scdn.com kaku.tv kakucloud.com kalading.com kalamitsibeach.com kalazan.com kalcaddle.com kaleesh.com kalefans.com kalegou.com kalifang.com kaliorg.com kalugaqueen.com kaluli.com kamaqc.com kameng98.com kamenwang.com kamfat.net kami.vip kami5.com kamidox.com kamisamak.com kamitemall.com kammtown.com kamoasia.com kamopos.com kamtao.com kamwu.com kan.cc kan0512.com kan3721.com kanbaobei.com kanbing.net kancaibao.com kanchao.com kanchuan.com kandao.com kandaoni.com kandedongguan.com kandegang.net kandehotelhuizhou.com kandian.com kandian.net kandian.tv kandian5.com kandianbao.com kandianshi.com kandianzixun.com kandzww.com kanfangjilu.com kanfeidie.com kang-li.com kang-zhuo.com kang7.com kangai8.com kangame.tv kangantu.com kangbaifoundation.com kangbatv.com kangbeijia.com kangbidz.com kangbixing.com kangchun.com kangdacolorful.com kangdaep.com kangdajiuzhou.com kangdalawyers.com kangdamed.net kangdexin.com kangdns.com kangehao.com kangepian.com kangerfugroup.com kangfenhui.com kangfenmao.com kanggui.com kanghe.com kanghu.net kanghuash.com kanghuayun.com kanghui.com kanghuicy.com kanghuwang.com kangjiachildcare.com kangjian.com kangjian888.com kangjiezx.net kangkang.com kanglaohui.com kangle.net kanglepharm.com kanglisha.com kangliyaoye.com kangnai.com kangpeining.com kangpugroup.com kangq.com kangqiao-sh.com kangre.com kangrunpharm.com kangshuai.biz kangsibeauty.com kangtaiwang.com kangting.com kangtor.com kangufen.com kanguo.com kanguowai.com kangxi55wlsf.com kangxiang.com kangxidi.com kangxin.com kangyang51.com kangyiqiye.com kangyuntang.com kangze.com kangzhi.com kangzhimei.net kangzhiqiao.com kanimg.com kaniuquan.com kanixiaoxia.com kanjia.com kanjian.com kanjianxinli.com kankan.com kankan.run kankan365.cc kankancity.com kankanews.com kankanlive.com kankanmi.com kankannews.com kankanpiao.com kankantu.com kankanyn.com kankanyulewang.com kankanzhijian.com kanketv.com kankezw.com kankun-smartplug.com kanman.com kanniao.com kanong.com kanongyun.com kanqibao.com kanqiye.com kanqq.com kanqu.com kanrang.com kanrang.net kansdk.com kansea.com kanshangjie.com kanshijie.cc kanshu.com kanshu5.net kanshu58.cc kanshuge.com kanshuhai.com kanshushi.com kansp.com kantao.net kantianqi.net kantop.net kantsuu.com kantu.com kanwuye.com kanwz.net kanxue.com kanyaji.com kanyijie.com kanyixue.com kanyouxi.com kanyouxi.tv kanyun.com kanzhekou.com kanzhun.com kanzuixian.com kao100.com kao750.com kao8.cc kao910.com kaoaa.com kaobeitu.com kaochong.com kaochongqing.com kaodaojy.com kaodongli.com kaoersi.com kaogua.com kaoguobao.com kaojiaoshi.com kaojionline.com kaojuan.com kaola.com kaola.com.hk kaola100.com kaolacam.net kaolacdn.com kaolafm.com kaolafm.net kaolawenku.com kaom.net kaomeiyuan.com kaonaw.com kaonenyi.com kaonun.com kaopenhs.com kaopu001.com kaopubao.com kaopujinfu.com kaopuyun.com kaopuyun.net kaoqin.com kaoqintong.net kaoqinyi.com kaoruo.com kaoshenzazhi.com kaoshi110.com kaoshi365.com kaoshi86.com kaoshibao.com kaoshibb.com kaoshidian.com kaoshixing.com kaoshizixun.com kaosite.com kaostedu.com kaotipai.com kaowana.com kaowang.com kaowx.com kaoyan.com kaoyan.org kaoyan1v1.com kaoyanbox.net kaoyancas.com kaoyancas.net kaoyango.com kaoyanjun.com kaoyanking.com kaoyanmiji.com kaoyansiji.com kaoyanwin.com kaoyaya.com kaozc.com kaozh.com kaozhiye.com kap666.com kapokshenzhen.com kaquanbao.com karatetrend.com kargocard.com karl-led.com karlzhou.com karrytech.com kartlover.com kascend.com kashangwl.com kashen.com kashen8.com kashengauto.com kasitesoft.com kaslyju.com kasscloud.com kataliya.net kate-kanebo.net katongji.com katvr.com katyusha.net kava-auto.com kavaparts.com kaven.xyz kavience.com kawahdinosaur.com kawasakijp.com kawata-group.com kawoka.com kayajiuhui.com kayhanfamily.com kayipgroup.com kayougame.com kaytrip.com kaytune.com kazakcnr.com kazhifu.com kazithai.com kazl.com kb.com kb54.com kb9.com kbans.com kbao123.com kbcdn.com kbcmw.com kbcool.com kbdfans.com kbgogo.com kbgok.com kbiquge8.com kbjcn.com kbkyy.com kblcdn.com kblin.com kbmlifesci.com kbn-zhejiang.com kbnhp.com kbnqy.com kbobo.com kboth.com kbrightlaw.com kbscd.net kbscloud.com kbsml.com kbspheres.com kbtingdu.com kbyun.com kc-keycool.com kc0011.net kc87.com kcbebank.com kccidc.com kccn.net kcdn0.com kcdnvip.com kcfei.com kchance.com kchezhan.com kchile.com kchuhai.com kci-gz.com kciptv.com kcjpharma.com kcjyyjzzs.com kcloudidc.com kcm120.com kcmice.com kcouxp.com kcqcjt.com kcrcb.com kcrea.cc kctgov.com kctzgroup.com kcwiki.org kcyuri.com kczhaosheng.com kd010.com kd100.com kd120.com kd128.com kd315.com kd58.com kd9000.com kdadj.com kdaec.com kdatacenter.com kdatu.com kdcloud.com kdclub.net kdcnu.com kdefu.com kdf.ink kdgcsoft.com kdhj-edu.net kdige.com kdkefu.com kdkh.com kdlgs.com kdnet.net kdniao.com kdpt.net kdr163.com kdrmd.com kdroid.club kds100.com kdslife.com kdt.im kdued.com kdweibo.com kdzs.com kdzwy.com kdzxedu.com ke-chuang.com ke.com ke51.com ke6.com ke82.com ke86.com ke8u.com keai.icu keaidian.com keaiq.com kean1688.com keanrui.com keaopt.com keba.host kebango.com keberosteri.com kebi.biz kebide.com kebingzao.com keboyunxiao.com kebvalves.com keceyun.com kechengbiao.net kechengkeli.com kechuang.org kechuangai.com kechuangfu.com keda-digital.com keda-group.com keda-u.com keda.com keda.fun kedabai.com kedacom.com kedaifu.com kedang.net kedanm.com kedaotech.com kede-auto.com kede.com kedefamen.com kedi.cc kedian-tech.com kedianduo.com kedidairy.com kedingyun.com kedou.com keduxinxi.com kedwyz.com keede.com keejuu.com keen-dental.com keenbow.com keenonrobot.com keensky.com keep.com keep999.com keepc.com keepcdn.com keepchen.com keeper.work keepfightinghxz.xyz keepke.com keepmobi.com keepnight.com keepsoft.net keepyoga.com keerdapower.com keerqinmuseum.com keerworld.com keetalks.com keewin.com keey.sh kefeijn.com kefenxi.com kefoo.com kefu01.com kefutoutiao.com kefuzu.com kege.com kehaohao.com kehou.com kehu51.com kehuaapp.com kehuan-upward.com kehuda.com kehuduan.com kehuzhichi.com kehuzhichi.net keil345.com keinsci.com keithbo.com kejet.com kejet.net keji100.net kejian.design kejianx.com kejibear.net kejicut.com kejihai.com kejik.com kejilie.com kejimeixue.com kejingyuan.com kejinlianmeng.com kejinshou.com kejiqi.com kejishou.net kejitai.com kejitechangsheng.com kejitian.com kejiwang.cc kejiweixun.com kejudati.com kekaku.com kekaoxing.com kekaoyun.com keke.moe keke289.com kekebaby.com kekedj.com kekegold.com kekenet.com kekeniu.com kekeshici.com kekeyuyin.com kekkyy.com kekoku.com keky.org keladuoww.com keladuoyy.com kelaisz.com kelanjt.com kelankqs.com keldamedical.com kele8.com kelehuyu.com keleqiu.com kelete.com keliangtek.com kelibiao.com kelikt.com kelimotor.com kelinpower.com kelinsoft.com kelon.com kelong-chemical.com kelong-powder.com kelongding.com keloop.com kelorlink.com kelphome.com kelu.org kelun.com keluokelie.com keluyjs.com kema66.com kemaicrm.com keman.com kemavip.com keme.work kemiaotai.com kemicro.com kemike888.com kemov.com ken-tools.com ken.io kename.com kenaqz.com kenbotong.com kendingde.com kendryte.com keneng.org kenflo.com kenfor.com kenfor.net kengatoki.com kengdie.com kengic.com kengwan.com kenistab.com keniu.com keniub.com keniuxy.com kenjieer.com kenkapacking.com kenpai.com kenpains.com kenshu.cc kenshuhu.com kensuntec.com kentier.com kentxxq.com kenuonet.com kenweini.com kenxon.com kenzochina.com keoaeic.org keovo.net kepusky.com keputech.com keqiaojob.com keqii.com kequcps.com ker58.com kercan.net kercoras.com kerisom.com kerlala.com kernel-sh.com kernel.cc kernelfood.com kernelmed.com kernelnote.com kerneltravel.net kerntech-asp.com kerric-china.com kerryparkside.com keruibell.com keruigroup.com keruiiai.com keruilai.com keruilait.com keruisifan.com keruknowledge.com kerun2010.com kerundegroup.net kerust.com keruyun.com keruyun.net kery-pharm.com kerysoft.com kesci.com kesheng.com keshenwei.com keshizhongguo.com kesion.com kesiyunlai.com kesonco.com kesong.co kesong520.com kesonic.com ketangpai.com ketechdigital.com ketianguanye.com ketingkeji.com ketingzhuangxiu.com ketofbx.net kevinems.com kevinjiang.info kevinlq.com kevke.com kewu.cc kewucool.com kexgfv.com kexianggroup.com kexin001.com kexinbiotech.com kexincpa.com kexing100.com kexingchem.com kexinggy.com kexinhaoma.org kexinshe.com kexinyun.org kexu.com kexue.com kexue.fm kexuezixunzzs.com kexuna.com key-iot.com keyboardancer.com keyboardingonline.net keycom-ip.com keydak.com keydatas.com keyde.com keyfc.net keygotech.com keyi.mobi keyibao.com keyigroup.com keyingchem.com keyipump.com keylol.com keymantek.com keymedbio.com keymoe.com keyoo.com keyoou.com keyray-hk.com keyshot.cc keytherapharma.com keyto168.com keytoix.vip keyu66.com keyuanpharma.com keyubio.com keyuejiazheng.com keyueng.com keyunchaxun.com keyunidc.com keyunlaser.com keyunsoft.com keyyaam.com kezehb.com kezhaozhao.com kezhi.tech kf.ai kf155yy.com kf3msfm.com kf5.com kf911.com kf9977.com kfadx.tech kfand.com kfang.xin kfb126.com kfb163.com kfcbest.com kfcdn.com kfchiheng.com kfcjrl.com kfd3sm2c.com kfdcc.com kffone.com kfganquan.com kfhome.com kfhty.com kfj.cc kfjd.com kfjyd.com kfjyjt.com kflhgs.com kfmanager.com kfqizhongji.com kfsddj.com kfskxy.com kfvcca.com kfw001.com kfzdh.com kfzhinan.com kfzimg.com kfzls.com kg-power.com kg.com kghbcn.com kgimg.com kgipr.com kgithub.com kgnmkj.com kgogame.com kguaq.com kgzyy.com kh-zx.com kh84.com khdatasolutions.com khdyly.com khfwedu.com khhospital.com khidi.com khlgamen.com khly.com khlysc.com khmhvlw.com khnhw.com khotyn.com khqihuo.com khruiming.com khs1994.com khworidtour.com khysct.com ki-pa.com kiaic.com kiana.love kiapmyf.xyz kibinggroup.com kickoffo.site kicontech.com kid17.com kidikidi.net kidsccshow.com kidscoding8.com kidsdown.com kidseq.net kidsflab.org kidsfoto.net kidspsy.com kidsthomas.com kidsyun.com kidulte.com kidulty.com kiees.com kiiik.com kiijoy.com kiinii.com kiiyi.com kijifept.com kikiwon.com kikoplay.fun kikusuitape.com kikuu.com kilamanbo.com kililife.com killdb.com killerheelsphotography.org kilo1kw.com kiloai.com kimberley-technology.com kimderlite.com kimi.ai kimi.com kimi.link kimi.pub kimiss.com kimiss.net kimiter.com kimleo.net kimqi.net kimsom.com kimxz.com kina.cc kinbull.com kindechem.com kindlelib.com kindobest.com kindredous.com kindsoft.net king-capital.com king-rain.com king-strong.com kingandkey.com kingandwood.com kingarad.com kingbank.com kingboritape.com kingborn.org kingbos.com kingbrother.com kingcheergame.com kingcloud.com kingcloudad.com kingclouddns.com kingcms.com kingdaychina.com kingdee-soft.com kingdee.com kingdee.com.tw kingdee.org kingdeemall.com kingdeestar.com kingdeeyun.com kingdelgc.com kingdom-ceramic.com kingdomfishing.com kingdomsolar.net kingdraw.com kingdun.net kingexplorer.com kingfu-china.com kingfulai.com kinggoo.com kinggrid.com kinghomechina.com kingidc.net kinginfo.com kingjee-tech.com kingjee.com kingjin-sh.com kingkaid.com kingland119.com kingleen.net kingliton.com kinglory.com kinglymotor.com kinglyuan.com kingmagic.co kingmagnet.com kingmb.com kingmylab.com kingnare.com kingnet.com kingnetdc.com kingnettech.com kingoit.com kingosoft.com kingpower-cn.com kingrack.com kingray-tech.com kingreader.com kingrein.com kingroot.net kings3d.com kingsemi.com kingsh.store kingshan2002.com kingsley-cq.com kingslicer.com kingsmen-gc.com kingsoft-office-service.com kingsoft.com kingsoft.net kingsoftstore.com kingsrich.com kingst.org kingstarmedical.com kingstartech.com kingston.group kingstronbio.com kingsunedu.com kingsungmedical.com kingsunpower.com kingsunsoft.com kingtaifook.com kingtroldata.com kingtysin.com kingview.com kingwisoft.com kingyield.com kingyon.com kingyork.com kingzom.com kinhom.com kinhoo.com kinlong.com kinpan.com kinpn.com kinpoway.com kinqee.com kinsec.com kinte-ind.com kintiger.com kintn.com kintowe.com kinval.com kinwong.com kinzhan.com kinzoncap.com kiomodesign.com kira.cool kirakuapp.com kirgen.com kiriko-china.com kirin-tech.com kirincloud.net kirinmach.com kirinvm.com kirkcloud.com kiscoca.com kisdee.com kisence.com kisilicon.com kisops.com kiss998.com kisskisso.com kissyj.com kissyui.com kiswo.com kit-lee.me kitic.net kitiu.com kitking.com kitontech.com kitstown.com kitty.su kituin.fun kiun24ok.com kivend.net kivo.fun kivo.wiki kiwa-tech.com kiwenlau.com kiwifarms.net kiwifarms.st kiwimoore.com kiwisec.com kiyuu.club kj-ic.com kj-pcb.com kj021.com kj1d.com kj2100.com kj3.com kj400.com kj521.com kjb2c.com kjcdn.com kjcenter.com kjchina.com kjchuang.com kjcity.com kjcmxx.com kjcxpp.com kjcyfz.com kjdb.org kjeport.com kjfhe.com kjfns.com kjgcl.com kjghyjy.com kjhaoyun.com kjimg.com kjingbao.com kjiuye.com kjjcrm.com kjjl100.com kjjxjy.com kjjxl.com kjjzm.com kjkd.com kjkp.com kjks.net kjkxun.com kjlww.com kjmofang.com kjmte.com kjmti.com kjpmconsulting.com kjr365.com kjrs365.com kjson.com kjsv.com kjt.com kjtbao.com kjtianshanxu.com kjtong.com kjtpay.com kjutf-uejfncpo72u.com kjw.cc kjwlxt.com kjwugx.com kjycx.com kjyicdn.com kjykcdn.com kjyun123.com kjzhan.com kjzj.com kjzx.net kjzxtk.com kk-china.com kk1.vip kk169.com kk18.com kk1bie336689.com kk30.com kk30.net kk3g.net kkabc.com kkapp.com kkcache.net kkcapture.com kkcdn.net kkcha.com kkcharge.com kkcoo.com kkcursor.com kkdaxue.com kkddosdns.com kkdgroup.com kkdict.com kkdnsv1.com kkdownload.com kkdzpt.com kkeji.com kkexcel.com kkfesw.com kkffdns.com kkfw.net kkgithub.com kkguan.com kkgwy.com kkh-global.com kkhaitao.com kkid.vip kkidc.com kkj2.com kkjiaofei.com kkjs.tech kkk5.com kkkwww.com kkkxj.com kklishi.com kklxj.com kkmall.org kkmar.com kkmh.com kkmicro.com kkmop.com kkong.vip kkrb.net kksmg.com kksofts.com kkt.com kktian.com kktijian.com kktv1.com kktv5.com kktv8.com kkuu.com kkwafdns.com kkwan.cc kkx.net kkxnb.com kkxxiazai.com kkyoo.com kkyp.shop kkyuan.com kkyuedu.com kkzj.com kkzs.io kkzycdn.com kl1l5.com kl321.com kl688.com klandk.com klbn100.com klbyjt.com klchemicals.net klclear.com klcsb.com kldhq.com klgkm.com klhpw.com klhuyan.com klianfa.com klicen.com klingai.com klingxai.com klinlee.com klisedu.com kliwu.com kljiyou.com kljtc.com kllife.com klmnf.com klmy118114.com klmybbs.com klmymarathon.com klmyssn.com klner.com klniu.com klpbbs.com klqcb.com klqy.com kltgt.com kltjn.com kltong.com klub11.com klv5qu.com klvtu.com klwxq.com klx-tech.com klxksci.com klxsw.com klxuexi.com klyang.com klzhlogistics.com km.com km10z.net km169.net km18.net km1818.com km28.com km5858.com km8z.net kmail.com kmaoxx.com kmapp.net kmbbs.com kmbdqn.com kmcha.com kmcits.com kmcits0716.com kmcsg.com kmcxedu.com kmcxg.com kmcz365.com kmd8888.com kmdctz.com kmdcwt.com kmdn.net kmdns.net kmeecc.com kmeila.com kmeitu.com kmf.com kmfengli.com kmg-jd.com kmgdgs.com kmguolv.com kmgybsr.com kmhpc.net kmhwtz.com kmjt.net kmlcl.com kmlhh.com kmljexb.xyz kmmama.com kmmdkj.com kmoe0.com kmplayercn.com kmqcwx.com kmqianneng66.com kmqsaq.com kmread.com kmrfidtag.com kmrijie.com kmron.com kms.pub kmssgd.com kmsz.net kmszy.com kmteruite.com kmthy.com kmtlbj.com kmtlfckyy.com kmtrh.org kmtxzs.com kmvtc.net kmw.cc kmw.com kmwatersupply.com kmway.com kmwx.net kmxkh.com kmxyj.com kmy100.com kmyanyou.com kmyestar.com kmykt.com kmyzzx.com kmzhihuitong.com kmzp.com kmzscc.com kmzx.com kmzx.org kn-light.com kn-nanjing.com kn0sky.com kn120.com knbmotor.com knewbi.com knewone.com knewsmart.com knfeco.com knight-un.com knightedge.com knightli.com kninebox.com knj-nanjing.com knn-nj.com knnnd.com knockdream.com knotesapp.com know-act.com know88.com knowapartments.com knowfashionstyle.com knowhowedu.com knowingclouds.com knowingcloudvip.com knowingyun.com knowledgedp.com knowledgu.com knowlink-assets.com knownpcb.com knownsec.com knowsafe.com knowsurface.com knowyourself.cc knoya.com knscq.com knsheng.com knsyxw.com knt-nj.com kntc.win kntn.tech knvps.com knxchina.org knzlcq.com ko0.com koal.com koalacam.net koalareading.com koalasolo.com koba8.com kobelco-zh.com kobox.tv kocla.com kodcloud.com koderover.com kodmp.com koenli.com kof-kol.club kofficemart.com kofuf.com kofunion.net kogfc.net kohergroup.com koiclub.net koikreative.com koinocn.com koioawq.com kojihjnklka.asia kojtech.com kok.plus kokojia.com kokophp.com kolarmy888.com kolcc.com kole8.com kolemay.com kolleracademy.com kolrank.com kolstore.com kolyun.com komect.com kometo.com kompasszdcom.site konami.cc koncoo.com konekomoe.com konfan.net kongai.org kongao.com kongapi.com kongbugushi.com kongdao.com kongduan.com kongfz.com kongge.com kongjianjia.com kongjibusiness.com kongjie.com kongjieshijie.com kongjitang.com kongjun.com kongkangroup.com konglei.com konglonggu.com kongming-inc.com kongqinengrebeng.com kongquecheng.com kongqueyuzd.cc kongrong.com kongtiao163.com kongtiao365.com kongwu2022.com kongzhi.net kongzhiji.com kongzhong.com konka.com konkamobile.com konkasnow.com konkek2.com konlan.com konotaku.com kooaoo.com koobeemobile.com koobone.com koocdn.com kooci.net koodi98.com koofang.com koofun.com koogua.com kook.vip kookong.com koolcenter.com kooldns.com koolearn.com koolproxy.com koolyun.com koomao.com koopass.com koorun.com kooshui.com kooteam.com koovin.com koowo.com kooxoo.com kopebe.com kopisee.com kopitokein.com kopiurerolex.com koplayer.com kopperchem.com koreabt.com koreaxing.com korirl.com kormee.com kornsweets.com koronsoft.com korosensei.com korrun.com kortatb.com kortrong.com kotei-info.com kotoo.com kotoyoshi.com koubei.com koubeikc.com koucai.com kouchouwang.net kouclo.com koudai.com koudai8.com koudaigou.net koudaili.com koudaionline.com koudaionline.net koudaitiku.com koudaitong.com koudashijie.com kouer.com kouer.net kougukougu.work kouhao8.com koukao.net koukao.org kouke5.com koukoutu.com koukuko.com koumakan.cc kouqiangba.com koushare.com kouss.com kouxin.com kouxin.net kouyijia.com kouyu100.com kouzi.com kovemoto.com kowa-dental.com kowa103.com kowloonhospital.com koyuki.cc koz.moe kpblw.com kpbyd.com kpdhk.com kpfans.com kpfcw.com kphm88.com kphwchem.com kpjushi.com kpkpw.com kplanet.vip kpmqg.com kpoll.net kppcsem.com kprepublic.com kpt5.com kptour.com kpwcmb.com kpyy239.com kpyy258.com kpzip.com kpzip.net kpzpw.com kpzs.com kpzuan.com kq-cnmia.com kq36.com kq39.com kq520.net kq7.com kq81.com kq88.com kqalevel.com kqapi.com kqgeo.com kqgyl.com kqj123.com kqjtj.com kqjtj.net kqlink.com kqmmm.com kqopg.app kqqy.com kqw.com kqwh231122.com kqwlxxjs.com kqzlzx.com kqzp.net kr-cell.com kr-tencentclb.cloud kr-tencentclb.com kr-tencentclb.net kr-tencentclb.work kr.com kr126.com kra-5at.com krahag.com krak12.com kraken30.com krbk.com krd168.com krdrama.com krenzheng.com kridol.com kriszhang.com krones-group.com krones.com krpano.tech krqcitie.com krszf.com krtdl.com krxz.com krzb.net krzzjn.com ks-cdn.com ks-cdn1.com ks-cdnv6.com ks-fag.com ks-live.com ks-spring.com ks-terminals.com ks-wg.com ks1688.com ks321.com ks365.org ks5.uno ks51.com ks5u.com ksair.com.tw ksapisrv.com ksbao.cc ksbao.com ksbbs.com ksbm.com ksc-test.com kscac.com kscbigdata.cloud kscbpkf.com kscdns.com kschuangku.com kscloudapi.com ksco.cc kscord.com ksdedu.com ksdhgy.com ksdown.com ksecit.com ksedt.com kseibitools.com ksense.com ksfang.com ksgnr.com kshahn.com kshaoteng.com kshfgf.com kshjn.com kshot.com kshot.net kshtxf.com kshuwx.com kshwtj.com ksjgs.com ksjhaoka.com ksjxgs.com kskwai.com kslccb.com kslyt.com ksmend.com ksmiai.com ksmingl.com ksmjmj.com ksmmed.com ksmobile.com ksmq5a9kxzmr.com ksndsa.com ksnows.com ksoapp.com ksokay.com ksops.com ksord.com ksosoft.com kspays.com kspeeder.com kspkg.com ksrc001.com ksren.com ksrenfan.com ksria.com ksrmtzx.com ksrmyy.org ksrsy.com ksruanjian.com kss4.com kssip.msi.com kssjkj.com ksslxh.com kst-cn.com kst100.com kst365.com kstao.com kstengcai.com kstnjscl.com kstore.space kstore.vip kstv.com ksupdate.com ksust.com kswcd.com kswxjnjs.com ksx88.com ksxfgc.com ksxianda.com ksydns.com ksydx.com ksyiqiwan.com ksyll.com ksyna.com ksyun.com ksyun.net ksyunad.com ksyuncdn-k1.com ksyuncdn.com ksyuncs.com ksyungslb.com ksyungslb2.com ksyunv5.com ksyunv6.com ksyunwaf.com ksyxmc.com kszhuanjia.com kszlzz.com kszpw.com kszxzsxh.com kt007.com kt10000.com kt286.com kt40.com kt5u.com ktallong.com ktang1.com ktazg.com ktbiao.com ktc-med.com ktcomposite.com ktctjt.com ktcupdate.com kting.info ktkt.com ktlshu.vip ktlstbg.com ktmap.com ktmv.com ktmwan.net ktplay.com ktq8e0zm.work ktrcn.com ktrlight.com ktstny.com ktswjt.com ktt-automation.com ktu56.com ktuner.store ktv.com ktvc8.com ktvdaren.com ktvme.com ktvsky.com ktwap.net ktxuexi.com ktyunlianjie.com ku25.com ku33a.net ku6.com ku6.net ku6cdn.com ku6img.com ku82.com ku90.com ku968.com ku987.com kua365.com kuaaa.com kuabaobao.com kuadu.com kuafuai.net kuai-fei.com kuai-ying.com kuai.ma kuai65.com kuai666bj7tu65rkdz82.com kuai666bjeve6ks43qyw4vc8.com kuai666bjs3gsymi6v4h5pz.com kuai666kysktrxmwici27.com kuai666vs5aq9o3ytdgp.com kuai7.com kuai8.com kuaiads.com kuaiapps.com kuaibaobei.com kuaibiao2000.com kuaicad.com kuaicha365.com kuaicha888.com kuaichala.com kuaichale.com kuaidadi.com kuaidaili.com kuaidi.com kuaidi100.com kuaidi321.com kuaidihe.com kuaidihelp.com kuaidihome.com kuaidilab.com kuaidim.com kuaidizs.com kuaiduizuoye.com kuaiduwen.com kuaiex.com kuaifaka.com kuaifaka.net kuaifawu.com kuaifeng.com kuaifuinfo.com kuaigames.com kuaigeng.com kuaigou.co kuaiguohui.com kuaih5.com kuaihaodai.com kuaihecaishui.com kuaihou.com kuaihuoyun.com kuaihz.com kuaiji.com kuaiji.so kuaiji521.com kuaiji66.com kuaijianji.com kuaijiepaotui.com kuaijilunwen.com kuaijinniu.com kuaijipeixunlg.com kuaijishizi.com kuaijisishu.com kuaijitong.com kuaijizheng365.com kuaikan.ink kuaikanad.com kuaikanmanhua.com kuaikao.com kuaikaoti.com kuaikuaicloud.com kuaila.com kuailails.com kuailaiwz.com kuaile-u.com kuaile8.com kuaile800.com kuailedo.com kuailekaishi.com kuailelunwen.com kuailepipixia.com kuailetongyao.com kuailexs.com kuailexue.com kuaileyouxuan.com kuailezu.com kuailiyu.com kuailiyu.net kuailon.com kuailvzaixian.com kuaimai.com kuaimi.com kuaimi.net kuaiming.com kuaipandata.com kuaipao.run kuaipao8.com kuaipianer.com kuaipin.work kuaipiyun.com kuaipng.com kuaiqi.net kuaiqikan.com kuaiqin.com kuaiqushuiyin.com kuairen88.com kuaishangkf.com kuaishebao.com kuaishiedu.com kuaishou-gz.com kuaishou.com kuaishouapp.com kuaishouapp.net kuaishouapps.com kuaishouba.com kuaishougroup.com kuaishoupay.com kuaishouzt.com kuaishuru.net kuaisu.com kuaisushu-cnd.com kuaisuyun.com kuaitijian.com kuaitouad.com kuaitu.cc kuaitu666.com kuaitui365.com kuaiwan.com kuaiwenyun.com kuaixiazai.com kuaixue.com kuaiyan.com kuaiyankanshu.org kuaiyiad.com kuaiyilicai.com kuaiyingxiao88.com kuaiyingyong.vip kuaiyizu.net kuaiyong.com kuaiyoujia.com kuaiyouxi.com kuaiyuepu.com kuaiyugo.com kuaiyunds.com kuaizhan.com kuaizhang.com kuaizhaogong.com kuaizhe.com kuaizhihui.com kuaizhou123.com kuaizi.co kuaizip.com kuaizitech.com kuaizitech.net kuaizupu.com kuajing.com kuajing.hk kuajing84.com kuajingketang.cc kuajingmaihuo.com kuajingnet.com kuajingvs.com kuajingx.com kuajingyan.com kuajingyang.com kuajingzhushou.com kuajinzhifu.com kuakao.com kuakao.net kuake8.com kuaming.com kuandaige.com kuanfans.com kuanff.com kuanfutong.com kuang-chi.com kuang-chi.org kuangchan.biz kuangdacn.com kuangdi.com kuangjijia.com kuangjiwan.com kuangmaidz.com kuangming.com kuangshitech.com kuangshun.com kuangxiangit.com kuangyeyuan.com kuangyi.com kuangyuantrade.com kuanhuacheng.com kuanye.net kuark.com kuashou.com kuayuegroup.com kubercloud.com kubesre.xyz kubey.cc kubikeji.com kuboluo.com kuche.com kuchechina.com kuchuan.com kucoin-in.work kucunguanli.online kudapp.com kudianvip.com kudiaoyu.com kudingyu.com kudou.org kuems.com kufangwuyou.com kufaxian.com kufei.com kuge.cc kugoo.com kugou.com kugou.la kugou.net kugouaudio.com kugouipv6.com kugoukid.com kugouliveshow.com kugouringtone.com kugousenior.com kugoustore.com kugouvoice.com kugouyouth.com kuguanyi.com kugz.com kuhao360.com kuheju.com kuhii.com kuhimalayandp.com kuicc.com kuigkj.com kuihe.com kuihuakeji.com kuihuayaoye.com kuihuo.com kuike.ltd kuiniuca.com kuishiba.com kujiale.com kujiang.com kujiang.net kuk8.com kuka-xj.com kuka001.com kukagroup.com kukahome.com kukankeji.com kukasofa.com kuke.com kuke99.com kukecloud.com kukseo.com kukuda.net kukulv.com kukupig.com kukushouhou.com kukushow.com kukushu.com kukuspeak.com kukuw.com kukuxiu.com kuledushu.com kuleiman.com kulekeji.com kulemi.com kulengvps.com kuletco.com kuli.ren kuliwang.net kuman.com kumanju.com kumao.vip kumaoyun.com kumeiwp.com kumhosunny.com kumiao.com kumiao.vip kumifeng.com kun-pharm.com kun66.xyz kunchuang.com kunduo.com kungfucloud.com kungfuenglish.com kunguankeji.com kunguanyx.net kunjuke.com kunkkawu.com kunkundev.com kunkunyu.com kunlexf.com kunlunaq.com kunlunar.com kunlunca.com kunluncan.com kunlunce.com kunlundns.com kunlunea.com kunlungem.com kunlunger.com kunlungr.com kunlunhuf.com kunlunjk.com kunlunjue.com kunlunjyk.com kunlunle.com kunlunli.com kunlunno.com kunlunpi.com kunlunra.com kunlunsa.com kunlunsc.com kunlunsl.com kunlunso.com kunlunta.com kunlunvi.com kunlunwe.com kunlunxin.com kunlunyb.com kunmingbc.com kunmingguolv.net kunmingkanghui.com kunpengkg.com kunpengtn.com kunpo.cc kunruijs.com kunshandx.com kunst-x.com kuntaihotel.com kuntin.com kunyamedical.com kuo-yi.com kuobuy.com kuocaicdn.com kuocaidns.com kuocaiyun.com kuoo8.com kuosheng.com kuosheng.net kuotu.com kuozang.com kuozhan.net kupaisky.com kupan.cc kupao.com kuqi.com kuqin.com kuraboshanghai.com kureader.com kurobbs.com kurogame-service.com kurogame-service.xyz kurogame.com kurogame.net kurogame.xyz kurogames-ads.com kurogames-global.com kurogames.com kurokingdom.com kuroko.info kurtizanki-spb.com kurz-sh.com kusdk.com kusen888.com kushe.net kushou.com kushouwang.net kushuzw.com kusnc17.com kuso.xyz kusouji.com kut3974vc.com kutianxia.com kutianxia.net kutinai.com kutj.com kutongji.com kutuan.com kuuke.com kuvun.com kuwan8.com kuwanapp.com kuwanbang.com kuwanjitar.com kuwen.net kuwuu.com kuwwz.com kuxi100.com kuxiaoji.com kuxiaomiao.com kuxiaoshuo.com kuxiaozhu.com kuxiuktv.com kuxueedu.com kuy8.com kuyh.com kuyibu.com kuyin123.com kuyinxiu.com kuyinxiuxiu.com kuyinyun.com kuyiso.com kuyiyun.com kuyoo.com kuyouyun.com kuyumall.com kuyun.com kuzhange.com kuzhazha.com kuzhengame.com kuzu.com kv-kva.com kvenjoy.com kviso.com kvogues.com kvov.com kvps85.com kw007.com kwai-group.com kwai666.com kwaiadapp.com kwaiads.com kwaibusiness.com kwaicdn.com kwaicdnx.com kwaie65eu4gvs1943.com kwaigobuy.com kwaigroup.com kwailai.com kwailala.com kwailbs.com kwailine.com kwailocallife.com kwailocation.com kwaim.com kwairr9aw56vso581r.com kwairtc.com kwaiselfcdn.com kwaishop.com kwaishouapp.com kwaishouapp.net kwaitalk.com kwaitv.com kwaiww7t3qi8x217.com kwaixiaodian.com kwaiying.com kwaizt.com kwangfeng.com kwggroupholdings.com kwicdn.com kwimgs.com kwinbon.com kwise-log.com kwkf.com kwniu.com kwong-tech.com kws123.com kwt56.com kwtgs.com kwtzn.com kwudor.com kwwblcj.com kwx.gd kwxcj.com kwxjh.net kx-turbo.com kx001.com kx139.com kx1978.com kx1d.com kx778.com kx7p.com kxapps.com kxb100.com kxbox.com kxccjjt.com kxceping.com kxcq.com kxdaili.com kxdao.com kxdao.org kxdpm.com kxdw.com kxiaoshuo77.com kxinyk.com kxji.com kxjlzx.com kxjsys.com kxl100.com kxlc.com kxll.com kxload.com kxmas.com kxmrg.com kxoalq.com kxow.com kxparking.com kxphy.com kxq520.com kxqo2ev.com kxscience.com kxt.com kxtjt.com kxtoo.com kxtui.com kxtwz.com kxue.com kxwell.com kxx2.com kxxsc.com kxxxl.com kxyyf.com ky-express.com ky.cc ky.live ky393834.com ky595images.com ky5yx.com ky6yx.com ky7yx.com ky958.com kybapp.com kybapp.net kybcrm.com kybimg.com kyboye.com kybyun.com kych5.com kydbp.com kydev.net kydl308015.vip kydl308029.vip kydzfl.com kye-erp.com kye.vip kyec.cc kyedu.cc kyemall.com kyfey.com kygroup.ltd kygso.com kyhtech.com kyhyxy.com kyj168.com kyjlhz.com kyjxy.com kyk.cc kykjgroup.com kylc.com kyleduo.com kyligence.io kylin-os.com kylinlot.com kylinmobi.com kylinos.com kylinpet.com kylpharm.com kymjs.com kyo.hk kyoceraconnect.com kyppt.com kyrcw.com kysjhx.com kyslb.com kysnxt.com kysygs.com kytijian.com kyuedu.com kyv5.com kyvipw.org kyw4y0s.com kywiremesh.com kyxdloan.com kyxh.com kyxsw.org kyy6.com kyzhpt.com kyzs.com kyzyj.com kz.cc kz321.com kzcpm.com kzeaa.com kzgui.com kzk1.com kzmyhome.com kzo.moe kzrcw.com kzread.com kzrqicae.com kztsjj.com kzwr.com kzwx.net kzyzz.com l-zb.com l.biz l069.com l178.info l1yu.com l2cn.com l2h.site l2t7.cc l2z4l.net l3gt9.com l68.net l6qmpykq.work l799vk4qe2.com l7audiolab.com l85r.com l99.com la-bbs.net la-chinata.hk la-mo.com la-technology.com la31.com laawoo.com lab-bst.com lab-easttitan.com lab-rm.com lab-z.com labaoxian.com labbang.com labbase.net labbuy.net label-printing-factory.com labgogo.com labi.com labisart.com labixiao.xin labno3.com labuladong.online labview.help labxing.com labzj.com lacaoshi.com lacesar.com lackeeden.com lacngs.com lacocrea.com ladiyoga.com ladjzs.com lady177.com lady361.com lady75.com lady8844.com ladybirdedu.com ladydaily.com ladyhua.com ladymetro.com ladyol.com ladyw.com ladyw.net laecloud.com laey.net laf.run lafaso.com lafayettewines.com lafy.org lafybjy.com lagou.com lagouevents.com lagoujobs.com laguaba.com laguke.com lahuashanbx.com lahuolaozao.com lai-ai.com laianbbs.com laiba.shop laibafu.com laibeiparking.com laibokeji.com laibot.com laichon.com laichou.com laichuanfeng.com laidacai.com laidazi.com laidingba.com laidudu.com laifen.net laifeng.com laifeng.net laifenqi.com laifu.net laigame7.com laigame7.net laigaokao.com laigong.com laihua.com laijiawen.com laijishaofang.com laijuba.com laikan.com laikanxia.com laikanxing.com laikanxs.com laike.net laikeerp.com laiketui.com lailaieshop.com lailaihui.com lailibai.com lailin.xyz lailinzhihui.com lailook.net laima-tech.com laimaidi.com lainse.store lainzy.net laipei.net laiqi.net laiqm.com laiqukankan.com laiqy.com laird-tek.com laisai.com laishui.info laisizuji.com laisj.com laitelaide.com laituia.com laituijian.net laiwang.com laiwo.com laiwu.net laiwuyizhong.com laixi.com laixiangzuji.com laixindianzi.com laixiukeji.com laixs.com laixueedu.com laixuexi.cc laiyagushi.com laiye.com laiyifen.com laiyincat.com laiyouhui.net laiyouxi.com laiytech.com laiyu.com laizee.com laizhouba.com laizhouba.net laizhoujob.com laizi.net lajoson.com lakala.com lakecn.com lakeregionfitness.com lakwdian.com lalaba.com lalaedu.com lalavision.com lalawaimai.com lalkk.com lamahui.com lamaison-arting.com lamall.com lambda.hk lamborlogistics.com lameixs.com lamiu.com lamost.org lamoton.com lampbi.com lampouomo.com lamuba.com lamwatch.com lamyu.com lan-bridge.com lan-lin.com lan-ning.com lan1001.com lanall.com lanapartments.com lanbenjia.com lanbing510.info lanbinimall.com lanbts.com lanbula.com lancdn.com lancecity.net lancern.xyz lanchenglv.com lanchuanhuanbao.com lancn.net lancome-beauty.com lancong.net lanconvey.com lancunwater.com lancygroup.com land136.com landa-solenoid.com landai.com landaiwood.com landbond.com landbridge.com landchina.com landed.cc landhonor.com landi.com landian.vip landian.xyz landiannews.com landing-med.com landingbj.com landintheair.com landitrip.com landizs.com landjs.com landmedium.com landong.com landraco.com landray.com landroads.com landscape.vip landscapek.com landspace.com landtu.com landui.com landuicdn.com landuncn.com landunxiaofang.com landwind.com landzestate.com landzg.com landzy.com lanecn.com lanfanapp.com lanfc.com lanfcw.com lanfeicastle.com lanfeitech.com lanfeiwine.com lanfeng.net lanfucai.com lanfucaijing.com lanfw.com lang8.net langan-group.com langao.com langchao.com langchaosh.com langchi.com langduqi.com langemedtech.com langfang.com langfang12345.com langfangfc.com langfly.com langgine.com langhao-medical-platform.com langhuansoft.net langjian.work langkaiwenhua.com langkawipower.com langke.com langke.tv langkoo.com langkun.com langlangjiajiao.com langlangy.com langlib.com langlive.com langmanzg.com langqing.club langren001.com langren8.com langrencard.com langrenclub.com langrensha.net langruiyun.com langsajiasi.com langsong.site langtao.cc langtaojin.com langtongpos.com languageclass.cc languang.com languershiton.com langukeji.com langwei.net langxi.org langxi.xyz langxingys.com langxiyuyou.com langyintech.com langzezs.com lanh.love lanhanba.net lanhao.name lanhu.com lanhuajituan.com lanhuapp.com lanhuasoft.com lanhuhu.com lanhui.com lanin.tech lanindex.com lanjie100.com lanjie520.com lanjing.vip lanjingads.com lanjinger.com lanjingerp.com lanjingfm.com lanjingmembrane.com lanjings.com lanjingtmt.com lanjingzf.com lankecloud.com lankeji.com lanlanlife.com lanlanwork.com lanlinghospital.com lanlingtuliao.com lanlnk.com lanlv.com lanmaiedu.com lanmao.com lanmaokeji.com lanmaos.com lanmicloud.com lanmit.com lanmiyun.com lanniuh.com lanniuyun.com lanohotel.com lanosso.com lanou3g.com lanovamedicines.com lanpiankeji.com lanpuele.com lanpv.com lanpw.com lanpye.com lanqb.com lanqi.com lanqibing.com lanqingkeji.com lanqiudi.com lanrar.com lanree.com lanreelh.com lanrenbijia.com lanrenclub.com lanrenexcel.com lanrenmb.com lanrents.com lanrentuku.com lanrenzhaofang.com lanrenzhijia.com lanrenzhoumo.com lanruitech.com lansancn.com lanscn.com lansedir.com lansedongli.com lansha.tv lanshan.com lanshanae.com lanshanweb.com lanshauk.com lanshenniao.com lanshizi.com lanshou.net lansors.com lansscl.com lansun-pumps.com lansurcn.com lantiangufen.com lantianyu.net lantinglou.com lantumap.com lantushiji.com lanuss.com lanvote.com lanwa.net lanwei.org lanwoncloudfilm.com lanwuzhe.com lanxiangji.com lanxinbase.com lanxincn.com lanxincomputing.com lanxing123.com lanxiniu.com lanxiongsports.com lanxixiaowu.com lanxum.com lanyaa.com lanying.site lanyingwang.com lanyu.net lanyue.com lanyun.net lanyunbrand.com lanyunbusiness.com lanyuncloud.com lanyuncms.com lanyunone.com lanyusf.com lanzchina.com lanzhouvw.com lanzhuwh.com lanzn.com lanzog.com lanzong6.com lanzou.com lanzoub.com lanzouc.com lanzoue.com lanzouf.com lanzoug.com lanzouh.com lanzoui.com lanzouj.com lanzouk.com lanzoul.com lanzoum.com lanzouo.com lanzoup.com lanzouq.com lanzous.com lanzout.com lanzouu.com lanzouv.com lanzouw.com lanzoux.com lanzouy.com lanzov.com lanzun.net lao.si laobaicai.net laobaigan-hs.com laoban100.com laobandq.com laobanfa.com laobangban.com laobanmail.com laobi.icu laobinggun.com laobingmi.com laobuxie.com laocen.com laodao.cc laodaoyun.com laodong.me laodong66.com laodongfa.com laoduo.net laoduzhe.com laoevisa.gov.la laofengwei.com laofu.online laofuzhou.net laoge.xyz laogongshuo.com laogu.cc laogu.com laohaoren.com laohu.com laohu8.com laohuabao.com laohuangli.net laohucaijing.com laohuyun.com laojiuxitong.com laojuhui.com laoke.com laolai.com laolaishou.com laolaomiyou.com laoliang.net laoliboke.com laolieren.com laolieren.shop laoliuceping.com laoma.cc laomaoniu.com laomaotao.com laomaotao.net laomaotao.org laomaotaopan.com laomatou.com laomo.me laomoe.com laomu.net laonanren.cc laonian100.com laoniushuju.com laopao.org laoqiange.club laoqianzhuang.com laoren.com laosiji.com laosunit.com laotiaomao.com laowalens.com laowuxx.com laoxiangji.com laoxianhui.com laoxiezi.com laoxuean.com laoxuehost.com laoxuehost.net laoxuezhuji.com laoy.net laoyancheng.com laoyaoba.com laoyi0773.com laoyoujiaju.com laoyouyun.com laoyouzhibo.com laoyuanji.com laoyuegou.com laoyuge.com laozhaopian5.com laozicloud.com laozu.com laozuo.org lapc.cc lapin365.com laplace-semi.com lapostea.cfd lapulace.com laravel-admin.org laravelacademy.org larenla.com large.net lark-passport-qa-sg.net larkapp.com larkcloud.com larkcloud.net larkfn.com larkoffice.com larkofficeapp-boe.com larkofficeapp-pre.com larkofficeapp.com larkofficeboe.com larkofficecdn.com larkofficeimg.com larkofficepkg.com larkofficepre.com larkroad.com larksuite.com larksuiteimg-boe.com larksuiteimg-pre.com larkworld.com larmace.com larryms.com larscheng.com larsonlimited.com laruence.com lasashengdi.com laschina.org lascn.net laserfair.com laserjg.com lashou.com lasji.net lasmasas.com last2win.com lastdream.net lastline.tech lategege.com latepost.com latexeasy.com latexlive.com latexstudio.net latin100.com latinhui.com latitudeda.com lattebank.com lattecake.com lattefinance.com lattice.vip laungee.com laurelfilms.com lauyoo.com lavago.com lavandehotels.com lavapm.com lavaradio.com lavdrzv.xyz law-lib.com law-star.com law-wei.com law01.net law6888.com lawasst.com lawaxi.net lawbang.com lawbridge.org lawbus.net lawen.org lawen2.org lawh.fun lawinfochina.com lawipcompass.com lawke.com lawlawing.com lawlh1688.com lawlingyun.com lawnewscn.com lawparks.com lawrencetsui.com lawsdata.com lawtimeimg.com lawugu.com lawxin.com lawxp.com lawyee.com lawyee.net lawyee.org lawyer186.com lawyerbridge.com lawyerchina.org lawyermr.com lawyerpass.com lawyershanghai.net lax-pro.com laxarq.com laxmok.com layaair.com layabox.com layinfo.com layleen.com laymauchina.com layoutad.com laysky.com layui.com layuicdn.com layz.net lazada.co.id lazada.co.th lazada.com lazada.com.my lazada.com.ph lazada.sg lazada.vn lazcdn.com laze.cc lazyaudio.com lazybios.com lazycat.cloud lazycatmicroserver.com lazycomposer.com lazydim.com lazyer.net lazymap.com lazyren.com lazystones.com lb-yz.com lb0398.com lb5.com lb54hon504ke.com lbbb.cc lbbee.com lbbniu.com lbctjt.com lbctrl.com lbd-group.com lbd99.com lbddd.com lbdj.com lbedu.com lbesec.com lbexps.com lbf123.com lbgold.com lbgoo.com lbgttc.com lbhdbl.com lbhgle.com lbinin.com lbjljc.com lbjn.cc lbjsfz.com lbjtjt.com lbkaiguan.com lbkrs.com lbmobi.com lbrencai.com lbsdermyy.com lbsdmy.com lbsrmyy.com lbswjt.com lbszx.com lbtek.com lbtp.com lbu.cc lbv1.com lbwbw.com lbx777.com lbx777.net lbxcn.com lbxcrmyy.com lbxdrugs.com lbxdyfgx.com lbxjkyf.com lbycwx.com lbyeyaji.com lbyq.com lbysgz.com lbzuo.com lc-cn-e1-shared.com lc-cn-n1-ayaqc.com lc-cn-n1-npxfk.com lc-cn-n1-shared.com lc-cn-n1-thovg.com lc-led.net lc-news.com lc-rc.com lc044.love lc1001.com lc123.net lc1618.com lc365.net lc442.com lc787.com lcang.com lcatgame.com lcayun.com lcbdf.net lcboai.com lcbtv.com lccareer.com lccdn.net lcchem.com lcchgg.com lccmw.com lccyy.com lccz.com lcddjm.com lcdhome.net lcdtz.com lcdushi.com lcdwiki.com lcdzsww.com lcenn.com lcfby.com lcfcw.com lcfgjs.com lcfile.com lcftech.com lcfw.co lcgdbzz.org lcgjcj.com lcgod.com lchdf.work lchfunv.xyz lchot.com lchzzs.com lcisb.com lciuyou.com lcjh.com lcjrfg.com lcjxj.com lcjyg.com lckeshun.com lckfb.com lckiss.com lcloudcdn.com lcmack.com lcmhbl.com lcmpn.com lcnichia.com lcofjp.com lcofo.com lcoss.com lcouncil.com lcpdu.com lcpumps.com lcqixing.com lcqjsjxxx.com lcqwdz.com lcrc.ltd lcrcbank.com lcsepu.com lcsgxjt.com lcsrmyy.com lcsrw.com lcsssg.com lcsyzp.com lctech-inc.com lctsggzz.com lcux.net lcwl.net lcxtgs.com lcxwfc.com lcxzyy.com lcycgg.com lcyff.com lcyhdl.com lcyidc.com lcyinsu.com lcykgg.com lcyp.net lcyrny.com lcysc.com lcywhx.com lcyyfj.com lcyzh.com lczbgc.com lczm.com lczq.com lczyjsxx.com lczyun.com lczyy.com ld-pd.com ld-powder.com ld0766.com ld12366.com ld173.com ld246.com ldaq2005.com ldb.cc ldbj.com ldbmcs.com ldd.me lddengine.com lddgo.net ldfdcw.com ldgjj.com ldgslb.com ldhrd.com ldhy.click ldj-edujy.com ldjt-china.com ldkftz.com ldkj-zs.com ldkqyy.com ldmap.net ldmnq.com ldngj.shop ldoooo.com ldplayer.net ldqxn.com ldrcw.com ldseals.com ldshijie.com ldshj.com ldsink.com ldstark.com ldtdn.com ldtec.com ldtech168.com ldteq.com ldwxiao.com ldxiang.com ldycdn.com ldydh.com ldygo.com ldyz365.com ldzcgs.com ldzxyy.com le-feng.com le-wan.com le.com le365.cc le4.com le4ker.me le4le.com le5le.com le8.com le855.com le890.com leacol.com leadada.com leadal.com leadal.net leadamc.com leadclimb.org leadcoretech.com leadding.com leaddo.com leader-e.com leader609.com leader755.com leaderhero.com leaderlawyer.com leadernano.com leaderobot.com leadervc.com leadge.com leading-chem.com leadingpharm.com leadintelligent.com leadlan.com leadleo.com leadmanbio.com leadmap.net leadmedpharm.com leadmicro.com leadmoad.com leado-pharma.com leadong.com leadrd.com leadrive.com leadshiptech.com leadstong.com leadvc.com leadvsion.com leadway-china.com leadwaytk.com leadyo.com leadzees.com leaferjs.com leaforbook.com leaftools.net leafword.com leagcard.com leagpoint.com leagsoft.com leaguesun.com leakeyun.com lean.ren leangoo.com leanote.com leansoftx.com leanwind.com leanyon.com leap-pc.com leapahead.vip leapfive.com leaping.games leapmie.com leapmmw.com leapmotor.com learn-quantum.com learndiary.com learnfuture.com learningsj.com learnku.com learsun.com leatherhr.com leautolink.com leavescn.com leawin.com leayin.com leb-china.com lebanban.com lebang.com lebang.net lebi2.com lebilp.com lebinwl.com lebocode.com lebome.com lebopark.com lebosky.com leboweb.com lecai.com lecai08.com lecake.com lechain.com lechange.com lechangxia.cc leche.com lechebang.com lecheng18.com lechengdz.com lechengyunfu.com lechinepay.com lechuangzhe.com lecloud.com lecloudapi.com lecloudapis.com lecoinfrancais.org lecomposites.com lecong56.com leconiot.com lecoo.com lecreperoyaloak.com lecu8.com lecuiwangluo.com lecuntao.com led-zulin.com led661.com ledanji.com ledcax.com ledchina-sh.com ledctl.com lede.com ledger-phrase.com ledguhon.com ledhyzm.com ledianyun.com lediaocha.com ledmary.com ledo.com ledouwan.com ledouya.com ledsdk.com ledth.com ledtoplight.net ledu.com ledu365.com leduimg.com lee-tieguo.com leeaon.com leeco.com leefanmr.com leehon.com leelen.com leeleo.vip leenzee.com leenzhu.com leeon.me leesdog.space leeshen.net leesoar.com leesou.com leetcode-cn.com leetcodechina.com leetro.com leeuu.com leevol.com leevy.net leewiart.com lefang365.com lefanglj.com lefeng.com leffercode.com leftfm.com leftlady.com leftshadow.com leftso.com lefu8.com lefuzuwu.com legalsiri.com legend-si.com legendsec.com legendsemi.com legion.com.hk legou456.com legowechat.com legu.cc legu168.com leguyu.com leha.com lehaitv.com lehe.com lehecai.com lehibay.com lehihi.com leho.com lehuadisplay.com lehuipay.com lehuiso.com lei001.com leiaomold.com leibei.cc leiboyiqi.com leidacj.com leidianip.com leigod.com leigodjsq.com leihetg.com leihuo.net leijue.net leijun.com leike.cc leikeji.com leilei3dprinter.com leileiluoluo.com leilong158.com leimengjixie.com leimi.com leimingtech.com leimingtelab.com leimudata.com leiniao.com leiniao365.com leining-shield.com leiouxiong.com leiphone.com leishen-lidar.com leishencloud.com leishenhuyu.com leishenlaser.com leishouwin.cc leisoon.com leisu-ty.net leisu.com leisu123.com leisuapi.com leisureer.com leisurelypanda.com leitaibio.com leitaigongsi.com leiting.com leitingcn.com leitingjunshi.com leitool.com leiue.com leixiaofeng.net leixinbuild.com leixue.com leiyediaoche.com leiyunge.com leiyunge.net leji.com lejiachao.com lejian.com lejiao.tv lejiaolexue.com lejiaotech.com lejiashu.com lejj.com leju.com lejucaijing.com lejuliang.com lejunwl.com lekan.com lekannews.com lekazc.com lekevr.com lekoukou.com lektec.com lekuya.com lelaer.com lelai.com lele-lezhong.com lelecdn.com leleda.com leledp.com lelehuyu.com leleju.com leleketang.com lelelala.net lelepyq.com leletv.com leletv.net lelinly.com lelongpp.com lemai.com lemaker.com lemall.com lemedu.com lemeitu.com lemeng.center lemengcloud.com lemengfun.com lemiwan.com lemiyigou.com lemo360.com lemobar.com lemoes.com lemon4.club lemonban.com lemonnovel.com lemonpiggy.com lemonplus.asia lemonsay.com lemonttt.com lemonvp.com lemonyd.com lemote.com lempstack.com lemurbrowser.com len.ink lenauth.com lenbenelectric.com lenciel.com lendy520.com lenfocus.com lengcat.com lengdou.net lenget.com lenglengyu.com lengliwh.com lenglv.com lengshuiji.org lengxiaohua.com lengxiaohua.net lengyankj.com lengzzz.com leniugame.com leniy.org lenmy.com lenogo.com lenosoft.com lenosoft.net lenovator.com lenovo.com lenovo.com.cdn.cloudflare.net lenovo.net lenovocloudos.com lenovoconnect.com lenovoeservice.com lenovofile.com lenovogame.com lenovohci.com lenovohuishang.com lenovoimage.com lenovomm.com lenovomobile.com lenovonetapp.com lenovonowgo.com lenovopoc.com lenovoprinter.com lenovoprinter.net lenovots.com lenovouat.com lenovows.com lenovozdl.com lenschine.com lenslifephoto.com lensuo.com lenwoo.com lenzhao.com leoao-inc.com leoao.com leocode.net leogd.com leolin86.com leonblog.net leoogo.com leopardtale.com leopump.com leozwang.com lepaicm.com lepiaoyun.com lepidard.com leptv.com lepumedical.com leqi.us leqian.com leqiaobh.com leqiaobhyy.com leqiku.com leqiuba.com leqiuzbc.org lequ.com lequanip.com lequgo.com lequji.com lequz.com lequzh.com lercar.com lergao.com lergle.com lerist.dev lers168.com lers168.net lersang.com lertao.com lerye.com lesejie.com leshangzs.com leshangzx.com leshanvc.com leshare.work leshi123.com leshiguang.com leshow.com leshu.com leshuatech.com leshuazf.com leshuwu.com lesimao.net lesjob.com lesjulo.com leslie-cheung.com lesofn.com lesonccl.com lesoon.com lesou.net lespark.us lesports.com less-bug.com less-more.net lesscode.work lesso.com lestcg.com letabc.com letang666.com letao.com letaoedu.com letaoren.com letbonchina.com leter.io letianbiji.com letianshanec.com letim-auto.com letinet.com leting.io letoour.com letotur.com letou8.com letoursport.com letright.com letrychina.com lets-study.com letschuhai.com letsebuy.com letsfilm.org letsgaga.com letsinno.com letssepub.com letsvisa.com lettercloud.net letuinet.com letuixiaokefu.com leturich.org letushu.com letv.com letvapp.net letvcdn.com letvcloud.com letvimg.com letvlb.com letvstore.com letwind.com letwx.com letyo.com leuok.com levcauto.com levect.com level8cases.com levelinfinite.com levenx.com lewaimai.com lewang.ltd lewangame.net lewawa.com lewbin.com lewen.la lewenba.cc lewenlou.la lewenn.com lewenqu.com lewenss.com lewenxsw.com lewifi.com lex.download.prss.microsoft.com lexar.com lexed.org lexiaigame.com lexiang-app.com lexiang-asset.com lexiang-asset.net lexiang-ops.com lexiangla.com lexiangla.net lexiangzuji.com lexin.com lexin001.com lexinchina.com lexoncloud.net lexuat.download.prss.microsoft.com lexue-cloud.com lexue.com lexueying.com lexun.com lexun.net lexuncaishui.com lexuntimes.com leya920.com leyaep.com leyan.com leyantech.com leyaoyao.com leyaoyao.org leyard.com leybc.com leyi007.com leyifan.com leying.com leying365.com leyingtt.com leyishandong.com leyixue.com leyonb.com leyoo.com leyoujia.com leyu.com leyuanhr.com leyue100.com leyuglobal.com leyun365.com leyuncn.com leyungame.com leyunge.com leyuxyz.com leyuz.com lezai.com lezai.org lezhao.com lezhi.com lezhi99.com lezhibo.com lezhiot.com lezhiyun.com lezhuan168.com lezhuan365.com lezhuanwang.net lezhudai.com lezhufenqi.com lezhun.com lezi.com lezuan.net lezuan11.com lezuan9.com lezuocai.com lf126.net lf127.net lfan.net lfang.com lfbxw.com lfcharge.com lfcmw.com lfdjex.com lfekaj.help lfex.com lffloor.com lfggzz.com lfhacks.com lfhospital.net lfhygl.com lficanton.com lfjsly.com lfjx88.com lfkjgh.com lfksqzj.com lfmxc.com lfppt.com lfqysm.com lfrczp.com lfszk.com lftdzd.com lfungame.com lfwin.com lfx20.com lfxww.com lfywood.com lfyx.ink lfyzjck.com lfzhaopin.com lg-lg.com lg-pump.com lg1024.com lg198.com lg5.co lg5.com lgbzj.com lgcdz.com lgctshanghai.com lgcx.com lgdisplayproduct.com lgdxtech.com lgexam.com lgfdcw.com lgfzgroup.com lghd111.com lghlncl.com lgimg.com lgimic.com lglmf.com lglmf.net lgmi.com lgo100.com lgpic.com lgpj.net lgpm.com lgrcbank.com lgshouyou.com lgstatic.com lgtzkg.com lguohe.com lgvf.com lgwy.net lgxly.com lgyanglao.com lgyszl.com lgyudiao.com lgyzyy.com lgzowo.com lgzzu.com lh-ep.com lh-lx.com lh.link lh168.net lh17.net lh36524.com lh75.com lhasa.icu lhbbj.com lhbgchina.com lhconst.com lhcreditevaluation.com lhcy168.com lhdbgs.com lhdeer.com lhdown.com lhdxz.com lhenet.net lhey.com lhgcxx.com lhguomy.xyz lhgz.net lhh.la lhhy.net lhihg.com lhjdfs.com lhjol.com lhjws.com lhjy.net lhjyw.vip lhjzlw.com lhkaye.com lhkgs.com lhl.zone lhl7.com lhmj.com lhmp.cc lhovoxcx.work lhp-cdn-game.online lhp-cdn-update.online lhpharma.com lhratings.com lhrbszb.com lhs-arts.org lhs11.com lhs99.com lhsdjxy.com lhsoso.com lhszyxx.com lhulan.com lhvlkgbkjmrnc.com lhwill.com lhwytj.com lhxhwl.com lhyc3888.com lhyiliao.com lhytgroup.com lhzq.com li-ca.com li-ning.com li-on.com li-world.com li-yuan.com li.auto li63.com li91.com liageren.com lian-ou.com lianaibiji.com lianaixingwei.com lianaiyx.com lianbei66.com lianchuang.com lianchuanghj.com liancsoft.com lianda.fun liandaomobi.com liandaquan.com liande.cc lianfawy.com lianfengqy.com lianfengwh.com liang520.com liangc.com liangchan.net liangchanba.com liangduapp.com liangduiban.com lianggao.com lianghuadashi.com liangjan.com liangjiangbashu.com liangjianghu.com liangjiangroup.com liangjiangwuye.com liangjihui.com liangjiu.shop liangka.vip liangkun.net liangle.com lianglimi.com lianglunshijie.com liangnuo.com liangpinbiji.com liangqikeji.com liangrisheng.com liangrunbio.com liangshunet.com liangtian-tech.com lianguowang.com liangwanjianshe.com liangwei.cc liangxinyao.com liangyi.com liangyi360.com liangyiyy.com liangyuan.com liangzhishu.com liangziheikeji.com lianhaikeji.com lianhanghao.com lianhaokeji.com lianhejiaju.com lianhengkj.com lianhengtec.com lianhepaimai.com lianhuangroup.com lianjia.com lianjianode.xyz lianjianxsw.com lianjiasm.com lianjie.in lianjiezhe.com lianjingdq.com lianjixia.com liankaa.com liankebio.com liankenet.com lianku.xin liankuaiche.com lianle.com lianli168.com lianlian.com lianlianlvyou.com lianlianpay-inc.com lianlianpay.com lianliantao.net lianliantaoshop.com lianlianz.com lianlife.com lianliwork.com lianluo.com lianmeng.la lianmeng.link lianmeng.work lianmenhu.com lianmishu.com lianni.com lianok.com lianouyiyuan.com lianpingroup.com lianpunet.com lianqi.net lianqigong.com liansaipiao.com lianshang.com lianshijie.com lianshun.cc liansn.com liansuo.com liantianhong.com liantongcar.com liantu.com liantuobank.com liantuofu.com lianty.com lianwangtech.com lianwen.com lianwifi.com lianwo8.com lianwwl.com lianxianjia.com lianxinapp.com lianxinkj.com lianyi.com lianyins.com lianyiwater.com lianyuannongye.com lianyungangforum.org lianzhixiu.com lianzhong.com lianzhongyun.com lianzhoupc.com lianzhuli.com lianzifang.com liao1.com liao98.com liaobagua.com liaocheng.cc liaochuo.com liaode.com.tw liaogu.com liaogx.com liaoing.com liaoji.com liaojiu.net liaokong.com liaoliao.com liaoningmoduo.com liaoningpharm.com liaosam.com liaotiantu.com liaoworking.com liaoxiwenhua.com liaoxuefeng.com liaoyuanchats.com liaoyuanedu.org liaozhai.tv liauto.com lib520.com liba.com liba88.com libaclub.com libai.com libaidns.com libaishuo.com libao007.com libaopay.com libawall.com liberlive-music.com libertynlp.com libforest.com libinx.com libiotech.com libisky.com liblib.art liblib.cloud liblib.tv libmk.com libomarathon.com libreofficechina.org libsou.com libssh.com libsys.net libtop.com libvideo.com lic-bcbc.com lic-slf-dom.com lic-slf-dom.net licai.com licai18.com licaie.com licaigc.com licaike.com licaiker.com licaimofang.com licaishouyi.com licaixu.com licaiyaoye.com licancan.com licaoz.com licat.com licc.tech lichangtai.com lichangtao.com lichangwen.net lichee.pro lichenglove.com lichengwu.net lichenjy.com lichimedicine.com lichiwei.com lichong.work lichuang.ren licic.net lickeji.com lickscreen.com licomsh.com licqi.com lida100.com lidakang.com lidamicron.com lidar360.com lideapower.com lidebiotech.com lidebo.com lidecheng.com lidepower.com lidg-fueltank.com lidianchizu.com lidianren.com lidihuo.com liding.me lidlsalevipeu.shop lidodo.com lidu6.com lidw.com lie.icu liebao.live liebaoh5.com liebaoidc.com liebaopay.com liebaovip.com liebiao.com liebigwatch.com liebo.com liechan.com liedaoshou.com lieguo.com lieguozhi.com liehunwang.com liehuo.net liehuosoft.com liejin99.com lieju.com lieketao.com lielema.com liemingwang.com lienew.com liepin.com liepin8.com liepincc.com lierda.com lierdapark.com lierfang.com liermusic.com liesauer.net lieshi.net lieshuku.com lietou-edm.com lietou-static.com lietou.com lietou007.com lietuwang.com liewen.cc liewen.la liexing-ai.com liexing.com lieyingjt.com lieyou.com lieyouqi.com lieyuncapital.com lieyunpro.com lieyunwang.com liezhe.com liezhun.com lif8.com lifan.com life-2028sport.com lifebook.red lifediary.shop lifeeu.com lifefunkingdom.org lifegc.com lifegreenmedical.com lifeng.in lifengshoe.com lifeofguangzhou.com lifesense.com lifetimecables.com lifetm.com lifetmt.com lifetmt.net lifetmt.org lifeup.vip lifevc.com lifevccdn.com lifeweeker.com lifeyk.com lifeyn.net lifezb.com lifo-fj.com lifotronic.com lifox.net lifrog.com lifushop.com lifves.com lify.vip ligendpower.com ligetz.com lighos.com light-cos.com light-player.com light3moon.com lightalk.com lightalk.me lightblue.net lightbox.games lighte-tech.com lightgx.com lighthg.com lighting-china.net lightingchina.com lightinit.com lightky.com lightlygame.com lightmake.site lightonus.com lightpassport.com lightsaber.com lightspeed-dc.com lightspeed-lic.com lightspeed-og.com lightstrade.com lightxi.com lightyy.com ligonggong.com liguanchina.com liguangtaogroup.com liguosong.com lih-invest.com lihang-expo.com lihaoshuyuan.com liheiat.xyz liheng1688.com lihengjh.com lihetong.com lihong.net lihongcctv.com lihtao.com lihua.com lihuadonghua.com lihuamuye.com lihuashouji.com lihuasoft.net lihui.net lihuia.com lihun66.com liigou.com lijiabaijc.com lijiabrasstube.com lijiajia.com lijiajia.net lijiangbooks.com lijiangcun.com lijiangriver.com lijiankai.com lijiejiaju.com lijigang.com lijinghua.club lijingquan.net lijinxincai.com lijinzhang.com lijishi.com lijizhong.com lijjj.com likamao.com likangwei.com like.video like996.icu likeaboat2023.com likeacg.com likebuy.com likecha.com likechuxing.com likecs.com likee.video likeface.com likefar.com likefont.com likeji.net likejianzhan.com likelic.com likepoems.com likeshare-tech.com likeshuo.com liketm.com liketry.com liking.site likingfit.com likuli.com likuso.com lilacbbs.com lilaigroup.com lilanz.com lili.cc liliangji.com lilinwei.com lilishare.com lilisi.com lilith.com lilithgame.com lilithgames.com lilvb.com lilygo.cc lilysamericandiner.com limabaoxian.com limaoqiu.com limebenifit.com limei.com limei.org limeiltd.com limian.com liminglight.com limingtech.com liminjie714.com liminwang.com limit-animation.com limless.com limobai.com lin-jiang.com linakesi.com linancity.com linaoyiqi.com linban.com linchangyu.com linchuangsy.com lincoc.com lindapatent.com linde-china.com lindmik.com lindybag.com line-gate.com linearbuyic.com linearmotor.net lineartracklight.com linecg.com lineget.site linekong.com linelayout.com linestartech.com linewell.com linewow.com linezing.com linfan.com linfeicloud.com linfen365.com linfeng.tech linfenwater.net ling-shi.com lingangholding.com lingangic.com lingaoren.com lingbao-e.com lingboxauto.com lingceu.com lingd.com lingdi.net lingdianksw.com lingdong.net lingdongweilai.com lingdongwuliu.com lingdu.love lingduan-sh.com lingduohome.com lingdz.com lingfengyun.com lingganjia.com linggao.vip linggu.com linghanggroup.com linghit.com linghitai.com linghonggroup.com linghua-logistics.com linghuidzsw.com linghuoai.com lingji666.com lingjiaocheng.com lingjing.com lingjiptai.com lingjoin.com lingjuad.com lingjumobile.com lingkaba.com lingkebang.com lingkou.com lingkou.xyz lingkuyun.com lingla.com linglingkaimen.com linglingmo.site linglong.dev linglongart.com linglonglife.com linglongtech.com lingmao.tech lingmeijie.com lingmeng888.com lingmovie.com lingnanpass.com lingo-ace.com lingodeer.net lingosail.com lingostarcdn.com lingowhale.com lingphone.net lingquanb.com lingqumall.com lingrengame.com lingrn.com lingruipc.com lingruofeng.com lingshangkaihua.com lingshangmeien.com lingshenxing.com lingshenxl.com lingshi.com lingshimiyu.com lingshou.com lingshulian.com lingshunlab.com lingsiqiwu.com lingsky.com lingsoul.com lingti.com lingtiao.com lingtingmusic.com lingtings.com lingtong.info lingtool.com lingtu.com lingtuan.com lingumob.com linguoguang.com lingw.net lingwe.com lingwh.com lingwu66.com lingxi360.com lingxianfund.com lingxicloud.com lingxigames.com lingxing.com lingxingcai.com lingxingkj.com lingxiuwenlv.com lingxmall.com lingy.cc lingyanghuyu.com lingyi.org lingyihanhua.com lingyiitech.com lingyiliebian.com lingyinsi.com lingyinsi.org lingyiwanwu.com lingyuan.design lingyue-digital.com lingyuecloud.com lingyuedianzi.com lingyuint.com lingyun.com lingyun.net lingyun5.com lingyuncw.com lingyunip.com lingyunquan.com lingyuok.com lingzhanwenhua.com lingzhilab.com lingzhitech.com lingzhtech.com linhaigroup.com linhaiwangdai.com linhao.net linhuatz.com linhuiba.com lining.com lining0806.com linjia.me linjieapp.com linjin.net linjunlong.com link-ai.tech link-nemo.com link-trans.com link27.com link2lib.com link2shops.com link3.cc linkadsapi.com linkbook.tech linkbroad.com linkbux.com linkchant.com linkchina.hk linkcubecloud.net linkdesign.tech linkdialy.com linkeabc.com linkease.com linked-f.com linked-reality.com linkedbyx.com linkedhope.com linkedin-event.com linkedkeeper.com linkedme.cc linkedsee.com linker.cc linkernetworks.com linkeye.net linkfinancier.com linkflowtech.com linkfruits.com linkfunny.com linkgou.com linkh5.com linkh5.xyz linkhaitao.com linkheer.com linkiebuy.com linkingcloud.com linkist.net linknewideas.com linkoing.com linkolder.com linkon.me linkontek.com linkpai.com linkpro.tech linkr.com linkrall-trk.com linkresearcher.com links-china.com linksdao.com linksfield.net linksgood.com linkshop.com linksoon.net linkstars.com linkstec.com linksunet.com linktech.hk linktom.com linktom.net linktree.vip linktt.com linkunbin.com linkunjc.com linkvans.com linkvfx.com linkwebll.com linli580.com linlikuaipao.com linliyz.com linlongnewmaterials.com linlongyun.com linlongyx.com linmi.cc linmujianghome.com linni.com linnsea.com linnxin.com linnyou.com linovel.net linovelib.com linoya.com linpx.com linqujob.com linqumarathon.com linruanwangluo.com lins-bros.com linshang.com linshaoqian.work linshi.cc linshigong.com linshimuye.com linshiyongling.com linsn.com linstitute.net lint2.com lintai.tech lintaicnc.com lintcode.com lintec-china.com lintey.com lintongrc.com lintonpharm.com lintui.com linuo-paradigma.com linuo.com linuopv.com linuoshi.com linuottc.com linux-code.com linux-ren.org linux.zone linux178.com linux265.com linux5.net linuxba.com linuxbaike.com linuxbaodian.com linuxboy.net linuxcool.com linuxde.net linuxdiyf.com linuxdot.net linuxea.com linuxeden.com linuxeye.com linuxgogo.com linuxidc.com linuxidc.net linuxjoy.com linuxmi.com linuxpanda.tech linuxpk.com linuxprobe.com linuxsir.com linuxso.com linuxtone.org linuxyunwei.com linuxyw.com linwushuang.fun linx-info.com linyafeng.com linyang.com linyekexue.net linyi.net linyibus.net linyiren.com linyizhizhiyuan.com linyouquan.net linyufan.com linzhou.store linzhuotech.com linzhuxin.com linzihy.com lion1ou.tech lionaka.com lionit.net lionkingsoft.com lionmac.com lionmobo.com lionmobo.net lionsgx.com lipian.com lipiji.com lipilianghang.com lipin.com lipin51.com lipind.com lipinduihuan.com lipro.com lipro.net lipu.net lipuhome.com lipush.com lipuxixi.com liqinet.com liqinyi.com liquan.com liqucn.com liquidnetwork.com liqun.org liqun.vip liquncommercialgroup.com liqungroup.com liqunshop.com liqwei.com lirenliye.com liriansu.com liriji.com lirui.name lis99.com lisdn.com lisenergy.com lisheng.gold lishengstone.com lishi-test.com lishi6.com lishi7.com lishibk.com lishibu.com lishichunqiu.com lishicloud.com lishiip.com lishiming.net lishimingren.com lishixiaozhi.com lishixinzhi.com lishizhishi.com lishuhang.me lishuhao.ltd lishui.com lishuichayuan.com lisigroup.com lisihouseware.com lisizhang.com lisp123.com lissgx.com listary.net listarypro.com listeneer.com listeningo.com listenpa.com listentide.com listentoworld.com listenvod.com listno1.com listong.com lisure.com lisz.me litangkj.com litaow.com litaparking.com litchiads.com litchon.com lite-miniprogram-1.com lite-miniprogram-5.com litecdncname.com litecoin.ink litecoin.ren litefeel.com litemob.net liteng-industry.com litessl.com lithomaterial.com lithub.cc litian268.com litianchina.com liticool.club litilala.site litilala.xyz lititop.group litiww.mobi litofu.com litongsupply.com litongtech.com litosim.com litree.com litten.me little-star.love little-sun.com littleboy.net littlegeek.work littlehero.xyz littleqiu.net littleroost.net littlesheep.com littlesix.mobi littlesproutsdk.com littleswan.com lituo666.com liu-he.com liu-kevin.com liu16.com liuar.xin liubaocha.com liucao.vip liuchengguanli.com liuchengming.com liuchengtu.com liuchengtu.net liuchenkeji.com liuchuo.net liudanking.com liudaoxiang.com liudatxt.com liudatxt.org liudayadan.com liudian6.com liudon.com liudon.org liudu.com liufanggroup.com liugejava.com liugezhou.online liugj.com liugm.com liugong.com liugongac.com liugongam.com liugonggroup.com liuguofeng.com liuhanyu.com liuhaolin.com liuhubang.com liujiagd.com liujiajia.me liujian666.com liujiangblog.com liujiaoyidai.com liujijun.com liujinkai.com liujto.com liujunworld.com liujy.com liukai.net liukebao.com liulan.net liulanqi.net liulantao.com liulian.com liulianga.com liuliangcanmou.com liuliangdada.com liulianggo.com liuliangguo.com liuliangka.pro liulianglf.com liuliangmima.club liuliangmima.vip liuliangzu.com liulianqi123.com liuliguo.com liulin.cc liulishuo.com liulishuo.work liulisyb.org liuliushe.net liulixuexiao.com liulj.com liulv.net liumapp.com liumeinet.com liuming.work liumuzulin.com liumx.com liunian.info liunianbanxia.com liunn.com liuqh.icu liurq.com liushen.fun liushidong.com liushuishiyin.com liusibo.com liusteel.com liusu-kyimm.com liusu.me liusuping.com liuts.com liuwamiaoji.com liuweihotel.com liuwo.com liuxianan.com liuxianjt.com liuxiaoer.com liuxiaofan.com liuxiaotong.com liuxing.com liuxingw.com liuxinli.com liuxuchao.com liuxue.com liuxue114.com liuxue360.com liuxue86.com liuxuegang.site liuxuehr.com liuxuekw.com liuxuesmd.com liuxuetown.com liuxuewind.com liuxueyun.com liuxx.com liuyang.com liuyangfcw.com liuyangjob.com liuyanzhao.com liuyifei.cc liuyiguo.com liuyimin4.com liuyixiang.com liuyua.xyz liuyunflow.com liuyunliumeng.com liuyuntian.com liuzaoqi.com liuzhihang.com liuzhixiang.com liuzhiyugzs.com liuzhosoft.com liuzhoufushan.com liuzhoukaichuang.com liuzhourm.com liuzhousteel.com liuzhuni.com liuziyoudu.com liuzongyang.com liuzy88.com livanauto.com live-flashscore.com live-helps.com live-qiudidai.com live-ssport.com live-voip.com live123.cc live800.com liveapp.ink livebong68.com livecdnstatic.com livechina.com livecourse.com livehwc4.com liveinau.com livejh.com liveme.com livemediav.com livemook.com livenmall.com liver-surgery.net livesone.net livesupport24x7.com liveuc.net liveupdate-cn.msi.com livevideostack.com living.ai livnj.com livotre.com liwai.com liwanggui.com liwanght.com liweiauto.com liweicar.com liweijia.com liweijituan.com liweiliang.com liwenzhou.com liwi.cc liwinon.com liwojx.com liwoxiao.com liwucheng.com liwumaoapp.com liwushuo.com liwuzhi.art lixcx.com lixfaf.com lixiaedu.com lixiang.com lixianghuanbao.com lixiangoa.com lixiangshu.net lixianhezi.com lixianhua.com lixiaocrm.com lixiaolu.org lixiaoskb.com lixiaoyun.com lixiaozhe.com lixinapp.com lixinger.com lixingyong.com lixinpharm.com lixuan360.com lixueba.com lixueduan.com lixuejiang.com liyan365.com liyang1.com liyangbit.com liyanggroup.com liyangic.com liyangrc.com liyangtuopan.com liyanmobi.com liyaochao.com liyegroup.com liyi99.com liyinewmaterial.com liyingfei.com liyinka.com liyu8.com liyuan1999.com liyuan99.com liyuan99.vip liyuanchun.net liyuanheng.com liyuanhospital.com liyuanresort.com liyuansz.com liyugang.com liyujn.com liyunde.com liyunkm.com liyunshuwu.com liyuplay.com liyx.fun liyx.net lizaberese.com lizaike.com lizhehaozhongyi.com lizhenauto.com lizhenglai.com lizhenwang.com lizhi.com lizhi.fm lizhi.io lizhi.shop lizhi110.com lizhifilm.com lizhifm.com lizhiinc.com lizhijitang.com lizhilive.com lizhiqi.com lizhiqiang.name lizhiqp.com lizhiweike.com lizhongyi.com lizhujue98.com lizi.com lizihang.com lizikeji.vip lizilaw.com liziqiche.com lizitongxue.com liziwu.net liziyuan.com lizq.host lj-audio.com lj-bank.com lj168.com ljbao.net ljbbj.com ljcdn.com ljclz.work ljflavor.com ljh.cool ljhjgc.com ljhjny.com ljia.com ljia.net ljjcyy.com ljjlb.net ljjq.com ljjyjt.com ljk.cc ljkangyang.com ljlcd.com ljlj.cc ljlmdns.com ljlqw.com ljmeng.site ljmyy120.com ljqhju.com ljqxjjhbc.com ljrbw.com ljs.fun ljsdk.com ljsy2017.com ljsz.xyz ljth.hk ljtx.com ljw113.com ljwebs.com ljwit.com ljwlz.com ljxqzy.com ljxww.com ljz-talentapt.com ljzfin.com lk-jd.com lk0355.com lk361.com lk366.com lkalpos.com lkcash.com lkcgyl.com lkchemical.com lkcoffee.com lkdt.work lke.hk lkfan.com lkg888.com lkgame.com lkgk.net lkgshq.com lkhaowu.com lki2.org lkjujm.com lkkbrand.com lkkcdn.com lkkdesign.com lkker.com lkkued.com lkme.cc lknvcti.com lkong.com lkong.net lkpc.com lkqihang.com lksmarttech.com lkssite.vip lkszj.info lktz.net lkuaiy.com lkxfeda.com lkyljt.com lkyou.com ll-hao123.com ll1024.com ll5856.com llang.net llaoyou.com llbzy.com llcat.tech lldlf.com llever.com llewan.com llgjx.com llgkm.com llguandongyan.com llguangli.com llguangli30.com llhlkftzjt.com llidc.com llinkslaw.com lljgame.com lljsq.net lljyx.com llku.com lllcn.com llllx7.com lllpv.com llmtrend.com llmworld.net llongwill.com llqsq.com llrj.net llrsz.com lls.moe lls11100ko.com llsapp.com llscdn.com llskjt.com llsops.com llsserver.com llssite.com llsttapp.com llsun.com lltoken.com lltskb.com llumar-cn.com llwx.net llx168.com llxj119.com llxx.cc llxzl.com llxzu.com llyj.net llyweb.com llyy.org llyyx.com llzg.com llzxedu.net lm263.com lm335.com lm9999.com lmacc.com lmanmo.com lmanucell.com lmbct.com lmbest.com lmdouble.com lmengcity.com lmjtgs.com lmjx.net lmjzd.com lmkggf.com lmkzx.com lmlc.com lmlq.com lmnano.com lmnsaas.com lmonkey.com lmparcel.com lmqt.com lms.pub lmschina.net lmscp.com lmtutou.com lmtw.com lmu5.com lmujp.work lmwlhh.com lmwljz.com lmwmm.com lmylgs.com lmzitie.com lmzt.com ln-map.com ln-rc.com ln525.com lnairport.com lnamphp.com lnast.net lnbaiyun.com lnbdsc.com lnbybc.com lnbyy.net lncbp.com lncct.com lncjxy.com lncldapi.com lncmcc.com lncmxy.com lncnw.com lnddhxq.com lndhdx.com lndnw.com lndwkj.com lndxpt3.com lndxptssl.com lneab.com lnemci.com lnenergy.net lnes.net lnest.com lnfdcxh.org lnfssy.com lnfzb.com lngche.com lngwy.org lnhddq.com lnhotels.com lnhygy.com lnicc-dl.com lnicp.com lninfo.com lnjfyc.com lnjmlnykjfzyxzrgs.com lnjpedu.com lnjzxy.com lnk0.com lnkdjt.com lnlawyers.net lnlc2.net lnldsw.com lnlib.net lnlon-zdh.com lnlotto.com lnme1q1qa.com lnmtc.com lnmu3h.com lnnoo.com lnok.net lnpatcm.com lnpenger.com lnphar.com lnpjw.com lnqwe.com lnrbxmt.com lnrcu.com lnrsks.com lnsenhai.com lnsent.com lnsgczb.com lnsqxj.xyz lnsrmyy.com lnsslhyxh.com lnsyzx.com lnszyjt.com lntenghui.com lntvu.com lntycp.com lnvipsoft.com lnwish.com lnwoo.com lnxmt.com lnxysf.com lnyahui.com lnydjt.com lnyxcj.com lnyyzyxy.com lnzcj.com lnzhongka.com lnzhqy.com lnzsks.com lnzy-edu.com lnzzpf.com lo97.com loac.cc loadingbay.com loansliml.com local-ip.online local.hk localxcafe.com locatran.com locez.com locimg.com lockchat.app lockfans.com lockin.com lockinchina.com locklauncher.com lockscreenimg.com locnavi.com locojoy.com locoy.com locoyposter.com locren.com loctek.com locvps.com locvps.net lodashjs.com loexu.com loftcn.com lofter.com loftshine.com lofu.net log-research.com log1992.com logacg.com logclub.com logdmentincomepay.sbs logi.im logi100.com logicdsp.com login.cdnetworks.com logiseasy.com logisteed-sc.com logistics-ea.com logisticstech.com logo-emblem.com logo123.net logo2008.net logo888.com logo9.net logoaa.com logobiaozhi.com logodao.com logodashi.com logohhh.com logoly.pro logoqq.com logory.com logoshe.com logosheji.com logoshejishi.com logosj.com logovps.com logowk.com logozhizuowang.com logwing.com logwirecloud.com lohaa.com lohalink.com lohand.com lohasor.com lohjs.com lohkahhotels.com loho88.com lohu.info loj.ac loji.com loke123.com lokenchem.com lokyi.name lol99.com lolaroseglobal.com lolbuku.com loldan.com loldk.com loli.by loli.cloud loli.ee loliapi.com lolicon.team loliloli.moe loliloli.net lolimoe.cc lolitawardrobe.com loljy.com lolkeng.com lollipopo.com lolmax.com lolmf.com lolmz.com lolopool.com lolphp.com loltmall.com lolxy.com lolyculture.net lomge.com lomoment.com lomon.com lomowo.com loncent.com loncin.com loncinindustries.com londerful.com londonermacaoresort.com lonelystar.org lonery.com lonfoor.com long-horn.com long-photo.com long-term.net long.ge long5.com long7.com longanlaw.com longau.com longbenren.com longbridgeapp.com longbridgehk.com longcai.com longcai027.com longchangjixiekeji.com longcheer.com longchunbajiao.com longclouds.com longcore.com longdameishi.com longdaoyun.com longde.com longdear.com longdear.net longdian.com longdiandianli.com longduwang.com longease.net longfanshipping.com longfengmarathon.com longfor.com longfu360.com longguanjia.so longhan.cc longhoo.net longhorn-auto.com longhu.net longhua.net longhuafilm.com longhufengyun.com longhuiren.com longhuquan.com longhuvip.com longi.com longigroup.com longjcun.com longjiazuo.com longjisteel.com longjisz.com longjitour.com longjoy.net longjunjiayuan.com longk.com longkui.site longkunjituan.com longkuntech.com longlijituan.com longlingas.com longliqicom.com longluo.me longlycn.com longmaosoft.com longmarchspace.com longmaywuliu.com longmeicn.com longmen-pharma.com longmen.net longmenedutech.com longmeng.com longmenshuju.com longming.com longmingdns.com longnanke.com longo.ltd longoo.com longood.com longpokeji.com longquan-baojian.com longquecdn.com longre.com longrich.com longsailing.net longsan.com longshanchemical.com longshangrc.com longsheng.com longsheng988.com longshine.com longsok.com longsto.com longstonechina.com longsunhd.com longsys.com longtaifoods.com longtec.com longtugame.com longtuojixie.com longu.com longwangshipin.com longwaycabinet.com longwenedu.com longwiki.org longwin.org longwintoys.com longwisedata.com longwisepr.com longwx.com longxi-tech.net longxia.com longxianwen.net longxinfa.com longxinglong.com longxinli.com longxintec.com longxuan.ren longyanbus.com longyar.com longygo.com longyi-uav.com longyin.net longyinok.com longyistudio.com longyiyy.com longyu.cc longyucq.com longyuedu.com longyuegs.com longyusheng.org longyutec.com longzhou.cc longzhu.com longzhu.tv longzhudagroup.com longzhulive.com lonhcloud.net lonleaf.com lonlife.org lonmedcn.com lonsoon.com lontengsteel.com lontiumsemi.com lontrue.com lonyon.com loocall.com loocode.com loodd.com looeen.com looeo.com looeoo.com loogoo.com loohuo.com looioo.com lookae.com lookao.com lookbaby.com lookbravo.com lookchem.com lookgame.com looking-car.com lookr.cc looktm.com looktmt.com lookvin.com loome.net loonapp.com loong3d.com loongdriving.com loongnix.com loongnix.org loongon.com loongshine.com loongsin.com loongson.org loongsonclub.com loongtravel.com loongxy.com loonlog.com looooker.com loooooong.com looquan.com loorin.com loovee.com looyu.com looyuoms.com looyush.com lopetech.net loping151.site lopmall.com lopss.com lopwon.com lordabbettchina.com lorefree.com lorhf.com loring.xyz lorzeal-zj.com losergogogo.com lossyou.com lostdeer.xyz lostphp.com lostsakura.com lot-ml.com lotevision.com lotianshangx.com lotlab.org lotour.com lotour.net lotpc.com lotpen.com lotsmv.com lottery-sports.com lotusair.net lotusdata.com lotuseed.com lotut.com loubobooo.com louding.com loudseas.com louge.ltd louislivi.com louisvuittonbags.club loukky.com loulanwang.com loupan.com louruo.com loushi.com lousj.com lousw.com louyue.com lovcuty.com love-freedom.com love-math-edu.com love.tv love21cn.com love3721.com love5201314.net love5209420.com love85g.com loveabc.net lovean.com loveapp.com lovebizhi.com lovedword.com loveforvenus.com lovefree.cc lovehaimi.com lovehhy.net lovehifi.com loveifgames.com loveinhere.com loveinhtw.com lovejavascript.com lovejia.win lovelacelee.com lovelian.com loveliao.com lovellacountry.com lovelyping.com lovelytooth.com lovemojito.com lovengame.com loveniwed.com loveota.com loveota.net lovepd.com loverdoor.com lovesec.com loveshang.com lovesoo.org lovestu.com lovetan.net loveteemo.com loveu.life loveuav.com lovev.com lovevibe1.com lovewith.me lovfp.com lovgiin.com lovingedmond.com lovol.com lovology.com loxpo.com loyalvalleycapital.com loyar.com loyi.net loyo.cc loystnetwork.com lp.fyi lp023.com lp025.com lp1901.com lp91.com lpaec.com lpcheng.com lpcues.com lpd8888.com lpetl.com lpfile.com lpgjkd.com lph119.com lpllol.com lpmas.com lpou.online lppz.com lppzimg.com lpq1688.com lprcx.com lprogram.site lpsckf.com lpsign88.com lpspt.com lpswz.com lpszstv.com lptiyu.com lpxinjuhui.com lpxinke.com lpxt.com lpxuqi2057.vip lpzine.com lq5u.com lqaafgq.com lqabr.com lqbby.com lqbj.com lqbj66.com lqfeather.com lqgy.com lqhualang.com lqjob88.com lqjt.com lqjyw.net lqlst.com lqpos.vip lqqm.com lqrcb.com lqsbcl.net lqschool.net lqsilicon.com lqtzjy.com lqwang.com lqxcl.com lqxshop.com lqxyljt.com lqyaopin.com lqyfsx.com lqyqjt.com lqzh.me lqzp.com lqzwdj.com lr-amm.com lr-link.com lr8888.com lrc99.com lrcb.net lrceu.com lrcku.com lrdcq.com lrhold.net lricn.com lrist.com lrkdzx.com lrkj.net lrlz.com lrmation.com lrnya.com lrs001.com lrscloud2.com lrscloud3.com lrswl.com lrt-tech.com lrts.me lrvin.com ls-doll.com ls-gb.com ls-hospital.com ls.link ls0358.com ls0513.com ls102.com ls1935.com ls520.net ls605.com ls666.com lsbankchina.com lsbchina.com lsbin.com lsbj365.com lsbtly.com lsccb.com lscstz.com lscsw168.com lsdfood.com lsdjwl.com lsdzk.com lserp.com lsfcj.com lsfwpt.com lsfyw.net lsgenius.com lsgqys.com lsgrandtheatre.com lsgw.com lsgwebmall.com lsgzn.com lsh-cat.com lshdw.cc lshfreda.com lshitv.com lshou.com lshzj.com lsij3km.com lsit.net lsjgcx.com lsjiancai.com lsjkj.com lsjlp8.com lsjnwxly.com lsjo.com lsjrcdn.com lsjtjs.com lsjxck.com lsjxww.com lskejisoft.com lskem.com lskj1993.com lskjkf.com lskong.com lsldjyw.com lslfs.com lslgzn.com lslihai.com lsmaps.com lsmtjy.com lsmzt.cc lsnm.com lsoos.com lspjy.com lsplayer.com lsqcjjt.com lsqedu.com lsqmx.com lsqpay.com lsqqy.com lsqv.com lsqx.com lsqy398.com lsrbs.net lsrfzy.com lsrmyy.com lssdexternal.com lssggzy.com lssjt.com lsswjt.com lsszgh.com lst1000.com lstazl.com lstest.com lstt-app.com lsttapp.com lsttappmoney.com lsttapppro.com lsttappspace.com lsttappweb.com lsttappworks.com lsttmoney.com lsttnews.com lsttonline.com lsttpro.com lsttrich.com lsttweb.com lsttworks.com lstx.vip lsun.net lsuoled.com lsup.net lswfw.com lswgy.com lswld.com lswqw.com lsxrmtzx.com lsxuantong.com lsxxkj.net lsyart.com lsyhh.com lsys2002.com lszi.net lszj.com lszjy.com lszjyj.com lsznk.com lsznkyy.com lszp.cc lszyy.net lszzg.com lt-edu.net lt-info.net lt-shanghai.com lt-tree.com lt-uv.com lt3c.com lt7293333.com ltaaa.com ltaaa.net ltao.com ltd.com ltdcdn.com ltdspot.com ltesting.net ltfwzs.com ltggc.com ltggzy.com ltgtm.com lth.xyz lthqdl.com ltidc.com ltie.org ltimg.net ltjczx.com ltjianhe.com ltkgjt.com ltkqjt.com ltl5210.com ltld.net ltly.so ltnic.com ltoit.com ltp-cloud.com ltp.ai ltplighting.com ltpower.net ltsbbs.com ltsc.vip ltsf.com ltsj2005.com ltski.com ltswxy.com lttconn.com lttmgc.com lttvip.com ltwkw.com ltwy.com ltxbbs.com ltxjob.com ltxsw.co ltxxgcxx.com ltxys.com lty.fun ltyears.com ltzsjt.com ltzxw.com ltzz666.com lu.com lu0.com lu17996.com lu35.com lua.ren lua99.com luan.ma luan163.com luaninfo.com luanren.com luanup.com luanwater.com luanxian114.com luanzhougucheng.com luastudio.net luatos.com luba360.com luban-furniture.com lubandata.com lubanjianye.com lubanlebiao.com lubanner.com lubanpm.com lubanshop.com lubanso.com lubansoft.com lubanu.com lubaocar.com lubeichem.com lubiao.com lubotv.com luboyun.com luchengas.com luchentech.com luchenwater.com luchuang.com luciaz.me lucifer.ren luck-number.com luck808.com luckao.com luckeeinc.com luckforcalendar.com luckincalendar.com luckincdn.com luckincoffee.co luckincoffee.com luckincoffeecdn.com lucklnk.com luckmail.net luckup.cc lucky.gd lucky286.com lucky8k.com luckyair.net luckychipsmaster.com luckycoffee.com luckyop.com luckysf.net luckyxp.net lucode.net luctonchongqing.com luctoncq.com luctonshanghai.com ludaocn.com ludaopei-bjyz.com ludashi.com ludashicdn.com ludashisafe.com ludayq.com ludedc.com ludengtyn.com ludeqi.com ludiban.com ludongyy.com ludosuperstar.com ludou.org ludown.com ludoworld.net ludu319.com lueasygi.com luebin.com luedian.com luenmei.com lueqiu.com luexpo.com lueyue.com luezhi.com lufahouse.com lufangjia.com lufax.com lufaxcdn.com lufengwuliu.net lufengzhe.com lufff.com luffy.cc luffycity.com lufunds.com lugangsoft.com lugick.com lugong.net lugouqiaojiu.com luguisc.com luhai.net luhaioil.com luhao198.com luhaoche.com luhe.net luhehospital.com luhu.co luhua.cc luhuadong.com luhuiwl.com lujiaming.com lujiandairy.com lujianxin.com lujiazuiforum.org lujingtao.com lujiya.com lujun9972.win lukachen.com lukafei.com lukechina.com lukiwod.org lukiya.com lukou.com lukuanart.com lul8.com lula.fun lulala.com lulaoshi.info lulinux.com lulisteel.com lulubei.com lulufind.com lulugda.icu luluhong.com luluju.com lum114.com lumai.net lumen-chip.com lumiai.com lumin.tech lumingtec.com lumiunited.com lumosfun.com lunalotus.online lunannews.com lunar2013.com lunatdteteask.cfd lundao.pub luneng.com lungai.com lunkuokeji.com lunlunapp.com lunwengo.net lunwenlib.com lunwenstudy.com lunwentong.com lunwenxiazai.com lunzima.net luobo020.com luobo360.com luobotou.org luobowin8.com luoboxia.com luochen.com luochenyl.com luochenzhimu.com luodian.com luodw.cc luoergai.com luofk.xyz luoganpump.com luogu.org luohanacademy.com luohanyu.cc luohuedu.net luojiaci.net luojiadeyi.com luojiji.com luojilab.com luojiweiye.com luokuang.com luolai.com luolai.tech luolaoguai.com luolatu.com luoli.net luolikong.net luoluoluoluo.xyz luomanxincai.com luomanyueqi.com luomapan.com luomi.com luomor.com luoniushan.com luoo.net luoohu.com luooqi.com luopan.com luoqiu.us luoqiuzw.com luori.net luoshendao.com luoshu.com luoshuanchangjia.com luosi.com luosifen888.com luosika.com luosimao.com luosoft.com luotiannews.com luotianyi.vc luotuo101.com luotuobang.net luotuoshop.net luowandianzi.com luowave.com luoxiang.com luoxiangcheliang.com luoxiaozi.com luoxinyaoye.com luoxudong.com luoxue.com luoyangdx.com luoyangkeji.com luoyangmalasong.com luoyechenfei.com luoying66.com luoyingsh.com luoyuanhang.com luozhiyun.com luozhongxu.com luozongle.com lup2p.com lupaworld.com luping.com luqidong.com lure123.com lurefans.com lurelogs.com lurenshuwx.com luruba.com lurun68.com lusen.com luseng.cc lush-mount.com lushangroups.com lushaojun.com lushifu.net lushu.com lusongsong.com luspet.com lussac.net luster3ds.com lustervision.com lustre-pharma.com lusun.com lusure-pharma.com luszy.com lutao.com luteng888.com lutongda.com lutonggroup.com lutongnet.com luv66.com luvoras.store luwei.me luweiwater.com luxads.net luxe.co luxemon.com luxiangba.com luxiangdong.com luxiangwu.net luxiaoche.com luxichemical.com luxiwang.com luxshare-ict.com luxtarget.com luxuanart.com luxuqing.com luxury-ceramics.com luxury2008.com luxurybrandmall.com luxurychina.org luxurymany.com luxuryshopwatch.com luxvisions-inno.com luyanghui.com luyanhui.com luyaodz.com luye-pharm.com luye.com luyecanyin.com luyijiaoyu.com luyinla.com luyinzhushou.com luyitong.com luyor.net luyouqi.com luyouqi.net luyouwang.com luyouwang.net luyouxia.com luyouxia.net luyusheji.com luyusoft.com luzewangluo.com luzexi.com luzhonggonglu.com luzhou.net luzhoubs.com luzhoufood.com luzhouok.com lv74.com lv96.com lvanol.com lvbad.com lvban365.com lvbang.tech lvbeijingtour.com lvbenma.com lvbitte.com lvbogas.com lvcai.biz lvcampaign.com lvcchong.com lvchanghuanbao.com lvchayun.com lvchehui.com lvcheng.com lvchengba.com lvchicar.com lvd.cc lvdawei.com lvdhb.com lvdingjia.com lvdishandong.com lvdongip.com lvdxs.com lve-china.com lvfang.cc lvfapiao.com lvgangss.com lvgou.com lvgset.com lvguo.net lvhuawei.work lvirahoe.com lvjhx.com lvjiaoya121.com lvjieplus.com lvjinsuo.com lvjiwang.com lvjuelaw.com lvjuf.com lvjunzx.com lvkcn.com lvke.wiki lvkhouse.com lvkun.site lvlian5.com lvluowang.com lvlvlvyou.com lvmae.com lvmall.com.tw lvmama.com lvmenglvye.com lvmifo.com lvmushan.com lvneng.com lvnengliang.com lvpai114.com lvpin100.com lvpu-chem.com lvqingqichangjia.com lvrdn.com lvren.com lvruanhome.com lvsan.com lvsanxia.com lvse.com lvsenbao.com lvsetxt.com lvsexitong.com lvshidaxia.com lvshiguan.com lvshiminglu.com lvshou.com lvshou.net lvshunmuseum.org lvsiport.com lvsongguo.com lvtds.com lvtingzs.com lvtu100.com lvtudiandian.com lvtuwa.com lvwan.com lvwang.com lvwenhan.com lvwmb.com lvxiaoer.net lvxing.net lvxunlaw.com lvyahoo.com.tw lvye.com lvye.org lvyestudy.com lvyetong.com lvyidoor.com lvyinba.com lvyinbar.com lvyou168.net lvyou521.com lvyoubei.com lvyouf.com lvyoukan.com lvyounong.com lvyouw.net lvysz.com lvyuanjj.com lvyuanpam.com lvyuetravel.com lvzeep.com lvzheng.com lw0591.com lw0634.net lw5188.com lw54.com lwalb.online lwccc.net lwcj.com lwd3699.com lwdjc.com lwebapp.com lwfengji.net lwfmzh.com lwgsw.com lwguitar.com lwhouse.com lwinst.com lwjl.com lwjt.net lwjy.net lwlm.com lwlocks.com lwlt.net lwlzy.com lwnews.net lwons.com lwork.com lwrcb.com lwshanghai.org lwshuku.info lwsy.org lwtylqx.com lwwandong.com lwxgds.com lwxs.com lwxs11.com lwxstxt.com lwzls.com lx.cok.elexapp.com lx.pub lx.run lx138.com lx167.com lx2.cok.elex.com lx2.cok.elexapp.com lx3.cok.elexapp.com lx598.com lx688.com lxapk.com lxbio.net lxblog.com lxbtrip.com lxccl.com lxcdns.com lxcvc.com lxdfs.com lxdms.com lxdns.com lxdns.info lxdns.net lxdns.org lxdp.net lxdus.com lxdvs.com lxdvs.info lxdvs.org lxdvsss.com lxf.me lxg2016.com lxgcf.com lxhg.com lxhkair.com lxhro.com lxhuwai.com lxhuwai.net lxhz-avionics.com lxi.me lxjapp.com lxjcjg.com lxjiasu.com lxkj.site lxlinux.net lxns.net lxny.vip lxq7t234u.shop lxrcsc.com lxsales.com lxsec.com lxsk.com lxt55094.com lxtianhu.com lxting.com lxtuig77.com lxtuyoo.com lxtuyoogame.com lxtuyou.com lxway.com lxway.net lxwlcn.com lxxarq.com lxxdyzx.com lxxm.com lxyai.com lxybaike.com lxydoor.com lxyedu.com lxyes.com lxyjxsb.com lxykjsz.com lxyl020.com lxyl028.com lxyl053.com lxyl070.com lxyl071.com lxyl219.com lxyl247.com lxyl328.com lxyl335.com lxyl353.com lxyl355.com lxyl375.com lxyl539.com lxyl803.com lxyl954.com lxyl980.com lxyllawfirm.com lxyswl.com lxzjjt.com lxzrmyy.com lxzwedu.com ly-eps.com ly-jz.com ly-qiche.com ly-sky.com ly.com ly1by1.com ly200-cdn.com ly200.com ly2y.com ly321.com ly333.com ly39zx.com ly522.com ly6s.com ly93.cc lyagyd.com lyangchuanbo.com lyauto.com lybdfqh.com lybol.com lybtmy.com lybus.com lybybz.com lycheer.net lyckw.com lycs-arc.com lyd-china.com lyd6688.com lydaas.com lydezx.net lydfyy.com lydhb888.com lydownload.net lydpjx.com lydsy.com lyduanzao.com lydyyy.com lyecs.com lyenet.org lyf.com lyfangc.com lyfc.com lyfc001.com lyfff.com lyfsgy.com lyfz.net lyg.live lyg001.com lyg01.net lyg1.com lyg12371.com lyg321.com lyg800.com lygcec.com lygchkq.com lygcjjt.com lygcsyy.com lygdfrcb.com lygend.com lygent.com lygfdc.com lygfish.com lygfybj.com lyggm.com lyggmyk.com lyghi.com lyghs.net lyghtyy.com lygjdf.com lygjkw.com lygjkwljt.com lygjtjt.com lygjtkgjt.com lygktj.com lygl.net lygmedia.com lygnews.com lygou.cc lygrc.net lygsgt.com lygshjd.com lygshlxh.com lygxwmarathon.com lygxwxqrmyy.com lygyyjt.com lygyyw.com lyh666.asia lyh8888.com lyhb88.com lyhendry.com lyhero.com lyhkh.com lyhomestayinn.com lyhuadu.com lyhx.net lyia.org lyihub.com lyilife.com lyjiuzhou.com lyjksw.com lyjob.net lyjq9gwob.com lyjunshi.com lyjwatch.com lyjy.net lyjyfw.net lyjyjt.com lyjys.com lylangchao.com lyldhg.com lylend.com lylhkq.com lylme.com lylxjxc.com lymarathon.com lymmasu.xyz lymy1684.com lyngrhec.sbs lynkco-test.com lynkco.com lynlzqy.com lynne.ink lynr.com lyobs.com lyou123.com lyouoa.com lypb.com lypd.com lypdl.com lypower.com lypyxx.com lyqckyzz.com lyqgm.com lyqlm.com lyquanshunmall.com lyrc.cc lyrcw.com lyric-robot.com lyrics.run lysafety.com lyscjc.com lyshangdu.com lyshark.com lyshenglu.com lyshgs.com lysk.net lysksw.com lyslsw.com lysq.com lysqzs.com lysswjt.com lysteel.com lyswjt.com lysxtv.com lysy360.com lysyzx.com lyszls.com lyszxyy.com lythw.com lytoufang.com lytpw.com lytq.com lytuanxue.com lyuncloud.com lyunle.com lyunweb.com lyunx.com lyvnee.com lywenlv.com lywf.me lywhxy.com lywtpx.com lywww.com lywxww.com lyxinhua.com lyxltv.com lyxsjmm.com lyxyxx.com lyy99.com lyyapp.com lyyg.com lyyzedu.com lyz810.com lyzaix.com lyzb.com lyzb33.app lyzfgjj.com lyzggs.com lyzhanlang.com lyzlzz.com lyzp100.com lyzyxy.com lz-qs.com lz-redeem.com lz-risun.com lz-veoliawater.com lz12328.com lz310.com lz520.net lzabcd.com lzahzn.com lzailin.com lzane.com lzaotw.com lzarays.com lzb.im lzbank.com lzbaosteel.com lzbcjt.com lzbhmy.com lzc369.com lzcasting.com lzcbnews.com lzccb.com lzcf.net lzchcnc.com lzchenhui.com lzchjs.com lzcits.com lzcrjs.com lzctbyq.com lzcyjt.com lzdchotel.com lzdcic.com lzdd.com lzdfxj.com lzdjjd.com lzdql.com lzdsqcysgs.com lzdsyy.com lzdxb888.com lzdxdyyy.com lzdymy.com lzdyyy.com lzetyy.com lzeweb.com lzfcjys.com lzfdjt.com lzfjq.com lzfqty.com lzfssp2007.com lzftah.com lzfyhgm.com lzfzct.com lzgas.com lzgbdst.com lzgd.net lzghmy.com lzgjcxkj.com lzgjschool.com lzgkyq.com lzgm.com lzgps.com lzgryy.com lzhanghai.com lzhaoteng.com lzhdtk.com lzhean.com lzhf.com lzhhuinong.com lzhjuszs.com lzhl.online lzhmmr.com lzhongdian.com lzhpo.com lzhrobot.com lzhszhyy.com lzhtwl.com lzhuali.com lzhuinong.com lzhygame.com lzhyjd.com lzihospital.com lziig.com lzimall.com lzimc.com lzjchina.com lzjcm.com lzjd.com lzjiajuw.com lzjingda.com lzjldj.com lzjoy.com lzjuhu.com lzjyy.com lzkajc.com lzkczy.com lzkjedu.com lzklkqyy.com lzknpco.com lzkojj.com lzky.com lzl98.com lzlatc.com lzlcba.com lzlgyy.com lzlhpq.com lzlj.com lzljc.com lzljmall.com lzlmyyl.com lzlqc.com lzlrxx.com lzlsl.com lzlsy.com lzltong.com lzltool.com lzlxylsf.com lzlygs.com lzmachine.net lzmaoliu.com lzmbhj.com lzmckq.com lzmei.com lzmljdzx.com lzmoyin.com lzmun.com lzmy123.com lznbjz.com lznetease.com lznrlmxh.com lzoam.com lzolm.com lzorient.com lzpfei.com lzpmia.com lzppt.com lzprocess.com lzqjjx.com lzqjsm.com lzqqpcts.com lzqxjx.com lzranqi.com lzrfc.com lzrfhg.com lzrimd.com lzrkjx.com lzrmzx.com lzro.net lzrq.com lzry.com lzsajzl.com lzsansong.com lzsb.org lzsey.com lzseygs.com lzseyy.com lzsfdq.com lzsfy.com lzsgmf.com lzsjhjx.com lzskqyy.com lzskx.com lzslgcj.com lzslong.com lzsmedia.com lzsq.net lzsrsj.com lzsunspot.com lzswmsj.com lztb.com lztdzy.com lzteli.com lztlcyxx.com lztvnet.com lztx123.com lztxw.com lztzgroup.com lzweidaoyou.com lzwg.com lzwi.fun lzwls.com lzwopu.com lzwsgs.com lzwx.com lzxbook.com lzxfmc.com lzxinjiu.com lzxinwenwang.com lzxishaj.com lzxjet.com lzxlgg.com lzxnqt.com lzxqlgwl.com lzxqm.com lzxqsmwl.com lzxqswjt.com lzxrmtzx.com lzxrmyy.com lzxy.com lzyd.com lzydby.com lzyec.com lzyfoods.net lzygpm.com lzyhcy.com lzyhdyf.com lzyisheng.com lzyizhu.com lzylkf.com lzylqc.com lzyoushang.com lzyrwz.com lzytbl.com lzyts.com lzyuantong.com lzyun.vip lzyxfs.com lzyxsoft.net lzyyy.com lzyz.fun lzyz.org lzyzbz.com lzyzx.net lzyzxzyy.com lzzcloud.net lzzf.com lzzg365.com lzzgljj.com lzzhdq.com lzzhhq.com lzzhongke.com lzzkzs.com lzzl.net lzzlsoft.com lzznbyq.com lzzrgas.com lzzy.net lzzyy.com m-edu.com m-hero.com m-rainbow.com m.travelzoo.com m1.run m123.com m1315.com m176.net m186.net m188.com m1905.com m1938.com m1ok.com m1page.com m1world.com m1xia.com m2ez.com m2mlib.com m2mzy.com m2time.net m3-cloud.com m3cqjc3og6.com m3guo.com m3kaiye.com m43ocq1uoj.com m448.com m5bn.com m5m6x0vh.com m5stack.com m6.run m7686d7aw5.com m7hwocyo67.com m8.com m818.com m9.run m937.com m999.com m9dz.com ma-china.com ma.run ma3office.com ma3you.com ma5000.com maa.plus maaend.com maanhui.com maasdk.com mabangerp.com mabaozhuyun.com mabiji.com mabotech.com mac169.com mac189.com mac69.com mac89.com macabc.com macaobusinessnews.com macaotourism.gov.mo macapp8.com macappbox.com macat.vip macaucentral.com macauchenguangji.com macaumonthly.net macauo2o.com macaupass.com maccms.site maccmsbox.com maccura.com macdaxue.com macgene.com macgood.com machaojin.com machenike.com machine-information.com machine-jh.com machine-visions.com machine35.com machinery4stone.com machloop.cc machloop.com machloop.net machmall.com machtalk.net macjb.com mackentan.com mackext.com macmao.com macmicst.com macocn.com macoshome.com macpeers.com macrolake.com macroprocess.com macrosan.com macrosilicon.com macrounion.com macrowing.com macrozheng.com macrr.com macs.vip macsc.com macsem.com macshuo.com macsky.net macsz.com macv.com macw.com macxf.com macxin.com macxz.com macz.com maczd.com maczhi.com maczj.com maczl.com madaicaifu.com madailicai.com madajiefood.com madaomall.com madboxi.com madefuns.com madeinchinastone.com madewei.com madiancan.com madio.net madisonboom.com madissonline.com madmalls.com madouvip.com madouym.com madsam.work madserving.com maemo.cc maershan.org mafa.tech mafadns.com mafengs.com mafengwo.com mafengwo.net mafengwoo.com maff.com mag10000.com magadanryba.com magaoedu.com magcloud.net magecorn.com magedu.com magentochina.org magewell.com magfx-jbkk.com magi.com magic-school.com magich5page.com magicleaders.com magicneko.com magicnetmall.com magics-ad.com magics.plus magictavern.com magicw3.com magicwatchface.com magicwinmail.com magireco.moe magma.ink magnotel.com magook.com magpiepharma.com magtechjournal.com maguang.net magvision.com mahailushu.com mahjongai.net mahjongcup.com mahjongcup.net mahoupao.com mahua.com mahuatalk.com mai.com maianhao.com maibaapp.com maibaihuo.com maibangbang.net maibaokeji.com maibuymai.com maichawang.com maiche.com maiche168.com maicheme.com maichuang.net maicro.com maicuole.com maidang.cool maidangao.com maidelong.com maidengju.net maideyi.com maidiancy.com maidige.com maiditu.com maidong100.com maidongxi.com maidou.com maidouke.com maidrom.net maiduo.com maie.name maifjb.com maigoo.com maihaoche.com maihaojiu.com maihaome.com maihaowan.com maihaowuyou.com maihaoyou.com maihehd.com maihengqi.com maihuacha.com maihuominiapps.com maihuwai.com maijia.com maijiakan.com maijiaw.com maijiazhichi.com maijichuang.net maijiemedia.com maikami.vip maikongjian.com mail163.com mail4399.com maila88.com maileds.com mailehudong.com mailejifen.com mailetian.com mailianou.com mailiku.com mailixing.com mailizc.com mailpanda.com mailshanguo.com mailyun.net maimaibao.com maimaiche.com maimaidx.cc maimaigongkong.com maimaimaiw.com maimemo.com maimemostatus.com maimiaotech.com mainaer.com mainaffyn-dev.com maindown4399.com maine1688.com mainlandip.com mainlandmed.com mainshe.com maintao.com mainwww.com mainyou.com maipu.com maipyi.com maiqun.vip maiqunwang.com mairoot.com mairuan.com mairuancn.com mairuanwang.com maisanqi.com maiscrm.com maiseed.com maishebei.com maishitv.com maishou88.com maishoumm.com maisry.net maissn.com maisu.vip maisucai.com maisui1.com maitao.com maitaowang.com maitegao.com maitewang.com maitix.com maitix.net maitu.cc maituan.com maitube.com maiuspharma.com maiwe.com maiweikj.com maixhub.com maixiaba.com maixiang.net maixiaodao.com maixinxin.com maiya91.com maiyadi.com maiyanju.com maiyaole.com maiyayk.com maiyuesoft.com maiyuren.com maizer.pw maizhi.com maizhixiu.com maizhuanbao.com maiziedu.com maizipo.com maizuo.com majia99.com majiamen.com majiang520.com majilive.com major-epoch.com majorbio.com majorprecious.com majorsec.com majsoul.com maka.im maka.mobi makaevent.com makaidong.com makaiqian.com make-w0rld-static.club makeapp.co makeblock.com makecn.net makedie.me makeding.com makeeu.com makefang.com makefont.com makelie.com makelove.la makenv.com makeoptim.com makepic.net makepolo.com makepolo.net makerbio.com makeronly.com makeronsite.com maketion.com makeweiyuan.com making.link mala123.com malabeibei.com malagis.com malait.com malajikuai.com malata.com malaysia-mdac.com maldiveszh.com maldun.com males120.com malifenlawyer.com malifuke.org malimalihome.net malingguzhai.com maliquankai.com maliuliu.com mall-builder.com mall.com mallchina.net mallchina.org mallcoo.net mallhaha.com mallocfree.com mallshow.net mallstaroa.com mallzhe.com mallzto.com malmam.com malong.com malong.plus maloyonline.com malsmiles.com maltm.com mama100.com mamacn.com mamahao.com mamahuo.com mamayz.com mambasms.com mambike.com mamcharge.com mamecn.com mamicode.com mamioo.com mamoe.net mamsh.org mamumall.com man6.org managershare.com manamana.net manben.com manbetxoo.com manbetxrr.com manboker.com manbu.cc manchengpiaoxiang.com manco-logistics.com manction.com mandao-tech.com mandarinedu.org mandarinhouse.com mandarinmorning.net mandashu.com mande-car.com mandian.com mandiankan.com mandnsv1.com mandnsv1.net mandudu.com manduhu.com manew.com manewvr.com manfen.net manfen5.com manfenyufa.com manfred-auto.com manfrottoclub.com mangafuna.site mangafuna.xyz manganesenanhai.com mangg.com mangguo.com mangguo168.com mangguonews.com mangjianghuole.com mangocity.com mangoebike.com mangoent.com mangoerp.com mangogame.com mangolm.com mangomob.net mangoru.site mangpielb.com mangren.com mangrovetek.com mangrovetreeresort.com mangroviarestaurant.com mangtian.com mangtuhuyu.com manguo42.com mangxia.com mangxuewang.com mangzhongbrand.com mangzitian.com mangzx.com manhinggroup.com manhua1.com manhua365.com manhua8.net manhuacheng.com manhuadaohang.com manhualang.com manhuang.org manhuapi.com manhuaren.com manhuatai.com manjiwang.com mankebao.com mankewenxue.cc manlaxy.com manlaxycloud.com manli.ltd manlinggame.com manlinwood.com manluoni.com manluotuo.com manmanapp.com manmanbuy.com manmango.com manmankan.com manmanzou.com manmeilp.com manmeng168.com manmu.net mannian.com manogk.com manongdao.com manonggu.com manongjc.com manosp.com manpianyi.com manpowergrc.com manrong.win manshaoco.com manshijian.com mantachina.com mantangc.com mantewei.com mantianfei.net mantusy.com manulife-sinochem.com manuscripk.com manwahholdings.com manxing.net manxiu-law.com manyacan.com manylaw.com manyoo.net manyou.com manyoujing.net manyoukeji2024.com manyoumao.com manyupay.com manzhai.net manzhan.com manzu365.com manzuo.com manzuocaipu.com manzx.com mao-shen.com mao.fan mao35.com maobob123.com maobotv.com maobugames.com maodou.com maodouapp.com maodouketang.com maoercdn.com maoflag.net maogang.com maogepingbeauty.com maogepingedu.com maogp.com maogua.com maogumaogu.com maogx.win maoha.com maohongdz.com maojiaoque.com maojiuxs.com maokangbio.com maoken.com maoln.com maolog.com maomao365.com maomaoche.com maomaoxue.com maomaoyuanma.com maomijiaoyi.com maomilingyang.com maomob.com maomp.com maomp.icu maono.com maopaoya.com maopuyouxi.com maoqitian.com maoqiumail.com maoshanger.com maotao.net maotiangroup.com maotuan.net maotuying.com maowotao.com maoxia007.com maoxiangai.com maoxinhang.com maoxinquan.net maoxiongtv.com maoyachen.com maoyan.com maoyanqing.com maoye-smd.com maoyi.biz maoyidi.com maoyigu.com maoyingaipu.com maoyouxi.com maoyun.com maoyuncloud.com maozhishi.com maozhuar.com maozhuashow.com map-tencent.com map17.com map456.com map456.net mapabc.com mapbar.com mapeng.net mapfarm.com mapgis.com mapgx.com maphuan.com mapks.com maple-game.com maple.ren maplecheck.tech maplef.net mapmapping.com mappn.com maproelec.com maptalks.com mapvq.com maqingbo.com maqinnews.com mararun.com marathonbm.com marathonchangsha.com marazziguide.com marchinfo.com marco-bj.com marcopolochina.com marginalk.com mariedalgar.com marimekko-hots.com marine-dancer.com marinedancer.com marioall.com marioin.com mariowap.com marisfrolg.com maritime-dg.com markdown.xyz markdream.com markedboat.com marketingconv.com marketingforce.com markfairwhale.com markiapp.com markji.com markjour.com markmall.com markmiao.com marknum.com markorchem.com markorhome.com marksmile.com markson.hk marljoy.com marmot-cloud.com maro6.com marry5.com mars-block.com marshal-ceramics.com marshallscarlett.shop marshotspot.com marssenger.com marstor.com marstv.com marsvis.com martech365.com martin8023.com martincl2.me martinlofts.com marto.cc marvelunlimitedresources.com maryek.net marylandtenthcavalry.org mas10010.com mas300275.com masastack.com mascaw.com masdjy.com maseek.com masej.com maseven.com masff.com masgjjt.com masgw.com mashang98.com mashangfangxin.com mashangfl.com mashangmai.com mashangshijie.com mashangxue123.com mashiro.me mashrabiya-screen.com masiao.com masikkk.com masjfc.com masjinquan.com maslink.com maslong.com mason-led.com mason-optics.com maspiece.com masqhboat.com mass-evo.com massage-hospital.com massclouds.com masscrunch.com massestech.com massx.com masszxyy.com masteam.com master-home.com mastercardnucc.com masterchefworks.com masterfy.com mastergo.com masterkongchef.com masterlab.vip masterofmalteu.shop masterofsoccer.com mastersay.com mastersim123.com mastodonhub.com masttoards.com mastv.cc mastvnet.com masyi.com masyunrui.com mat-rev.com mat-test.com matao.com match-much.com matchboxnetwork.com matchsaas.com matchupexpo.com matchvs.com mate.vip mateair.com mater-rep.com matfron.com math168.com mathartsys.com mathchina.com mathcn.com mathfan.com mathleague.hk mathoe.com mathpretty.com mati.hk matistyle.com matlabsky.com matoaudio.com matocloud.com matongxue.com matpool.com matpool.net matrix-chem.com matrix-net.tech matrixchuang.com matrixerse.com matrixscrm.com matrixsens.com matsubayashi-op.com matsuri.icu matsuri.site matt33.com mattressmachinery.net mauu.me mawei.live mawentao.com mawhome.com max-c.com maxamchina.com maxd.cloud maxdo.net maxfinesthair.com maxfor-tool.com maxgamehub.com maxgj.net maxhub.com maxhub.vip maxiang.info maxiang.io maxiaobang.com maximajt.com maximfiber.com maxing128.com maxinovel.com maxio-tech.com maxitas.com maxjia.com maxkamsofarms.com maxket.com maxlu.net maxmindpharma.com maxng.cc maxok.com maxonc.com maxonesemi.com maxonesoft.com maxowen.com maxpda.com maxqiu.com maxreader.la maxreader.net maxscend.com maxsewing.com maxspeedgf.com maxtop.online maxuscloud.com maxviewrealty.com maxway-logistics.com maxwealthfund.com maxwi.com maxxipoint.com may.ltd maya09.com maya777.com mayabot.com mayahuashi.com mayanchina.com maybe2016.com maycpay.com maycur.com maydeal.com maydo.group mayerse.com mayi.com mayiangel.com mayicms.com mayihr.com mayiic.com mayikankan.com mayikt.vip mayima.net mayishebao.com mayishoubei.com mayitek.com mayitxt.com mayiui.com mayiw.com mayiwenku.com mayiwsk.com mayiyx.com mayizhuanlan.com maylandresort.com maylove2333.com mayora-sh.com mayshijia.com maysun.net mayswind.net mayunbj.com maywant.com maywonenergy.com mazakii.com mazarine-ap.com mazc.org mazey.net mazhan.com mazhen.tech mazhizuo.com mazida.com mb-go.com mb2p.com mb5u.com mba518.com mbabao.com mbachina.com mbadashi.com mbadbaedu.com mbajs.com mbalib.com mbanggo.com mbaobao.com mbatrip.com mbazl.com mbazsw.com mbb0760.com mbb180.com mbbrowser.com mbbs.cc mbcloud.com mbd.pub mbdkjsw.com mbestway.com mbg06260pg.com mbg06270pg.com mbg06290pg.com mbg06301pg.com mbgo.com mbian.com mbiaohui.com mbigfish.com mbimc.com mbinary.xyz mbiosh.com mbitrres.net mbkfj1656.com mbksh.com mblaudio.com mbldbb.com mblog.club mblu.com mblyun.com mbo-china.com mbokee.com mbs.download.prss.microsoft.com mbsifu.com mbsuat.download.prss.microsoft.com mbti16cc.com mbtools.work mbwxzx.hk mbysrobot.com mbzhu.net mc-biolab.com mc-ccpit.com mc-dj.com mc-f.com mc-test.com mc-user.com mc-xborder.com mc.cc mc520.com mc91.com mc9y.net mcake.com mcbaas.work mcbang.com mcbao.com mcbbs.co mcbbs.jp mcbbs.net mcbeam.pro mcc460.pub.3gppnetwork.org mccbim.com mccchina.com mcchcdn.com mccshhospital.com mcd.cc mcdchina.net mcdemo.show mcdsusan.com mcdvisa.com mcearnmore.com mcecy.com mceebbs.com mcepchina.org mcfound.net mcfui.work mcfun.tv mcfxw.com mcgsjt.com mchanmai.com mchat.com mchifi.com mchim.net mchost.guru mchpk.com mchuiji.com mchweb.net mchxx.net mcidc.net mcit.tech mcjd.net mckuai.com mckumf5ii4.com mcloudvr.com mcmap.cc mcmarkets.com mcmaster-asia.com mcmqyc.com mcmsmp.com mcmssc.com mcmtek.com mcmusic.hk mcnav.net mcneko.com mcnjigou.com mcobj.com mcohmygod.com mcoo.cc mcooks.com mcool.com mcpemaster.com mcpfks.com mcpmaid.com mcq93.app mcqy.net mcsafebox.com mcsgis.com mcshuo.com mctcn.com mcu-home.com mcue.cc mcufan.com mcuisp.com mcusky.com mcuzj.com mcuzone.com mcuzx.net mcw99.com mcwell66.com mcwizrd.com mcwshop.com mcx666.com mcxyzt.cc mcxzs.com mcyhfl.com mcypls.com mcyz.com mczhihui.com mczmb.org mczwlt.net mczyz.com mczz.net md-hmjt.com md-pms.com md5ma.com mdapp.tv mdbchina.com mdbimg.com mdclub.org mdddg.com mddj.com mddlsa.com mdeasydiagnosis.com mdeer.com mdex.co mdex.com mdfkyiyuan.com mdfors.com mdfull.com mdhky.com mditie.com mdjgjjt.com mdkj1.com mdl.ink mdlf.xyz mdm.plus mdmccq.com mdmmm.com mdmt.com mdnice.com mdouvip.com mdouwz.com mdpda.com mdpetrotech.com mdrmyy.com mdsin.com mdsmos.com mdsyzx.com mdtu.com mdupc.com mdvdns.com mdwyservice.com mdxs.com mdxw.work mdy-edu.com mdybk.com mdydt.net mdymedical.com mdyseducation.org mdyuepai.com mdzgjx.com mdzx.net me-city.com me-game.com me-tencent.com me1.ltd me360.com me361.com me4399.com meadin.com meaningfulcloud.com meanwell.cc meb.com mebhaoya.com mebo.com mebtf.com mebyk.com mecaraiotp.org mechatim.com mechina.org mechr.com mechrevo.com mecoxlane.com mecru.com mecsz.com mecue.cc med-123.com med-linket.com med-water.com med123.com med126.com med139.com med66.com meda.cc medbotsurgical.com medcaren.com medcmz.com meddatas.com medebound.com medejob.com medeming.com media.paperclipclub.net mediastory.cc mediatek.com mediav.com mediaxinan.com medical-union.com medicalqc.com medicexam.net mediecogroup.com medifinit.com medilinkthera.com medinoah.com mediparksh.com meditrustbroker.com meditrusthealth.com mediumvis.com medixcloud.com medkaoyan.net medlander.com medlinkchina.com medlinker.com medlinker.net medme.net medmeeting.org mednovogroup.com medproad.com medrc.net medreading.com medris-china.com medscrm.com medstarcorp.com medsuture.com medtechshare.com medtimes-hk.com medtion.com medwant.com meecec.com meegobeta.com meegoe.com meekdai.com meeket.com meeshow.com meet-in-shanghai.net meet99.com meetbf.com meetfave.com meethall.com meethome.com meeting.so meeting666.com meetingmeet.com meetingrj.com meetlawyer.com meetsite.com meetsocial.com meetsoho.com meetsprring.com meetuvip.com meetwhale.com meetxian.com meetyoumuseum.com meetzoom.net meexx.xyz mefcl.com mefenglife.com mefenlife.com mega555net10.org megaemoji.com megaer.com megagamelog.com megagenchina.com megahugo.net megajoy.com megalithwatch.com megarobo.com megasig.com megawords.cc megcup.com megmeet-welding.com megobike.com megou8.com meguo.com meguri.app meguri.moe megvii-inc.com megvii.com meheco.com mehecointl.com mei-shu.com mei-shu.net mei.com mei1.com mei1.info meia.me meianclean.com meianjuwang.com meiaoju.com meiba.com meibaiwu.com meibanla.com meibei.com meibg.com meibgroup.com meican.com meicanstatic.com meichen.cc meichengchongdian.com meichenindustry.com meichibao.com meichuanchuan.com meichuanmei.com meichunmed.com meici.com meida.com meidaifu.com meidanylon.com meidaogg.com meidaojia.com meide-casting.com meidebi.com meidecloud.com meideng.net meidepump.net meidongauto.com meidunyipin.com meidusacloud.com meierbei.com meifang.com meifang8.com meifangquan.com meifazhan.com meifengli.com meigeinc.com meigongyun.com meiguanjia.net meiguiauto.com meiguiwxw.com meiguo-qianzheng.com meiguogouwu.com meiguoxiaoxue.com meiguoxq.com meigushe.com meih5.net meiheups.com meihouyun.com meihu99.com meihua.info meihuainfo.com meihuapacking.com meihuboyue.com meihudong.com meihutong.com meiji-icecream.com meijia51.com meijiadaren.com meijiaedu.com meijiandaojia.com meijianpin.com meijiashang.com meijiavip.com meijiebijia.com meijieclub.com meijiedaka.com meijiehang.com meijiehezi.com meijieku.com meijiequan.com meijieu.com meijiexia.com meijieyizhan.com meijiezaixian.com meijiezaixian.net meijipharma.net meijipower.com meijiu.com meijubo.com meijufans.com meijuniao.net meijuq.com meijust.com meika360.com meikai1979.com meikanguo.com meikankeji.com meikao.com meikeda.net meikevideo.com meikongte.com meikr.com meiktv.com meiku123.com meilandianzi.com meilanrilan.com meilaoshi.com meili-inc.com meili-oh.com meili43.com meilichengren.com meilidongnanya.com meiligaosu.com meilijia.com meilijian.com meiling.com meilishuo.com meilishuo.net meilisite.com meiliwang.org meiliworks.com meiljiaqi.com meilunmeijia.com meilvtong.com meimedical.com meimeidu.com meimeifa.com meimeiriji.com meimeiyouxin.com meimianjiafang.com meiming8.com meimingbao.net meimingteng.com meimingxuan.com meinali.com meinenggas.com meinenggou.com meinv.com meiobrand.com meionetech.com meip0.me meip1.me meip4.me meipai.com meipaixiu.com meipeng518.com meipian.me meipian2.com meipingmeiwu.com meipuapp.com meipvip.net meiqia.com meiqiacloud.com meiqiausercontent.com meiqinedu.com meiquankongjian.com meirenchong.com meirijinrong.com meiritv.net meirixz.com meiriyiwen.com meirong.net meirongchuang.com meirongshanghai.com meishai.com meishanjob.com meishanren.com meishe-app.com meisheapp.com meishesdk.com meishi.cc meishi13.com meishichina.com meishiffx.online meishij.net meishijr.com meishilife.com meishiqin.com meishischool.com meishiwangluo.com meishizuofa.com meishow.com meishu.com meishubao.com meishutuku.com meisilin.com meisubq.com meisupic.com meitangdehulu.com meitanjianghu.com meitanwang.com meite.com meitegou.com meitianhui.com meitianzuche.com meitie.com meitifagao.com meitong-tech.com meitq.com meitu-int.com meitu-mobile.com meitu.com meitu.net meituaccount.com meituan.com meituan.net meitubase.com meitubeauty.com meitubf.com meitubox.com meitucam.com meitucamera.com meitucoffee.com meitudashi.com meitudata.com meituduoduo.com meitufamily.com meitufans.com meitugif.com meituhezi.com meituhuahua.com meituinside.com meitukankan.com meitukiss.com meitumail.com meitumob.com meitumobile.com meitumv.com meitun.com meituncdn.com meitupaipai.com meitupic.com meitupingzi.com meituriji.com meiturom.com meitushijie.com meitushop.com meitushouji.com meitusiyu.com meitusnap.com meitustat.com meitustatic.com meitustore.com meitutaotao.com meitutg.com meitutietie.com meituxiangji.com meituxiaopu.com meituxiu.com meituxiuxiu.com meituyidong.com meituyuan.com meituyun.com meiwafuying.com meiweibf.com meiweigroup.com meiweis.com meiweishudan.com meiwulist.com meixin.com meixincdn.com meixinl.com meixinqi.com meixiong5.com meiya.com meiyaapp.com meiyacup.com meiyan.chat meiyan.com meiyan.tech meiyanstatic.com meiyatour.com meiye.art meiyedana.com meiyi.ai meiyixinrui.com meiyou.com meiyue.com meiyujt.net meiyuko.com meiyuwang.com meizhan.com meizhandian.com meizhanggui.cc meizhi-cn.com meizhou.com meizhou.net meizitu.net meizu.com meizu.com.hk meizu.net meizuapi.com mejorrelojes.com mejxw.com meke8.com mekedoo.com meldingcloud.com melecode.com melizhi.com mellowactivy.com mellowgroups.com melon-eptc.com melon.cdnetworks.com melon.icu meloong.com melotgroup.com memblaze.com memewan.com memeyin.com memeyule.com memfiredb.com memofun.net memorieslab.com memoverflow.com mems.me memsconsulting.com memsensing.com memsflex.com memsic.com memuplay.com memuu.com memyy.com men.ci menchuang.biz menchuang58.com menci.xyz mendale.com mendd.com menducn.com meng-model.com meng2u.com meng3.com meng800.com mengaite.com mengarchitects.com mengat.com mengbige.com mengchongzu.com mengdian.com mengdie.com mengdoc.com mengdoctor.com mengdodo.com mengensha.com mengfm.com menggang.com menggaole.com menghuimengtu.com menghunli.com mengjiagames.com mengjianjiemeng.com mengkang.net mengkm.com menglan.com menglechong.com menglegame.com menglu.com mengmayw.com mengmei.org mengniang.tv mengniuarla.com mengniuir.com mengou.net mengqingpo.com mengqiuju.com mengsang.com mengso.com mengte.online mengtian.com mengtuiapp.com mengvlog.com mengxi.com mengxiang.com mengxiangeka.com mengxintianxia.com mengxyz.com mengya.com mengyanggroup.com mengyin.cc mengyou.org mengzhou.com mengzhuangxiu.com mengziyuan.com mengzuji.com menhu.io menksoft.com menpad.com menpiao.com menpiaotuangou.com menshiny.com mentamob.com mentorsc.com mentrends.com menubarx.app menwee.com menww.com menwww.com menxue.com menyuannews.com meoof-pet.com meovse.com meow.plus meowcat.org mepai.me mepcec.com mepoem.com meppon.com meqlm.org merach.com mercedes-benzarena.com merchaincargo.com mercitime.com mereith.com mergeek.com merivox.net merklechina.com merkpd.com merlinmedicine.com mernrza.com mero-db.com merries-china.com merroint.com merryhome.com merucario.com mescroll.com meshiot.com mesince.com mesnac.com mesonart.com mesou.net mesowe.com mesresearch.com messawith.com messecloud.com meta-stone.com meta-verse.co meta-xuantan.com meta.law metacd.com metal-min.com metal-tube.com metal.com metalchina.com metalrevolution.com metalsinfo.com metalyoung.com metaoptronics.com metaplanet3023.com metasecurities.com metastonecorp.com metastudioxr.com metastudy.vip metasyun.com metatube.pro metavatar.cc metaversemolecule.com metawalle.com metax-tech.com metayuanjing.com metcn.com meten.com meteni.com meteric.com metersbonwe.com metin520.com metispharma.com metmt.com metnews.net metong.com metools.info metro-3d.com metroer.com metrofastpass.com metropolohotels.com metroshield.com metrowatch.net metstr.com metword.co meu95otw4967t.com meuicat.com meutu.com mevionchina.com mew.fun mewchan.com mewx.art mexingroup.com mexontec.net mexxum.com meyet.net meyoufreight.com meyum1688.com mezhiyu.com mezw.com mf-y.com mf08s.com mf1288.com mf999.com mfaeb.ltd mfbrjc.com mfbuluo.com mfcad.com mfcad.net mfcpx.com mfcteda.com mfcyun.com mfdl666.com mfdns.com mfdzqj.com mfexcel.com mfg-magnets.com mfgchn.com mfhcd.com mfinetech.com mfisp.com mfjl.wiki mfjxcn.com mfk.com mflady.com mfniu.com mfpad.com mfpay.net mfqqx.com mfqyw.com mfsj1908.com mftianshanam.com mftvideo.com mfunz.com mfwxpay.com mfxlawyer.com mfzl.net mfzxcs.com mg-cdn.com mg-pen.com mg21.com mg3721.com mgcan.com mgd5.com mgdq.net mgdzz.com mgenbio.com mgenware.com mgff.com mgfty.com mgfy88.com mggtech.vip mgh2-lab.com mgjianshe.com mgkj.vip mgkjht.com mgl9.com mglhx.com mglip.com mgm255.com mgmgrandsanya.com mgmovie.net mgmusic.vip mgnav.com mgobe-webattle.com mgogo.com mgongkong.com mgplay.com.tw mgs123.com mgsdk.com mgse.info mgskfjfod25.com mgskfjfod31.com mgskfjfod40.com mgslb.com mgslb.net mgslb.org mgsp.fun mgtv.com mgtv2025.com mgw999.com mgwxw.com mgxf.com mgxzsy.com mgys.cc mgyxw.net mgyyw.com mgzf.com mgzxzs.com mh-rjgb.com mh160.cc mh456.com mh51.com mh9.cc mhacn.com mhacn.net mhaoma.com mhbras.com mhcharging.com mhealth100.com mhfotos.com mhhf.com mhhf.net mhi-ac.com mhinele.com mhito.net mhkami.com mhkcomment.com mhnzww.com mhome.com mhotels.design mhpdf.com mhpin.com mhrooz.xyz mhskso.sbs mht.la mht.tw mhtclub.com mhtes.com mhtyd.com mhtzjt.com mhv2.net mhw315.com mhwck.com mhwh168.com mhwmm.com mhwy2.com mhxk.com mhxzhkl.com mhystatic.com mhyun.net mhzd.cc mhzd.net mi-ae.net mi-cache.com mi-customer.com mi-dong.com mi-dun.com mi-fds.com mi-fds.net mi-idc.com mi-img.com mi-img1.com mi-img2.com mi-img3.com mi-img4.com mi-img5.com mi-static.com mi.com mi0.cc mi1.cc mia.com miaibox.com miak.work mian520.com mianbao.com miancp.com miandanbx.com mianfa.org mianfeiic.com mianfeiquming.com mianfeiwendang.com mianfeiwucan.org mianfeiziti.com mianhuatang.cc mianhuatang.la mianjue.com miankousucai.com mianmoi.com mianshiya.com mianshui365.com mianwai.com mianyangauto.com mianyanghuida.com mianyaojsj.com mianyazulin.com mianzhouhotel.com miao-lang.com miao15777790078.com miaobe.com miaobige.com miaobolive.com miaoche.com miaocode.com miaodiyun.com miaodongbar.com miaodongshenghuo.com miaogongzi.cc miaogongzi.net miaohuiyanyi.com miaojibrand.com miaokaikeji.com miaokaiyun.com miaokan.com miaokan100.com miaolaoshi.com miaolianyunapp.com miaolingbio.com miaomaicar.com miaomiaolock.com miaomiaowork.com miaomiaoxue.com miaomiaoz.com miaomiaozhe.com miaomiaozhua.com miaomu.com miaomuzhan.com miaoo.me miaopai.com miaoqutimes.com miaosha.com miaoshou.cc miaoshou.com miaoshou.net miaoshoucdn.com miaoshufang.com miaoshuwu.com miaoshuzhai.net miaoso.com miaostreet.com miaov.com miaovps.com miaoweijianfei.com miaowenhk.com miaowlabs.com miaowutech.com miaoxiazai.com miaoyanai.com miaoyin.pw miaoyun.link miaozanba.com miaozao.com miaozhan.com miaozhen.com miaozhun.com miaozhunjing.net miaozuo.com miaxis.com miaxis.net mibao.com mibaoxian.com mibei.com mic-s.com micai.com micai315.com micaihu.net micaiying.com micamika.com micang.com micblo.com mice-gz.org micecn.com michaelapp.com michoi.com michong.com michplay.com miclle.com mico.io micode.net micoe.com micro-bee.com micro-bridge.com micro-game-client.com micro-x.net microad-cn.com microaiav.com microbeee.com microbell.com microbt.com microcai.org microcardio.com microchampion.com microdiag.com microdreams.com microesim.com microfotos.com microfountain.com micronetpay.com microrui.net microsate.com microsoftsa.com microsoftuwp.com microstarsoft.com microstern.com microsword.net microtrading.com microvcard.com microvirt.com microvoip.com microwear.com microwoo.com microwu.com microxiang.com microyan.com microzuji.com mictormedical.com micu.hk micw.com micyjz.com mid-link.net midaapi.com midadata.com midainc.com midanyi.com midasbuy.com middleschoolcounselor.com midea-buy.com midea-group.com midea-hotwater.com midea.com midea.com.tr mideabiomedical.com mideadc.com mideaepay.com mideaepayuat.com mideav.com mideazy.com midecopharm.com midi-cn.com midian.com midiclouds.com midicn.com midifan.com midingdong.com midiplus.com midita.com miditools.net midiyinyue.com midlele.com midonglab.com midongtech.com midongtech.xyz midu.com miduiedu.com midukanshu.com miduoke.net midureader.com midust.com midway.run mieco.net miecod.com mieevents.com miemie.la miercn.com mieseng.com mifacelive.com mifan365.com mifangba.com mifanli.com mifanlicdn.com mifei.com mifeng.plus mifengchengshi.com mifengv.com mifengvv.com mifengxiuchang.com mifengzd.com mifengzhibo.com mifenlife.com mifispark.com mifjhgq.xyz mifon.com mifpay.com mifwl.com migames.com migelab.com mightsquare.com miglioriorologi.com migood.net migu.store migucloud.com migufm.com migufun.com migugu.com miguku.com migumaotrip.com migutv.com miguvideo.com miguyu.com mihanw.com mihayo.com mihayou.com mihopacking.com mihoyo.com mihoyocg.com mihoyocloud.com mihoyogift.com mihoyomall.com mihuachat.com mihuangame.com mihuashi.com mihuatown.com mihui.com mihui365.com mihulu.com mihuwa.com miicp.com miidc.com miidii.tech miidim.com miiee.com miiiw.com miiiw.net miinaa.com miinsurtech.com miit-icdc.org miit-kjcg.com mij.cc mijewelries.com miji8.com mijia.tech mijian360.com mijiannet.com mijiayou.com mijiayoupin.com mijifen.com mijisou.com mijwed.com mika123.com mike-x.com mikeauth.com mikechen.cc mikecrm.com mikemessiha.com mikeoperfect.com mikesent-awareness-02.com mikesent-awareness-04.com mikesent.net mikeyouxi.com mikge.com mikika.com miko007.com mikoshu.me miku.ink miku01.cc mikuac.com mikublog.com mikucdn.com mikuclub.fun mikudm.com mikumikumi.xyz milan.com milan520.com milanshishang.com milanvip.com milchips.com mileage.vip milejia.com milemovie.com mileshub.net milianshe.com miliantech.com miliao.com milido.vip milihua.com milike.com milimao.com milimili.tv miliol.com miliol.org milipictures.com militadowatch.com miliyo.com milkjpg.com milliant.com milliway-ic.com millnovel.com milnews.com milo-star.com miloktv.com miloli.info milsay.com milu.com milubtyx.com milusybt.com milvtong.com milvzn.com milyf.com mimangfei.com mimayun.com mimeihui.com mimi123.vip mimi518.com mimidi.com mimimeu.com mimiteng.com mimixiaoke.com mimiyc.net mimo51.com mimomim.com mimoprint.com mimouse.net mimvp.com minapp.com minapp.xin mincdn.com mind-home.net mind-medi.work mindai.com mindcherish.com mindcontroles.com mindechem.com mindlabpros.site mindmanagerchina.com mindmapper.cc mindmm.com mindpin.com mindray.com mindshow.fun mindsun.com mindway-sz.com minebbs.com minecraftxz.com minecraftzw.com minegoods.com minei.com mineplugin.org mineraltown.net minerfun.com minerhome.com minesage.com minewtech.com minfengmuye.com minfengtianfu.com minfufa.com ming-med.com ming-men.com minganmed.com mingbianji.com mingbiao001.com mingbiaohao.com mingcalc.com mingchao.com mingchaoonline.com mingchaoyouxi.com mingchu.co mingci.org mingcihospital.com mingcloud.net mingczh.com mingdanwang.com mingdao.com mingdao.net mingdao8.com mingdaocloud.com mingdazhongxue.com mingdejx.com mingdongman.com mingdutech.com mingechina.com mingfengtang.com mingfucdn.com mingfucloud.com mingfudns.com mingfuyun.com minghaoshangwu.com minghecloud.com mingheng-group.com mingheyaoye.com mingheyiyao.com minghezhi.com minghuatang.com minghuaxinda.com minghui.com minghuishijia.com mingin.com mingjiachina.com mingjian.com mingjian365.com mingjignfang.com mingjinglu.com mingjiudu.com mingjuyoupin.com mingkj.com minglian.com minglunlaw.com mingmen-tech.com mingpian.biz mingpian.net mingqi.co mingqian666.com mingqu.xyz mingr.com mingren888.com mingricctv.com mingrsoft.com mingshi100.com mingshi100.net mingshi51.com mingshi58.com mingshiedu.com mingshisanling.com mingsoft.net mingstar.net mingtaimed.com mingtaokeji.com mingtejia.com mingtian.com mingtou.com mingxigu.com mingxingku.com mingxinglai.com mingxuan.store mingya.mobi mingyang100.com mingyangtek.com mingyangyinhe.com mingyannet.com mingyantong.com mingyaohui.com mingyaoruci.com mingyaweb.com mingyi.com mingyihui.net mingyou360.com mingyu-porcelain.com mingyuanfund.com mingyuanmuye.com mingyuanyun.com mingyueqingfengshe.com mingzhi-tech.com mingzhucable.com mingzhujs.com mingzhuoedu.com mingzhuxiaoshuo.com mingzihui.com minhang.cc minhangshi.com minhow.com mini-audio.com mini-banana.com mini-ease.com mini-program-acc.com miniadx.com miniaixue.com miniapida.com miniapp.fun miniapp360.com miniappss.com minibai.com minibg.com miniblink.net minidaxue.com minidso.com minieye.cc minieye.tech minigame.com minigameam.com minigui.com minigui.org minihaowan.com miniluck.com minimaituan.com minimax.chat minimaxi.com mining120.com mininglamp.com minip-service.com minipacs.com miniprogramadmin.com minirizhi.com minisforum.com minishops.co miniso-au.com miniso.com minisoyo.com ministudy.com minitiao.com miniui.com minixiazai.com miniyounger.com minjichem.com minkave.com minking.cc minleai.com minli.com minmetals.com minor-tech.com minovapharma.com minpayment.com minqiao.com minra.com minretail.com minshangjie.com minshengec.com minshengjob.com minshenglife.com minshop.com minstrans.com mintaibank.com mintake.com mintaylor.com mintimate.cc mintix.store mintmuse.com mintrust.com mints-id.com minunix.com minxing365.com minxiwang.com minxue.net minyukji.com minyunit.cool minz.press minzu56.net mionerxrospeo.com mionexmailerc2.com mionexmailero1.com miooku.com miospay.com miot-spec.org miotech.com mipa.fun mipahui.com mipangwang.com mipay.com mipay.net mipcdn.com mipengine.com mipengine.org mipkj.com miplus.cloud mippaper.com mipplan.com mipplan.org mipuo.com mipush.com miqixuan.net miquapp.com mir4399.com mir6.com miracdn.com miraclelaser.com miracleplus.com miraclevision.com miraclevision.net miracomotor.com mirahomes.shop miratama.com miravia.es miredian.com mirgaga.net miri.site mirmzhy.com mirreal.net mirrorcast.tv mirrorchyan.com misaka.center misakamoe.com misall.com miscd.com mishang.com mishangkeji.com mishuhome.com misiai.com misintlschool.com miso-lab.com mispos.cc misrm.com missevan.com missfresh.net misshachina.com misshcl.com missionhillschina.com missjia.net misslele.com misstar.com missyuan.net misuland.com misunly.com mitalk.com mitang.com mitangtuan.com mitao.bar mitaoping.com mitaowu.com mitay.net miteno.com mitertec.com mitesi.com mitotoo.com mitsubishielectric-mesh.com mitsuha.space mitsuiplastics-shanghai.com mittrchina.com mituancm.com mituyuedu.com mitvos.com mitvos.net miued.com miui.com miuiver.com miulab.com miusi.co miuss.icu miutour.com miutrip.com miwaimao.com miwap.com miwifi.com miwuad.com miwuzhentan.com mix-planet.com mix.moe mixbao.com mixcapp.com mixcm.com mixdesk.net mixdo.net mixian88.com mixiaojin.com mixin.cc mixinshe.com mixiong.tv mixkr.com mixly.org mixmind.com mixmoe.com mixpwr.com mixrnb.com mixueedu.com mixvvideo.com miyabaobei.com miyaboke.com miyachat.com miyanlife.com miyapay.com miyateam.com miyatech.com miyilink.com miyoushe.com miyouu.com miyuangz.com miyun-ecomarathon.com miyun.com miyun360.com miyuncms.com mizhai.com mizhe.com mizhiji.com mizhimedia.com mizhionline.com mizhizbf.vip mizhuan.me mizone.cc mizuda.com mizuki2.com mj110.net mj567.com mj85.com mjasoft.com mjatm.com mjcec.com mjceo.com mjecu.com mjgxsc.com mjgysm.com mjh5.com mjia.cc mjjcn.com mjjq.com mjlong.com mjlsh.com mjmjm.com mjmobi.com mjoys.com mjqishi.com mjt288.com mjtcsb.com mjtom.com mjttt.com mjxhgdl.com mjxpay.com mjyg.com mjylbj.com mjyun.com mjyx.com mjyxkf.com mjzcnd.com mjzhcl.com mjzj.com mjzq.net mk-yiliao.com mk169.com mk2048.com mk5.xyz mkaq.org mkb0898.com mkf.com mki7rxcwmfe7c.com mkjump.com mkkcn.com mklimg.com mklist.com mkmchina.com mkn666.com mkpum.com mkpush.com mkqh.com mkqst.com mkrobot.org mkrviu.sbs mkshell.com mkstone.club mksucai.com mktcreator.com mktdatatech.com mktoys.com mktzb.com mktzr.com mkvcn.com mkwhat.com mkzcdn.com mkzhan.com mkzhan.net mkzhou.com mkzoo.com mlabc.com mlairport.com mlayt14.com mlbaikew.com mlc.cc mlexpo.com mlfjnp.com mlfkc.net mlgj.com mlgxw.org mlhimalayanxt.com mlhld.com mlibaba.com mlibrarys.com mliev.com mlink.tv mlinkapp.com mlinks.cc mlinks.co mlito.com mlj122.com mlj125.com mlj130.com mlj162.com mlj194.com mlj36.com mlj93.com mljtevy.com mljydoors.com mlkmba.com mllj.net mlmcms.com mlmtz.com mlnk.me mlnsoft.net mlocso.com mlogcn.com mlpzes05.com mlqdpdgf.sbs mlrcn.com mlrlzy.com mlrzsj.com mlsbmw.com mlsh.net mlsub.net mlszp.com mlt.pub mltrans.net mlunwen.com mlwanwan.com mlwdpx.com mlwed.com mlwplus.com mlwu.net mlxks.com mlxx.com mlycdn.com mlychee.com mlyfc.net mlyfcyy.com mlyns.com mlyx.com mlzs2008.com mm-sh.com mm.com mm111.net mm131.kim mm1357.com mm138.com mm2hservices.com mm3yy.com mm8mm8.com mmall.com mmaqa.com mmarket.com mmatch.tech mmbang.com mmbang.info mmbang.net mmbao.com mmbest.com mmbjq.com mmbread.com mmc-data.com mmcl.net mmcloud.com mmcos.com mmdtt.com mmegg.com mmfad.com mmfusheng.com mmgl.net mmgo.com mmgogo.com mmgoodcar.com mmhygame.com mmi-shanghai.com mmia.com mmim8.com mmj.vip mmjbh.com mmjynet.com mmjzxh.com mmkkiivv.com mmlessin.com mmllllasjd.com mmmglobalgroup.com mmmmmmm.com mmmnote.com mmmrz.com mmmtech.com mmods.site mmogg.net mmoist.com mmonly.cc mmoser.work mmosite.com mmqidian.com mmrcw.com mms591.com mmsase.com mmsccn.com mmscoo.com mmsfw.com mmsk.com mmstat.com mmt3000.com mmtch.com mmtx.net mmuaa.com mmww.com mmxchina.com mmxiaowu.com mmxmmx.com mmyj.com mmyxshop.com mmyz.net mmzcn.com mmzh.com mmzj.com mn-soft.com mnancheng.com mnbvbqw.com mnbvdfg.com mnbvtgv.com mndqlib.net mnengine.com mnfqw.org mnihyc.com mnjj.group mnkan.com mnpc.net mnwan.com mnwww.com mnxhj.com mo-co.com mo298.com mo2g.com mo7.cc mo9.com moa06181ju.com moa06190ju.com moa06191ju.com moa06210ju.com moa06211ju.com moa06221ju.com moa06240ju.com moa06250ju.com moage.com mob.com mob55.com mobaders.com mobai.sbs mobaibox.com moban.com mobanhao.com mobanjing.com mobanku.com mobanlane.com mobanma.com mobantiankong.com mobantu.com mobanwang.com mobanyun.com mobao.online mobaoo.net mobartsgame.com mobawan.com mobayx.com mobcells.com mobcent.com mobcloud.mobi mobdna.com mobeehome.com mobgi.com mobgroupbuy.com mobiapp.cloud mobibao.com mobibrw.com mobike.com mobileanjian.com mobilebone.org mobiledissector.com mobilegamebase.com mobilegamecdn.com mobilelegends.com mobilemgr-global.com mobilemgr-global.net mobileppp.com mobiletrain.org mobileztgame.com mobispeaker.com mobjump.com mobjz.com mobkeeper.com mobking.biz moblazer.com mobmore.com mobo168.com moboage.com moboplayer.com mobotap.com mobring.co mobrtb.com mobsdks.com mobsurl.com mobtou.com mobvoi.com mobwan.com mocache.com mocafilm.com mocartoon.com mochafengbao.com mochai.store mochateam.com mochi.website mochiwang.com mochouu.com moci6.com mockingbot.com mockuai.com mocn.cc moco-mall.com mocreak.com mocusez.site mocuz.com modao.cc modao.com modao.io modaogz.com modashi.net modb.cc modb.pro modelarts-infer.com modelarts-maas.com modelevel.com modelltd.com modelones.com modelscope.net modelwhale.com modeng178.com modengtianshi.com moderatep.com modernavenue.com moderner.com moderno2.com modernsky.com modernweekly.com modevol.com modian.com modianverse.com modificatiy.com modooplay.com modouwangluo.com modstart.com modudaojia.com modujx11.com modujx13.com modujx14.com modujx15.com modujx16.com moduyun.com modxz.com moe-box.com moe.im moe.so moe.tips moe.xin moe123.com moe123.org moe321.com moeclub.org moedot.net moeelf.com moefactory.com moefantasy.com moefou.org moegirl.org moegirl.tw moehot.com moehu.org moehui.com moeid.com moejp.com moeking.me moeli123.com moemiao.net moerlong.com moetu.club moetu.org moetuji.com moeub.com moeworld.tech moex.ink moeyuuko.com moeyy.xyz moezx.cc mofacdnode.com mofadns.online mofahou.com mofang.com mofang.jp mofangchuxing.com mofangge.com mofanghr.com mofangshe.com mofangwang.com mofangyu.com mofanodes.com mofashi.ltd mofavideo.com mofazhu.com moffettai.com mofile.com mofishgames.com mofoun.com mofunenglish.com mogao.com mogezhouyi.com mogher.com mogoedit.com mogohd.com mogojob.com mogoo.com mogoroom.com mogu.com mogu.io mogua.co mogucdn.com moguding.net moguf.com mogujia.com mogujie.com mogujie.org mogujielive.com mogumiao.com mogutong.com moguv.com moguvet.com moguyun.com moh.cc moh7.com mohangkeji.net mohjdvh.com mohou.com mohu.org mohuishou.com moihu.com moimg.net moissture.com moith.com moji.com moji001.com moji002.com mojicb.com mojicdn.com mojichina.com mojichina.net mojidict.com mojidoc.com mojie.app mojie.co mojie.kim mojieai.com mojitest.com mojitok-c.com mojocube.com mojusteel.com mojy.xyz mokahr.com mokamrp.com mokatyper.com mokayuedu.com mokeyjay.com moko.cc mokra.house mokxing.com molbase.com molbase.net molcoo.com moldinginductor.com moldnano.com moleecel.com molefitting.com molerose.com molesdn.com molibaike.com molihe.cc molihua.net molihuadami.com molilian.com molilier.com molimoli.tech moliplayer.com molipy.com moliqiji.com molishe.com molixiangce.com mollervilla.com molt.win molwater.com molygoo.com mom001.com moma-hz.com mombuybuy.com moment.fun momentad.com momentcake.com momhui.com momishi.com mommygf.com momo35.com momoapk.com momobako.com momocdn.com momoda8.com momokuba.com momooyo.com momotn.com momoyu.cc momoyu.com momoyuyouxi.com momzs.com monadyneed.com monaite.com monarch-sw.com mondaymorningmtg.com moneak.com monengu.com monengugame.com moneydata.hk monfetch.com mongac.com monhun.fun monidai.com monidata.com moniex-verifyb.com monika.love monkeylsp.com monknow.com mono.work monolink.net monph.com monsterlin.com montage-tech.com monternet.com montnets.com montres8.com monurhineas.com monv.com monxin.com moocollege.com mooctest.net moodmoon.com moodoon.com moogos.com mooiee.com moojing.com moojnn.com moolsun.com moomoo.com moomooequity.com moomootrustee.com moomv.com moon-insight.com moonbasa.com moonbio.com moonbitlang.com moonbt.com mooncell.wiki moonfly.net moongood.com mooninbox.com moonjer.com moonlian.com moonsec.com moonsees.com moonshot.ai moonstatistics.com moonton.com moontonapp.com moontontech.net moonvy.com moonvy.cool mooooc.com mooool.com mooore.net moooyu.com moore.ren moore8.com moorecat.com mooreelite.com mooreiot.com moorext.com moowo.com mooyuu.com mooyy.com mop.com mopaas.com mopair-erm.net mopcn.com mopei8.com moper.me moper.net mopicer.com mopin.cc mopo.com mopoint.com mopsky.com mopxz.com moqie.com moqiehome.com moqifei.com moqikaka.com moqilin.net moqing.com moqingtk.com moqipobing.com moqiwanba.com moqu8.com moquanad.com moquseo.com moraex.com morange.shop mordernstone.com morechinese.cc moreck.com moredian.com morefood.com morefreegame.com morefun-philippines.com morefuntengyun.com moregy.com moreless.io morelink.net moremeat.com morequick.net moresing.com morestep.com moretickets.com morevfx.com morewis.com morewiscloud.com morganstanleyhuaxin.com morgendesign.com morihei.net morketing.com morketinglearn.com morketingsummit.com morlab.com morning.work morningcore.com morninghan.com morninginn.com morningwhistle.com morong-elec.com morrisco.cc morstar.net moschat.com moseacg.com moseeker.com mosesenglish.com mosgcj.com moshanghotel.com moshanghua.net mosheng520.com moshengliang.com moshike.com moshou.com moshua.net moshuai.cc mosoga.net mossimo.net mossle.com mostch.com mostmob.com mostsd.com mosuzi.com motanku.com motel168.com motherchildren.com motic-electric.com motie.com motieimg.com motiezw.com motilive.com motimaster.com motimo.com motisky.com moto-one.com.hk moto17.com moto8.com moto8.net motomatu.com motooy.com motor-comm.com motormade.com motowoo.com motuo2.com mou.ge mou.ren mouldbbs.com mouldnews.com moulem.com moumi.com mounriver.com mountor.net mounui.com mouraeodor.com mouralanco.com mouratoriousi.com mousesquadca.org moushei.com mousycoder.com mout.me moutaichina.com mova-tech.com movcam.com movebroad.com movelaser.com movesky.net movie365.tv moviemore.com moviereviewtoday.com movit-tech.com mowan123.com moweather.com mowgz.com mowowo.com moxfive.xyz moxiai.com moxian.com moxiang.plus moxiaoying.com moxidongman.com moxin.me moxing.net moxingbk.com moxingfans.com moxingyun.com moxiu.com moxiu.net moxuangenet.com moyangmoyang.com moyann.com moyol.com moyoyo.com moypk.com moyubuluo.com moyugroup.com moyunteng.com moz8.com mozartsemi.com mozhan.com mozheanquan.com mozhedun.com mozhenhau.com mozichina.com mozigu.net mozillaonline.com mozillazg.com moziqing.com mozouyan.com mp.cc mp17.com mp333player.com mp4ba.com mp4cn.com mpaascloud.com mpacc.cc mpacc.com mpacc.net mpackchina.com mpaidata.com mpass.club mpbza.com mpcloudapp.com mpdn.fun mpdsj.com mph11.com mphdx.com mpiano.com mplus.tech mpmc-china.com mpnbenefits.download.prss.microsoft.com mpnbenefitsrtl.download.prss.microsoft.com mpnbenefitsrtluat.download.prss.microsoft.com mpoa.vip mpopkart.com mpqddg.club mps.live mpserverless.com mpsoft.net mpxiaomi.net mpxx.net mqant.com mqc168.com mqcoffee.com mqhospital.com mqikan.com mqmgroup.com mqqurl.com mqqy.com mqrouter.com mqsyr.com mqttdkx.vip mqttx.app mquanquan.com mqxpyy.com mqxww.com mqyu.com mqzoneapp.com mr-ping.com mr77.com mr91.com mrbanana.com mrbird.cc mrbook114.com mrcrm.com mrcywang.com mrdede.com mrdoc.pro mrdooku.com mrduan.com mrenbaike.com mrentea.com mrhallacg.com mrhe.net mrhs.cc mrjeke.com mrjiang.com mrjjxw.com mrlian.club mrlika.com mrlxc51byo.com mrmfsc.ltd mro365.com mro9.com mroall.com mrobao.com mrpyq.com mrqf.com mrqoxfvs.com mrqxs.com mrrvendor.com mrsdgg.com mrsingsing.com mrsjzt.com mrsta.com mrtoss03.com mrts.com mru-taste.com mrutaste.com mrvcdn.com mrw.so mrwish.net mrxiao.net mrxwlb.com mryunwei.com mryys.com mrzhenggang.com ms08067.com ms211.com ms315.com ms6666111.com msanjia.com msbank.com mscbsc.com mscdntrip.com mschcdn.com mscland.org mscodecloud.com msd-facing.com msddp.com msdkpass.com msdn.download.prss.microsoft.com msdn.hk msdnwogaosuni.com msdnxitong.com msdpmarathon.com msdprc.com msdprod-ad.download.prss.microsoft.com msfpay.com msftonlinelab.com msg.work msgamego.com msgcarry.com msgtjj.com msh2020.com mshandong.com mshao.com mshare.cc mshareservices.com mshchina.com mshishang.com mshot.com mshouyou.com mshw.net mshxw.com msits.com msjingmi.com msjpay.com msjy123.com mskoo.com mslmc.net msltbio.com mslzk.com msm.moe msmartlife.com msmbjp.com msndvr.com msny.cc msolok.com mspace.cc mspacecd.com mspharm.com msproduct.download.prss.microsoft.com msproductuat.download.prss.microsoft.com msstatic.com mst-jc.com mstatik.com mstchina.com mstxx.com msunland.com msweekly.com msxf.com msxf.net msxiaobing.com msxt.com msxxg.com msy5.com msyc.cc msyidai.com msyos.com msysk.com mszdld.com mszdld.net mszlyoozo.com mszmapp.com mszq.com mszsx.com mszxyh.com mt-bbs.com mt-viki.com mt-wire.com mt180.com mt3.com mt77.com mt888vip.com mtab.cc mtadvert.com mtadx.com mtaokj.com mtavip.com mtblj.com mtchome.com mtcn.net mtcnsoft.com mtcsys.com mtcx99.com mtcxsw.com mtcxx.com mtcyz.com mtdpai.com mtdpgame.com mtdz.com mte-shenzhen.com mtedu.com mtex.work mtfpos.com mtgchina.com mthlyp.com mthreads.com mti100.com mtiancity.com mtianshitong.com mtide.net mtime.com mtimg.net mting.info mtitest.com mtizt.com mtjiangsu.com mtk.com.tw mtk114.com mtkdy.com mtketang.com mtkgvip.com mtkpacker.com mtksj.com mtlyp.work mtm.mo mtmos.com mtmss.com mtmssdn.com mtmssdn0.com mtmt.tech mtmyw.com mtnets.com mtnets.net mtoou.info mtrmart.com mtschina.com mtsjgf.com mtspark.com mttlab.com mttsq.com mtty.com mtv123.com mtvip.cc mtw.so mtwine.com mtwl.net mtxshop.com mtxyx.com mtxzs.com mtyun.com mtzcjy.com mtzqb.com mtzscp.com mtzuichen.com mu69.com muaedge.com mubanjianli.com mubanwan.com mubixueyuan.com mubon.net mubu.com mubucm.com mucanzhe.com mucf.cc mucfc.com much001.com muchangqing.com muchcloud.com muchong.com mudanauto.com mudgj.com mudiaotx.com mudongguang.com mudotarot.com mudu.com mudu.tv muduhs.com mufengyue.com muftc.com muge.info mugeda.com muguang.me muguayuan.com muhai.net muhan.co muhan.ltd muhou.net muhoujiemi.com muhuo.chat muidar.com muimg.com muin.cc muinsoft.com mujiangquan.com mujihotel-beijing.com mujin.net mujj.us mujoy.sg mukenano.com mukewang.com mukongyun.com mukool.com mulangbrand.com mulanlake.com mulazim.com mulightapp.com mulinsen.com mulinyun.com multi-parking.com multiconceptslink.com multilingual-volc.com multimodalmatch.com multiplym.com mulunspring.com mumayi.com mumbuy365.com mumingfang.com mumunv.com mumuplayer.com mumuxili.com munantonio.com muncard.com mundane.ink muniao.com munling.com munue.com muomou.com mupao.com mupceet.com muqianyun.com muquan.com muquan.net murata-china.com murdermysterypa.com murl.tv murongtech.com murphysec.com murphyyi.com muryi.net muse.ltd muselab-tech.com musenxi.com muser168.com museradio.net musestudio.net musetransfer.com mushafa.net musialmarketing.com music-search.org music4x.com musicchina-expo.com musiccia.com musicd.cc musicdu.com musicedu8.com musiceol.com musicgw.com musicheng.com musiciansfriendsaleusa.shop musikid.com musiness.vip muslimwww.com muspost.icu mussgirl.store mustangbattery.com mustbull.com mustelanivalis.com mustshipdealyy.shop mustups.net musyder.com mutean.com mutian.net mutianyugreatwall.com mutieffect.com mutouxb.com mutouyu.com mutualhunter.com muwai.com muwaifanzhiliao.com muwenxi.com mux5.com muxin.fun muxiulin.com muyangkuaibao.com muyao.asia muyee.com muyer.com muyeseed.com muyewx.com muyidc.com muyingjie.com muyingzhijia.com muyuanfoods.com muyuanpharm.com muyuanwuliu.com muyuekj0.com muyuge.net muyun.work muyunsoft.com muzhi.us muzhibot.com muzhicao.com muzhifm.com muzhigame.com muzhiwan.com muzhun.com muziang.com muzigame.com muzijie.com muzisoft.com muziyueqiu.com muzsj.com muzuhui.com mvad.com mvashanghai.org mvhere.com mvoicer.com mvorgexv.com mvote.net mvpdj.com mvpmeta.com mvpmob.com mvprpg.com mvpsky.com mvs-intel.com mvtianshanlr.com mvwchina.com mvyxws.com mw.com mw1950.com mwadx.com mwave.tech mwcdns.com mwclg.com mwcloudcdn.com mwcloudcdn.info mwcname.com mwdfawg.com mweda.com mwemp.com mwjournalchina.com mwkj.net mwm.moe mwquicio.com mwrf.net mwrfabc.com mwstore.com mwtee.com mwtg.vip mww.so mwyzhcdn.com mwzhtc.com mx-china.net mx-fm.com mx-industry.com mx-xz.com mx007.com mx175.com mx3g.com mx520.com mxarts.com mxbc.com mxbc.net mxbiao.com mxchip.com mxddp.com mxde.com mxdia.com mxdjzj.com mxdmf.com mxdpark-gs.com mxdraw.com mxdraw3d.com mxdx.net mxew.com mxflutter.com mxfy.com mxgogo.com mxguan.com mxhaitao.com mxhichina.com mxifund.com mxitie.com mxitres.com mxj.cx mxjd.com mxjtedu.com mxjyxx.com mxk.cc mxkjai.com mxklchina.com mxmem.com mxnavi.com mxnxs.com mxnzp.com mxomo.com mxpharm.com mxqe.com mxria.com mxsa2178.club mxsyzen.com mxtcn.com mxtronics.com mxun.com mxw3.com mxweiqi.com mxwz.com mxxjh.com mxyinghang.com mxyn.com mxzgame.com mxzx123.net mxzzzs.com my-cpaas.com my-hlb.work my-imcloud.com my-le.com my-ndns.com my-qcloud.com my-summit.com my-tcloud.com my.st.com my0511.com my0511.net my0513.com my0534.com my0538.com my0551.com my0832.com my089.com my120.org my147.com my1616.net my22.art my22.fun my22.info my2852.com my2space.com my2w.com my399.com my3w.com my4399.com my510.com my51y.com my5v.com my68.com my7v.com my88316666.com my9166.com my91app.com my91game.net my9527.com my97.net mya92f.icu myagric.com myaijarvis.com myaiwecom.com myalicdn.com myalirtc.com myallvalue.com myanjian.com myanmarembassy.com myanmarembassybeijing.com myapp.com myapp.ltd myaqsh.com myarena7.com myarowanas.com myauth.us mybabya.com mybarrefitness.com mybdqn.com mybj.com mybjx.net mybluefox.com mybosc.com myboyan.com mybu.net mybwallet.com mybxg.com mycaidan.com mycaigou.com mycaijing.com mycar168.com mycar58.com mycaraok.com mycarbar.com mycardgame.net mychery.com mychery.net mychuguan.com mychunyan.net myckjr.com mycleanmymac.com mycloudstudy.com myclub2.com mycnc.org mycodes.net mycollect.net mycolorcity.com mycolorway.com mycoov.com mycos.cc mycos.com mycos.net mycos.org mycospxk.com mycosresearch.net mycoss.com mycoss.net mycoss.org mycplife.com mycreate.net mycyjg.com mydadui.com mydao.net mydatetime.info mydcis.net mydcyj.com mydeal.asia mydf.net mydical.com mydidadi.com mydigi.net mydigit.net mydigitex.com mydisk.work mydnns.com mydns8.com mydnser.com mydnspod.net mydnsw.com mydoc.io mydoc123.com mydown.com mydrivers.com mydyt.com myecer.com myechannel.com myechinese.com myeclipsecn.com myekp.net myeriri.com myex.cc myezdns.com myfans.cc myfdmg.com myfhospital.com myfrfr.com myfun7.com myfund.com myfushun.com mygaks.com mygame66.com mygame82.com mygame88.com mygisdel.com mygjp.com mygobatv.com mygolbs.com myguancha.com mygymchina.com mygzb.com myhard.com myhayo.com myhc.net myherocn.com myhexin.com myhithink.com myhjw.vip myhkw.com myhl-china315.com myhm.org myhomeok.com myhongzuan.com myhopu.com myhostadmin.net myhscodes.com myhuaweicloud-custom.com myhuaweicloud-date.com myhuaweicloud-koodrive.com myhuaweicloud-obs.com myhuaweicloud.com myhuilv.com myhuizhan.com myhwcdn.com myhwclouds.com myhwclouds.net myhxy.com myidc.club myider.com myie.me myie9.com myimis.com myip.la myiplay.com myir-tech.com myirtech.com myitit.com myityun.com myjh.net myjianzhu.com myjiedian.com myjob.com myjob500.com myjujing.com myk3.com mykans.com mykarry.com mykd.cc mykeeta.com mykeeta.net mykqyy.com mykscdn.com mykuaidi.com mykuaiji.com mylbabao.com mylguoji.com mylhh.com mylibs.org mylightsite.com mylike.cc mylike.com mylike120.com mylikechat.com mylikesz.com mylikeyk.com mylinkapp.hk mylitboy.com myliwu.net mylotushealth.com mylovehome.com mylsfw.com myluohan.com mym001.com mym195.com mymaitian.com mymanhua.com mymaudio.com mymember.ltd mymetal.net mymhotel.com myminapp.com mymlsoft.com mymofun.com mymoive.com mymova.com mymuwu.net mynatapp.cc mynb8.com mynee.com myo.ink myoas.com myoas.net myodatech.com myoed.com myoldtime.com myopenwrt.org myoppo.com myorbita.net myottad.com myouhua.com myouth.net myp17.com myp2pch.net mypaas.com myparallelstory.com mypcrun.com mypethome.com mypharma.com mypian.com mypiao.com mypiaojia.com mypitaya.com mypity.com mypiwik.com mypm.net myprad.com mypscloud.com mypsy365.com mypx.org myqbosuppportt.com myqcloud.com myqcloud.net myqee.com myqqdd.com myqqjd.com myr9.com myra2.com myrb.net myreadcloud.com myreadme.com myrice.com myrightone.com myrqjt.com myrtb.net myrtx.com myrunners.com mysbaojie.com mysecretrainbow.com mysecrettop.com mysemlife.com myseot.com myshipjob.com myshopex.com myshoptago.com myshou.com myshow360.net myshow800.com myshown.com mysinamail.com mysipo.com mysiteres.com mysm888.com mysmth.net mysongktv.com mysore-yoga.com myspain.org mysql360.com mysqlab.net mysqlpub.com myssl.com mystao.com mystarch.com mysteel.com mysteel.net mysteelcdn.com mysteelcms.com mysticalcard.com mysubmail.com mysupa.com mysuperdns.com mysvw.com mysybt.com myt126.com mytaizhou.net mytanwan.com mytaofun.com mytencentes.com mythbird.com mythcall.com mythcare.com mythidea.com mythroad.net mythsman.com mythware.com mythware.net mytianchang.com mytijian.com mytju.com mytokenapi.com mytokenpocket.vip mytoptown.com mytrix.me mytt.com mytv365.com mytvgame.com mytxly.com myuall.com myubbs.com myuclass.com myun.tv myunke.com myusmile.online myvipsalon.com myvs.download.prss.microsoft.com myvsoncloud.com myvsuat.download.prss.microsoft.com mywakao.com mywaymeta.com myweb888.com myweimai.com mywhh.com mywinch.com mywirebox.com mywll.com myworld6.com myxxts.club myxxts.com myxycjh.com myxypt.com myyerrol.xyz myyishu.com myyjs.com myyoudao.com myypark.com myyx618.com myyx915.com myyzd.com myzaker.com myzfw.com myzhenai.com myzhidao.com myzhiniu.com myzte.com myztxyy.com myzxsx.com myzxyy.com myzyy.com myzyzy.com mz186.com mz52.com mz6.net mz99.com mzbei.com mzbkw.com mzboss.com mzcsdf.com mzdscm.com mzeyes.com mzfanyi.vip mzfile.com mzfpay.com mzfsm.com mzfxw.com mzgroup.vip mzgtuan.com mzh.ren mzhb.com mzhen.com mzhfm.com mzhu8.com mzhujia.com mzjiacheng.com mzjinyan.com mzklg.com mzli.club mzlittc.com mzlwxw.com mzlx88.com mzlxcl.com mzmjyy.com mzone.site mzqbt.com mzrcw.com mzread.com mzres.com mzrmyy.com mzsdsyy.com mzsemi.com mzsky.cc mzsmn.com mzsrmyy.com mzssysmyxgs.com mzsvn.com mztgame.com mztspa.com mzty.com mztzzx.com mzuimg.net mzwu.com mzxstar.com mzxun.com mzy0.com mzyege.com mzyfz.com mzyjfcn.com mzyun.ren mzyunyin.com mzyz.com mzzhgcc.com mzzjw.com mzzyk.com mzzzn.work n-bros.net n.biz n0808.com n0vadesktop.com n12345.com n13.club n1b.com n2017.com n21.cc n21ce.com n283nser4cjz.com n3sd.com n459.com n5w.com n62f.vip n63.com n69.com n78785.com n7maufn.sbs n802.com n8soft.com n9z.net na.ci naaln.com nabluemedia.com naboyi.com nabucuo.com nac88.com nachuan.com nacuiwei.com nadianshi.com nadioutdoor.com nadu8.com naec-cn.com naeeo.com naeraxitang.com nagagame.net nagain.com nagar-setu.com nagcloudcs.com nagekuai.com nagezan.net nahuayuan.com nahuiyi.com nahuo.com nahuo8.com nahuo9.com naibabiji.com naibago.com naicha99.com naichabiao.com naideceas.com naids.com naifei.pro naifeistation.com naifenzhiku.com naijian.net nail-auto.com nails7.com naimal.com naimei.com naipan.com naiping.net naisuanbeng.com naitang.com naitta.com naiveadmin.com naiveblue.com naiwch.com naixi.com naixi.org naixuecha.com naiyouxuexi.com najingtech.com najyj.net nakedsail.com nakeli-biotech.com nakevip.com naknor.com nakong.com nalanchuanmei.com nalanxi.com nalati.com nalichi.com nalook.com name2012.com name321.net nameidi.com namejin.com namepre.com nameserver.fit namesilodns.com nami.com namibox.com namichong.com namihair.com namipan.com namiso.com namisoft.com namitiyu.com namkwonglog.com namoc.org nan-cable.com nan1688.com nana.center nanbeige.com nanbeijt.com nanbeiyou.com nanbeiyu.shop nanbushenghuo.com nancalelectric.com nancc.com nancharencai.com nanchigroup.com nanchu.com nanchunhz.com nandaauto.com nandasoft-its.com nandasoft.com nandiu.com nandu.com nandufoundation.org nanerjia.com nanfang-pump.com nanfangfood.com nanfen.com nanfu.com nanguache.com nanguakexue.biz nanguakexue.com nangualin.com nanguaxia.vip nanguowl.com nangxia.com nanhaibank.com nanhaicorp.com nanhaisw.com nanhaitoday.com nanhexinxi.com nanhua.net nanhuabx.com nanhuafunds.com nanhuangic.com nanhuazaobao.net nanhufund.com nanhujianshe.com nanhunnvjia.com nanhuwang.com nanjbjjt.com nanjet.com nanjianggroup.com nanjiaogroup.com nanjing-pharma.com nanjing-reagent.com nanjing.com nanjingboiler.com nanjingbtkt.com nanjingbyby.com nanjingchenxi.com nanjingelectric.com nanjinggaopeng.com nanjinghuihe.com nanjinghuojia.net nanjinglf.org nanjingludeng.com nanjingtianqi114.com nanjingttym.com nanjingxinxu.com nanjingyinuo.com nanjixiong.com nankaimba.org nanlangshengwu.com nanlew.com nanlingwater.com nanlingzr.com nanlong.com nanmodesign.com nanning-marathon.com nanninginfo.com nanningmhw.com nanningmuseum.com nanningnongjiao.com nanningrcw.com nanningtech.com nanningxiaoou.com nanningyouhua.com nanningyuexing.com nannjlnk.com nanobody-biolab.com nanochrom.com nanoeast.net nanoer.net nanoinglobal.com nanomicro.com nanomotions.com nanomxenes.com nanosic.com nanpowan.com nanpu.vip nanpua.com nanputuo.com nanqi.org nanqiangbusiness.com nanrentu.cc nanrenwa.com nanrenwo.net nanrenzhi.com nanshanfuzi.net nanshanlvyou.com nanshanski.com nanshe-tech.com nanshiw.com nanss.com nantaihu.com nantong-hst.com nantongfeixu.com nantonghua.net nantoujituan.com nanvi.com nanxi.me nanxiang.info nanxingmac.com nanxinwang.com nanxueqx.com nanxunfb.com nanyangcable.com nanyangdianlan.com nanyangzb.com nanyinwealth.com nanyuecloud.com nanyuenews.com nanyuetong.com nanzao.com nanzhougroup.com naobaocun.com naobiao.com naoda.net naoffer.com naokor.com naokr.com naominet.live naono.cc naosiling.com naozhong.net naozoejnnwzjaz.work napengzn.com napiantian.com naqing-tech.com naquan.com naquan.org naradafoundation.org naradahotels.com naradapower.com naris-china.com narkii.com narochina.com naruto.red narwal.com narwaltech.com nas-ya.com nascrew.com nase.tech nasenwangluo.net nasfreight.com nasge.com nasgetinfo.com nashwork.com nasimobi.com nasinet.com naslab.club nastcorp.com nasyeo.com nasyun.com nat123.com natachem.com natapp.cc natapp1.cc natapp4.cc natappfree.cc natashayana.shop natbbs.com natchecker.com natergy.com natfrp.com nationalchip.com nationalee.com nationsky.com nationstech.com nativosink.com natnps.com nattest-china.com naturali.io naturaltfc.com naturalvision.org nature-museum.net natureholisticwellness.com naturesvariety-china.com natywish.com nauac.com naupd.com nav-cn.com navchina.com navgnss.com navigastar.com navimentum.com navinfo.com naxcx.com naxiaozhu.com naxide.com nayatec.com nayei.com nayuansu.com nazarstudios.com nazhidj.com nazhilong.com nazo.fun nb-bailing.com nb-jf.com nb-jiale.com nb-medicalsystem.com nb160.com nb4ds7c13d.com nb591.com nba98k.com nbabm.com nbahero.com nbahi.com nbaidai.com nbakan8.com nball.cc nbamyl.com nbaoke.com nbappliance.com nbaqmq.com nbaqsj.com nbaqx.com nbaxiaoshuo.com nbbiao.com nbbjack.com nbbull.com nbbuxiutie.com nbcbd.com nbcentre.com nbchao.com nbchen.com nbcqjy.org nbcsgo.com nbctg.com nbcyts.com nbdavid.com nbdeli.com nbdeli.net nbdeyy.com nbdisco.com nbdkj.com nbdpress.com nbdyf.com nbdyyy.com nbegame.com nbegame.net nbelec.com nbenl.com nbfeyy.com nbfkgs.com nbfox.com nbgdjt.com nbginnovations.com nbgj.net nbgjwl.com nbgodo.com nbgong.com nbgree.com nbgy.com nbhao.org nbhechang.com nbhhgroup.com nbhky.com nbhxmr.com nbhysj.com nbidifund.com nbimer.com nbit6d.com nbjcae.com nbjcds.com nbjingyong.com nbjisi.com nbjit.com nbjlw.com nbjnw.com nbjoyo.com nbjttz.com nbjzjn.com nbjzzsw.com nbkaisheng.com nbkc-rp.com nbkdl.com nbkjcx.com nbkqyy.com nblhlyy.com nblhwy.com nblilong.com nblongzhan.com nblwhb.com nblyhy.com nbmai.com nbmedicalsystem.com nbmiao.com nbmidun.com nbmpzs.com nbmylike.com nbmyy.com nbmzyl.com nbnnn.xyz nbocc.com nbocqdm.xyz nbosco.com nbpathcent.org nbpmia.com nbpolytheatre.com nbqixing.com nbqwrc.com nbrawwater.com nbrcg.com nbrcw.com nbren.net nbrj.com nbrlzy.com nbruili.com nbscxh.com nbsdjyy.com nbsfgy.com nbshunjian.com nbshuoxue.com nbshzwyy.com nbsijian.com nbslkg.com nbslxh.com nbsmjt.com nbsp99.com nbsqbank.com nbsti.net nbstjt.com nbstrans.com nbsz.com nbszgd.com nbt.ren nbtlwl.com nbtobacco.com nbttbn.com nbtzjd.com nbtzsh.com nbuci.com nbudp.com nbunicom.com nbuser.com nbvps.net nbwaf.net nbwan.net nbwbw.com nbweldingtorch.com nbwelldon.com nbwetc.com nbwhg.com nbwskj666.com nbxdjt.com nbxiaoshi.net nbxry.com nbxsjg.com nbxsrc.com nbyang.com nbyeda.com nbyjrf.com nbyouth.com nbyyz.com nbyzyy.com nbzhongxin.com nbzhuzhai.com nbzjpc.com nbzsq.com nbzxgj.com nbzyenergy.com nc-bio.com nc189.net nc530.com ncarzone.com ncawzs.com ncboo.com ncc-cma.net nccqj.com nccurbanmayfair.com ncderuida.com ncdxbbs.com ncepujournal.com ncfcsa.org ncfgroup.com ncfimg.com ncfjj.com ncfwx.com ncfz.com ncgprq.com nch-bg.com nchq.cc nchtech.com nchycw.com ncidbj.com nciyuan.com ncjrailway.com nclqq.com ncmbio.com ncmem.com ncmtkj.com ncmtr.com ncnynl.com ncogvki.xyz ncpa-classic.com ncpc.biz ncpqh.com ncpssd.org ncq8.com ncqiche.com ncsdyyy.com ncshxd.com ncsjhf.com ncsxy.com ncsyco.com nctry.com nctvcloud.com nctzsj.com ncu.me ncvt.net ncvtmi.com ncwckj.com ncwsxh.org ncwsxx.com ncxhrc.com ncxinshou.com ncxuw.com ncyscb.com ncyunqi.com nczfgjj.com nczfj.com nczxst.com nczxwl.com nczy.com nd15.com nd56.com nd597.com ndapp.com ndbzteck.com ndcimgs.com ndcjl.com ndcpp.com ndcppx.com ndcyx.com nddaily.com nddnrm.com nddst.com ndfdc.com ndgchina.com ndgf.net ndgzy.com ndhx.net ndhys.com ndiip.com ndj520.com ndjtwl.com ndkhn.com ndkybio.com ndmh.com ndoo.net ndpharm.com ndsad.com ndsbbs.com ndscsoft.com ndser.net ndsyy.com ndszgb.com nduoa.com nduoshousi.com nduotuan.com ndvfxyvj.sbs ndxlj.com ndyt.com ndzfl.com ndzls.net ne01.com ne21.com ne365.com ne56.com neapme.com nearcharge.com neardi.com nearsnet.com nease.net neashow.com neat-reader.com neatifyapp.com neboer.site nebulogy.com neccsh.com necool.com nedfon.co nedigitals.com neeca.net neefood.com neegle.net neeinn.com neep.shop neeq.cc neets.cc neeu.com nei-mao.com nei.tm neigou.com neihan.net neihancommunity.net neihandiantai.com neihanfly.com neihang.net neihanshequ.com neimaowang.com neimenggugames.com neisha.cc neitui.com neituixiaowangzi.com neixiong8.net neko.pub nekoarch.cc nelkshuhe.com nellit.info nellit.net nellit.xyz nelson-textiles.com nelsonjulia.shop nelumbosp.com nengapp.com nengdarack.com nenggeimall.com nenghaoidc.com nengqiang.com nengrui.com nengshida.com nengshouwangluo.com nengyuanxx.com nenufm.com nenup.com nenzei.com neo-yiming.com neo.org neo1989.net neoap.com neobiochina.com neoease.com neofaith.net neofussvr.sslcs.cdngc.net neohytung.com neojos.com neolee.com neolix.net neomodulus.com neoremind.com neoscholar.com neoschool.com neosey.com neoyon.com nep-logistics.com nephele.tripcdn.com neptcn.com neptunus.com neqtahotelshanghai.com nercdtv.org nercel.com nerin.com nero-cn.com nerocats.com nerochat.com nerve-corp.com nervepotato.com nes-auto.com nesbbs.com nesmt.org nesoso.com nesox.com nespressochina.com nestgene.com nestlechinese.com nesyouxi.net net-add.com net-measure.net net-rope.com net-sharp.com net-swift.com net-times.net net0516.com net111.info net130.com net199.com net2345.net net263.com net767.com netac.com netandtv.com netat.net netbian.com netbirds.com netbooo.com netchina100.com netcoc.com netcolc.cc netconst.com netcoretec.com netcute.com netded.com netease-inc.com netease.com netease.im neteasegame.com neteasegame.net neteasegames.com neteasegames.net netentsec.com netesee.com netgamecar.com netge.com netherlandvcenter.com nethonghe.com netianshannu.com netiler.com netinfi.com netinfi.net netingcn.com netitest.com netkao.com netman123.com netnoease.com netor.net netpi.me netpoint25.com netposa.com netqd.com netsmell.com netspreading.com netstatic.net netsun.com netswise.com netsyq.com nett.to netvp.net network-hk.com networkbench.com networkesl.com networklinkpro.com networklo.com netzonesoft.com netzz.net neu-reality.com neucrack.com neuedu.com neunn.com neupaas.com neuqsoft.com neuroxiv.com neuroxiv.net neusemi.com neusncp.com neusoft.com neusoftmedical.com neutrontek.com neux.studio nevadaheladosjujuy.com nevem.com new-elegance.com new-mobi.com new-thread.com new0633.com new1cloud.com new253.com new669.com new7.com newacademic.net newaigou.com newaircloud.com newamigo.net newamstar.com newansha.com newapi.com newaq.com newasp.com newasp.net newayz.com newbakers.com newbandeng.com newbanker.com newbd.com newbeaconhotels.com newbeebook.com newbeebox.com newbenglish.com newbook8.com newcapec.net newcentral.com newcentury-edu.com newcger.com newchainbase.com newchieve.com newchinabeach.org newchinalife.com newcitygz.com newclasses.org newclouddenfender.com newcoder.com newcosemi.com newdao.net newday.me newdreamgroup.com newdroid.net newdruginfo.com newdu.com newdun.com newe.tv newelementchina.com newer2001.com newevcar.com neweyezs.com newft.com newglp.com newgscloud.com newharbour.net newhb.com newhbdoor.com newhopbattery.com newhopeagri.com newhopegroup.com newhqnotary.com newhtml.net newhua.com newikou.com newistock.com newjg.com newkunhua.com newland-edu.com newlandaidc.com newlandcomputer.com newlandnpt.com newlesson.com newlifex.com newlink.com newlixon.com newlongbj.com newlongma.com newluobo.com newmaker.com newman.mobi newmargin.com newmorehot.com newnanbao.com newnewle.com newniu.com newoasis.cc newoo.com neworiental.org neworldedu.org newposture.vip newqjsteel.com newrathon.com newrizon.com news-cdn.site news18a.com newsccn.com newscctv.net newseasoft.com newsgd.com newsgu.com newsgx.com newshengwei.com newshs.com newsighting.com newsing.com newskj.com newskj.org newskyunion.com newsletter-cn.com newsletter-nespresso.com newslqy.com newsmth.com newsmth.net newsmy-car.com newsmy.com newsmyshop.com newsn.net newspluse.com newssc.net newssc.org newstarpress.com newstartsoft.com newstjk.com newsungroup.com newsungroup.net newsv5.com newsxc.com newsxcar.com newsxy.com newsyc.com newszjk.com newtab123.com newtalentaward.com newtao.work newtimeai.com newtimevalve.com newtonghua.com newtop100.com newtouch-elec.com newtouch.com newtranx.com newtrip.com newume.com newupbank.com newvfx.com newvisionvc.com newvr.com newwatchesale.com newxing.com newxitong.com newxry.com newxue.com newyanshamall.com newyifagroup.com newyishi.com newyorkerdownunder.com newyorkluxurywatch.com newyoton.com newyx.net newzealandvscenter.com newzgc.com newzhizao.com newzhongyuan.com nexaparty.com nexmoe.com nexon.to next-bei.com next-playground.com nextclass.club nextclass.com nextday.im nextech-x.com nextjoy.com nexto2o.com nextpcb.com nextriskcontrol.com nextrt.com nextstudios.com nexttao.com nextvid.net nextworkshop.net nextyu.com nexus-holding.com nexus.dell.com nexusapex.cfd nexusedgeio.com nexushd.org neyetwatcher.com nezhu.com neznanskyphoto.com nf-ref.com nf.video nf108.com nf56.com nfbdc154.org nfc315.com nfcic.com nfcmag.com nfcreader.net nfcs-med.com nfcs-medical.com nfdx.net nffq.net nffund.com nfgjhr.com nfksjkfs.com nflchina.com nflsxl.com nfmedia.com nfmrtfv.com nfnews.com nfpeople.com nfqbyp.com nfs-china.com nfschina.com nfsyx.com nftrr.com nfvalve.com nfwl168.com nfxsy.com nfyeya.com nfyny.com nfyun.vip nfyy.com nfyyzcfy.com nfzhouyi.com nfzmy.com nfzzh.com ng-alain.com ng021.com nga.wiki ngaa.info ngaa.shop ngaacdn.com ngaacdn.net ngaagslb.com ngaagslb.net ngabbs.com ngacn.cc ngarihealth.com ngbbs.com ngc-marine.com ngcgears.com ngctransmission.com ngcz.tv ngedu.net ngfcyy.com ngfjkzps.com ngh6.com ngicer.com nginstar.net ngjjtg.com ngkjjt.com ngksz.com ngmap.com ngmco.net ngmyt.com ngnice.com ngnlink.net ngo.com ngotcmszh.com ngread.com ngrok.cc ngs1685.com ngswgs.com ngtravelercn.com ngty556.com ngwxw.com ngxn.com ngzyxx.com nh.com nh2h.com nh56.com nhaidu.com nhaidu.net nhcec.com nhcilab.com nhcsw.com nhd-mart.com nhdacrw.xyz nhdia.com nhdmd.com nhfyyy.com nhganggeban.com nhhongyi.com nhjjlt.com nhkaiyang.com nhkeysu.com nhlq.com nhmuni.com nhnexpo.com nhnst.com nhooo.com nhspd.com nhwa-group.com nhxz.com nhygkj.com nhzb.com nhzhaopin.com nhzj.com nhzs.com ni8.com ni93.com nianchu.net nianhuawan.com niankawang.com nianlingjisuanqi.com nianlun010.com niannz.com nianqin.cc nianqin123.com nianshao.me niansir.com niao95.com niaobulashi.com niaocms.com niaogebiji.com niaola.com niaoquan.fun niaosuangao.online niaowoclub.com niaoyun.com niba.com nibaguai.com nibaku.com nibj.com nibomu.com nic.ren nicaicheng.com nicaifu.com nicaifu.net nice-app.com nice-china.com nice1688.com nicebing.com nicebooker.com nicecdn.com nicefilm.com niceguo.com niceinno.com niceios.com niceisp.com nicekid.com nicelabel.cc niceloo.com nicenergy.com nicesnow.com nicetheme.xyz nicetuan.net nicewatch.cc nicexf.com niceyea.com nicezhuanye.com nichuanbo.com nickbussok.com nicksxs.com nicky1605.com nicolaszhao.com niconiconi.cc nicosu.com nicot-motor.com nicotine.vip nics365.com nicsbuy.com nicwind.com nidecms.com nidiandaojia.com nie.io nieapps.com niegobrand.com niegoweb.com nielsenccdata.tv nies.org niexiaotao.com nieyou.com nifdc.com nifengz.com nightanddaythegame.com nightcity.pub nightmare.press nihao.net nihaoafrica.org nihaodd.com nihaotv.net nihaotw.com nihaowang.com nihil.cc nihonngo.site niiam.com niiceda.com niiddm.com niimbot.com niiwoo.com nikanpian.com nike-inc.com.tw nike.host nike666.com nikefans.com nikkisoft.com nikkiup2u2.com nikkon-china.com nilai.com nileloan.com nimitzvac.com nimolife.com nimzx.com nindeli.com nine-rivers.com ninebot-link.com ninebot.com nineplaying.com nineroad.com ninesix.cc ninestargroup.com ninestarmall.com ninetylab.com nineya.com ning0370.com ningban.com ningbo-airport.com ningbocat.com ningboenlighten.com ningboexport.com ningbofy.com ningborunner.com ningbotianxia.com ningbotm.net ningbowater.com ningdo.com ningdong.com ninghao.net ninghuoban.com ningidc.com ningkangyuan.com ningkekeji.com ninglutech.com ningma.com ningmengdou.com ningmengyun.com ningshing.com ningtingche.com ningto.com nington.com ningxi.com ningxiacaijing.com ningxiagames.com ningxiahuangheyun.com ningxingxing.com ningzhe.net ningzhi.net ningzhishidai.com ningzhitec.com ninjacn.com ninjadq.com ninomiya.store nint.com nintaus.com ninthpalace360.com ninthpalace520.com nio.com nio08310lt.com nioapis.com niozhr.com niparts.com nipei.com nipic.com nipponcore.com nischina.org nishuoa.com nissmi.com nitaitag.com nittoseiki-cn.com niu-tu.com niu.com niua.com niuacc.com niuaniua.com niuap.com niubalun.com niubb.net niubibsn.com niubihonghong.net niubilai.com niubilety.com niubixia.com niubo.cc niuboli.com niucache.com niucdn.com niuche.com niuclass.net niucodata.com niudai120.com niudashu.com niudie.cc niufang.net niufun.com niug8.com niugame.net niugp.com niuguwang.com niuhuagong.com niujinniu.com niuk12020gi.com niukk.com niuming147.com niunai.com niuniu-dns.com niuniufund.com niuniutui.com niupiano.com niupianwang.com niupinhui.com niupu.com niuqia.com niurenqushi.com niurosoft.com niuschools.com niushe.com niushield.online niushoushan.net niutech.com niutk.com niutoushe.com niutrans.com niuwk.com niuxgame77.com niuxiaoer.net niuxyun.com niuyou5.com niuyuan.com niuza.com niuzhigongzuo.com niuzhu.com niuzhuan-test.com nivtc.com niwangwang.com niwodai.com niwodai.net niwota.com niwoxuexi.com nixi.win nixingtao.com nixwang.com niyingseo.com nizhan888.com nizi88.com nizkeyboard.com nj-anruitai.com nj-bl.com nj-bw.com nj-chishun.com nj-control.com nj-deli.com nj-dhl.com nj-gw.com nj-halfmarathon.com nj-hr.com nj-huaqiang.com nj-hust.com nj-jp.com nj-jy.com nj-kejin.com nj-kk.com nj-maici.com nj-nanhuai.com nj-newhope.com nj-qiyiguo.net nj-reagent.com nj-ss.com nj-tencentclb.cloud nj-tencentclb.com nj-tencentclb.net nj-tencentclb.work nj-test.com nj-tongrentang.com nj-tops.com nj-tq.com nj-xyzs.com nj-zhengze.com nj-zhongbo.com nj-zj.com nj0827.net nj12320.org nj127.com nj13z.net nj1937.org nj29jt.net nj303yy.com nj63.com nj87.com njabsw.net njaces.com njacme.com njajjt.com njajt.com njaline.com njanmu.com njaolian.com njaoti.com njatl.com njavc.com njbaisou.com njbaoxun.com njbdhb.com njbestway.com njbhec.com njbhhb.net njbiaochen.com njbj888.com njbnw.com njbpvi.org njbsby.com njbtkt.com njbx.com njbx.work njbytyq.com njc100.com njcangong.com njcaringmedical.com njcatv.net njcbcmjt.com njccwei.com njcdata.com njcedu.com njcgs.com njchanke.com njchengyi.com njchina.com njcitygas.com njcjby.com njcjszyy.com njcjzz.com njcky.com njcl-gear.com njclwlkj.com njcmotor.com njcmsj.com njcnmc.com njcomptech.com njctcm.com njcttq.com njcw.com njcwlk.com njcxj.com njcyt99.com njd1.com njdapaidang.com njdatang.com njdewo.com njdftl.com njdfwb.com njdfzg.com njdianyong.com njdiip.com njdndz.com njdnjt.com njdq-ld.com njdqgytg.com njdtyx.com njdzjcyq.com njdzn.com njeport.com njfdyy.com njfjkj.com njfk.net njfkdq.com njfklngl.com njflt.com njfmz.com njforge.com njfuruisi.com njfybjy.com njfzad.com njfzdc.com njfzjc.com njfzm.net njgaokai.com njgb.com njgcct.com njgcyy.com njgdbus.com njgdhb.com njgdjg.com njgdmm.com njgean.com njggk.com njgh.org njghes.com njghgf.com njgjj.com njgjngq.com njgjsj.com njgjyy.com njgljy.com njglobalielts.com njglsx.com njglyy.com njgn.com njgreen.net njgsmach.com njguangkui.com njgulan.com njguochu.com njguotong.com njguoxuan.com njgy.net njgyjx.com njgzm.com njhanrui.com njhbyl.com njhctest.com njhcyq.com njhd025.com njhddl.com njhdzy.com njhengda.com njhengyou.com njheyang.com njhgame.com njhightech.com njhipower.com njhjgs.com njhjyy.com njhkyq.com njhmmr.com njhnzx.com njhonest.com njhongfa.com njhonghu.com njhongya.com njhoutai.com njhrjt.com njhsjt.com njhszoo.com njhtg.com njhtjt.com njhuachuang.com njhuatian.com njhuatong.com njhuazhu.com njhunyan.com njhxnpx.com njhxzx.com njhy-elec.com njhy-tech.com njhzypiano.com njiabe.com njiairport.com njianzhan.com njibmfwq.com njicg.com njicia.com njiec.com njiig.com njimi.com njjbsc.com njjcbio.com njjdzl.com njjgfckyy.com njjgjs.com njjgzlgl.com njjhjt.com njjht.com njjiancai.com njjianguo.com njjiantian.com njjienuo.com njjifei.com njjknkyy.com njjn.com njjnrc.com njjnwzyy.com njjnzc.com njjrc.com njjrkj.com njjspzx.com njjst.com njjsxy.com njjsyy.com njjtjl.com njjttt.com njjtxx.org njjundong.com njjunpu.com njjuntong.com njjwkj.com njjxtz.com njjz.net njjzsensor.com njjzyxh.com njkaifeng.com njkaiguan.com njkcsj.com njkeeryq.com njkefayuan.com njkerun.com njkeystone.com njkhhb.com njkhly.com njkilter.com njklclear.com njkongte.com njkoopan.com njkpdz.com njkq.net njkskn.com njkzgjj.com njl114.com njlanwu.com njletop.com njlg56.com njlhzn.com njlianyang.com njlietou.com njlike.com njlingyun.com njliterature.org njlizhuo.com njljhy.com njljjy.com njljscl.com njlkjc.com njlndl.com njlofty.com njlonsen.com njloyalty.net njlrxx.com njlsw.com njltxx.com njluye.com njlyc.com njlyjt.com njlzsx.net njmama.com njmapp.com njmatx.com njmbwxzx.com njmdzx.net njmeisai.com njmes.org njmjs.com njmjzn.com njmkt.com njml120.com njmlxy.com njmoon.com njmsdk.com njmuseum.com njmuseumadmin.com njmwwl.com njnanlin.com njnanmu.com njnaws.com njndgl.com njnemin.com njnewgreen.com njnfwl.com njnhsx.net njnhyx.net njnii.com njningyi.com njnkxt.com njnkzz.com njnpfl.com njntdj.com njnwyy.com njnysoft.com njnzrs.com njodu.com njouman.com njpeptide.com njpkwater.com njpkzyy.com njpmp.com njpuao.com njpud.com njpujiang.com njq.net njqchyxh.com njqhjy.net njqihong.com njqinghai.com njqxrc.com njrbjd.com njrealway.com njrgrj.com njrjt.com njrmzx.com njrnk.com njrs119.com njrsks.net njrsxh.com njruipu.com njruisen.com njrunk.com njrzkj.com njsadz.com njsanhui.com njsdjt.com njsdyy.com njsech.com njsech.net njsenwo.com njservo.com njsfyb.com njshengde.com njshenglue.com njshsh.com njshsw.com njsimba.com njsjz.com njskxlyy.com njskxlyy.net njslaq.com njslawyers.org njsljy.com njsme.com njsmz.com njspkj.com njspkrmyy.com njsqxqyy.com njsrsyxx.com njsspeek.com njstht.com njstia.com njstudy.com njstx.net njstzbxxx.com njsujing.com njsunchem.com njsunlord.com njsunshine.com njswgs.com njswkj.com njsxfxh.com njsyue.com njsyxy.com njszxyy.com njszy.com njtaihong.com njtapery.com njtechsafety.com njteyun.com njtgdq.com njthgy.com njthsp.com njtjyq.com njtn.com njtobacco.com njtoyo.com njtqw.com njtrabon.com njtransplant.com njtrh.com njtrq.com njtst.com njuchem.com njued.com njuoe.com njupco.com njust.pub njuup.com njuwh.com njvcare.com njvkd.com njw88.com njwbjj.com njwcjx.com njwds.com njweixiao.com njweiyi6.com njwmbj.com njwpdi.com njwqqx.com njwrr.com njwsp.com njwtm.com njwtqx.com njwuhe.com njwww.net njwx.com njwz.net njwzjsw.com njxax.com njxcj.com njxfcft-tencentclb.cloud njxfcft-tencentclb.com njxfcft-tencentclb.net njxfcft-tencentclb.work njxiaochi.com njxizebio.com njxjjsjt.com njxkyy.net njxlhd.com njxlxx.com njxnjt.com njxsmz.com njxty.com njxueyun.com njxushang.com njxwyl.com njxxrc.com njxyyy.com njxzwh.com njyafeng.com njyaoze.com njycwy.com njydky.com njyec.com njyhhj.com njyhznkj.com njyjglxh.com njyjxh.com njyjzz.com njyouwin.com njypk.com njyqhj.com njyqkj0ksyz.com njyqmj.com njyspharma.com njysw.com njytian.com njytyy.com njyuanlang.com njyule.club njyulong.com njyuyuan.com njyxdq.com njyy.com njyy.name njyydl.com njyyhyxh.com njyysf.net njyz.net njyzdl.com njyzgz.com njyzmj.com njzb.net njzb.org njzdhotel.com njzdyq.com njzdyy.com njzec.com njzefeng.com njzfy.com njzhengluan.com njzhengyuan.com njzhituo.com njzhongtuo.com njzhsw.com njzhuce.com njzhzx.net njzikao.com njzj.net njzjamc.com njzkwiot.com njzkyy.com njzqzs.com njzrdq.com njzsgroup.com njzxgy.com njzxxyy.com njzychemical.com njzywangluo.com njzztyl.com nk-sh.com nk8686.com nkf-pharma.com nkiec.com nkjy.com nkks378.org nkscdn.com nkshw.com nkuytzv.com nkygty.com nkzy.com nlark.com nlbgt.com nlecloud.com nlhszc.com nliniz.com nlinkline.com nlktj.com nlogn.art nlpjob.com nlplab.com nls1853.com nlsc.group nlscan.com nlteck.com nlttms.com nlww168.com nlxn.com nlypx.com nlyzzzxrmyy.com nlzpw.com nlzpy.com nm178.net nm8yx.com nmb-bj.com nmbcp.com nmbfxy.com nmboat.com nmbxd1.com nmbyh.com nmcoo.com nmcpo.com nmet168.com nmgbaiju.com nmgchina.cc nmgczx.com nmgd.com nmgfood.net nmgfrank.com nmgfy.com nmggwy.org nmggyy.com nmghhjt.com nmghtszkj.com nmgjdxy.com nmgjkmc.com nmgjtjt.com nmgjxjy.com nmgjyzh.com nmgjzyxh.com nmglabs.com nmglawyer.com nmgmarathon.com nmgmzys.com nmgonline.com nmgrsksw.com nmgswkj.com nmgswtz.com nmgup.com nmgwhly.com nmgwxgs.com nmgyjszx.com nmimi.com nmjtzy.com nmjyl.com nmkjxy.com nmliao.cc nmlpa.com nmod.net nmpfkj.com nmrdata.com nmrxw.com nmsl.gs nmslwsnd.com nmt2.com nmtyxy.com nmufh.com nmvps.com nmwbk.com nmweidian.com nmxc.ltd nmxxprt.com nmzh.net nn-jinlun.com nn-tct.com nn.com nn12333.com nn1yy.com nn1zx.com nn2fy.com nn2yy.com nn3yy.com nn4yy.com nn4z.com nn5itt.com nn5yy.com nn6yy.com nn6zx.com nn7yy.com nn8yy.com nn9yy.com nnairport.com nnanyang.com nnayd.com nnbanrui.com nnbbrn.com nnbdfyy.com nnbnutritionchina.com nnboao.com nnbooster.com nnboyi.com nnbsjyk.com nnbtl.com nnbupin.com nnbyg.com nncbre.com nncc626.com nncg1688.com nnch.net nnchuangliang.com nnchyy.com nncj.com nncjnkyy.com nncjyy.com nncjzc.com nnclgs.com nncnjh.com nnctjt.com nnctzcfz.com nncwsoft.com nncxjh.cc nncydyf.com nncytz.com nndache.com nndascom.com nndayuan.com nnddssaaddeeyy.com nnddxd.com nndegas.com nndims.com nndj168.com nndjg.com nndjxcl.com nndsj.co nndssk.com nnduyi.com nndya.com nndylm.com nndz3xu7.com nnedqp.com nnedu.com nnewn.com nnfae.com nnfcetyy.com nnfcxx.com nnfdys.com nnflkyz.com nnflzyyy.com nnfrp.com nnfsw.com nnfwwb.com nnfwzl.com nngdjt.com nngeo.com nnggzxc.com nngj.com nngjj.com nngjjx.com nnglbj.com nngljc888.com nngreenscm.com nngrhj.com nngtbw.com nnguphoto.com nngxqscy.com nngyds.com nnhaidong.com nnhaoyuan.com nnhbsl.com nnhccc.com nnhccl.com nnhcszc.com nnhengfu.com nnhh8.com nnhhhbgs.com nnhkdz.com nnhlgx.com nnhltz.com nnhmcj.com nnhongbei.com nnhpbbs.com nnhqcy.com nnhqjd.com nnhrsip.com nnhtsy.com nnhuaxin.com nnhuaxiong.com nnhuishi.com nnhwxh.com nnhxgg.com nnhxwygs.com nnhytyy.com nnhzkj888.com nnhzt.com nnippsp.com nnit30.com nnjajt.com nnjajt.xyz nnjdgl.com nnjgsd.com nnjht.com nnjhwy.com nnjiangmei.com nnjieshuo.com nnjingchu.com nnjingda.com nnjingyuan.com nnjiuji.com nnjiuzhidu.com nnjj120.com nnjjk.com nnjjtgs.com nnjkjzs.com nnjkwy.com nnjl.com nnjmskj.com nnjnwg.com nnjr.co nnjsdsoft.com nnjsgy.com nnjsypx.com nnjsza.com nnjszlsb.com nnjt.com nnjtjt.com nnjtkt.com nnjtyq.com nnjuheli.com nnjunliang.com nnjxbs.com nnjy100.com nnjzd.com nnjzybl.com nnkailong.com nnkcy.com nnkeerlab.com nnkeruan.com nnkeyuan.com nnkhjq.com nnkin.com nnkj77.com nnkqfs.com nnkxnz.com nnlanfang.com nnlfcm.com nnlgjt.com nnlib.com nnljhb.com nnljoa.com nnljsw.com nnlsbl.com nnlvdu.com nnlwoo.com nnlxart.com nnlxs.com nnlyjp.com nnlzhs.com nnmama.com nnmhzc.com nnminghe.com nnmingyuanyun.com nnmjm.com nnmsjdgs.com nnmutong.com nnmyst.com nnmzfy.com nnmzof.com nnn.vip nnn666.com nnnen.com nnnews.net nnngs.com nnnntv.com nnnuo.com nnpckj.com nnpma.com nnpml.com nnpnzx.com nnpp.vip nnpurapple.com nnqh.net nnqianfan.com nnqmjy.com nnqsk.com nnrbsoa.com nnrc.net nnrfjc.com nnrig.com nnrkz.com nnrongjie.com nnruixin.com nnrxzm.com nnryf.com nnrzfw.com nnsanke.com nnsatai.com nnsbc.com nnsc6.com nnscsy.com nnsdygs.com nnsenhong.com nnsftz.com nnsg520.com nnsgx.com nnshengan.com nnshenghua.com nnshzhg.com nnsirui.com nnsjcgs.com nnslx.com nnslzy.com nnsmk.com nnsmy.com nnsqr.com nnsrjsnzp.com nnssyjs.com nnstbss.com nnsugar.com nnsuoyu.com nnsupeng.com nnswdx.com nnsxd.com nnsygs.com nnsylq.com nnsymy.com nnsynldc.com nnsynqzyyy.com nnsz.com nnszwl.com nnt0.net nntaichu.com nnthink.com nntlj.com nntlyy.com nntobo.com nnttsoft.com nntuobang.com nntxw.com nntzgz.com nnups.com nnwb.com nnwhg.com nnwilking.com nnwitkey.com nnwk.net nnwow.com nnwrxd.com nnwsgl.com nnwtgs.com nnwxtzgs.com nnwysc.com nnwytl.com nnxchda.com nnxcx.com nnxczxjt.com nnxdj.com nnxfz.com nnxiehehospital.com nnxinxiang.com nnxiyun.com nnxjtf.com nnxknkyy.com nnxl.net nnxmbh.com nnxqy.com nnxsypco.com nnxt.net nnxxzl.com nnybf.com nnybskq.com nnych.com nnydcs.com nnyfjc.com nnyhjc.com nnyhtx.com nnyhxl.com nnyingxuan.com nnyiya.com nnyjpco.com nnykx.com nnylhz.com nnynrc.com nnyongzhou.com nnysart.com nnyunying.com nnyy17.com nnyypc.com nnyyq.com nnyyyy.com nnzc.net nnzdbz.com nnzgh.org nnzgkj.com nnzhaoguan.com nnzhenyukj.com nnzhnm.com nnzhuoli.com nnzjjckj.com nnzjqc.com nnzksy.com nnzkzs.com nnzljx.com nnzmyx.com nnzn1.com nnzp.com nnzp.net nnzp8.com nnzw168.com nnzxtx.net nnzyjob.com no-mad-world.club no1news.com no8ms.com noahedu.com noaheducation.com noahgroup.com noahhealthcare.com noahpharm.com noahsnail.com noahsoft-vn.com noahteck.com noahwm.com noarter.com nobb.cc nobel120.com noblefashion.hk nobleliftgroup.com noblove.com nocang.com nocare.com noclyt.com nocobase.com nocode-tech.com nocode.com nocode.host nod32jihuoma.com nodcloud.com node-is.green node1link.xyz nodeing.com nodejs999.com nodekey.com nodelayusdtcasino.com nodeme.site nodepacific.com nodpcba.com noeic.com nohost.pro nohup.cc noipto.host noirphoenix.studio noizztv.com nokeeu.com nokia-sbell.com nokia.press nokia88.com nokurack.com nolanchou.com nolibox.com nologo.tech nolovr.com nomax.vip nome.com nomuaexander.com nomuaheridan.com nomuamarcia.com nomura-nset.com nomuraoi-sec.com nonfemet.com nongbaike.net nongbaotong.com nongcun5.com nongcundating.com nongfadai.com nongfuspring.com nonggan.com nonghushi.vip nongji1688.com nongji1958.com nongji360.com nongjiao.com nongjiaoyun.com nongjitong.com nongjx.com nongkeyu.com nongli.com nongli.net nonglirili.net nongmintv.com nongnet.com nongpin88.com nongplay.com nongshang.com nongxinyin.com nongyao001.com nongye.tv nongyedns.com nongyelu.com nongyemen.com nongyie.com nongyu.net nonobank.com noobboss.com noobkrf.com noobmb.com noobn6.com noobofficial.com noobsb.com noobshanhe.com noobtime618.com noobvip.com noobwatches.com noobyard.com noobyy.com noobzz.net noodba.com noogel.xyz noomuuhapmav.com noonaspizza.com noonnoora.com noontec.com noops.me nooshen.com nootoo.com nooxion.com noposion.com nor-land.com noratechpharma.com norchem-pharma.com nordicic.com nordicways.com nordikr.com nordkete.com nordonfire.com nordritools.com norinco-vehicle.com norinco.com norincogroup-ebuy.com norionpro.com norislam.com noritzd.com normanes.com normar8888.com normcore.com normstar.net norroybioscience.com norsencn.com north30degrees.com northbundforum.com northdy.com northernlights.ink northland-bio.com northsoar.com northtexascribs.com northtimes.com nosec.org nosoul99.com nossmoke.com nosub.net nosuchfield.com nosugar.tech nosugartech.com not3.com notbucai.com note52.com notedeep.com notetao.com notetech.org notification-list.com notion.pet notonlymoon.com notrisk.com nouriz.com nouvelles247.com nova-test.com novaicare.com novapps.com novastagepharma.com novastargame.net novaxinli.com novel-supertv.com novelbio.com novelfm.com novelfmpic.com novelfmstatic.com novelfmvod.com novell.me novelquickapp.com novelquickapppic.com novemideas.com novo-auto.com novo-biotech.com novocool.com novocranes.com novodriv.com novogene.com novosns.com novotelcitygate.com novots.com novtecgroup.com novtium.com now-cn.net nowapi.com nowbeta.com nowchip.com nowcndns.com nowcoder.com nowcoder.net nowcoder.org nowec.com nowhttps.com nowmsg.com nowo.com nowodds.com nowre.com nowscore.com nowtop.net nowxz.com noxgroup.com noxpadelsale.com noxxxx.com noyes88.com np176.com npbbs.net npbeta.com npc233.com npcka.com npedi.com npfls.com nphoto.net npi-sh.com npilasers.com npjzjx.com nplusgroup.com nplusgroup.net npmmirror.com npmss.com npmtrend.com npoall.com npodevelopment.org npp-battery.com npp.cc npqx.com nprc.net npsdyyy.com npsel.com nptpark.com nptparking.com nptwedding.com npub.net npuxs.com npxsw.com npz.com nq6.com nq8.net nqctek.com nqez.com nqjt.com nqlai.com nqqpp.com nqyz.org nr-esc.com nrb.cc nrbbearing.com nrdzqwd.com nrec.com nri-beijing.com nrisc.com nrmchina.com nrmtc.com nrsfh.com nrsg.net nruan.com nrwspt.com nrzb0.com ns-china.net ns1.hk ns1011.com ns168.net ns222s.com ns365.net ns5n.com ns6s6.com ns8d.com nsbdjssy.com nsbeta.info nsccsc.com nschctw.com nscloudwaf.com nscscc.com nscscc.org nsd-at.com nsdfx.net nsdic.com nsdszsyxx.com nsdt.cloud nseac.com nsecsoft.com nseia.com nsemii.com nsfocus-sase.com nsfocus.com nsfocus.net nsforce.net nsfz.net nsfzqhkg.net nsgz.net nshen.net nshzpks.com nsig.com nsini.com nsiqoaks.com nsisfans.com nsiuqsjaza.com nskfagcn.com nsknsk.com nskwj.com nsm-electrical.com nsmodel.com nsoad.com nsqtlcdn.cc nsqtlcdn.info nsrcup.com nsrfww.com nsrjlb.com nsrmarine.com nsseii.com nssf.work nsshare.com nsstream.com nsswa.org nstfhg.com nstggroup.com nsuci.com nsuuu.com nsw58.com nsw88.com nsw99.com nswhj.com nswscp.com nswyun.com nswzs.com nsxdns.com nsxww.com nsydt.com nsyhwakrkq2.com nsynu.com nszmz.com nszone.com nszxsyxx.com nszynd66ggbcx.com nt.app nt.cc nt56.net nt6y.com ntalker.com ntaow.com ntc-lft.com ntc.sh ntcaac.com ntcchina.com ntce.com ntcfy.com ntdingke.com ntdjk.com ntdsyy.com ntdvf.com ntes53.com ntesmail.com ntesunn.com ntfabu.com ntfan.com ntfegd.xyz ntflk.com ntfsformac.cc ntfssh.com nthcl.com nthfw.com nthongda.com nthysp.com nti56.com ntiee.com ntjgjt.com ntjgpx.com ntjhbw.com ntjhzy.com ntjob88.com ntjoy.com ntjsxy.com ntjymall.com ntjzyxh.com ntkfqjy.com ntlcjd.com ntmlxm.com ntmyexp.com ntneuro.org ntp.felixc.at ntp123.com ntpcb.com ntpcn.com ntpharma.com ntptimeserver.com ntqcct.com ntqfdq.com ntrailway.com ntrc.com ntrcb.com ntrun.com ntsanxin.com ntsgx.com ntsuye.com nttui.com ntwikis.com ntwzy.com ntxx.net ntxz.net ntyodspt.com ntyodspt.net ntyswlkj.com ntyy888.com ntzhcs.com nu1l.com nu36.vip nuan.chat nuan.io nuan.org nuancaixs.com nuancepharma.com nuandao.com nuanjiayuan.com nuannuanapp.com nuannuanzu.com nuanpaper.com nuanque.com nuanshi100.com nuantingapp.com nuantong8.com nuanyuehanxing.com nubb.com nubia.cc nubia.com nubia.mobi nucc.com nucleisys.com nuctech.com nuedc-ti.com nuedcchina.com nufans.net nufrr.com nug08010lu.com nug08011lu.com nug08030lu.com nug08031lu.com nuhcpf.com nuhighbio.com nuist.pro nulipin.com nullice.com nullno.com nullprivate.com num1dns.com num2020.com numans.cc numemory.com nunaios.com nuo5.com nuoan.com nuobaike.com nuobeiliao.com nuobeirack.com nuobz.com nuocdn.com nuodaguandao.com nuodefund.com nuodepharm.com nuoder.com nuoerchina.com nuofanpay.com nuoguangsh.com nuohotel.com nuoji.com nuoke147.com nuomi.com nuomicikoi.com nuomili.com nuomiphp.com nuomisi.com nuona.com nuonuo.com nuoshell.com nuoshou2023.com nuosike.com nuoxun.com nuoyahao.com nuoyasite.com nuoye.xyz nuozhan.com nuozhensh.com nuptec.com nuqixi.com nurotron.com nursesky.com nusudia.org nuszar.xyz nutdh.com nutra-max.com nutriease.com nutriera.com nutrilite-farm.com nutsbp.com nutspace.com nutstart.com nutstore.net nutstorehq.com nutzam.com nuvoltatech.com nuvoton-m0.com nuvoton-mcu.com nuxtv.com nuxue.com nuyoahbk.com nv2118.com nvans.com nvcam.net nvcong.com nvgate16.nvidia.com nvhaiz.com nvidia-china.com nvkan.com nvpuse.com nvpuwo.com nvsay.com nvshenfan.com nvsheng.com nvshengjie.com nvshuyun.com nvsip.com nvwu.com nvyouguoji.com nvzhanshen.com nvziwu.com nw-host.com nw0898.com nwbiotec.com nwct.me nwdlink.com nweon.com nwncd.com nwshotel.com nwzg.net nx-sc.com nx.cm nx12346.com nx5.com nxadmin.com nxcells.com nxcrb.com nxdns.net nxeduyun.com nxengine.com nxez.com nxgangyi.com nxgjbyy.com nxgtjt.com nxgyzb.com nxhongshanhe.com nxin.com nxist.com nxit.us nxjwl.com nxlayer2.com nxls.com nxly766.com nxmy.com nxnba.com nxnews.net nxnmedia.com nxnresearch.com nxny.com nxpta.com nxrmyy.com nxrrvmy.com nxrte.com nxruixin.com nxsjgd.com nxstjt.com nxsyy.com nxtf.net nxtianshangb.com nxwly.com nxxdns.com nxxh.net nxxhr.com nxxinhaoyuan.com nxxllt.com nxxmqy.com nxxzyimg.com nxyqs.com nxyqs.net nxyxh.net nxyy.asia nxzcah.com nxzhnyyjy.com nxzwnews.net ny-yy.com ny1988.com ny2000.com nya.ink nyaacat.com nyat.app nyato.com nybai.com nybaidu.net nybw.net nybyggx.com nyckidsclub.com nyd7y.com nydsrrsh.com nyefy.com nyfzx.com nyhnx.com nyhpyq.com nyjvbs.xyz nyjy-china.com nylingshang.com nync.com nypd520.com nyrmyy.com nysenba.com nysgjgs.com nyshipyard.com nyshszh.com nyshui.com nysswq.com nywz.net nyxg.vip nyxgs.com nyxiecheng.com nyxlzy.com nyxr-home.com nyxx365.com nyxz166.com nyyfy.com nyzdjj.com nyzy.com nz86.com nz998.com nzb555.com nzbdw.com nzcxh.com nzggroup.com nzghotel.com nzhnb.com nziku.com nzkd.com nzl09250oa.com nzlw.com nzmice.com nzqyowk.com nzrlzy.com nzsensing.com nzsiteres.com nzw6.com nzwgs.com nzxww.com nzygyt.com o--o.win o-home.com o-hr.com o-netcom.com o-star.cc o0-2.com o02231aokk.com o02251aokk.com o03011aokk.com o03080aokk.com o0310o.com o03121aokk.com o0o0w.com o136.com o2123.com o2ee.com o2moment.com o2o4.com o2oa.net o2obill.com o2ocms.com o2ocn.com o2oexpo.com o2onet.com o2packs.com o2pcn.com o2ting.com o365cn.com o37o.net o3ndix.com o571.com o6s.net o7h.net o8u3n4q7fe.com o92mv1ik.baby oa025.com oa0351.com oa7day.com oa8000.com oa8858.com oabc.cc oabg.net oachee.com oacrm.com oact.net oadz.com oafocus.net oahelp.com oahelp.net oaimai.com oait360.com oak-amc.com oaloft.com oaloft.net oalur.com oameibang.com oaooa.com oaqi.com oasesalliance.com oasistry.com oatenglish.com oatos.com oauto.com oayqwkhg.com oaz.cc obagame.com obai.cc obaku.com obeesmedia.com obeishi.com obesu.com obetal.com obins.net obj.cc obj6.com objccn.io objcer.com objcoding.com obkoro1.com obolee.com oborad.com obowin.com obrao.com obsapp.net obsbot.com obsidian-display.com obsworks.com obtelecom.com obyee.com ocahs.com ocale.net ocamar.com ocar.tv occasionishoes.club occpay.com ocd120.com oceanaircorp.com oceanbase.com oceanbites123.com oceancloudapi.com oceancus.com oceandatas.com oceando.cloud oceanengine.com oceanhood.com oceanol.com oceanorama.com oceanpine.net oceanplayable.com oceantime.org ocent.net ocetest.com ocfess.com ocft.com ochirly.com ochsystems.com ocic-static.com ocici.com ocideal.com ocimg.com oclean.com oclkj.com ocn187.com ocnttv.com ocpuritech.com ocsjs.com ocsp.us.cdnetworks.com ocssaas.com oct-asia.com oct-cts.com octbay.com octcommercial.com octeshow.com octgulou.com octholding.com octhotels.com octinn.com octmami.com octo.fm octocathub.com octoparse.com octopus31.com octopusgame.com octre.com octsszj.com octsunshine.com octwuhan.com oculist.net ocwms.com ocypo.org odaily.news odalong.com odao.com odeasports.com odict.net odinichina.com odinjc.com odinjilin.com odinliu.com odlkj.com odohx.org ody8.com odypw.com odyzj.com oealy.com oeasy.org oec365.com oecr.com oectib.com oedtech.com oedun.com oeebee.com oeeee.com oejournal.org oelove.com oemao.com oemhouse.com oemnew.com oempromo.com oemresource.com oemsoc.download.prss.microsoft.com oemsocuat.download.prss.microsoft.com oemssl.cn.cdn.cloudflare.net oeob.net oepkgs.net oepkgs.org oesell.com oetsi.com of3d.com ofcard.com ofcms.com ofdreader.net ofenka.com offcn.com offer-wow.com offerpluscn.com offersloc.com offerstrack.net office-cn.net office-kagu1.com office68.com office8hour.com officeaid.com officeaid02.com officebai.com officebay.net officecdn.microsoft.com officectrl.com officemkt.download.prss.microsoft.com officemktuat.download.prss.microsoft.com officese.com officesoftcn.com officeweb365.com officezhushou.com officezy.com offodd.com offshoremedia.net ofgame.net ofidc.com ofo.com ofopp.com ofpay.com ofpay365.com ofuns.com ofweek.com ofweek.net ofyoo.com ogame3.com ogaoxiao.com ogccdn.com ogl-dragon.com oh100.com oh4k.com ohausyt.com ohedu.net ohgnylbp.shop ohipic.com ohltjt.com ohltk.com ohneen.com ohohklp.xyz ohqly.com ohtly.com ohtpc.com ohuam.com ohyee.cc oi-wiki.com oi-wiki.org oi3g.com oia05041klq.com oia05050klq.com oia05051klq.com oiaqye7985.com oicat.com oicp.io oicp.net oicp.vip oicq88.com oicto.com oidchina.org oigcn.com oigps.com oiine.com oiinhand.info oilchem.net oilcn.com oildigital.com oilepay.com oilmooc.com oinbag.com oincp.com oinva5yl.com oioidesign.com oioiok.com oioj.net oishi-tm.com oiwas.com oiz611.com ojcdn.com ojhdt.com ojidacp.com ojkjt.com ojpal.com ok-meeting.com ok-skins.com ok0415.com ok06.com ok096.com ok100i.work ok123.com ok126.net ok1616.com ok165.com ok168.com ok183.com ok206.com ok3w.net ok619.com ok888883.com ok9624.com oka-vip.com okaapps.com okad.com okada-china.com okadwin.com okair.net okaoyan.com okayapi.com okaybio.com okbao.com okbase.net okbmf.com okbuy.com okcard.com okcdnns.com okchang.com okchexian.com okcxo.com okdai.com okdcc.com okdd.net okemu.com okex.vip okeycar.com okfang.com okgoes.com okhimalayanzi.com okhqb.com okidc.com okideaad.com okii.com okjc.one okjike.com okjk.co okk123.com okki.com okktee.com oklaapp.com oklink.com oklinklink.com okmao.com okmart.com okmyapp.com okng.com okokw.com okooo.com okoooimg.com okplife.com okpp01040.xyz okpush.com okr.com okrecovery.com oks.ltd oksec.net oksun.com oksvn.com oktamall.com oktjy.com oktools.xyz oktranslation.com oktukids.com okuer.com okuma-byjc.com okvnet.com okweb.info okwuyou.com okxr.com okyueche.com ol-cdn.com ol-img.com olabo.net olacio.com olakeji.com olami.ai olatop.com olcdn.com oldboyedu.com oldcat.me oldding.net oldj.net oldmanemu.net oldmantvg.net oldpan.me ole-vod.com olecn.com oleoad.com oli-wolong.com oliannews.com olidun.com olinone.com olipharma.com oliver.ren oliveryang.net ollomall.com olmhedbg.cc olo4.com olokitchen.com oltfm.com olwsz.com olxd.com olympicmuseum-nj.org olymtech.com olymvax.com olys88.com olzz.com omacloud.com omarea.com omarte.com omaten.com ombuy.com omccsh.com omchain.com omcube.com omedsc.com omeet.cc omegatravel.net omegaxyz.com omen.com omgxy.com omiaozu.com omicsclass.com omicshare.com omicshare.net omifanyi.com omigr.com omlzx.com omlzz.com ommoo.com omni-pharma.com omnijoi.com omnivision-group.com omnshoes.com omobi.cc omooo.com omooo.net omos88.com omowork.com ompchina.net ompower.cc omronmed.com oms-elevator.com omsheji.com omsmy.com omso2o.com omycar.cc omyerp.com on-sun.com onaliyun.com oncanyin.com onccc.com oncdp.com onceai.com onceoa.com onche.net oncity.cc one-all.com one-cdn.com one-netbook.com one-punch.win one.edu.kg one918.com onealert.com oneapm.com oneasp.com onebash.com onebiji.com onebox.site onebrowser.net onebuygz.com onecoder.site onecommunity-asia.com oneconnectft.com onedi.net onediankeji.com onedict.com onedns.net oneflys.com onefoot365.com onegg.site onegobrand.com onegreen.net onehome.me onehousesh.com oneic.com onein.com oneinf.com oneitfarm.com oneiwff.com onekey.cc onekeyghost.com onekeyrom.com oneleafchina.com onelic.work onelife-love.com onelinkplus.com onelnk.com onemtservers.com onenice.tech oneniceapp.com onenoter.com oneonewrite.com oneplus.com oneplus6666.com oneplusbbs.com oneplusmobile.com onescorpion.com oneself.icu oneshao.com onesight.com onespacechina.com onesun-china.com onething.net onethingc.com onethingcloud.com onethingd.com onethingn.com onethingpcs.com onethingtech.net onetop.net onetts.com oneuedu.com onev.cat onevcat.com oneway.mobi onewedesign.com onewo.com onewos.com onewsimg.com onewsvod.com onewtech.com onexinli.com onexmail.com onexunge.com oneyac.com onezapp.com onezh.com onfun.net ongoalconveying.com ongoaltech.com onijiang.com onishi-cn.com onixhiend.com onjobedu.com onkocares.com onlady.net online-cmcc.net online-edu.org online-phaidon.shop onlinecn.com onlineding.com onlinedown.net onlinekr.com onlinenic.net onlinesjtu.com onlinesurvey.work onlinexijiang.com onlly.com onloon.net only-memory.com only-moment.com only4.work onlyedu.com onlyedu.net onlyeduit.com onlygamefans.com onlyidc.com onlylady.com onlyling.com onlyliuxue.com onlymr.com onlypat.com onlyred.net onlyrobotedu.com onlyrubberparts.com onlystem.com onlywem.com onnets1.xyz ono-bbb.com onochem.com onrunningshop.com onsiteclub.com ontall.com ontheroadstore.com onthetrip.com onthink.com onwaf.com onwear.net onwork.com onwsw.com onyealink.com onyi.net onyuan.com onyxcina.com onyxwater.net oo14.com oo365.com ooamjs.work oobao.net oocct.com oocheoo.com ooclab.com oodii.com oofont.com oofos-sandals.net oogcw.com oogps.com oogsy.com oohdear.com ooiii.com oojsq.com oolap.com oomake.com ooniu.com oonne.com oooccc.com ooofoo.com ooogo.com oooiove.com ooojogo.com ooomm.com ooooai.com oooooooooo213.com ooopic.com oopswow.com oopz.vip oortgslb.com oortos.tech ootu.cc oouee.com oouyan.com oov.cc ooxoo.net ooxxc.com ooyyee.com op86.net opadlink.com opahnet.com opaidb.com opal-qt.com opalhk.com opark.com opatseg.com opcool.com opdown.com opectek.com open-ct.com open-douyin.com open-falcon.com open-falcon.org open-open.com open-search.org open-verify.cc open1024.com open147.com open189.net openaboc.com openadx.com openai.wf openailab.com openanolis.org openapp.run openasic.org openatom.club openbayes.com openbcs.com opencas.org opencitybrain.org opencloudgpt.online opencloudos.org opencloudos.tech opencourt.vip opendatalab.com opendns123.com openedv.com openerp.hk openeuler.org openeuler.sh openew.com openfans.org openfde.com openfrp.net opengame0.com opengcc.org opengslb.com openharmonyproject.com openhippy.com openinstall.com openinstall.io openintelliedge.tech openke.net openlanguage.com openlaw.work openlayers.vip openlearning.com openlink.cc openloong.org openloongson.org openluat.com openmidas.com openmmlab.com openmv.cc openos.org openqa.com openrasp.com openrasp.info openrasp.net openrasp.org openredcloud.com openrice.com openrtbadx.com opensoce.com opensplendid.com openssw.com openswap.space opentrust.net openuc.com openvela.com openwbs.com openwrt.ai openwrt.pro openxiaoniu.com openxsea.com operachina.com opfed.com opfibre.com opgw-oppc.com opjmw1.ren opkjh.com oplay.net oplinking.com oplus.com oplustrust.com opmaterial.com opp2.com oppein.com opplestore.com oppo.com oppoer.me oppofind.com oppojia.com oppomobile.com oppopay.com opportunuity.com opposales.com opposhop.in opposhore.com oppowork.com opqnext.com oprtb.com opsapp.com opshields.com opsjuas.shop opskb.com opskumu.com opstatistics.com opstool.com opt-os.com optaim.com optbbs.com opticres.com opticsjournal.net optimix.asia optimized-ai.com optinetchina.com optiondoma.com optmv.com optol.net optomedic.com optuk2.com optzmx.com opus-gaming.com opwill.com opython.com oqss.com oqwizd.com oqwnfambg.com or-sun.com oraev.com orafl.com oralpractice.com orange-ci.net orange2h.com orangeapk.com orangeclk.com orangelovely.com orangemum.com orangenews.hk orangepi.org orangesgame.com orangetage.com orangevip.com oraper.com orasos.com oray.com oray.net oraybox.com oraycn.com orayer.com orayimg.com orbiepharm.com orbitmes.com orcadt.com orchid-lanhua.com orchome.com orcode.com orcony.com ordchaos.com ordedr.com orderorigin.com ordinaryroad.tech ordosbank.com ordosqyjt.com ordostonghui.com orebotech.com orepainc.com orfactory.com org-hddnf.vip org-tollsi.cc organo-sz.com orgcc.com orggd.com orgleaf.com oriemac.com orient-fund.com orient-opto.com orient-safety.com orientaldata.com orientalgas.com orientalpearltower.com orientalplaza.com orientalwisdom.com orientcable.com orientcasa.com orientengg.com orientfoods.net orientgene.com orientgolf.com orientgroup.com orientpc.com orientpowertech.com orientscape.com orienttextile.com orienttumor.com orientzj.com orientzr.com orifound.com originalimg.com originalkindergarten.com originalstatic.com originalvod.com origincn.com originlee.com originoo.com originpic.com originsilicon.com originwater.com origloria.com orihard.com oriphant.com oritive.com oriza.com orjlight.com orleto.com orm-compressor.com orolay.com orsoon.com orspr.com orstatic.com orsun.cc ortc.cc ortmk.com orvibo.com orz-dns.com orz.asia orz520.com orz6.com orztip.com os-easy.com os-os.com os-v.com os7blue.com osaaa.com osakacopyshop.com osase.net osbdf.com osbean.com osbkj.com osbzr.com osc.cool oscaches.com oscarzhoud.com oschina.com oschina.io oschina.net oscs1024.com osechina.com osee-dig.com oseminfo.com oserror.com osf2f.net osfipin.com osgchina.org osgervirtual.com osgraph.com osgz.com oshadan.com oshield.com oshome.com oshoplive.com oshwhub.com osicgroup.com osizx.com osjiaju.com osk-clean.com oskwai.com oskwai.net oslaw.net osm-pearls.com osmanbio.com osmundacn.com osnvuqwlsjakf.com oso6.com osogoo.com osoos.com ososn.com osp.io ospchina.com ospod.com osportsmedia.com ospp.com ospuq.org osredm.com osrelease.download.prss.microsoft.com oss-cn-beijing-aliyuncs.com oss.link ossdshxh.com osslan.com osuxrq.com osvlabs.com osw3c.com oswdj.com oswhy.com osx.cx osxxy.com osyunwei.com otakirispring.org otbmall.com otc-china.com otcgd.com otcms.com otkglass.com otm.ink otms.com otoeasy.com otomedream.com otosaas.com otp-express.com otpub.com otqyzk7mx2t8.com ott4china.com ottai.com ottcn.com ottcn.help ottffss.net ottshopping.net ottssp.com ottv.tv otuxu.com otype.com ou163.com ou99.com ouapi.com oubauneereid.com oubiix.lol oubk.com ouchang.net ouchengzl.com ouchgzee.com oucuibo.com oudapay.com oudas.tech oudianyun.com ouei-sc-mulohomasi.com oufa-travel.com oufengblog.com oufusoft.com ougei.com ouhua.info ouhui.org ouies88.com ouj.com oujiangroup.net oujistore.com oukan.online oukyx.com oulagongshi.com oulehdtv.com oulgp.com ouliwang.com oulongauto.com ouluwind.com ouluyun.com oulvnet.com oumaan.com oumakspt.com oume.cc oumengke.com ouming.com oumoo.com ounh.org ounoe.com ounuoyq.com ouo7.com ouou.com ouou.icu ououbet.com ouougo.com oupaigroup.com oupeng.com oupengcloud.net oupula.com oupuzw.com ouqo05161luj.com our100.net our360vr.com ourai.ws ourail.com ourats.com ouravr.com ourbloom.com ourbluecity.com ourcargo.com ourcdns.com ourchem.com ourcm.net ourdian.com ourdlbs.com ourdomains.com ourdvs.com ourdvs.info ourdvs.net ourdvsss.com ourdvsssvip.com ourdxz.com ourdxz.info ourdxz.org oureman.com ourep.com ourfdn.com ourgame.com ourger.com ourglb.com ourglb.net ourglb0.com ourglb0.info ourglb0.net ourglb0.org ourhf.com ourhlb.com ourhlb.info ourhlb.org ourhy.net ourjay.com ourjewel.com ourjg.com ourjiangsu.com ourjs.com ourjz.com ourl.co ourleadchina.com ourlife365.com ourltc.com ourmate.net ourmis.com ourpalm.com ourplat.net ourplay.net ourqm.com ourren.com oursakura.com ourschool.cc oursec1.com oursec2.com ourseo.net oursmc.com ourstech.com ourtour.com ourunited.com ourwebat.com ourwebcdn.com ourwebcdn.info ourwebcdn.net ourwebcdn.org ourwebhttps.com ourwebpic.com ourwebpic.info ourwebpic.net ourwebpic.org ourwebpicvip.com ouryao.com ousaikj.com oushangstyle.com oushidiban.net oushinet.com oushisheng.com oushivoyages.com ousweixin.com outbrandlink.com outes.com outfit7.com outfit7.net outlets365.com outletscn.com outman.press outsoo.com ouvps.com ouwost.com ouxiangxiezhen.com ouyada.com ouyade.com ouyanghuasi.net ouyaoxiazai.com ouyeel.com ouyingyimin.com ouyizs.com ouyu158.com ouzhaorj.com ouzhou.cc ouzhougoufang.com ov5.org ovalechina.com ovaqrzcw.com ovcreative.com ovdlb.com ovdream.com ovear.info ovellpump.com oversea-ks-cdn.com overseasops.com overseaspharm.com overtrue.me overturechina.com ovglass.com ovhlb.com ovhlb.net ovicnet.com ovital.com ovital.net ovjpvk.org ovmgc.com ovopark.com ovopic.com ovqq.com ovrvo.com ovscdns.com ovscdns.net ovuems.com ovupre.com ovuwork.com ovxe.com owalle.com oway.mobi owecn.com oweidata.com oweis-tech.com owent.net owenzhang.com owgels.com owinchina.com owl-go.com owlxjz.lol owo.cab owocloud.net owoit.com owseals.com owsgo.com owspace.com owulia.com ox11.com oxbridgedu.org oxerr.net oxiang.com oxiaohua.com oxiranchem.com oxrm.com oxygenos.com oxyry.com oya365.com oyalee.com oyewifi.com oygteapq.com oym56lm.com oyohyee.com oyonyou.com oyoozo.com oyospider.com oyoumo.com oysd.com oywtv.com oyya.com oyz61nhz8.com oyzns.com ozocenter.com ozonabc.com ozonbigsell.com ozoninfo.com ozouckzr.com ozsmartbuy.com ozxw.com ozzair.org ozzyad.com p-an.com p-dragon.com p-e-china.com p-er.com p-i.vip p-pass.com p-sig-dom.com p-sig-dom.net p.biz p.cdn.persaas.dell.com p023.com p0371.com p0431.com p04e.com p0y.com p1.com p12345.com p2cdn.com p2hp.com p2p001.com p2p178.com p2pbbs.net p2pchina.com p2pcq.com p2peye.com p2peye.net p2psearchers.com p2ptouhang.com p3-china.com p4pp.com p555.cc p5w.net p6air.com p6sai.com p77777777.com p7game.com p80.net p8811.com p8games.com p96q3p1m93.world p99998888.com pa.ci pa18.com pa1pa.com paahu.com paalermat.com paascloud.net paat.com pabulika.com pacdn.com pacebms.com pacfc.com pacgatelaw.com pacicanschool.com pacificchinaaero.com pacificimmi.com pacificphar.com pacilution.com packagesddn.win packertec.com packetmania.net packsky.com packtom.com packty.com pacmantwo.com pacs-plus.com pactera.com padao.org padasuo.net padddy.vip paddlepaddle.org paddlewaver.com padh.net padns.com padtf.com paer.work pafj.net pafwl.com pag.art pagd.net pageadmin.net pagechoice.com pagechoice.net pagedoo.com pagescube.com pageseagle.com pagetu.com pahx.com pahys.com pai.video paiago.com paiangmedical.com paiangstudy.com paibanxia.com paibaohy.com paichen.net paichi.com paicoding.com paidai.com paidui.com paiduidai.com paigepian.com paihang114.com paihang360.com paihang8.com paihb.com paihotels.cc paihuisy.com paikew.com paiky.com paiky.net pailitao.com pailixiang.com paimaprint.com paime.com paiming.net paintinghere.org paints.market paipai.com paipai123.com paipaibang.com paipaiimg.com paipay.net paipianbang.com pairmb.com paishi.com paitol.com paivideo.com paiwan.com paixiangxian.com paixin.com paixueche.net paiyidan.net paiyuyy.com paizhaofanyi.net paizhe.com paizi.com paizi.net paizia.com paizin.com paizishop.com pajkb.com pajkdc.com pajktj.com pajt.com pal-fin.com palace-international.com palanceli.com paldq.com pallasa.com pally-travel.com palm-ad.com palm-h.com palm.tech palma-battery.com palmda.com palmebook.com palmeread.com palmestore.com palmexpo.com palmfungames.com palmjoys.com palmpay-inc.com palmpay.com palmpk.com palmtrends.com palmyou.com paloinino.com palomachina.com pamahotel.com pamica.com pamss.net pan-good.com pan-ics.com pan-key.com pan131.com pan58.com pan8.net panabit.com panaihua.com panasiashipping.com panasonic-door.com panasonicmall.com panawincn.com panbaidu.net panbrake.com panchinasports.com panchip.com panchuang.net panda-home.com panda-js-power.com panda.ren panda98.com panda995.xyz pandabus.cc pandadairy.com pandadastudio.com pandafoundation.org pandagreen.com pandahome.org pandainc.cc pandaminer.com pandapaint.net pandara.xyz pandaremit.com pandateacher.com pandatv.com pandax.wiki pandolia.net panduoduo.net panel-cn.com pangbo51.com pangbu.com pangcheng.com pangdago.com pangdasc.com pangdly.com pangeng.vip panggugu.com panghuasheng.com pangjun.com pangku.com pangku01.com pangmao56.com pangmaovc.com pangod.com pangodsxbj.com pangoing.com pangolin-dsp-toutiao-b.com pangolin-dsp-toutiao.com pangolin-sdk-toutiao-b.com pangolin-sdk-toutiao.com pangolin-sdk-toutiao1.com pangolin-sdk-toutiao2.com pangolin-sdk-toutiao3.com pangolin-sdk-toutiao4.com pangomicro.com pangqiu.com pangshare.com pangshu.com pangsuan.com pangu.io pangubox.com panguhotel.com panguidc.com pangukj.com pangusheng.com panguso.com pangxieke.com pangyuan.com panjiayuan.com panjin.net panjindamibest.com panjk.com panku.cc pankuaisou.com panlai.com panlan.com panli.com panlv.net pannacloud.com panocom.com panoeade.com panomix.com panoramastock.com panothers.com panpanfood.com panpanzsw.com panpass.net panpay.com panplayable-toutiao-b.com panplayable-toutiao.com panqiincs.me panqishu.com panruikj.com panshenlian.com panshi101.com panshianquan.com panshihudong.com panshiminerals.com panshixk.com panshiyun.com panshy.com pansino-solutions.com panso.pro pansoso.com pansou.com pansousuo.com pantherhealthcare.com pantonechina.com pantower.com pantrysbest.com pantuitui.com pantum.com panwangkeji.com panweizeng.com panxsoft.com panyiyun.com panyouwl.com panyun.com panyunkj.com panyuwater.com paoao.net paodoo.com paojiao.com paoka.com paokucloud.com paolanhuanbao.com paomo.com paomochengxingji.com paopao.com paopaoche.net paopaohd.com paopaosz.com paoshuba.cc paoshuba.org paoxue.com paozhengtong.com paozw.org papa21.com papa91.com papago.hk papajohnschina.com papajohnshanghai.com papapa.tv papatya.store papazw.com papegames.com paper-translation.com paper.tv paper120.net paperang.com paperask.com paperbert.com paperbus.com paperbye.com paperccb.com paperclipglobal.com papercool.com paperdb.com papereasy.com paperge.com paperinsight.net paperisok.com papernew.net paperok.com paperonce.org paperopen.com paperpass.com paperpass.org paperpp.com paperrater.net paperright.com papers.cool papersay.com papersee.com papertime.cc papertime.shop papertime.vip paperweekly.site paperword.com paperyy.com papocket.com papuanewguineans.com paquapp.com parallelsras.com paratera.com parawikis.com parduscycle.com parentshk.com paris-girafe.com parisblackpride.org parkbees.com parketech.com parkicloud.com parking520.com parkinginfoweb.com parkingjet.com parkingos.club parkingpda.com parkingquickly.com parkingsaas.com parkingwang.com parkmecn.com parkonroad.com parkshen.com parkviewgreen.com parkwaychina.com parkworld.net parkyardhotel.com parsein.com partinchina.com partner-group.com partner.cdnetworks.com partnerboost.com party68.com paschermontre.to pasco.cc pasecng.com pasertech.com pashu5.org pass7.cc passer-by.com passfab.com passfab.tw passion120.com passiongroupltd.com passip.xyz passnat.com passwordkeyboard.com pat-edu.com pat-edu.org patachina.org patchallin.com patchew.org patek.website patekphilippe.website patent9.com patentguru.com patexplorer.com patfun.com patheagames.com patholancet.com pathologycn.com patiencepoker.com patsev.com patsnapglobal.com patv123.com paul-corp.com paul.pub paulzzh.com pauwaypower.com pavay.com pavayjt.com pavilionshenzhenhotel.com paxdn.com paxgl.com paxhz.com paxini-robot.net pay-in.com pay-lakala.com pay-ly.com paybaike.com paydxm.com payeco.com payititi.com paykwai.com paylf.com paympay.com paynews.net paypaytech.com paytollbyv.world paytollvfd.world pb89.com pbaohza.com pbc-dcep.com pbcan.com pbcedu.net pbcft.com pbchizhou.com pbdpw.com pbiso.com pbkrs.com pblie.com pbqdhty.com pbrcw.net pbsvpn.com pbtcw.com pbtlpm.com pbtsl.com pbtt.net pbtxt.com pbyz.net pc-120.com pc-daily.com pc.wiki pc02.com pc028.com pc120.com pc15.net pc168.com pc18.net pc186.com pc34.com pc360.net pc51.com pc520.net pc521.net pc5210.com pc528.net pc55.com pc6.com pc699.com pc6a.com pc768.com pc89.com pc8h.com pc9.com pcapqz.com pcasl.com pcauto.com pcb-hl.com pcb-membraneswitch.com pcb3.com pcb818.com pcbask.com pcbba.com pcbbar.com pcbbbs.com pcbeta.com pcbhunt.com pcbjob.com pcbserve.com pcbsheji.com pcbtech.net pcbtime.com pccm88.com pccpa.hk pccppc.com pcdan.net pcdn100.com pcdnhome.com pcdog.com pcdrv.com pcdtg.com pceggs.com pceva.net pcfphs.com pcfreetime.com pcgeshi.com pcgogo.com pcgta.cc pch.pub pchome.com pchome.net pchpic.net pcidv.com pciiss.com pcitc.com pcitech.com pcjsq.com pcljl.com pcmgr-global.com pcmgr-global.net pcmoe.net pcoic.com pcoof.com pcoyx.com pcpc521.com pcpop.com pcpresent.com pcqudong.com pcr9170.com pcscedu.com pcsee.org pcsfc.com pcshou.com pcsjsm.com pct86.com pctutu.net pctvx.com pcw365.com pcwcn.com pcweb3.com pcwenti.com pcwgu.com pcwl.com pcxitongcheng.com pcyangguangban.com pcysy.com pcz.net pczhi.com pd-italent.com pd-sts.com pd120.com pd17.com pdafans.com pdai.tech pdb2.com pdbeta.com pdd-fapiao.com pdd.net pddcdn.com pddeu.com pddglobalhr.com pddim.com pddpic.com pddugc.com pddxfd.com pdeepmatrix.com pdf.la pdf00.com pdf1122.com pdfangchan.com pdfbianji.com pdfdo.com pdfexpert.cc pdffsy.com pdfjia.com pdflibr.com pdfxd.com pdfzj.com pdgohome.com pdgzf.com pdhr.com pdidc.com pdie-expo.com pdinvestmentgroup.com pdlib.com pdlnn.com pdloscar.com pdm.tech pdnob.com pdosgk.com pdrcfw.com pdreading.com pdreamer.com pdryx.com pdscb.com pdsey.com pdsgjj.com pdshouse.com pdsjycm.com pdskgb.com pdswater.com pdsxww.com pdty123.com pduoduo.vip pdvc.com pdvisa.com pdwxo.vip pdxx.net pdxxg.com pdzls.com pe-exhibition.com pe.vc pe8.com pe898.com peace-read.com peacebird.com peaceboat.net peacepetro.com peacha.net peacockedu.com peak-labs.com peaksport.com peakyun.cc peal.cc pear.hk pearlinpalm.com pearvideo.com peasrch.com peatour.com pebellows.com peccn.com pechoin.com pecmgd.com pecoo.com pediatrixtherapeutics.com pediy.com pedli.com peekpipai.com peento.com peepic.com peerkennel.com pegbiocq.com peidibrand.com peidu.com peihao.space peihu-lyjkgl.com peihuyi.com peijiamedical.com peijian8.net peikua.com peilian.com peiluming.com peiluyou.com peipusci.com peise.net peisebiao.com peiwan.tv peiwanlu.com peiwantv.com peixianedu.com peixiang.com peixinbao.com peixinkj.com peixinyi.com peixun.net peixun360.com peixun5.com peixune.com peixunla.com peixunmatou.com peixunxue.com peiyake.com peiyicha.com peiyin.net peiyinge.com peiyingefiles.com peiyingo.com peiyinshenqi.club peiyinxiu.com peiyou.com peiyouwang.com peiyue.com peizi.com pejdw.com pejxjy.com pekhongyuan.com peksung.com pelejs.com pelorseating.com pemap.com pemch.com penavicoxm.com pending-renewal-domain.com pengbaoxuan.com pengboguandao.com pengchengenergy.com pengchenglx.com pengfei.com penghh.fun penging.com pengke.com penglei.name pengliao.com pengpailaw.com pengqi.club pengqian.win pengrl.com pengrui-ssj.com pengshancy.com pengtuzm.com penguin-logistics.space pengxinziyuan.com pengyaou.com pengyihotel.com pengyou.com pengyou.net pengyoukan.com pengyuanled.com pengyucpa.com pengyuwei.net pengzhihui.xyz penhuijiqi.com peninsula-med.com penlingaizao.com penno-pallet.com pensunny.com pentalaser.com pentaq.com pentatomic.com pentiw.com penxiangge.com penyouw.com penzai.com penzealcn.com people-squared.com people78.com people78.net peopleapp.com peopleart.tv peopledailyhealth.com peopledailypress.com peoplehealthdata.com peoplekg.com peoplelamp.com peoplemooc.com peoplerail.com peoplewang.com peopleyuqing.com pepresource.com pepsimeipai.com peptide-china.com perfect-input.com perfect99.com perfectdiary.com perfecttradinghk.com perfectwatchen.com perfertw.com perfma.net peropero.net peroperogames.com persagy.com perseverany.com personabook.net personpsy.org perspectivar.com pescms.com pesiv.com pesrmyy.com pesyun.com pet-mri.com pet86.com petaindonesia.org petalmail.com petalmaps.com petalsdata.com petctchina.com petctw.com peter-zhou.com peterjxl.com petersonjace.shop petersonlian.com petgugu.com pethr.com petkit.com petkoo.com petktasia.com petly.net petmrchina.com petmrs.com petope.com petpcb.com petpetin.com petrexchina.com petroren.com petrostaroil.com petrvet.com petssky.com pewax88.com pewld.com pewsc.com pexue.com pf.net pf110.com pf168.com pfcexpress.com pfhoo.com pfinno.com pfjekm.org pfmmedicalchina.com pft12301.cc pftianshanno.com pfwx.com pfzhiliao.com pg-leak.com pg114.net pgbee.com pgc.tv pgcaststone.com pgcog.com pgdz.com pgdz4422.com pggho.com pghqa.org pgidw.com pgive.com pgjcqm.com pgjxo.com pgl-world.com pglstatp-toutiao-b.com pglstatp-toutiao.com pgmcatalyst.com pgos.cc pgosglobal.com pgpop.com pgq.win pgqcw.com pgqjz7733.com pgrm.site pgsql.tech pgxqw.net pgxxw.com pgy6.com pgyapi.com pgyer.com pgyidc.com pgyy.com pgyy.vip pgzs.com pgzx.net ph-fc.com ph365.bond ph66.com phaenothera.com phaetonsemi.com phalapi.net phantasy.life pharaohvisionstudios.com pharbers.com pharm81.mobi pharmacn.com pharmacodia.com pharmacyyf.com pharmalego.com pharmcube.com pharmengin.com pharmglass.com pharmproc.com pharmzs.com pharnexcloud.com pharscin.com phaser-china.com phb01.com phb123.com phbang.net phcoal.com phedu.net phemu.net phenom-sem.com phet.fan phezzan.com phgll.com phhongyu.com phicomm.com philanthropy.xin philipswechat.com philisense.com philjang.work phirda.com phirs.com phjqs.com phjt.com phlexing.com phmacn.com phnamedns.com phnixhome.com phnixpool.com pho.so phodal.com phoemix.net phoenix-ea.com phoenixfilters.net phoenixos.com phoenixtea.org phoenixtv.com phoent.com phoer.net phome.net phone580.com phonecoolgame.com phonegap.me phonegap100.com phonelinksoft.com phonertech.com phopic.com phosun.com photc.com photo0086.com photo3050.com photo889.com photocnc.com photocome.com photohn.com photoncounts.com photonpay.com photops.com photosks.vip photozoomchina.com php-note.com php-oa.com php100.com php168.com php168.net php318.com phpbbchina.com phpbloger.com phpcashshare.com phpchina.com phpcom.net phpcomposer.com phpconchina.com phpcoo.com phpddt.com phpdr.net phpe.net phpernote.com phperservice.com phperz.com phpfs.com phpha.com phphub.org phpjiami.com phpjiayuan.com phpkaiyuancms.com phplife.net phpor.net phpsong.com phpspider.org phpstat.net phpub.mobi phpv.net phpwc.com phpwc.info phpweb.net phpweblog.net phpxs.com phpyun.com phsb.com physicalchina.com physicalchina.vip physicalclub.com physike.com physoe.com phyuan.com phyy.com phzg.com pi7.com piaget-hello.com pianbar.net pianbingji.com piankuai.com pianohl.com pianor.com pianoun.com pianpian.net piantou.net pianyilo.com pianyit.com pianyiwan.com piao.com piao.tips piao88.com piao95.com piaobing.com piaobuy.com piaochong.com piaocom.com piaodaren.com piaode.ren piaodian.net piaododo.com piaodown.com piaogj.com piaogroup.com piaohomeinn.com piaohua.com piaojubao.com piaolia.com piaoliang.com piaoliusan.com piaoniu.com piaoqianqian.com piaoquantv.com piaoshen.com piaotian.org piaotongyun.com piaowutong.cc piaowutong.com piaoxian.net piaoxingqiu.com piaoyi.org piaoyun.net piaozone.com piasy.com piaviation.com pic-cname.cc pic-png.com pic.tripcdn.com pic16.com pic21.com pic315.com pic3733.com pic720.com picacgp.com picatown.com picbling.com picc.com piccamc.com picchealth.com piccjs.com picdlb.com picdns.com picing.com pickme.cc picooc.com picosmos.net picovr.com picoxr.com picp.io picp.net picsandquotes.com picsays.com pictureknow.com picup.shop picxiaobai.com picyourmix.com picyq.com pidcn.com pidoutv.com pidru.com piececool.com pieceofbake.net pieeco.com piekee.com piekee.net pieshua.com pifa.bz pifa333.com piflogistics.com pifukezaixian.com pig4cloud.com pig66.com pigai.org pigcms.com pighaihe.com pigji.com pigmentlc.com pigmoral.tech pigonline.org pigsq.com pigsty.cc pigv5.com pigx.vip pigyun.com pihitech.com pihmh.com piimg.com piios.com pikacn.com pikoplay.com pikpak.me pikpakdrive.com pil0txia.com pilaipiwang.com pilidns.com pilifu.com pilimeng.com pimaoji.com pimax.com pimei.com pimgeek.com pimormebwf.com pin-color.net pin18pin.com pin2eat.com pin5i.com pinan1688.com pinbaitai.com pinbaiyan.com pinbang.com pinbayun.com pinble.com pinble.net pincai.com pinchain.com pinchedashi.com pinchetang.com pincn.com pinda.com pinduoduo.com pinduoduo.net pinelephant.com pinestoneasset.com pinfangw.com pinfeng.group pinfun.com ping-an.net ping-jia.net ping-qu.com ping99.com pingan.com pingan.com.hk pingancdn.com pinganfang.com pinganfu.net pingansilu.org pinganventures.com pinganwj.com pinganyun.com pinganzhengxin.com pinganzhengyang.com pingcap.com pingce.net pingchuangyl.com pingcode.com pingcode.tech pingcoo.com pingdingshan.me pingdurc.com pingevip.com pingfangx.com pingfanli.com pingfenbang.com pinggao.com pinggaogroup.com pinggu.com pinggu.org pingguobaoxiu.com pingguodj.com pingguoid.com pingguolv.com pinghe.com pinghu.tech pinghui-cn.com pingjiata.com pingmudiy.com pingnanlearning.com pingnantong.com pingnuosoft.com pingpangwang.com pingpingw.com pingpingze.com pingplusplus.com pingpongx.com pingpongx.org pingshu365.com pingshu8.com pingshuku.com pingshuocoal.com pingshuxiazai.com pingstart.com pinguan.com pinguo.us pingwest.com pingxiangzhifa.com pingxiaow.com pingxuan123.com pingxx.com pingyin.cc pingzishuo.com pinhaohuo.com pinhui001.com pinidea.co pinjiago.com pinjiao.com pinjiaolian.com pinjie.cc pinjieqicai.com pinjiesj.com pinkecity.com pinkehao.com pinkertech.com pinkoichina.com pinkou.com pinla.com pinlyu.com pinmanduo.com pinmuch.com pinocchiowb.com pinpai-bang.com pinpai1.com pinpai37.com pinpaihuoyuan.com pinpailiu.com pinpaime.com pinpointloc.com pinpopt.site pinqugongxiangktv.com pinqukeji.com pinshu.com pinsuodesign.com pintangshi.com pintechpharma.com pintreel.com pintu360.com pintuan.com pintuanya.com pintuer.com pintuju.com pintuxiu.net pinuc.com pinwaiyi.com pinweiqifu.com pinxianghui.com pinxianghui.net pinyafang.com pinyinxiang.com pinyuan.cc pinyuew.com pinzhenglh.com pinzhi.org pinzhi365.com pinzhikeji.net pinzs.com pioneer-pharma.com pioneer-pku.com pioneerchina.com pioneerep.com pioneernews.cc pioneersci.com pipa.com pipacoding.com pipahealth.com pipaw.com pipaw.net pipedetect.com pipegg.com pipgame.com pipikou.com pipikun.com pipilu.com pipimp3.com pipipi.net pipipifa.com pipishu.com pipiti.com pipix.com pipixue.com pipsemi.com pipuda.com piqs.com piscesys.com pisx.com pitayaio.com piuqiupia.com pivotacp.com pivotautomotive.com piwxal.work pixbe.com pixcakeai.com pixcakes.com pixcheese.com pixe44lrifted.com pixelauth.com pixeldance.com pixelgame.net pixepf.sbs pixiaojiang.com pixivic.com pixpark.net piyanzi.com piyipiba.com pj-666.com pj-road.com pj.com pj0099.com pj09.com pj334.org pj39800.com pj50.com pj57.com pj62049.com pj73.com pjbest.com pjcn.org pjf.name pjgear.com pjgjg.com pjhome.net pjhubs.com pjjjw.com pjjyzx.com pjlyds.com pjob.net pjtime.com pjtka.com pk106.com pk137.com pk2234.com pk38.com pk532.com pk7o.com pk995.com pkbeta.com pkbff.com pkbigdata.com pkcity.com pkfish.com pkfj.xyz pkfun.com pkgame.com pkghund.com pkgklk.com pki.plus pkm360.com pkma.cc pko123.com pkoplink.com pkpmjc.com pkpmsoft.com pkpuke.com pkq.xyz pksf8.com pksfc.com pksky.com pkslow.com pkt-cable.com pku-cele.com pku-hc.com pku-hit.com pku-lvxin.com pku666.com pkucare.com pkucarenjk.com pkucnooch.com pkufh.com pkufi.com pkugac.com pkulaw.com pkulaws.com pkulb.com pkuncii.com pkunn.com pkuph.com pkuphqd.com pkupuzzle.art pkurc.com pkusky.com pkusp.com pkuszh.com pkutourism.com pkuxue.com pkvs.com pkwenku.com pl999.com plaidc.com plalzhang.com planary-yz.com planckled.com planetariuminsight.site planetarylighting.com planetmeican.com planpelham.com plantb2b.com plantname.xyz plantnutrifert.org plantower.com plas-cn.com plasdata.com plastics-machinery-equipment.com plasway.com plateno.cc plateno.com platenogroup.com platform-cn.com platform.dell.com platinum-traveller.com platinumchina.com play-analytics.com play-cdn10.com play-cdn11.com play-cdn13.com play-cdn14.com play-cdn16.com play-cdn19.com play-cdn2.com play-cdn20.com play-cdn7.com play.craft.moe play68.com play700.com play910.com play920.com playcase.com playchd.com playcomet.jp playcool.com playcrab.com playdanji.com playerinfinite.com playezu.com playfifa.com playgm.cc playhousemag.com playlu.com playorcas.com playpangu.com playtai.com playtai.net playwonderful.com playwxgame.com playyx.com playzy.com plb1.com plbig.com plc100.com plc11.com plcent.com plchinese.com plcjs.com plcloud.com plctlab.com plentypolymer.com pleo-securelogin.com plesk-cn.com plex2.com plexpt.com plfrog.com plll-fluid.com plob.org plopco.com plottersyservicioshdz.com plpwz.com plsbd.com plsdeyy.com plsfybjy.com pltgd.com pluosi.com pluralitycn.com plures.net plus-chem.com plus-space.com plus3gallery.com plusco-tech.com plusgantt.com plusplus7.com plusplustu.com plusrtc.com plutoer.com plutuspay.com pluveto.com plvideo.net plxao.com plxfgroup.com plxww.com plycd.com plyh.com plyhjt.net plyygs.com plyz.net plzly.com plzx.net plzyll.com pm-china.com pm-leader.com pm-summit.org pm222.com pm25.com pm265.com pm28.com pm360.com pmallstore.com pmcaff.com pmceo.com pmcj-group.com pmcrobot.com pmd5.com pmdak.com pmdaniu.com pmdled.com pmdoudou.com pmdown.com pmhfd.org pmichina.org pmish-tech.com pmkiki.com pmovie.com pmparkchina.com pmph.com pmphai.com pmphmooc.com pmptuan.com pmquanzi.com pmr66.com pmsmzyy.com pmtalk.club pmtemple.com pmtown.com pmway.com pmx-nanho.com pmxprecision.com pmxsd.com pmyes.com pmyuanxing.com pn1waq.com pnetp.org pnfang.com pnfq.com png.pub pngbag.com pngsucai.com pnol.net pnst8.com pntagkyy.com pntkyy.com pntryy.com pnty1688.com pnwww.com pnxct.com pnxyrykj.com pnzpw.com po.co po7ryumvkx34.com poacefex.shop pobaby.net pobasoft.com pochanguanliyanjiu.com pochezu.com pocketcloud.vip pocketdigi.com pocketuni.net pockpower.com pocomagnetic.com pocosite.com pocsuite.org podcast.xyz podfest.tech podinns.com podjiasu.org podunjiasu.com poem88.com poemlife.com poemschina.com pofang.com pohaier.com pohover.com poikm.com point-memory.com poiuytw.com poizon.com poj.org pojianyunfu.com poke203.com poke88.com pokemmc.com pokemon-unitepgame.com pokemon.vip pokerbros.net pokermate.net poketb.com polamus.com polariton.life polarloco.com polars.cc polarxiong.com polaxiong.com polayoutu.com polebrief.com polingba.com polo-king.com poloxue.com poluosenko.com poly-gx.com poly-pm.com polycd.com polycent.com polycinemas.com polycn.com polycom-jl.com polyflowenergy.com polyhotel.com polyhotels.com polyinno.com polyreymed.com polytheatre.com polyv.net polywuye.com polyxfb.com pomears.com pomeloyun.com pomkl.com pomoho.com pondernext.com ponging.store ponkong.com ponley.com pontite.com pony.ai ponyai-cn.com ponycool.com ponyemu.com ponyfk.com ponytest.com ponytestqd.com ponytestsh.com ponytestsz.com poo1.club pooban.com pooeoo.com poofoo.com pooioo.com pook.com pookcdn.com pooketools.com poorren.com pop-bags.com pop-fashion.com pop-shoe.com pop136.com pop365.com pop800.com popcj.com popcustoms.com popdg.com popgo.org popkart.tv popkx.com poploli.com popmart.com popmartfans.cc popmtstyle.com popoffices.com popoho.com popoim.com popovivi.com popoxiu.com popqiu.com popsoft.com popss.biz popumed.com popupgrade.com poputar.com popziti.com poration-vac-tech.com porlockz.com port-m.com portalcdn.cdnetworks.com portcontainer.com porthebei.com portjs.com portjs.net portjswl.com portlyg.com portmansevenstars.com ports-intl.com portsgmt.com porttong.com portugal-visacenter.com poru-mro.com poryf.com pos58.com pos580.com posbar.com poscerwatch.com poseidong.com poseidonqianshui.com posfree.com posge.com posmcc.com posn.net pospalit.com pospos.com post-delivered.today post163.com post183.net postarlight.com postdelivered.today posterlabs.com postgres.fun postgresqlchina.com postjson.com postnord.xin postpony.com postxin.com posyn.com poszjia.com potalapalace.com potassiumnitrate-zx.com potato.gold potensic.com potevio.com pothros.asia potianji.net potnsik-faastink898.com potomaccottage.com potops.com potplayer.org potplayercn.com pouchcontainer.io pouquiagievu.com pouser.net pova-elc.com power-rail.com power-sprayer.com power86.com power8t.com powerapp.io powerbeijing-ec.com powerbeijing.com powerbibbs.com powercdn.com powerchina-intl.com powerchinaleasing.com powerchinanewenergy.com powerchinashow.com powerchinayun.com powercx.com powerde.com powereasy.net powerex1.com powerflow-tech.com powerfulchina.com powerhubei.com poweric-china.com powerlandtech.com powerlaw.ai powerleaderidc.com powerliber.com powerlong.com powerlongmuseum.com powerma.net powermaxcorp.com poweron.cc powerpigs.net powerpms.com powerrsoft.com powerskystudio.com powerstationofart.com powerstonetech.com powertensors.ai powertradepro.com powervision.me powerworldgd.com powerxene.com powpegxw.com powzamedia.com poxiaowy.com poxiaoxinxi.com poyang.com poyour.com pozou.com pp.cc pp100.com pp1o.com pp25.com pp250.com pp30.com pp365.com pp373.com pp51.com pp540.com pp63.com pp8.com pp918.com pp9l.com ppad.com ppaiss.com ppbizon.com ppbnchina.com ppcho.com ppcn.net ppcode.com ppcost.com ppdai.com ppdaicdn.com ppdaicorp.com ppdd.com ppdesk.com ppdqk.com ppduck.com ppdys.vip ppfeng.com ppforging.com ppgallery.com ppgame.com ppgg.in ppgmm.com ppgslb.com pphimalayanrt.com pphqq.com ppia-china.com ppinfra.com ppio.cloud ppio.work ppj.io ppjtc.net ppkankan01.com ppkjinc.com ppkoo.com pplib.net pplive.com pplive.net pplm1996.com pplp.info ppm-htv.com ppm2.com ppmake.com ppmm.org ppmoney.com ppnews.vip ppos.com ppp.gold ppparking.net pppcar.com pppet.net pppie.com pppiii.com pppnnm.com pppoevps.com ppppic.com ppppoints.com ppq.me pprxcdn.com pps.tv ppsao.com ppsimg.com ppsoftw.com ppspain.com ppsport.com ppstream.com ppstream.net ppstv.com ppstv.net ppsurl.com ppsz.net ppt118.com ppt20.com ppt360.com ppt920.com pptair.com pptbest.com pptboss.com pptbz.com pptelf.com ppter8.com ppthi-hoo.com pptianliao.com pptiyu.com pptkj.net pptmall.net pptniu.com pptsq.com pptstore.net pptsupermarket.com pptui.com pptutor.com pptv.com pptv5.com pptvdata.com pptvimg.com pptvnet.com pptvyun.com pptxy.com ppurl.com ppvi.net ppwan.com ppwang.com ppwenda.com ppwfa.com ppwow.cc ppwwyyxx.com ppx520.com ppxclub.com ppxiaoshuowang.com ppximg.com ppxm.com ppxmw.com ppxs.net ppxstatic.com ppxsw.co ppxvod.com ppxwo.com ppzhan.com ppzhilian.com ppzuche.com ppzw.com pqdtcn.com pqneq.com pqpo.me pqt-bearing.com pqtygsfkv.com pqyhigh.com pqylow.com pqymiddle.com pqyvzr56aceitx.com pqzhichan.com pr020.com pr027.com pr0771.com pradabao.com pratic-cnc.com prayaya.com prayaya.net prayaya.org prcedu.com prcee.org prcfe.com prcvalve.com precision-biotech.com precision-biz.com preludeid.com premedglobal.com presenceall.com pressmine.com prestodb-china.com prestolite-bj.com prettech.com preyp.net prfc-cn.com prfog.com prhljt.com pricl.com primadiagnostic.com primarychina.com prime-care.com prime-semi.com prime3c.com primegene.net primerachina.com primeton.com princechem.com print86.com printerwhy.net printhome.com printhr.com printidea.art printlake.com privateapi.xyz privatess.win privspace.net prizesapp.com prjdrj.com prkfyy.com prnewspress.com pro001.com pro400.com proangela.com proav-china.com procar.cc processon.com procetpoeinjector.com prochembio.com prociss.com procivi.net prodcam.cc prodcutmodel.com productivity.wiki proginn.com programfan.com programmer.ink programmercarl.com programschool.com progress-cn.com progressingeography.com project-oa.com project-snow.com projectaker.com projector-jl.com projector-window.com projectserval.com proleantech.com prolog-int.com prolto.com promise-sz.com promisingedu.com pronax.tech pronetway.com prophecyi.com proposalt.com propsad.com proresearch.org pros-view.com prositsole.com prostar-cn.com protect-file.com protong.com protontechcn.com proup.club providence-chemicals.com prowine-shanghai.com proximabeta.com proxypass.net proya-group.com proya.com proyy.com prpracg.com prs-9hospital.com prs-motion.com prsgl.com prteco.com prts.wiki prtscttposty.cfd prttech.com prvchina.com prwlyy.com prxxff.com pryk0755.com przhushou.com przwt.com ps-boat.com ps123.net ps12345.com ps173.com ps288.com ps314.com ps616.com ps9d.com psaiwave.com psald.com psb888.com psbc-ubank.com psbc.com psc4d.com pscddos.com psd1403.com psd8.com psdee.com psdiv.com pse-meti.com psfjz.com psjdhhnkjahbn.cfd psjia.com psjxty.com psjyedu.com pslkzs.com psmartcloud.com psnine.com psoneart.com psp99.com psr-china.com psrar.com psrss.com pstatp.com pstips.net pstxg.com psvalve.com psy-1.com psychcn.com psychspace.com psylife.com psysoper.com psyzg.com psznh.com pszwatch.com pszx.com pszxw.net pt-link.com pt597.com pt80.net pt963.com pt97.com ptacn.com ptah-tech.com ptausercontent.com ptbchina.com ptbus.com ptc-asia.com ptdsh.com ptfdc.com ptfe-rod.com ptfish.com ptfish.org ptgcn.com pthceshi.com pthejzb.com pthksw.com pthxuexi.com pthxx.com pthxxw.com ptimg.org ptkckj.com ptkill.com ptmind.com ptmzr.com ptnrjt.com ptools.fun ptorch.com ptotour.com ptpcp.com ptrcw.com pts-ai-texture.com pts-testing.com pts.games ptshare.org ptszgh.org ptteng.com ptwbs.net ptweixin.com ptx123.com ptxie.com ptxyrcw.com ptxz.com ptyg.com ptyly.com ptyoubike.com ptyqm.com ptyx.com pu-bg.com pu-ling.com pu1kj.com pu600.com pu82.vip puaas.com puai999.com puaihospital.net puamap.com puata.info pubbcsapp.com pubchn.com pubg.plus pubg8x.com pubghelper.com pubgkam.com pubgtool.com pubgwesk.art pubgzh-cn.vip public6.com publiccms.com publicdns.cc pubmed007.com pubmedplus.com pubone.cc pubrain.com pubtian.com pubukeji.com pubwinol.com pubyun.com pubyun.net pubyun.org pucijiankang.com pudding.cc pudetouzi.com pudie.net pudijt.com pudn.com pudongwater.com pudutech.com puduzhai.com puem.org puer10000.com puercn.com puersai.com puertea.com pufalianzheng.com pufewev.store puffergames.com pugba.com puh3.com puhebiopharma.com puhedesign.com puhja.work puhler.com puhuacapital.com puhuahui.com puhuaxincai.com puidc.com puiedu.com puikiuxinyi.com pujia8.com pujiaba.com pujiaziwang.com pujie.com pujingjt888.com pujiugame.com pukinte.com pule.com pulinmed.com pulisi.com pulixingfu.com pullwave.com pullword.com pullywood.com pulogroup.com pumcderm.net pumpisok.com pumpzc.com punaide.com punanhospital.com punchbox.info pungboo.com puoke.com puoraiatorcubt.icu puppetchina.com puppy888.com pupu168.com pupuapi.com pupufz.com pupugo.com pupumall.com pupumall.net pupurazzi.com pupuwang.com purang.com purcotton.com pureage.info purebuy.club pureh2b.com purekindfund.com puremild.com purenyy.com puresnake.com puresys.net purewhite.io purified-group.com puritysilvers.store purolatorko.com puronglong.com purplehi.com purplelec.com purpose36.com purui020.com puruimachinery.com pusa123.com pusa365.com push-herbchem.com push2u.com pushauction.com pushcfg.com pushgrid.net pushi-ngp.com pushigao.com pushihao.com pushiyb.com pushjoy.com pushplus.plus pushthink.com pushtime.net pushyzheng.com pusicapital.com pusupvc.com pusure.com putaoa.com putaocdn.com putaogame.com putaojiu.com putaotec.com putclub.com putdb.com putdl.com putian-nst.com putian508.com putitt.com putonsoft.com putop.net puusa.net puwenlong.com puworld.com puwww.com puxiang.com puxindesign.com puxun.co puyewx.com puyideshiye.com puyimed.com puyuan-electric.com puzeyf.com puzzle8.com puzzles100.com pv001.com pv001.net pv138.com pv265.com pvc-diban.net pvc123.com pvpin.com pvzbaike.com pw-partners.com pw1999.com pw88.com pwand.com pwdding.icu pwithe.com pwjptdg.xyz pwjt.com pwkss.com pwkyyb.com pwmat.com pwmqr.com pwns.fun pwnyun.com pword.net pwrd.com pwrdoverseas.com pwsannong.com pwsz.com pwypx.com pwypyq.com px0571.com px0769.com px1039.com px33.com px5a.com pxb7.com pxbgp.com pxc33.com pxcn168.com pxcoex.com pxdier.net pxemba.com pxene.com pxhuiben.com pxrczpw.com pxsfybjy.com pxsrmyy.com pxtbhb.com pxtcm.com pxtu.com pxtx.com pxuiamz.com pxvps.com pxwsemi.com pxx.io pxykyy.com pxyuan.com pxyyjt.com pxzhbsq.com pxzj.com py-axa.com py1080p.com py1314.com py168.com py2y.com py3.io py3study.com py94.com pyadx.com pyasfunds.com pybrother.com pychina.com pychina.org pydp888.com pydvu.com pyedu.cc pyeec.com pyer.net pyer.site pyfb001.com pyhead.com pyhosp.com pyjdgj.com pyjkd.com pyjt.net pyker.com pylonghai.com pymeng.com pymh.com pyneo.com pyou.com pysdsysc.com pyshszh.com pystar.com pyt2021.com pytesgroup.com python-abc.xyz python100.com python51.com pythonclub.org pythoner.com pythonheidong.com pythonke.com pythonlion.com pythonthree.com pythontip.com pytk.net pytool.com pytorchtutorial.com pywangqi.com pyxhh.work pyxjiang.com pyxk.com pyxrc.com pyxwapp.com pyxww.com pyycz.com pyynsm.com pyzhbc.com pyzls.com pyzwy.com pz028.com pz6.com pzboy.com pzcgw.com pzdf.com pzds.com pzfc.com pzfcw.com pzhccb.com pzhdahe.com pzhedu.com pzhl.net pzhol.com pzhqx.com pzhqz.com pzhr.com pzhwater.com pzhwyw.com pzjdimg.com pzjiadian.com pzlink.com pzmls.com pznews.com pznrfsy.com pznsh.com pzoom.com pzpu.com pzrex.com pzzc.net pzzx.com q-alumni.com q-bakery.com q-dazzle.com q-parking.com q-supreme.com q.biz q1.com q1cm.com q1qfc323.com q2ak.com q2cdn.com q2d.com q2zy.com q36f.icu q38519je8o.world q5.com q66x11b6c2wfg57.sbs q6c.com q6haqi.com q6u.com q77777777.com q83v5haaz.com q88b.net q88c.net q96bq8m39p.world qa114.com qacctv.com qacn.net qafone.cc qakkan.vip qalex.com qamemc.com qapi.cc qaqa555.com qaros.com qast.com qaxanyu.com qaxanyuv6.com qaxcloudwaf.com qaxwzws.com qaynak.com qazasd.com qazdsa.com qazso.com qaztool.com qazxsdc.com qbangmang.com qbao.cc qbaobei.com qbb6.com qbboss.com qbd888.com qbdgame.com qbewux.xyz qbfnp.com qbgxl.com qbide.com qbihui.com qbiqu.com qbitai.com qbj.cc qbjrxs.com qbjwater.com qbox.me qbox.net qbtxt.net qbtzjt.com qbview.com qbxz.com qc-hr.com qc-shanghaipathology.com qc101.com qc188.com qc6.com qc99.com qca.org qcaipiao.com qcbaas.com qcbone.com qcc.com qcc.qualcomm.com qccip.com qcckyc.com qccost.com qccr.com qccrm.com qcdne.com qcdnlog.com qcdntest.com qcdntest.net qcds.com qcdy.com qcdyj.com qcenglish.com qcgm.net qcgq168.com qchcm.com qches.com qchouses.com qchsym.com qchxt.com qcjslm.com qckuaizhi.com qclc.com qclivecdn.com qcloud-edumall.com qcloud.com qcloud.la qcloudapps.com qcloudcdn.com qcloudcdnsrc.com qcloudcjgj.com qcloudclass.com qcloudcos.com qcloudcos.net qcloudecdn.com qclouder.com qcloudestate.com qcloudgme.com qcloudgslb.com qcloudimg.com qcloudipv6.com qcloudmail.com qcloudmarket.com qcloudns.com qcloudocdn.com qcloudoceanus.com qcloudsmartiot.com qcloudtcic.com qcloudteo.com qcloudtiw.com qcloudtrip.com qcloudtt.com qcloudwaf.com qcloudwzgj.com qcloudzygj.com qcly.love qcly.xyz qcmgkids.com qcmod.xyz qcmoe.com qcmrjx.com qcmuzhi.com qcoco.com qconbeijing.com qconshanghai.com qcplay.com qcq3.com qcql.com qcr.cc qcrencai.com qcrlvip.com qcrqll.com qcsh8.net qcsj.com qcstudy.com qct100.com qctm.com qctsw.com qctx88.com qcvbs1296.com qcwan.com qcwh2021.com qcwhxx.com qcwlseo.com qcwp.com qcwxjs.com qcxrby.com qcxs.com qcxzls.com qcy.com qcymall.com qcyoung.com qcyuns.com qczb.app qd-dy.com qd-metro.com qd-mls.com qd-weimob.com qd.ink qd0513.com qd256.com qd5itt.com qd8.com qd8kbq0.shop qdac.cc qdaeon.com qdaiia.com qdaily.com qdairlines.com qdairport.com qdauction.com qdbdsk.com qdbhuh.com qdbocweb.com qdby.com qdcaijing.com qdcars.com qdccb.com qdccdl.com qdcloudsolution.com qdcu.com qdcykg.com qdcz.com qdd.gd qdd.gg qdd.la qdd2223338a2.shop qdd2223338a9.shop qddfxfpx.com qddlchb.com qddown.com qddsjx.com qddsta.com qdeastsea.net qdedu.net qderzhong.net qdexam.com qdezc.work qdfik.com qdfnscy.com qdfuer.com qdfuns.com qdgaoshanyun.com qdgjj.com qdgw.com qdgxjt.com qdgxqrc.com qdhantang.com qdhengyong.com qdhetian.net qdhkhospital.com qdhmsoft.com qdhongyunxing.com qdhonmon.com qdhr.net qdhsty.com qdhualing.com qdhuaren.com qdhw.com qdhwjs.com qdingnet.com qdipc.com qdjimo.com qdjingchengyiqi.com qdjjwsjf.com qdjttzjt.com qdjunyi.com qdjxhz.com qdjyjtdzsw.com qdkefu.com qdkelinde.com qdkingst.com qdkmjc.com qdkpdy.com qdlanrun.com qdlcl.com qdlib.net qdliding.com qdlinghaiba.com qdlives.com qdliye.com qdlongre.com qdlpay.com qdlups.com qdlyxx.com qdmama.net qdmcxh.com qdmm.com qdmswx.com qdn4ydsg3s.com qdnsyh.com qdnxsyy.com qdnzrmyy.com qdpdjx.com qdport.com qdpr.com qdqiche.com qdqihang.com qdqs.com qdrcsc.com qdreads.com qdsay.com qdsbx.com qdsdeyljt.com qdsdyjt.com qdshebao.com qdshoufei.com qdshuiche.com qdslcs.com qdsmjxh.com qdspr.com qdsrmyy.com qdsxtkj.com qdsysj.com qdsyxh.com qdtaide.com qdtech.ai qdtgood.com qdthgs.com qdtianxintai.com qdtrrh.com qdtxdzgc.com qduhwq.com qdurl.cc qdwebim.com qdwenxue.com qdwpa.com qdwxnet.com qdxfgy.com qdxgn.com qdxgysy.com qdxhd.com qdxhs.vip qdxtcw.com qdycdx.com qdyijiamei.com qdyiyi.com qdyuzhengtang.com qdyxbyy.com qdyztang.com qdzhengkang.com qdzhv.com qdzkmj.com qdzls.com qdznjt.com qdzx.net qdzxyy.com qdzz.com qe32.com qebk.com qechu.com qeebike.com qeecc.com qeejoo.com qeeka.com qeeniao.com qeerd.com qefee.com qegcdn.com qeoacc.com qeoacc.net qeoagphm.com qeodns.com qeodns.net qeqnet.com qera.online qerwsoft.com qeteshcn.com qeto.com qetoken.com qeyrhhy.com qf-meter.com qfang.com qfangimg.com qfbcs.com qfbio.com qfbwcd.xyz qfcgroup.com qfclo.com qfdeng.com qfdengn.com qfedu.com qfeiche.com qfiee.com qfihdr.com qfns1.com qfpay.com qfpq.com qfrost.com qfrxyl.com qfsh.com qfsyj.com qftimg.com qftouch.com qfull.com qfun.com qfvip.net qfwl.com qfxcha.com qg.net qg108.com qgb2b.com qgbnzb.com qgbzyzl.com qgcyjq.org qgenius.com qgfund.com qgggxxw.com qggj.com qggzszk.org qgjzsc.com qgkjacc.com qgodb.com qgpx.com qgqc.shop qgqy.com qgren.com qgsydw.com qgtql.com qgtsvvm1278.vip qgvps.com qgwzjs.com qgxl.org qgyqshz.com qgysj.org qgyyzs.net qgzb.net qgzxx.com qgzzz.com qh-cdn.com qh-dl.com qh-hospital.org qh-lb.com qh.com qh24.com qh4321.com qh6bc.com qh9y.com qhangyun.com qhass.org qhball.com qhbtv.com qhcby.com qhcdn.com qhch520.com qhchcb.com qhclass.com qhcro.com qhcswhh.com qhcuvj3143.vip qhd-marathon.com qhd.net qhdast.com qhdatongnews.com qhdcm.com qhderwei.com qhdgjj.com qhdglc.com qhdjgyy.com qhdlcdn.com qhdnews.com qhdnxgyy.com qhdren.com qhduhu.com qhdvtc.com qhdxgps.com qhdxw.com qhdzyy.com qhea.com qhee-ma.com qhee.com qhfx.net qhfzcp.com qhgas.com qhgufen.com qhgwh.com qhholding.com qhhxnw.com qhimg.com qhimgs.com qhimgs0.com qhimgs1.com qhimgs2.com qhimgs3.com qhimgs4.com qhimgs5.com qhimgs6.com qhimi.com qhjyks.com qhkyfund.com qhlhfund.com qhlingwang.com qhlyou.com qhm123.com qhmed.com qhmgf.com qhmsg.com qhnews.com qhong.net qhpcc.com qhpta.com qhrch.com qhrcsc.com qhres.com qhres2.com qhrqxh.com qhsat.com qhsdzs.com qhsetup.com qhsklw.com qhsrmyy.com qhssyy.com qhstatic.com qhsxf.net qhtdow.help qhtf-china.com qhtibetan.com qhtui.com qhtycp.com qhtysz.com qhtyzx.com qhuah.com qhupdate.com qhwmw.com qhwptyn.com qhwww.com qhxcjt.com qhxzlsgs.com qhyccd.com qhyh.com qhyhq.com qhyimin.com qhylns.com qhysjt.com qhytyyvx.com qhyzzzs.com qhzpw.com qi-auto.com qi-che.com qi-ju.com qi-wen.com qi10.com qi18.com qi58.com qiaijt.com qiaiju.com qiaiou.com qiak.com qialol.com qian-gua.com qian-lai.com qian.lu qianaolawyer.com qianbao.com qianbaocard.com qianbaogroup.com qianbaohr.com qianbeibei.shop qianbi360.com qianbianapi.com qianbianma.com qianbianxiazai.com qiancangwms.com qiancha.cc qianchenglvdong.com qianchengrh.com qianchengriben.com qianchiyun.com qiancipai.com qiandai.com qiandao.com qiandaoapp.com qiandaoapp.net qiandaocdn.com qiandaohu.cc qiandaqian.com qiandaren.com qiandd.com qiandeups.com qianduan.com qianduanheidong.com qianfan.app qianfan.tv qianfan123.com qianfan365.com qianfanwanmu.com qianfanyun.com qianfeng.com qiang100.com qiangbus.com qiangchezu.com qiangchuan.com qiangfu.xyz qianggen.com qianggen.net qianggou5.com qiangjin.org qiangka.com qianglihuifu.com qiangmi.com qiangqiang5.com qiangren.com qiangsenhg.com qiangshengyanhua.com qiangumeitan.com qiangungun.com qianguyihao.com qiangyingjituan.com qiangyinli.com qianhai12315.com qianhaiaiaitie.com qianhaibs.com qianhaipower.com qianhong.com qianhuajie.com qianhuanhulian.com qianhuaweb.com qianinfo.com qianjia.com qianjianggas.com qianjiangwang.com qianjiapp.com qianjiawen.net qianjiayue.com qianjing.com qianjingdesign.com qianjingkeji.com qianju.org qianka.com qiankoo.com qiankun6.com qiankungroup.com qiankunshopping.com qiankunxin.com qianlai778.com qianlaiye.com qianlht.com qianliao.net qianliao.tv qianliaowang.com qianliht.com qianliii.com qianlima.com qianlimafile.com qianlimazb.com qianling.pw qianlinkj.com qianlong.com qianluxiaoshuo.com qianmaiapp.com qianmaidao.com qianmi.com qianmingyun.com qianmiyun.com qianmoqi.com qianmoufirm.com qianmu.org qiannahotel.com qianniu.com qianp.com qianpailive.com qianpen.com qianpin.com qianping.work qianqi.net qianqian.com qianqiankeji.xyz qianqiantao.com qianrengang.com qianrenge.com qianrihong.net qianrong.me qianselight.com qianshanren.com qianshengqian.com qianshuixing.com qiansiw.com qiant.net qiantangke.com qiantubao.asia qiantucdn.com qianuni.com qianvisa.com qianwa.com qianwanku.com qianwen.com qianxiangbank.com qianxibj.net qianximiye.com qianxin.com qianxincdn.com qianxinet.com qianxingniwo.com qianxingwl.com qianxs.com qianxuecloud.com qianxuew.com qianxueyunke.com qianxun.com qianxunclub.com qianxungroup.com qianxuntrip.com qianyan.biz qianyan001.com qianye88.com qianyierp.com qianyikeji.com qianyinedu.com qianyingzhi.com qianyuangx.com qianyuewenhua.xyz qianyuncare.com qianyuwang.com qianzhan.com qianzhan123.com qianzhanhl.com qianzhengbanliliucheng.com qianzhengdaiban.com qianzhou.shop qianzhu8.com qianzhuvisa.com qiao-cn.com qiao88.com qiaobo.net qiaobocnc.com qiaobuqiao.com qiaobutang.com qiaoclouds.com qiaodan.com qiaofangyun.com qiaofanxin.com qiaoh.com qiaohewei.cc qiaohu.com qiaohuapp.com qiaohumall.com qiaoji8.com qiaojiamuxian.com qiaojiang.tv qiaolianyimin.com qiaolishuiwu.com qiaomaren.com qiaomi.com qiaomu.ai qiaomukeji.com qiaoqiaoyun.com qiaoshang.org qiaoshisui.com qiaoshoujituan.com qiaosidea.com qiaotu.com qiaoxuanhong.com qiaoxuesi.com qiaoyi.org qiaoyinkg.com qiaoyue66.com qiaozhuangjia.com qiaozuji.com qiaqa.com qiaqiafood.com qiawei.com qibali.com qibaodwight.org qibazaixian.com qibingdaojia.com qibingwang.com qibo168.com qiboleqipai.com qibosoft.com qibox.com qibuge.com qibuluo.com qicaispace.com qicaizulinwang.com qichacha.co qichacha.com qichacha.net qichamao.com qichang56.com qichangqing.com qichangv.com qichecailiao.com qichechaoren.com qichedaquan.com qicheedu.com qichegeyin.com qichehot.com qichejingwei.com qichelian.com qicheliliang.com qichemen.com qichemoxing.net qichengplus.com qichepeijian.com qichepinpai.com qicheq.com qichequan.net qichetansuo.com qichetong.com qichexin.com qichexl.com qichezhan.net qichuang.com qichunfdc.com qichunzp.com qicolor.com qicp.net qicp.vip qictools.com qida100.com qidaile.com qideshuiwu.com qideyun.com qidi-edu.com qidian-cos-backup.com qidian-cos.com qidian.com qidian688.com qidianbox.com qidianjob.com qidianla.com qidianmm.com qidianpw.com qidiantu.com qidic.com qidisheng.com qidiwang.com qidong.name qidongcha.com qidongnews.com qidongyx.com qidou.com qidulp.com qiduo.net qie.tv qiecdn.com qieerxi.com qiejingsu.com qiekao.com qiekj.com qieman.com qiepai.com qieracing.com qierge.com qieta.com qieyike.com qieying.com qieyou.com qiezibenpao.com qiezic.com qiezip.com qifake.com qifan1.com qifandianlansh.com qifangw.com qifeiy.com qifeiye.com qifeizn.com qifeng-safety.com qifeng.com qifenxiao.com qifu.me qifub.com qifuip.com qigonggate.com qigongworld.net qigousoft.com qiguagua.com qigumi.com qiguo.com qiguoread.com qihanbio.com qihangcrrc.com qihangw.com qihaoip.com qihaoqu.com qihaxiaoshuo.com qihejy.com qihepaimai.com qihihi.com qihoo.com qihoo.net qihu.com qihu.org qihuaa.xyz qihuangpuji.com qihuangshuyuan.com qihuangzhishu.com qihuapi.com qihucdn.com qihuiai.com qihuiwang.com qihuorumen.com qii404.me qiieer.net qiigame.com qiivoo.com qijedu.com qijee.com qijiadianzi.com qijian99.com qijianzs.com qijiapay.com qijiayoudao.net qijilvxing.com qijishow.com qijishu.com qijiyun.vip qijizuopin.com qijuan.com qijucn.com qikan.com qikanchina.com qikanmulu.com qikanvip.com qikanw.com qike-cloud.com qikegu.com qikekeji.com qikoo.com qikouu.com qikqiak.com qiku.com qikuaibao.com qikucdn.com qikula.com qilaijian.com qilang.net qilanxiaozhu.co qilanxiaozhu.net qilanxiaozhu.vip qilaoshicaishui.com qilecms.com qiliangjia.com qiliaokj.com qilindao.com qiling.org qilinnet.com qilinshuixiang.com qilinxuan.net qilinyiqi88.com qilitech.ltd qiliuxs.com qilong.com qilongtan.com qilongyoule.com qilu-pharma.com qiluce.com qiludb.com qiluhospital.com qiluhr.com qilupaint.com qiluyidian.mobi qiluyidian.net qima-inc.com qimaiz.com qimao.com qimi.com qimiaosenlin.com qiming.tech qimingcx.com qimingjiang.com qimingpian.com qimingvc.com qimingventures.com qimingxing.com qimingzi.net qiminzi.com qimodesign.com qimser.com qimu86.com qinbei.com qinbing.com qincai.com qincaigame.com qinchacha.com qinchuan.com qinchugudao.com qincj.me qinco.net qindaohotel.com qinde.net qineasy.com qinengdongfang.com qiner520.com qinfenpharm.com qing-feng.com qing-shan.com qing-tian.com qing.me qing.su qing5.com qingbh.com qingcache.com qingcaige.com qingcdn.com qingcheng.com qingchengfaren.com qingchenyu.com qingchunbank.com qingchunlu.com qingcigame.com qingclass.com qingclasscdn.com qingcloud.com qingcongxiaoyuan.com qingcty.com qingdan.com qingdao-port.com qingdao-port.net qingdaochina.org qingdaogxt.com qingdaokohap.com qingdaolawyer.org qingdaomaidige.com qingdaomedia.com qingdaomeixie.com qingdaomuseum.com qingdaonengyuan.com qingdaonews.com qingdaoport.net qingdaoren.com qingdaoshenghao.com qingdelan.com qingdou.ltd qingdou.net qingdou.vip qingdouw.com qingf001.com qingfanqie.com qingfeichina.com qingfengchuxing.com qingfengjiaoyu.com qingflow.com qingfo.com qingful.com qingfuwu.com qingfuwucdn.com qingfuwucdn.net qingge666.com qinggl.com qinggonggroup.com qingguo.com qinghaigames.com qinghaihuaer.com qinghe-sh.com qinghe.tv qinghedaxue.com qinghua.cc qinghua2017.com qinghuan.com qinghuaonline.com qinghuaxuezi.com qinghuo.net qingicon.com qingjiaocloud.com qingju.com qingkai.net qingkan.tw qingkaoyan.com qingkeji.com qingkongfy.xyz qingkuaipdf.com qingkuajing.com qingkuw.com qinglan.info qinglanbaseanycast.com qinglanbaseunicast.com qinglanji.com qinglianfood.com qingliange.com qingliangkeji.com qingliaoapp.com qinglidashi.com qingliezhiquan.com qinglin.net qingline.net qinglingvip.com qinglinong.com qinglm.com qinglue.com qinglue.net qinglvpin.com qingly.ink qingmail.com qingmayun.com qingmei.me qingmh.com qingmo.com qingmob.com qingmucdn.com qingmuit.com qingmutec.com qingmuxinli.com qingnianlvxing.com qingniantuzhai.com qingnianwang.com qingpanduola.com qingpin.vip qingping.co qingqikeji.com qingqin.com qingqingmedia.com qingqj.com qingque.co qingqujie.com qingquyp.com qingr.com qingrenw.com qingruanit.net qingruyun.com qingshanpaper.com qingshigame.com qingshou.online qingshow.net qingshuo.com qingshuxuetang.com qingsongcdn.com qingsongchou.com qingsongjituan.com qingsonngxx.com qingstor.com qingsucai.com qingtajiao.com qingtaoke.com qingteng-inc.com qingteng168.com qingtengzhilian.com qingtian16265.com qingtiancms.net qingting.fm qingting123.com qingtingfm.com qingtingip.com qingtingjh.com qinguanjia.com qingui123.com qinguoag.com qingwabs.com qingwk.com qingxianrenminyiyuan.com qingxiaoyun.com qingxinjs.com qingxuetang.com qingxun.com qingyantek.com qingyeyun.com qingyi.com qingying.net qingyuangroup.com qingyuanshihua.com qingyun-it.com qingyun.com qingyuntrip.com qingyunzu.com qingzhanshi.com qingzhicheng.com qingzhifeng.com qingzhiwenku.com qingzhou5.com qingzhouip.com qinheng.com qinhuaiziyun.com qiniu-enterprise.com qiniu.co qiniu.com qiniu.in qiniu.io qiniu.org qiniu.us qiniuapi.com qiniuapp.com qiniublob.com qiniucc.com qiniucdn.com qiniucloud.net qiniucs.com qiniudn.com qiniudns.com qiniudns.net qiniudns2.com qiniug.com qiniuimg.com qiniuinc.com qiniuio.com qiniukodo.com qiniup.com qiniupkg.com qiniuqcdn.com qiniurs.com qiniutek.com qinla.com qinlake.com qinlaobo.com qinlaoke.net qinlinad.com qinlinkeji.com qinms.com qinnongbank.com qinpu.com qinpuwang.com qinqiang.org qinqin.com qinqin.net qinqingshipin.com qinqinxiaobao.com qinqishuhua.org qinronmedia.com qinronread.com qinrun.com qins.com qinshantang.com qinshihu.com qinsilk.com qinsmoon.com qinsuanbazi.com qinxiand.com qinxing.xyz qinxue.com qinxue100.com qinxue365.com qinxuye.me qinyangtv.com qinyuanyang.com qinyukehuan.com qinzhe.com qinzhou.net qinzhou360.com qinzhou8.com qinzhouit.com qinzibuy.com qinzidna.com qionghaif.com qionghi.com qiongming.com qiow.net qipai.com qipai007.com qipaifan.com qipamaijia.com qipayuan.com qipeipu.com qipeiren.com qipeiwuyou365.com qipeng.com qipinshangji.com qiqao.com qiqi2000.com qiqiboke.com qiqids.com qiqilab.com qiqipu.com qiqiuyu.com qiqiuyun.net qiqjc.com qiqu.cc qiquanwl.com qiquha.com qiqumaker.com qiquw.info qiquwen.com qiquyou.com qire123.com qirebook.com qiredy.com qiremanhua.com qirui.com qiruikeji2019.com qisankeji.com qisaoba.com qisbook.com qishenghuo.com qishengliang.com qishiruye.com qishixitong.com qishu.vip qishui.com qishunbao.com qishuta.info qishuta.la qishuta.net qishuta.org qisi.co qisool.com qita.love qitaifu.com qitaijiuye.com qiti88.com qitian-tech.com qitianchina.com qitianpower.com qitongxq.com qituowang.com qiu-ai.com qiu630.com qiuball.com qiubiaoqing.com qiufaqf.com qiufengblog.com qiuhua.com qiujieda.com qiujuer.net qiujunya.com qiukuixinxi.com qiumei100.com qiumeiapp.com qiumibao.com qiumijia.com qiumiwu.com qiupuwang.com qiuqiusd.com qiuquan.cc qiushi.com qiushibaike.com qiushile.com qiushu.cc qiushu.info qiushubang.com qiushuzw.com qiutan.com qiutianaimeili.com qiutiangear.com qiuvps.com qiuweili.com qiuwen.wiki qiuwu.net qiuxian.com qiuxiao.com qiuxietang.com qiuxue360.com qiuxueshe.com qiuyewang.com qiuyexitong.com qiuyueli.com qiuzhang.com qiuzhijiangtang.com qiuziti.com qiwang2025.com qiwangming.com qiwei.com qiwenhui.com qiwenqi.com qiwenya.com qiwiotch.com qiwo.cc qixia.ltd qixiangwang.com qixigame.com qixin.com qixin007.com qixin18.com qixin19.com qixincha.com qixing123.com qixingcr.com qixingquan.com qixingtang.com qixinpro.com qixintian.com qixinworks.com qixiu88.com qixiushouce.com qixoo.com qixuan888.com qixuny.com qiye.la qiye163.com qiye8848.com qiyeboao.com qiyedata.net qiyegongqiu.com qiyegongqiu.net qiyeku.com qiyelipin.com qiyenet.net qiyes.com qiyeshangpu.com qiyeshangpu.net qiyesou.com qiyetong.com qiyetoupiao.com qiyeweixin.com qiyewenhua.net qiyeyougou.com qiyeyouxiang.net qiyi.com qiyi.video qiyikeji.com qiyimusic.com qiyipic.com qiyiw.com qiyou.com qiyoubangbang.com qiyouji.com qiyoujiage.com qiyoutuo.com qiyouwang.com qiyouworld.com qiytech.com qiyu-lighting.com qiyu99.com qiyuanai.com qiyuange.com qiyuanxuetang.net qiyucloud.com qiyue.com qiyuebio.com qiyuesuo.com qiyujiasu.com qiyujoy.com qiyukf.com qiyukf.net qiyuniot.com qiyuns3.com qiyuntong.com qiyunxinfu.com qiyutech.tech qiyutianxia.com qizbov8115.vip qizhao.com qizheplay.com qizhidao.com qizhihaotian.com qizhong166.com qizhu.org qizhu18.com qizhuyun.com qizi.cc qizuang.com qizubang.com qj-group.com qj-robot.com qj023.com qj175.com qj26.com qj99.net qjbchina.com qjbxw.com qjcode.com qjcrcgas.com qjcz.com qjdchina.com qjfy.com qjhlw.com qjhm.com qjia.com qjiajk.com qjidea.com qjimage.com qjis.com qjjfin.com qjjmw.com qjmotor.com qjnice.com qjrc.com qjren.com qjsalia.com qjsalib.com qjsb88.com qjslngy.com qjsmartech.com qjtourism.com qjwenming.com qjwh.xyz qjwhzs.com qjwjw.com qjxgold.com qjystang.com qjzl.com qjzyy.com qk365.com qkagame.com qkan.com qkang.com qkblh.com qkcdn.com qkeke.com qkhg.com qking.ink qkisp.com qkixeld.xyz qkkj88.com qkkjd.com qkl234.com qknode.com qknown.com qktoutiao.com qkttapp.com qkua.com qkvop.com qkyamkl.com qkyxzx.com qkzj.com ql-cellbank.com ql-msx.com ql-spe.com ql009.com ql18.mobi ql1d.com ql361.com ql361.shop qlan99.com qlbchina.com qlbk.com qlchat.com qldgd.com qldz.store qldzj.com qledu.net qlelectrons.com qlhimalayantm.com qlidc.com qlife-lab.com qling.com qlinyun.com qlippie.com qlivecdn.com qlivecloud.com qlivertc.com qlivertc2.com qlivewebrtc.com qlivewebrtc2.com qll-times.com qlmec.com qlmf.com qlmoney.com qlnonwoven.com qlotc.net qlrc.com qlrc114.com qls.fun qls70.com qlteacher.com qluu.com qlwyjy.com qlxiaozhan.com qlxyedu.com qlxzj.com qlydw.com qlyjt.com qlyygl.com qlyyqd.com qlzygs.com qm.net qm119.com qm120.com qm2009.com qm41.com qm69.com qm989.com qmacro.com qmail.com qmango.com qmceo.com qmconfig.com qmcro.com qmei.me qmei.vip qmeikq.com qmhd87.com qmhimalayanpz.com qmhkids.com qmht.com qmht.mobi qmjianli.com qmniu.com qmoji.net qmqm.net qmrms.com qmrobot.com qmsea.com qmsjmfb.com qmtj.net qmtjgame.com qmtmedia.com qmtv.com qmvchina.com qmwtp.com qmwyy.com qmxny.com qmxphoto.com qmxrmt.com qmxyc.com qmyc.ltd qmyq.com qmyyl.com qmz5.com qmz99.com qmzhibo.com qmzs.com qn200.com qnali.com qnapcn.com qnbar.com qncd.com qncha.com qnchrome.com qndb.net qnfcdn.com qnfyg.com qngas.com qngcjx.com qnget.com qngslb.com qngygf.com qnhdkj.com qnhuifu.com qnjslm.com qnjyjt.com qnl1.com qnlinking.com qnlj.com qnmlgb.tech qnqcdn.com qnqcdn.net qnsdk.com qnssl.com qnvipmall.com qnvipxd.com qnw.cc qnydns.com qnydns.net qnzrmyy.com qnzyy.com qoder.ai qoder.com qolai.com qooboo.com qoocc.com qooic.com qooioo.com qookar.com qookkagames.com qoros.com qorosauto.com qosnet.xyz qosq.com qouteall.fun qp108.com qp110.com qp46.com qp49.com qp666.com qpaimg.com qpb187.com qpdca.com qpdiy.com qpgame.com qpgczx.com qphospital.com qpjjku.com qpjylm.com qpkaifa.com qplus.com qplusstatic.com qpoc.com qpstar.com qpwater.com qpxiaoshuo.com qpz.com qpzq.net qq-xmail.com qq.cc qq.com qq.design qq.do qq.md qq.net qq.travel qq.zone qq11999.com qq123.xin qq1398.com qq163.cc qq163.com qq163.net qq190.com qq190.net qq260.com qq2tdd0xx.com qq3366.net qq499.com qq5.com qq52o.me qq5818.com qq620.com qq745.com qq7c.com qq933.com qq937.com qq999q.com qq9v.com qqai.net qqaiqin.com qqan.com qqb.pub qqbiaoqing.com qqbibile.com qqbrowser.mobi qqbytrans.com qqcdn.com qqcfw.net qqcg.com qqcjw.com qqclass.com qqclock.com qqcnop366.vip qqddc.com qqdiannao.com qqdiannaoguanjiadl.com qqdna.com qqdr.com qqdzzb.win qqe2.com qqeml.com qqeo.com qqexmail.net qqexpert.com qqfamily.com qqgameapp.com qqgamedesign.com qqgamemall.com qqgames.com qqgb.com qqgd.com qqgexing.com qqgexingqianming.com qqgfw.com qqgpw.com qqgx.com qqgygd.com qqgyhk.com qqhangjia.com qqhaoma.com qqhaoma.net qqhbx.com qqhjy.com qqhn.net qqhot.com qqhrnews.com qqhubei.com qqhwb.com qqiac.com qqimage.net qqimg.net qqjapan.com qqje.com qqjia.com qqjiyu.com qqjjsj.com qqjm.com qqju.com qqkj66.com qqkjj.com qqkkb.com qqkrmotors.com qqku.com qqkw.com qqmail.com qqmail.email qqmapyx.com qqmc.com qqmcc.org qqmda.com qqmra.com qqmtc.com qqmusic.com qqmusic.store qqnaozhong.com qqnn.net qqopenapp.com qqor.com qqpao.com qqpharm.com qqpifu.com qqplusapp.com qqpuke.org qqq.tv qqq937.com qqqiyemail.com qqqiyeyouxiang.com qqqmmm.com qqqv.press qqrain.com qqread.com qqrizhi.com qqro.com qqscb.com qqservice.mobi qqsgame.com qqsgjy.com qqsgmob.com qqsgplay.com qqshidao.com qqshuoshuo.com qqsk.com qqski.com qqsm.com qqsort.com qqspark.com qqssly.com qqstudent.com qqsurvey.net qqswzx.com qqt.com qqteacher.com qqtest.com qqtf.com qqthj.com qqtjmgg.com qqtlr.com qqtool8.com qqtouxiangzq.com qqtu8.cc qqtu8.com qqtz.com qquanquan.com qqumall.com qqun.com qqurl.com qqwangming6.com qqwebapp.com qqwiki.com qqwinner.com qqwjx.com qqwmba.net qqwmly.com qqwwr.com qqwxmail.com qqwys.net qqxmail.com qqxs.la qqxsnew.net qqxsnew5.com qqxsw.co qqxx.net qqxzb-img.com qqxzb.com qqy189.com qqya.com qqyewu.com qqymail.com qqyn.com qqyouju.com qqywf.com qqyy.com qqzby.net qqzfw.com qqzhi.com qqzi.net qqzimu.com qqzimu.net qqzl.cc qqzmly.com qqzu.com qqzyw.com qqzywang.com qqzzz.net qr-batch.com qr25.com qrcpu.com qrgiant.com qrmanhua.com qrobot.com qrprt.com qrtest.com qrtz.co qrx.cc qrzxx.com qs-jt.net qs12315.com qs5.org qs921.com qsap-group.com qsbank.cc qsbbs.net qsbdc.com qsboy.com qscharge.com qschou.com qsebao.com qsedu.com qsedus.com qseeking.com qsfcw.com qsfm.net qsgx-pt.com qshang.com qshealth.com qsiedu.com qsiso.com qsjsjt.com qsjt.com qsjxzz.com qskggf.com qskj.net qskretkf.com qsl.pub qsmchina.com qsmis.com qsmutual.com qsnctf.com qsnovel.com qspfw.com qspfwadmin.com qss-lb.com qssec.com qstatic.com qstbg.com qstcorp.com qstsking.com qsw.la qswk.com qswnet.com qsxiaoshuo.com qsxiu.com qsxuke.com qsxzls.com qsyfunds.com qsyy.net qszs.com qszt.com qszt.net qt-edu.com qt.com qt119.com qt56yun.com qt6.com qt86.com qtaeixd.com qtav.org qtbig.com qtbtp.com qtcb.net qtccolor.com qtck.net qtcn.org qtctc.org qtdebug.com qtdream.com qtedu.net qteng.net qter.org qtest8.com qtgz.cc qth8.com qthinker.net qtke.com qtkj.love qtlcdn.com qtlcdn.net qtlcdn360.info qtlcdn360.xin qtlcdn360.xyz qtlcdncn.info qtlcn.com qtlcname.com qtlglb.com qtlglb.info qtlgslbcn.com qtlgslbcn.info qtlgslbcn.net qtmojo.com qto-pay.com qtonghua.com qtool.net qtrun.com qtshe.com qtshisan.com qtshu.com qtshu.la qtslog.com qtsyw.com qttc.net qttunion.com qtu8.com qtumist.com qtvnews.com qtw555.com qtx.com qtyd.com qu2000.com qu2345.com qu247.com qu67.com qua.com quaita.com qualcomm-challenge.com qualcomm.cn.cdn.cloudflare.net quality666.com qualtekgz.com quan.mx quan007.com quan05.com quan365.com quanaichina.com quanbailing.com quancang.com quandashi.com quanduoduo.com quanerp.com quanfangtong.net quanfangtongvip.com quanfeng.tech quanfensi.com quanfs.com quanguoban.com quanguoyoubian.com quangushi.com quanhuaoffice.com quanji.la quanji.net quanjiamei.com quanjiaowang.com quanjing.com quanjingke.com quanjinglian.com quanjunkeji.com quanjuwuye.com quankexia.com quanlaoda.com quanlego.com quanlitu.com quanlv66.com quanma51.com quanmaigo.com quanmaihuyu.com quanmama.com quanmamaimg.com quanmamaonline.com quanmeipai.com quanmin-game.com quanmin.tv quanmin110.com quanminbagua.com quanminbb.com quanminfu.com quanoukeji.com quanqiuwa.com quanqiuweishang.com quanquanapp.net quanriai.com quansheng-group.com quanshi.com quanshuge.com quanshui.net quansucloud.com quantacn.com quantaoyougou.com quantil.com quantilcn.net quantilng.com quantobio.com quantongfu.com quantuantuan.com quantum-etc.com quantum-info.com quantumsc.online quanwai100.com quanwiki.com quanxi.cc quanxiangyun.com quanxiankeji.com quanxiaoha.com quanxinfu.com quanyaotong.com quanyin.xyz quanyueqk.com quanyuesc.com quanzhanketang.com quanzhi.com quanzhifu.net quanzhougastronomy.com quanziapp.com quaolai.com quarkbook.com quarkers.com quartzhy.com quasarchs.com quaspa.com quazero.com quba360.com qubang.cc qubaobei.com qubiankeji.com qucai.com qucanzhan.com quce001.com quceaiqing.com quchao.net qucheng.com quclouds.com qudaiji.com qudajie.com qudao168.com qudaowuyou.com qudayun.com qudingshui.com qudong.com qudong51.net qudong9.com qudou100.com qudushu.com quduzixun.com queceng.com quechao.vip quechen.com quectel.com queenl.com quefan.com quegame.com quegui.run quehu.com queji.tw quenergysemi.com queniuaa.com queniuab.com queniuai.com queniuak.com queniual.com queniuam.com queniubc.com queniubd.com queniubf.com queniubg.com queniubh.com queniubi.com queniubk.com queniubl.com queniubm.com queniubn.com queniubq.com queniubt.com queniucdn.com queniucdn.net queniucf.com queniucg.com queniuck.com queniucl.com queniucm.com queniucn.com queniuco.com queniucs.com queniucw.com queniucx.com queniucz.com queniuda.com queniudd.com queniude.com queniudf.com queniudg.com queniudl.com queniudns.com queniudns.net queniudo.com queniudt.com queniuee.com queniueg.com queniueh.com queniuei.com queniueq.com queniuer.com queniues.com queniuez.com queniufa.com queniufc.com queniufg.com queniufi.com queniufj.com queniufm.com queniufr.com queniufw.com queniufz.com queniugd.com queniugm.com queniugslb.com queniugslb.net queniugt.com queniugv.com queniugw.com queniugz.com queniuhe.com queniuhg.com queniuhl.com queniuhp.com queniuhx.com queniuhy.com queniuhz.com queniuib.com queniuic.com queniuif.com queniuig.com queniuih.com queniuin.com queniuiq.com queniuit.com queniuiv.com queniuiy.com queniuja.com queniujd.com queniuje.com queniujf.com queniujg.com queniujq.com queniujz.com queniukk.com queniukq.com queniukr.com queniuks.com queniukt.com queniukw.com queniukx.com queniukz.com queniulb.com queniulf.com queniulg.com queniuli.com queniulp.com queniulr.com queniuls.com queniulu.com queniulv.com queniulz.com queniumc.com queniumd.com queniumf.com queniumh.com queniumn.com queniumo.com queniumy.com queniund.com queniunh.com queniuni.com queniunq.com queniuns.com queniuny.com queniunz.com queniuod.com queniuog.com queniuop.com queniuos.com queniuot.com queniuoy.com queniupa.com queniupc.com queniupe.com queniupg.com queniupj.com queniupl.com queniupq.com queniupz.com queniuqe.com queniuqj.com queniuql.com queniuqm.com queniuqt.com queniuqu.com queniuqy.com queniuqz.com queniurc.com queniurj.com queniurk.com queniurq.com queniuru.com queniurv.com queniurx.com queniusa.com queniusf.com queniusg.com queniush.com queniusi.com queniusj.com queniuso.com queniusp.com queniusr.com queniusv.com queniusy.com queniusz.com queniutc.com queniute.com queniutn.com queniutt.com queniutx.com queniutz.com queniuua.com queniuuc.com queniuuf.com queniuuk.com queniuum.com queniuuq.com queniuus.com queniuuy.com queniuvb.com queniuvc.com queniuvg.com queniuvi.com queniuvk.com queniuvq.com queniuvu.com queniuvx.com queniuwb.com queniuwf.com queniuwh.com queniuwk.com queniuwq.com queniuwx.com queniuwz.com queniuxd.com queniuxe.com queniuxk.com queniuxr.com queniuxx.com queniuxy.com queniuxz.com queniuyb.com queniuyf.com queniuyg.com queniuyk.com queniuys.com queniuyu.com queniuyz.com queniuza.com queniuzd.com queniuzf.com queniuzh.com queniuzl.com queniuzp.com queniuzu.com queniuzv.com queniuzy.com queniuzz.com queryrecord.com quesela.com queshu.com questyleaudio.com questyleshop.com quexiaoxian.com queyang.com qufair.com qufaya.com qufeisoft.com qufeizhou.com qufenqi.com qufenqian.vip qufu123.com qufumarathon.com qufushi.com qufutuan.com qugame.com quguonet.com quhaidiao.com quheqihuo.com quhua.com quhuaxue.com quhuhao.com quhuichang.net quhuo.net quick-global.com quick-touch.com quickapi.net quickbass.com quickcan.com quickcep.com quickddns.com quickdetection.com quickingdata.com quickjoy.com quicklaser.com quicklyopen.com quickpark.cc quicksdk.com quicksdk.net quickswan.com quicktvui.com quickwis.com quiksx.cfd quilimen.com quimg.com quji.com qujiangyizhong.com qujie365.com qujingm.com qujishu.com qujunde.com quk.cc qukaa.com qukan.cc qukanok.com qukanshu.com qukantoutiao.net qukanvideo.com quklive.com qukuai.com qukuaila.com qulaoshi.com qule8.com quledu.net qulianaiba.com qulishi.com quluying.com qulv.com qumaihuishou.com qumaishu.com qumaiyao.com qumaw.com qumi.com qumifeng.com quming.com qumingdashi.com quminglemei.com qumitech.com qun-net.com qun.hk qun100.com qun7.com quna.com qunaer.com qunagai.com qunale888.com qunaly.com qunar.com qunar.ink qunarcdn.com qunarzz.com qunba.com qunchi.com quncrm.com qunfengjixie.com qunfenxiang.net qunhai.net qunhaohotel.com qunhaolawfirm.com qunhei.com qunhequnhe.com qunjielong.com qunke.com qunkeng.com qunliao.info qunligroup.com qunmi.vip qunniao.com qunonnet.com qunsou.co qunteng.net quntengnet.com quntuishou.com qunwin.com qunxiang.club qunxingcable.com qunxingvc.com qunyaninfo.com qunyingkeji.com qunzh.com qunzhuquan.com qunzou.com quoffice.com quotationi.com qupeiyin.com qupingce.com quqi.com quqike.com quqingting.com quqiuhun.com ququabc.com ququyou.com quqxphdm.com qusem.com qushiw.com qushixi.net qushoumiao.com qushuba.com qushuiying.net qutaiwan.com qutanme.com qutaojiao.com qutaovip.com qutecall.com qutechat.com qutemessenger.com qutetalk.com qutevoice.com quthing.com qutianshanav.com qutingting.com qutoutiao.net qutouwang.com qutu.com qutuancan.com qutuiwa.com qutuly.com quumii.com quvisa.com quwan.com quwangming.com quweiwu.com quwenqing.com quwentxw.com quwj.com quwm.com quword.com quwuxian.com quxds.com quxianchang.com quxiang.work quxianzhuan.com quxiaxia.com quxingdong.com quxintiaodong.com quxiu.com quxuan.com quyangyizhong.com quyaoya.com quyibao.com quyinginc.com quyixian.com quyiyuan.com quyou.net quyouhui.net quyu.net quyundong.com quzhiwen.com quzhuanxiang.com quzhubao.com quzwx123.org quzz88.com quzzgames.com qvdv.net qvip.net qvkanwen.com qvlz.com qvpublish.com qvxz.com qw5599.com qwbk.cc qwe1e.com qweather.com qweather.net qweatherapi.com qwebapp.com qwen.ai qwenlm.ai qwepgmyz.vip qwerdns.com qwerhost.com qwfync.com qwgg.com qwgt.com qwimm.com qwing.com qwmtjj360.vip qwocs.com qwpo2018.com qwps.net qwq.link qwq.moe qwq.ren qwq.trade qwqk.net qwqoffice.com qwrmt.com qwsy.com qwuylnl.com qwvv.com qwwz.com qx-era.com qx-kj.com qx-semi.com qx.com qx100.com qx1000.com qx10086.net qx100years.com qx121.com qx162.com qx66.cc qx818.com qxad.com qxbnkj.com qxbsk.com qxckjr.com qxcu.com qxdaojia.com qxdcc.com qxen.com qxfun.com qxgcsc.com qxhospital.com qxhqxh.com qxioqq4283.vip qxiu.com qxjeff.com qxka.com qxkp.net qxlib.com qxllq.com qxme.com qxmugen.com qxnav.com qxndt.com qxnecn.com qxnic.com qxnzx.com qxozm.com qxqing.com qxqxa.com qxrcw.com qxsdq.com qxsfjq.com qxshucai.com qxswk.com qxteacher.com qxtongcheng.com qxtour.com qxtxt.com qxueji4167.vip qxueyou.com qxw.cc qxw18.com qxwoiv.com qxwz.com qxxsjk.com qxy777.com qxyjssb.com qxzc.net qxzsw.com qxzxp.com qy-marathon.com qy-office.com qy-polymer.com qy-qq.com qy-tencentclb.cloud qy-tencentclb.com qy-tencentclb.net qy-tencentclb.work qy.com qy.net qy266.com qy57.com qy6.com qyaninfo.com qybc.com qybhl.com qyc2008.com qycn.com qycn.net qycn.org qycname.com qycylinder.com qyd-rf.com qydimg.com qydqw.com qydsj.com qyer.com qyerstatic.com qyestar.com qyfw168.com qyg12.com qyg30.com qyg447.com qyg9.com qygbet140.vip qygbet381.vip qygbet427.vip qygjyey.com qyglzz.com qygvip128.com qygvip40.com qyhgsb.com qyhl.vip qyhr.org qyhxy365.com qyiliao.com qyins.com qyinter.com qyjg.com qyjidianqi.com qyjks.com qykh2009.com qykjedu.com qymdb.com qymgc.com qyous.com qyrb.com qyrcbank.com qyrcrs.com qyrx.cc qysbj.com qysd.net qysgf.com qysport.com qysrmyy.com qyssgame.com qysulian.com qysuliao.com qyszyyy.com qyt.com qyt1902.com qytdesign.com qytranslation.com qytst.com qytxhy.com qyunapp.com qyuner.com qyuns.net qywater.net qywcom.com qywd.com qywww.net qyx888.com qyxa-tencentclb.cloud qyxa-tencentclb.com qyxa-tencentclb.net qyxa-tencentclb.work qyxxpd.com qyxzfw.com qyyt.com qyyun.cloud qyzba.club qyzc.net qyzlgame.com qyzss.com qz-jk.com qz100.com qz123.com qz456.com qz5z.com qz828.com qz96811.com qz97.net qzair.com qzbbs.com qzbgzz.com qzbhgyl.com qzbhzy.com qzbwjx.com qzccbank.com qzchuxing.com qzcia.com qzcklm.com qzclfc.com qzcns.com qzct.net qzda.com qzdatasoft.com qzdswy.com qzdxcj888.com qzdyyy.com qzesx.net qzeyy.com qzfwckj.com qzg123.com qzgc.net qzgchj.com qzgfyy.com qzgjjp.com qzgkwy.com qzhaite.com qzhlkj.net qzhmyy.com qzhmzx.com qzhospital.com qzhrkj.com qzhsjc.com qzhslw.com qzhuye.com qzhxshipping.com qzimg.com qzj2.com qzjcd.com qzjgxx.com qzjhscl.com qzjhsd.com qzjianwo.com qzjkw.net qzjy029.com qzjycc.com qzjzyy002.com qzkangfu.com qzkcw.com qzkey.com qzkjyy.com qzks.com qzktzc.com qzlanwei.com qzld.com qzldkj.com qzljjq.com qzlo.com qzlog.com qzlwnm.com qzmktjt.com qzmtgs.com qznovel.com qznovelpic.com qznovelstatic.com qznovelvod.com qznxt.com qzone.cc qzone.com qzoneapp.com qzonei.com qzqcfw.com qzqcw.com qzqiye.com qzqn8.com qzqstudio.com qzqxd.com qzqxw.com qzrbx.com qzrc.com qzrcsc.com qzrcw.com qzread.com qzrencai.com qzsdkj.com qzsfy.com qzsgyxx.com qzshangwu.com qzshly.com qzsmxx.com qzsqsnhdzx.com qzssdy.com qzsx168.com qzsystem.com qzsyy.com qzszyy.com qzt520.com qztc.vip qztingche.com qztour.com qztsecurity.com qztszls.com qztvxwgj.com qzwb.com qzwgw.com qzww.com qzxdianzi.com qzxkeji.com qzxx.com qzyckhzx.com qzylyp.com qzynhhmm.com qzyonyou.com qzyuchao.com qzyun.net qzyz.com qzyzt.com qzzdtc.com qzze.com qzzgdl.com qzzhedu.com qzzhonghan.com qzzhwk.com qzzjchy.com qzzljx.com qzzn.com qzzpw.net qzzres.com qzzsbx.com qzzyyy.com qzzzg.net r-china.net r-tms.net r.bing.com r.biz r12345.com r147emh.com r1y.com r2009.com r220.cc r2coding.com r2yx.com r302.cc r51.net r5g.cc r5k.com r5tao.com r77777777.com r8.com r8.net r8856.com r8857.com r8876.com r89gr9gr.ink r8hr7.net r9922.com r9t1.com ra022.com ra2ol.com raas1.com rabbit1117.com rabbitbbs.com rabbitpre.com rabbitpre.me rabbitserve.com rabook.com rabschina.com race604.com racent.com racetigertiming.com rachina.org racing-china.com racktray.com racpro.net racsd.com racymj.com radar-ev.com radiate-electronics.com radicalmail.net radida.com radio1964.com radio366.com radiotj.com radiowar.org radissoncollection-wuxi.com radius-america.com radleybagssaleuk.org raeblog.com rafflesmedicalchina.com ragdgs.com ragnarokcn.com raharyanto.com rahisystems-cn.com raidc.com rail-metro.com rail-transit.com railcn.net rails365.net railsctc.com railshj.com railwaybill.com railworkschina.com raina.tech rainbond.com rainbowcn.com rainbowred.com rainbowsoft.org rainbutterfly.xyz rainclassroom.com raindi.net raineggplant.com raingray.com rainhj.com rainhz.com raink.org rainlain.com rainng.com rainso.com rainwe.com rainyun.com raise-win.com raisecom.com raisedsun.com raisewebdesign.com raisingsun.xyz raiyi.com rajaluck.work rajax-inc.com rajax.me rajyj.com rakinda-aidc.com rakinda-xm.com rakutabichina.com rakvps.com ramadaplaza-ovwh.com ramboplay.com ramostear.com rampingup.com ramsdei.com ramventures.com ramwaybat.com rancat.im randengseo.com randongada.com randongma.com randyandtheresa.com ranfenghd.com rangercd.com rangnihaokan.com rango.fun rangotec.com rangti.com rangxue.com rangzong.com ranhou.com rankingonline.jp ranknowcn.com ranliao.biz ranling.com ranqibiao.net rantu.com ranwen.net ranwen.org ranwena.com ranxi.net ranyangrent.com ranzhi.net ranzhi.org raobee.com raoke.net raoluns.com raonie.com raorao.com rap-pro.com rapidppt.com rapoo.com rapospectre.com rarbt.fun rarcbank.com rarelit.net rarone.com rashanghai.org rashost.com raspigeek.com rastargame.com rat.dev rat3c.com rate2003.com rationalwh.com ratogh.com ratoo.net rauto.com ravenna0943.xyz raverstern.site rawanfa.com rawchen.com raxtone.com ray-joy.com ray1988.com ray8.cc raycham.com raycim.com raycloud.com raycom-inv.com raycuslaser.com raydata-asset.com raydata-mobile.com raydata-open.com raydata-web.com raydata.cc raydata.info raydata.pro raydataasset.com raydatamobile.com raydataopen.com raydataweb.com raydonet.com rayenergytech.com rayfalling.com rayfaydata.com raygame3.com raygame4.com rayiantway.com rayjoy.com raykite.club raykite.com raykite.info raykite.net raykite.vip raykite.xyz rayli.com raylink.live raymage.com raymx-micro.com raynext.info rayoptek.com rayp.com rayps.com rayrjx.com rayseasc.com raysgo.com raysilicon.com raystek-p.com raystesting.com raysync.cloud raysyun.com raythonsoft.com raytine.com raytoon.net rayuu.com rayvision-tech.com rayvision.com raywit.com razerapi.com razersynapse.com razerzone.com razrlele.com raztb.com rb-parking.com rb32.com rb400.com rbi-china.com rbischina.org rbkwater.com rbladycrusaders.com rbotai.com rbqq.com rbtxw.com rbz1672.com rbzarts.com rbzygs.com rc-ev.com rc0817.com rc1001.com rc114.com rc120.com rc168.com rc3cr.com rc775.com rcaiv.com rcbc888.com rcbuying.com rccaijing.com rccchina.com rcche.com rcdang.com rcesssc.com rcfans.com rcgus.com rchsrc.com rchudong.com rcjypx.com rclbbs.com rclhome.com rclolci.com rclrow.com rclsemi.com rcmarble.com rcmxw.com rcnep.com rcolab.com rcpx.cc rcswo.com rcsxzx.com rcunxyn.com rcuts.com rcwl.net rcyd.net rcyjw.com rcyxdk.com rcz.cc rczhuyu.com rczp.org rczx.com rd-cn.com rd-game.com rd351.com rdacs.com rdadiy.com rdamicro.com rdbuy.com rdcolg.net rdcv1.com rdcv1.net rddesign.cc rddoc.com rdedu.net rdfis.com rdfybk.com rdfz.com rdgcs.com rdgcw.com rdgz.org rdgzxx.net rdhyw.com rdidc.com rdjmgg.com rdmicro.com rdnsdb.com rdplat.com rdqczl.com rdqh.com rdsdk.com rdsms.net rdwork.com rdxmt.com rdyjs.com rdympjoqbu.work rdzjw.com rdzs.com rdzx.net rdzy.net re25.vip reabam.com reach-ad.com reach-biology.com reachace.com reachauto.com reachsh.com reachsurgical.com reachtone.com reachwin.net react-china.org react.mobi read678.com readboy.com readceo.com readdsp.com readend.net readers365.com readfollow.com readfree.net readgps.com readhb.com readhr360.com readhub.me readke.com readlevel.com readlink.com readlishi.com readm.tech readmeok.com readnos.com readnovel.com readpai.com readpaper.com readpaul.com readse.com readten.net readu.net ready4go.com reai120.com realape.com realapp.xin realbiogroup.com realcybertron.com realfoodiescompost.com realforcechina.com realibox.com realks.com reallct.com realliniot.com realmax-sh.com realmebbs.com realmemobile.com realmofswords.com realor.net realsee-cdn.com realsee.com realshark.com realtech-inc.com realtek-rtd.com realtimecn.com realtorforce.ca realxen.com realyuan.com reanda.com reapdaro.com reardatchina.com reasonclub.com rebang.today rebatesme.com rebdy.com rebo-group.com rechaos.com rechulishebei.com recitymedia.com reckfeng.com recodeal.com recolighting.com reconova.com recordpharm.com recovery-soft.com recovery-transfer.com recoye.com recuvachina.com recycle366.com red-apple.net red-yellow.net redapplechina.com redatoms.com redbaby.com redbascket.com redbeeai.com redcome.com redcross-hx.com redcross-sha.org reddogchina.com redearth.com redefine.ltd redenmc.com redfcv.com redflag-linux.com redflagseed.com redhome.cc redhongan.com redhtc.com redianduanzi.com redianmao.com redianyuansu.com redianyule.com redianzixun.com rediao.com redidc.com redisfans.com redmagic.com redmart.com redmou.com rednetdns.com rednote.com rednote.life rednotecdn.com redocn.com redodopower.com redoop.com redou.com redoufu.com redox-med.com redphon.com redq.cc redraingame.com redrcd.com redream.com redredsquare.com redsea888.com redsh.com redshu.com redstarwine.com redstonewill.com redsun-nsh.com redsun-rp.com redsungd.com redsungz.com redtriphome.com redug8dqjjktoapmdfmqymrvi0iupi.com reduxingxuan.com redyue.com redyue.org reed-sinopharm.com reedoun.com reeidc.com reeiss.com reeji.com reenoo.com reenoo.net reeoo.com refined-x.com refineidea.com refire.com refond.com reformdata.org reg007.com regal-marathon.com regal-raptor.com regenchem.com regengbaike.com regexlab.com regexr-cn.com reglogo.net regltd.com regtm.com regulatory-ledger-transaction-check.com reguo.com rehiy.com rehn.cc reht.com rehtt.com rehuwang.com reibootmac.com reignwood.com reilybrand.com reinness.com rejesafe.com rejushe.com rek8.com rekong.com rekonquer.com rekoo.com rekoo.net rela.me relangbang.com relangdata.com relativelk.com relaychina.org relayx.io relenger.com reliabiotech.com reliangbiao.com reliao.tv rellet.com reloadbuzz.com relxtech.com relxyanyou.com rely87779777.com remaijie.net remapcity.com remax-bj.com remenxs.cc remixai.com remixicon.com remo-ai.com remodelife.com remotcon.mobi remoteaps.com remotedu.com remyhumanhairextension.com renai-edu.com renaihospital.com renaishiyao.com renaissancehotelhuizhou.com renaren.com renbenai.com renbenzhihui.com renbj.com rencaijia.com rencaijob.com rencheng1991.com rendajingjiluntan.com renderbus.com renderincloud.com rendeyixue.com rendiyu.com rendna.com rendoc.com renead.com renegade-project.org renelgroup.net renergy-me.com renew-cmda.com renew-cn.com renfei.net renfutm.com renguokeji.com renhaocw.com renhe888.com renhebusiness.com renhence.com renhuaicode.com renji.com renjian.com renjiaoshe.com renjiyiyuan.com renkky.com renle.com renleisheji.com renlijia.com renliwo.com renlu.net renmaiku.com renmaitong.com renminkaiguan.com renminyixue.com renny.ren renping.cc renren-inc.com renren-x.com renren.com renren.io renrenbeidiao.com renrenchaxun.com renrenche.com renrencou.com renrendai.com renrendoc.com renrenfinance.com renrening.com renrenlun.com renrenmoney.com renrenpeizhen.com renrenshaike.com renrenshe.com renrenshipu.com renrensousuo.com renrenstudy.com renrensucai.com renrentou.com renrentrack.com renrenyee.com renrk.com renruihr.com renrunkeji.com rensa-hanno.com rensheng123.com renshouks.com renshouren.com rent.work renwen.com renwenyishu.com renwuduo.com renwuji.com renwulian.com renwumatou.com renyiwei.com renzaoshu.com renzhemao.com repai.com repaiapp.com repair5g.com repanso.com repian.com replays.net replica.club replicabest.cc replicachinawatch.vip replicahot.cc replicais.com replicaluxury.cc replicareloj.es replicasale.cc replicashop.cc replicasreloj.com replicasrelojlujo.com replicaswiss.co replicaswissclocks.com replicawatchaaa.cc replicawatchhot.com replicawatchshipping.com replicawatchshop.cc replicawatchsshop.cc replicheorologio.com repliquemontresdeluxe.fr repliquesuisse.co repont.com reportify.cc reportrc.com reportway.org reprogenix.com reptilesworld.com reputatioy.com reqable.com reqgvheo.com rergdfh.com reseetech.com resemblancey.com resemi.com reservehemu.com resheji.com resistor.today resnics.com resnowshop.com resona-wujl.com resone-shinab.com resowolf.com respeaonsct.com respect-lab.com respondaudio.com respusher.com resset.com resturbo.com resuly.me retailo2o.com retalltech.com retiehe.com retopon.com retouchpics.com return.net returnc.com reveetech.com revefrance.com revenuads.com reviosky.com revolut.ltd revolutwebapp.com rew65.com rewanyouxi.com rewnat.xyz reworlder.com rewuwang.com rexcdn.com rexdf.org rexinyisheng.com rexsee.com rexueqingchun.com reyinapp.com reyun.com rezhanwang.com rf-bed.com rf-china.com rf-link.com rf.com rf.hk rfaexpo.com rfc2cn.com rfchina.com rfcreader.com rfdl88.com rfeyao.com rffan.info rfgjhz.com rfhhzx.com rfid-e.com rfidcardcube.com rfidfans.com rfidnfk.com rfidtech.cc rfilter.com rfjd.com rfjq.com rfk.com rfmwave.com rfthunder.com rfylyp.com rg-marathon.com rg-pharma.com rg950.com rgaxobcs.com rgble.com rgdse.shop rgkjyp.com rgoo.com rgrcb.com rgsgnj.com rgslb.com rgtjf.com rgxw.com rgyh6t.com rgyun.com rgzbgroup.hk rh31.com rh98.com rhce.cc rhcncpa.com rhcqmu.com rhctwy.com rhcyl.com rheaeco.com rheemchina.com rhexe.com rhhz.net rhine-inc.com rhinosgamestwhk.com rhinoxky.com rhjoyhotel.org rhkj.com rhky.com rhnewmaterials.com rhoadshomebuyers.com rhonghai.com rhphos.com rhsj520.com rhspring.com rhtimes.com rhtzjt.com rhusen03.com rhwatchcn.com rhwatches.com rhyme.cc rhypw.com ri-china.com riande.com rianico.tech riaway.com ribaoapi.com ribaocdn.com ribencun.com ribenguwan.com ribio.com ribolia.com ricebook.com ricequant.com riceyun.com rich-chang.com rich-fc.com rich-futures.com rich-healthcare.com richardfw.com richeninfo.com richhurry.com richiecn.com richinfer.net richkays.com richlandsfarm.com richlifeads.ru richong.com richseafood.com richsuntrade.com richtech123.com richtechcn.com richtj.com ricklj.com rickyfabrics.com rickysu.com rictos.com ridgepole.com rido-ja.com riecent.com rifagroup.com rifapm.com rifubao.com rigen-bio.com rigerna.com rigger-micro.com rightknights.com rightpaddle.com rigol.com rigouwang.com rigums.xyz riitao.com riji001.com riji100zi.com rijigu.com rijiwang.com rikua.com rili11.com rili19.com rilijingling.com rilingpec.com riliri.com rilvtong.com rim20.com rimaiwang.com rin9.com ringdoll.com ringerswesternauoff.com ringofelysium.com ringpu.com rining.com rinlink.com rinvay.cc rioalc.com riogene.com riolu.lol riowine.com ripic.xyz rippletek.com riqicha.com risc-v1.com riscv-dev.tech riscv-mcu.com riscv-summit.com risde.com rise99.com risecenter.com risechina.org riselinkedu.com risen-pharma.com risencn.com risenenergy.com risesoft.net riseyears.com risfond.com rishiqing.com rishuncn.com rising-eo.com risingauto.com risinggas.com riskbird.com riskivy.com risongtc.com risuiwd.com risun.com riswing.com ritaichina.com ritao.hk ritaojiang.com ritaomeng.com ritarpower.com rivalsa.net riveralydia.shop rivergame.net riverinepm.com riverlimittech.net rivocean.com riwise.com rix-dl.com riya.cc riyingkj.com riyuandianzi.com riyuexing.org riyuezhuan.com riyugo.com riyutool.com rizbbs.com rizhao.net rizhaociming.com rizhaogongshui.com rizhaokjg.com rizhaosteel.com rizhaoxl.com rizhili.com rizhiyi.com rizhuti.com rj.link rj.net rj668.com rj889.net rjaaa.com rjcopy.com rjdownd.com rjetech.com rjeye.com rjfc110.com rjgcz.com rjghome.com rjh0.com rjhcsoft.com rjitxy.com rjlqq.com rjoy.com rjpharm.com rjpharma.com rjreducer.com rjs.com rjsjmbwx.com rjsos.com rjtx.net rjty.com rjxzjx.com rjzxw.com rk-light.com rk120.com rkanr.com rkaq110.com rkcfmfm97.com rkckth.com rkdatabase.com rkddzda.com rkeji.com rkgaming.com rkkgyy.com rklive888.com rksec.com rkvir.com rkzxhyy.com rl-consult.com rl1vypwyd2.com rlair.net rljydt.com rlkj.com rlkj.net rlmeijia.com rlnk.net rlreader.com rlsofa.net rltyll.com rlw27.com rlydw.com rlyl.net rlzdh.com rlzyxa.com rm.run rmall-solution.com rmb.sh rmbbk.com rmbgame.net rmbgd.com rmburl.com rmcteam.org rmcvqq.sbs rmejk.com rmgvx.com rmhospital.com rmjiaju.com rmjtxw.com rmny.tech rmrbwc.com rmrun.com rmsznet.com rmttjkw.com rmtyun.com rmwxgame.com rmxiongan.com rmysjzx.com rmzs.net rmzszp.com rmzt.com rmzxb.com rn-core.com rn-hswh.com rnfengwo.com rngdyy.com rngmoe.com rngtest.com rnhospital.com rnhy.net rnmachine.com rnote.com ro50.com road-group.com roadhb.com roadjava.com roadlady.com roadoor.com roadqu.com roadsignads.com roadtoempress.com roadwaygroup.com roai.shop roaing.com robam.com robbyant.com robei.com roboeyeai.com robomaster.com roboneo.com roboo.com robook.com robopeak.net roborock.com robosense.ai robot-ai.org robot-china.com robotech-log.com robotime.com robotiot.org robotphoenix.com robotplaces.com roboxx.ltd roc-cnc.com roca026.com rocaircraft.com rocar.net rochat.tech rock-chips.com rockbrain.net rockbundartmuseum.org rockdata.net rockemb.com rockerfm.com rockflow.tech rockjitui.com rocklogistic.com rockontrol.com rockorca.com rockrobo.com rockru.com rockx.pub rocky.hk rockyaero.com rockyenglish.com rockyglass.com roclee.com rocoswatch.com rocxgroups.com roffar.com roguelike.com roguelitegames.com rohm-chip.com roidmi.com roii.cc roiland.com rojewel.com rokeyyan.com rokid.com rokidcdn.com rokub.com roland-china.com rolipscn.com rollupjs.com rom100.com rom333.com romantic-ltd.com romantic214.com romens.cloud romhui.com romielf.com romjd.com romleyuan.com romney-lighting.com romo.tech romonupark.com romzhijia.net romzj.com ronbaymat.com roncoo.com rondygroup.com rong-data.com rong-edge.com rong-rtc.com rong-sheng.com rong100.com rong360.com ronganjx.com ronganquan.com rongba.com rongbiz.com rongbiz.net rongbst.com rongcfg.com rongchain.com rongchaodichan.com rongcheer.com rongchenjx.com rongdasoft.com rongdatamall.com rongded.com rongdeji.com rongechain.com ronggangcity.com ronggongyeya.com rongguang-sh.com ronghai.com ronghedai.com ronghotels.com ronghuajixie.com ronghub.com ronghuiad.com ronghuisign.com rongji.com rongjiagroup.com rongkang.com rongkao.com rongkeyiyuan.com rongledz.com rongmaowl.com rongmei.net rongnav.com rongnews.com rongqu.net rongroad.com rongsheng.biz rongshiedu.com rongshu.com rongshuweb.com rongshuxia.com rongstone.com rongtai-arch.com rongtai-china.com rongtongworld.com rongwenest.com rongwengroup.com rongxingroup.com rongxuancast.com rongyanshe.com rongyao666.com rongyaozhiguang.com rongyi.com rongyilian.net rongyimao.com rongyitechnology.com rongyizhaofang.com rongyuechem.com rongzhitong.com rongzhongleasing.com rongzhongloan.com rongzhougucheng.com rongzi.com ronpharm.com rontgens.com roobo.com rooderscooters.com rooee.com roof325.com roogames.com rookmemorizevoluntary.com roongeimahwo.com roosur.com root-servers.world root1111.com rootcloud.com rootguide.org rootintech.com roouoo.com ropefitting.com ropinsite.com ror-game.com rorotoo.com ros-lab.com ros6.com rosabellass.store rosaryshelties.com rosbox.net rosdn.com rose.ren rosecmsc.com rosedata.com rosefinchfund.com rosepie.com rosesandgold.fun rosewin.com rosin-china.com rosirs-edu.com rosmontis.com rosnas.com rosoo.net rossoarts.com rossoarts.net rossopharm.com rossroma.com roswiki.com roszj.com rotai.com rotom-x.com rotora-china.com rotorgroup.com rouding.com rouexdmv.com roujiaosuo.com roukabz.com roule.org roundexpo.com roundyule.com rouruan.com roushidongwu.com rousin.com route78asia.com router.tw routerclub.com routeryun.com routewize.com routuan.com rouxiutang.com rouzao.com rouzhitang.com rovbox.com rowa.com rowcan.com rowlib.com roxinq.com roxmotor.com royalsh.net royalym.com royole.com royotech.com royqh.net roywang.com rp-field.com rp-pet.com rpa-cn.com rpaii.com rpfieldcdn.com rpg99.com rpgmoba.com rpo5156.com rprnolz.com rpy.net rq.run rqb99.com rqgtzit.com rqjtp.com rqkr.com rqrcw.com rqrlxx.com rqyy.com rqyz.com rr-sc.com rr365.com rrajz.com rrb365.com rrbay.com rrbjt.com rrbus.com rrchem.com rrcimg.com rrdtz.com rrfed.com rrfmn.com rrimg.com rrioo.com rrjc.com rrkf.com rrky.com rrl360.com rrlicai.com rrmj.tv rrppt.com rrrdai.com rrrrdaimao.com rrrxz.com rrs.com rrsurg.com rrswl.com rrting.net rrtv.vip rrwtp.com rrxf.online rrxh5.cc rrxiu.cc rrxiu.me rrxiu.net rrxiuh5.cc rrzu.com rrzuji.com rrzwl.com rrzxw.net rs-xrys.com rs485.net rsachina.org rscazvdbfpbyzqdvpy1m.com rscazvdbfpbyzqdvpylm.com rscygroup.com rsdcw.com rsdgd.com rsdsgy.com rsdxjd.com rsdyy.com rsdznjj.com rsfang.net rshao.com rshaoapp.com rshdsz.com rshf88.com rshjgc.com rsjq.org rsjytx.com rskjx.com rsl.cc rslg-china.com rsm.download.prss.microsoft.com rsnmxd.com rsnschina.com rsplcdcs.com rspwj.com rsq111.com rsrlzysc.com rss.ink rsscc.com rssdtec.com rssso.com rsttdsaaas.icu rsttest.com rsty77.com rsuedu.com rsun.com rsw163.com rswaf.com rswl.cc rsxc01.com rsxmgl.com rsybattery.com rsyzs.com rszfg.com rszkw.com rt-blend.com rt-ics.com rt-thread.com rt-thread.io rt-thread.org rtacdn-os.com rtahengtai.com rtalink.com rtb5.com rtbasia.com rtbbox.com rtbmax.com rtbpb.com rtbtmc.com rtbwave.com rtc-web.com rtc-web.io rtcdeveloper.com rtddisplay.com rtdsoft.com rtf1688.com rtfcode.com rtfcpa.com rtftq.org rtfund.com rtfzfl.com rthpc.com rti-investor.com rtjxssj.com rtmap.com rtmobi.cc rtprc.org rtrrx.com rtsaas.com rtsac.org rtsc-gift.com rtxapp.com rtxonline.com rtxplugins.com rtxuc.com rtyxpt.com rtyy.com ru5sq.com rua93.online ruan.cloud ruan8.com ruanchaomin.com ruanduo.com ruandy.com ruanfujia.com ruanjian60.com ruanjiandown.com ruanjianwuxian.com ruanjianya.net ruanjiesh.com ruankao.com ruankaodaren.com ruankaokao.com ruanko.com ruanmei.com ruansky.com ruansky.net ruantiku.com ruanwen.la ruanwen.tv ruanwengfa.com ruanwenhui.com ruanwenkezhan.com ruanwenlala.com ruanwenpu.com ruanwenshijie.com ruanx.net ruanyuan.net ruazi.com rubaoo.com rubbervalley.com rubinn.com ruby-china.com ruby-china.org rubyconfchina.org rubyer.me rubyfoods.com rucedu.net ruchee.com ruchu.club ruczzy.com rue123.com rueiran.com ruesu.com rufei.ren rufengda.com ruffhousetraining.com rufida.com rugao35.com rugaobbs.com ruguoapp.com ruguojiaoyu.com ruhaivip.com ruhnn.com rui.plus ruiaiad.com ruian.com ruianfang.com ruianrz.com ruibai.com ruibaigroup.com ruibangwl.com ruiccm.com ruichengmedia.com ruichun120.com ruicitijian.com ruida.org ruidaedu.com ruidaen.com ruidan.com ruidang.com ruidaxx.com ruidengkeji.com ruideppt.com ruideppt.net ruidongcloud.com ruidroid.xyz ruidsp.com ruiduobao.com ruienkj.com ruifang-tech.com ruifengchemical.com ruifengdisplay.com ruifengjk.com ruifuwatch.com ruige.com ruigedf.com ruigezx.com ruigushop.com ruihaimeifeng.com ruihaozhanlan.com ruihengyiliao.com ruiheyuanny.com ruihongip.com ruihuajw.com ruihuaxinxi.com ruihuo.com ruiii.com ruiinsurance.com ruijie.com ruijiehuanbao.com ruijienetworks.com ruijiery.com ruijieyun.com ruijinginfo.com ruijinintl.com ruijinyy.com ruikangjinshu.com ruilibi.com ruilimr.com ruilinblw.com ruiniucn.com ruiniweier.com ruipai.com ruipengkeji.com ruipengpet.com ruipupharma.com ruiscz.com ruisheng.cc ruishengseal.com ruisilc.com ruisizt.com ruisong.tv ruisu.cc ruit56.com ruitairt.com ruite-tec.com ruitengmaoyi.com ruitian.com ruitiancapital.com ruitianjc.com ruiuav.com ruivihome.com ruiwant.com ruiwen.com ruiwenruanjian.com ruixhz.com ruixiangbest.com ruixiangdy.com ruixin-eht.com ruixing.cc ruixueys.com ruixuncw.com ruixunidc.com ruixunidc.net ruiyang-ra.com ruiying3d.com ruiyingkeji.com ruiyitech.com ruiyuanchina.com ruiyuanobserve.com ruiyun.com ruiyunit.com ruize66.com ruizhi-group.com ruizhipak.com ruizhiqi.com ruizib.com ruizong-gz.com rujiazg.com rujiu.net rukechina.com ruketang.com rukodilla.com rulandchem.com rulei.vip rulejianzhan.com rulianshi.la rumeibox.com rumodesign.com rumosky.com rumt-sg.com rumt-zh.com runbaijia.com runboyun.com runca.net runcmd.com runcobo.com runcome.com rundamedical.com rundapv.com runde666.net rundefit.com rundejy.com rundeschool.com runergy.com runff.com runforint.com runfox.com runfujin.com runhe.org runhengfdc.com runhuayou.biz runjf.com runjian.com runjiapp.com runkodo.com runkunoptics.com runlaijituan.com runmang.com runnar.com runner-corp.com runnerbar.com running8.com runningcheese.com runninginchina.org runningman-fan.com runnoob.com runnuokeji.com runoob.com runpho.com runqi-nj.com runqijx.com runsheng.com runshenggk.com runsky.com runsunedu.net runtimebj.com runtimeedu.com runtimewh.com runtronic.com runtuchem.com runwanxin.com runwise.co runwith.cc runxun.com runzechuanmei.com runzefluidsystem.com runzeyuan.com runzi.cc ruochu.com ruodian360.com ruofeisinian.com ruohang.com ruohuo.net ruokuai.com ruonei.com ruons.com ruoren.com ruoshui.com ruosoft.com ruoxia.com ruoyer.com ruoyi.vip ruozedata.com ruozhu.shop ruqimobility.com ruralwomengd.org ruseer.com rusforest-sh.com rushan.com rushb.net rushi.net rushihu.com rushivr.com rushiwowen.org rushmail.com rushui.net russellluo.com rustc.cloud rustdesk.work rustfisher.com rustfs.com rustvnt.com rutbr.com ruthout.com ruthus.com rutron.net ruu6373.com ruubypay.com ruvar.com ruvisas.com ruwen5.org ruxiaoyi.com ruyig.com ruyigou.com ruyile.com ruyiqiming.com ruyishi.com ruyo.cc ruyo.net ruyu.com ruyuecx.com ruyuexs.com ruzong.com ruzw.com rv28.com rv2go.com rvacvzhru.com rvcore.com rvedu.com rvfdp.com rvgyckhp.com rvkol.com rvmcu.com rwb66.com rwd.hk rwdls.com rwjiankang.com rwjtgc.com rwkv.com rwosf.space rwsignal.com rwtext.com rwxqfbj.com rwys.com rx-copper.com rx-semi.com rxbj.com rxcrs.com rxftw.com rxgl.net rxhospital.com rxhui.com rxhysm.com rxian.com rxjhbaby.com rxjt.co rxkjcn.com rxljzy.com rxndt.com rxshc.com rxwsls.net rxxdny.com rxyjqz.com rxys.com rxyushangfw.com ry0663.com ry0751.com ryanbencapital.com ryanchem.com ryansu.tech rybbaby.com rybridge.com rybyurom.com rycc.net ryd-group.com rydbatt.com rydermedical.com rydth5.com ryeex.com rygits.com ryjer.com ryjiaoyu.com ryjoin.com rylfj.com rylinkworld.com rymcu.com rymdh.com rymooc.com ryone.net rypeixun.com rypenwu.com rysy9191.com rytad.com rytx.com rytyaofang.com ryweike.com ryx.store ryxiut.com ryxiut.net ryxkf.com ryyqh.com rz-cm.com rz.com rz.sb rz0375.com rz1158.com rz520.com rzaide.com rzbxgc.com rzcdc.com rzcdz2.com rzfanyi.com rzfdc.com rzfyu.com rzglgc.com rzhr.com rzhushou.com rzhybh.com rzkj999.com rzline.com rzltech.com rzmeijia.com rzok.net rzport.com rzrc114.com rzsf.com rzspx.com rzszp.com rzv5.com rzv7.com rzx.me rzzyfw.com s-02.com s-captcha-r1.com s-famed.com s-jl.com s-ns.com s-pia.org s-q-s.net s-reader.com s-ss.cc s-tech.com s-ts.net s-xsenyuan.com s-yue.com s-zone.com s.xyz s0599.com s0nnet.com s0p6s02x28.com s10000.com s135.com s163.com s1979.com s1blsecgerto.com s1blseclvira.com s1craft.com s1gh.com s1mple.cc s1mplecode.com s2ceda.com s2cinc.com s2g2b2c.com s361.com s369.com s3s9.com s4g5.com s4y6lhotaw.com s4yd.com s575.com s5ex.com s5s5.me s6uu.com s72c.com s74xr605gt.monster s8.pw s8dj.com s8x1.com s936.com s9377.com s98s2.com s9hospital.com s9yun.com sa-ec.com sa-log.com sa-tencentclb.cloud sa-tencentclb.com sa-tencentclb.net sa-tencentclb.work sa-token.cc sa20.com sa516gr70.com sa96.com saaas.com saagasports.com saasddos.com saasops.tech saasruanjian.com saasta.net saaswaf.com saayaa.com saberqq.com sabxg.com sac-china.com sacdr.net sachenpharm.com sact-digital.com sadidc.com sae-china.org saebbs.com saec.cc saegedu.com saen.com saf158.com safbon.com safdsafea.com safeb2b.com safecenter.com safedocumentview.com safeglp.com safehoo.com safejmp.com safejmp.net safeluck.com safemini.club safeneeds.com safenext.com safetyimg.com safetystatic.com safetyvod.com safround.com sagetrc.com sagewc-exp.com sagigame.net sagsaas.com sagw.com sahcqmu.com saheo.com sahvyw8.sbs saibeiip.com saibeinews.com saibo.com saiboauto.com saiboyy.com saic-audi.mobi saic-finance.com saic-gm.com saic-group.com saicdh.com saicdt.com saicfinance.com saicgmac.com saicgmf.com saicgroup.com saichenglogistics.com saicjg.com saicmaxus.com saicmg.com saicmobility.com saicmotor.com saicyun.com saiczd.com saiday.com saidouwang.com saiduo888.com saige.com saihu.com saihuahong.com saihuitong.com saike.com saikerept.com saikr.com sail-lab.net sail.name sail2world.com sailaweiwangluo.com sailfansclub.com saili.science sailingyun.com sailipaint.com sailongmetal.com sailrnal.com sailungroup.com sailunkeji.com sailuntire.com sailway-china.com saiminprecision.com saimogroup.com saimoliku.com sainacoffee.com saintcos.hk sainteco.com saintgreenchem.com saintic.com saintyear.com saipujianshen.com saipujiaoyu.com sairaicc.com sairui020.com saisaiwa.com saitenm.com saiterobot.com saivsi.com saiway.com saiyou999.com saiyouedu.net saiyun.net saiyunyx.com saizhi.com saj110.com sajs.com sakata.one saki.cc sakura.vin sakura286.ink sakway.com saky.site salabs.org saladvideo.com salamatcharity.org salasolo.com sale8.com saleenauto.com saleforin.com salesdish.com salesman-bd.com salg-sichuanair.com saliai.com salogs.com salongweb.com salutecc.asia sam-tec.com samanhua.net samanlehua.com samasty.com same-tech.com samebar.com sameled.com samhotele.com saming.com samirchen.com samite.cc samitead.com samool.com sampux.com samsph.com samsrchina.com samsuncn.net samsunganycar.com samsungcloudcn.com samsungconnectivity.com samsunghealthcn.com samsungroaming.com samsungyx.com samton.net samyang.cc samyuong.com samzhe.com san-health.net san-mu.com san-sheng.net san-tuo.com san-u.com san-yang.com san.net sanabuy.com sanaemio.com sanan-e.com sananyiliao.com sanau.com sanbaiyun.com sanbanggs.com sanbangwt.com sanbao-steel.com sanbao0563.com sanbum.com sancaiheast.com sancanal.com sanchuangke.com sancov.com sandaha.com sandai.net sandbean.com sandcomp.com sandeepin.com sandegroup.com sandinggas.com sandload.com sanduoyun.com sanen.online sanfangshun.com sanfen666.com sanfengyun.com sanfer.com sanfi.com sanfinehospital.com sanfo.com sanfu.com sangaopatent.com sangbang.com sangem.com sangerbio.com sangfor.com sangfor.net sangfor.org sangforcloud.com sangfordns.com sangle.com sangmifort.com sangon.com sangongzai.net sangsir.com sangsongtech.com sangumc.com sanguocard.com sanguoh5.com sanguohero.com sanguoq.com sanguosha.com sanguows.com sanguozz.com sangxingxi.com sangxuesheng.com sanhao.com sanhaoradio.com sanhaostreet.com sanhe-medical.com sanhepile.com sanheqin.com sanhetimburly.com sanheyongjia.com sanhome.com sanhuagroup.com sanhuan.com sanhucidiao.cc saniwaveltd.com sanjiahospital.com sanjiang.com sanjiangdai.com sanjiangtourism.com sanjiasoft.com sanjieke.com sanjiexc.com sanjinjiake.com sanjinpufa.com sanjiusk.net sanjiuxs.com sanjun.com sankengriji.com sanki-e.com sanki-suzhou.com sankki.com sankougift.com sankton.com sankuai.com sankumao.com sanlan123.com sanlei.net sanlengbio.com sanlian-group.com sanlian-machine.com sanlianpump.com sanligm.com sanliwenhua.com sanlovalve.com sanmanuela.com sanmanuela.net sanmao.com sanmaoyou.com sanmiaocdn.com sanmicun.com sannewschool.com sanniaokeji.com sanpowergroup.com sanpuzhiyao.com sanqianzhihui.com sanqin.com sanqindaily.com sanqinyou.com sanqiu.org sanquan.com sanrangas.com sanrenwenku.com sanritzgroup.com sansancloud.com sansg.com sanshanwuyuan.org sanshiok.com sanshua.com sansitech.com sansky.net santaihu.com santanjob.com santelvxing.com santezjy.com santianfilter.net santiego.ink santiyun.com santongit.com santostang.com sanvo.com sanway.tech sanweihou.com sanweimoxing.com sanweiyiti.org sanweiyunfuwu.com sanwen.com sanwen.net sanwen8.com sanwer.com sanxao.com sanxia-china.com sanxia.com sanxiamc.com sanxiao56.com sanxiaomingshi.com sanxiapharm.com sanxige.com sanxin-med.com sanxinbook.com sanxing.com sanxinwin.com sanxinzgjx.com sanya1.com sanyaairport.com sanyachloe.com sanyajob.com sanyamotor.com sanyanblockchain.com sanyangma.com sanyastar.com sanyawater.com sanyecao.com sanyegame.com sanyenet.com sanyewu.com sanyexin.com sanyglobal.com sanygroup.com sanyhi.com sanyibao.com sanyichemical.com sanyipos.com sanyou123.com sanyouco.com sanyoumed.com sanyoutj.com sanyuanbaobao.com sanyuanqian.com sanyuantc.com sanyuanzn.com sanyue.com sanyuesha.com sanzangwang.com sanzao.xyz sanzei.com sanzer.com sanzhimeihua.com sanzijing.org sanzinfo.com sanzkf.com sao-ma.com sao-tencentclb.cloud sao-tencentclb.com sao-tencentclb.net sao-tencentclb.work sao.ren saohua.com saoic.com saolei123.com saolife.com saomadc.com saomadiancan.com saoniuhuo.com saop.cc saoshu.org saoso.com saowen.net sap-nj.com sap1000.com sapphiretech.store saraba1st.com sardchina-lmgt.com sarft.net sarosgame.com sasacity.com sasecurity.com sass.hk sasscss.com sasseur.com sasseur1989.com sassi2956.xyz sast.fun sast.net sat0.net satcomiot.com satgssb.com sating-tech.com sator.tech satpro.com satrip.com saturdaysoft.com saturnbird.com saublenew.com savastan0.biz savilehotelgroup.com savokiss.com savouer.com sawenow.com sawuatsurgical.com saxydc.com saxyit.com saxysec.com sayabear.com sayatoo.com sayll.com saylover.com sayloving.com sayodevice.com saywash.com sayyas.com sazeoq8158.vip sb1secapply4.com sbaoe.com sbc-mcc.com sbf56.com sbh15.com sbhimalayanml.com sbird.xyz sbjd88.com sbjxyq.com sbk-h5.com sbkh5.com sbkk8.com sbl-ruseldau.com sblseceorf.com sblsechuorb3.net sblsecorgan.com sbmscs.com sbnkca.com sbnkjl.com sbo2.com sbooktxt.com sbpiping.com sbr-info.com sbrczx.com sbs-mag.com sbscn.com sbsjk.com sbt-sh.com sbt56.com sbtjt.com sbtzy.net sbwl.com sbwxz.com sbxh.org sbycjy.com sbzj.com sc-001.net sc-aaa.com sc-admc.com sc-dl.com sc-edu.com sc-glas.com sc-hstar.com sc-jiaoyu.com sc-pd.com sc-tianyu.com sc-troy.com sc-wx.com sc-xngs.com sc.gg sc115.com sc119.cc sc157.com sc1588.com sc1618.com sc168.com sc2c.com sc2car.com sc2p.com sc2yun.com sc518.com sc666.com sc788.com sc946.com sc96655.com scaffi.com scagz.com scansmt.com scanv.com scarbbs.com scarclinic-cn.com scardtech.com scarlet-box.com scasqhwz.com scatc.net scavc.com scbaidu.com scbaijia.com scbao.com scbaopo.org scbgaudio.com scbh15.com scbid.com scbnrq.com scbotai.com scbuilder.com scbxmr.com scbyx.net sccbj.com sccchina.net scccyts.com sccea.net sccens.net sccia8888.com sccin.com sccita.org sccjjtjy.com scclssj.com scclzn.com sccm.cc sccmlj.com sccnfb.com sccnn.com sccnnc.com sccq.net scctjywy.com sccts.com scctsw.com sccvc.com sccwz.com sccxbe.com sccyxh.com scdanzhao.net scdbzzw.com scdccb.com scdcs.net scdengbang.com scdn.im scdn.io scdn0077.com scdn08xd.com scdn0wcp.com scdn0wes.com scdn0xks.com scdn10a7.com scdn12zo.com scdn1dcz.com scdn1e8v.com scdn1eul.com scdn1kjh.com scdn2kw9.com scdn2lhh.com scdn323r.com scdn3t09.com scdn40kn.com scdn43uu.com scdn46r9.com scdn4cpe.com scdn4esv.com scdn4iy4.com scdn4usw.com scdn549v.com scdn67mw.com scdn6e40.com scdn7c4e.com scdn7gsf.com scdn7ma2.com scdn8ksq.com scdn8ppt.com scdn98um.com scdnacsj.com scdnazo0.com scdnbi9w.com scdnbiar.com scdnc77s.com scdncloud.com scdndn0v.com scdndns.com scdndns.net scdndsa6.com scdndtma.com scdne3lt.com scdne60t.com scdneb5k.com scdnebrq.com scdneufe.com scdnf3v6.com scdnf80r.com scdnfu51.com scdng.com scdng8js.com scdnga.com scdngc.com scdngs0h.com scdnguqg.com scdnh957.com scdnhagn.com scdnhfua.com scdnhou6.com scdnhwc.com scdnifld.com scdnioyt.com scdnirdl.com scdnj3in.com scdnj8do.com scdnjfj2.com scdnjk59.com scdnkeuo.com scdnl05m.com scdnl3bk.com scdnl46h.com scdnl9cm.com scdnmba2.com scdnmnrz.com scdnmo3m.com scdnmogt.com scdnmskl.com scdnn4t9.com scdnndj2.com scdnnm9o.com scdnnrib.com scdnnub6.com scdno55z.com scdno5zl.com scdnoklx.com scdnokqh.com scdnooyg.com scdnpe31.com scdnq6rc.com scdnqjg9.com scdnqkxi.com scdnqo8s.com scdnqrty.com scdnqumc.com scdnr7p2.com scdnr932.com scdnrlm1.com scdnrvy1.com scdnsmjc.com scdnsvg4.com scdnt1h7.com scdnt9n9.com scdntop.com scdntucs.com scdntxla.com scdnucc5.com scdnukio.com scdnulx9.com scdnurea.com scdnv7uq.com scdnvij7.com scdnvip.com scdnw4kb.com scdnwehb.com scdnwljp.com scdnwmp0.com scdnwpqy.com scdnwwp9.com scdnxgev.com scdny1t3.com scdnydiw.com scdnygb7.com scdnywwp.com scdnzrch.com scdri.com scdyjyzx.com scdytv.com scdyzx.com scdz120.com scdzmw.com sce-re.com scea.co sceci.net sceeo.com sceia.org scemrq.com scengine.com scenictc.com scensmart.com scetop.com scezju.com scflcp.com scfsino.com scfzbs.com scg-archi.com scgc.net scgchc.com scgckj.com scgglm.com scgh114.com scghsd.com scghseed.com scgis.net scgj56.net scgkw.net scgra.com scgxhq.com scgxlc.com scgyjt.com scgzyun.com sch-szu.com schbrain.com schbrilliant.com schcnc.com schdxww.com schengle.com schielecn.com schimalayanuz.com schk777.com schkxy.com schlzn.com schneidercampus.com scholarmate.com scholat.com school51.com school888.com schoolpi.net schoopia.com schstv.com scht.cc schwarzeni.com schwr.com schxzx.com sci-bioland.com sci-fifans.net sci-gz.com sci-hub.ee sci-hub.shop sci-inv.com sci-it.com sci99.com scialyze.com scianet.org sciasc.com scichina.com scicn.net scidict.org sciecure.com sciedu.org sciencecity.net sciencehr.net sciencep.com sciengine.com scienjus.com scientop.com scientrans.com scienward.net scies.org scievent.com scifans.com scigy.com sciimg.com sciirc.com scijet.com scilucy.com scimall.cc scimall.org scimao.com scimee.com scinormem.com scinorwater.com scio.icu sciping.com sciscanpub.com scisky.com scistor.com scisun.com scitechoutlet.com scitycase.com scixh.com sciyard.com sciyon.com scjcce.com scjcdl.com scjhg.com scjhhb.com scjhyq.com scjjdd.com scjjn.com scjjrb.com scjk.com scjmm.com scjrm.com scjty.com scjuchuang.com scjygd.com scjyx.com scjyxw.com scjyzb.net scjyzbxh.com scjz-led.com scjzjyjc.com scjzy.net sckje.com sckrskj.com sckxjd.com scl-cn.com sclanyingkj.com sclf.org sclive.net scll.cc scloudgda.com sclrjc.com sclsnk.com sclssz.com sclsyz.com sclvb.com sclyxw.com sclzfq.com scm121.com scmccboss.com scmchem.com scmfair.com scmor.com scmroad.com scmsky.com scmttec.com scmxtv.com scmy120.com scmydb.com scmylike.com scmyns.com scncbus.com scncgz.net scnj.tv scnjnews.com scnjw.com scnleee.com scntv.com scntzjrqfd.com scnufl.com scnyw.com sco-marathon.com scodereview.com scoee.com scommander.com scoowx.com scoregg.com scpgj.com scpgroup.com scpidi.com scpolicec.com scqckypw.com scqcp.com scqjxh.com scqstv.com scqy100.com scraij.com scrape.center scratch5.com scratchmirror.com scratchmirror.net scrc168.com scrcnet.org scrcu.com scredcross.com scrft.com scriptjc.com scrmtech.com scrqw.com scrsw.net scrsy.net scrumcn.com scs-jianyu.com scscms.com scsddyf.com scsdzxh.org scsdzzx.com scsema.com scsfjt.com scsgkyy.com scshzx.com scsia.org scsjnxh.org scsjsd.com scslfd.com scsltjt.com scsmzy.com scsntv.com scssdd.com scsstjt.com scsuhuigy.com scswyy.com scsxth.com scsyaszyyy.com scsyytj.com scszsw.com scszxy.com sctbc.net sctcd.com sctcm120.com sctdzl.com sctes.com sctfia.com sctfleasing.com sctgo.com sctindustries.com sctm.cc sctobacco.com sctodr.com sctszh.com scttwy.com sctv-tf.com sctv.com sctvcloud.com sctvf.com sctvgo.com sctx.com sctyhx.com sctyxy.net sctzsbhy.com scubamew.com scudcn.com scufida.com scujj.com scunionpay.com scusec.org scutech.com scutedu.org scuvc.com scw98.com scwdwl.com scwhx.com scwj.net scwlylqx.com scwmwl.com scwqxh.com scwy.net scwyzx.com scxd56.net scxdf.com scxinkang.com scxjyw.com scxsls.com scyanzu.com scyarui.com scybjc.com scybxx.com scyc.cc scych.org scyesz.com scyf.xyz scylzx.net scymob.com scyongqin.com scyqfhw.com scyqjs.com scysxh.org scytyy.net scyvu.org scyxcm.com scyyhyxh.com scyyxh.com sczg.com sczgzb.com sczht.com sczlsgs.com sczshz.net sczsie.com sczsxx.com sczuanshen.com sczw.com sczxmr.com sczycp.com sczyh30.com sczytx.com sd-cancer.com sd-cellbank.com sd-chengdasteel.com sd-chengde.com sd-eh.com sd-ex.com sd-fjzy.com sd-gold.com sd-gree.com sd-guotai.com sd-jiuyang.com sd-jnyz.com sd-kb.com sd-keyuan.com sd-nand.com sd-port.com sd-portfh.com sd-rtn.com sd-sangte.com sd-sanju.com sd-sma.com sd-xd.net sd-xingshun.com sd-yihao.com sd-ysjt.com sd001.com sd11185.com sd173.com sd2000.com sd2008.cc sd235.com sd235.net sd5g.com sdacid.com sdailong.com sdaofu.com sdapo.net sdaswq.com sdawhuagong.com sdaxue.com sdazgs.com sdbao.com sdbaoding.com sdbaowei.com sdbeidou.com sdbeta.com sdbetter.com sdbgk.com sdbjm.com sdbkxh.com sdbochen.net sdbqfw.com sdbx.org sdbys.com sdca119.com sdcbcm.com sdcbcnc.com sdccg.com sdcclh.com sdcfdq.net sdcgc.com sdchelv.com sdchem.net sdcheshi.com sdchild.com sdchina.com sdchuangyi.com sdcia.net sdcjtz.com sdclimber.com sdcmc.net sdcoke.com sdcpd.com sdcqjy.com sdcqjyjt.com sdcxgk.com sdcxjl.com sdcxslzj.com sdcyun.com sdcz.com sddagongrubber.com sddaqi.com sddcbz.com sddcp.com sddcxm.com sddep.com sddermyy.com sddeznsm.com sddfnk.com sddhpharm.com sddory.com sddp.net sddstore.com sddtzx.com sdduojing.com sddyfxjc.com sddyzl.com sddyzy.com sddzinfo.com sddzrljx.com sdebank.com sdeca.org sdeclhnfz.com sdecloud.com sdecu.com sdecx.com sdedu.net sdedubook.com sdeer.com sdeerlive.com sdenews.com sdepci.com sdepi.com sderp.com sdewj.com sdey.net sdeyei-h.edu sdfeid.com sdfey.com sdffqaz.com sdfhyl.com sdflc.com sdflon.com sdfon.com sdfscm.com sdftc.com sdfuer.net sdfxcv.com sdfxyoule.com sdfybj.com sdfz.net sdfztz.com sdg-china.com sdgakj.com sdgckg.com sdgdwljt.com sdgdxt.com sdgh.net sdgho.com sdghrq.com sdghtz.com sdghzy.net sdglobaltrade.com sdglql.com sdgmjiaoyun.com sdgren.com sdgsdggg.xyz sdgsgcjsjt.com sdgsjc.com sdgslb.com sdgslbc.com sdgswl.com sdgsxcljt.com sdgsxxjt.com sdgt1985.com sdguanfeng.com sdguanzhou.com sdguguo.com sdgw.com sdgwlc.com sdgwy.org sdgxdb.com sdgxzn.com sdgykg.com sdgyslfz.com sdgzkg.com sdhack.com sdhbcl.com sdhdssd.com sdhead.com sdheguogroup.com sdhengxingroup.com sdhfsh.com sdhgu.com sdhitg.com sdhmdp.com sdhmjt.net sdhmkj.com sdhnt.com sdhofa.com sdholding.com sdhongdaglass.com sdhoukang.com sdhqcp.com sdhqedu.net sdhrjt.net sdhsg.com sdhshbgs.com sdhsie.com sdhslqgj.com sdhsrh.com sdhssfjt.com sdht666.com sdhtkt.com sdhtwl.com sdhualigongshui.com sdhuanneng.com sdhxem.com sdhxf.com sdhxjl.com sdhxsj.com sdhydl.com sdhynytc.com sdhzgs.com sdi23.com sdiandian.com sdiccapital.com sdicgdny.com sdicgxxny.com sdicin.com sdicpower.com sdicqzdefd.com sdictktrust.com sdictrade.com sdicvc.com sdigc.com sdiitu.com sdinfo.net sdiread.com sditol.com sdj-tech.com sdj88.com sdjcf.com sdjcsh.com sdjcw.com sdjiance.com sdjiankan.com sdjianmei.com sdjingdao.com sdjinghan.com sdjinhuihb.com sdjinke.com sdjkdq.com sdjky.com sdjlxh.com sdjnlf.com sdjnwx.com sdjrg.com sdjsen.com sdjtbd.com sdjtcx.com sdjtzyxy.com sdjujiang.com sdjuliangnet.com sdjulong.net sdjuming.com sdjuxiang.com sdjwg.com sdjxgj.com sdjys.org sdjzgt.com sdjzhc.com sdjzsemi.com sdkamaiduo.com sdkbalance.com sdkclick.com sdkdch.com sdkeli.com sdkjjt.com sdkjnn.com sdklh.com sdklss.work sdknext.com sdkserver.com sdksrv.com sdlaien.com sdland-sea.com sdland-sea.net sdlcbyq.com sdlfhbkj.com sdlgjycm.com sdlinqu.com sdlivc.com sdljdj.com sdlkqx.com sdllrc.com sdlmzb.com sdlongli.com sdlookchemical.com sdlqgf.com sdlsgroup.com sdlsjszp.com sdlsxrmyy.com sdludian.com sdluqiao.com sdlvbang.com sdlvjuren.com sdlvtai.com sdlvxing.com sdlxsj.com sdly35.com sdlyjygs.com sdlysz.com sdm0377.com sdmctech.com sdmdcm.com sdmecl.com sdmic.com sdmingquan.com sdmingshan.com sdmjkc.com sdmta.com sdmtfy.com sdmuhua.com sdmuseum.com sdmyzsgs.com sdndzb.com sdnfv.org sdnh.net sdnjsbc.com sdnlab.com sdnsbd.com sdnxs.com sdnydb.com sdo-shabake.com sdo.com sdocapp.com sdodk.com sdodo.com sdointl.com sdoke.com sdongpo.com sdoprofile.com sdoyhg.com sdpag.com sdpea.org sdpku.com sdplt.com sdptem.com sdpua.com sdpxyq.com sdqcgs.com sdqcpc.com sdqljh.com sdqlkr.com sdqmy.com sdqoi2d.com sdqsqx.com sdqte.com sdqu.com sdqyjtzfzcjh.com sdqyslt.com sdrail.com sdrcu.com sdricom.com sdrixingchem.com sdrmyy.com sdrongya.com sdrszp.com sdrtgk.com sdruile.com sdruiqi.com sdrunfujia.com sdrunse.com sdrxtf.com sdsaifute.com sdsalt.com sdsansen.com sdsazgs.com sdsazxh.com sdsbjp.com sdschdlxxhyxh.com sdsdbjt.com sdsdiy.com sdsdjxh.com sdsdsoft.com sdsdzx.com sdsenrong.com sdseshealth.com sdsfjy.com sdsgwy.com sdshangya.com sdshgk.com sdshihua.com sdshitu.com sdshshb.com sdsifang.net sdsihuanpharm.com sdsinometal.com sdsj.com sdsjhhyxh.com sdsjzyxh.com sdsldsyy.com sdsmartlogistics.com sdsmefina.com sdspyyy.com sdsrhb.com sdssiliao.com sdstdc.com sdsteelrz.com sdstet.com sdstg.com sdstrong.com sdstslyy.com sdstudy.vip sdswitch.com sdswtz.com sdsxw.com sdsxwz.net sdsytgcl.com sdsyyxh.com sdszbzz.com sdtadm.com sdtaikai.com sdtcck.com sdtdata.com sdtdfz.com sdteleiptv.com sdtender.com sdteya.com sdtianjing.com sdtkgl.com sdtlpm.com sdtlyyjt.com sdtryyjt.com sdtugongbucj.com sdtvjiankang.com sdtwxx.com sdtxmq.com sdtylq.net sdtzcn.com sdtzsb.net sdu8cvc.com sduept.com sduod.com sdushu.com sdvps.com sdwan.work sdwcpm.com sdwdhj.com sdwdxl.com sdweiji.com sdweima.com sdweiye.com sdwen.com sdwenlian.com sdwenlv.com sdwfvc.com sdwgyy.com sdwinnerbio.com sdwkhvac.com sdwljqtzjt.com sdwlsym.com sdwscgs.com sdwtd.com sdwtqqysj.com sdwtqx.com sdwtyy.com sdx.microsoft.com sdxawy.com sdxgty.com sdxhce.com sdxhjtgs.com sdxianweisumi.com sdxiaoman.com sdxietong.com sdxinboao.com sdxinglu.com sdxingya.com sdxitong.com sdxjnrqjt.com sdxjpc.com sdxl.com sdxli.win sdxlkjgf.com sdxnetcafe.com sdxsgas.com sdxszhny.com sdxszs.com sdxtsz.com sdxtxh.com sdxvisa.com sdxwyy.net sdxxjmgg.com sdxyxhj.com sdxzt.com sdyftr.com sdyhne.com sdyhqp.com sdyifeng.com sdyinshuachang.com sdyizhibi.com sdylhg.com sdyndcjx.com sdysjcc.com sdytsh.com sdyuanbao.com sdyxmall.com sdyyebh010.com sdyyjsxy.com sdyypt.net sdyzzyzdh.com sdzamy.com sdzbcg.com sdzckj.com sdzdb.com sdzdxm.com sdzgfj.com sdzhidian.com sdzhongjiu.com sdzhx.com sdzhxk.com sdzjxx.com sdzk.co sdzktd.com sdznlh.com sdznzx.com sdzpw.com sdzpw.net sdzrm.com sdzs.com sdzssj.com sdzsyl.com sdztkj.com sdztxxkj.com sdzx.net sdzydfy.com sdzzdzkj.com se7ej39i9g.best sea-group.org sea-gullmall.com seaarea.com seacatcry.com seacxy.com seaflysoft.com seafrom.com seagull-digital.com seagullwatch.com seagullwatches.com seahisun.com seaide.com sealaly.net sealand100.com sealandtableware.com sealeadbattery.com sealien.net sealimg.com sealion360.com sealos.run sealyun.com seamanhome.com seamaty.com seaning.com seanya.com seanyxie.com seaps.org seapsoft.com search616.com searcheasy.net searchpstatp.com searchstatic.com searchtb.com searchtoutiaolive.com seashinepm.com seasj.com seaskyapp.com seasonperiod.com seasouthgy.com seassoon.com seastarasset.com seasungame.com seasungames.com seasunwbl.com seatent.com seatonjiang.com seatopcq.com seavalve.com seavo.com seawardhyacinth.com seayao.net seayee.com seayoo.com seayooassets.com seazor.com seblong.com sebug.net sec-in.com sec-mail.cloud sec-motor.com sec-wiki.com secaibi.com secbug.cc secbug.org seccw.com secdoctor.com secdriver.com secec.com secfree.com secisland.com secjia.com seclover.com seco-rukutin-co-jp.com secoo.com secooart.com secooimg.com secote.com secpulse.com secretflow.com secretgardenresorts.com secretmine.net secrss.com secrui.com secshow.net secsib-eliaslias.com secsib-kendal.com secsilo.com sectigochina.com sectigochina.com.cdn.cloudflare.net secu100.net secure-83a.com secure-ch-ase03.online secure-chasle026.ink secure-chasle029.wiki secure-chasle039.wiki secure-chasle049.ink secureqin.net securitycn.net securityeb.com securityinsight.com secutimes.com secwk.com secwx.com secxun.com seducix.com see-far.com see-source.com see100n.com seebon.com seebug.org seecmedia.net seed-china.com seedasdan.org seedchina.com seeddsp.com seedit.cc seedit.com seedland.cc seedlandss.com seedpace.com seedsufe.com seeed.cc seegif.com seehealth.net seehu.net seek114.com seekbetter.me seekchem.com seekcy.com seekfunbook.com seekhill.com seekingsoft.com seeklane.com seekswan.com seekwavetech.com seelvyou.com seemmo.com seemse.com seentao.com seepomotor.com seepomotor.net seerbigdata.com seerking.com seermylife.com seersecret.com seesawcoffee.com seesea.site seeseed.com seetacloud.com seetao.com seetong.com seewellintl.net seewin-edu.com seewo.com seewoedu.com seewoll.com seexpo.com seeya-tech.com seeyii.com seeyon.com seeyonoversea.com seeyouhealth.com seeyouweb.com seeyouyima.com sefonsoft.com segacnsh.com segapi.com segbuy.com segmentfault.com segmentfault.net segotep.com segwayrobotics.com sehand.com sehimalayanqj.com seida.tech seijoin.com seilway.com seily.com seirobotics.net seis-jun.xyz seisman.info seiyuex.com sejai.com sejianghu.com sekede.net sekorm.com selboo.com selectdataset.com selenlictio.com selet4.com selfiecity.com selfservicechina.com selfwhostudio.com selgrospl.com selinuxplus.com sellerspace.com sellersprite.com sellfox.com sellingexpress.net selypan.com sem123.com sem17.com semem99.com semeye.com semgz.com semi-casi.com semi.design semiconductorpower.com semiconshop.com semidata.info semiee.com semight.com semigraph.net semiinsights.com semir.com semiway.com semiwebs.com sempk.com semptian.com semsay.com semw-sh.com senaocargo.com senbeijia.com sencdn.com sencha-china.com senco.cc sencomu.com send2boox.com senda360.com sendbp.com sendcloud.net sendcloud.org senderline.com senderline.net sendestar.com sendijt.com sendong.com sendpioneer.com sends.cc sendsharedfiles.com senfa.net senge-dq.com senge.com senggama.online senguo.cc senguo.com sengxian.com sengzai.com senhai.com senhaix.com senhe.com senior.auto seniverse.com senkah.com senken-international.com senlianshop.com senlinjimore.com senmiaoliuxue.com senmiaoschool.com senorsen.com senpet.com senphoto.org senpian.com senra.me sensate.hk sense-hk.com senseagro.com senselock.com senseluxury.com senser.group sensertek.com sensesw.com sensetime.com senseyun.com sensivo.com sensors-iot.net sensorsdata.com sensorsdatavip.com senssun.com senszx.com sentaihb.com sentaijs.com sentaiwpc.com sentcss.com sentdream.net senteauto.com senthink.com sentosemi.com sentuxueyuan.com sentyeasy.com senwas.com senyada.com senyao1718.com senyou.com senypc.com senyuanhi.com senyuanzhonggong.com seo-lv.com seo.tm seo1158.com seo123.net seo178.com seo371.com seo628.com seobti.com seocxw.com seodaniel.com seofangfa.com seoipo.com seokoubei.com seoqx.com seosdc.com seosiguan.com seosn.com seotcs.com seovx.com seowhy.com seoxiaoxin.com seoxuetang.com sep.cc sepact.com sepcc.com sepco1.com sepfocus.com sepimcsemi.com seppec.com septinn.com septwolves-group.com septwolves.com sepu.net sepumps.com sequ.biz sequoiacap.com sequoiadb.com sereypath.com serholiu.com seridc.com seridoat.com servasoft.com serveclouds.com serverless-devs.com serverproof.net service86.com servicemesher.com servicewechat.com serviceweixin.com servilabmedical.com sesamestreetenglishchina.com sesamewatermelon.com sescar.com sescie.com seseds.com sesier.com setb2b.com setdg.net seteuid0.com setshop.vip seuic.com sevb.com seven-meters.com seven7777.eu sevendatas.com sevenhei.com sevenseas-china.com sevensem.com sevnday.com sevnz.com sewise.com sex291roushipin.wiki sex2ribenwuma.wiki sex2xiaoluoli.wiki sex2yingtaoshipin.wiki sexytea2013.com seyoo.net seyuma-cn.com sf-airlines.com sf-auto.com sf-bearing.com sf-bsd.com sf-card.com sf-china.com sf-cityrush.com sf-dsc.com sf-express.com sf-financial.com sf-freight.com sf-international.com sf-intra-city.com sf-jf.com sf-js.com sf-laas.com sf-pay.com sf-saas.com sf-zs.net sf007.com sf024.com sf2021.com sf34.com sf7.net sf888.net sfacg.com sfadx.com sfair.com sfata.com sfb-100.com sfbest.com sfbuy.com sfc9oyfmqg.work sfcar.hk sfccn.com sfcdn.org sfcservice.com sfdiban.com sfdrums.com sfdy13168.com sfdzh.com sfecr.com sffdj.com sfgj.org sfgy.org sfhaa.com sfht.com sfi-sh.com sfile2012.com sfitcdp.com sfjddna.com sfjdml.com sfjsgroup.com sfjt.co sfjx888.com sfkedu.com sfkj-tech.com sfkj.vip sfkjweb.com sflep.com sflmfls.com sflqw.com sflshz.com sfmianhua.com sfndns.com sforest.in sfpgmk.com sfplay.net sfqzj.com sfrmt.com sfs-cn.com sfsdds.com sfshuiwu.com sfsigroup.com sfsw2000.com sfsyenergy.com sftj.net sftnow.com sfund.com sfvip1.com sfwl.co sfwljt.com sfwxf.com sfy-gmc.com sfyb.com sfybee.com sfydns.com sfygroup.com sfys365.com sfystatic.com sfzj123.com sfzk.org sg-che.com sg-gemsy.com sg-gzy.com sg-micro.com sg-tencentclb.cloud sg-tencentclb.com sg-tencentclb.net sg-tencentclb.work sg.work sg163.com sg169.com sg91.net sg92.com sgameglobal.com sgamer.com sgautomotive.com sgbll.com sgccdn.com sgcctd.com sgcctop.com sgcec.com sgcgis.com sgchangxun.com sgchinese.com sgcyjy.com sgda.cc sgdmobile.com sge.sh sgfsm.com sgjlkyjx.com sgjq.net sgjsgf.com sgjwb.com sgjy169.com sgjyq.com sgla.com sglituo.com sgliulian.com sgllk.com sgmart.com sgmlink.com sgmsonline.com sgmw.com sgmwlu.com sgmwsales.com sgnet.cc sgou.com sgpjbg.com sgplink.xyz sgpsea.com sgqd.com sgqqxh.org sgrastudio.com sgrbcm.com sgrcw.com sgshero.com sgshuyuan.com sgsic.com sgsotools.com sgst.prod.dl.playstation.net sgsugou.com sgsxw.com sgsxybiz.com sgsyxx.net sgt21.com sgthzb.com sgtmos.com sguo.com sgvalve.com sgvbot.com sgwjjc.com sgwk.info sgy-it.com sgyaogan.com sgyeyou.com sgyhux.com sgyouxi.com sgyscom.com sgyzyun.club sgzb2.com sgzm.com sgzww.com sgzww.net sgzxedu.com sh-3ai.com sh-agilebot.com sh-aia.com sh-anfang.org sh-anrong.com sh-aquarium.com sh-arpm.com sh-autofair.com sh-azjiadeli.com sh-baolai.com sh-biobond.com sh-chenghuan.com sh-chimbusco.com sh-datastone.com sh-deem.com sh-delixi.com sh-desu.com sh-dongbiao.com sh-eastwes.com sh-edi.com sh-eshow.com sh-fdtw.com sh-fxgz.com sh-fy.com sh-game.com sh-gelanlishi.com sh-gexing.com sh-gsg.com sh-henderson-metropolitan.com sh-hengyuan.com sh-hilead.com sh-hitech.com sh-hlrubber.com sh-holfer.com sh-holiday.com sh-hs.com sh-hting.com sh-huate.com sh-huayang.com sh-hwbaoan.com sh-hywin.com sh-italent.com sh-iwatani.com sh-jiapeng.com sh-jingjin.com sh-jinxiang.com sh-jjsb.com sh-jkyy.com sh-jzgroup.com sh-kechen.com sh-kelai.com sh-kingsun.com sh-kr.net sh-lengdong.com sh-liangxin.com sh-likun.com sh-livemusic.com sh-meluck.com sh-minghui.com sh-ncn.com sh-nemoto.com sh-oca.com sh-pet.com sh-pn.com sh-pp.com sh-printing.com sh-prosperity.com sh-prosun.com sh-putai.com sh-puwei.com sh-real.com sh-recycle.org sh-rfid.com sh-ryjx.com sh-saic.com sh-sed.com sh-service.com sh-sfc.com sh-sgl.com sh-shenming.com sh-shuguang.com sh-sict.com sh-sinodiet.com sh-smartstate.com sh-soa.com sh-srcb.com sh-ssci.com sh-tangfeng.com sh-tayor.com sh-tencentclb.cloud sh-tencentclb.com sh-tencentclb.net sh-tencentclb.work sh-ticket.com sh-tm.com sh-valve.com sh-warwick.com sh-web.net sh-xinao.com sh-xixuan.com sh-yajia.com sh-yano.com sh-ybxhz.com sh-yichen.com sh-yuai.com sh-yuy.com sh-zbfm.com sh002.com sh1011.com sh112.com sh12320.com sh148.org sh17.com sh1nk1n-shokd.com sh1nk1n-shokf.com sh414.com sh4th.com sh51766.com sh5mcc.com sh5y.com sh600696.com sh601200.com sh83.xyz sh8y.com sh91.com sh9130.com sh9156.com sha-steel-yx.com sha-steel.com sha2777.com sha990.com shaaidata.com shaangu.com shaanxigas.com shaanxiiot.com shaanxirk.com shaanxita.com shaanyaogroup.com shabc.com shabc.net shabidding.com shabiyun.com shachong8.com shacumox.com shadafang.com shadc-tencentclb.cloud shadc-tencentclb.com shadc-tencentclb.net shadc-tencentclb.work shaddockfishing.com shadiao.pro shaduizi.com shaduruanjian8.com shafa.com shafaguanjia.com shagangcapital.com shagyy.com shaidc.com shairport.com shaisino.com shaizai.com shajdog.com shajuta.com shakingcloud.com shala99.com shalashike.com shalfoil.com shall-buy.com shallserve.cc shamiao.com shan-yu-tech.com shan.com shanbay.com shanbotv.com shancemall.com shanchuangjiaoyu.com shancui1688.com shanda960.com shandacasual.net shandagames.com shandaz.com shandechina.xin shandian666.com shandiandaili.com shandiangou.com shandianhuifu.com shandiansiwei.com shandingdang.com shandingmenye.com shandjj.com shandong-energy.com shandongair.com shandongbadun.com shandongbojun.com shandonggangxie.com shandonggk.com shandonghaiyang.com shandonghealthcare.com shandonghuahai.com shandonghuaye.com shandongjiapeng.com shandongjuli.com shandonglanhua.com shandongqinuo.com shandongruyi.com shandongsannong.com shandongyunpin.com shandw.com shanedit.com shanfengguigang.com shang-chain.com shang-ma.com shang-xia.com shang0898.com shang168.com shang360.com shangair.com shangame.com shanganzixun.com shangate.com shangbangzhuan.com shangbanla.net shangbanzugroup.com shangbaolai.com shangbiao.com shangbiao.store shangbiaocheng.com shangbopharm.com shangbw.com shangc.net shangc123.net shangcaifanyi.com shangchao668.com shangchuanba.com shangcon.com shangdagc.com shangdandan.com shangdaotong.com shangdejy.com shangdian.biz shangdiguo.com shangdu.com shangdu.info shangeyun.com shangfang56.com shangfox.com shanggame.com shanggong-zj.com shanghai-air.com shanghai-at.com shanghai-channel.com shanghai-electric.com shanghai-idea.com shanghai-intex.com shanghai-leather.com shanghai-map.net shanghai-parking.com shanghai-pictures.com shanghai-sports.com shanghai-test.com shanghaiahte.com shanghaiairport.com shanghaiairporttour.com shanghaiamts.com shanghaiata.com shanghaiba.org shanghaibaokai.com shanghaibaomu.com shanghaibaoxie.com shanghaicaiyi.com shanghaicg.net shanghaichannel.net shanghaichemical.com shanghaiconcerthall.org shanghaiconcrete.com shanghaicredit.org shanghaicup.com shanghaidaily.com shanghaidelong.com shanghaidisneyresort.com shanghaidite.com shanghaigm.com shanghaigobroadhospital.com shanghaihino.com shanghaihuanli.com shanghaiinvest.com shanghaiiot.org shanghaijinyimaoyi.com shanghailima.com shanghailm.com shanghaimaling.com shanghaimart.com shanghaimaxicheng.com shanghaimengtaishangcheng.com shanghaimetal.com shanghaimuseum.net shanghainb.com shanghaining.com shanghaionstar.com shanghaiparker.com shanghaipower.com shanghaiqihu.com shanghaiqilu.com shanghaiql.org shanghairanking.com shanghairc.com shanghairolexmasters.com shanghaishuangyanpi.com shanghaishuxie.com shanghaitianqi114.com shanghaitower.com shanghaitrust.com shanghaivast.com shanghaivet.com shanghaiwater.com shanghaiweicon.com shanghaixuejia.com shanghaiyinyang.com shanghaiyk.com shanghaiyouxi.com shanghaizhaxinhospital.com shanghaizhenji.com shanghcat.com shanghongbei.com shanghuiai.com shanghuiwww.com shanghuiyi.com shangjieiot.com shangjilian.com shangjingsh.com shangjinssp.com shangjinuu.com shangjixin.com shangketang.com shangli-tea.com shanglin.net shanglischool.com shanglp.com shangluo.co shanglushan.com shanglv51.com shangnaxue.cc shangnaxue.net shangpai123.com shangpin.com shangpinshou.com shangpo.com shangpu-china.com shangpusou.com shangpuzhan.com shangquanquan.com shangque.com shangrao-marathon.com shangshaban.com shangshancm.com shangshang.com shangshangke.me shangshangoa.com shangshangsp.com shangshi360.com shangshici.com shangshiwl.com shangshouweb.com shangshu.com shangshuce.com shangshuyixue.com shangtaiw.com shangtao.net shangtao360.com shangtianhui.com shangtongda.com shangtuf.com shanguanjixie.com shanguansoft.com shangui.cc shangusec.net shangwb.com shangwu168.com shangwulink.com shangxue.com shangxueba.com shangyejihua.com shangyekj.com shangyexinzhi.com shangyouze.com shangyu-marathon.com shangyuan029.com shangyubank.com shangyuer.com shangzhang.com shangzhibo.tv shanhaifuture.com shanhainengyuan.com shanhaitujian.com shanhaizhanji.com shanhe.com shanhe.kim shanhe01.com shanheknit.com shanheyule.com shanhs.com shanhu188.com shanhu99.com shanhuijiangtang.com shanhuu.com shanjianzhan.com shanjinqh.com shanjuinformation.com shankaisports.com shankejingling.com shanks.link shanliao.com shanliaoapp.com shanling.com shanlinjinrong.com shanlink.com shanlinshengwu.com shanliulian.com shanmeixincai.com shanniaorecycle.com shannon-sys.com shannonai.com shanqing.net shanqu.cc shanqx.com shanrongmall.com shanse8.com shanshan-business.com shanshan.com shanshangame.com shanshanhc.com shanshanim.vip shanshanku.com shanshantech.com shanshoufu.com shanshuihotel.com shanshuiwl.com shansteelgroup.com shante.me shantoujingrui.com shantoumama.com shantui.com shantuimall.com shanwan.com shanwan.store shanwanli.com shanweinews.net shanweirc.com shanweiyule.com shanwel.com shanwxxg.com shanxiangjiaoyu.com shanxiaobai.com shanxichess.com shanxidiy.com shanxigames.com shanxigas.com shanxigwy.org shanxihaoshengtong.com shanxijianzhuzizhi.com shanximuseum.com shanxinj.com shanxiol.com shanxiranqi.com shanxishangren.com shanxishizheng.com shanxiumao.com shanxiuxia.com shanyang666.com shanyangwang.com shanyaogroup.com shanyaoo.com shanyaoyjy.com shanyemangfu.com shanyetang.com shanyhs.com shanyishanmei.com shanyougame.com shanyu.com shanyuankj.com shanyuanms.com shanyue.tech shanyuechina.com shanyzx.com shanzhen.com shanzhen.me shanzhildq.com shanzhonglei.com shanzhuyou.com shaoanlv007.com shaoerbc.org shaoerwushu.org shaogefenhao.com shaogood.com shaojiu.com shaoke.com shaolinjingwu.com shaolintagou.com shaolinwushuxuexiao.com shaolinwy.com shaolvjt.com shaomingyang.com shaoniandream.com shaoshangwang.org shaoshilei.com shaoxiao.net shaoxing330.com shaoxingwater.com shaoyangnews.net shaoyuncloud.com shaphar.com shapharqx.com shaphc.org shaqing.com shaqm.com share1diantong.com share2dlink.com share2uu.com share404.com shareate.com sharecharger.com sharecore.net sharedaka.com sharegog.com shareinstall.com shareinstall.net shareintelli.com shareitthrough.com sharejs.com sharelogis.com sharemoon.club shareoneplanet.org sharesdns.com sharetome.com sharetrace.com sharevdi.com sharewaf.com sharexbar.com sharexiang.com sharingclass.vip sharjahmadrasa.com sharkisland.store sharkselection.com sharkshopping.com sharpbai.com sharpheel.com sharpmobi.com sharpon.com shasx.com shatian.org shautomuseum.com shavpn.amd.com shavpn2.amd.com shawdo.com shawnzeng.com shaxian.biz shayugg.com shayujizhang.com shayuweb.com shazc.com shb.ltd shbangde.com shbangdian.com shbaoli.com shbars.com shbbq.net shbear.com shbetterway.com shbg.org shbicycle.com shbike.com shbio.com shbiochip.com shbizhen.com shbj.com shbjfc.com shbkfyy.com shbkwai.com shbl8.com shbnrj.com shbobo.com shboka.com shbpump.com shbqmp.com shbtpm.com shbxzp.com shbyer.com shbyw.com shcaco3.com shcancer.com shcas.net shcc-horizon.com shcce.com shccig.com shccineg.com shccio.com shccpx.net shccxy.com shcd.cc shcell.com shcell.org shcellgroup.com shcfcd.com shchangshun.com shchnkyy.com shchyy.net shcifco.com shckgs.com shclearing.com shclgc.net shcljoy.com shclkj.com shcmer.com shcmhr.com shcnfb.com shcngz.com shcsdq.com shcsinfo.com shcstheatre.com shcwmotor.com shcxbyjt.com shcya.com shcz.com shczssyq.com shczyy.com shdafw.com shdancecenter.com shdasa.com shdata.com shdatagroup.com shdcjt.com shdftz.com shdgm.com shdingzhidental.com shdirong.com shdjt.com shdmic.com shdmt.net shdmu.com shdnjt.com shdouxie.com shdpa.com shdrc.org shdrkj.com shdsd.com shdsn.com shdsqs.com shdszc.com shdxgraphene.com shdxk.com shdy.com shdy168.com shdyiy.com shdyty.com shdzep.com shdzfp.com she120.com sheasyoffice.com shebao.net shebao100.com shebao5.com shebao520.com shebaomi.com shebaotong.com shebaowang.com shebaozhaopian.com shebiaotm.com sheboo.com sheca.com shedejie.com shedongyun.com shedoor.com shedunews.com sheec-tencentclb.cloud sheec-tencentclb.com sheec-tencentclb.net sheec-tencentclb.work sheencity.com sheenrun.com sheentec.com sheep11.com sheepmats.com sheinet.com sheji.com shejibao.com shejiben.com shejibiji.com shejidaren.com shejidaxue.com shejidedao.com shejidna.com shejijia.com shejijingsai.com shejiku.net shejinu.com shejipi.com shejiqun.com shejis.com shejiwo.net shejixf.com shejiyizhou.com shejiyue.com sheketiandi.com shekou.com shelive.net shellpub.com shellsec.com shelter-china.com shelterdome.net shelwee.com shen-grh.com shen-nao.com shen-xi.com shen321.com shenanhui.com shenbabao.com shenbanglawyer.com shenbinghang.com shenbisheji.com shencai-china.com shencaiceshi.com shenchai.com shenchengkeji.com shenchengtou.com shenchigroup.com shenchuang.com shenchunhui.com shencut.com shenda-group.com shendatong.com shendiaoqzj.com shendoow.com shendu.cc shendu.com shendu123.com shendugho.com shenduliaojie.com shenduwang.com shenduwin10.com shenduwin7.com shenduxiyin.com shenfagg.com shengangzc.com shengaohua.com shengbaihui.com shengbangshenghua.com shengbaoluo.com shengcai.net shengcaijinrong.com shengcaiyoushu.com shengcaozhiwang.com shengcekeji.com shengchan.biz shengdan.com shengdaosoft.com shengdaprint.com shengdawood.com shengdecw.com shengdianhuadg.com shengdianhuadk.com shengejing.com shengenqianzheng.com shengenv.com shengfajiaohua.com shengfanwang.com shenghan.org shenghefilms.com shengheplastic.com shenghongpec.com shenghu.cc shenghua-fire.com shenghuabao.net shenghuaem.com shenghuagroup.com shenghuaxi.com shenghui56.com shenghuigd.com shenghuo365.com shenghuojia.com shenghuorili.com shenghuowo.com shengjie-logistics.com shengjing360.com shengjinghe.com shengjinglinye.com shengjiu.com shengjoy.com shengjuewl.com shengli.com shenglongit.com shengmaapp.com shengmage.com shengming.net shengminghitech.com shengniuuz.com shengpay.com shengqian51.com shengquan.com shengqugames.com shengren.work shengrungroup.com shengsci.com shengshengkang.com shengshizhicheng.com shengtai.com shengtaigroup.net shengtian.com shengtiangroup.com shengtongedu.com shengtuanyouxuan.com shenguang.com shengwu.store shengwu01.com shengxiao.net shengxiaobj.com shengxiaochemical.com shengxin.ren shengxingholdings.com shengxinquan.net shengxuxu.com shengyan985.com shengyedq.com shengyeji.com shengyi.ai shengyi.biz shengyizhuanjia.com shengyuan.com shengyuancc.com shengzhaoli.com shengzhujiage.com shenhaoinfo.com shenhexin.com shenhexin.vip shenheyuan.net shenhongfei.com shenhongmao.com shenhua.cc shenhuachina.com shenhudong.com sheniaoren.com sheniaorenw.com shenjianggroup.com shenjiangyy.com shenjing.com shenjumiaosuan.com shenkai.com shenkelong.com shenkexin.com shenkong.net shenlan02.com shenlanbao.com shenlaohr.com shenling.com shenlintech.com shenma-inc.com shenma.com shenmabaike.com shenmadsp.com shenmapay.com shenmayouxi.com shenmeipharm.com shenmikj.com shenmo.com shenmojiaoyu.com shenmou.com shennongjiazhaopin.com shennongpharma.com shennwu.com shenou.com shenousz.com shenpinwu.com shenpojie.com shenpowang.com shenpucw.com shenqhy.com shenqisou.com shenqiwunet.com shenqizhilv.com shenquol.com shenrongda.com shenrongjidian.com shenruan.org shenruapp.com shenshang.org shenshi777.com shenshiads.com shenshijituan.com shenshitech.org shenshoucdn.com shenshouwl.com shenshouyouxi.com shenshu.info shenshuo.net shenshuw.com shenshuxs.org shensuantang.com shensuokeji.com shenta.net shentongchina.com shentongdata.com shentongkuaidi.com shenweibengye.com shenweimicro.com shenweisupport.com shenweixiangjiao.com shenxianhua.com shenxianyu.cc shenxijixie.com shenxingroup.com shenxm.com shenxuanche.com shenyang2car.com shenyangoffice.com shenyd.com shenyecg.com shenyehd.com shenyeyunying.com shenyinhudong.com shenyou.tv shenyu.me shenyuanquan.com shenyunkeji.com shenyunlaw.com shenyunmedical.com shenyunwang.com shenzan.com shenzaokeji.com shenzaole.com shenzhekou.com shenzhen-kuaiji.com shenzhen-world.com shenzhenair.com shenzhenbianhua.com shenzhencefa.com shenzhenew.com shenzheninvestment.com shenzhenjgw.com shenzhenlianhua.com shenzhenmakerfaire.com shenzhenshouxin.com shenzhenshuixie.com shenzhentong.com shenzhentour.com shenzhenware.com shenzhenygx.com shenzhenyuren.com shenzhoublm.com shenzhouen.com shenzhoufu.com shenzhoupharma.com shenzhyu.work shepai1688.com shephe.com shepinw.com shequfu.com shequfu.net sherc.net sherlockkk.com sherlocky.com sherowm.com sheshui.com shesoleshoes.com shetu66.com sheui.com shevdc.org shewang.net sheweikeji.com shexcloud.com shexgrp.com shexian100.com shexiannet.com shexpocenter.com sheying001.net sheyingtg.com sheyou.com sheyuan.com shezaixian.com shezfy.com shfa120.com shfamily.com shfangshui.com shfayy.com shfcw.com shffjt.com shfft.co shfft.com shfgzl.com shfigaro.com shfilmart.com shfilmmuseum.org shfinechem.com shfirstrehab.com shfoxmotor.com shfq.com shfrp.com shfswl.com shfte.com shfxrc.com shfy2020.com shgao.com shgaoxin.net shgbc.org shgbit.com shgbitcloud.com shgci.com shgedu.com shggzy.com shgjj.com shgjq.com shgkh.com shgkl.com shgkw.org shglgf.com shgpo.com shgsec.com shgsic.com shgskj.com shgtheatre.com shgushi.com shgyg.com shgymy.com shhanqiao.com shharborcity.com shhbgm.com shhcjt.com shhcpm.com shhd17.com shhdouyue.com shhebio.com shhella.com shhenghesh.com shheywow.com shhic.com shhigher.com shhiminhm.com shhkcc.com shhkfw.com shhksports.com shhkyy.com shhl56.com shhlgroup.com shhmbio.com shhmu.net shholdingeu.com shhorse.com shhqcft-tencentclb.cloud shhqcft-tencentclb.com shhqcft-tencentclb.net shhqcft-tencentclb.work shhqcftfzhj-tencentclb.cloud shhqcftfzhj-tencentclb.com shhqcftfzhj-tencentclb.net shhqcftfzhj-tencentclb.work shhqcftfzhjtencentclb.cloud shhqgc.com shhrp.com shhtqn.com shhuaerkang.com shhuayi.com shhuayitz.com shhuazhen.com shhugong.com shhuihai.com shhuke.com shhuo.com shhushi.com shhuu.com shhweili.com shhws.com shhxbk.com shhxpx.com shhxyy.com shhxzq.com shhyanqing.com shhyhy.com shhzcj.com shi-ming.com shiabank.com shianzhixuan.com shibaili.com shibangchina.com shibangsy.com shibei.com shibeiht.com shibeiou.com shibeixuan.com shibolm.com shibor.org shicai.biz shicaidai.com shicaizhanlan.com shicehao.com shichangbu.com shichengbao.com shichengyi.com shichuangsj.com shichuangyi.com shichuedu.com shichuihui.com shicigequ.com shicishe.com shiciyun.com shicuojue.com shida66.com shidaedu.vip shidai5d.com shidaohospital.com shidapx.com shidastudy.com shide.com shidegroup.com shidenggui.com shidianbaike.com shidianguji.com shidianwandao.com shidiao136.com shidicn.com shidoukeji.com shidutuozhan.com shiepmexpo.com shifair.com shifan.org shifanedu.com shifang.tech shifansheng.com shifd.net shifeiti.com shifen.com shifendaodu.com shifendaojia.com shifeng.com shifenyuedu.com shigaoshan.com shiguanai.com shiguanghuyu.com shiguangpu.com shiguangxu.com shiguangyouju.com shiguanyinger-jg.com shihua-group.com shihuantong.com shihuishuo.com shijiala.com shijian.cc shijian.org shijiancn.com shijianla.com shijianping.com shijiaok.com shijicloud.com shijie2.com shijiebang.com shijiechaoshi.com shijieditu.net shijiemap.com shijieminghua.com shijiemingren.com shijiesanqingshan.com shijieshijian.net shijiexia.com shijieyouxi.com shijiezz.com shijihr.com shijihulian.com shijiong.com shijiqingqing.com shijiretailo2o.com shijiudao.com shijiufang.com shijqq.com shijuan1.com shijue.me shijueju.com shijuenian.com shikangsi.com shikaricharters.com shikee.com shikelang.cc shikongdaoyu.com shiku.co shilehui.com shileizuji.com shilian.com shilian.net shilicdn.com shilincn.com shilitie.net shiliuai.com shiliupo.com shiluetl.com shiluoji.com shimano-fishchina.com shimaoco.com shimaoenergy.com shimaogroup.com shimaostargroup.com shimaotong.com shimaowy.com shimen.org shimengcs.com shimengyuan.com shimengzhanghao.com shimge.com shimiduanju.com shiming.com shiminjia.com shimizuchem.com shimo.im shimo.run shimodev.com shimoko.com shimolife.com shimonote.com shimotx.com shimowendang.com shin-kinojseh.com shinberto.com shinco.com shindaichem.com shine-consultant.com shine-ic.com shine-tech.net shineacc.com shinechina.com shinefeel.com shinelon.com shineoptics.com shineray-motors.com shinerayad.com shinescan.tech shinetsu.shop shineu.com shineway.com shinewaytech.com shinewing.com shinewonder.com shineyie.com shineyue.com shinger.com shinianonline.com shining-electric.com shining3d.com shiningmidas.com shiningnew.com shiningpharm.com shink1n-ojasaoq.com shinkin-jpo-coy.com shinkinopsae.com shinnytech.com shinva.net shinycg.com shinye-ortho.com shinyway.org shinzoom.com shiove.com ship-gps.net ship.sh ship56.net shipai123.com shipfinder.com shipgce.com shipgroup.net shiphr.com shipin163.com shipin520.com shipinzhibojian.com shipoe.com shippingate.com shippingchina.com shippingwhale.com shipry.com ships66.com shipservice.org shiptux.com shipurili.com shipuxiu.com shipxy.com shiqi.me shiqiao.com shiqichuban.com shiqidu.com shiqitech.com shiqu.com shiquan56.com shiquask.com shiqutech.com shirenzuojia.com shiritianchengtech.com shirongzhaoye.com shisanzhi.com shiseidochina.com shishacharcoal.net shishagame.com shishangd.com shishangfengyun.com shishifanyi.com shishijia.com shishike.com shishiwater.com shiso9001.net shisongya.com shisukeji.com shitac.com shitac.net shitairen.com shitestunion.work shiti.net shitianxia.vip shitoc.com shitou.com shitouboy.com shitoulm.com shitourom.com shitsu.co.jp shituyikao.com shiwaiyun.net shiwanbaijiu.com shiwang1688.com shiwangyun.com shiweisemi.com shiwenlu.com shixiangren.com shixiaojin.com shixibiaozhi.com shixijob.net shixingceping.com shixinhua.com shixinyufang.com shixiseng.com shixiu.net shixun365.com shixunhao.com shixunsuda.com shixunwl.com shiyan.com shiyanbar.com shiyanbar.net shiyangdr.com shiyanhospital.com shiyanjia.com shiyanlou.com shiyculture.com shiye.org shiyebian.net shiyebian.org shiyedanwei.net shiyi.co shiyi11.com shiyibao.com shiyicdn.com shiyide.com shiyifacai.com shiyingbao.com shiyiyj.com shiyiyx.com shiyong.com shiyongjun.biz shiyou-electric.com shiyouflooring.com shiyouhome.com shiyousan.com shiyu.pro shiyu.zone shiyuandx.com shiyue.com shiyuegame.com shiyueliangpin.com shiyund.com shiyus.com shiyutianqi.com shizhanxia.com shizhiad.work shizhuang-inc.com shizhuolin.com shizhuonet.com shj6789.com shjakfyy.com shjaming.com shjayson.com shjb600838.com shjcm3d.com shjd.org shjdceo.com shjdjx.com shjglaser.com shjgu.com shjh120.com shjhjc.com shjiabu.com shjinbao.com shjincan.com shjingmi.com shjingxu.com shjinnengzuche.com shjlnzyy.com shjob.work shjr-tencentclb.cloud shjr-tencentclb.com shjr-tencentclb.net shjr-tencentclb.work shjsit.com shjsrg.com shjsst.com shjstl.com shjsxh.com shjt.net shjtos.com shjtw.com shjtxx.net shjus.com shjvguan.com shjx-group.com shjy18.com shjy8888.com shjyou.com shjyyx.com shjzfs.com shjzfutures.com shjzzjf.net shkaihang.com shkamoer.com shkcn.com shkcsj.com shkdchem.com shkdfua.com shkdtfyf.vip shkewen.com shkg.net shkhzc.com shkingchem.com shkjb.com shkjcable.com shkjjs.com shkjqp.com shkjsoft.com shkkl.com shklsw.com shkm.com shkpzx.com shkuangjing.com shkypump.com shlab.tech shlangao.com shlawserve.com shlayout.com shlcxby.com shld.com shldfm.com shlhbxg.com shliafvzc.com shliangshi.com shlianlu.com shlingang.com shlinjiang.com shlitc.com shlixin.com shll-gs.com shlll.net shlmth.com shlongtai.com shlp.com shlpk.com shlsnk.com shlsyb.com shlungu.com shlys.com shmaas.net shmama.net shmarathon.com shmaur.com shmbjy.org shmds.com shmds.vip shmedia.tech shmengyang.com shmet.com shmetro.com shmfmr.net shmhtv.com shmhzp.com shmljm.com shmockup.com shmog.org shmondial.com shms-expo.com shmtu.net shmusic.org shmusicschool.com shmylike.com shmzgroup.com shnaile.com shnanfang.com shnayw.com shnb12315.com shnbsh.com shneuro.org shneweye.com shnmnm.com shnne.com shnsyh.com shnti.com shoasis.net shoasisholding.com shobserver.com shockerli.net shockley-elect.com shoegaze.com shoeshr.com shofine.com shojo.cc shokan.org shokdown.com shokw.com shokz-comm.org sholaser.com shollper.com shomop.com shomyq.com shonfer.com shootmedia.net shop-isv.com shop265.com shop2cn.com shopbackdrop.com shopchaoren.com shopeesell.com shopeesz.com shopesv.com shopex123.com shopimgs.com shopin.net shopjyh.com shoplazza.com shopline123.com shopmaxmb.com shopnc.net shoppingchain.net shoppkk.com shopplus.vip shoprobam.com shopscrm.com shopss.com shoptop.com shopwatchus.com shopwind.net shopxo.net shopxo.vip shopxx.net shopyy.com shorcut88.com shorologe.com shortof.com shotnba.com shou-qi.com shoubaiart.com shoubanjiang.com shoubaodan.com shoubashou.net shoubb.com shoubiaohuishou.com shoubiaowang.com shoubuluo.com shoucangyaji.com shouce.ren shouce365.com shouchaoba.com shoucheng123.com shoudayy.net shoudian.com shoudian.info shoudian.org shoudu.org shouduit.com shoudurc.com shoudurx.com shoufaw.com shoufm.com shoufu.com shougongke.com shougongke.net shougoumingbiao.com shouhaoche.com shouhoubang.com shouhougou.com shouhui.com shouhuigroup.com shouhuisoft.com shouhuojiyun.com shouhuola.com shouji.com shouji.racing shouji10086.com shouji315.org shouji56-img.com shouji56.com shoujibao.net shoujidai.com shoujiduoduo.com shoujihuifu.com shoujikanshu.net shoujimi.com shoujitouping.com shoujiwan.com shoujixs.net shoujixs.org shoukaigufen.com shoukala.com shoukangyiyuan.com shoukayun.com shoulian.org shoumaquan.com shoumizhibo.com shoumm.com shounaoxuexiao.com shouqi-zuche.com shouqianba.com shouqibus.com shouqicar.com shouqiev.com shouqu.me shoushenlvcheng.com shoutai.com shoutanjjj.com shouxi.com shouxieke.net shouxieti.com shouxihu.net shouxiphotos.com shouyao.com shouyao8.com shouyaoholding.com shouye-wang.com shouyhui.com shouyihuo.com shouyinbei.net shouying.tv shouyou.com shouyoubus.com shouyoucdn.com shouyoudao.com shouyoujz.com shouyouqianxian.com shouyoushenqi.com shouyoutv.com shouyouzhijia.net shouzhang.com shouzhangapp.com shouzhitao.com shouzhuanzhidao.com shovesoft.com show160.com showaamericanstory.com showapi.com showchina.org showcitytimes.net showcome.net showdoc.cc showerlee.com showfay.com showgame.com showing9.com showjoy.com showkey.com showl.com showmeai.tech showmebug.com showmesse.net showroomshanghai.com showse.com showself.com showshell.com showstart.com showtao.com showxiu.com showxue.com showyu.com shoyoo.com shpans.com shpanyou.com shpbs.com shpd.net shpdh.org shpdjq.com shpedi.com shpenquan.com shpgt.com shpgx.com shphschool.com shpiano.com shpingda.com shppa.net shps518.com shpsncp.com shpyedu.com shqec.com shqi7.net shqinghe.com shqipai.org shqkxh.org shqmxx.com shqncs.com shqpxc.com shqswlgs.com shqunlu.com shqxjx.com shqyg.com shrail.com shrbank.com shrca.org shrcb.com shrcdy.com shrenqi.com shresource.com shrgjt.com shrlig.com shrmpump.com shrmw.com shrrjt.com shrtlnks.com shruanjie.com shruisong.net shry.net shryou.com shsaic.net shsajt.com shsanfang.com shsanfine.com shsanji.com shsanwei.com shsbnu.net shsby.com shsc-valve.com shscce.com shsci.org shscsc.com shsctec.com shsd-elec.com shsdjsj.com shsdnet.com shsee.com shsfkyy.com shsfxxh.com shsgbm.com shsgyq.com shshenbo.com shshilin.com shshinfo.com shshuhui.com shshunfeng.com shshuxiao.com shshzu.com shsid.org shsinhu.com shsipo.com shsixun.com shsjb.com shsjcb.com shsjgj.com shsjjh.com shskin.com shsktower.com shskyland.com shslqxh.com shsmzj.com shsoong-chingling.com shsot.com shsparkwater.com shspdq.com shsportschool.com shsq.vip shsrdzs.com shssdc.com shssp.org shstcm.com shstone.org shstyxh.com shsunny.com shswim.com shsxjy.com shsyf.com shsyzn.online shsz17.com shszsoft.com shtalentgroup.com shtannet.com shtaoism.com shtazy.com shtbi.com shtdgj.com shtdsc.com shtefu.com shtfqx.com shtgds.com shthbanz.com shthediyya.com shtianhe.cc shtianye.com shtianyuqiche.com shtic.com shtimessquare.com shtion.com shtopshow.com shtour.org shtqzs.com shtrhospital.com shtsn.com shtsp.com shtutian.com shtw.cc shtwjiebao.com shtxcj.com shtydic.com shu-ju.net shu163.com shuaigeshe.com shuaigun.com shuaihuajun.com shuaiku.com shuaiming.com shuainiba.com shuaipiao.com shuaishou.com shuaiy.com shuaji.com shuaji.net shuajibao.com shuajizhijia.net shuakazhijia.com shuame.com shuang-feng.com shuang-sen.com shuangcheng.net shuangda-pump.com shuangguan.net shuanghancn.com shuangheng.com shuanghui.net shuangjing.net shuangkou.net shuangkuai.co shuangle888.com shuangliang-boiler.com shuanglin.com shuanglingroup.com shuanglongdong.com shuangmatbs.com shuangmei2008.com shuangniaoslhl.com shuangqingtech.com shuangtao.com shuangtiantech.com shuangtuan.com shuangxian.com shuangxingcaisu.com shuangxingseed.com shuangxinhui.com shuangyanjie.com shuangyingmenye.net shuangyingsx.com shuangyuejn.com shuangzheng.org shuangzhong.com shuashuaapp.com shuashuati.com shuazhibo.com shubiaob.com shubl.com shucai001.com shucai123.com shucaixiaoshuo.com shuchengdt.com shuchongread.com shuchuandata.com shucong.com shudaoge.com shudaojt.com shudaowl.com shudaxia.com shudi8.com shudianwang.com shudongpoo.com shudouzi.com shuduntech.com shuerjia.com shufa.com shufa.org shufa121.com shufa360.com shufa520.com shufaai.com shufabao.net shufafin.com shufaji.com shufajia.cc shufami.com shufashibie.com shufaway.com shufawu.com shufazidian.com shufaziti.com shufe.com shufenggaoke.com shuge.org shuge9.com shuguang.com shuguanggroup.com shuguanghuayuan.com shuhai.com shuhaidata.com shuhaige.net shuhaisc.com shuhaitz.com shuhaochaxun.com shuhegroup.com shuhenglib.com shuhonggz.com shuhua.com shuhuast.com shuhuawu.com shuhui9.com shui12366.com shuibaogs.com shuibengxinghao.com shuicao.cc shuichan.cc shuichan51.com shuichuyu.com shuidichou.com shuididabingchou.net shuidigongyi.com shuidiguanjia.com shuidihealth.com shuidihuzhu.com shuidihuzhu.net shuidike.com shuidiopen.com shuiditech.com shuidixy.com shuidyd.com shuifuhuanbao.com shuigongye.com shuiguo.com shuiguobang.com shuihulu.com shuijing100.com shuijingka.com shuijingwanwq.com shuijingwuyu.com shuijingyibai.com shuijinshunzhuang.com shuiku.cc shuiliangye.com shuiliantong.com shuiliaosheji.com shuiligroup.com shuilongtouapp.com shuimiao.net shuimofang.net shuimoshi.net shuimozhuan.net shuimui.com shuimujiaju.com shuimuyulin.com shuinfo.com shuini.biz shuionland.com shuipingce.com shuipo.com shuisj.com shuitexxkj.com shuitou001.com shuiwushi.com shuiwushi.net shuixin.tech shuiyaohuo.com shuiye.cc shuiyinbao.com shuiyinwang.com shuiyinyu.com shuiyinyun.com shuiyoucam.com shuiyugame.com shuiyuwenquan.com shuizhi360.com shuizhifenxi.com shuizhili.com shuizilong.com shujiangweike.com shujiariji.com shujike.com shuju.net shujuapi.com shujuba.net shujubang.com shujubo.com shujujishi.com shujulin.com shujupie.com shujutang.com shujuwa.net shujuxian1688.com shukeba.com shukeju.com shukemobile.com shukingfashion.com shukoe.com shukongwang.com shuku99.com shukuai.com shukuai.net shukuai3.com shukuajing.com shukuge.com shukun.press shukwai.com shulanapp.com shulanedu.com shulanhealth.com shulb.com shulex-voc.com shuliangtec.com shulidata.com shuling.vip shulink.com shuliyun.com shuma7.com shumaidata.com shumayin.com shumazhaopian.com shumeipai.net shumenol.com shumensy.com shumiao.com shumiimg.com shumilou.org shumo.com shun176.com shunanholding.com shunbangsaifu.com shunchangzhixing.com shunchaojinshu.com shuncom.com shundaoyun.com shunde-marathon.com shundecity.com shundehr.com shundeplus.com shunderen.com shunfalighting.com shunfangw.com shunfeng.cc shunguang.com shunhaiwang.com shunhejieshui.com shunhengkn.com shunhongny.com shunhualithium.com shunhuishou.com shunjing.xin shunjunys.com shunlitm.com shunmi.com shunnengnet.com shunnengoil.com shunqi.com shunscom.com shunshikj.com shunshunliuxue.com shuntian.cc shuntongtong.com shunwang.com shunwoit.com shunyagroup.com shunygroup.com shunyoubio.com shunyuwater.com shuoba.org shuobao.com shuobozhaopin.com shuocdn.com shuodedui.com shuoedu.com shuofangw.com shuohong.net shuoji1688.com shuojuchaxu.com shuoman.com shuomingshuku.com shuoshuojie.net shuoshuojuzi.com shuoshuokong.com shuoshuokong.org shuoshuomi.com shuoshuoxinqing.com shuowan.com shuozhiwu.com shupackaging.com shupaiyun.com shupeng.com shuqi.com shuqiandiqiu.com shuqiaozt.com shuqiapi.com shuqiread.com shuqireader.com shuqistat.com shuquge.com shuquge.la shuquta.com shuquxs.com shuquzw.la shuqw.com shuren100.com shushangai.com shushangyun.com shushihome.com shushindo.com shushubuyue.com shushubuyue.net shusw.com shutcm.com shuti.com shutong1680.com shutong5858.com shutonginfo.com shutu.cc shutwin.com shuwangxing.com shuwenxianyun.com shuwulou.com shuxiangmenhu.com shuxiangmuye.com shuxiayun.com shuxinsp.com shuxinyc.com shuxuehua.com shuxuejia.com shuxuejingwei.com shuxuet.com shuxueweb.com shuxueyingyong.com shuya-china.com shuyan-biotech.com shuyang.tv shuyangba.com shuye.com shuyeedu.com shuyeidc.com shuyfdc.com shuyong.net shuyuanchina.org shuyuewu.co shuyun.com shuzhi9.com shuzhiduo.com shuzhou.cc shuzibao.com shuzifuyu.com shuzigd.com shuzigonggao.com shuziguanxing.com shuzijihuo.com shuzilm.com shuzisharing.com shuzixiaoyuan.com shuzixindong.com shuziyuedong.com shuzong.com shwbs.org shwdbjgs.com shwdir.com shwebspace.com shweiqi.org shwexpo.com shwhl.com shwilling.com shwkwai.com shwoody.com shwpbbs.com shwpg.com shws.org shwsfy.com shwsg.net shwszdh.com shwtqx.com shwuji.com shwx.com shwxzf-tencentclb.cloud shwxzf-tencentclb.com shwxzf-tencentclb.net shwxzf-tencentclb.work shwxzfjpyzc-tencentclb.cloud shwxzfjpyzc-tencentclb.com shwxzfjpyzc-tencentclb.net shwxzfjpyzc-tencentclb.work shwyky.net shwzjt.com shwzoo.com shwzsh.com shx11.xyz shxaby.com shxayy.com shxbe.com shxcj.com shxcoal.com shxdnt.com shxgroup.net shxiaoran.com shxibank.com shxichina.com shxil.com shxinbodi.com shxincn.com shxinhua.net shxinping.net shxjkjt.com shxjycqxx.com shxkyy.com shxlpe.com shxmbzcl.com shxmhjs.com shxnetwork.com shxrcw.com shxrmtzx.com shxrmyy.com shxseer.com shxsj.com shxsjedu.com shxuanming.net shxuou.com shxwcb.com shxxyun.com shxy.net shxyou.com shyahs.com shyanke.com shyanpu.com shyaoxu.com shyclouds.net shycqf.com shydjscl.com shydxsy.com shyestar.com shyfci.com shygdz.com shyhgj.com shyhhema.com shyihuoh.com shyingt.asia shyirijian.com shyisai.com shykx.com shykz123456.com shylwlkj.com shymhk.com shyndec.com shyongci.com shyongwo.com shyongzeng.com shyouai.com shyoudao.com shyouhuan.com shyouth.net shypzx.com shyrcb.com shyrcw.com shyrcw.net shyrjt.com shysjt.com shyuanye.com shyueai.com shyueyanghospital.com shyuhuankj.com shyumin.net shyuwl.com shyuzhai.com shywly.com shyx-bio.com shyxhy.com shyxi5.com shyxwz.com shyy6688.com shyygh.com shyyp.net shyywz.com shyyy.com shyyyl.com shyz07.com shyzj.com shyzjsxh.com shyzsd.com shzaiguan.com shzbc.com shzbh.com shzbkj.com shzf.com shzfsy.com shzfzz.net shzgauto.com shzgd.org shzgt56.com shzh.net shzhanling.com shzhanmeng.com shzhiyingedu.com shzhongru.com shzhuran.com shzhyx.com shziyi.com shzjy.com shzkb.com shzkbc.com shzkbj.com shzkie.com shzkvalve.com shzkw.org shzm.org shzq.com shzrx.com shzs2013.com shzsgroup.com shzsun.com shzuibaichi.com shzunma.com shzxkq.com shzychem.com shzymp.com shzytzj.com shzyw.com shzzks.com si-bao.com si-en.com si-era.com si-in.com si-win.com si.cdn.dell.com sia1995.net siad-c.com siaedu.net sialiagames.com.tw sian.cc siaoao.com sias-sha.com siasun.com siasuncare.com sibangde.com sibfi.com sibida.net sibinwave.com sibojin.com sibpt.com sibsnet.org sibuzyn.com sic8d.net sicarrier.com sicc.cc sicent.com sicheng.net sicher-elevator.com sichuan163.com sichuanair.com sichuanbh.com sichuanbojiesports.com sichuancancer.org sichuannpo.com sichuanyunzhan.com sichw.com siciciyu.com sicimano.com sickcn.com sicosemi.com sicreat.com sid.cc sidande.com sidike.com sidlgroup.com sidri.com sidvc.com siec-ccpit.com siengine.com sienwater.com sieredu.com sieryun.com sif.com sifalu.com sifangbazhu.tech sifangclub.com sifanggroup.com sifangoa.com sifangvideo.com sifary.com sifayun.com siff.com sifky.com sifou.com sig-am.com sigachem.com sigas-group.com sigchina.com sightp.com siglent.com siglff.com sigma.run sigmachip.com sigmamed.net sigmastarsemi.com sigmcdn.com sigmob.com sigmoblive.com sign-say.com signage911.com signcc.com signdo.com signinpod.com sigujian.com sihai-inc.com sihaidj.com sihaigongkao.com sihaishuyuan.com sihaitv.com siheal.com sihociho.com sihonghui.com sihongjob.com sihongxian.com sihoo.com sihotels.com sihuanpharm.com sihui-electric.com sihuisoft.com sihuixiqu.com sihuiyiliao.com sihuizhongyi.com siia-sh.com siicenv-wuhan.com siicfl.com siicshc.com siii.xyz siilu.com siixu.com sijiaomao.com sijijun.com sijinchuanbo.com sijiwater.com sijiweinong.com sikantech.com sikem.net sikiedu.com sikuwu.com sikuyi5838.asia sikuyun.net silanggame.com silasbuchanan.shop sildyn.com sileadinc.com silenceper.com silexmicro.com silianmall.com siliansensor.com siliantecai.com siliaobaba.com siliaokelijixie.com silicon-magic.com silicongo.com siliconvisionlabs.com silikron.com silinchen.com siling.com silingge.com silique.com silkpresent.com silkroad-ec.com silkroad24.com silkroadtechnologies.com silktrek.com sillumin.com sillydong.com siloon.com silucar.com silucg.com siludao.com siluecai.com siluke.cc siluke.info silukex.com siluwu.com silvmark.store sim800.com simaek.com simagic.com simaguo.com simanuo.com simapple.com simat-sh.com simbajs.com simcere.com simcgroup.com simchip.com simcolux.com simcom.com simcomm2m.com simcu.com simei.cc simei.vip simei8.com simengadx.com simengqifu.com simglo.com simhaoka.com simiam.com simici3.com simicloud.com simij.com simiki.org simingkuai.com simingtang.com simkeway.com simmtime.com simochina.com simon96.online simope.com simp.red simperfect.com simplecreator.net simpledatas.com simplexue.com simpread.pro simsci.net simu-tech.com simu800.com simul-china.com simullink.com simulway.com simuwang.com simwe.com simxhs.com sin-jiang-law.com sin0sites.com sina-cf.com sina.com sina.lt sina.net sinaapp.com sinacdn.com sinacloud.com sinacloud.net sinadaxue.com sinaedge.com sinaemc.com sinaft.com sinaimg.com sinalog.com sinaluming.com sinan.fun sinanet.com sinanya.com sinaquyong.com sinas3.com sinashow.com sinastorage.com sinasws.com sinauda.com sinawap.com sinawf.com sinbam.com sincerelyone.com sincetech.com sincetimes.com sinct.com sindsun.com sinepharm.com sinereal.com sinesafe.com sinesemi.com sineva-robot.com sineva.com sinf-test.net sinf.net sinflb.net sinforcon.com sinfotek.com singaporepaya.com singbon.com singchy.com singdown.com singfosolar.com singfun.com singgnetworkcdn.com singhead.com singlecool.com singlegraindatabiz.com singmaan.com singoo.cc singpao.com singse.com singsun.net singtaonet.com singtown.com singularity-ai.com singularmedical.net singulato.com singworld.net sinictek.com sinitek.com sinldo.com sinlu.net sino-agri.com sino-composite.com sino-corrugated.com sino-cr.com sino-customs.com sino-epa.com sino-foldingcarton.com sino-gps.com sino-heavymach.com sino-info.net sino-life.com sino-manager.com sino-pharm.com sino-pigment.com sino-sfcc.com sino-tcm.com sino-trading.com sino-training.com sino-web.net sinoagentsh.com sinoancher.com sinoaqr.com sinoaquafilter.com sinoassist.com sinoassistance.com sinobaron.com sinobasalt.com sinobasedm.com sinobel.com sinobestbio.com sinobo.com sinobp.com sinobrook.com sinocache.net sinocare.com sinocars.com sinocax.com sinochem-guangdong.com sinochem-zhfl.com sinochem.com sinochemb2c.com sinochemehc.com sinochemintl.com sinochemitc.com sinochemjiangsu.com sinochemoilmarketing.com sinochempharma.com sinochip.net sinoclick.com sinocoalchem.com sinocopy.com sinodh.com sinodingcheng.com sinodis.com sinodrive.com sinoec.net sinoevin.com sinofarm.net sinofo.com sinofo.group sinofusite.com sinog2c.com sinogeo.com sinoglorygroup.com sinogslb.net sinogt.com sinohb.com sinohotel.com sinohowe.com sinohsc.com sinohx.com sinohydro.com sinoid.com sinoinfosec.com sinoing.net sinoinnovel.com sinoins.com sinointeractive.com sinoiov.com sinokap.com sinolease.com sinolinchem.com sinolinchemintl.com sinolines.com sinolion.net sinologyinstitute.com sinolub.com sinolube.com sinoluhong.com sinoma-suzhou.com sinomach-auto.com sinomachint.com sinomags.com sinomapping.com sinomaps.com sinomatech.com sinomatin.com sinomcu.com sinomep.com sinonet.org sinonsh.com sinontech.com sinoo.cc sinooceangroup.com sinooceanland.com sinopatho.com sinopec-usa.com sinopec.com sinopecgroup.com sinopecgx.com sinopechyzx.com sinopecnews.com sinopecpay.com sinopecsales.com sinopecsenmeifj.com sinopharm-fj.com sinopharm-fl.com sinopharm-gz.com sinopharm-henan.com sinopharm.com sinopharmdbj.com sinopharmholding.com sinopharmhospital.com sinopharmintl.com sinopharmlrt.com sinopharmsx.com sinopharmzl.com sinophex.com sinopipevalve.com sinopont.com sinopr.org sinoprinterparts.com sinoqy.com sinorda.com sinoreagent.com sinort.com sinorusfocus.com sinosam.com sinoshan.com sinosig.com sinosilica.com sinosms.com sinoss.com sinoss.net sinostargroup.com sinosteel.com sinosun.com sinosuntop.com sinotau.com sinotechline.com sinotf.com sinotide.com sinotn.com sinotone.net sinotph.com sinotrans.com sinotruk.com sinotrukinternational.com sinotrust-group.com sinoturning.com sinovale.com sinovast.com sinovatech.com sinovatio.com sinovationmed.com sinovationventures.com sinovel.com sinovoice.com sinowaycarbon.com sinowbs.com sinowbs.org sinowealth.com sinowealth.com.hk sinowel.com sinowheelbarrow.com sinowinfiber.com sinoxk.com sinoxlube.com sinozhongyuan.com sinozoc-ex.com sinreweb.com sinrey.com sinro.com sinsam.com sinsche.com sintaho.com sintaytour.com sintien.com sintoacct.com sintu.com sinture.com sinvofund.com sinvta.com sinyoung.site sinyuan.com sinyuee.com sinzk.com siobp.com siomxity.com siomxity.net sipai.com sipaphoto.com sipatsaw.com sipcdc.com sipco.com sipedu.net sipedu.org sipeed.com sipgl-lcl.com sipgzct.com siphrd.com sipingseo.com sipmsg.com sipo-sc.com siposchina.com sipprh.com sipsenegal.org sipujy.com sipurd.com siqiangame.com siqiquan.org siqxmg4256.vip sir3.com sir66.com siranbio.com sireda.com sirenyouxiang.com sirfang.com sirweara.com siryin.com siscantech.com siscmag.com sisder.com sisdown.com sisen.com sisensing.com sishui123.com sishuojixie.com sishuok.com sishuxuefu.com sisi-smu.org sisigad.com sisijiyi.com sisp-china.com sissiok.com sisuts.com siswin.com sitande.com sitangtech.com sitc.com site-digger.com site119.com siteapp-static.com sitejiu.com sitekc.com siteonlinetest.com sithc.com sitiaoyu.com sitobiotech.com sitong.net sitongedu.org sitongzixun.com sitrigroup.com sitronics-sh.com situationk.com situdata.com siud.com sivlab.com siwaman.com siweidaotu.com siweiearth.com siweikongjian.net siweiw.com siwuprint.com six.club sixflower.com sixianchina.com sixiang.im sixianggangyin.com sixiju.com sixjoy.com sixstaredu.com sixu.life sixue.tech sixuexiazai.com sixunited.com sixyin.com siyanhui.com siyetian.com siyi007.com siyrcw.com siyuan.cc siyuan.me siyuanedu.com siyuanmall.com siyuanren.com siyuanyl.com siyuhome.net siyunyatwo.com siyuweb.com sizebid.com sizeofvoid.net sizhicn.com sizuo.com sj-airpurge.com sj-hospital.org sj-lawyer.com sj-marathon.com sj-tmdi.com sj0763.com sj123.com sj33.net sj3g.com sj51.net sj6rgxtjg3tmb.com sj998.com sjawards.com sjaz.com sjbutton.com sjbyj.com sjcamzone.cc sjcomic.com sjcybz.com sjdongwang.com sjdshd.com sjdzp.com sjdzp.net sjebh.com sjetdz.com sjf029.com sjfcdn.com sjfh168.com sjfpro.com sjfzxm.com sjg8.com sjgle.com sjgo365.com sjgskaipiao.com sjhcip.com sjhfkhgut009.com sjhfrj.com sjhgo.com sjhl.cc sjhoffice.com sjhong.net sjhuatong.com sjhy.net sjhykt.com sjizx.com sjjob88.com sjjt001.com sjjzm.com sjkj.net sjlbearing.com sjlexpress.com sjlgc.com sjlhlawyer.com sjlvyou.com sjm-zdh.com sjm.life sjmao.net sjmdh.com sjmeigao.com sjmp3.com sjmwsw.com sjono.com sjooo.com sjpif.net sjpjyx.com sjq315.com sjqcj.com sjqmtlm.com sjrwzz.com sjsbk.com sjsei.com sjsgdzx.com sjsheji.com sjsrm.com sjsydq.com sjszt.com sjtickettech.com sjtm.me sjtug.org sjtusummer.org sjtxt.com sjtxt.la sjtype.com sjvi.net sjwec-tencentclb.cloud sjwec-tencentclb.com sjwec-tencentclb.net sjwec-tencentclb.work sjwj.com sjwl.xyz sjwt.net sjwtlm.com sjwx.info sjwyx.com sjxinxiwang.com sjxqn.com sjxs.la sjxtcw.com sjxydc.com sjxyit.com sjxysec.com sjxyx.com sjxzc.com sjy-art.org sjy2.com sjycbl.com sjyhotel.com sjyl.com sjysz.com sjyt.net sjytech.com sjyx.com sjyybz.com sjyyt.com sjyyy.com sjz-marathon.com sjz.cc sjz110.cc sjz44z.com sjz7.com sjzbasha.com sjzbwx.com sjzcfjd.com sjzcmw.com sjzez.com sjzfeitai.com sjzfls.com sjzgxwl.com sjzhr.com sjzhushou.com sjzjifeng.com sjzjinliulin.com sjzjkqgs.com sjzjtjt.com sjzkz.com sjzlg.com sjzlgz.com sjzmama.com sjznuanjieks.com sjzonline.com sjzpco.org sjzqcrl.com sjzrbapp.com sjzrmyz.com sjzshunbang.com sjzslnyhy.com sjzswtz.com sjzszz.com sjztd.com sjzthdz.com sjzxfy.com sjzxh.com sjzxtsh.com sjzxyy.com sjzyb.com sjzyes.com sjzys.com sjzysdz.com sjzysgz.com sjzyxh.com sjzyz.net sjzzbxh.com sjzzxmm.com sjzzyy.com sk163.com sk1999.com sk1z.com sk2w.net skatehere.com skcto.com skd6.com skd62.com skdj5.com skdlabs.com ske.cc skeo.net sketchcn.com sketchupbar.com sketchupbbs.com skf-bearing.net skg.com skhb.com skidstorm.com skieer.com skimit.net skinjc.com skinme.cc skinpp.com skip-links.com skjcsc.com skl.net skland.com sklbce.org skldoor.com sklinux.com skmgc.com sknbj.com skomart.com skongmx.com skp-beijing.com skpssz.com skrskrskrskr.com sksdwl.com sksight.com skslfd.com skstravel.com skswz.com sktcdn.com sktecfibre.com sktfaker.com skuking.com skusoft.com skwfls.com skxox.com skxsj.com sky-deep.com sky-fire.com sky-ing.com sky-mobi.com sky123th.com sky1shop.com sky350.com skyai.tech skyallhere.com skyao.io skyapp1.tv skyard.com skyart.site skybility.com skybluek.com skybogroup.com skybright-group.com skycaiji.com skycedu.com skycham.com skycloudsoftware.com skycn.com skycn.net skycnc.com skycoleasing.com skycorp.com skydodi.com skydust.net skyeaglee.com skyecs.com skyee360.com skyfeather.online skyfollowsnow.pro skyfont.com skyfox.org skyhand.vip skyheng.com skyislets.com skyleon.com skylerzhang.com skymoons.com skymoons.net skymp4.cc skynan.com skynicecity.com skynj.com skype-china.net skype-tom.com skypixel.com skypuretech.com skyray-instrument.com skyray-water.com skyrelay-ic.com skyrichpower.com skyrivers.org skyrj.com skysea.com skysgame.com skysriver.com skysrt.com skyton123.com skyts.net skytv.cc skyue.com skyw.cc skywalkeryacht.com skywavewifi.com skywek.com skywellcorp.com skywldh.com skywork.ai skyworkcdn.com skyworth-ac.com skyworth-cloud.com skyworth-ea.com skyworth.com skyworthbox.com skyworthdigital.com skyworthdigitaliot.com skyworthds.com skyworthev.com skyworthiot.com skyworthlighting.com skyworthnj.com skyworthznxyj.com skyxinli.com skyxvpn.com skyyin.org skyzhan.com skznsb.com sl.al sl.fun sl.ink sl512.com sl916.com sl91d.com slaccas.com slagta.com slaidor.com slamtec.com slanissue.com slanmedia.com slatic.net slbauto.com slbiop.com slcad.com slchos.com slcyber.icu sldhc.com sldns1.com slduntong.com sle.group sleele.com sleepboy.com sleepwearinc.com slegetank.com slengy.com sleton.com slfwq.com slgegc.com slhwyy.com slicejobs.com slidestalk.com slingbearings.com slink8.com slinli.com sliun.com sljkj.com sljob88.com slk1.net slkg1949.com sllai.com sllngy.com sllssrq.com slodon.net sloer.com slofdoro.com slogra.com slot-china.com slot4.net slotb.vip slotph.vip slovakia-visacenter.com slovenia-visacenter.com slowdark.com slpi1.com slpm.net slpmg.com slrbs.com slreactor.com slready.com slshareservices.com slspcn.com slssx.com slsteel.com slswd.com slswx7.com sltg2019.com sltgj.com slthxx.com sltv.net sltxantonline.com sluyu.com slwh-dfh.com slwwedding.com slybjp.com slyld.com slyxmobi.com slzsxx.com slzww.com sm-check.com sm-cq.com sm-main.com sm0.fun sm160.com sm160.net sm3s.com sm597.com sm96596.com small-master.com smallfighter.com smalljun.com smallpdfer.com smallyuan.com smarch.com smarchit.com smart-hengdi.com smart-idc.net smart-ptt.com smart-rise.com smart.com smart2pay.com smart365ol.com smart400.com smartautoclub.com smartbgp.com smartbunniemen.com smartcar.zone smartcarrace.com smartchn.com smartcity.team smartcitysz.com smartcloudcon.com smartcom.cc smartdeep.com smartdeer.com smartdeer.work smartdot.com smartedm.com smarteredu.net smartermicro.com smartgaga.com smarthey.com smarthomecn.com smarthuayan.com smartisan.com smartisanos.com smartisantv.com smartjoygames.com smartlifein.com smartlinkio.com smartlinku.com smartmad.com smartmapx.com smartmidea.net smartmore.com smartoct.com smartont.net smartpigai.com smartpoweriot.com smartqilu.net smartroomcn.com smarts-isoftstone.com smartsenstech.com smartsteps.com smartstudy.com smarttaixing.com smartwebee.com smartx-cn.com smartx.com smartxiantao.com smartyao.com smartyoke.com smartyun8.com smartzzx.com smarun.com smaryun.com smasmj.com smb956101.com smbc-cardzj0.club smbinn.com smbxw.com smc18.com smc3s.com smcalia.com smcalib.com smcbnokkiduran.com smcbnokkihabak.com smcbnokkirederc.com smcec.com smcic.net smcsrj.com smd-automation.com smd88.com smdcn.net smdiban.net smdmark.com smdx.net smdxx.com sme-cn.com sme8718.com smebb.com smec-cn.com smedi.com smei.net smeia.net smeiic.com smemo.info smeok.com smetumen.com smf1888.com smfsgs.com smfyun.com smgpt.com smgstar.com smgstv.com smgtech.net smhsw.com smhyplay.com smianao.com smianet.com smic-sh.com smicc.com smicrobe.com smics.com smil888.com smile2012.com smileangelfoundation.org smilec.cc smilefil.com smileyan.com smilingwhitebear.com smithcn.com smjstcy.com smkeji.com smkgc.com smkmake.com smknow.com smkxyjy.com smlaw8.com smlqcl.com smmc.com smmiki.com smo-clinplus.com smo-software.com smoba.net smobird.cc smogfly.cloud smogfly.club smogfly.com smogfly.net smogflycloud.com smogflycloud.net smohan.net smoothgroup.cc smoreroll.com smovie168.com smowo.com smpg888.com smppw.com smq.ltd smqh.com smrmyy.com sms18.com sms9.net smsbao.com smshos.com smshx.com smskb.com smslk1.com smslk2.com smslkcoffee.com smsot.com smsvifv.com smswgy.com smswriter.com smsyun.cc smt-dip.com smt.net smt2000.com smtcdn.com smtcdns.com smtcdns.net smtchinamag.com smtcl.com smtdc.com smtdwx.com smthome.net smtphub.org smtro.com smtsmt.com smtso.com smtsvs.com smttouch.com smtukuzy.com smtul.com smtvip.com smtw.com smtworld.com smucdn.com smudc.com smuszh.com smuszsh.com smvip8.com smwd.tech smxdiy.com smxgjj.com smxin.com smxr.com smxrcw.net smxs.com smxyi.com smxzls.com smyfinancial.com smyhvae.com smynn.com smyx.net smyxxj.com smyyhj.com smyz.net smzdm.com smzdmimg.com smzdwan.com smzhongran.com smzjy.cc smzrmyy.com smzsffb.com smzy.com sn-epe.com sn12333.com sn180.com sn511.com snack-show.com snai.edu snail.com snail007.com snailgame.net snailovet.com snailsleep.net snailyun.com snap-buy.com snapany.com snapemoji.net snapgenshin.com snaplabdevelop.com snapp.ir snapp.site snapp.taxi snappcloud.io snappea.com snapplay.com snappmaps.ir snaptube.app snbcnyjt.com snbiopharm.com snbkf34.com sncoda.com snctaa.com snd-cia.com snd-stig.com snd-yy.com snda.com sndcc.cc sndgroup.com sndhr.com sndks.com sndnt.com sndo.com sndvc.com sndzrg0.org sneac.com sneb3.com snedu.com sneducloud.com sneia.org snfic.com snfox.com snfzsw.com sngct.com snh48.com snhere.com snhrm.com snibe.com sniec.net snieri.com snimay.com sniuw.com snjairport.com snjbs.com snjjiu.com snjt.com snkjol.com snkshoe.com snkyat.com snltty.com snlxgk.com snmandarin.com snmi.com snmxzls.com snnd.co snoba.net snobten.com snodehome.com snoone.com snor-china.com snowballfinance.com snowballsecurities.com snowballtech.com snowbeasts.com snowdream.tech snowflake.pink snowkey.com snowlotusgroup.com snowyimall.com snpac.com snps.tech snptc.com snrat.com snren.com snrtv.com snrunning.com sns-china.com snscz.com snsfun.cc snsfun.com snsii.com snsnb.com snsqw.com snssdk.com snsyhg.com snsyx.com sntba.com snto.com snuoen.com snupg.com snv1.com snxw.com snycloud.com snynas.com snyu.com snzfj.net snzhao.com snzhny.com snzsxh.com so.car so.com so03290koaq.com so03300koaq.com so04060koaq.com so04061koaq.com so123.com so126.com so50.com so666gslb.com so8848.com so9l.com soapphoto.com soar-chem.com soargift.com soarpower.com soarwatch.com soaryoof.com soauto.com sobaidupan.com sobereva.com sobeycache.com sobeycloud.com sobeylingyun.com sobeylive.com sobili.com sobone.com sobot.com sobot.io soboten.com sobute.com socang.com socay.com soccerbar.cc socchina.net soche8.com sochengyi.com sochips.com social-touch.com socialark.net socialbasecustomercontent.com socialbaseusercontent.com socialbeta.com socialjia.com socialpls.com socket.tw socolar.com socomic.com socool-tech.com socoologo.com socotton.com socpk.com sodalife.xyz sodamc.com sodao.com sodasoccer.com sodayang.com sodc8.com sodexo-cn.com sodhef.com sodig.com sodino.com sodion.net sodocloud.com sody123.com soeasysdk.com soeo.net sofa-webbing.com sofabiao.com sofan.one sofang.com sofangche.com sofasofa.io sofastack.tech sofeiya.net sofi-tech.com sofoo.com sofreight.com soft128.com soft2005.com soft50.com soft5566.com soft568.com soft6.com soft778.com soft8.net soft808.com soft8899.com softabc.com softbank.best softbanks.net softbar.com softbingo.net softdownd.com softgostop.com softhome.cc softjinzhou.com softmall.net softrobottech.com softscdn.com softsz.com softtest.com software.download.prss.microsoft.com softwarechn.com softwarecn.com softweek.net softwhy.com softwincn.com softworker.com sofujinyu.com sofun.com sogaa.net sogalqd.com sogaokao.com sogeche.com sogo.com sogoke.com sogood360.com sogou-compress.com sogou-diskmgr.com sogou-inc.com sogou-inner.com sogou-kantu-pic.com sogou-kantu.com sogou-op.org sogou-pdf.com sogou-wallpaper.com sogou.com sogou.net sogoucdn.com sogoucdndl.com sogouimecdn.com sogowan.com sogw.cc soharp.com sohfvx3149.vip soho-yiming.com soho3q.com sohoblink.com sohochina.com sohodd.com sohonow.com sohotask.com sohu sohu-inc.com sohu.com sohu.net sohuapps.com sohucs.com sohuhistory.com sohuiw.com sohunjug.com sohuns.com sohuora.com sohurdc.com sohusce.com sohuu.com soicp.com sojex.net sojiang.com sojiang.net sojianli.com sojixun.com sojiyin.com sojoline.com sojson.com sojump.com soke17.com soken-sz.com sokoban.ws sokon.com soku.com sokuba.com sokutu.com sokyotw.com solaking.com solanyun.com solar-engine.com solarbao.com solarbe.com solarbio.com solarcare.com solarchin.com solareast.com solarf.net solaridc.com solarspace.com solarzoom.com solasmat.com soldeazy.com soldierstory-toys.com solelybio.com solepic.com soletower.com soliao.com solidifyk.com solidigm-asdf.com solidigm-nvme.com solidigm-zxcv.com solidot.org solidstatelion.com soliner.com solipharma.com solitaire47.com solo-launcher.com solochex.com soloknight.xyz solomath.com solooncontrols.com solosea.com solotoon.com solove.design solsticeorbit.cfd solution9.net solvyou.com som88.net somacisgraphic.hk somama.com somamobi.com somd5.com somdom.com someabcd.com somenchina.com somenmian.com something8.com sometracking.com somo.so somode.com somode.net somsds.com sonbest.com soncci.com song001.com songcn.com songcwh.com songduwuye.com songguike.com songguo.com songguo7.com songguobox.com songguojiankang.com songhaifeng.com songhaoyun.com songhaozhi.com songhengnet.com songhualan.com songhuwan.com songjiangjituan.com songker.com songlei.net songlicnc.com songmaogroup.com songqinnet.com songshanlab.com songshitang.com songshizhao.com songshuai.com songshudiandian.com songshuhui.net songshujiedan.com songshushuo.com songsongruanwen.com songsongyingxiao.com songsongyun.com songtaox.com songtasty.com songtianlube.com songtsam.com songwang168.com songxiaocai.com songxiaojin.com songxing.net songyang.net songyangcn.com songyanjiaye.com songyi.net songyongzhi.com songyuan163.com songyuan58.com songyuanlove.com songyuanshuisi.com songzhaopian.com songzi100.com songziren.com songzixian.com sonhoo.com sonhoshin.com sonicmodel.net sonicrhino.cc soniu.net sonkwo.com sonkwo.hk sonoscapebrasil.com sonoschina.com sontan.net sonybbs.com sonyong.com sonyselect.net soo56.com sooal.com sooauto.com soocang.com soochowchem.com soocor.com soodao.com sooele.com soofel.com soogf.com soogif.com soohaid.com soojs.com sooker.com soolinen.com soolou.net soolun.com soomal.com soon.guru soonku.net soonv.com soonwill.com soonyo.com sooopu.com sooopu.org soopat.com soopay.net sooroo.com sooshong.com sooshu.net soosmart.com soosox.com sootmoor.com sootoo.com sootool.net soovalve.com soovvi.com sooxie.com sooxue.com sooyooj.com soozhu.com soozhuozhou.com sopaidea.com soperson.com sophgo.com sophgo.vip sophnet.com sopic.org sopowcore.net soq.com soqicrm.com soqqq.com soquano.com sorftime.com soripan.net sorswitch.com sortdoor.com sos919.com sosaf.com sosdx.com sosg.net soship.com soshoo.com soso.com sosoba.org sosobtc.com sosoled.com sosolight.com sosomp.com sosonc.com sosonsk.com sosoo.net sosorank.com sososnap.com sososteel.com sosotec.com sosoyunpan.com sosoyy.com sosuo.name sosyao.com sotake.com sotemall.com sothink.com sotongwang.com sotouv.com sotoy.net sotu114.com sotunet.com sou-yun.com sou.com sou58.com soua.com souaiche.com souajki.com souajki.net soubao.net soucai.com soucangjie.com souche-fin.com souche-inc.com souche.com soucod.com soudao.com soudoc.com soudron.com souduanzu.com soueast-motor.com souebao.com soufair.com soufang.com soufang998.com soufun.com soufunimg.com souge.cc souget.com sougou.com sougu001.com souha.net souho.cc souho.net souiaico.com souid.com souidc.com souidc.org soukecheng.net soukuyou.com soulapp.me soulgame.mobi soulsky.net soulteary.com soulu365.com souluo.net souluojie.com souluopai.com soulwonderland.com sound-force.com soundai.info soundconch.com soundems.com soundgroup.com soundnybio.com soundpeats.com soundstay.com soupan.info soupf.net soupin.com soupingguo.com soupu.com soupv.com souqian.com souqiantu.com souqiu8.com sour-lemon.com source.tutorabc.com source3g.com sourcecodebeat.com sourcecodecap.com sourcecodeserver.com sourcegcdn.com sourcelandchina.com soushai.com sousou.com sousou.pro sousoudus.com sousuoshidai.com sousuotu.com southbeauty.com southbeautygroup.com southchip.com southcn.com southei.com southernfund.com southernmindict.net southernpec.com southgis.com southmoney.com southnews.cc southnews.net southseagy.com southsurvey.com southyule.com soutiyun.com soutudi.so soutushenqi.com souvi.com souvr.com souwuxing.com souxia.com souxue8.com souxuexiao.com souxw.com souya.com souyidai.com souyue.mobi souyue.vip souyunku.com souyute.com souziti.com sov2ex.com sovell.com soven.com sowang.com soweather.com sowellwell.com sowin.com sowotech.com sowu.com soxpai.com soxyc.com soya-protein.com soyim.com soyixia.net soyiyuan.com soyjg.com soyo-dg.com soyohui.com soyoung.com soyouso.com soyunion.com soyx123.com sozdata.com sozhe.com sozhen.com sozyb.com sp.cc sp168.com sp588.cc sp588.net sp888.net sp910.com space1688.com spacechina.com spaceestar.com spacei.net spacemit.com spacesystech.com spacety.com spamc.com spanishknow.com sparenode.com spark-page.com spark-page0.com spark-page1.com spark-page2.com spark-page3.com spark-page4.com spark-page5.com spark-page6.com spark-page7.com spark-page8.com spark-page9.com spark4y.com sparkdeep.com sparkeduapi.com sparkeducdn.com sparkgis.com sparkletour.com spasvo.com spawor.com spay365.com spbao.com spbo.com spbycdn.biz spbycdn.com spbycdn.info spc365.com spcc-cn.com spcc-silk.com spccmc.com spcdntip.com spcdntipbak.com spcywang.com spdbh5.com spdbuser.com spdcat.com spddir.com spdex.com spdiy.com spdl.com spdydns.com spdyidea.com speakout.hk specchemind.com specialcdnstatus.com spectorfilm.com spectrafusion.cfd sped-ssss-pppp-eeee-dddd.com speechless.pw speed-hz.com speedaf.com speedcdns.com speedcdns.info speedcdns.org speedmanager.net speednt.com speedpdf.com speedsz.net speedws.com speedws.info speedws.org speedzonerc.com speiyou.com sperogenix.com spfbiotech.com spforum.net spfosd.com spg-ls.com spgacmotorsc.com spgcw.com spgykj.com sph00852.com sphcchina.com sphchina.com sphkids.com sphmc.org sphsine.com spibj.com spic-coalcg.com spicaceshi.asia spiccq.com spicescn.com spicezee.com spicgx.com spicgxnp.com spicgz.com spicjs.com spiiker.com spin-view.com spiritframe.org spirithy.com spischolar.com spiwcn.com splaybow.com splayer.work spldlkj.com splendecor.com splmcn.com spmcn.com spnchinaren.com spochikj.com spoience.com spointdesign.com sporposten.today sport-syy.com sportman.cc sportnanoapi.com sportq.com sports-100.com sportsdt.com sporui.com spoto.net spotpear.com spouyashop.com spph-sx.com spplnet.com spprec.com spr-atm.com sprayv.com sprda.org spreadtrum.com spreton.com spring-mall.com spring4all.com spring56.com springairlines.com springcocoon.com springpharma.net springtour.com springx.fun sprint-tech.com sprixin.com spsb114.com spsicloudport.com spsisctgroup.com spsisncl.com spsy.org sptcc.com sptccn.com spthome.com sptv-1.com spug.cc spvtime.com spwj.com spxgas.net spyouxi.com spzb.com spzp.com spzs.com sq-ks.com sq-newstar.com sq.cc sq1996.com sq23.com sq521.com sq523.com sq580.com sq581.com sqa-chn.com sqage.com sqchunqiu.com sqdaily.com sqeatin.com sqezz.com sqfcw.com sqfgc.com sqgg.cc sqggzy.com sqgwh.com sqhec.com sqhx.com sqis.com sqj-jiuyousport.com sqj888.com sqjk123.com sqjrc.com sqjsxy.com sqjt.com sqjtcy.com sqjvx.org sqkb.com sqklrq.com sql110.com sqlpub.com sqlsec.com sqluck.com sqmarathon.com sqmn666.com sqphb.com sqqmall.com sqqmtj.com sqqnh.org sqrc.net sqrcw.com sqreader.com sqrsks.com sqrtthree.com sqrush.com sqs373.com sqshmzx.net sqsjt.net sqstudio.com sqswjt.com sqsyy.com square16.org squarecn.com squarefong.com squirrelboiler.com sqwenhua.com sqxww.com sqyai.com sqyhw.com sqzjg.com sqzs.com sqzw.com sqzyxy.com sr-139.com srcb.com srcbcz.com srcbeijing.com srccdn.com srccdn2.com srcge.com srcgsre.com srcmsh.com srcqeece.com sre.ink srell.com srfip.com srgnmsrg.com srgow.com sriappalam.com sribs.com sric.fun srichina.org srici.com sritsoft.com srixon-china.com srlfl.com srlzzp.com srmyy.com srrcw.com srrsh.com srrtvu.com srschool.net srslyy.com srsq.club srt365.com srtong.com srun.com srvbus.com srw00.com srworld.net srx3.net srxiayunbusiness.com srxww.com srxzz.com srygz.com srzc.com srzdq.com srzx.com srzx100.com srzxjt.com ss-ceo.com ss-smartech.com ss03.net ss1969.com ss2007.com ss246.com ss256.com ss28.com ss8899888.com ssalegs.store ssaocorp.com ssawhotels.com ssaxx.com ssaya.win ssbbww.com ssbgzzs.com ssbifen.com ssbjf.com ssbjsy.com ssbx.me ssby.cc ssby66.com ssc-mcc.com sscanmou.com sscefsol.com sscejia.com sscha.com sschengtou.com sscity.org sscms.com sscmwl.com sscom.vip ssctp.com sscy.net ssdaex.com ssdata.com ssdax.com ssdfans.com ssdp.com ssdzg.com sseinfo.com ssf.cc ssfb86.com ssfei.com ssfetsz.org ssffx.com ssfqsfvd.com ssgedm.com ssgeek.com ssgsemi.com ssgz.com sshr.net ssia.cc ssidc.net ssidc.org ssine.cc ssine.ink ssipex.com ssis.asia ssish.com ssjj2.com ssjjss.com ssjjtt.com ssjlicai.com ssjljk.com ssjytc.com ssjyxx.com sskc360.com sskgame.com sskoo.com ssky123.com ssl-zs.cc sslaaa.com sslad.com sslawy.com sslceshi.com sslchaoshi.com sslchina.com sslcity.com ssldun.com ssldun.vip ssleye.com sslibrary.com sslnode.com sslso.com ssltgm.com ssmc-sz.com ssmchina.org ssmec.com ssmedic.com ssmept.com ssmys.com ssmysh.com ssnewyork.com ssnm.xyz ssnuo-ch.com ssofair.com ssoffo.com ssoouu.com ssp.group sspaas.com sspai.com sspai.me sspeeddns.com sspjizb.com ssports.com ssports.net ssptqt.com ssqgx.com ssqtt.com ssqzj.com ssrcdn.com ssrcr.com ssreader.com ssrjzs.com ssrlzy.net sss.wiki sss348499.com sss437942.com sss495830.com sss850697.com ssscdn.com sssch.net ssses.net ssslgs.com sssmro.com sssmy.com ssso.com sst-ic.com sst-sd.com sst-sz.com sstlp.com ssuip.com ssw777734dh1.shop sswater.com sswchina.com sswl315.com ssws.tv ssxcycy.com ssxf.net ssxjd.com ssxpxjt.com ssxx.site ssxxp.com ssyapi.com ssyar.com ssycw.com ssydt.com ssyer.com ssyssf.com ssywh.com ssyxlx.com ssyxmall.com ssyzx.net sszgit.com sszhg.com sszjnc.com sszsj.cc st-jzx.com st-recovery.com st.dl.pinyuncloud.com st001.com st12121.net st123.com st180.com st3tzmp6gg.work staarphewas.org stacf.com stachina.org stackboom.xin stackcc.com stackoom.com stackoverflow.club stackoverflow.wiki stage1st.com stage3rd.com staginfo.com staidson.com standard-groups.com standardcn.com standardshop.net standardsofchina.com standteam.net stanlyview.com staofchina.com stapharma.com star-charge.com star-elink.com star-engine.com star-kid.com star-linear.com star-meeting.com star-new-material.com star-river.com star365.com star7game.com star7th.com star8.net stararc-coating.com starbaby.cc starbaby.com starbaysoft.com starcharge.com stardata360.com starde.net stardict.net stardict.org stards.com stardust2000.com starduster.me starfishcloud.com starfivetech.com stargame.com starhalo.mobi staringos.com starkai.com starkettle.com starlakelab.com starlink.uno starlu.com starm.cc starming.com starooo.com starpainters.net starpiao.com starrails.com starrevs.com starrockinvest.com starrtc.com starrydyn.com starryfrp.com starrymed.com starrysurvey.com stars-one.site starschina.com starscube.com starsharbor.com starsino.com starsmicrosystem.com starsshine1.com starstech.cc starswar.org startcarlife.com startcatcher.com startcomca.net startdt.com startech.ltd starting2000.com startogether1.com startos.com startos.org startup-partner.com starwarschina.com starway.net starwaycomm.com starworldgames.com starworldmacau.com starwsn.com starxn.com staryea.com stat-nba.com stat08.com stat18.com static.cdnetworks.com static.eprintsw.com static.tripcdn.com static163.net staticaa.com staticdn.net staticec.com staticfile.net staticfile.org statickksmg.com statics.cc staticsdd.com staticsoe.com staticsoem.com staticswin.com stationpc.com statsinstall.xyz statuslarkoffice.com stay-bullish.com staybrowser.com staycu.com stbieshu.com stboy.com stbs100.com stc2002.com stcaimcu.com stcfa.org stcfile.com stcmcu.com stcmcudata.com stcmih.com stcn.com stcy168.com stcyzls.com stdaily.com stdard.com stdhgd.com stdicloud.com stdlibrary.com stdmm.org stdout.pub stdwp.com ste56.com stea2008.com steam302.xyz steambig.com steamboxs.com steamchina.com steamcn.com steamdd.com steamdt.com steamgift.site steamhost.info steammm.com steampp.net steamproxy.net steampy.com steamrepcn.com steamxdf.com stec.net stecn.org stedu.net steel-mate.com steel-spot.com steeljs.com steelkey.com steelphone.com steelsearcher.com stefg.org stegameskins.com steinberg-cn.com stelinno.com stellarplayer.com stemceltech.com step-by-step.tech step-motor.com stepelectric.com stepsigriner.com stereorise.com steriguardmed.com stexc.online stfile.com stg8.com stgiantfilms.com stgowan.com sthforme.com sthfsteel.com sthifi.com sthke.com sthospital.com sticksgame.com stjinfa.com stjinguan.com stjjxh.com stkfanli.com stklt.com stlb520.com stmaoyi.com stmbuy.com stmjsociety.com stmybj.com stnn.cc stnts.com sto-express.com stocke.com stockhn.com stockradar.net stockren.com stockstar.com stockwei.com stofund.org stointl.com stojf.com stone139.com stone168.com stone365.com stonebtb.com stonebuy.com stoneios.com stoneleague.com stoneo2o.com stonepoll.com stonepoll.net stonescloud.com stonesm.com stoneu.com stonexp.com stor-age.com stor-helper.com storage-asset.msi.com storcezon.com store12.com storeapi.net storecorefulfillment.download.prss.microsoft.com storeedge.microsoft.com storeedgefd.dsx.mp.microsoft.com storkapp.me stormorai.com story520.com storyboardworld.com storyren.com stosolution.com stourweb.com stourweb.net stovol.club stoyard.com stpolice.com stpos.net stqiyuan.com stql.com stql.org str-mo.com straitchain.com strategy-sight.com stray-soul.com streamax.com streamaxtech.com streamcomputing.com streamlakeapi.com streffy.com strinova.com strong-light.com strong-study.com strongfc.com strongflc.com strongled.com stshuizhi.com stsmt.com stssugar.com stswjx.com stszcm.com stt-bearing.com sttanso.com sttcq.com sttry.com stu-lab.com stu-works.com stu51.com stubbornhuang.com studa.net studentboss.com studioartiz.com studstu.com study-cloud.com study163.com studyems.com studyez.com studyfor.work studyfr.net studyget.com studygolang.com studyhub.fun studyingtours.com studypay.com studyquicks.com studytime.xin studyuser.com studyvip.com stuhome.net stuhui.com stuky.net stulip.org stuliving.com stuln.com stunnel.vip stupid77.com stupidet.com stuq.com sturgeonnews.com stutimes.com stvf.com stvgame.com stwj.com stwyxh.com stxfjs.com stxsw.com stylecdn.com stylechina.com styles-sys.com stzc.com stzzx.com su-jiao.com su-long.com suaee.com suan5.com suanbanyun.com suanchang.com suandao.com suanguaju.com suanjiayun.com suanjuzi.com suanpin.com suanst.com suansuangua.com suanya.com suapp.me suawin.com subangjia.com subaonet.com subaoxw.com subaru-li.org subeiflower.com subelf.net subingkang.com subinwechat.com subline.org subo.net subom.net subond.com subuy.com sucai.com sucai77.com sucai999.com sucaibar.com sucaidao.com sucaifu.com sucaijiayuan.com sucaijishi.com sucainiu.com sucaiplus.com sucaisucai.com sucaitu.cc sucaiw.com success001.com successhr.com succez.com sucdri.com such-game.com suchasplus.com suchengmeizhan.com suchugao.com sucjg.com sucop.com sucoupon.com sudaizhijia.com sudaoa.com sudasuta.com sudawuye.com suddenfix.com sudecoating.com sudoinfotech.com sudu-67ph.com sudu-72ub.com sudu-ab6h.com sudu-by4e.com sudu-du9k.com sudu-kay6.com sudu-me6n.com sudu-pq2y.com sudu-q6wk.com sudu-r8gh.com sudu-sq56.com sudu-tf42.com sudu-xu9b.com sudu-y94k.com sudu123.net suducha.com sududa.com sudundns.com sudupower.net sudusite.com suease.com suemor.com sueon.com sufachina.com sufangxu.com sufeinet.com sufoma.com sufont.com sufybkt.com sufycdn.com sugaov.com sugar5.club sugarall365.com sugarenergy.com sugarguo.com sugarle.com sugessofficial.com sugon.com sugou.com suguangxx.com sugwedding.com suhaoyy.com suhedj.com suhedz.com suhergroup.com suhuishou.com sui.com sui.me suibao-jiaozhu.com suibao.com suibiji.com suibo.org suiji123.com suijinetworks.com suijunlaowu.com suilengea.com suileyoo.com suimeng.la suinikan.com suiningwang.com suiniyi.com suiqiao.com suirui.com suishenyun.net suishouji.com suishouxie.com suishouzj.com suisuihu.com suisuijiang.com suitaichem.com suitdaily.com suiunited.com suixianwang.net suixin8.com suixingpay.com suixinzulin.com suixkan.com suixw.com suiyichong.com suiyifa.com suiyiju.com suiyuanjian.com suizhoushi.com suizui.net sujh.net sujia.cc sujiagroup.com sujiao1668.com sujw.com sujx.net sukean.com sukeler.com sukeyun.com suki.club suki.moe sukimon.me sukiu.net sukkaw.com sukneyu.com sukoshi.xyz sukoutu.com sukvm.com sulabs.net sulaixue.com sulamp.com sulandscape.com suleapi.com suliaodingzhi.com suliaojian.com sulicn.com sulitui.com suluf.com sulvwenhua.com sumaart.com sumaarts.com sumapay.com sumatang.com sumavision.com sumcl.com sumec.com sumedu.com sumeme.com sumer.work sumgotea.com sumian.com sumiao.net sumiaowang.com sumibuy.com sumkoo.com sumkoo.net sumly.net summall.com summercampschina.com summerfarm.net summerlight.com summerlight.name summerpalace-china.com summitpharmachina.com summitviewcapital.com sumoon.com sumrday.net sumscope.com sumuda.tech sumwin.com sumzc.com sumzi.com sun-ada.net sun-coo.com sun-create.com sun-feel.com sun-hua.com sun-park.com sun-wish.com sun0769.com sun0769ns.com sun0816.com sun66.net suna-opto.com sunaas.com sunacctg.com sunalytools.com sunari17.com sunasia.com sunbelife.com sunbl.com sunbloger.com sunbo.com sunbo367.com sunborngame.com sunbowhospital.com sunboxsoft.com sunboyu.com suncereltd.com suncjm.com sundan.com sundaydragon.com sundayvision.net sundns.com sundray.com sunear.net sunease.net sunemc.com suner.cc sunera-cn.com sunergyworks.com sunflowerscf.com sunfounder.cc sunfreight-logistics.com sunfront.com sunft.com sungainyeast.com sungari1995.com sungent.com sungesoft.com sungine.com sunglow-tec.com sungoal.org sungoedu.com sungroup-energy.com sungshu.com sunhan.vip sunhante.com sunhepower.com sunhongs.com sunhospital.net sunhuhotel.com suninf.net suninfo.com suning.com suningbank.com suningcdn.com suningcloud.com suningdns.com suningestate.com suninggslb.net suningholdings.com suninghotels.com suningmail.com suningpay.com suningyunyou.com sunjex.com sunjiadai.xyz sunjianjian.com sunjs.com sunkeydata.com sunland.vip sunlandlaw.com sunlands.com sunlandstudy.com sunlandvip.com sunlandzk.com sunleader.net sunlife-everbright.com sunlight-tech.com sunlogging.com sunlogin.com sunlogin.net sunlons.com sunlordinc.com sunlune.com sunmarr.com sunmeihotel.com sunmen.com sunmi.com sunmingxia.com sunmmio.com sunmmm.com sunmnet.com sunmoonepe.com sunnatech.com sunnercn.com sunnergp.com sunnsoft.com sunny90.com sunnyaiot.com sunnychina.com sunnyfly.com sunnyhaitai.com sunnyhf.com sunnylab.work sunnylawyer.com sunnyms.com sunnyoptical.com sunnyos.com sunnyplas.com sunnypure.com sunnyqi.com sunnysemi.com sunnyxx.com sunocean.life sunofbeaches.com sunofus.org sunon-china.com sunon-power.com sunonln.com sunorensolar.com sunorlng.com sunowe.com sunowo.com sunpala.com sunpapergroup.com sunpeed.com sunpowergroup.biz sunprocn.com sunpun.com sunrain.com sunrate.com sunray2000.com sunresin.com sunresin.net sunrisedutyfree.com sunrisegroupcn.com sunrisenan.com sunrisesha.com sunrizetech.com sunrtb.com sunrtnet.com sunsea.net sunseekerpower.com sunsetcare-mirrortech.com sunsharer.com sunshine-power.net sunshine-sino.com sunshinecoasthomesearch.com sunsili.com sunsilu.com sunsine.com sunspotfund.com sunstarasia.com suntech-metal.com suntech-power.com suntechospital.com suntgj.com suntimehousehold.com suntop168.com suntray.com suntrayoa.com suntront.com sunup.name sunup3d.com sunupcg.com sunus-china.com sunvim.com sunvio.com sunwardcap.com sunwatt.com sunwaygas.com sunwayland.com sunwaypharm.com sunways-portal.com sunwayworld.com sunwayx.com sunweihu.com sunweiwei.com sunwellpower.com sunwin-china.com sunwin2001.com sunwinon.com sunwoda.com sunwoodacoustic.com sunxiaoning.com sunxisc.com sunyaholding.com sunyansong.com sunyard.com sunyea.com sunyet.com sunyitech.com sunyoads.com sunyuu.com sunywo.com sunzhongwei.com sunzn.com suo.im suobao8.com suobifa.com suobuy.com suoer-group.com suofeiya.com suofeiyashop.com suoge.net suolong.com suoluomei.com suorang.com suosihulian.com suotn.com suoxin5.com suoyiren.com supafa.com supaq.com suparc.com supcname.com supcompute.com supcon.com supconauto.com supconit.com supdri.com supeeder.com supei.com super-king.net super-mt.com superace.com superacme.com superaicdn.com superayi.com superbed.cc superboss.cc superbrandmall.com superbrowser.com superbrowser.hk superbuy.com superbuyy.com supercachenet.com supercachenode.com supercalnow.com supercarrier8.com supercrm.com superdns.org superepoxyresin.com superfix.com superhcloud.com superic.com superiorscope.com superjq.com superlib.com superlib.net superlink.mobi superlinkscm.com superlitetech.com superljq01.com supermap.com supermap.io supermapcloud.com supermapol.com supernode.pro superpb.com superpowercn.com superqq.com superrrai77.com supers.ltd supersharket.com supersocket.net superstar-med.com superstarkennel.com superstars.vip supertime-malting.com supertracker.net supertrw.com supervisionus.com supervote.cc superwrt.com superyd.com superyears.com superzl.com supesite.com supesoft.com supet.com supgroups.com suplaymart.com supman.com supmea.com supmeter.com supmil.com supmil.net supoin.com supool.com supor.com suporgroup.com suporpharm.com supplierlist.com supplygw.com supplywater.com support-cn.samsung.com support.amd.com supreme-oe.com supwisdom.com supwk.com suqian360.com suqianhospital.com suqing.com suqishi.com suqnn.com suqun-group.com surely.cool surerp.com surface.download.prss.microsoft.com surfacetreatmentgroup.com surfacetreatmenttechnology.com surfcg.com surge.run surgerii.com surgerycast.com surgi-plan.com surmounthat.com surperverse.com surprising.studio sursen.com sursenelec.com sursung.com surtime.com suruicloud.com surun-tech.com survey.work surveyhills.com surveyqq.com surveyrtk.com surveyunion.com survivor99.com surwit.com suryee.com suseage.com sushijiameng.com sushiyanglao.com sushui.com suso56.com susong1.com susong51.com susongbbs.com susoul.com sustcra.com sustech.online susudm.com susun.cc susungroup.com sutanapp.com suteidc.com suteshop.com suting123.com sutpc.com sutune.me sutuobang.com suujee.com suuny0826.com suv-trip.com suv666.com suwen.org suxiangsj.com suxiazai.com suxieban.com suxiege.com suxing.me suxuejiaoyu.com suxx0.com suyangroup.com suyuantuliao.com suyuening.com suyugame.com suyujoy.com suyun.net suyunc.com suyunj.com suyur.com suyutech.com suyuzz.com suz-vpn.amd.com suzhongyy.com suzhou-marathon.com suzhou-otsuka.com suzhouballettheatre.com suzhoubank.com suzhoubeili.com suzhoubond.com suzhoucitymarathon.com suzhoudyh.com suzhouexpo.com suzhoufashion.com suzhouhengtai.com suzhouhui.com suzhoujicai.com suzhouleasing.com suzhoulinsen.com suzhousj.com suzhouyabao.com suzip.com suzport.com suzuki-china.com suzuki-shanghai.com svconcloud.com sve.cc sveir.xyz svell.net svenhetin.com svfrrg.com svgoptronics.com svimeng.com svinsight.com svip5-applefix.com svip51.com svipdog.com svipgulr.com sviping.com svlik.com svmxxaq.com svn999.com svnbucket.com svnspot.com svp6.com svpchina.org svrvr.com svw-volkswagen.com svwuc.com svyun.com sw-bllp.com sw-zh.com sw0013.com sw163.com sw2008.com sw996.com swakopuranium.com swan366.com swanchemical.com swang8.com swangwx.com swanhub.co swaqds.com swarma.net swat-js.com swatou.com swaywm.com swbbsc.com swceb.com swchina.org swckc.com swdcmg.com swdyz.com sweet-data.com sweetalkos.com sweetjing.cc sweetlove.cc sweetmartmarketing.com sweetome.com sweetread.net sweetrouble.com sweetystory.com swelder.com swellfun.com swfc-shanghai.com swfzjt.com swg36.com swgocean.com swgzs.com swgzy.com swhydyj.com swhysc.com swift-at.com swift51.com swiftfintech.com swifthumb.com swiftjava.com swiftlet.net swijoy.com swip.group swirebev.com swirecocacola.com swisdom.cc swissgenie.com swissrepicass.com swissreplicas.cc swisswatcheshot.com swisswatchx.com swit-battery.com swit.cc switchb2b.com switchxiazai.com switzerland-visacenter.com swjjshfw.com swjoy.com swjsj.com swjtjt.com swkedou.com swkong.com swkpe.tw swliuxue.com swltools.com swnic.com swofcare.com swomc.net swoole.com swordair.com swordart.online swordofmorning.com swords.center swordtt.com swpubar.com swq242xc54.com swrjzxw.com swsbw.com swsegroup.com swskj.com swsm.net swsmu.com swstsg.com swt0.com swtpu.com swufe-online.com swupdl.adobe.com swwy.com swxk.cc swxxvr.com swyun.net swz001.com swzj.com swzx.com sx-merryland.com sx-moen.com sx-seafood.com sx1211.com sx189.com sx267.com sx311.cc sxaec.com sxafz.com sxalu.com sxand.com sxase.com sxasuykzx2sq.icu sxatcm.com sxbada.com sxbang.net sxbawy.com sxbctv.com sxbdf.com sxbest.com sxbjedu.com sxbpa.com sxbuszp.com sxbychem.com sxcahosp.com sxccb.com sxcd-gyl.com sxcgzh.com sxchangshengjt.com sxcig.com sxcitygas.com sxclassiclighting.com sxcm.net sxcntv.com sxcoal.com sxcp.com sxctf.com sxcxgf.com sxcxldjy.com sxcyts.com sxcywy.com sxczdz.com sxd408.com sxdagang.com sxddy.com sxdkj.com sxds.com sxdyrq.com sxdzyp.com sxepa.org sxepc.com sxetcedu.com sxfl.org sxfoundation.com sxfu.org sxgbs.com sxgdtv.com sxggec.com sxggzp.com sxgjj.com sxglpx.com sxgoo.com sxgq.net sxgrw.com sxgs.com sxgsps.com sxhbjt.com sxhbjtshj.com sxhctv.com sxhhwl.com sxhhyy.com sxhimalayanqd.com sxhiway.com sxhjrc.com sxhkstv.com sxhkxy.com sxhlcc.com sxhlfjt.com sxhlxy.com sxhm.com sxhongyuan.com sxhospital.com sxhtss.com sxhtyy.com sxhtyy.net sxhwhb.com sxhwls.com sxhxbank.com sxisa.org sxjant.com sxjbswyy.com sxjcdyy.com sxjd-cn.com sxjdfreight.com sxjdpm.com sxjg-wl.com sxjgkg.com sxjhzsgc.com sxjianli.com sxjinfengjiuye.com sxjky.com sxjmfxky.com sxjntech.com sxjtyhjt.com sxjwlkj.com sxjxdyqfw.com sxjxsc0.org sxjybk.com sxjzxww.com sxkbzc.com sxkzxt.com sxlcdn.com sxldns.com sxlfwl.com sxlhrj.com sxlib.com sxlljm.com sxlottery.net sxlpd.com sxls.com sxltsj.com sxluxiang.com sxmda.net sxmhgas.com sxmty.com sxmxwh.com sxmyh.com sxncb.com sxnxs.com sxnxxny.com sxnycl.com sxol.com sxpgb.com sxplc.com sxpmg.com sxpmpos.com sxprgc.com sxpta.com sxpyzg.com sxpyzx.com sxqingyi.com sxqzy.com sxrb.com sxrbw.com sxrcw.net sxrczx.com sxrekord.com sxri.net sxrom.com sxrqrlxh.com sxrqxny.com sxrszdh.com sxrtv.com sxrxgs.com sxs56.com sxs8818.com sxsa.org sxsanwei.com sxsapi.com sxscwl.com sxsedu.net sxsfdxylsyzx.com sxsfky.com sxsfyyy.com sxsgs.com sxshjhyxh.com sxshu.com sxsim.com sxsimg.com sxsjgy.com sxsjzyxh.com sxslhg.com sxslnews.com sxsme.org sxsmtgyxh.com sxsng.com sxsoft.com sxsqxj.com sxsqyjxh.org sxsrmyy.com sxsslz.net sxssyh.com sxswfzjt.com sxsyyxh.com sxsyyxh.net sxszw.net sxtbu.net sxtcm.com sxtgedu.net sxtianjian.com sxtourgroup.com sxtourism.com sxtppm.com sxtqsl.com sxtracking.com sxtv6.com sxtvs.com sxudqg.com sxuyr2nx.com sxvtc.com sxwbedu.com sxwbs.com sxwetalent.com sxwlyhzp.com sxworker.com sxwpyx.com sxwq.com sxwstcm.com sxwtdyd.com sxww.com sxxfj.com sxxjdz.com sxxl.com sxxrmyy.com sxxsmjh.com sxxt.net sxxw.net sxxyfw.com sxxynews.com sxxzpt.com sxy7.com sxyasen.com sxyckjr.com sxycpc.com sxycrb.com sxycys.com sxygsj.com sxyj.net sxyqgs.asia sxyrxb.com sxyxqk.com sxyyc.net sxyyzcj.com sxzcrq.com sxzhaobiao.com sxzhongfei.com sxzhyy.com sxzkzs.com sxzlycl.com sxzlyy.com sxzq.com sxzxsdf.com sxzydj.com sxzyfy.com sxzytech.com sy-game.com sy-home.com sy-yy.com sy021.com sy118.com sy12306.com sy12328.com sy17.com sy1994.com sy1z.com sy2k.com sy2z.com sy3.com sy76.com syais.com sybasebbs.com syberos.com syberq.com sybj.com sybxpu.com sybygx.com sycaijing.com sycdtz.com sychlon.com sycontroller.com sycreader.com sycsgj.com sycxzx.net sydaxxw.com sydcch.com sydcdjt.com sydey.com sydfty.com sydhyg.com sydjwl.com sydkidsedu.com sydneyglobaltimes.com sydtgd.com sydw.net sydw8.com sydxdl.com syeamt.com syeg-ev.com syepia.org syetyy.com syf.ink syfabiao.com syfb2021.com syfj.net syfly007.com syfw.com syfyyy.com syg315.com sygcjs.com sygcjsxh.com sygd.com sygjj.com sygjzx.com syglyg.com sygnew.com syh666.com syhccs.com syhfxsh.com syhhidc.com syhhkj.com syhl.vip syhlgg.com syholdings.com syhospital.com syhouse.net syhsfzl.com syhsxb.com syhuayang.com syhzdj.net syhzx.com syhzzf.com syiae.com syiptv.com syitgz.com syjcly.com syjiancai.com syjkqzw.com syjlp.com syjsq.com syjt.com syjtwlzx.com syjtzm.com syjyzl.com syjzedu.com syk2023.com sykezheng.com sykfff.com sykong.com sykt520.com sylangyue.xyz sylaryun.com sylc.xyz sylincom.com sylixos.com sylm2022.com sylmg.com sylnyx.com syltgl.com symama.com symarathon.com symbiote.work symboltek.com symf-crm.com symtc.com syn-tron.com syn029.com synacast.com synball.com sync.sh syncedoffplanet.com syncozymes.com syngars.com syngenemed.com synjones.com synjones.net synnchem.com synochip.com synodc.com synology-cn.com synologyssb.com syntao.com synyan.net synyi.com synykj.net syobserve.com syoits.com syoker.com syoseo.com syounggroup.com sypglass.com sypole.com sypost.com sypost.net sypvm.com syq666.com syr-sce.com syranqi.com syrc.org syrcb.net syrczpw.com syreads.com syrecovery.com syrhkj.com syrinxchina.com syrqgas.com syrszs.com sys-ele.com sys321.com syscan360.com syscan360.net syscan360.org sysceo.com sysceo.net syscxp.com sysdyy120.com sysengi.com syshell.com syshospital.com syshospital.org syshosts.net sysjnl.com sysjoint.com sysmaster.online sysmini.com sysmls.com sysnfj.com sysshine.com systedata.com systemsci.org systemserviceable.com systoon.com sysu-pharm.com sysucc.com sysuschool.com sysush.com syswgw.com sysx.tech sysxhz.com sysydz.net sysyhfj.com sysysjnk.com syt1000.com sytcke.com sytfgroup.com sythealth.com sytjcc.com sytlj.com sytlw.com syttgame.com sytuku.com syuan.com syuan.net syue.com syw6.com sywg.com sywgy.com sywtqc.com syx-ac.com syxb.com syxidao.com syxjjsw.com syxlgame.com syxt.cc syxw.xyz syxwang.com syxwnet.com syxzhongyi.com syyan.site syyc.com syygjs.com syyjs.com syyl.org syylfh.com syyqls.com syysjt.com syyx.com syyy99.com syyyd.com syyyj.com syyyking.com syyzhpc.com syzdhyb.com syzjjt.com syzlzz.com syzoukan.com syzpw.com syzsgroup.com sz-3a.com sz-acuvu.com sz-amc.com sz-baile.com sz-bst.com sz-building.com sz-byg.com sz-cbea.com sz-cerberus.com sz-changfeng.com sz-changhong.com sz-coin.com sz-czzc.com sz-dfl.com sz-dns.net sz-ebest.com sz-edsy.com sz-ekl.com sz-el.com sz-etong.com sz-expressway.com sz-fesco.com sz-fukuda.com sz-function.com sz-gaokai.com sz-hbwy.com sz-hdenergy.com sz-hengdeyuan.com sz-hiragawa.com sz-huashi.com sz-huayuan.com sz-hyauto.com sz-hzt.com sz-iso.com sz-jiahong.com sz-jlc.co sz-jlc.com sz-jyd.net sz-kaito.com sz-keli.com sz-khgroup.com sz-ky.com sz-kye.com sz-lcsc.com sz-lzyy.com sz-map.com sz-matro.com sz-mtr.com sz-myjs.com sz-news.com sz-osckj.com sz-printing.com sz-qb.com sz-rlx.com sz-sunway.com sz-suwan.com sz-talant.com sz-tianmai.com sz-trip.com sz-tyjx.com sz-ua.com sz-xingfu.com sz-xiran.com sz-yian.com sz-ytq.com sz-zhenghe.com sz002329.com sz0429.com sz121.com sz1905.com sz1978.com sz1z.com sz2048.com sz240.com sz2g.com sz315.org sz3dp.com sz3e.com sz3gao.com sz56t.com sz5983.com sz7h.com sz800.com sz836.com sz886.com sz910.com sz96296.com szaaci.com szacc.com szaccl.com szaction.com szadf.com szadna.net szadst.com szaeia.com szagera.com szahotel.com szai.com szaiaitie.com szaicx.com szaid.com szaima.com szaipx.com szairport.com szaisino.com szaiten.com szaixian.com szajsj.com szamc.com szande.com szanjun.com szaojin.com szas.com szastcg.com szaudio.com szaudio.net szaupd.com szautism.com szbaba.com szbaicao.com szbaike.com szbaleng.com szbaoly.com szbaoming.com szbattery.org szbayy.com szbazx.com szbbs.org szbcase.com szbcfurniture.com szbdyd.com szbdzs.com szbeilu.com szbeilu888.com szbhwk.com szbhyy.com szbia.com szbih.com szbike.com szbim.com szbinying.com szbiu.com szbnrj.com szboehospital.com szbojay.com szbosen.com szbosk.com szbrandweek.com szbryq.com szbubu.com szbwgy.com szbyzn.com szc-ic.com szca.com szcat.org szcatic.com szcbc.com szcfjt.com szcfyi.com szcgc.com szcgkg.com szch-cn.com szchengli.com szchengyue.com szchilink.com szchunqiu.com szcic.com szcidg.com szclbxf.com szcleanair.com szclxzx.com szcmer.com szcnpiec.com szcogo.com szcompare.com szcp.com szcsot.com szcssx.com szcswater.com szctch.com szctkj.net szcttlab.com szctyx.com szcua.org szcw.com szcwdz.com szcxjscl.com szcy-fintech.com szcy99.com szczjy.com szczkjgs.com szdaily.com szdcjd.com szddns.net szdesigncenter.org szdesigner.org szdesy.com szdf.com szdhjt.com szdiantu.com szdihang.com szdiyibo.com szdkgssb.com szdljt.com szdlsjj.com szdn1ms.com szdpi.com szdprt.com szdrse.com szds.com szdsit.com szdtwcw.com szdunan.net szduopin.com szdwwy.com szdwxy.com szdwyy.com szdx189.com szdxfsrhyy.com szdz123.com szdzczp.com szeant.com szeastroc.com szeasyin.com szebus.net szecowater.com szects.com szed.com szeds.com szedu.net szeeg.com szegddc.com szeholiday.com szeia.com szelab.com szelanpo.com szelec.cc szelight.com szelink.com szepiao.com szerye.com szesens.com szetop.com szeua.org szeunon.com szeverich.com szfa.com szfachina.org szfangzhouhd.com szfc.net szfcol.com szfda.net szfdg.com szfdzx.com szfengtu88.com szffmr.com szfg.net szfglass.com szfirstplastic.com szfiu.com szfjt.com szfolo.com szforter.com szftfybj.com szftzx.net szftzy.com szfutong.com szfuture.com szfw.org szfx.com szfxdev.com szfyhd.com szfyzb.com szfzx.org szgalaxy.com szgangdi.com szgays.org szgcyy.com szggzy.com szghedu.com szghgw.com szgky.com szgla.com szglby.com szglsf.com szgraphene.com szgreenhulk.com szgrjt.com szgsjc.com szgt.com szgthr.com szguanai.com szguanghua.com szguante.com szguixiang.com szguoxin.com szgwin.com szgwsd.com szgymz.com szgztg.com szh.com szha.org szhaian.com szhaicao.com szhailan.com szhaochuang.com szharmony.com szhb.org szhddq.com szhdy.com szhdyic.com szhenglian.com szhetai.com szhfwd.com szhgmd.com szhgong.com szhightondz.com szhiross.com szhjwybj.com szhk.com szhkhui.com szhlodz.com szhlsg.com szhmjp.com szhmkeji.com szhnsz.com szhome.com szhomeimg.com szhongshe.com szhospital.com szhot.com szhq.com szhqgf.com szhqyy.com szhqyy120.com szhr.com szhrh.com szhri.com szhsdpa.com szhstjt.com szhsx.net szhtp.com szhua-gao.net szhuace.com szhuarong.com szhuayilong.com szhubei.com szhuhang.com szhulian.com szhuodong.com szhvac.org szhvs.com szhwad.com szhxbiz.com szhytrip.com szhzsd.com szhzzl.com szicbe.com szicc.net szicpa.org szida.org szider.com szieg.com szihl-bayarea.com szihl-port.com sziia.org szind.com szinvent.com sziota.com szitcare.com sziton.com szitsa.org szjags.com szjawest.com szjbz.cc szjcmr.com szjcyljt.com szjcyy.com szjcyyy.com szjdsd.com szjfh.com szjg.net szjgjt.com szjhxjt.com szjianan.com szjiansheng.net szjianuo.com szjiazhao.com szjiexikeji.com szjinhejs.com szjinhuanyu.com szjinke.com szjinxinzh.com szjitu.com szjjedu.com szjkhd.com szjkp.com szjkxh.com szjkyun.com szjlkt.com szjlwul.com szjr-tencentclb.cloud szjr-tencentclb.com szjr-tencentclb.net szjr-tencentclb.work szjsgroup.com szjsjlxh.com szjsjt.com szjtxm.com szjuhaozn.com szjunchuang.com szjunfei.com szjunlin.com szjunrong.com szjuquan.com szjuwx.com szjuyou.com szjxcft-tencentclb.cloud szjxcft-tencentclb.com szjxcft-tencentclb.net szjxcft-tencentclb.work szjxgroup.com szjxj.com szjy.cc szjyos.com szjys.net szjys1888.com szjytx.com szjyxtech.com szjzdcjt.com szkdxx.com szkeda.com szkegao.net szkente.com szkete.com szkgdesign.com szkingdom.com szkinks.com szkjcn.com szkjjs.com szkjxh.com szknet.com szknk.net szknys.com szknyy.com szkoa.com szkobo.com szkosun.com szkqyy.com szkrd.com szl724.com szlaituo.com szlande.com szlangwei.com szlanyou.com szlawyers.com szlc9.com szlcsc.com szlcwy.com szldcc.com szlddb.com szlddj.com szldzb.com szledia.org szleezen.com szlgzxyy.com szlhtram.com szlianhua.com szlianya.net szlightlink.com szlihuam.com szlilun.com szline9.com szlinglewangluo.com szlingsheng.com szlmxx.com szlnjt.com szlnxh.com szlongyu.com szlottery.org szlqjt.com szlsnk.com szlswl8.com szltech.com szltlh.com szltour.com szltwlw.com szlunhua.com szluxon.com szlvbarcode.com szlwbj.com szlwtech.com szlxl100.com szlzsd.com szmadigi.com szmagellan.com szmall.com szmama.com szmama.net szmaxima.com szmb.cc szmc.net szmcjsjt.com szmcjt.com szmcob.com szmctc.com szmcy.com szmea.net szmedtech.com szmengqukj.com szmgci.com szmhthb.com szmicrogate.com szmieps.com szmii.com szmil.com szmjd.com szmjlcd.com szmkd.com szmrcd.com szmsjs.com szmslaser.com szmtc.com szmtxny.com szmtzc.com szmuseum.com szmwzs.com szmylike.com szmynet.com szmys.com szmywin.com szmyxc.com szn360.com sznaibeng.com sznbm.com sznecn.com sznewbest.com sznews.com sznewworld.com sznffc.com sznfwt.net szngdz.com szniego.com szniushi.com sznj91.com sznnhg.com szns-marathon.com sznsyy.net sznumberone.com sznwriterhouse.work szny189.com sznyfz.com sznyyznnj.com szobk.com szol.net szolgj.com szolxd.com szonline.net szooo.com szoxstand.com szp168.com szpa.com szpa.org szpan-china.com szpckj.com szpclab.com szped.com szpengfa.net szpgm.com szpiaoyi.com szpldq.net szpllp.com szplus.com szpmi.org szporter.com szpowerfly.com szpra.com szprl.com szptxx.com szputy.com szqf.org szqhlx.com szqhtkyy.com szqhyf.com szqiangu.com szqinyuan.com szqjxh.com szqp.site szqsq.com szqt.net szquanli.com szqycl.com szqyw.net szqzsd.com szrba.org szrc-hr.com szrcaj.com szrcb.com szrcfw.com szrch.com szrfdq.com szrfstar.com szrgsh.com szrhg.com szrj.net szrlaw.net szrrjc.com szrsks.com szrswj.com szrtcpa.com szruilan.com szrunning.com szryc.com szrzxh.com szs189.com szsaibao.com szsailong.com szsaiwei.com szsamr.com szsandt.com szsangbo.com szschj.com szschl.com szsci.net szscree.com szsczx.com szsdhjt.com szsdjrmyy.com szsdsrmyy.com szseafoodexpo.com szseasons.com szsemicon.com szsep.com szsewo.com szsfgc.com szsh.com szshtjm.com szshuangjin.com szshuori.com szshutao.com szshwy.com szsia.com szsing.com szsjtjj.com szsjxxpt.com szskd.com szsky.com szslcyy.com szslhssy.com szsmk.com szsmyg.com szsnk.com szsoa.org szsolutia.com szsongmao.com szsorch.com szsptk.com szsq.net szsrs.com szssct.com szssda.com szssep.com szssfor.com szsswcs.com szsszx.com szsta.org szstar.com szstariver.com szstartec.com szsti.org szstndzsw.com szstyle.cc szsuanli.com szsunlaser.com szsunwin.com szsupvan.com szswgcjc.com szswjc.com szswjs.com szsycft-tencentclb.cloud szsycft-tencentclb.com szsycft-tencentclb.net szsycft-tencentclb.work szsyyxh.org szszjt.com szszlm.com szszpx.com szsztj.com sztaijier.com sztalent.org sztanzo.com sztara.com sztbjs.com sztc.com sztcg.com sztd123.com szte.com sztechand.com szted.com sztexun.com szteyin.com sztgxc.com sztgxx.com sztheatre.com szthekey.com szthxf.com sztiaocao.com sztino.com sztkc.com sztkd.com sztljyjt.com sztmjz.com sztncm.com sztongwang.com sztopbrand.com sztower.com sztoys.com sztqjf.com sztreeent.com sztspi.com sztw96933.com sztxcpa.com sztxsz.com sztxw.com szty56.com sztz.org sztzzs.com szuavia.org szudad.com szunionlab.com szurta.org szvannylove.com szvca.com szvft.com szvi-bo.com szvsdpco.com szwa.com szwaishi.com szwale.com szwanghong.com szwata.com szwb.com szwblm.com szwchy.com szwdny.com szwego.com szweidi.com szweijubao.com szweita.com szwfhp.com szwfzs.com szwghl.com szwgmf.com szwgroup.com szwhcycyw.com szwhxy.com szwldq.com szword.com szwsm.com szwstui.com szwtsd.com szwudao.com szwuyukeji.com szwwco.com szwzjt.com szwzzxyy.com szx-ray.com szx-tencentclb.cloud szx-tencentclb.com szx-tencentclb.net szx-tencentclb.work szx58.com szxbbus.com szxbjt.com szxbyx.com szxcqfw.com szxcrq.com szxcxkf.com szxcyl.com szxdfpr.com szxdhj.com szxdzb.com szxfgcw119.com szxhdz.com szxihu.com szxijili.com szxinghe.net szxinjiaxin.com szxinjicheng.com szxinyixin.com szxiot.com szxlga.com szxljc.com szxlxzb.com szxs.work szxsdmy.com szxsshb.com szxtiot.com szxuexiao.com szxuw.com szxwlkj.com szxxj.com szxxtx.com szxxw.com szxyjd.com szxyxbkle.com szyake.com szyakeda.com szyansai.com szyazhi.com szybio.com szycil.com szyclmarathon.com szydtx.com szydxx.net szydyy.com szyfai.com szyfdz.net szygcgpt.com szyh.org szyhja.com szyhoa.com szyhznkj.com szyibei.com szyichengjd.com szyin.com szyingduoduo.com szyinglian.com szyingzhan.com szyink.com szyixx.com szyiyue.com szyjedu.com szyljt.com szymweb.com szyns.com szypfb.com szyptx.net szyqjzxh.com szyran.com szys.net szys119.com szysjt.com szysmpay.com szystea.com szysxx.com szyt-hosp.com szyuda88.com szyundingschool.com szyuxin.com szyweibo.com szyxue.com szyxwdz.com szyxwkj.com szyy0373.com szyyda.com szyyt.com szyyx.com szyzsy.com szzbmy.com szzesee.com szzfbt.com szzfgjj.com szzh365.com szzhangchu.com szzhaodaxin.com szzhijun.com szzhsponge.com szzhuoju.com szzkgk.com szzljg.com szzntech.com szznzn.com szzoan.com szzoo.net szzs360.com szzscq.com szzsivf.com szzunbao.com szzuting.com szzx100.com szzxgzy.net szzyjt.net szzyqc.net szzyqy.com szzytech.com szzywxkj.com t-angel.com t-d.chat t-d.tv t-dsyy.com t-firefly.com t-gafa.com t-io.org t-npm.com t-ocean.com t-t.live t-tlearning.com t-v.com t-workshop.com t.biz t.tt t0001.com t003005.com t00ls.cc t00ls.net t00y.com t016vip28.com t016vip7.com t0377.com t086.com t1.ink t10.com t105.com t11.co t123yh.xyz t139.com t178.info t1networks.com t1qq.com t1tms.com t1y4.com t1y5.com t20000.com t2audio.net t2cn.com t2uu.com t3315.com t3j4.com t3p58.com t3yanzheng.com t47888.com t49cdn.com t4x3.com t4z5p5s9k4q3m4h4m3.org t5.work t50888.com t528.com t56.net t56jy.net t5tm.com t5xs.com t66.com t6q.com t7114.com t7805.com t79d6.com t7rt5.com t7y8.com t7z.cc t85.net t888w.com t8f.com t8tcdn.com t8tms.com t8ui6xzkw.shop t99677.com t9in.com t9tms.com ta-ly.com ta-shang.com ta26.com ta313.com ta39.com taaas.org taagoo.com tabalt.net tabbitbrowser.com tabbypro.com tabbywork.com tableauxmly.com tabuzhe.com tabxexplorer.com tachangxing.com tacool.com tactan.net tadiao365.com tadsim.com tadsim.net tadu.com tadyz.com taeapp.com taeee.com tafeihu.com tag.gg tagen-pm.com tagjjt.com taglyst.com tagold.net tagoo.club tagphi.net taguage.com taguxdesign.com tahoecn.com tahua.net tai-liang.com tai1000.com tai3399.com tai87.com taian.com taianmedia.com taiantang.net taibumall.com taicang.info taicent.com taichi-graphics.com taichi-maker.com taichuan.com taichuan.net taici.com taicihome.com taicike.com taida-china.com taida100.com taidao.net taidaxincai.com taidichina.com taidu.com taiduhome.com taiergroup.com taifeng.co taifengfans.com taifua.com taig.com taigaoxiao.com taihaikj.com taihainet.com taihe-hr.com taihe.com taihealthcare.com taihecap.com taihechengjian.com taihehospital.com taihemedia.com taihopaint.com taihuachem.com taihuapharm.com taihuawj.com taihuboiler.com taihucn.com taihuoniao.com taihutour.com taihuwang.com taihuwater.com taihuxue.com taihuyuan.com taihuzimi.com taiji.com taijidf.com taijiewuliu.com taijiny.com taijio.com taijs.com taijutv.com taikaibyq.com taikaihuanbao.com taikancnc.com taikang.com taikanginv.com taikangjsnc.com taikanglife.com taikanglife.net taikangonline.com taikangonline.net taikangph.com taikangzhijia.com taikeji.com taikewei.com taikongmedia.com taikoohui.com taikoyc.com taikr.com tailgdd.com tailingood.com tailixiangjiao.com taillkang.com tailong.com taimei.com taimi100.com taimls.com tainengchong.com taininge.online tainingrencai.com taiorient.com taiott.com taipingyangshuiwu.com taipumed.com taiqiedu.com taiqigame.com taiquan.com tairock.com tairos.cc tairos.net tairos.tech tairui-ad.com tais3.com taisantech.com taisenfurniture.com taishangroup.com taishansports.com taishanxq.com taishanyy.com taisuyun.com taitonglj.com taiwandao.tw taiwanwii.com taiweiholding.com taiwoagri.com taiwu.com taixi.cc taixigas.com taixingren.com taixirobot.com taixubio.com taixuguoji.com taiyangd.com taiyanghttp.com taiyechem.com taiyin117.com taiyiplus.com taiyocablecn.com taiyou.fund taiyuanguanye.com taiyuanqy.com taizhoucitymarathon.com taizhouwater.com taizibao.com tajd.net tajiduo.com takebackthegrid.org takesend.com takfat.com takhogroup.com takstar.com takumi-cnc.com takungpao.com takusogroup.com takwang.net tal-china.com tal.com talbrain.com talebase.com talegenes.com talentable.com talentlin.com talentran.com talents-tech.com talentsmag.com talentspotgroup.com talicai.com taliove.com taljdns.com talk-cloud.net talk-fun.com talk853.com talk915.com talkgw.com talkingchina.com talkingdata.com talkingdata.net talkinggame.com talkingnews.net talkwithtrend.com talkxj.com talkyun.com tallgu.com talmdhome.com taluo.com taluo5.com taluoji.com talzjsj.com tamaegis.com tamarace.com tamayaki.com tamc8.com tamensay.com tamersunion.net tamigos.com tamigroup.com tamlab.net tamll.com tan-gtr.com tan.cc tan07.com tan14.net tan8.com tanapk.com tanaqul.org tanbao178.com tanbo.name tanboer.com tancdn.com tanchinese.com tandehao.com tanewmaterial.com tang-lei.com tanganlingshi.com tangbai.cc tangbolitangci.com tangchendoor.com tangdaoya.com tangdou.com tangdouddn.com tangdouedn.com tangdoufdn.com tangdouhdn.com tangdouimg.com tangdouz.com tangeche.com tangfc.com tanggu11g.com tangguobaohe.com tanghu.net tanghushi.com tangjie.me tangjihuang.com tangkabj.com tanglei.name tangmingint.com tangoic.com tangongye.com tangpai.cc tangping.com tangqingtuia1.com tangrenmedia.com tangruiqian.com tangsanshu.com tangsem.com tangshan-marathon.com tangshanliulin.net tangshuang.net tangshui.net tangsongys.com tangsuanradio.com tangtang.org tanguan.net tangux.com tangwai.com tangxia.xin tangxiagoodview.com tangyeedu.com tangyoufushi.fun tangyuan.com tanhaibo.net tanho.com tanjigroup.com tanjing.online tanjiyongjun.com tankeai.com tankmm.com tankprint.online tanksuv.com tankywoo.com tanling.com tanlive.com tanlong.org tanluxia.com tanma.tech tanmer.com tanpaifang.com tanpoqiuer.com tanshudata.com tansiling.com tansoole.com tantaly.com tantan123.com tantanapp.com tantu.com tantu.info tantuw.com tanv.com tanwan.com tanwan123.net tanwanmao.net tanwanyx.com tanweime.com tanwuapp.com tanx.com tanxingfuli.com tanxinyu.work tanxuling.com tanyu.mobi tanyuantech.com tanzhouwater.com tao-che-wei.com tao-jiujiu.com tao-star.com tao-studio.net tao-wu.com tao008.com tao123.com tao3.cc tao33.com tao37.com tao3c.com tao66.com tao800.com tao8090.com taoa.com taoad.com taoart.com taoban.com taobao taobao-img.com taobao.com taobao.global taobao.net taobao.org taobao.tw taobao1111.com taobaocdn.com taobaocity.com taobc.com taobeihai.com taobeike.com taobiaozu.com taoc.cc taocange.com taocdn.com taoche.com taocheche.com taoci.com taoci163.com taocibao.com taocijiaju.com taocloudx.com taocz.com taodake.com taodang8.com taodaso.com taodaxiang.com taodianla.com taodingzhi.cc taodiqupu.com taodocs.com taodu.com taoduoke.com taodushi.cc taoerge.com taoex.com taofake.com taofang.com taofanghaiju.com taofeige.com taofen8.com taofont.com taogede.com taogegou.com taogutang.com taohao6.com taohaoba.com taohaobang.com taohaoge.com taohaoqu.com taohaowan.com taohhui.com taohua.com taohuaqizhi.com taohuazu.net taohuazu.pw taohui.pub taohuren.com taoic.com taojiaju8090.com taojianghu.com taojiji.com taojindi.com taojingame.com taojingroup.com taojinhudong.com taojinji.com taojinyi.com taoke.com taokewenan.com taokezhushou.com taokouling.com taoktv.com taoku.com taokuaibiao.com taolale.com taoliangroi.com taolinzhen.com taolvtong.com taolx.com taomanhua.com taomee.com taomeiju.com taomeixie.com taomike.com taoming.com taomingshi.com taomingyan.com taomr.com taonanfu.com taonienie.com taoniu.com taoniupin.com taooo.cc taopb.com taopian.org taopiaopiao.com taopic.com taopinquan.com taopuwang.com taopxx.com taoq.net taoqao.com taoquanquan.com taor.work taoruinyuan.com taosaas.com taosdata.com taosha.club taoshengtc.com taoshouyou.com taoshu.com taoshuashua.net taoshudang.com taosj.com taotao.com taotaocar.com taotaogeren.xyz taotaoit.com taotaosports.com taoth.com taotian.com taotu8.net taou.com taourl.com taowangzhan.com taoweng.site taoxiangyoushu.com taoxiaolu.com taoxie.com taoxie.com.tw taoxuemiao.com taoxv.com taoyi-support.com taoyitu.com taoyizhu.com taoyougou.com taoyuanc.com taoyuewenhua.net taoyutaole.com taozg.store taozhanyun.com taozhibook.com taozhuo.com taozhutu.com tap-ad.com tapafun.com tapai.com tapaijiu.com tapapis.com tapapks.com tapas.net tapbooster.net tapd-app.com tapdata.net tapdb.com tapdb.net tapenjoy.com tapimg.com tapjoytech.com tapotiexie.com tappile.com tapque.com taprls.com taprls.net tapsvc.com taptap-api.com taptap.com taptapcode.com taptapdada.com tapulsads.ru tapurl.com taraniss.com tarcoist.com tarczp.com tarenacn.com tarenwang.net targetportion.com tarisland-zh.com taro.zone tarotchina.net tarsier-infra.com tarsocial.com tartscenter.com tasaiwang.com taschb.com tashine.com tasiyun.com task51.com taskcity.com tasly.com taslypharma.com tastespirit.com tastien-external.com tastientech.com tastysteak.com taswwx.com taszk.com taszls.com tatatimes.com tataxingqiu.com tatazu.com taterli.com tatfook.com tatstm.com tattoo77.com tattooo.net taurentech.net tauris.com taurus66.com taurusxin.com tav-global.com tav-global.net tavsiktlig.com tax-edu.net tax.vip tax100.com taxchina.com taxdata.tax taxjiangkewang.com taxksec.com taxnote.org taxspirit.com taxtaoj.xyz taxuspharm.com taxwen.com tayohya.com tazai.com tazhe.com tazts.com tb-whatsapp.com tb.biz tb.pub tb4gv2cp5z.com tb51.net tb58.net tbaas.tech tbadc.com tbadesign.org tbaiq.com tbankw.com tbapp.com tbcache.com tbh5.com tbhcc.com tbhelper.com tbinq.com tbizmail.com tbjt18.com tbjtss.com tbk-app.com tbkf.net tbkong.com tbl-import.com tblk.me tbmcas.com tbmkt.com tbnimg.com tboxn.com tbpark.com tbq168.com tbqjx.com tbreeden.com tbs321.com tbsandbox.com tbsite.net tbt-tuning.com tbt168.com tbtopc.com tburl.in tbuser.com tbwyl.com tbxsw.com tbyfsoft.com tc-21.com tc-mining.com tc-semi.com tc0770.com tc108.com tc118.com tc12580.com tc199.net tc29.com tc29.net tc471cyhud.com tc58.net tc880.com tc9011.com tc911.vip tc930.com tcbqcloud.com tccfjt.com tccrtzyxgs.com tccxfw.com tcdinfo.com tcdj.com tcdneo.com tcdneo.net tcdnext.com tcdnhw.com tcdnhw.net tcdnkc.com tcdnkcbak.com tcdnlive.com tcdnlivebak1.com tcdnlivebak2.com tcdnlp.com tcdnos.com tcdnos.net tcdntip.com tcdnv3.com tcdnvod.com tcdnvodbak.com tcdnvodnew.com tcdnvp.com tcecps.org tced-transsion.com tcedshare.com tceic.com tcenn.com tceratronix.com tcfhty.com tcfmglobal.com tcgcardgame.com tcgdxyb.xyz tcggkj.com tcgke.com tcgsw.com tchbgz.com tchbsb.com tchong.com tchy.net tchzt.com tchzx.com tciplay.com tcisct.com tcjdcapital.com tcjx688.com tckjfast.com tckjhigh.com tckwj.com tcl-cctv.com tcl.com tclbusiness.com tclclouds.com tcljd.com tclking.com tclkqn.com tclogx.com tcloud19.com tcloudbase.com tcloudbase.net tcloudbaseapi.com tcloudbaseapp.com tcloudbasegateway.com tcloudbasestatic.com tcloudbh.com tcloudbi.com tclouddrive.com tcloudedu.com tcloudfamily.com tcloudhw.com tcloudhw.net tcloudit.com tcloudit.net tcloudlive.com tcloudscdn.com tcloudscdn.net tcltech.com tclyjg.com tcm100.com tcm360.com tcmer.com tcmfrj.com tcmmh.com tcmppcloud.com tcmwindow.com tcnen.com tcnews.cc tcnvmms.com tcoejox.shop tcomall.com tcp.hk tcp.mk tcp.pub tcp5.com tcping8.com tcqmj.com tcrcb.com tcrcsc.com tcs-y.com tcsae.org tcsasac.com tcsdk.com tcsdzz.com tcseny.com tcsisu.com tcsnake.com tcspbj.com tcstzg.com tcsurg.org tctask.com tctip.com tctong.com tctpwebank.com tctpwebankcdn.net tctpxwebank.com tctran.com tctz.com tcvywoh.com tcwqqdy.guru tcwt.net tcxmt.com tcxw.cc tcxwg.com tcxx1985.com tcxys.com tcxzj.com tcy1688.com tcy365.com tcy365.net tcyad.com tcyfw.com tcylgslb.com tczgwzw.com tczj.net tczmled.com td-sf.com td-tech.com td22.com td2cn.com td300321.com td776.com td96.com td98.com tdances.com tdasz.com tdatamaster.com tdataspace.com tdbbj.com tdchats.us tdchatvip.us tddmp.com tdfsm.com tdgdy.org tdgod.com tdiac.com tdict.com tdimg.com tdjxhb.com tdkchina.com tdmall.cc tdmoli2.com tdmta.com tdns127.com tdnsdlovs1.com tdnsdlovs2.com tdnsdlovs3.com tdnsdlovs4.com tdnsdlovs5.com tdnsdp.com tdnsdpovs1.com tdnsdpovs2.com tdnsdpovs3.com tdnsdpovs4.com tdnsdpovs5.com tdnsliveovs1.com tdnsliveovs2.com tdnsliveovs3.com tdnsliveovs4.com tdnsliveovs5.com tdnsspovs1.com tdnsspovs2.com tdnsspovs3.com tdnsspovs4.com tdnsspovs5.com tdnssticovs1.com tdnssticovs2.com tdnssticovs3.com tdnssticovs4.com tdnssticovs5.com tdnsv1.com tdnsv1.net tdnsv10.com tdnsv10.net tdnsv11.com tdnsv11.net tdnsv12.com tdnsv12.net tdnsv13.com tdnsv13.net tdnsv14.com tdnsv14.net tdnsv2.com tdnsv2.net tdnsv3.com tdnsv3.net tdnsv4.com tdnsv4.net tdnsv5.com tdnsv5.net tdnsv6.com tdnsv6.net tdnsv7.com tdnsv7.net tdnsv8.com tdnsv8.net tdnsv9.com tdnsv9.net tdnsvodovs1.com tdnsvodovs2.com tdnsvodovs3.com tdnsvodovs4.com tdnsvodovs5.com tdnsx1.com tdotapp.com tdpress.com tdqs.com tdrffh.com tds-1300.com tdsf.asia tdsfiles.com tdshbao.com tdsjbj.com tdtbd.com tdtec.com tdun.com tduou.com tdwan.com tdxz.net tdyxmoto.com tdzntech.com tdzyw.com te-ch.tech te-silicone.com te160.com te5.com te6.com tea-gd.com tea26.com tea7.com teach365.com teachblog.net teachclinic.com teachcn.net teachercn.com teachers211.com teachertc.com teakki.com teaku.com teallang.com tealui.com teamall.cc teambition.com teambition.net teambitionapis.com teamlogs.com teamminus.com teamotto.net teamshub.com teamtop.com teamtopgame.com teandy.com teatreexy.com tebaidu.com tebiao.net tebie6.com tebiefuza.cloud tebiezan.com tebiezhuan.com teboncapital.com tec73.com tecbbs.com tecenet.com tech-long.com tech-mx.com tech-now.com tech-sem.com tech-sonic.net tech002.com tech1024.com tech110.net tech2ipo.com tech2real.com tech4joy.com techan.com techannet.com techanshop.com techantong.net techbeat.net techbrood.com techdow.com techfine.net techflowpost.com techgastronomy.com techgogogo.com techigh.net techingrid.net techmiao.com techmoris.com techo.chat techo.pub techo.show techoke.com techonegame.com techqianmo.com techsir.com techsize.com techtmt.com techtop.com techuangyi.com techub.news techug.com techvisum.com techwalker.com techwell-cn.com techwin.com techxue.com teclast.com tecmz.com tecochina.net tecolighting.com tecompharma.com tecreal.com tecunonline.com tecyle.com teda-veolia.com tedagas.com tedahotel.com tedahr.com tedaich.com tedaniu.com tedastock.com teddycc.com teddymobile.net tedushi.com tedx.net tedy.cc teejia.com teeqee.com tefact.com tefl-china.net tefscloud.com tefscloud.net tefshipping.com tegongji.com tegoushe.com tegvzpvz.com tehang.com tehub.com tehuituan.com teilei.com tejiabiao.com tejiawang.com tek-asia.com tekkenthree.com tekshanghai.com tekuaijie.com tel01.com telaideyouxue.com teld.net telecomhb.com telecomhr.com telecomjs.com telefen.com telegerlam.cc telegramcn.co telegramggo.com telegramtoke.com telegramyug.cc telegroiam.cc telehr.com teleinfoo.com telekoml.cfd teleland.net telemgrasm.cc teleows.com telergaemoam.cc televivi.com telfri.net teligen-cloud.com teligen.net teliute.org telking.com tell520.com tellgen.com telling.com tellingtech.com telllove520.com tellmachgd.com telnet404.com telongzn.com telpo.com telrgeam.cc telsda.com telu.net telunsu.net tem.pw temaiapi.com temaiku.com temch.net temedical.com temox.com temp.im tempersyi.com ten.design tenag.com tenant-zone-dev.com tenbilliongame.com tencdns.com tencdns.net tencenst.com tencent-blackboard.com tencent-cloud.com tencent-cloud.net tencent-education.com tencent-gcloud.com tencent-gf.com tencent-qejs.com tencent-stock.com tencent.co.id tencent.com tencent.com.hk tencent.design tencent.net tencentads.com tencentads.net tencentanxin.com tencentapigw.com tencentapis.com tencentapp.com tencentapps.com tencentbh.com tencentbyod.com tencentcc.com tencentcdb.com tencentcds.com tencentcfs.com tencentciam.com tencentclb.cc tencentclb.cloud tencentclb.com tencentclb.host tencentclb.info tencentclb.link tencentclb.net tencentclb.online tencentclb.plus tencentclb.pro tencentclb.site tencentclb.space tencentclb.team tencentclb.tech tencentclb.vip tencentclb.work tencentclb.zone tencentcloud-aiot.com tencentcloud-demo.com tencentcloud.com tencentcloud.io tencentcloudapi.com tencentcloudapp.com tencentcloudbase.com tencentcloudbase.net tencentcloudclub.com tencentcloudcore.com tencentcloudcr.com tencentcloudcs.com tencentcloudga.com tencentcloudga001.com tencentcloudga001.net tencentcloudga002.com tencentcloudga002.net tencentcloudga003.com tencentcloudga003.net tencentcloudga004.com tencentcloudga004.net tencentcloudga005.com tencentcloudga005.net tencentcloudga006.com tencentcloudga006.net tencentcloudga007.com tencentcloudga007.net tencentcloudga008.com tencentcloudga008.net tencentcloudga009.com tencentcloudga009.net tencentcloudga010.com tencentcloudga010.net tencentcloudga011.com tencentcloudga011.net tencentcloudga012.com tencentcloudga012.net tencentcloudga013.com tencentcloudga013.net tencentcloudga014.com tencentcloudga014.net tencentcloudga015.com tencentcloudga015.net tencentcloudga016.com tencentcloudga016.net tencentcloudga017.com tencentcloudga017.net tencentcloudga018.com tencentcloudga018.net tencentcloudga019.com tencentcloudga019.net tencentcloudga020.com tencentcloudga020.net tencentcloudga021.com tencentcloudga021.net tencentcloudga022.com tencentcloudga022.net tencentcloudga023.com tencentcloudga023.net tencentcloudga024.com tencentcloudga024.net tencentcloudga025.com tencentcloudga025.net tencentcloudga026.com tencentcloudga026.net tencentcloudga027.com tencentcloudga027.net tencentcloudga028.com tencentcloudga028.net tencentcloudga029.com tencentcloudga029.net tencentcloudga030.com tencentcloudga030.net tencentcloudipv6.com tencentcloudlab.com tencentcloudlive.com tencentcloudmarket.com tencentcloudmq.com tencentcloudns.com tencentcloudsandbox.com tencentcloudsec.com tencentcloudses.com tencentcloudsso.com tencentcls.com tencentcmq.com tencentcode.com tencentcomics.com tencentconsulting.com tencentcos.cloud tencentcos.com tencentcos.net tencentcs.com tencentcsms.com tencentdayu.com tencentdb.com tencentddos.com tencentdevices.com tencentdigitalassistant.com tencentdmp.com tencentdms.com tencentedi.com tencentehs.com tencenteiam.com tencentelasticsearch.com tencentemr.com tencentes.com tencentexpert.com tencentfanyi.com tencentff.com tencentfilm.com tencentfoundation.org tencentga.com tencentgames.co tencentgames.us tencentgme.com tencentgse.com tencentgy.com tencenthangjia.com tencentiam.com tencenticp.com tencentid.com tencentidaas.com tencentidentity.com tencentimage.com tencentimage.net tencentiotcloud.com tencentiotmedia.com tencentipv6.com tencentlegalservices.com tencentlink.com tencentlkfz.com tencentlog.com tencentmail.com tencentmdb.com tencentmeeting.com tencentmfa.com tencentmind.com tencentmovie.com tencentmusic.com tencentoa.com tencentoceanus.com tencentpay.com tencentproxy.com tencentrce.com tencentrcpcsdk.com tencentresearch.com tencentrio.com tencentscf.com tencentsecsdk.com tencentserverless.com tencentservicewatcher.com tencentses.com tencentsite.com tencentsmhcname.com tencentsmhuc.com tencentsource.com tencentstart.com tencentsuite.com tencentsurvey.com tencentsurvey.net tencenttcr.com tencenttdai.com tencenttdmq.com tencenttds.com tencenttid.com tencenttione.com tencenttree.com tencenttrtc.com tencenttymaas.com tencentud.com tencentvpc.com tencentweiban.com tencentwemeet.club tencentwepark.com tencentwf.com tencentwm.com tencentwukong.com tencentxinge.com tencentyouth.com tencentyun.com tencentzhzf.com tenchii.com tencity.com tendacn.com tendata.net tendawifi.com tendbcluster.com tendbcluster.net tendcloud.com tendcode.com tenddata.com tenddata.net tendfo.com tendis.net tendrones.com tendyron.com tengamy.com tenganxinxi.com tengbai-it.com tengbenyueji.com tengbo.cc tengchangjiancai.com tengchu.com tengdatumu.com tengdawl.com tengdazuche.com tengen.com tengfangyun.com tengfeidn.com tengfeijob.com tengfeizhida.com tengfun.com tenghen.com tenghesmart.com tenghoo.com tengkackjr.com tengkaxx.com tenglong.net tenglonggroup.com tengmed.com tengmoney.com tengning.net tengnu999.com tengnuobx.com tengrant.com tengshengchina.com tengshiauto.com tengtiegongyi.com tengwen.com tengxuan.net tengxunlct.com tengxunqiye.com tengxunqiyeyou.com tengy.com tengya.com tengyang666.com tengye-vc.com tengyeshiye.com tengyu-group.com tengyuejz.com tengyunqq.com tengzhihh.com tengzhipp.com tengzhou0632.com tengzhuan.com tenhot.net tenio.com tenjia.cc tenjincn.com tenkent.com tenlonstudio.com tenmh.com tennny.com tennoo.com tenorforman.com tenorshare.com tenorshare.tw tenovatech.com tenpay.com tenqent.com tenrays.com tensafe.com tensgpt.com tenshi.cc tensorchip.com tensorflownews.com tensorlet.org tensuntrans.com tensure.com tensynchina.com tentech.club tentrue.com tentx.com tenwowfood.com tenwukong.com tenxapp.com tenxcloud.com tenxcloud.net tenyn.com teo-rum.com teoacc.com teoacc.net teown.com tepcb.com tepin.hk tequanma.com terabuy.com terapark.com terapines.com terencemusic.com teresahowarddoula.com teridge.com terminal.icu terminus.io terose.com terra-master.com terran.tech terransforce.com terratribes.com terrypacking.com terrytec.com teruide.net tese5.com tesery.com tesexiu.com teshenqi.com tesight.com tesiro.com tesolsh.com tesoon.com test-cignacmb.com testbird.com testcoo.com testdemo.work testeb.com testeck.com testerhome.com testict.com testingpai.com testinsight.net testlrq.com testmrrvendor.com testroad.org testrust.com testshm.com testsparkling.com testwaf.com testwo.com testxy.com tesys.online tetcm.com tetegu.com teteyu.com tetrisone.com tetuijiudian.com teuhui.com tevachem.com tex68.com texasholdemcup.com texasholdemcup.net texpage.com texpageusercontent.com texpro-group.com textaihua.com textin.com texzhongtao.com teyonds.com teyop.com tez-tencentclb.cloud tez-tencentclb.com tez-tencentclb.net tezhengma.com tezhongzhuangbei.com tezign.com tf-bm.com tf.wiki tf56.com tfauto.net tfax.com tfbestea.com tfbird.com tfbkw.com tfbx.net tfcaijing.com tfcloud.com tfclub.com tfcsz.com tfdsb.org tfedu.net tfeic.com tfengyun.com tff.bz tfg2.com tfgame.vip tfgas.com tfgvb.com tfidc.net tfkj.games tfkyj.com tflzhongkongban.com tfme.com tfmywood.com tfogc.com tfogc.net tfoison.com tfol.com tfoyin.com tfrl.net tfs906.com tfsb.net tfsino.com tfsmy.com tftplay.com tfvisa.com tfxqrmyy.com tfyum.net tfzikao.com tfzq.com tg-vision.com tg-vision.net tg0123.com tg1234.com tg138.com tgametalent.com tgbus.com tgcid.org tgcondo.com tgcook.com tgcyber.com tgect.com tgeosmart.com tgjbs.work tgjh.com tgking.net tgkjjg.com tgldfm.com tgljw.com tglxh.com tgnet.com tgo-ai.com tgovcloud.com tgprocs.net tgr365.com tgshiguan.com tgslsst.com tgstech.com tgtenty.com tgtest.site tgtianshanga.com tguangxue.com tgzhz.com tgzwmk.xyz th-sjy.com th-tencentclb.cloud th-tencentclb.com th-tencentclb.net th-tencentclb.work th-water.net th.bing.com th21333.com th38.com th99.com thaicn.com thailycare.com thaivor.com thaiyellowpagesusa.com thakjsbyy.com thamco.com thanju.com thankbabe.com thankyou99.com thankyoumaris.com thanmelin.com thape.com thatinterpreter.net thatsmags.com thatsmandarin.com thatwind.com thboiler.com thcad.net thcantech.com thcf168.com thclouds.com thdangzhun.com thdb.com the-dahan.com the4can.com the5fire.com the9.com theantiagingshow.com thearenacapital.com thearyong.com theateliercouture.com thebeastshop.com thebeijinger.com thebeijingnews.com thebird-air.com thebizark.com thebuddycreative.com thecalicocafepa.com thecfa.info thechois.cc thecodeway.com thedatasys.com thederma.com theduapp.com thedutchman.org thefastcdns.com thefastfile.com thefastimg.com thefastmake.com thefastvideo.com thefatherofsalmon.com thefilehosting.com thefrodo.com thegiac.com thegoods.asia thegraduation.store thegreatwall-china.com thehanshow.com theheirism.com theicstock.com thejamy.com thejiangmen.com thejie.com thejoyrun.com thekunlunbeijing.com thekunlunjingan.com thelalu.com thelarkcloud.com thelastsky.com themebetter.com themediumtx.org themeoffices.com themeol.com themex.net themisweeps.com themixc.com themulian.com themumian.com themusiqu.com then9.com thenburn.com thenew123.com thenewhotel.com thenewstreams.com thenextravelmarket.com theoborn.com theoreticalw.com theorychina.org thepeak.com.my thepoemforyou.com thepredictivemodel.com thepresidentialhotel.com thepsychscrivener.com thepuli.com therasaganga.com theseshepherd.com thesetech.com thesmartmelon.com thesofabedshop.com theszt.com thetali.com thethirdmedia.com thetigerhood.com thetollroadsc.icu thetongji.com thetoplab.com thetype.cloud thevaldezfamily.com thevideosworld.com theweina.com thewestinpazhou.com thewhitedragons.com thewowa.com thewrittencoach.com thexinji.com thexnode.com theytree.com thfdc.net thfdcsoft.com thffc.com thgkyy.com thgsjt.com thief.im thiemechina.com thinbug.com thingclub.com thingjs.com thingskit.com thinheal.com think-mall.com think-way.net thinkcloudlab.com thinkcmf.com thinkdid.com thinkdream.com thinkeffective-usa.com thinkeridea.com thinkerride.com thinkerx.com thinkindrupal.com thinkive.com thinkjs.org thinkpad.com thinkprinter.net thinkraz.com thinksrc.com thinkstu.com thinkvo.com thinkyea.com thinkyeah.com thinla.com thinmoo.com thinvent.com thirtyindiantrail.com this6.com thishealthsummit.com thismomentinamerica.org thisnew.com thisshop.com thiztech.com thjb.net thjiang.com thjjhs.com thjunshi.com thkconn.com thkill.com thm3u8.com thmall.com thmfvb.com thmins.com thmnet.com thmovie.com thmz.com thmzedu.com thny.cc thomanmustore.shop thomasschools.com thoreco.com thorn.red thorne-eco.org thosefree.com thoughtworkers.org thrbs.com threadcn.com threatbook.com threatbook.net threetong.com threewater.net thrive-chemicals.com thronechina.com throughyourlens.org thrrip.space ths123.com ths8.com thsj.com thsolar.com thsware.com thtfpc.com thufeng.net thumbenv.com thumedialab.com thundercdn.com thundercdn.net thundercloud.group thunderflash.net thunderobot.com thunderplaygame.com thundersoft.com thunderurl.com thunis.com thunisoft.com thunlp.org thupdi.com thvow.com thwater.com thwgetsy.com thwiki.cc thwpmanage.com thxddb.com thxdx.com thxflt.com thxnr.com thxtg.org thxy.org thxyy.com thyoo.com thyristors.org thyuu.com thz56.com thzab.com thztv.net thzu.cc ti-node.com ti-solar.com ti0s.com ti360.org tiamaes.com tian-gang.com tian-jie.com tian-run.com tian-ting.ink tian10.com tianan-cyber.com tianan-insurance.com tianan-life.com tianan.com tianan.net tiananaq.com tiananchem.com tiananmenchenglou.com tianapi.com tianbaosi.com tianbiao.net tiancaixing.com tiancaixing.net tiancao360.com tiancehang.com tianchanggongjiao.com tianchenalum.com tianchengas.com tianchi.com tianchihao.com tianchu.com tianchuixiang.com tianchy.com tiancichina.com tiancity.com tiancitycdn.com tiandi.com tiandirenfarm.com tianditao.com tianditu.com tiandiyoyo.com tiandizw.com tianduntech.com tiandy.com tianehui.net tianfeiyu.com tianfeng.cc tianfu-stone.com tianfucaijing.com tianfugroup.com tianfuhui.xin tianfupic.com tianfusoftwarepark.com tiangaicha.com tiangang.com tiangen.com tiangou.xyz tianhai.info tianhai2002.com tianhaixing.com tianhebus.com tianhejiayi.com tianheoil.com tianhepiano.com tianheplaza.com tianhetech.com tianhongchina.com tianhongdiaosu.com tianhonglaser.com tianhongsunshine.com tianhuixile.com tianhujy.com tianiot.com tianji368.com tianjiachem.com tianjiang-tech.com tianjiarun.com tianjibio.com tianjigame.com tianjigu.com tianjihr.com tianjimedia.com tianjin-air.com tianjin-iwc.com tianjin-marathon.com tianjin-patek.com tianjinbbs.com tianjinbohaileasing.com tianjingames.com tianjinwe.com tianjiyy.com tiankang.com tiankong.com tiankonghuyugames.com tiankuojy.com tianlaiedu.com tianlaijiaoyu.com tianlaikge.com tianlailive.com tianlala.com tianli-blog.club tianlian.com tianlijianshe.com tianliwindpower.com tianlongshop.com tianlun.net tianlun100.com tianlunano.com tianlungas.com tianma3600.com tianmaijigou.com tianmalvyou.com tianmao.com tianmapharma.com tianmarketing.com tianmawx.com tianmaying.com tianmidian.com tianmimiclub.com tianmu.mobi tianmu.net tianmuds.com tianmumusic.com tianmunews.com tianmupe.com tiann90.com tiannbo.com tiannengcarbon.com tiannilaw.com tianning.xyz tianninghr.com tiannucoating.com tiannv.com tianpeng.com tianpu.com tianqi.cc tianqi.com tianqi24.com tianqi321.com tianqiaojuyuan.com tianqiaoyishuzhongxin.org tianqiapi.com tianqicloud.com tianqihoubao.com tianqiip.com tianqijun.com tianqilithium.com tianqistatic.com tianqiweiqi.com tianqiyubao3.com tianqiyubao4.com tianqiyubao9.com tianqizhixin.com tianqu.com tianquangs.com tianquetech.com tianqunnet.com tianrkl.com tianrow.com tianruihr.com tianrunshunteng.com tianruo.net tianruoyun.com tiansdl.com tiansenjituan.com tianshan277.com tianshanxt.com tianshengdiyi.com tianshengholdings.com tianshenyule.com tianshiyiyuan.com tianshugame.com tianshungroup.com tiansu-china.com tiantaichina.com tiantaienergy.com tiantailaw.com tiantaishebei.com tiantaivideo.com tiantanbio.com tiantang100.com tiantang6.com tiantangnian.com tiantanpark.com tiantaocs.com tiantaxx.com tiantexing.com tianti.com tiantianbannixue.com tiantiancaige.com tiantiancaipu.com tiantianfm.com tiantianfunds.com tiantianleshuiguo.com tiantianquce.com tiantiansoft.com tiantiantiaosheng.com tiantianxieye.com tiantianxuexi.com tiantingfm.com tiantis.com tiantonglaw.com tianvalue.com tianwang.com tianwenca.com tianwt.com tianwugroup.com tianxia70.com tianxiajiameng.com tianxiajiaoyi.com tianxiamaimai.com tianxiang.com tianxianmao.com tianxiaputao.com tianxiaquanchengapp.com tianxiawangxiao.com tianxiawushi.com tianxiawuzei.org tianxiaxiao.net tianxiaxinyong.com tianxiayouxi.com tianxiayouyue.com tianxin100.vip tianxing.com tianxingjianyiliao.com tianxinkeji.com tianya.com tianya.tv tianya66.com tianyabook.com tianyaclub.com tianyaluedu.com tianyancha.com tianyancha.net tianyangqz.com tianyanqifu.com tianyaruanwen.com tianyaui.com tianyecollege.com tianyi1368.com tianyibook.com tianyid78.com tianyihy.net tianyiidc.com tianyijue.com tianyinzaixian.com tianyisc.com tianyitop.com tianyiwangxiao.com tianyon.com tianyongcheng.com tianyuanfishing.com tianyuanjiudian.com tianyuanpet.com tianyucangqiongxiaoshuo.com tianyuchaye.com tianyuimg.com tianyujidi.com tianyutest.com tianyuyuan.com tianzeqiti.com tianzequan.com tianzhao.net tianzhishui.com tianzhitong.net tianzhuo.com tianzhuobj.com tianzijiaoyu.com tianziweb.net tianzongyouxi.com tiaodao.com tiaofang.com tiaoguangbolimo.com tiaohao.com tiaohaoba.com tiaoka.com tiaomama.com tiaomaruanjian.com tiaona.com tiaooo.com tiaotiao.store tiaotiaotang.net tiaovon.com tiaoyue.xyz tiaozhanbei.net tiatiatoutiao.com tibaitong.com tibet3.com tibet4wd.com tibetanbible.org tibetannet.com tibetcn.com tibetcnr.com tibetcul.com tibetculture.net tibetcyts.com tibethospital.com tibetpic.com tiboshi.org tic-gx.com tica.com ticachina.com ticketdashi.com ticketmars.com ticp.io ticp.net ticpayidr.com ticpsh.com ticstore.com ticwear.com tidaas.com tidb.ai tidb.io tidb.net tidbcloud.com tide-china.com tide.fm tidejd.com tidemedia.com tidepharm.com tidesec.com tideswing.fun tidi.mobi tiduyun.com tieba.com tiebaimg.com tiebanzi.com tiebaobei.com tiedan2019.com tiegu.com tiehuatu.com tiejiang.org tiejiong.com tiejunmedia.com tiekuangshi.com tielemao.com tielingcn.com tielu.cc tielu.org tielu123.com tielujob.com tiemeeting.com tiemu.com tieniujixie.com tiens.com tiepishihu.com tieque.net tiesan.com tieshuwang.net tietie.la tietuku.com tietuo.work tieweishi.com tieww.com tiexing.com tiexing.net tiexiuyugudao.com tiexue.net tiexuedanxin.net tieyang.com tieyou.com tiezhima.com tiezis.com tifenxi.com tiger-code.com tiger-info.com tiger-motion.com tiger2doudou.com tigerbbs.com tigerbrokers.com tigerbrokers.net tigerdns.com tigeresop.com tigerfintech.com tigermed.net tigermedgrp.com tigersecurities.com tigeryun.com tigr.link tiham.com tijian001.com tijian123.com tijianbao.com tijianshangmen.com tijianzhuanjia.com tijox.cc tijox.com tijox.hk tijox.net tijox.org tik-tokapi.com tik2019.com tikersport.com tiktoknewaccount.com tiktokrow-cdn.com tikuol.com tikv.org tileywy.com tillcn.com tillglance.com timanetworks.com timbrd.com time-weekly.com time-year.com timecoo.com timedg.com timedl.com timedoo.com timeep.com timelate.com timelessq.com timemachine.icu timenetwork.tech timeofdate.com timeoutbeijing.com timeoutcn.com timeoutshanghai.com timephread.com timepill.net timeread.com timeread.net timesartmuseum.com timesboom.com timescollege.com timesdf-hn.com timesfortune.com timesndt.com timesoutlets.com timestock.co timetickme.com timeticktick.com timetw.com timev.com timevary.com timewelder.com timez.com timi78.com timibase.com timing360.com timitime.com timiwc.com timjx.com timmerse.com timsgrank-apphome65.com timzuu.com tinavi.com tinengwang.com tinetcloud.com tinfinite.com tinfo.com ting22.com ting27.com ting55.com ting89.com tingbook.com tingchewei.net tingchucontrol.com tingclass.com tingfun.net tinghaohr.com tinghen.com tinghongzz.com tingjiandan.com tingke8.com tingkez.com tinglifangs.com tingmall.com tingmei.com tingmimi.net tingmubeef.com tingniukeji.com tingood.com tingpiting.com tingroom.com tingshubao.net tingshumi.com tingshuo51.com tingshuowan.com tingsonglaw.com tingtao.net tingtingfm.com tingtingwo.com tingvision.com tingxi8.com tingxiangzu.com tingxiaoyou.com tingyulou.com tingyun.com tingyutech.net tiniangroup.com tinigame.xyz tinkad.com tinkerpatch.com tinktek.net tinman798.net tinning-automation.com tinsecret.com tinstu.com tinwod.com tinychen.com tinycms.xyz tinyems.com tinyfeng.com tinyflare.com tinygroup.org tinylab.org tinymind.com tinypixos.com tinyservices.net tinywan.com tinyyuan.com tipaipai.com tipask.com tipdm.com tipdm.org tipray.com tiprpress.com tipsoon.com tiqcdn.com tiqiaa.com tiqianle.com tirechina.net tiremay.com tiruna-cn.com tiscend.com tisgame.com tisi.org tisino.com tisiwi.com tisohinge.com tisptech.com tita.com tita.net titamobi.com titan007.com titan24.com titanar.com titanlaw.com titanm.com titanmatrix.com titans-ele.com titansci.com titapark.com titianshanfz.com tititxt.com titloteka.com titussb.com tivitv.com tiwb.com tiwu.net tixa.com tixaapp.com tixue.net tiyamat.com tiye.me tiyeji.com tiyep.com tiyucdn.com tiyufeng.com tiyuguoji.com tiyule.com tiyusaishi.com tiyushe.com tiyuxiu.com tizi.com tizi365.com tizoinfo.com tj-fch.com tj-guangxin.com tj-kingdee.com tj-model.com tj-un.com tj0573.com tj20.com tj2022.com tj316bxg.com tj47zx.net tj9.co tjab.org tjafxh.com tjaide.com tjbb.com tjbearing.com tjbh.com tjbhnews.com tjboai.com tjbpi.com tjbsq.com tjbus.com tjbxingbian.com tjcamp.com tjcaoshiyabo.com tjcecp.com tjcep.com tjchangxing.com tjchildrenshospital.com tjcid.com tjckjr.com tjcn.org tjcondom.com tjcta.org tjculture.com tjcyts.com tjczjxsb.com tjdeviser.com tjdewy.com tjdrzc.com tjdyf.com tjeco-city.com tjeti.com tjfengfan.com tjfer.com tjflcpw.com tjfxdx.com tjfytech.com tjgcs.com tjgdjt.com tjgg88.com tjghw.com tjgmcg.com tjgportnet.com tjgtgd.com tjhgmc.com tjhmsj.com tjhtcpvc.com tjhyzyxy.com tji.io tjian.com tjinsuo.com tjj.com tjjfrh.com tjjhqyy.com tjjiaotong.com tjjinglang.com tjjt360.com tjjtjt.net tjjwt.com tjjwwl.com tjjzzls.com tjkache.com tjkeheng.com tjkj300.com tjkp-tools.com tjkpzx.com tjkx.com tjkximg.com tjllhbkj.com tjluohuzhijia.com tjmama.com tjmcgc.com tjmhc.com tjmldy.com tjmuch.com tjnjw.com tjoy.biz tjpa-china.org tjpma.org tjpme.com tjportnet.com tjq.com tjqiqiu.com tjqq.cc tjrenliziyuan.com tjrenmu.com tjruien.com tjsjnxh.com tjsjwygg.com tjsjx.com tjskq.com tjskqyy.com tjsptech.com tjst.net tjstats.com tjsylhh.com tjszyy.com tjtele.com tjtjshengtu.com tjtongrentang.com tjtrust.com tjtsxd.com tjtum.work tjtvc.com tjubbs.net tjumc.com tjupdi.com tjuzj.com tjwatergroup.com tjwch.com tjwch.org tjwenjie.com tjwf.com tjwj88.com tjwmschool.net tjxdzhonda.com tjxinyu.com tjxiqi.com tjxunlei888.com tjxxcl.com tjxz.cc tjydyt.com tjyun.com tjzb.com tjzcsj.com tjzfcg.com tjzfhgcj.com tjzhongyiyao.com tjzhyj.com tjznjt.com tjzxyy.com tjzyec.com tjzyefy.com tjzyfw.com tjzymob.com tk-life.com tk-rays.com tk-xiong.com tk.anythinktech.com tk163.com tk233.xyz tk315.com tkas2019.com tkchina.com tkckjr.com tkcn.cc tkd-suzhou.com tkfashion.club tkfff.com tkgame.com tkhealthcare.com tkjzym.com tkll12131nb.com tkmedicare.com tkpension.com tkplusemi.com tkrlab.com tktjwhyy.com tktk123.com tkw.cc tkwcn.com tkww.hk tkxb.net tkxlglyy.com tkxxd.net tkxyy.com tky001.com tkzqv.com tl-finechem.com tl-self.com tl-shida.com tl-tek.com tl-vogue.com tl100.com tl2y.com tl50.com tl88.net tlang.com tlbapm.com tlbsbigdata.com tlby120.com tlbyx.com tlcbf.com tlcharity.com tlcssk.com tlfw.net tlfzkj.com tlgas.com tlgslb.com tlhjjc.com tlhmhd.com tlink.io tlinkaccess.com tlinkaccess2.com tlinx.com tliveapi.com tliveapi2.com tliveapp.com tliveauth.com tliveauth2.com tlivecdn.com tlivecdnv1.com tlivecdnv2.com tlivecdnv3.com tlivecdnv4.com tlivecloud.com tlivecontroller.com tlivecontroller2.com tlivedal.com tlivedal2.com tlivedeliver.com tlivedispatch.com tlivedispatch2.com tlivedns.com tlivedns2.com tlivednsv1.com tlivegslb.com tlivehttpdns.com tlivehttpdns2.com tliveigtm.com tliveigtm2.com tliveigtm3.com tlivemcdn.com tlivemcdnsched.com tliveplay.com tliveplaydemo.com tliveproxy.com tliveproxy2.com tlivepush.com tlivepush2.com tlivertc.com tlivertc2.com tlivesdk.com tlivesdk2.com tlivesdkconfig.com tlivesdkconfig2.com tlivesource.com tlivesrc.com tlivesrc2.com tlivesrcaccess.com tlivesrcaccess2.com tlivesrcapp.com tlivesrcapp2.com tlivesrcdemo.com tlivesrcschedule.com tlivesrcschedule2.com tlivessl.com tlivessl2.com tlivestability.com tlivestability2.com tlivestream.com tlivestream2.com tliveupload.com tliveupload2.com tliveweb.com tliveweb2.com tlivewebrtc.com tlivewebrtc2.com tlivewebrtcpush.com tlivewebrtcpush2.com tlivewebrtcpushsch.com tlivewebrtcpushsch2.com tljas.com tljcw.com tljob8001.com tljwbj.com tljx.net tlkuazr.com tlomo.com tloongroup.com tlqwine.com tlrcbk.com tlryjg.com tlsj-hd.com tlsy.vip tlt5.com tlte.com tltesoft.com tltuan.net tltzg.com tlu5.com tlwanjishan.com tlwk.net tlwok.com tlxwjx.com tlxxw.com tly.cloud tlyz.net tlzey.com tlzhjt.com tlzyxy.com tm-auto.com tm0755.com tm1949.com tm51.com tm5ad.com tmaill.com tmall tmall.com tmall.hk tmall.ru tmallalicdn.com tmallgenie.com tmallgenieapi.com tmallplay.net tmallvvv.com tmallyc.com tmaotech.com tmbbs.com tmc-youqun.com tmcdn.net tmctool.com tmecd.com tmeiju.com tmetb.net tmfcloud.com tmgdb.com tmhong.com tmhtour.com tmhttc.com tmianyang.com tmigrate.com tmirob.com tmisp.com tmjbee.com tmjd123.com tmjiasuqi.com tmjj.com tmjob88.com tmkoo.com tmmini.com tmoxrobot.com tmqd.me tmqmqj.com tmrcw.com tmrenergy.com tms-in.org tms56.com tms8.com tmscnz.com tmsemi.com tmsf.com tmshare123.com tmsmh.com tmsmq.com tmsx.net tmtforum.com tmtmw.com tmtpost.com tmtpost.net tmtsmartlife.com tmtsmartrun.com tmtsp.com tmuaih.com tmusoft.com tmuyun.com tmwcn.com tmwxxcx.com tmwzs.com tmxmall.com tmxxw.com tmxz.me tn2000.com tnarzc.com tnas.link tnas.online tnblog.net tnblt.com tnbz.com tnccdn.com tndsjka.com tnebula.net tnedu.com tnettms.com tngcjx.com tngdigital.com.my tnodenow.com tnong.com tnsou.com tnyoo.com tnzuwu.com to-future.net to2025.com to4f.com to8to.com to999.com toast.pub toaw.net tobaccochina.com tobaccosz.com tobebetterjavaer.com toberp.com tobetopone.com tobnews.com tobo1688.com tobosu.com tobsnssdk.com tochgo.com tochinajob.com tocomtech.com tocosc.com tocreating.com today36524.com today99.com todaycache.net todaydunhuang.com todayguizhou.com todaygx.com todayidc.com todayintnet.com todayios.com todayisp.net todaymedtech.com todaynic.com todaypublish.com todayyj.com todesk.com todgo.com todoen.com todokeji.com todokit.xyz todolist.chat todolist.email todolist.pub todonow.com todoyi.com todreamer.com toec-gdgs.com toec-iot.com toec.com toecsec.com tofeat.com tofengmi.com tofflon.com tofine.com togoalad.com togocareer.com togogo.net togoo.com tohfox.com tohosting.com tohosting.net tohours.com toidea.com toiue.com tokcoder.com tokeiaat.com tokeimall080.com tokeisuisukopi.com token-ad.com token-sensor.com tokenglish.com tokensky.net tokimekiclub.org tol24.com tollpaymentbv.vip tom.cat tom.com tom163.net tom61.com tomatogames.com tomatolei.com tomatooflove.com tomax.xyz tomdiy.com tomley.com tommsoft.com tomonline-inc.com tompda.com tomson-group.com tomson-riviera.com tomwx.net tonbao.com tone-sun.com tonebj.com tonechemical.com tonehk.com tonewinner.com tong-pao.com tong-run.com tongaokeji.com tongbanjie.com tongbaoyun.com tongbb.net tongbu.com tongbupan.com tongbusj.com tongceyiliao.com tongchaba.com tongcheng.cc tongchengbx.com tongchengchaku.com tongchengir.com tongchengqun.vip tongchengxuanshang.com tongchouba.com tongda2000.com tongdanet.com tongdaohui.com tongdaonews.com tongdaotv.com tongdayun.com tongdelove.com tongdinggroup.com tongdun.net tongdy.com tongfangpc.com tongfei.tech tongfengkh.com tongfu.net tongfudun.com tongfugroup.com tonggao.info tongguanbao.net tonghanguav.com tonghuan.com tonghuiqiye.com tongji.com tongjia.com tongjiai.com tongjijs.com tongjiniao.com tongjipf.com tongkask.com tongleer.com tonglei.com tonglian.com tongliangrc.com tongliaowang.com tonglichang.com tonglingwulian.com tonglize.com tongmengge.com tongmengguo.com tongniguoji.com tongoiltools.com tongpiao.com tongquee.com tongrenchina.org tongrentang.com tongrentangjb.com tongrentangkj.com tongrenyouxi.online tongsha.com tongshanbank.com tongshiling.net tongshuai.com tongshun6.com tongsuo.net tongtaiamc.com tongtech.com tongtex-fashion.com tongtianta.site tongtongtong.com tongtongyilian.com tongtool.com tongtut.com tongwang.net tongwei.com tongwo.net tongxi.net tongxiang.net tongxianghuicn.com tongxiangshun.com tongxiclub.com tongxiehui.net tongxigroup.com tongxin.com tongxin.org tongxingbao123.com tongxinghui.com tongxinky.com tongxinmao.com tongxiong.com tongxue.com tongxue365.com tongxue8.com tongxuepie.com tongyangship.com tongyaoplay.com tongyavisa.com tongye.biz tongye56.com tongyehuanbao.com tongyi.com tongyicm.com tongyidrying.com tongyiplastic.com tongyist.com tongyonggroup.com tongyongpe.net tongyongts.com tongyongzs.com tongyoujiancai.com tongyu369.com tongyuan.cc tongyuangas.com tongyuanos.com tongyue.com tongyuheavy.com tongzecn.com tongzhuo100.com tongzhuodn.com tongzicha.com tongzsf.com tonhwa.com toniandguychina.com tonitech.com tonki-tpms.com tonksz.com tonlyele.com tonnn.com tonnp.com tonsontec.com tontian.com tontime.com tontsen.com tony-bro.com tonycrane.cc tonysfarm.com tonze.com toobiao.com toocf.com toocle.com toodaylab.com toodudu.com tool.la tool.lu tool56.com tool77.com tooleemesse.com toolgg.com toolkk.com toolmall.com toolmao.com toolnb.com toolonline.net tools.team toolscat.com toolsjy.com tooltt.com toolwa.com tooming.com toomoss.com toonechem.com tooopen.com tooseo.com tootour.com toouoo.com top-cnc.com top-dianjingfeng.com top-elan.com top-shanghai.com top-trust.com top100school.com top100summit.com top147.com top168.com top1game.com top263.net top2fun.com top3456.com top4xlc.com top6000.com topbester.com topbiol.com topbiz360.com topbook.cc topbridge.asia topcanchina.com topcdb.com topcentenviro.com topcheer.com topchitu.com topcj.com topcomm.co topcpu.net topcrab.com topcsic.com topcto50.com topdodo.com topdoge123-a.com tope365.com topeastic.com topeditsci.com topeet.com topeetboard.com topexhib.net topfisc.com topflames.com topfo.com topfreeweb.net topgoer.com topgprs.com topgslb.com topgus.com tophant.com tophold.com tophr.net tophub.app tophub.fun topideal.com topit.pro topit5.com topjoy.com topjoycloud.com topkhealth.com topku.com toplanit.com toplee.com toplevel.ink toploong.com topmba.mobi topmediai.com topnic.net topnokycusdtcasino.com topomel.com toppdu.com topperuse.com topping.pro toppingaudio.com toppkg.com toppollen.com toppps.com toppridehk.com topproio.com topqh.net toprand.com toprender.com toprocn.com topsage.com topsayauto.com topscan.com topsedu.com topsem.com topsim.cc topsmartinfo.com topsmt.com topsresearch.com topsrx.com topstar.art topstarltd.com topsunholdings.com topsunleisure.com topsunpower.cc toptastewin.com topthink.com topthink.net toptiao.com toptopn.com toptopone.com toptubeco.com topuc.com topunix.com topv1.com topwalk.com topway.org topwaysoft.com topwidgets.com topwinchance.com topwinfo.com topxgun.com topxiu.com topxlc.com topxlc6.com topys.com topyun.tv topyun.vip topzj.com torch.plus torcstark.com toromotor.com torovo.com torphan.com torrealcielo.com toscdn.com toshiba-gtbs.com toshiba-semicon-storage.com toshiba-thpc.com toshiba-tnis.com toshow.com tosohbioscience.net tosonet.com tosound.com tospur.com tosstar5117.com tosuai.com tosunk.com totainfo.com totalacg.com totenchina.com totiot.com totochina.com totodi.com totope.com totoro.pub tototang.com totren.com totwoo.com totwoseal.com tou-tiao.com toubang.tv toucdn.com touch-ck.com touch-massageandholistictherapies.com touch-moblie.com touch4.me touchat.online touchealth.com touchelf.com touchev.com touchjoin.com touchjoint.com touchmark.art touchngo.com.my touchsh.com touchsprite.com touchsprite.net touchstudio.net touchxd.com touclick.com touduyu.com toufu321.com tougongjiao.com tougub.com touhou.casa touhou.cd touhou.market touhoudog.net toujidao.com touker.com toumiao.com toupb.com touqikan.com tour110.com tourboxtech.com tourenwang.com tourgansu.com tourhr.com tourjob.net tourongjia.com tourongzi.org toursbms.com tourscool.com tourunion.com tourye.com tourzhenjiang.com tourzj.com toushibao.com toushivip.com toutiao.com toutiao.org toutiao11.com toutiao12.com toutiao13.com toutiao14.com toutiao15.com toutiaoapi.com toutiaoapp.com toutiaobashi.com toutiaobus.com toutiaocdn.com toutiaocdn.net toutiaocloud.com toutiaocloud.net toutiaogood.com toutiaohao.com toutiaohao.net toutiaoimg.com toutiaoimg.net toutiaojingyan.com toutiaojisu.com toutiaolite.com toutiaolite1.com toutiaolite2.com toutiaoliving.com toutiaonanren.com toutiaopage.com toutiaopan.com toutiaopanapi.com toutiaopic.com toutiaoribao.net toutiaostatic.com toutiaovod.com toutiaowap.com toutiaowap.net toutiaoyule.com toutiaozb.com toutoufc.com toutoupiao.com touwenzi.com touwho.com touxiang8.com touxiang88.com touxiangkong.com touying.com touzhijia.com touzi.com touzid.com touzikuaibao.com touzime.com touzime.net touzitiandi.com touzizn.com towavephone.com towelltech.com tower.im tower0788.com towinor.com towmy.com towngasenergy.com towngasvcc.com townsky.com townsungroup.com towntour.net towords.com towry.me toxingwang.com toybaba.com toycloud.com toyean.com toyota-nanning.com toyoures.com toyoutesting.com toysir.com toysol.com tp-data.com tp-hivi.com tp82.com tpadx.com tpbook.com tpccoo.com tpdmp.com tpdz.net tpe-tencentclb.cloud tpe-tencentclb.com tpe-tencentclb.net tpe-tencentclb.work tpfangchan.com tphdled.com tpimg.xyz tpjhr.com tpjwww.com tpkey.com tplcd100.com tplife.com tplogincn.com tpooo.com tpoxiaozhan.com tpqxb.com tprtc.com tps138.info tpsbp.com tpsea.com tpsge.com tpshleasing.com tpsns.com tpstatic.net tpsxs.com tpszw.com tpturang.com tpuda.com tpumlir.org tpy100.com tpy119.com tpyboard.com tpykyy.com tpyzq.com tpzlj.com tqads.com tqapp.com tqapp.net tqcj.com tqcp.net tqcpc.com tqcrane.com tqcto.com tqdianbiao.com tqedu.net tqgxb.com tqhj88.com tqiantu.com tqip.com tqkgjt.com tql.ink tqle.com tqmall.com tqmba.com tqmdp.net tqmy168.com tqpac.com tqqa.com tqqyun.com tqrobodrive.com tqschool.net tqshfw.com tqshfw.net tquic.net tquyi.com tqw5.com tqwqq.com tqybw.net tr-test-ali.net tr-test.net tr-testboe.net tr89.com trace4me.com tracefact.net tracegd.com traceint.com tracestour.com tracevision.tv tracker.ink trackingio.com trackingmore.com tracup.com tracyclass.com tradaquan.com tradeblazer.net tradeleo.com trademanager.com trademessenger.com tradeplus.cc tradesns.com tradesou.com tradevv.com tradew.com tradingcomps.com tradinghero.com tradow.com tradplus.com tradplusad.com trae.guru trafstore.com traineexp.com trainingipv6.com trainnets.com trainsimchina.com trait-wholesale.com traktalent.com tranbbs.com traneasygo.cc tranlion.com tranplanet.com trans-china.com trans4e.com transcendchina.com transcenta.com transduck.com transer-cn.com transfarchem.com transfarzl.com transformer-cn.com transformers.run transfriend.com transfu.com transfun.net translatego.net translatellm.asia translationchina.com transmission-china.org transmonkey.com transmonkey.net transn.com transnanning.com transparcel.com transportjp.com transrush.com transsion-os.com transsscoco.com transthera.com transwarp.io transwiki.org tranwit.com tratamientoalcohol.com tratao.com travel-x.cc travel6.co.uk travelgo.com traveling-exhibitions.com travellaureate.com travellingwithhotel.com travellinkdaily.com travelsky.com travelsky.net travelwuhan.com travelyee.com trawind.com treatgut.com treazr.store treehousesub.com treesir.pub treetwins.com treeyee.com trekin.space trend6.com trendiano.com trendimedia.com trendingstar.tech trendsbulletin.com trendsmag.com trendsmen.com trendtokyo.com trendy-global.com trenrde.com tressgroup.com tretars.com trevias.store trewbnhj.vip trexiu.com trfgvb.com trfkyy.com trftpe.com trgauto.cfd trgis.com trhealth.net trhj.net trhly.com trhos.com trhui.com trhxt.com triggerdelivery.com trinasolar.com trinitigame.com trinova-tech.com trioisobardev.com triolion.com triopen.com triowin.com trip169.com trip8080.com tripbaba.com tripbe.com triphr.com tripleuuu.com triplexservice.com tripnearby.com tripodeck.com tripolers.com tripsanxia.net triptt.com tripurx.com tripvivid.com tripwirechina.com triring.com trisfal.com tristarinc.com triton-games.com tritoninfo.net trizenai.com trizinfo.tech trizlaser.com trizmed.com trjcn.com trjcn.net trjddq.com trkj.com trkjbj.com trl.center trleader.com trli.club trmedical.net trnjm.com trnox.com troika-design.com troila.com trojantesting.com tronixin.com tronlife.com tronlong.com tronly.com tronsmart.com tropcdn.com troubles.work troxchina.com trpc.center trpc.group trpc.tech trpcdn.net trqjrp.xyz trs-logistics.com trsjgdj.com trsoft.vip trsoft.xin trsol.com trswtz.com trt.hk trtb.net trtc.io trtccloud.com trtccloud.net trtcrecover.com trthealth.com trtpazyz.com trucker365.com trucklc.com trueart.com truebuty.com truechine.com truedian.com truedream.ltd trueeyu.com trueful.com truekex.com trueland.net trueme.net truerun.com truesing.com truestudio.tech trufun.net truimo.com trumpeter-china.com trumsense.com trunktech.com trusfort.com trusit.net trusple.com trust-mro.com trust-one.com trust400.com trusta-lawyer.com trustasia.com trustcn.com trustdecision.com trustedsign.com trustexporter.com trustie.net trustkernel.com trustlife.com trustmo.com trustmover.com trustmta.com trustutn.org trustwe.com trutes.com truthsinfo.com truzem.com trvok.com trwl.net tryfun.com tryine.com tryineapp.com trykan.com trylmr.com trymoka.com tryudesk.com tryurbest.com tryxue.com tryz.net trzhineng.com ts-bus.com ts-cooling.com ts-jiabo.com ts-juheng.com ts-marathon.com ts-precision.com ts-watch.com ts.cc ts0775.com ts100.com ts166.net ts16949px.com ts16949rz.org ts3.hk ts3.ink ts3.vip ts56xh.com tsa-lp.com tsa-page.com tsa-page0.com tsa-page1.com tsa-page2.com tsa-page3.com tsa-page4.com tsa-page5.com tsa-page6.com tsbjschool.com tsbtv.tv tschina.com tscichina.com tscorona.com tsdaodao.com tsdjg.com tsdxb.com tsecdapi.com tsefang.com tsepcn.com tses.net tsflc.com tsfqw.com tsg-online.net tsggx.com tsgks.com tsgyun.com tshaisen.com tshe.com tshe.me tsheducation.net tshell.online tshengqi888.com tshmkj.com tshock.cc tshtech.com tsichuan.com tsinergy.com tsing-jn.com tsingaero.com tsinghua-getinfo.com tsinghua-sz.org tsinghua-vc.com tsinghua-wx.org tsinghuaic.com tsinghuajournals.com tsinghuan.com tsinghuawoman.com tsinghuawuxigz.net tsinghydrogen.com tsingj.com tsingmicro.com tsingming.com tsingoofoods.com tsingpost.com tsingshang.com tsingtek.com tsingtoo.com tsingtuo.com tsingyangroup.com tsingyanresearch.com tsj-js.com tsj-tsy.com tsjtsy.com tsk-fixture.com tskscn.com tslib.net tsljzs.com tslongtai.com tslsmart.com tslt.tech tsluping.com tsm-license-test.com tsm-license.com tsm-yuntrust.com tsm52dc.com tsmtkj.com tsn-tencentclb.cloud tsn-tencentclb.com tsn-tencentclb.net tsn-tencentclb.work tsorder.com tsp189.com tsparkling.com tspsy.com tspweb.com tsqw.com tsrcw.com tsrenli.com tsrnjs.com tsrqjt.com tsrqjtfc.com tsruifeng.com tssns.net tsstorry.com tssyedu.com tssyjt.com tstvxmt.com tsubakichina.com tsukistar.fun tsunbull.com tswjs.net tswjs.org tswljt.com tswnanning.com tswuby.com tsxcfw.com tsxcx.xyz tsxjt.com tsxtgj.com tsxw66.com tsycdn.com tsyexmail.com tsykf.com tsyvps.com tsyzm.com tszh.net tszhjk.com tszlsgs.com tszxhosp.com tszyzx.com tt-app.com tt-bike.com tt-ly.com tt286.com tt65org.com tt787.com tt818k.com tt919.com tt96596.com ttaidu.com ttalkai.com ttbba.com ttbbss.com ttbyte.com ttbyte.net ttcad.com ttcl.cc ttdailynews.com ttdnsa.com ttdown.com ttdsw.com ttechhk.com ttfly.com ttfuav.com ttg8.com ttgan.com ttge.ru ttggxx.com ttgjx.com ttgood.com ttgslb.com ttgtm.com ttgwm.com ttgxlx.com tthaoduo.com tthigo.com tthunder.com ttic.cc ttigame.com ttime.com ttionya.com ttj5.com ttjianbao.com ttjisu.com ttkdex.com ttkefu.com ttkuan.com ttlock.com ttmark.com ttmass.com ttmd5.com ttmm.vip ttmn.com ttmnq.com ttmv.com ttn8.com ttnea.com ttnongli.com ttnqh.com ttongda.com ttpaicdn.com ttpaihang.com ttpaper.com ttpet.com ttpharm.com ttplayer.co ttplayer.com ttpod.com ttpp.com ttppoo.com ttpx.net ttq.com ttq.so ttqiancheng.com ttriqi.com tts8.com ttshengbei.com ttship.com ttshuba.cc ttshuba.net ttsim.com ttsim.net ttsmk.com ttstream.com ttsz8.com tttang.com tttarot.com tttcykt.com tttelephone.com ttthing.com tttiti.com tttkkt.com ttttt22222.com tttuangou.net tttxf.com tttz.com ttunion.com ttwanjia.com ttwebview.com ttwifi.net ttwqw.com ttwx.com ttwxh.com ttxn.com ttxs123.net ttxs7.com ttxsapp.com ttxsonline.com ttxuanpai.com ttxx8888.com ttyec.com ttyfp.com ttyfund.com ttyinfo.com ttyingqiu.com ttyjf.com ttymq.com ttyongche.com ttyqm.com ttysq.com ttyuyin.com ttyy800.vip ttyyuuoo.com ttz.com ttzcw.com ttzubao.com ttzw365.com ttzyw.com tu54o7863tbf6.com tu8.cc tu93.biz tu960.com tuan800.com tuan800.net tuanai.com tuanbohui.com tuanche.com tuancu.com tuandai.com tuanduishuo.com tuang.club tuangai.com tuangouba.com tuanidc.net tuanimg.com tuanitgx.com tuanjiebao.com tuanjuwang.com tuanlin.net tuanmeme.com tuanok.com tuanpibao.com tuanping.com tuanshan.com tuantuangame.com tuantuanshou.com tuanxue360.com tuanxue360.net tuanyougou.com tuanyuan520.com tuanyx.com tuanziai.com tubachina.com tubanginfo.com tubangzhu.com tubaobao.com tubaobaoqm.com tubaoveneer.com tubaoyz.com tubatu.com tube-cat.com tubebbs.com tubiaoxiu.com tubie.art tuboshu.com tuboshuxinxi.xyz tuboxu.com tubutu.com tuchong.com tuchong.net tuchuangs.com tuchuiwang.com tuchuiwang.net tucoo.com tudai.cc tudai.com tudan.cc tudan.vip tudou.com tudoupe.com tudouseo.com tudouui.com tudouxy01.com tudouyx.com tudu.com tudu.im tuer.me tuer123.com tuf3a353.com tuganjue.com tugemedical.com tugoo.net tugou.com tugoucx.com tuguaishou.com tuguan.net tuguiyao-gd.com tuhaiba.com tuhaogroup.com tuhaokuai.com tuhu.com tuhu.org tuhu.work tui18.com tui33.com tuiaaaa.com tuiaaae.com tuiaaaf.com tuiaaag.com tuiabq.com tuiapple.com tuibear.com tuiberry.com tuiclick.com tuicool.com tuicross.com tuidaniu.com tuidc.com tuideli.com tuidragon.com tuifeiapi.com tuifish.com tuiguang91.com tuiguangdns.com tuiguangjia.com tuijiantong.com tuijianxin.com tuijie.cc tuikemima.com tuikemima.net tuikemohe.com tuili.com tuilidashi.xin tuilie.com tuilisr.com tuiliu.net tuilixy.net tuimob.com tuimotuimo.com tuimy.com tuinei.com tuipeanut.com tuipear.com tuipinpai.com tuiplay.com tuirice.com tuishao.net tuishark.com tuishubang.com tuishuge.com tuishujun.com tuisnake.com tuistone.com tuitiger.com tuitui.info tuitui99.com tuituifang.com tuituitang.com tuiwen.net tuixiu.com tuiyi.cc tuizx.com tujia.com tujiacdn.com tujian.com tujiandan.com tujidu.com tujixiazai.com tuke88.com tukedu.com tukkk.com tuku.com tukujia.com tukuppt.com tulading.com tuleminsu.com tuling123.com tulingdns.com tulipsport.com tuliu.com tulsj.com tumajewelry.com tumanyi.com tumchina.com tumengtech.com tumicomm.com tumormed.com tumukaoyan.com tumukeji.com tumwf.com tumyu.com tuna.wiki tunanhuashi.com tungee.com tungkong.com tungraymhe.com tungs.store tungshungroup.com tungsten-alloy.com tungsten-bar.com tungsten-copper.com tungsten-jewellery.com tungsten-powder.com tungwah.com tunhe.com tunhent.com tunionfans.com tuniu.cc tuniu.com tuniu.net tuniu.org tuniucdn.com tuniuglobal.com tuniuins.com tuniuops.net tunynet.com tuo-pan.com tuoaa.com tuobeng.net tuocad.com tuodan.tech tuodaneee.com tuodangclub.com tuodanlab.com tuodanyy.com tuohuangzu.com tuojiebiotech.com tuojunedu.com tuolajieightscore.com tuoluozhuan.net tuoniaox.com tuopaishedecta.com tuopan808.com tuopu.com tuoren.com tuotoo.com tuotuozu.com tuoweisi.com tuoyuan619.com tuoyuantec.com tuozhe8.com tuozheng168.com tuozhilight.com tupian1.com tupian114.com tupian1234.com tupian365.com tupiancunchu.com tupiankucdn.com tupianseo.com tupianyun.com tupianzj.com tupu360.com tuputech.com tupuw.com tuqiangcn.com tuqou.com tuquu.com turangyq.com turboes.com turbomail.org turingapi.com turingbook.com turingdi.com turingfraud.net turinggear.com turingtopia.com turnitin.org.in turnitinuk.net turs-ptt.icu turtle-sir.com turui-robots.com turuio.com tus-health.com tusapi.com tusay.net tuscbec.com tuscdn.com tusdesign.com tusdk.com tusenergy.com tushare.org tushare.pro tushencn.com tushifu.com tusholdings.com tushu007.com tushumi.cc tushumi.com tushuokeji.net tusij.com tusiot.com tusmedicine.com tusooo.com tuspark.com tuspass.com tuspass.net tusstar.com tustt.com tusu.cc tusuguanjiage.com tusujiu.com tutdown.com tutechanhb.com tutengcloud.com tutengdai.com tutuapp.com tutucloud.com tutudati.com tutuge.me tutuguai.com tutuim.com tutupan.com tuvrblog.com tuwan.com tuwandata.com tuwangwang.com tuwanjun.com tuwazhundian.com tuweng.com tuwenzhibo.com tuxi.com tuxiangyan.com tuxiaobei.com tuxing.art tuxing2010.com tuxingren.com tuxiu.com tuxun.fun tuya.com tuyacn.com tuyansuo.com tuyaya.com tuye.com tuyiqi.com tuyitu.com tuyiyi.com tuyoo.com tuyou.me tuyougame.com tuyoujp.com tuyoumi.com tuyouvpn.com tuyouxinxi.net tuzhan.com tuzhan.net tuzhanai.com tuzhanh5.com tuzhaozhao.com tuzhijie.com tuzhizhijia.com tuzhongit.com tuzi123.com tuzi8.com tuziip.com tv-live-cctv.com tv-live-tvsou.com tv002.com tv121.com tv189.com tv2-zuqiu.com tv20806.com tv373.com tvandnet.com tvants.com tvapk.com tvapk.net tvbbj.com tvblack.com tvcbj.com tvcbook.com tvccc.org tventry.com tvfanqie.com tvfuwu.com tvguo.tv tvhf.com tvhuan.com tvjianshen.com tvkuai.com tvmao.com tvmcloud.com tvmining.com tvoao.com tvodapi.com tvodapibk.com tvos.com tvt.im tvt85.com tvuctgze.com tvxio.com tvzhe.com tvzn.com tw-joly.com tw-yun.com tw2sm.com twanxi.com twatchesmall.com twbuild.org twcczhu.com twcoal.com twd2.me twd2.net twdxdl.com tweakcube.com twh5.com twheixiong.com twinkledeals.com twinkstar.com twinsel.com twinsenliang.net twistysocks.com twk.cc twoarmy.com twoear.com twowinit.com twplink.xyz tws.com twsapp.com twscholar.com twsns.com twsz-cq.com twszs.com twtes18.com twtime.vip twtstudio.com twty.vip twwtn.com twwtn.net twyuxin.com twyxi.com twzgn.com twzilla.com twzmd.com twzui6.com tx-exhibition.com tx-livetools.com tx-trans.com tx009.com tx1588.com tx163.com tx321.com tx365.com tx5d.com tx8j.com txbanche.com txbapp.com txbimg.com txbond.com txbyod.com txcap.com txcdns.com txcdns.net txcfgl.com txcgoo.com txclivecdn.com txcloudlive.com txcm365.com txcm365.net txcmapp.com txcode.com txcx.com txcx.tech txcxjd.com txcxpt.com txczawlfpj5.com txdai.com txdl1.com txdl1.net txdl2.com txdl2.net txdyt.com txdzw.com txelive.com txelvb.com txeo.net txfba.com txfeiyu.com txffp.com txfund.com txga.com txgirl1.com txgirl2.com txhsya.com txhttpdns.net txhy1699.com txie.club txitech.com txjhqh.com txjscl.com txjsjgs888.com txjy689.com txlctong.com txleshare.com txlivecdn.com txlivecdn2.com txlt.com txlunwenw.com txlzp.com txmcu.com txmdb.com txmkf.com txon.net txooo.com txqcw.net txqq.com txqq789.com txresearch.com txrjy.com txrpic.com txrz.com txrzx.com txscdn.com txsdk.com txsec.com txsf.com txssw.com txstatic.com txt101.com txt321.com txt81.com txtag-secure.world txtagsceru.cc txtagscerw.cc txtbbs.com txtduo.com txtelsig.com txtshuku.org txttgj.com txttool.com txtxr.com txtyxg.com txuwft6117.vip txvat.com txvideo1.com txvideo2.com txwb.com txweekly.com txwestart.com txwm.com txwy.com txwy.com.tw txx66.com txxy.com txxzc.com txy8.com txyapp.com txybio.com txybk.com txyes.com txyfwq.com txyscdn.com txyscdn.net txzb.app txzing.com txzqzb.com txzuranji.com ty-archdesign.com ty-group.net ty-im.com ty-magnet.com ty-tyre.com ty-xxl.com ty.ink ty1970.com ty2y.com ty360.com ty3w.net ty8621.com tybai.com tyboard.net tyc100.com tyc13804.com tyc13810.com tyc13867.com tyccdn888.com tychemical.com tychio.net tycimages.com tyclport.com tycqxs.com tycredit.com tydao.com tydcdn.com tydesyxx.com tydevice.com tydgas.com tydns.cc tyduanju.com tyeat.com tyeec.net tyepi.com tyfo.com tygameworld.com tygckj.com tyh120.com tyhjrbl.com tyhjzx.com tyi365.com tyihome.com tyjd.cc tyjnkj.com tyjsq.com tykd.com tykmedicines.com tylls.com tym001.com tymcdn.com tymotor.cc tyn.cc tynlwx.com tynxy.com tyorient.com tyouai.com typany.com type.so typecho.work typechodev.com typechx.com typeeasy.net typhoon.vip typicalchn.com typora.net typrotech.com tyqian.com tyqxzx.com tyrantg.com tyrbl.com tyrbw.com tyread.com tysdmh.com tysih.com tysj365.com tyst.cc tyszy.com tytgigty.com tytlj.com tytuyoo.com tytzy.com tytzyyy.com tytzzy.com tyuanlv.com tyust.net tyuyan.com tyuyan.net tywangcai.com tywbw.com tywh.com tywheels.com tywx.com tywxw.la tyxcdn.com tyxcdn.net tyy6.com tyymt.com tyzh.com tyzhjx.com tyzhyun.com tyzs8.com tyzspy.com tz-dsp.com tz-water.com tz100.com tz118802.com tz121.com tz12306.com tz1288.com tz13897.com tz13898.com tz1980.com tz2100.com tz777666.com tz8733.com tz887.com tz8966.com tz94.com tzada.com tzbank.com tzbank.net tzbao.com tzcpa.com tzcul.com tzcz.com tzedu.org tzfdc.com tzfeilu.com tzfeize.xyz tzfile.com tzgamepkg.com tzgcjie.com tzggzj.com tzgjjt.com tzgsjc.com tzhledu.net tzhospital.com tzhwcc.com tzjob.com tzjxl.com tzjyjt.com tzjz123.com tzjzsw.com tzkameng.com tzkciz.com tzlib.net tzlmt.com tzm66.com tzme.net tzmem.com tzpaper.com tzqby.com tzqingzhifeng.com tzqytv.com tzrc.com tzres.com tzrl.com tzsfhxx.com tzshipping.net tzsnw.com tzsports.com tzsti.com tzsucai.com tzswatch.com tzswfz.com tzsz.net tzszyy.com tztledu.com tztrq.com tztusi.com tzujian.com tzvec.com tzvtc.com tzwpco.com tzxingtang.com tzxwzx.com tzyiyuantuan.com tzyongda.com tzyun.com tzyy-sh.com tzyyao.com tzyyjt.com tzzhkj.com tzzhtc.com tzzls.com tzzp.com tzzszb.com tzzx.net u-camera.com u-carloan.com u-cdn.net u-con-dom.com u-con-dom.net u-lights.com u-link.org u-mro.com u-om.com u-qun.com u-road.com u-sharing.work u-softtech.com u-speedex.com u-workshop.com u.biz u.sb u.tools u005.com u0351.com u0537.com u062.com u10010.com u10086.com u14.com u148.net u17.com u17i.com u17t.com u1d1.com u21a.com u22e.com u235.net u2j2ha.com u2sz.com u3dc.com u3dcn.com u3dol.com u3v3.com u4u5.com u4u5.tv u51.com u51.me u520.net u58.com u581.com u5wan.com u69cn.com u6ex.com u72.net u78785.com u7u9.com u88.com u8ad.com u8e.com u8see.com u8sy.com u8yx.com u966.com u9baoku.xyz u9h.com u9time.com u9u8.com u9u9.com u9wan.com uabkrsj.xyz uahh.site uancf.com uandi-wireless.com uangee.com uao-online.com uao.so uascent-iot.com uatmrrvendor.com uauc.net uavtjxh.com uavvv.com uaxk.com ub-os.com ubaiyi.com ubangmang.com ubao.com ubc-bearing.com ubccn.com ubeethiesemo.com ubeihai.com ubesh.com ubestkid.com ubetween.com ubgame.com ubibibi.com ubicdn.com ubiquant.com ubismartparcel.com ubits.club ubixai.com ubixioe.com ubja.vip ublese.com ubmconlinereg.com ubmsinoexpo.com ubnt.com uboat100.com uborn.net uboxol.com ubs001.com ubssdic.com ubt.tripcdn.com ubtrobot.com ubuant.com ubuntukylin.com ubuuk.com ubuylogi.com uc-union.com uc108.com uc123.com uc129.com uc138.com uc1z.com uc2008.com uc23.net uc56.com uc666.com ucacc.com ucai123.com ucaiyun.com ucancs.com ucanrobot.com ucantech.com ucantech.net ucany.net ucarinc.com ucassc.com ucb6.com ucbug.com uccastore.com uccbikes.com uccpd.com ucdchina.com ucdok.com ucdrs.net ucfly.com ucgslb.com ucgslb.info ucgslb.net uchangdi.com uchiha.ltd uchis.com uchoice.cc uchuanbo.com ucicq.com ucigl.com ucjoy.com ucl0ud.com ucloud-edm.com ucloud365.com ucloudadmin.com ucloudapi.com ucloudgda.com ucloudnaming.com ucloudnaming.info ucloudnaming.net ucloudoss.com uclouds3.com ucloudstack.com ucloudstack.net ucloudstor.com ucloudufile.com ucly.net ucmmine.com ucnaming.com ucnaming.info ucnaming.net ucnano.com ucnest.com ucpaas.com ucpchina.com ucpopo.com ucren.com ucsanya.com ucss.ninja uctrac.com uctwydx.com ucun.tech ucuntech.com ucuuc.com ucw.pub ucweb.com ucxsw.com ucying.com uczzd.com uczzd.net udache.com udalogistic.com udamall.com udangjia.com udasauto.com udashi.com udbac.com udcgroup.com udcn.com uddtrip.com udecig.com udelivrs.com udeskcs.com udeskglobal.com udfspace.com udiannet.com udid.vin udns.dev udonmai.com udows.com udragons.com udream.com udrig.com udsdown.xyz udship.com udsstudio.com udxd.com uebilling.com uebuilder.net uecook.com ued1.com uedbet.bet uedbox.com uedna.com ueep.com ueeshop.com ueg.cc uehchina.com uehtml.com ueibo.com ueiibi.com uelike.com uemo.net ueno-china.com uenu.com ueoqex.help ueren.com uestcedu.com uestcliuxue.com uesw215.xin uetianshanyp.com ueuz.com uewaf.com uez.com uf-crm.com uf-tobacco.com ufancycase.com ufanw.com ufcap.com ufcs.com ufenqi.com ufhost.com ufhosted.com ufida-lcwy.com ufidaoa.com ufileos.com ufirefly.com ufizl.com ufkwm.com uflowx.com ufo.club ufo110.net ufoer.com ufojoy.com ufolm.com uformwater.com ufsoo.com ufyct.com ug.link ugainian.com ugapi.com ugapk.com ugbb.com ugc-up-dom.com ugc-up-dom.net ugdesk.com ugdocker.link ugdtimg.com uggame.com uggd.com ugirls.tv ugmars.com ugmjd.com ugnas.com ugnx.net ugo-china.com ugojp.com ugong.com ugoshop.com ugostar.com ugreen.cloud ugreengroup.com ugshare-img.com ugslb.com ugslb.info ugslb.net ugslb2.net ugsnx.com ugubl.net ugurl.cc ugxsd.com uhabo.com uhaom.com uhaozu.com uhasadmin.com uhcmu.com uhi02121uik.xyz uhi02130uik.xyz uhomecp.com uhomes.com uhomesplus.com uhouzz.com uhp.cc uhs68.com uhuibao.com uhuitong.com uhuocn.com uhut.com uhzcdn.com ui-lab.com ui100day.com ui63.com uibep.com uibhealthcare.com uibmm.com uicats.com uicmall.com uicom.net uid75.com uidec.com uidev.tech uidev.xyz uihacker.com uiiiuiii.com uijtcareers.cfd uik.cc uil.ink uileader.com uimix.com uincall.com uincall400.com uinchat.com uincom400.com uino.com uipaas-assets.com uipower.com uiren.net uisdc.com uisee.com uisheji.com uishijie.com uisnetwork.com uisrc.com uiste.com uit-sz.com uitab.com uitool.net uiu.cc uiuihub.com uiwow.com ujakn.com ujia007.com ujian.cc ujianchina.net ujiao.net ujiaoshou.com ujinbi.com ujing.online ujintan.com ujipin.com ujiuye.com ujmjk.com ujnfdfv.com uju365.com ujxs.com uk-edu.com uk-st.com ukanshu.com ukeban.com ukelink.com uker.net ukh5.com ukiea.com ukin-tech.com ukingtech.com uklga.work ukluhu.com ukongm.com ukonline2000.com ukoo.net ukosgolfcart.com ukpass.org ukpathway.com ukpayment.xin ukrainevisacenter.com uku6.com ukubang.com ukui.org ukupu.com ukusk12.com ukvisacenterd.com ukworldsale.com ulab360.com ulamps.com ulanzou.com ulapia.com ule.com ule.hk uleapp.com ulecdn.com uleek.net ulgrobot.com uliang.vip uliangwang.com uliaobao.com ulife.com ulife.group ulikecam.com ulikecam.mobi ulikecam.net ulikepic.com ulikestatic.com ulinix.com ulinix.tv ulinkcollege.com ulixirglobal.com ulpay.com ultracachenode.com ultraeda.com ultramanol.com ultrapay.net ultrarisc.com ultrasonice.com ulucu.com ulvac-shanghai.com ulvac-suzhou.com um.run umajor.net umaman.com umasoft.com umate.net umb.ink umbpay.com umc-ai.com umcloud.com umdac.com umeijiaju.com umeng.co umeng.com umeng100.com umengcloud.com umenglog.com umetal.com umetrip.com umexair.com umfintech.com umgg.biz umihome.com umindex.com uminsky.com umiplus.com umiwi.com umiwx.com umjicanvas.com uml-tech.com umlchina.com umlife.net umpay.com umpxkvtt.com ums86.com umsamd.com umsns.com umtrack.com umtrack0.com umtrack1.com umtrack2.com umv0.com umv5.com umva-china.com umvcard.com umvsoft.com un-bug.com un10086.com un1c0de.xyz una-ad.com una-campaign.com unachina.org unaming.info unaming.net unbank.info uncbd.com unccr.com uncfa.org uncitys.com uncle-ad.com uncle-chen.com unclecheers.com uncleda.com uncledesk.com unclenoway.com unclenoway.net unclenowayapi.com uncletalk.com unclicks.com uncoverman.com under-5.shop underfill.cc uneed.com uneede.com unfish.net ungifts.com uni-cent.com uni-forest.com uni-perfect.com uni-ubi.com unibeauty.net unibizp.com unicde.com unicloud.com unicloudgov.com unicloudsrv.com unicmicro.com unicom unicom-cz.com unicomgd.com unicomjnwy.com unicomlife.com unicompayment.com unicompayment.net unicompayment.org unicomtest.com unicon-hibar.com unietec.net unifl-networks.com uniflows.com unifound.net unifull.com unifuncs.com unifycarbon.com unigress.com uniham.net unihertz.com unilaw.net unilumin.com unimasdata.com unimtx.com uninf.com uninstall-tools.com uninto.com uniny.com union-4.com union-game.com union-net.com union-tio2.com union-wifi.com union178.com union400.com union555.com unioncom.cc unioncyber.net unionli.com unionpay.com unionpay.net unionpay95516.cc unionpayintl.com unionpaysecure.com unionsy.com uniontech.com uniostay.com uniow.com unipack-tech.com uniproud.com uniscope.com unisdigital.com unisedu.com unisemicon.com unisguard.com unishy.com unisiot.com unisoc.com unisonal.com unisound.com unispc.com unispim.com unissoft.com unistc.com unistrong.com unistrument.com uniswdc.com uniswl.com unitaxgd.com united-bearing.com united-imaging.com united-sqwater.com united-water.com unitedbank.ltd unitedds.com unitedmoney.com unitek-it.com unitemotor.com unitexlogistics.com uniteyun.com unithinker.com unitrans-agency.com unitrans-group.com unitree.com unitree.work unittec.com unitweld.com unitworld.net unitymanual.com unityonehold.com univ-bio.com university-hr.com uniview.com univista-isg.com univsport.com uniwaf.com unixhot.com unixidc.com unixtitan.net unjmz.com unjs.com unkzyy3201.vip unlcn.com unlgroup.com unlimax.com unlimithealth.com unlitui.com unmou.com unn114.com unncahs.net unnnnn.com unogenius.com unomedicalgroup.com unparts.net unpcn.com unpluggedatknight.com unpmcc.com unqu.com unsedu.com unsemi.com.tw unshan.com unspay.com unsuv.com untbbsdwarfs.com unvmax.com unwtonews.com unyx.com unzg.com uoboc.com uochen.com uodoo.com uodzhx.com uoeee.com uoevtxmx.com uoften.com uoj.ac uoko.com uokon.com uomg.com uomo.cc uonglong.store uonline-sh.com uonline-sh.net uono4521.com uonone.com uooconline.com uoolu.com uooss.com uoozi.com uoria.com uos56.com uostools.com uotoo.com uouin.com uouo123.com uovz.com up-et.com up-pharma-gx.com up-pharma.com up135.com up360.com up368.com up37.com up4dev.com up62.org up71.com upai.com upaidui.com upaiyun.com upanboot.com upanok.com upanshadu.com upantool.com upashance.com upbiao.com upbuilder.info upbz.net upc-cn.com upcave.com upcd.org upcdn.net upchina.com upchinapro.com upchinaproduct.com upd.kaspersky.com update1.cyou update2.cyou update8.com updeals.com updf.com updrv.com upe.net upecp.com upengyou.com upengyou.net upesn.com upetmart.com upfos.com uphicoo.com upho2015.com uphong.com upimgku.com upimgt.com upin.com upkao.com upkk.com upkuajing.com uplookedu.com uplooking.com upluck.cc upnono.com upowerchain.com uppershop.hk upppt.com upqzfile.com upqzfilebk.com uprimer.net ups.ksmobile.net ups001.com ups88.net upsapp.com upsclan.com upseller.com upskyshanghai.com upst86.com upsunet.com uptom.com uptougu.com upu-opt.com upupbug.com upupoo.com upupview.com upupw.net upvixusa.com upvr.net upwater.net upwith.me upx8.com upyun.com upzxt.com upzxt.net uq-express.com uqbike.com uqche.com uqee.com uqeegame.com uqiba.com uqidata.com uqidong.com uqidong.net uqipower.com uqite.com uqitong.com uqseo.com uqualities.com uqude.com uqulive.com uqz.com urart.cc urbanchina.org urbanfind.club urbanmatters.com urbansocialwork.org urbetter.com urbetter.net urbtix.hk urcb.com urcove-hotels.com urhimalayanak.com uri6.com uril6.com uriminzokkiri.com urit.com uritebio.com uritest.com uriwh.com url.cy urlos.com urlsecajog.com uroandrologyseries.com urocancer.org urology.wiki urongda.com urovo.com urovoworld.com urq7wvyumzfdi5.com urs-china.com ursb.me urselect.com urtrust.com urumqi-air.com urumqimarathon.com urumqimtr.com us-ex.com us-qianzheng.com us.ci us0.me usa-gam.com usa-idc.com usaapcups.com usaas.net usaedu.net usaeu.com usagoodclothes.com usalink.xyz usao8.com usaphoenixnews.com usapschool.com usashopcn.com usayouma.com usbing.com usbserver.com usbzh.com usbzl.com uschinagreenfund.com uscnk.com uscntv.com uscoin.gold usdcny.net usdtmall.com use-tencentclb.cloud use-tencentclb.com use-tencentclb.net use-tencentclb.work use-trust.com useasp.net useaudio.com usecubes.com uselesses.com usensejn.com userbp.com userhostting.com userresearch.net useryun.net useso.com ushaqi.com ushendu.com ushengame.com ushinef.com ushknews.com ushui.com ushui.net usidt.com using.club usingwin.com usinspirationfcg.com usitour.com usitrip.com usj.cc usjticketing.com uslawchina.com uslk.net usmile.com usn.cc usniuku.com usnook.com usocialplus.com usoftchina.com usoi.net usonetrip.com uspard.com usportnews.com usqiaobao.com usryinc.com usst.store ustack.com ustalk.com ustarl.com ustbtc.com ustc.edu ustcers.com ustui.com usuredata.com usus.ltd usuuu.com usw-tencentclb.cloud usw-tencentclb.com usw-tencentclb.net usw-tencentclb.work uszcn.com utan.com utanbaby.com utbon.com utc-ic.com utcbag.com utchk.org utctherapeutics.com utec.cc utecbj.com utecexpress.com utepo.com utermux.dev utfinancing.com utgd.net utiao.com utofairy.com utogame.com utom.design utoper.com utopiafar.com utoppromo.com utourworld.com utovr.com utrainee.com utransm.com utrustamc.com utsource.net uttjhu.xyz utuqafcr.com utvhk.com uu-baidu.com uu-proxy.com uu-xs.net uu.cc uu1.com uu11.com uu1314.com uu178.com uu22332.com uu375.com uu456.com uu66.com uu661.com uu6o.com uu89.com uu898.com uuaa.net uuaoz.com uucall.com uucc.cc uucin.com uucl.vip uucnn.com uucqrdmk.com uueasy.com uuedutech.com uufund.com uufuns.com uugai.com uugame.com uugtv.com uuhdedu.com uuhimalayanqm.com uuid.online uuimg.com uukkuu.com uuliaoning.com uulucky.com uulux.com uumachine.com uume.com uumeitu.com uumnu.com uunice.com uunt.com uuoog.com uupages.com uupan.net uupaotui.com uupaper.com uupei.com uupoop.com uupt.com uupython.com uus8.com uusama.com uusee.com uusense.com uusky.com uusoo.net uustory.com uustv.com uutils.com uutop.com uutrip.net uutytp.com uuu.ovh uuu9.com uuujjj.com uuulan.com uuumi.net uuuo.com uuusss.com uuutu.com uuvisa.com uuvps.com uuwldh.com uuwtq.com uuwx.la uuxlink.com uuxn.com uuxoo.com uuxs.info uuxs.tw uuyoyo.com uuzham.com uuzhufu.com uuzo.net uuzu.com uuzuonline.com uuzuonline.net uuzz.com uuzz.net uuzzw.com uv25h.com uvcdns.com uvledtek.com uvsec.com uvwhd.com uw3c.com uw9.net uwa4d.com uwan.com uwaysoft.com uwenku.com uwn.com uwntek.com uworter.com uwparking.com ux18.com ux87.com uxacn.com uxdc.net uxdzpmz.com uxiangzu.com uxianhu.com uxicp.com uxier.com uxin.com uxin001.com uxingroup.com uxiting.com uxiu.vip uxpi.net uxuncloud.com uy5.net uya04170okq.com uya04171okq.com uya04180okq.com uya04181okq.com uya04201okq.com uyan.cc uyang.co uyanip.com uyanke.com uycnr.com uyesee.com uygtbsmw.vip uyhjnm.com uyi2.com uyiban.com uyiqggpa.com uymfybcf.shop uyou.com uyouii.cool uyouqu.com uyshipin.com uyueread.com uyun-cdn.com uyunad.com uyunbaby.com uyuncdn.com uyuncdn.net uyunce.com uyunche.com uyuuy.xyz uzai.com uzaicdn.com uzhika.com uzhuangji.net uzing.net uzise.com uzkqymgs.com uzshare.com uzzf.com v-56.com v-jitp-dom.com v-jitp-dom.net v-jitp-glo.com v-jitp-glo.net v-mate.mobi v-simtone.com v-suan.com v-vay.com v.to v007.net v0719.com v11-360.org v114.com v15cdn.com v15i.com v1kf.com v1lady.com v1pin.com v1sj.com v1tx.com v1zhushou.com v2b3.com v2ex.cc v2kt.com v2vm.com v2xdatacenter.com v2xdatasource.com v2xengine.com v3.com v3best.com v3edu.org v3mh.com v4.cc v479.com v4dwkcv.com v5.cc v5.com v5.net v50307shvkaa.art v51124-3.qpon v51124-3a.qpon v51124.qpon v5875.com v5cg.com v5dun.net v5fox.com v5kf.com v5ppt.com v5shop.com v5tv.com v5waf.com v61.com v66v66.com v6c.cc v6eq34ykhek5.com v6lvs.com v6ok.com v78q.com v814.com v84tz11w7.com v89.com v8gb.com v977.com v9b5n91.com va-etong.com va05ex1.org vaakwe.com vaatn.com vacepcvu.com vacmic.com vadxq.com vaedu.net vaeliu.com vafox.net vaicdn.com vaillant99.com vailogchina.com vakku.com valiant-cn.com valinbl.com valinresources.com valogin.com valuablety.com valuablexmail.com value500.com valuecome.com valuedshow.com valuepr.net valueq-sea.com valueq.com valueur.com valurise.com valveshow.com valvewbg.com vamachina.com vamaker.com van-long.com vanbaolu.com vanbyte.com vance-commerce.com vanch.net vancheer.com vanchip.com vanchiptech.com vancl.com vanclimg.com vancss.com vanda.cc vandream.com vanform.com vangelinu.com vangotech.com vanguardstars.com vanjee.net vanjoin.com vankang.com vanke-hotels.com vanke.com vankeclub.com.hk vankeservice.com vankeservice.mobi vankeweekly.com vankeytech.com vanlinkon.com vanmai.com vanmatt.com vanokey.com vanqun.com vanrui.com vansungroup.com vanvi-cn.com vanvps.com vanward.com vanwardsmart.com vanyee.net vanzol.com vaopo.com vapepie-web.com vapps.me vaptcha.com vaptcha.net varchserverqa.com varena.com variflight.com varlt.com varmilo.com varsalmed.com vart.cc varygroup.com vasdgame.com vasee.com vaslco.com vasoon.com vastlandsc.com vastman.com vastsea.com vastteq.com vatech-china.com vattenvalve.com vauoo.com vautoshow.com vayakid.com vaydeer.com vayol.com vayuan.com vazyme.com vazymemedical.com vbaiu.com vbango.com vbaof.com vbaoxian-cib.com vbbobo.com vbc08090op.com vbc08100op.com vbc08101op.com vbidc.com vbio-pharma.com vbiquge.com vbkhk.com vbkrhk.com vbmnmy.com vbsemi.com vbyko.org vc800.com vcaif.com vcarepharmatech.com vcbeat.net vcc808.site vcchar.com vcd.io vcdnga.com vcg.com vchangyi.com vchiy.com vcimg.com vcinchina.com vckbase.com vclass.com vclbroker.com vclbrokers.com vcled.com vcloud-byte.com vcloudapi.com vcloudgtm.com vcloudlive.net vcloudstc.net vcloudvod.net vcltrade.com vclusters.com vcnews.com vcomic.com vcomputes.com vconew.com vconew3.com vcooline.com vcore.hk vcpdemo.com vcredit.com vcrfiw.lol vcsmemo.com vcspark.com vctianshanvs.com vctnepj.monster vcxpe.com vdaye.com vdbet.com vdfly.com vdiagnostic.com vdian.com vdisk.me vdjg65fh3ac-aw1u.com vdlya.com vdncache.com vdncloud.com vdndc.com vdnsv.com vdobiotech.com vdolady.com vdongchina.com vdson888.com vdyoo.com vdyoo.net ve-imcloud.com ve-trafficroute.com ve-trafficroute.net ve70.com vearne.cc vebaike.com vec-contracting.com vecentek.com veckinc.com veclightyear.com vecloudgame.com vecrp.com vector-engine.com vectorplaces.com vedamobi.com vedcdnlb.com vedeng.com veding.com vedsalb.com veecar.com veefdev.com veelink.com veeqi.net veer.com veervr.tv veeteam.com veevlink.com veew-alb-cn1.com veew-alb-cn2.com veew-alb-ts.com vefast-fa.com veg520.com vegalb.com vegslb.com vegtm.net veicplive.com veikei.com veilytech.com veinbase.com veirun.com veiso.vip veitor.net vejianzhan.com veken.com vekinerp.com velasx.com velep.com velledq.com velocaps.com velouras.shop vemarsdev.com vemarsstatic.com vemic.com vemte.com vemvm.com venbbs.com vendor-src-eo.com vendue.vip venlvcloud.com ventoy.net venucia.com venuscn.com venusgroup.asia venusmedtech.com venusong.site vephp.com veqxiu.net ver.cc vergilisme.com verify5.com verisilicon.com verisyno.com versa-ai.com versolsolar.com versoventure.com vertciot.com vertical-china.com vertu.com vertuonline.com very361.com veryapex.com veryark.com verycd.com verycdn.net verychem.com verydg.com verydoc.net verydu.net verydz.com veryevent.com verygrass.com verygslb.com verygslb.net veryhappy.pw veryhuo.com veryide.com veryim.com verykuai.com verym.com veryns.com veryok.net veryol.com verypan.com verysource.com verystar.net verysync.com veryvp.com veryweibo.com verywind.com veryxiang.com veryzhun.com ves100.com vestack-beta.com vestack-cicd.com vestack-preview.com vestack-sandbox.com vestack.cloud vesystem.com vetoolchain.com vetscloud.com vevor.net vevorstatic.com vez.me vf5c.com vfcdnrd.com vfcpay.com vfcsz.com vfe.cc vfinemusic.com vfocus.net vftfishing.com vfuiov.sbs vfuke.net vfund.org vfvdf.com vfx123.com vg.com vg173.com vgabc.com vgbaike.com vgctradeunion.com vghall.com vghimalayandm.com vghimalayanet.com vgjump.com vglook.com vgnclub.com vgoapp.com vgogbuy.com vgooo.com vgover.com vgoyun.com vgtime.com vgunxpkt.com vgvmotor.com vgyuhu.com vhall.com vhallyun.com vhao123.com vhengdata.com vhgu5ivtew.com vhiphop.com vhong.com vhostcp.com vhostgo.com vhshub.com vhsinsurtech.com vhxaw.com vhzhaopin.com vi-mayman.com vi1zen.com vi21.net vi586.com via-cert.com viablife.com viaeda.com vial.cc viarmour.com viayoo.com viberom.com vibrou.com vibunion.com vic18.com vicanquan.com vicbio.com vicchen.me vicigaming.com vicitymall.com vickn.com vicl.net vicome.com vicovico.com vicp.cc vicp.fun vicp.io vicp.net vicpalm.com vicpv.com vicrab.com vicsdf.com vicsz.com victoriassecretclearance.online victory-inflight.com victorybio.com viczz.com vid12060hl.com vida-bio.com viday.org videaba.com videasoft.com video-study.com video-voip.com video2b.com videocc.net videofty.com videohudong.com videohupu.com videoincloud.com videojj.com videomind.cloud videomind.net videoplus.cc videotomp3.site videougc.com videoxiaoyouxi.com videoyx.com vidmate.mobi vidmate.net vidmatefilm.org vidz.asia viecoo.com vieg.net vientao.com viewcoder.com viewstock.com viewtool.com viewtrans.com vifaka.com vigogroup.com vigorgb.com vigorousxy.com vigtel.com vigtm-meeting-tencent.com viigee.com viiixcpe.com viisan.com viitalk.com viixin.com vijingsmart.com vijos.org vijs.net vikduo.com vikecn.com vikilife.com vilives.com villachina.com villasbalirent.com viltd.com vim8.org vimage1.com vimage2.com vimage3.com vimage4.com vimdesign.com vimge.com vimicro.com vimiix.com vimin.cc vimiy.com vims04.com vimsky.com vin114.net vin17.com vincentqin.tech vinchin.com vindapaper.com vinehoo.com vinetreetents.com vingoojuice.com vinjn.com vinkdong.com vinlion.com vinsondata.com violetgo.com violinstudy.net violinww.com vip-chn.com vip-lexiang.com vip-vip-yzzy.com vip-wifi.com vip.com vip10000.club vip120.com vip1280.net vip150.com vip360.work vip3659k.com vip7337.com vip7787.com vip800.com vip8849.com vip9982.net vipabc.com vipabcyun.com vipappsina.com vipbaihe.com vipbcw.com vipbla.com vipbuluo.com vipcaocao.com vipchina.com vipcto.com vipdlt.com vipersaudio.com vipexam.org vipfashion.com vipfengfei.com vipfengxiao.com vipfenxiang.com vipfinal.com vipflonline.com vipglobal.hk vipgouyouhui.com vipgs.net vipgslb.com vipguanjia.net viphxw.com vipiao.com vipjingdong.com vipjinron.com vipjr.com vipkaoyan.net vipkid.com vipkidcdn.com vipkidresource.com vipkidstatic.com vipkj.net viplao.com vipleyuan.com vipliangmei.com viplux.com vipmaillist.com vipmalljf.com vipmro.com vipmro.net viponlyedu.com viposs.com vippapi.com vippluspai.com vipqdd.com vipqlz.com vipreading.com vips100.com vipshare.com vipshop.com vipshopyao.com vipshou.com vipsinaapp.com vipskill.com vipslib.com vipsmt.com vipsoft.cc vipsrc.com vipstatic.com vipstore.com viptijian.com vipwzswl.com vipxap.com vipxdns.com vipxdns.info vipxdns.net vipxf.com vipxs.la vipyl.com vipyyzz.com vipyz-cdn1.com vipzhuanli.com viqq.com virbox.com vircloud.net vireala.com vireala.net virosin.org virscan.org virtaicloud.com virtualevent.net virtualworld.pub virtupharmako.com virusdefender.net visa027.com visa163.com visa198.com visa800.com visaai.com visabao.com visacits.com visactor.com visadeguo.com visaforchina.org visaforkorea-bj.com visaforkorea-cd.com visaforkorea-gz.com visaforkorea-qd.com visaforkorea-sh.com visaforkorea-wh.com visahuanqiu.com visajx.com visanc.com visas.to visasoo.com visaun.com visbodyfit.com viscosefibre.com viseator.com visfarm.com vishavideo.com visheng.com vishoor.com visinextek.com vision-nj.com vision-systems-china.com visionandview.com visionarytech.ltd visionbbs.com visionchinashow.net visioncloudapi.com visionhacker.com visionly.org visionmax-sh.com visionstar-tech.com visionunion.com visionvera.com visirobot.com visitsanya.com visitsz.com viskem.com vismaasale.shop vismadeal.shop vista-china.net vista123.com vistahelmets.com vistastory.com visu-autotec.com visualchina.com visvachina.com visvn.com vitagou.com vitagou.hk vitalgen.com vitaloffice.life vitalxyz.com vitarn.com vitasoy-chn.com vitechliu.com viterbi-tech.com vitesexpo.com vitian.vip viu777.co vivaia.com vivaiaschweiz.com vivantecorp.com vivaylien.com vivcms.com vivebest.com vividict.com vivijk.com viviv.com viviwin.com vivo.com vivo.xyz vivoglobal.com vivojia.com vivojrkj.com vivokb.com vivosjpt.com vivotc.com viwik.com vixiu.com vixue.com viyouhui.com viyuan.com vizo-dns.com vjia.com vjianshen1688.com vjiazu.com vjie.com vjifen.com vjread.com vjshi.com vjtchina.com vk6.me vk8.co vkaijiang.com vkbaby.com vkehu.com vkemai.com vkjsq.com vkoolhf.com vkoopp.com vkoq4kyzmj.com vkrqtir.xyz vksir.zone vksoft.com vku6.com vkua.com vkxiazai.com vlabstatic.com vlabvod.com vlan.fun vland-official.com vlandgroup.com vlcable.com vliang.com vlight.me vlightv.com vlink.cc vlinkage.com vlinkapi.com vlinke.com vlion.mobi vlong.tv vlongbiz.com vlportal.download.prss.microsoft.com vlrzgf.sbs vlss.com vlssu.com vlwwu.com vm.sg vm7.com vm888.com vmaes.com vmall-hw.com vmall.cloud vmall.com vmallres.com vmanhua.com vmartaw.com vmax-lighting.com vmaxhome.com vmaya.com vmdns.xyz vmdo.net vmecum.com vmengblog.com vmeti.com vmic.xyz vmicloud.com vmiua.com vmkj.net vmlib.com vmoiver.com vmonkey.mobi vmovier.cc vmoviercdn.com vmsky.com vmtdf.com vmtnet.com vmuboh.com vmuhyu.site vmylan.com vnadssb.com vname.com vnanke.com vnet.com vnet.mobi vniddlg.xyz vnlin.com vnnox.com vnpy.com vnvn33.com vnzmi.com voa365.com vobao.com voc.ai vocalmiku.com voccdn.com vocinno.com vocotype.com vod-backup.net vod-bk-qcloud.com vod-content.com vod-content.net vod-eo.com vod-igtm.com vod-pro.com vod-qcloud.com vod-test.com vod-upload.com vodapis.com vodapisbk.com vodasafe.com voddlb.com vodecn.com vodehr.com vodeoapi.com vodeoapibk.com vodeointernal.com vodeshop.com vodinternal.com vodinternalbk.com vodjk.com vodn-valve.com vodone.com vodplayvideo.com vodplayvideo.net vodpro-upload.com vodpro-upload1.com vodpro-upload2.com vodpro-uploadbk.com vodtcbk.com vodxl-qcloud.com voguecafebeijing.com voguechinese.com voguelife.net vohringer.com voice9.com voicedic.com voicer.info voicer.me voidking.com vojs.tv vokop.com volc-dns.com volc-dns.net volc-dns.pub volc-embed.com volcadocean.com volcadvc.com volcalb.com volcanicengine.com volcano-force.com volcanospring.com volcautovod.com volcbiz.com volcca.com volccdn.com volccdn1.com volccdn2.com volccloudidentity.com volcddos.com volcddos001.com volcdem.com volcdn.com volcdns-test.com volcdns-test.net volcdns.com volcdns.pub volceapi.com volceapplog.com volcecr.com volcecw.com volcengine-dns.com volcengine-dns.net volcengine.com volcengine.net volcenginealb.com volcengineapi.com volcenginedns.com volcenginedns.net volcenginepaas.com volces.com volcfake.com volcfcdn.com volcfcdnbyte.com volcfcdndvs.com volcfcdndvs1.com volcfcdndvs2.com volcfcdnplus.com volcfcdnrd.com volcfcdnsc.com volcfxgjrtm.com volcgroup.com volcgslb-mlt.com volcgslb.com volcgtm.com volchina.com volciad.com volcimagex.com volcimagex.net volcimagextest.com volclivedvs.com volcmagicpage.com volcmcdn1.com volcmcdn2.com volcmcdn3.com volcmcdn4.com volcmcdnalias.com volcmgs.com volcmlt.com volcmusecdn.com volcocic.com volcopjrtm.com volcpartner.com volcpartner.net volcsirius.com volcsiriusbd.com volcspaceeduc.com volctracer.com volctrack.com volctraffic.com volctranscdn.com volcvideo.com volcvms.com volcvod.com volcwaf.com volcwaf001.com voldp.com voleai.com volic.download.prss.microsoft.com volit.com volkswagen-anhui.com volleyballchina.com volleychina.org voltmemo.com vomicer.com voming.com vommatec.com voneseals.com vonets.com vonng.com vonwei.com voo0.com vooct.com vooec.com vooedit.com voole.com voolea.com voolga.net voopoo.com voovlive.com voovlive.net voovmeeting.com voovnow.com vortexfun.com vot8.com vote001.com vote8.com votianxia.com voto.cc votwo.com voxlearning.com voxpie.com voycn.com vp6.co vpabrand.com vpal.com vpalstatic.com vpansou.com vpascare.com vpath.net vpay8.com vpbus.com vpcs.com vpea.ca vpgame.com vpgamecdn.com vpiaotong.com vpie.net vpimg1.com vpimg2.com vpimg3.com vpimg4.com vpkupfti.sbs vplay8.com vplayer.net vpmagic.com vpn39.com vpnsoft.net vpnvpn.com vpquc9rn.com vps-vacuum.com vps.dance vps.im vps234.com vps55.com vps911.com vpsaa.com vpsaa.net vpscang.com vpsce.com vpser.com vpser.net vpsguo.com vpshu.com vpsjxw.com vpsno.com vpsoff.net vpsor.com vpsplayer.com vpspurchase.com vpsss.net vpssw.com vpsvip.com vpsvsvps.com vpszh.com vptek.com vq7736.com vqaq.com vqjuice.com vqpwg.work vqq.com vqs.com vqu.show vqudo.com vqudochina.com vr-cat.com vr186.com vr2.tv vr42.com vrbeing.com vrbi.viveport.com vrbig.com vrbrothers.com vrbt.mobi vrcfo.com vrdiamondtools.com vrindabg.com vrjie.com vrmajor.com vrnew.com vrnos.com vrp3d.com vrpinea.com vrpowder.com vrqjcs.com vrqq.org vrrw.net vrtyg.com vrupup.com vrvlink.com vrvmanager.com vrwuhan.com vrzb.com vrzhijia.com vrzwk.com vrzwk.net vs-gascloud.com vs.cm vs2a.com vsaker.com vsamhos.com vsane.com vsaol.com vsbclub.com vsbuys.com vscode.download.prss.microsoft.com vscops.com vsean.net vsearch.club vsens.com vshangdaili.com vsharecloud.com vsharing.com vshoucang.com vsjwtcdn.com vslai.com vsnoon.com vsnoon.net vsnoon.org vsochina.com vsocloud.com vsoon.net vsooncat.com vsooncloud.com vsoontech.com vsping.com vspk.com vsread.com vssou.com vsszan.com vstarstatic.com vstart.net vstecs.com vstmv.com vstonefund.com vstonewealth.com vstou.com vsun.com vsx10.com vsxue.com vsyo.com vsyy.net vt-pharm.com vtache.com vtcsy.com vteamgroup.com vtears.com vtepai.com vtepai.net vtibet.com vtijian.com vtmyfbax.vip vtool.vip vtoshop.com vtoutiao.cc vtradex.com vtrois.com vtron.site vtstar.net vtuzx.com vtydgv.org vue-js.com vue88.com vuejs.press vuepush.com vuevideo.net vulbox.com vulcan.dl.playstation.net vulrange.com vultr1.com vultrcn.com vultrvps.com vumstar.com vunion.net vuphub.com vurl.fun vurl.link vurl.pro vurl.tech vurl3.vip vutimes.com vuz.me vv-tool.com vv.cc vv1628.cc vv27.com vv3111.com vv8.com vv881.com vv8yx.com vv91.com vv91.net vvbin.com vvebo.vip vvfeng.com vvgroup.com vvhan.com vvhunter.com vvic.com vving.vip vvipcdn.com vviptuangou.com vvjob.com vvlian.com vvmeiju.com vvo2o.com vvpgwg.xyz vvpncdn.com vvstc.com vvtor.com vvup.net vvvdj.com vvvtt.com vvxue.com vvzero.com vw888.com vwaycn.com vwe5pjt0jq.com vwhulian.com vwkbh1674.com vwo50.club vwvvwv.com vwwmsd.com vx56.com vxe.com vxia.net vxiaocheng.com vxiaoxin.com vxinyou.com vxixi.com vxo7tu.com vxocok3197.vip vxras.com vxsnk.com vxuepin.com vxuey.com vxv.ink vxwo.com vxxsfxxs.com vxxx.vip vycool.com vyin.com vynior.com vyuan8.com vz.download.prss.microsoft.com vz41.com vzan.cc vzan.com vzbvhfql.com vzhang.net vzhantong.com vzhifu.net vzhou.net vzhuanba.com vzhuji.com vzhuo.com vzhushou.com vzidc.com vzimu.net vzklb.com vzkoo.com vzone.me vzuu.com w-e.cc w-startech.com w-zhong.com w.biz w032.com w0663.com w0y.com w10a.com w10xitong.com w123w.com w18.net w1989.com w1b.com w218.com w2gou.com w2solo.com w333.com w3cbus.com w3ccoo.com w3cfba6ufr.com w3cfuns.com w3chtml.com w3cjava.com w3cplus.com w3cschool.cc w3ctalk.com w3ctech.com w3cways.com w3h5.com w3pop.com w3so.com w3techservices.com w3tool.com w3tt.com w3xue.com w5.com w61usi4a.org w6pdp.com w7.cc w7000.com w7ghost.net w918.com w9188wan.com wa5.com wa5as4.com waaaat.com waakee.com waaku.com waakuu.com waasee.com wabcw.info wabestdealmall.com wabuw.com wacai.com wacai365.com wacaijizhang.com wacaiyun.com wacaoren.net wacdn.com wader1714.com wadkj.com waduanzi.com wae-logistics.com waerfa.com waesedu.com waf-website.com waf.one wafatea.com wafcn.com wafunny.com wafzi.com wagen.cc wagonsclub.com waha.cc wahahakid.org waheaven.com wahlap.com wahlap.net wahsanggroup.com wahtaisz.com wahuto.com wahyao.com waibao123.com waibao12333.com waibaodashi.com waibou.com waifushangcheng.com waig8.com waigamer.com waigf.com waigi.org waiguofang.com waihui321.com waihui580.com waihui888.com waihuigu.net waihuo.com waiji.com wailaishop.com wailaizhe.com wailianluntan.com wailiantu.com wailianvisa.com waima.com waimai.com waimai.zone waimai101.com waimai361.com waimaimingtang.com waimaiwanjia.com waimaob2c.com waimaoniu.com waimaoniu.net waimaoribao.com waimaozhuge.com waimungfire.com wainconnector.com waipojia.com waipoxin.com waiqicha.com waiqin365.com waisnj.com waiting.monster waitingfy.com waitsun.com waiwmhsb.org waiyuedu.com waizaowang.com wajiquan.com wajueji.com wajufo.com wakeai.tech wakedata.com wakeofgods.com wakeup.fun wakingsands.com wakkaa.com wakuai.com wal8.com walanwalan.com walatao.com walekan.com wali.com wali123.com walibao.com walimaker.com walk-live.com walker-fan.com walkera.com walkingpad.com walkkind.com walknode.com walkthechat.com wallcoo.com wallcoo.net walle-web.io wallet.io walletio.io wallmatechina.com wallstcn.com wallstreetcn.com wallswitch.com walltu.com wallyt.net walre.com walsongreenhouse.com walton-xuzhou.com waltzsy.com waluer.com walvax.com wamawama.com wamila.com wan-ka.com wan.cc wan.com wan1234.com wan123x.com wan32.com wan5d.com wan68.com wan73.com wan77.com wan8.com wan886.com wan898.com wan95.com wanadalu.com wanandroid.com wanbaapp.com wanbexpress.com wanbgame.com wanbiao800.com wanbiaogs.com wanbiaohao.com wanbushu.com wanbuyu.com wancai.com wancaiinfo.com wancaomei.com wanchangerp.com wanchaohotels.com wanche100.com wanche168.com wanchemi.com wancheng168.com wanchengwenku.com wanchuweilai.com wanci.cc wancibp.com wancili.com wanda-cti.com wanda-gh.com wanda-group.com wandacinemas.com wandaclub.cc wandacm.com wandafilm.com wandahotelinvestment.com wandahotels.com wandanji.cc wandaph.com wandaplazas.com wandarealm.com wandavista.com wandawic.com wandhao.com wandhi.com wanding.net wandingwangluo.com wandipay.com wandodo.com wandoer.com wandongli.com wandoudou.com wandouip.com wandoujia.com wanduoduo.com waneziyuan.com wanfangche.com wanfangdata.com wanfangtech.com wanfangtech.net wanfantian.com wanfayun.com wanfoquan.com wanfucc.com wanfudaluye.com wanfukang.cc wanfuqianqiu.com wang wang-li.com wang-nan.com wang-russell.cc wang1314.com wang1314.net wanga.me wangaiche.com wangamela.com wangan.com wanganke.com wangbaobao.org wangbaobei.com wangbaoqiang-cloudcdn.com wangbixi.com wangcaio2o.com wangcaiwang.com wangcanmou.com wangchanggou.com wangchao.de wangchujiang.com wangchunsheng.com wangcms.com wangdafeed.com wangdahn.com wangdai114.com wangdai555.com wangdaibdt.com wangdaicaifu.com wangdaidongfang.com wangdaiguancha.com wangdaishikong.com wangdaisj.com wangdaitiandi.com wangdalao.com wangdali.net wangdaodao.com wangdianchaxun.com wangdianmaster.com wangdingchang321.xyz wangdingcup.com wangdongjie.com wangdu.site wangduanwifi.com wangeda.com wangeditor.com wangejiba.com wangfujing.com wanggongwang.com wanggou.com wangguai.com wanghaifeng.net wanghanyue.com wanghao.me wanghe.tv wanghong.zone wanghongluo.com wanghualang.com wanghuinet.com wanghz.com wangid.com wangjianshuo.com wangjiezhe.com wangjm.com wangjubao.com wangjumeng.xin wangjun.art wangjunwei.com wangkangzhong.com wangkewang.com wangkl.com wangkong.com wangle.com wangligroup.com wangling.net wanglingyue.com wanglong.com wanglu.info wangluoxiangmu.com wanglv.com wanglv.vip wangmei360.com wangmeng.com wangmingdaquan.cc wangmou.com wangniuwms.com wangpeiaiot.com wangpiao.com wangpiao.net wangpu.net wangqc.com wangqi.com wangqingzx.com wangren.com wangrunze.com wangshidi.com wangshitou.com wangshu.la wangshuashua.com wangshugu.com wangsu.com wangsu.net wangsucloud.com wangsuedge.com wangsuedge.net wangsutong.com wangt.cc wangtingrui.com wangtongtong.com wangtu.com wanguan.com wanguanwl.com wanguo-outlets.com wanguokang.com wanguotong.com wangwanglive.com wangwango.com wangweiluo.com wangwo.net wangxc.club wangxiangyule.com wangxianyuan.com wangxiao.net wangxiaobao.cc wangxiaobao.com wangxie.org wangxing.com wangxingcs.com wangxinhao.com wangxinlicai.com wangyangyang.vip wangyanpiano.com wangye6.com wangyeyixia.com wangyikai.com wangyin.com wangyinmao.com wangyou.com wangyou.ink wangyou2.com wangyouhangkong.com wangyuan.com wangyuedaojia.com wangyulue.com wangyunchuan.com wangyunf.com wangyuwang.com wangzhan123.net wangzhan31.com wangzhan360.com wangzhan5.com wangzhanbao.cc wangzhanbianji.com wangzhanchi.com wangzhantuiguang.net wangzhanzj.com wangzhe.com wangzhengzhen.com wangzhennan.com wangzherongyao.com wangzhuanz.com wanh5.com wanhea.com wanhebin.com wanheweb.com wanhi.com wanhongbao.com wanhongindigo.com wanhongji.com wanhu888.com wanhuabao.com wanhuaes.com wanhuahai.com wanhuajing.com wanhui365.com wanhuicar.com wanhuida888.com wanhuiya.com wanhumotor.com wanhunet.com wanimal1983.org wanjia.org wanjiacc.com wanjiachupin.com wanjiaiot.com wanjiashe.com wanjiashow.com wanjidashi.com wanjiedata.com wanjiedu.com wanjiejixie.com wanjing111.com wanjiquan.com wanjunshijie.com wanjutoy.com wanka5.com wankacn.com wankacn.net wankamall.com wanke123.com wanke798.com wanku.com wanlaiwang.com wanli.com wanli.org wanlian-group.com wanlicd.com wanliduo.com wanliniu.com wanlitong.com wanlongdianqi.com wanlongjituan.com wanmaco.com wanmei.com wanmei.net wanmeilink.com wanmeilr.com wanmeiyunjiao.com wanmi.com wanmingpiano.com wannaenergy.com wannaexpresso.com wanneng56.com wannengxiaoge.com wannengzj.com wannianli.mobi wannianli.net wannianli3.com wannianli7.com wannianli8.com wannianli9.com wannianqingjianzhan.com wannuoda.com wanplus.com wanpufeiliu.com wanqianyun.com wanqiula.com wanqutong.com wanren.com wanruihuanjing.com wanrungj.com wansanzu.com wansf.com wanshahao.com wanshancha.com wanshangding.com wanshanshuju.com wanshifu.com wanshifuapp.com wanshitong.com wanshouyou.net wanshu.com wanshuiqing.com wanshuiwater.com wanshulou.com wanshuyun.com wansixie.com wansongpu.com wansusyj.com want-want.com wantexe.com wantgame.net wantiangroup.com wantiku.com wantong-tech.net wantowan.com wantquotes.net wantuju.com wantumusic.com wantwords.net wantwu.com wantxt.cc wanwan4399.com wanwan88.com wanwang.com wanwang.space wanwang.xin wanweiedu.com wanweixin.com wanwu.com wanwudezhi.com wanwuelian.com wanwumall.com wanwusc.com wanwushuo.com wanwuxia.com wanwuzhinan.com wanxia.com wanxiangauto.com wanxiangleasing.com wanxiangqihang.com wanxiangyouxian.com wanxiaochu.com wanxie.cc wanxiquan.com wanyabox.com wanyan.com wanyanwang.com wanye.cc wanyi.pw wanyico.com wanyijizi.com wanyiwang.com wanyol.com wanyoo.com wanyouw.com wanyouxi.com wanyouxi7.com wanyr.com wanyuannews.com wanyuanxiang.com wanyuanyun.com wanyuenet.com wanyuhengtong.com wanyuhudong.com wanyujy.com wanyumi.com wanyunshuju.com wanyuproperty.com wanyuwang.com wanyx.com wanzaiwater.com wanzecc.com wanzhizr.com wanzhoujob.com wanzhoumls.com wanzhoumo.com wanzhua.com wanzhuang.com wanzhuangkj.com wanzhucdn.com wanzi.cc wanzi.com wanzia.com wanzjhb.com wanzuile.com waodown.com waoh.fun waoo.cc wapadv.com waptt.com waptw.com war-sky.com waralert.net warchina.com warcraftchina.com warframeofficial.com warhammertech.com warmchina121.com warmjar.com warnp.org warom.com warriorshoes.com warriortire.com warsk.com warsongmobile.com warstudy.com warsu.com warting.com waruixinxi.com warwww.com wasabi.fun wasair.com wasanfeng.com wasd.plus wasdj.com wasee.com washpayer.com washun.com washuw.com wasintek.com wasoinfo.com wasonchina.com wasu.com wasu.tv wasucnc.com watch-space.com watch-top.net watch1905.com watch4s.com watchadmin.com watchdios.com watchds.com watcheschep.com watchlead.com watchok.net watchreplica.co watchreplicaswiss.com watchrm.com watchshfw.com watchsos.com watchstor.com watchtop.com watchtraveler.com watchwxfw.com watchzb.com water-cube.com water520.com water8848.com waterchina.com waterdp.com waterdropfilter.com waterenping.com watergasheat.com watergdd.com waterjhh.com waterlytech.com watermc.org watershowcg.com watertek.com watertu.com wateryx.com watyuan.com wauee.com wauee.net wave-optics.com wavecn.com wavecommittee.com wavedsp.tech wavefront-optics.com waveopt.com waveshare.net waveup.work wavezones.com wavideo.tv wavpub.com wawacm.com wawayaya.net wawayu.tv wawlhld.com waxiaoxia.com waxpi.com waxrain.com waxxh.me way2solo.com wayboosz.com waycdn.com waycloud.info wayenbio.com wayhu.cc wayhu8.com waylon.online waynetechs.com wayos.com wayosbill.com wayoulegal.com wayoumi.com wayoxi.com waypons.com waysundata.com waytit.com waytoagi.com wayupss.store wayzim.com wazhuti.com wb133.com wb321.com wb521.net wb699.com wb86.com wbangdan.com wbanz.com wbb-electric.com wbbcdn.com wbcm55.com wbd99.com wbecrisfro.com wbeexpo.com wbgt.net wbh-sh.com wbhgwbnd.com wbiao.co wbiao.com wbiao120.com wbiaohome.com wbimg.com wbncp.com wbo529.com wboll.com wbolt.com wbpvc.com wbrks.com wbsdz.com wbstar.com wbsz.com wbt5.com wbtech.com wbtrans.com wbw.im wbwbwb.net wbxcx.net wbxinxi.com wbzd.net wc44.com wcansoft.com wcbygame.com wccbee.com wcccc.cc wccg.tech wcd.im wcdc.center wcfang.com wch-ic.com wch17.com wch666.com wchfgd.com wcjbb.com wcjbb.net wcjm.org wclbox.com wcloud.com wcode.net wcp.hk wcqjyw.com wcsapi.com wcsapi.net wcsfa.com wcsteasker.com wcuhdi.com wcwlmobi.com wcxjs.com wcxsw.com wcyecs.com wd-ljt.com wdace.com wdad.cc wdashi.com wdaveh5game.com wdazgscbxh2.com wddcn.com wddns.net wddream.com wdexam.com wdf1tz.com wdf1tz.net wdfangyi.com wdfxw.net wdgf.com wdghy.com wdiur.com wdiyi.com wdj21.com wdjimg.com wdjky.com wdkao.com wdklchina.com wdkmall.com wdku.net wdkud6.com wdldl.com wdmagnet.com wdmcake.com wdmuz.com wdmyksm.com wdnld.com wdomob.com wdpharma.com wdpower.com wdres.com wdsdjxh.com wdsj2.com wdsjz.com wdsk.net wdstory.com wdsz.net wdtec.cc wdtuishu.com wduw.com wdw88.com wdwd.com wdwlb.com wdxmzy.com wdxtub.com wdycenter.com wdyiyuan.com wdyserver.com wdyxgames.com wdyy.com wdzj.com wdzx.com we-ai.work we-pass.com we-vmaxgroup.com we.com we1130.com we123.com we2.name we278.com we2marry.com we378.com we4399.com we4game.com we54.com we556.com we7.cc weachat.net weadoc.com weakyon.com wealink.com weand.com weaoo.com weapp.com weapp.me weareing.store wearemanner.com weareqy.com wearesellers.com wearosbox.com weartrends.com weasing.com weatherat.com weathercn.com weatherdt.com weatherol.com weavatar.com weavi.com weaview.com web-rakouetnsei.net web-tinker.com web0518.com web0898.net web100.cc web176.com web1800.com web2008.com web2060.com web20share.com web265.net web3.xin web3389.com web360.pw web3caff.com web3gate.cc web3gate.io web3ling.com web3radio.com web89.net web930.com webacc.net webacg.com webadminsystem66.com webank.com webankapp.com webankcdn.net webanktcftp.net webankwealth.com webankwealthcdn.net webankwld.com webankwyd.com webarcx.com webcamx666.com webdissector.com webdns263.com webetter-ad.com webfalse.com webfont.com webfoss.com webfreecounter.com webfunny.com webfuwu.com webgame138.com webgame163.com webgamehome.com webgetstore.com webgzs.com webhek.com webiolotech.com webjike.com webjx.com webkaka.com webkdcdn.com webkf.net webkv.com webmaster.me webmaster5u.com webmulu.com webnovel.com webok.me webok.net webond.net webpackjs.com webportal.cc webportalapi.com webpower.asia webpowerchina.com webqxs.com webresource.tripcdn.com webrtc.win websaru.net websbook.com websec1.com websec1.net websem.cc webseo9.com webshao.com webshu.net websitecname.com websjcdn.com websjy.com websky.biz websocket-test.com websoso.com websztz.com webterren.com webtrncdn.com webui.fun webullbroker.com webuy.ai webuy.vip webview.tech webworker.tech webxgame.com webxin.com webyang.net webyounger.com webzzcdn.com wecanbio.com wecare-bio.com wecarepet.com wecash.net wecasting.com wecenter.com weceshi.com wechat.com wechat.design wechat.org wechat77.com wechatapp.com wechatapp.us wechatauthdemo.com wechatdevelop.com wechatify.net wechatlegal.com wechatlegal.net wechatmessenger.com wechatmessenger.us wechatpay-global.com wechatpay.com wechatpay.com.hk wechatpay.com.my weclassroom.com wecloud.io wecloudx.com wecom.work wecomput.com wecrm.com wecrm.net wecycling.com wed2008.com wed6.com wedate.me wedcm.com weddingeeos.com weddingos.com wedengta.com wedev.cool wedeveloper.com wedfairy.com wedn.net wedoany.com wedoctor.com wedoexpress.com wedolook.com wedooapp.com wedumedical.com weebei.com weebia.com weedo3d.org weedong.com weeet.com weefang.com weeiy.com weekus.com weelv.com weeqoo.com weeyun.com wefans.com wefinger.club wefitos.com weflywifi.com wefunol.com wegame.com wegameapi.com wegamedesign.com wegamedeveloper.com wegamemail.com wegameplus.com wegamex.com.hk wegdj.com wegene.com wego-healthcare.com wegooooo.com wehandbio.com wehefei.com wehelpwin.com weherepost.com wehichina.com wei-ben.com wei-li.com wei-ze.com wei2008.com wei6.com wei688.com weiaixiaoshuo.com weianet.com weiba66.com weibanan.com weibang.vip weibangong.com weibanzhushou.com weibo.com weibo.tv weibocdn.com weibochem.com weibohelper.com weiboi.com weibolj.com weibomingzi.com weibopay.com weiboreach.com weibosci.com weiboums.com weibowang.net weiboyi.com weibozn.com weibu.com weibusi.net weicaifu.com weicaixun.com weicewang.com weichai.com weichaipower.com weichaishi.com weichengchemical.com weicher-sz.com weichewl.com weichuanbo.com weichuangtech.com weichuming.com weico.cc weico.com weicogif.com weicon.cc weicot.com weicunmall.com weida888.com weidanbai.com weidanci.com weidansj.com weidaoliu.com weidian-inc.com weidian.cc weidian.com weidian.gg weidianfans.com weidiango.com weidianmishu.com weidianyuedu.com weidibio.com weidoufu.com weidown.com weidulinchang.com weiduruanjian.com weiengift.com weifengchina.com weifenghr.com weifengke.com weifengtang.com weifenpay.com weiforyou.net weifrom.com weifujd.com weigangdairy.com weigangqin.com weigaogroup.com weigaoholding.com weigaoyaoye.com weige2006.com weige55.com weighcb.com weighment.com weigongju.org weiguan.com weiguang.cc weiguanlaw.com weihai.tv weihaibsy.com weihaicollege.com weihaifengji.com weihaihaiwang.com weihaisheng.com weihaobang.com weihaoyi.com weiheshidai.com weihua-newmaterial.com weihua2.com weihuagroup.com weihubao.com weihuijob.com weihuitel.com weihulian.com weihuo.site weihz.net weii.cc weiixxin.com weijia1999.com weijiancloud.com weijianmen.com weijingzhijia.com weijinsuo.com weijiu.org weijiuxin.com weijizongbao.com weijj.com weijq.com weiju.net weijuju.com weikao.com weikaowu.com weikasen.com weike.fm weike21.com weikeimg.com weikelink.com weikengtech.com weikenhair.com weikeqi-biotech.com weikerifu.com weikuw.com weilai555.com weilaicaijing.com weilaili.com weilairzdb.com weilaishidai.com weilaitianwang.com weilaitianwang.info weilaitiku.com weilaiyunxiao.com weilaizhaiju.com weilaizhushou.com weilan.com weilan27.com weilandog.com weilanhaian.com weilanliuxue.com weilanwl.com weilayun.com weile.com weileapp.com weilegetu.com weilekuiming.com weilenicetime.com weileryiyt.com weiliangsport.com weilindct.com weiling520.com weilingapp.com weilinggame.com weilinovel.net weilitoutiao.net weilongshipin.com weimaelectric.com weimagroup.com weimai.com weimaitu.com weimaqi.net weimeigu.net weimeiyijing.com weimi24.com weimiaocaishang.com weimibio.com weimingchem.com weimingcq.com weimingedu.com weimingkids.com weimingxt.com weimisystem.com weimizhengxing.com weimob.com weimob.net weimobapp.com weimobcloud.com weimobdc.com weimobqa.com weimobwmc.com weimoka.com weinan.cc weinisongdu.com weinm.com weinuo.work weiot.net weipaitang.com weipe.vip weiphone.net weiphp.com weipinchu.com weiping.com weipu-he.com weipu.com weipu.live weipugroup.com weipuhj.com weiputek.com weiq.com weiqi.cc weiqiaocy.com weiqiaoyun.com weiqidaxing.com weiqiming.com weiqinfang.com weiqing120.com weiqingbao.cc weiqiok.com weiqitv.com weiquyx.com weiren.com weirenjob.com weiresearch.com weiribio.com weiruipai.net weisanyun.com weisay.com weishadian.com weishaizi.com weishan.cc weishan2015.com weishang99.net weishangagent.com weishangmh.com weishangshijie.com weishangtui.vip weishengrc.com weishi.com weishi016.com weishi024.com weishi100.com weishigz.com weishipin.com weishishuyuan.com weisiliang.com weismarts.com weistang.com weisuda.net weisurvey.com weisurvey.net weisuyun.com weisuyun.net weisyun.com weitehui.com weitietl.com weitiewang.com weitoupiao.com weituibao.com weitunit.com weituo.com weituobang.net weitupian.com weitushe.com weituya.com weiunity.com weivd.com weiwall.com weiwangpu.com weiwangvip.com weiwanjia.com weiweixiao.net weiweiyi.com weiwenjia.com weiwom.com weiwss.com weiwuhui.com weixianmanbu.com weixiaoduo.com weixiaohan.com weixiaoi.com weixiaoqu.com weixiaotong.com weixiaov.club weiximusic.com weixin-001.com weixin.com weixin12315.com weixinbang.com weixinbiaoqing.com weixinbridge.com weixincall.com weixindadang.com weixindevelop.com weixing.com weixingate.com weixingmap.com weixingon.com weixingongzuoshi.com weixingshexiangji.net weixingv.com weixinhost.com weixinhow.com weixinjia.net weixinjiajia.com weixinju.com weixinkd.com weixinmvp.com weixinnft.com weixinpy.com weixinqing.com weixinqn.com weixinqz.com weixinrensheng.com weixinsir.com weixinsxy.com weixinxx.com weixinyidu.com weixinyunduan.com weixistyle.com weixiu.name weixiu2.com weixiuchu.com weixiuka.com weixjn.com weixue100.com weixueyuan.net weixun.com weixun998.com weixuncj.com weixunyunduan.net weiyan.me weiyan000.com weiyangx.com weiyanjiang.com weiyapaper.com weiye-alu.com weiye.me weiyes.com weiyi.com weiyi.link weiyiqibj.com weiyitec.com weiyituku.com weiyituliao.com weiyiwangluo.com weiyoubot.com weiyours.com weiyouxi.com weiyu98.com weiyueliang.com weiyueread.com weiyun.com weiyun001.com weiyunchong.com weiyunfushi.com weiyunjian.com weiyuntop.com weiyunyingxiang.com weizhanabc.com weizhangjilu.com weizhangwang.com weizhanle.com weizhi.com weizhike.club weizhipin.com weizhishu.com weizhivet.com weizhoudaoly.com weizhuangfu.com weizhuanji.com weizoom.com weizunkj.com weja-hospital.com wejianzhan.com wejias.com wejizan.com wejizan.ink wejoydata.com weka.life wekbo.com weknow.io wekuo.com welain.com welansh.com welaw.com welchmat.com welcome-lt.com welcrm.com weledpower.com welefen.com weleve.com welfull.com welgwiyan.com weliads.com welian.com welidaimkt.com welife001.com welife100.com welinkpark.com welk.co well-dns.com well-js.com well-trust.com wellaide.com wellav.com wellcee.com wellhope.net welljoint.com welllinkio.com wellnj.com wellnode.com wellongmedical.com wellpie.com wellplas.com wellreach.com wells-shipping.com wellselectronic.com wellsepoxy.com wellsoon.com wellswam.com welltonhotel.com welltrend-edu.com wellwhales.com welove520.com welovead.com welqua.com welzek.com wemart.com wemdsm.com weme.fun wemeche.com wemediacn.com wemomo.com wemorefun.com wems.net wemtime.com wemvp.com wenai.net wenancehua.com wenancn.com wenandaquan.com wenangou.com wenanwang.com wenanzhe.com wenbagu.com wenbo.cc wenbofund.com wenbothinktank.com wencaischool.com wencan.com wenchain.com wenda1000.com wenda123.com wendabaike.com wendahu.com wendaifu.com wendal.net wendangdaquan.com wendangmao.net wendangwang.com wendangxiazai.com wendax.com wendaxiaowu.com wendns.com wendoc.com wendougee.com wendu.com wenduedu.com wendumao.com wenfangcn.com wenfangjushe.com wenfangnet.com wenfenggroup.com wengbi.com wengegroup.com wengem.com wengkui.com wengmeiling.com wenguang.com wenguangta.com wenguangzhineng.com wenguo.com wenhao123.com wenhaofan.com wenhetong.com wenhua.cc wenhuakejiao.com wenhualvyou.net wenhui.space wenidc.com wenjian.net wenjianbaike.com wenjiangbus.com wenjiangs.com wenjiasu.com wenjingnetwork.com wenjingzhai.com wenjiwu.com wenju666.com wenjuan.cc wenjuan.com wenjuan.link wenjuan.ltd wenjuan.net wenjuan.pub wenjuanba.com wenjuanbang.com wenjuanshow.com wenjuntech.com wenkaoba.com wenkeju.com wenku.in wenku.net wenku365.com wenku7.com wenku8.cc wenku8.com wenku8.net wenkub.com wenkudao.com wenkudaquan.com wenkunet.com wenkuvip.com wenkuwenku.com wenkuxiazai.net wenlc.com wenli-china.com wenlian123.com wenliangedu.com wenlvnews.com wenlvpai.com wenmeng.com wenmi114.com wenmingban.com wenneart.com wenpie.com wenqy.com wenroo.com wenrouge.com wenryxu.com wensang.com wensb.org wenshaktv.com wenshannet.com wenshen.net wenshenba.com wenshendaka.com wenshenku.com wenshenxiu.com wenshuba.com wenshubang.com wenshushu.com wensiluo.com wensli.com wenstech.com wensuocaster.com wentab.com wentihu.com wentiquan.net wentiyi.com wentong.com wenweipo.com wenwen.com wenwo.com wenwu8.com wenwuchina.com wenxiaha.com wenxiaobai.com wenxiaoyou.com wenxiaozhan.com wenxiaozhan.net wenxin-ge.com wenxinapp.com wenxingonline.com wenxiql.com wenxiu.com wenxuan.news wenxue100.com wenxue360.com wenxueapp.com wenxuedu.com wenxuem.com wenxuemi6.com wenxuemm.com wenxuesk.com wenxuesk.info wenxuesk.net wenxuesk.org wenxuetiandi.com wenyaguan.com wenyaqi.net wenyi188.com wenyijcc.com wenyoutai.com wenyouyun.com wenytao.com wenyu6.com wenyuanenviron.com wenyucdn.com wenyupages.com wenzaizhibo.com wenzhangba.com wenzhanghui.com wenzheng.club wenzhihuai.com wenzhouchayuan.com wenzhoushuke.com wenzhousx.com wenziyuan.com weoathome.com wepiao.com wepie.com wepieoa.com weplayapp.com weplaybubble.com weplayer.cc weplaymore.com weplus.com weproedu.com weq.me weqoocu.com werewolf.online werfactory.com werings.store werkai.com werlchem.com wesane.com wescrm.com wesdom.me weshaketv.com weshape3d.com weshine.im weshineapp.com wesiedu.com wesimiot.com wesing-game.com wesingapp.com west-motion.com west.xyz west263.com west95582.com west999.com westanpharma.com westaport.com westarcloud.com westbund.art westbund.com westchinago.com westcits.com weste.net westendwell.ca westfutu.com westinfosoft.com westingz.com westlake-vacuum.com westlakedata.com westlakegenetech.com westlakeinst.com westlakeomics.com westleadfund.com westmining.com westmininggroup.com westmonth.com westonecloud.com westpac.group westsecu.com westsh.com westsummitcap.com wesure100.com wetab.link wetest.host wetest.net wetest.org wetestlab.net wetherm.com weti.me weton.net wetools.com wetools.pro wetrial.com wetruetech.com wetry.shop wetuc.com wetv.vip wetvinfo.com weui.io weuschool.com wevul.com wewillpro.com wewinpe.com wework-pro.com wework-studio.com weworkcloudesk.com wewuhu.com wex5.com wex7.com wexcdn.com wexiaocheng.com wexin.com wey.com weyee.com weyesimg.com weyhd.com weyic.com weyo.me wezeit.com wezhan.hk wezhan.net wezhan.us wezhibo.net wezhibo.tv wezhicms.com wezhuiyi.com wezonet.com wf.pub wf121.com wf163.com wf66.com wfaozhuo.com wfbbs.com wfc805.com wfcgs.com wfdaily.com wfdata.club wfdj.net wfdqzx.com wfdsjls.com wfdyes.com wfeil.com wfek.com wff168.com wffc120.com wffms.com wfhbjg.com wfhlxy.com wfiltericf.com wfilterngf.com wfits.com wfjec.com wfjgzs.com wfjienuo.com wfjimg.com wfjsd.com wfjtjy.com wfkji.com wflgjx.com wflps.com wflushebei.com wfmzjscl.com wfrcsc.com wfsanshan.com wfshiliyy.com wfswjt.com wfsydzxyy.com wfsyzx.net wftdrh.com wftihvn.xyz wftvqcm.com wfuyu.com wfwzg.xyz wfy.pub wfzbjx.com wfzczdh.com wfzqhb.com wfzssz.com wg-views.com wg999.com wgc2025.com wgce.space wghai.net wghaos.com wghostk.com wghpdi.com wgimg.com wgl-group.com wglh.com wglm.net wgm66.com wgmf.com wgmotor.com wgnds.com wgoic.com wgos.com wgppt.com wgpsec.org wgtechjx.com wgxdxx.com wgxy.com wgxy.net wgy.cc wh-anhua.com wh-aojie.com wh-badges.com wh-baidu.com wh-bus.com wh-charity.com wh-china.com wh-dongjiang.com wh-haipu.com wh-hsun.com wh-motorshow.com wh-mx.com wh-swhj.com wh-yuanhang.com wh10000.com wh100idc.com wh111.com wh119.com wh12345szzx.com wh50.com wh5yy.com wh6yy.com wh6z.com wh702g.ren whabl.net whaee.com whafxh.org whagcg.com whairport.com whale-king.com whale-plus.com whale123.com whalecloud.com whalefall.space whaleskts.com whalet.com whaleunique.com whalipaycs.com whampoa-design.com whatbuytoday.com whatchina.com whatfugui.com whatsns.com whatswebyuo.com whattheybuy.com whaudio.com whbahyxh.com whbaishitong.com whbbs.com whbc2000.com whbcrs.com whbear.com whbec.com whbester.com whbgdt.com whbgy.net whbhst.com whbj88.com whbjdn.com whbts.com whbuilding.com whbwj.com whbws.com whbx.org whcaijing.net whcat.net whcbank.com whcbd.net whcbs.com whccb.com whcch802.com whcdc.org whcdwater.com whcfjsjt.com whcfjt.com whcfs.org whcgtx.com whchem.com whchip.com whcibe.com whcjfc.com whcjfq.com whcjkq.com whcotton.com whcqedu.com whcsfzjt.com whcst.com whcsyc.com whctcii.com whctfcjt.com whctjg.com whctv.com whcx.group whcx365.com whcyit.com whdayy.com whdckj.com whdhgd.com whdjxx.com whdlfu.com whdlkj.com whdonde.com whdqhj.com whdrawing.com whdsck.com whdsyy.com whdxhzx.com whec-tencentclb.cloud whec-tencentclb.com whec-tencentclb.net whec-tencentclb.work whecb.com whecloud.com whecn.com whedu.net whee.com whenchat.net whenever-online.com wherexpress.com wherxian.com whetc.com whevt.com whewash.com whfamous.com whfanyi.com whfazun.com whfeiyou.com whfengli.com whfilter.com whfles.com whfmg.org whfph.com whgas.com whgayy.com whgdgjt.com whggjk.com whggjtjs.com whggvc.net whggzc.com whgh.org whghjt.com whgjzt.com whgk.com whglkf.com whgmbwg.com whgnjt.com whgnyy.com whgtgh.com whguangguyun.com whguanshan.com whguo.com whgwbn.net whgyt.com whhaifang.com whhaiyue.com whhdcz.com whhdgk.com whhdjzzl.com whhdky.com whhdmt.com whhengchang.com whhexin.com whhhealth.com whhhxy.com whhjjt.com whhjpharm.com whhkbyg.com whhkgjt.com whhksj.com whhmgroup.com whhmmbl.com whhouse.com whhpaccp.com whhr.com whhryd.com whhsg.com whhtjg.com whhtjt.com whhtyl.com whhuatian.com whhuayou.com whhxi.com whhxnz.com whhxyk.com whhykg.com whhysound.com whhyyy.com whhzhn.com whhztcm.com whhzyj.com whib.com whicec.com whichmba.net whicu.com whidc.com whidf.com whidy.net whiee.com whiie-expo.com whimsywarpgame.cc whinfo.net whir.net whisperto.net white-collar.net white-dolphin.com whitebox.im whitecat.com whitecdnx.com whitegem.net whitemedia-china.com whiteswanhotels.com whizen.com whjaco.com whjbh.com whjclgs.com whjdsjfkdfd.cfd whjf.com whjh120.com whjhb.org whjiahai.com whjiaoy.com whjinlong.com whjjhbj.com whjkcj.com whjkct.com whjksyxx.com whjldj.com whjm.com whjrjjt.com whjrjt.com whjrjy.com whjst.com whjsxx.com whjtjt.com whjuren.com whjxbaby.com whjy.net whjylh.com whjyx.com whjyxh.com whjyxx.com whjzxh.com whjzxx.com whjzy.net whjzyxh.org whk.hk whkakaxi.com whkc.com whkcy.com whkingdom.com whkjdxyy.com whkjz.com whkqd.com whkxzl.com whkykj.com whlabor.com whland.com whlangxing.com whleishen.com whlexue.com whlgchache.com whlib.com whlido.com whljyl.com whlkwy.com whlovehome.com whlpa.com whlrhd.com whlynk.com whmama.com whmc2005.com whmdedu.com whmeigao.com whmf8.com whminwei.com whmj.org whmlcy.net whmnls.com whmnrc.com whmnx.com whmoocs.com whmvc.net whmxrj.com whmylike.cc whmylikekq.com whmzkf.com whnewcando.com whnfc.com whnyd.com who.cx who2o.com whoami.akamai.net whoiscx.com whoisreminder.net whoisspy.ai wholefreshposts.com whongtec.com whoolala.com whooyan.com whoregamer.com whovii.com whpantosoft.com whpanva.com whpcschool.com whphbc.com whplmd.com whpma.org whptc.org whpx.net whqcbj.com whqcpx.com whqcst.com whqianxing.com whqjjt.com whqtdjy.com whqtgqbwg.com whqunyu.com whqyw.com whrango.com whrayy.com whrazf.com whrcbank.com whrenai.com whres.net whrhkj.com whrj.com whrl.net whrsip.com whrszx.com whrtmpay.com whrtyycg.com whsctgs.com whsdhyy.com whsdsyy.com whsgj.com whsgyy.com whsir.com whsjfs.com whsjytyy.com whskq.com whsladz.com whsladz.net whsmzc.com whsql.org whsrc.com whsthjtzjt.com whsundata.com whsw.net whswcyy.com whswx.com whsxsy88.com whsy.org whsyy.net whszniao.com whtaxi.com whtbglass.com whtbgroup.com whtbq.com whtcm.com whtcsz.com whtdcb.com whtdlx.com whtdsc.com whtfzy.com whthgy.com whtime.net whtmhh.com whtongyun.com whtonhe.com whtpgbyy.com whtpi.com whtpyy.com whtpyzx.com whtran.com whtryg.com whtryine.com whtsapp-part.team whtto.com whttsy.com whtuff.com whtxcloud.com whtzb.org whu-cveo.com whu.pt whualong.com whucopm.com whudfr.com whudows.com whuh.com whuhzzs.com whulabs.com whulc.com whunitedvet.com whuss.com whut-px.com whutech.com whuznhmedj.com whvkk.com whvms.com whwanshun.com whwat.com whwater.com whwd.com whwdky.com whweb.net whwebsite.com whweiying.com whweo.com whwgcm.com whwindplus.com whwjnwn522.vip whwkzc.com whwm.net whwm.org whwomensmarathon.com whwtqx.com whwuyan.com whwx2018.com whwxxy.com whwz.com whx0621.com whxcepc.com whxcy.com whxh.com whxhdn.com whxrjt.com whxsdn.com whxunw.com whxwxzxc.com whxy.net whxysz.net whybh2015.com whycan.com whycw.com whyec.com whyenjoy.com whyesi.fun whyestar.com whyicheng.com whyimingkeji.com whyinzhimei.com whyiqitong.com whyky.com whyongwei.com whyrtc.com whys558.com whysb.org whysdomain.com whyshop.com whysodiao.com whysw.org whysx.com whysxc2c.com whyun.com whyuntai.com whyunzhou.fun whyushang.com whyyhy.com whyyjt.com whyyy.com whyzrcb.com whzb.com whzbdw.com whzc2008.com whzdyy.com whzglc.com whzh-cw.com whzhanyi.com whzhaopin.net whzhjty.com whzhongzhi.com whzhtd.com whzhzxmr.com whzjyy.com whzjzxy.com whzkb.com whzph.com whzsrc.com whzszy.com whzwzk.com whzwzs.com whzxht.com whzxzls.com whzydz.com whzys.com whzzhb.com wibaidu.com wicep.com wicp.net wicp.vip wicresoft.com widgetable.net widuu.com wietone.com wifenxiao.com wifi.com wifi188.com wifi33.com wifi6667.com wifi8.com wifiapi.net wifibanlv.com wifichain.com wificstia.com wifidog.pro wifidown.com wifigx.com wifihell.com wifijy.com wifilu.com wifimsl.com wifinew.com wifinews.com wifiniu.com wifire.net wifisdk.net wifishenqi.com wifivpn.net wifiwx.com wifizj.com wifussion.com wigenbio.com wiicha.com wiihey.com wiihg.com wiinkle.com wiiteer.com wiitrans.com wiiun.com wiiyi.com wikicaring.com wikiexpo.com wikiimgs.com wikimbti.com wikipediaxx.icu wildcardx.net wilddog.com wilddream.net wildfire.work wildfirechat.net wildgun.net wildhorde.com wildto.com wildwind.com wildwindpharm.com wilhb.com willapps.com willcdn.com williameva.com williamslullaby.com willingchem.com willingchina.com willnanobio.com willsemi.com willsfitness.net willwin91.com wiloon.com wimetro.com wimiar.com win-haoxiang-win.com win-ke.com win-man.com win007.com win1032.com win1064.com win10cjb.com win10com.com win10d.com win10gw.com win10h.com win10net.com win10set.com win10w.net win10win.com win10world.com win10ww.com win10xitong.com win10zyb.com win3000.com win310.com win4000.com win71234.com win7china.com win7en.com win7qijian.com win7qjb.com win7xzb.com win8.net win866.com win8china.com win8e.com win8xiazai.com winallseed.com winasdaq.com winature.com winbaicai.com winbaoxian.com winbjb.com winbond-ic.com winbons.com winbywin.com wincellchina.com wincheers.com wincheers.net wincologistics.com wincome.group wincomn.com wincoprint.net wind.ink wind.moe windaka.com windbg.download.prss.microsoft.com windcoder.com windesign.cc windeyenergy.com windfone.com windfonts.com windin.com windmsn.com windoor168.com windows10.pro windows10zj.com windows11.pro windows7en.com windowstool.net windowszj.com windpayer.com winds.red windsbridge.com windsns.com windspeedbike.com windtch.com windtourgame.com wine-world.com wine9.com winebar-pur.com winegame.net winekee.com winemagz.com winenice.com wines-info.com winesinfo.com winesou.com wineworld.vip winex-hk.com winex-sh.com winfang.com winfreeinfo.com wing-cafe.com wing-id.com wing-max.com wingconn.com winglinetrans.com winglungbank.com wingmob.com wingon-travel.com wingtecher.com winheadhunter.com winhealth.hk winhealthgroups.com winhlb.com winhong.com winicssec.com winjoinit.com winkingworks.com winkkie.com winksi.com winlongtech.com winmoes.com winndoo.com winner-hitech.com winner-rbt.com winner9.com winnerholding.com winnermicro.com winnerracing.com winnerway.com winnet.cc winningdq.com winos.me winotes.net winotmk.com winowe.com winpe.cc winpex-cn.com winpexgroup.com winrim.com winrobot360.com winsalesaas.com winsenseos.com winshang.com winshangdata.com winsing.net winspay.com winstandard.com winstoncc.com winsui.com winsun3d.com winsurface.com wintalent.com wintaosaas.com winteam500.com wintech-nano.com wintechchina.com wintimechina.com winto100.com wintodoor.com wintom.net wintooo.com wintopedu.com wintrueholding.com wintxt.com winvk.com winvod.com winvvv.com winwebmail.com winwin-co.com winwin-hotel.com winwin7.com winwinchemical.com winxiang.com winxp8.com winxuan.com winxuancdn.com winyoungreading.com winziss.com winzonelaw.com wio2o.com wiot.host wipanda.com wipcc.org wireless-driver.com wireless-tag.com wirelesschina-summit.com wiremesh001.com wiremeshforfilter.com wirlesshare.com wis-park.com wisbiom.com wisburg.com wiscargo.com wischina.org wisder.net wisdoing.com wisdom-braun.com wisdomcmmi.com wisdomep.com wisdompharma.com wisdomwz.com wisdontech.com wisdri.com wise-iot.com wise99.com wiseah.com wiseasy.com wisebond.net wisecity.net wisecotech.com wisedoo.com wisedsp.net wisedu.com wiseetec.com wisefx.com wisegotech.com wiseimp.com wisekingsurgical.com wiselong.cc wiselong.com wisenjoy.com wisentbioproductschina.com wiseqx.com wiseuc.com wisevector.com wisewatercloud.com wish-hightech.com wish3d.com wishcad.com wishdown.com wishisp.com wishtec.com wisiyilink.com wison-engineering.com wison.com wispower.com wisrc.com wistapharma.com wistone.com wiswonder.com wit-parking.com wit0.com witcp.com witersen.com with366.com withcdn.com withmedia.net withoutpain.net withpinbox.com withqiuliang.com withwheat.com withwinds.com withzz.com witintech.com witkeyschool.com witmart.net witnew.net witontek.com witrn.com witspring.com wittf.ink wityx.com wiwide.com wiwide.net wixdigital.com wiyun.com wiz03.com wizitek.com wizsci.com wj-chem.com wj-hospital.com wj-hr.com wj-lean.com wj-park.com wj001.com wj0556.com wj166.com wjacloud.com wjajw.com wjasset.com wjbfwzx.com wjccx.com wjcd.net wjceo.com wjcjt.com wjctg.com wjdaily.com wjdhcms.com wjdiy.com wjdiy.net wjedu.net wjeryuan.com wjfcw.com wjfilm.com wjgdyy.com wjgglm.com wjgslb.com wjhh666.com wjhotelgroup.com wjhouses.com wjhr.net wjhtxx.com wjiaxing.com wjin.cc wjinmiao.com wjjfjt.com wjjyxxw.com wjkjxcx.com wjlxmedia.com wjmh8.com wjnin.cc wjqcw.com wjqwy.com wjqyw.com wjrcb.com wjs.com wjshw.com wjsldy.com wjsms.net wjsw.com wjtr.com wjttl.com wjtzyg.com wjvusw.shop wjwuqiang.com wjx.com wjxcdn.com wjy01.com wjyanghu.com wjyh.com wjyt-china.org wjyw.com wjzp.cc wjzpgz.com wk2.com wk515.com wk78.com wka8.com wkai.cc wkandian.com wkanx.com wkbins.com wkbrowser.com wkcw.net wkddkyy.com wkdimg.com wkdty.com wkepu.com wkhub.com wkimg.com wkjhd.com wkkshu.com wklken.me wkmic.com wknky1296.com wkopen.com wkread.com wksc.com wkshipark.com wktfkj.com wktline.com wkwl9.com wkxxw.com wkyx520.com wkzf.com wkzk.com wkzstencent.com wkzuche.com wkzw.me wl369.com wl890.com wlaforum.com wlai.vip wlaiy.com wlanadmin.com wlanbanlv.com wlcbnews.com wlcbw.com wlcxx.com wldbs.com wldlr.com wldmarket.com wlds.net wldsb.com wldservice.com wlerp.com wlfce.com wlfimms.com wlgkk.com wlgooo.com wlgou.com wlhcc.com wlhyjx.com wlhyxh.com wlinfor.com wljhealth.com wljyyjy.com wlkgo.com wlkst.com wlku.com wll-xyz.com wllxcl.com wllxx.com wllxy.net wlmf.vip wlmq.com wlmqedu.com wlmqhytd.com wlmqrc.com wlmqrsks.com wlmqwb.com wlmqxht.com wlnh.net wlnkaep.xyz wlnmp.com wlnnosu.xyz wlol.com wlphp.com wlplove.com wlpmmm.store wlqtpolytheatre.com wlrcw.com wlsgjslgy.com wlski.com wlstock.com wlsx.net wltieyaoban.com wltong.com wluotx.com wlw-jcdlcxzx.com wlwj.com wlwltech.com wlwx.com wlwx.la wlwx.org wlxit.com wlxmall.com wlxtbj.com wlxww.com wlyfw.com wlyjbl.com wlyongli.com wlysjt.com wlyyjt.com wlzni.com wlzp.com wlzp.vip wlzz666.com wm-dream.vip wm-imotor.com wm-motor.com wm090.com wm18.com wm23.com wmathor.com wmb2b.com wmbluegame.com wmc-bj.net wmc-gba.net wmc95588.com wmcloud.com wmcn.com wmdang.com wmfanyi.com wmhcn.net wmiao.com wmidgroup.com wmimg.com wming.com wmintl.com wmiyx.com wmjk.net wmjrc.com wmjt.net wmjygg.net wmjyqd.net wmjyszba.com wmksj.com wmlip.com wmnetwork.cc wmok.com wmp169.com wmphp.com wmpic.me wmproxy.net wmpvp.com wmpyol.com wmqt.net wmqzyyy.com wms100.com wmsjsteam.com wmsjyun.com wmslz.com wmsub.com wmupd.com wmvideo.com wmviv.com wmwm.com wmxba.com wmxcjj.com wmxke.com wmxpro.com wmxue.com wmxxgy.com wmxxgz.com wmxxwh.com wmxxxj.com wmy-ad.com wmyqdmm.com wmzhe.com wmzkt.com wmzp.cc wmzyw.com wn1998.com wn51.com wn789.com wnark.com wnbsq.com wnchengtou.com wncpp.net wndj.net wndoor.com wndroid.com wnevia.com wnform.com wnhuifu.com wniec.com wniecm.com wnjdtz.com wnkbyon.com wnkj88.com wnlbs.com wnllx.com wnlpromain.com wnlproyunying.com wnlprozhanxing.com wnlprozijia.com wnluo.com wnlwedu.com wnnyjx.com wnote.com wnp.com wnplayer.net wnqapp.com wnqianbao.com wnrb.net wnrcw.com wns8181.com wns888.com wns8888.com wns99938.com wnshouhu.com wnspic.com wnspicbk.com wnsqzone.com wnsqzonebk.com wnssedu.com wnszxyy.com wntool.com wntzjt.com wnuos.com wnwb.com wnxfs.com wnylyx.com wnzc.com wnzctc.com wnzhbb.com wnzy.net wo-smart.com wo-voyage.com wo.cc wo116114.com wo186.tv wo1wan.com wo685.com wo87.com woa.com woaap.com woai310.com woaidu.org woaihaoyouxi.com woaihuahua.com woaihuoshan.com woaipu.com woaiseo.net woaishouban.com woaivps.com woaixiao.com woaiyt.com woaizhitu.com woaizr.com woaizuji.com woaoo.net woaoocdn.com wobaif.com wobangzhao.com wobeili.com wobocn.com wobu2.com woc.space woc88.com wocaoseo.net wochacha.com wochaw.com woda.com wodasi.com wodavip.com wode.bid wode.im wodeabc.com wodecaipu.com wodecrowd.com wodecun.com wodedagong.com wodeev.com wodegongzi.com wodescw.com wodeshebao.com wodeshucheng.com wodeweiquan.com wodeyt.com wodidashi.com wodingche.com wodjob.com wodocx.com wodown.com wodu518.com wodunyun.com woeoo.com wofan.net wofang.com wofangwang.com wofficebox.com wofjhs.com wofuwater.com wogame.net wogaosuni.com wogg.net wogoo.com wohenizaiyiqi.com woheschool.com wohst8.com wohuishou.club woi3d.com woiauto.com woiles.com woiwrj.com woiyu.com wojiacloud.com wojiaoni.com wojiuhuanle.com wok.com wokaola.com wokeji.com wokende.com wokew.com woko.cc wol.tv wolai.com wolaidai.com wolansw.com wolegou.net wolei-tech.com wolezhibo.com wolf.cc wolfbolin.com wolfcstech.com wolfgo.com wolfguandan-01.com wolfguandan-02.com wolfguandan-03.com wolfguandan-04.com wolfguandan-05.com wolfogre.com wolianw.com wolidou.com wolife.com wolighting.com woliuda.com wologic.net wolong-beng.com wolong.com wolonge.com wolongge.com wolongmedia.com wolongyin.com wolongyoule.com wolunliuliangji.org wolwo.ltd wolwobiotech.com wom186.com womai.com womaiapp.com womailink.com woman91.com womanforces.com womanfriend.com womei.org womeifilm.com womeimenye.com women-heart.com womenjie.com womenofchina.com wonadea.com wonder-link.net wonder.wiki wondercv.com wonderful-pr.com wonderfulnonwoven.com wonderfulsz.com wonderjk.com wonderkun.cc wonderscloud.com wondersgroup.com wondershare.cc wondershare.com wondershare.com.br wondershare.jp wondershare.net wondersmemory.com wonderstar027.com wonderyouxi.com wondko.com wonengxing588.com wonflavour.com wonfulplaza.com wongcw.com wongpeace.com woniu.com woniu8.com woniubaoxian.com woniucloud.com woniuge.com woniugm.com woniuhuoche.com woniupai.net woniutrip.com wonjarobot.com wonmay.com wonmay.net wonnder.com wononme.com wonote.com wonpearl.com wonplug.net woo.im wood-china.com wood168.net wood888.net woodbridgebath.com woodbunny.com woodchina.com woodnn.com woodsbrosrental.com woodu.me woofee-laser.com wooffice.net wooide.com woola.net wooltex.org wooolab.com wooomooo.com wooqx.com woordee.com woosiyuan.com woosmart.com woowtcprc.com wooxhome.com wooyun.org woozooo.com wopaiyi.com wopaw.com wopop.com wopti.net wopus.org woqifoundation.com woqu.com woquyun.com word666.com wordfc.com wordlm.com wordplay.work wordpress.la wordscan.net wordscheck.com wordstorming.com wordsunny.com workbenchapi.com workchat.com workec.com workehr.com workerman.net workhelpmanila.com workpcb.com worksoho.com worktile.com worktilemail.com workyun.com world-machining.com world-pet.org world3dmodel.com world68.com worldbangmai.com worldbearingshub.com worldbuy.cc worldcps.com worldfcdn.com worldgoodvoices.com worldh5.com worldhello.net worldhotel.com worldhub.market worldinout.com worldjiasu.com worldmr.net worldnyjx.com worldpathclinic.com worldpowerliftingchina.com worldrobotconference.com worlds-slotsimulator.com worldsteel.net worlduc.com worldwarner.com worldwayhk.com worldwu.com wort.cloud worthgarden.com worthtech.net woruide.net worxperience.com wosai-inc.com wosaimg.com wosenmedia.com woshanit.com woshao.com woshenghotel.com woshi100.com woshipm.com woshipt.com woshiqian.com wosign.com wosigndoc.com woskj2.com wotangka.com wotaoka.com wotingpingshu.com wotokol.com wotransfer.com wotrus.com wotrust.com wotta.net wotuan.com wotucdn.com wotula.com wouju.com wouu.net wow.fun wowamazingthings.com wowbbs.com wowcat.net wowchina.com wowenda.com wowenwen.com wowgf.com wowo6.com wowogroup.com wowoit.com wowomaifang.com wowoohr.com wowops.com wowoqq.com wowoshijie.com wowotech.net wowotuan.com wowoyoo.com wowoyou.com wowoyou.net wowozhe.com wowqu.cc wowtb.com wowtran.com wowzx.net woxian.com woxiaoyun.com woxihuan.com woxiu.com woxuexue.com woxuyuan.com woyao998.com woyaobaoliang.com woyaodayin.com woyaogexing.com woyaojiaju.com woyaoqiudai.com woyaosai.com woying.com woyo.com woyonghj.com woyoo.com woyouche.com woyouzhuce.com wozaixiaoyuan.com wozhangwan.com wozhishang.com wozhongla.com wozhuan.com wozhuye.com wp-hz.com wpan123.com wpceo.com wpcio.com wpcsh.com wpdaxue.com wpdian.com wpengapp.com wpeu.net wpeyes.com wpgdadatong.com wpgdadawant.com wpglb.com wphonelife.com wphun.com wping.org wpjam.com wpk8.com wporder.com wproedu.com wps.com wpscdn.com wpsdns.com wpsep.net wpsgo.com wpske.com wpsmail.net wpsoffice.com wpsplus.com wpt.la wptao.com wptea.com wpued.com wpurl.cc wpweixin.com wpxap.com wpyou.com wpzhiku.com wpzysq.com wq96f9.com wqbook.com wqc.so wqchat.com wqcsjt.com wqdian.com wqdian.net wqdsq.com wqebl.org wqgp.com wqhfw.com wqhome.com wqhunqing.com wqian.net wqiis.com wqingjian.com wqketang.com wqlml.com wqlrvp3510.vip wqoiyz.com wqop2018.com wqshe.com wqstatic.com wqtool.com wqxsw.com wqxuetang.com wqycq.com wqyunpan.com wqzsc36ou356m.com wqzx.net wr88.cc wrating.com wrcdn.com wrdtech.com wrfou.com wright9.com write-bug.com writebp.com writingo-editor.com writingo.net wrjzj.com wrkdih.com wrlsw.com wrltxt.com wrlwx.com wrmjk.com wrsa.net wrshg.com wrtauto.com wrtnode.cc wrtnode.com wrtsz.com wrxdsm.com ws.ksmobile.net wsaf.net wsandos.com wsbkwai.com wsbuluo.com wscdn30.com wscdns.com wscdns.info wscdns.org wscdnss.com wsce-expo.com wscgdns.com wsche.com wscloudcdn.com wscloudcdn.org wsclouddns.com wscloudsec.com wscloudvpn.com wsclsb.net wscn.net wscncdn.com wscont1.apps.microsoft.com wscont2.apps.microsoft.com wscp.shop wscrm.net wscso.com wscstrace.com wscvdns.com wsdianzi.com wsdks.com wsdlb.com wsdqd56.com wsdvs.com wsdvs.info wsdvs.org wsecar.com wseen.com wselearning.com wselearning.net wsf1234.com wsfdl.com wsfdn.com wsfff.com wsfgx.com wsfnk.com wsgeogen.com wsgjj.com wsgjp.com wsglb.com wsglb.net wsglb0.com wsglb0.info wsglb0.org wsglw.com wsglw.net wsgph.com wsgri.com wsgtm1.com wsgtm3.com wshang.com wshbzc.com wshengda2009.com wshenm.com wshifen.com wshili.com wshost.cc wshoto.com wshr.com wshtgame.com wshttpdns.com wsimen.com wsipv6.com wsisp.com wsisp.net wsjgd688.com wsjtxia.com wskam.com wskj16818.xyz wsks.net wskwai.com wslivehls.com wsljf.xyz wsngb.com wsonh.com wsoso.com wsoss.com wsound.cc wsoversea.info wsoversea.net wsqejt.com wsrsj.com wsrxw.com wss.cc wss.email wss.ink wss.pet wss.show wss.zone wssafe.net wssanguo.com wssdns.com wsssec.com wsstplay.com wssvs.com wssvs.net wssyun.com wsszzx.com wstong.com wstx.com wsukwai.com wsurl.cc wswebcdn.com wswebcdn.info wswebcdn.org wswebpic.com wswebpic.info wswebpic.org wsxa.com wsxc.me wsxcme.com wsxjzp.com wsxsdf.com wsy.com wsy400.com wsy7.com wsyhn.com wsysdg.com wsyuanlin.com wsyxmall.com wszwhg.net wt-tech.com wt168.com wt222.com wta-web.org wtaluo.com wtango.com wtardseo26x6ts8tss0-dfs1.com wtbds.com wtbworld.com wtc-conference.com wtcmirni.com wtcxs.com wtd56.com wtdex.com wtdms.com wtecl.com wtfeng.com wtiharbin.com wtimm.com wting.info wtkj.site wtliker.com wtmicrowave.com wtmtest.com wtn-bearing.com wto-btb.com wto168.net wto9000.com wtoip.com wtojob.com wtoutiao.com wtown.com wtraff.com wts999.com wtsimg.com wtsm.net wtsoft.net wtszx.com wttai.com wttms.com wtuce.com wtwvision.com wtxcdn.com wtxcon.com wtzw.com wu-mart.com wu-mi.com wu.run wu123.com wu35.com wu37.com wu7zhi.com wuage.com wuahihotel.com wuaihanfu.com wuaiso.com wuaitec.com wuan888.com wubaiyi.com wubaiyi.net wubaiyi.vip wubashangban.com wubeizi.com wubiba.com wubixuexi.com wubizi.net wublock123.com wubuxianjing.com wubx.net wuchenxu.com wuchou.org wuchuanghui.com wuchucloud.com wuchucloud.net wuchuyun.com wuchuyun.net wucuoxs.com wucuozi.com wuczfj.com wudaai.com wudage.com wudajucheng.com wudangpai.com wudangshan.com wudao.com wudao28.com wudaotech.com wudaotv.com wudeli.com wudihan.com wudingfadian.com wuduyi.com wueasy.com wufafuwu.com wufan88.com wufangzhai.com wufazhuce.com wufun.net wufunb.com wug4.com wuganpark.com wugongdong.com wuguiyunwei.com wuguyufen.com wugx.net wuhaidaily.com wuhaijy.com wuhan-guide.com wuhan-tour.net wuhan.com wuhananyu.com wuhanbaituo.com wuhanbiennial.com wuhanbus.com wuhanchengqi.com wuhancityofdesign.com wuhandaishu.com wuhanev.com wuhanfuke120.com wuhanfukeyy.com wuhanghyy.com wuhanhexin.com wuhanins.com wuhanjingce.com wuhankb.com wuhankq.com wuhanlanqing.com wuhanlengji.com wuhanly.com wuhanmarathon.org wuhanmeigao.com wuhanmetro.com wuhanopen.org wuhanparking.com wuhanpe.com wuhanpep.com wuhanport.com wuhanrt.com wuhansanzhen.com wuhanshiliantong.shop wuhansport.com wuhanta.com wuhantianqi114.com wuhantskj.com wuhanunion.com wuhanup.com wuhanwyg.com wuhanyushidai.com wuhanzhenye.com wuhao13.xin wuhexxg.com wuhongsheng.com wuht.net wuhu.cc wuhubtv.com wuhues.com wuhujianshe.com wuhukj.fun wuhusanlian.com wuhuwater.com wuhuzr.com wuhzx.com wui5.com wuip.com wuji-edu.com wuji.com wujianghongyi.com wujianghr.com wujiangtong.com wujiayi.vip wujicode.com wujie.net wujiecaifu.com wujiehd.com wujiehuyu.com wujiemed.com wujiexiang.com wujieyouth.com wujiit.com wujijiasu.com wujinimg.com wujinpp.com wujintool.com wujinwater.com wujiok.com wujisite.com wujistatic.com wujitang.com wujixiaoshuo.com wujixsw.info wujogroup.com wujue.com wukaikai.tech wukao.com wukong.com wukong.la wukongbjb.com wukongkf.com wukongks.com wukonglicai.com wukongphp.com wukongrom.com wukongsearch.com wukongshuo.com wukongtj.com wukongtongji.com wukongwenda.com wukongyz.com wukypay.com wul.ai wulannews.com wuli.wiki wuliangroup.com wuliannanjing.com wuliaoo.com wuliaosi.com wuliaozhuan.com wuliapi.com wulicdn.com wulincdn.com wulincun.com wulinfeng8.com wuling.com wulingauto.com wulingnev.com wulingzy.com wulinn.com wulintang.net wuliok.com wuliucat.com wuliuhangye.com wuliujie.com wuliuren.com wuliuyun.com wulong365.com wuluoyun.com wulvxing.com wumai.net wumart.com wumii.com wumii.tv wuming.com wupdec.com wupk.com wuqi-micro.com wuqing.cc wuqiong.info wuqizhen.com wuqutu.com wurenjifanzhi.com wurenjihangyexiehui.com wuruihong.com wuscn.com wuse.com wuse.ink wusen.net wuseng.net wusetu.art wushang.com wushen.com wushifublog.com wushuangol.com wushuangtech.com wushuangzl.com wushuhenan.com wushuibao.com wushupeixunban.com wushuzw.com wushuzw.org wusong.com wusuhan.com wusunjiance.net wusunk.com wusuobuneng.com wusuobuneng.org wuta-cam.com wuta.cc wutaishanfojiao.com wutanyuhuatan.com wuteaclub.com wutep.com wuthreat.com wutianqi.com wutongchain.com wutongguo.com wutongtec.com wutongzi.com wutos.com wutuojia.com wuuconix.link wuuxiang.com wuwangnongseed.com wuweijob.com wuweiyou.com wuwenjun.net wuwuju.com wuxi5h.com wuxi9h.com wuxiairport.com wuxiamt.com wuxianhaibao.com wuxiantu.com wuxiatools.com wuxiatu.com wuxibiologics.com wuxibus.com wuxicxl.com wuxidiagnostics.com wuxihospital.com wuxihqyy.com wuxijf.com wuxijia.com wuxijiekang.com wuximarathon.com wuximediaglobal.com wuximhc.com wuxin.info wuxin.work wuxinban.com wuxingmu.com wuxingzuji.com wuxinhua.com wuxinmuye.com wuxipark.com wuxiph.com wuxishuangfan.com wuxishuangyou.com wuxisj.com wuxitianlang.com wuxiwang.net wuxiwanli.com wuxiwenlv.com wuxiworld.com wuxixdc.com wuxixz.com wuxiyishi.com wuxizazhi.com wuxizazhi.net wuxjob.com wuxs.org wuxue.cc wuxuwang.com wuxzx.com wuyabuluo.com wuyanauto.com wuyang-honda.com wuyangkeji.com wuyangmotor.com wuyangplatform.com wuyantonglun.org wuyazi.com wuyecao.net wuyechaorenrcw.com wuyenews.com wuyetongxin.com wuyetoutiao.com wuyi.link wuyida.com wuyijt.com wuyishan.net wuyixinyi.com wuylh.com wuyongwang.com wuyou.com wuyou.net wuyoudagong.com wuyoufang.com wuyougroup.com wuyoujianding.com wuyoushow.com wuyousy.com wuyouyun.cc wuyouyun.com wuys.com wuyuan.cc wuyublog.com wuyueart.com wuyueit.com wuyuidc.com wuyukang.com wuyumin.com wuyuntaxue.com wuyutai.com wuz7.com wuzao.com wuzhaiba.com wuzhenfestival.com wuzhenpay.com wuzhenwic.org wuzhenwucun.com wuzhi.me wuzhicms.com wuzhiq.com wuzhiwei.net wuzhong.com wuzhongdc.com wuzhongwater.com wuzhoucj.com wuzhoucloud.com wuzhoudonghui.com wuzhouhotels.com wuzhoumed.com wuzhouqianzheng.com wuzhourcw.com wuzhouwahson.com wuzhuiso.com wuzi8.com wuzx.com wvidc.com wvshare.com ww-77660.com ww2bbs.net ww8899.com wware.org wwejds.com wwenglish.com wwenglish.org wwentua.com wwfchina.org wwhlian.com wwjia.com wwjie.com wwk888.com wwlcargo.com wwldz.com wwmhdq.com wwnet.vip wwrcw.net wwsgh.com wwsq.tv wwstat.com www-11187.com www-4466666.com www-666789.com www-76244.com www-jabuank-co-jp.net www.adobe.com www.amd.com www.cdnetworks.com www.cg www.com.my www.dell.com www.djivideos.com www.epsonconnect.com www.gov.mo www.htc.com www.microsoft.com www.nike.com www.redhat.com www.samsung.com www.st.com www.tutorabc.com www.uz0.xyz www.vive.com www.viveport.com www.volvocars.com www100789.com www11ic-shinkni-ib-jp.com www2489.com www48-365365.com www5929.com www9912.com wwwer.net wwwfkw.com wwwic.net wwwimages.adobe.com wwwimages2.adobe.com wwwwqq.com wwxrmyy.com wwxxg.com wx-api.net wx-data.com wx-jsj.com wx-xdxc.com wx-yn.com wx-youyan.net wx.com wx135.com wx2h.com wx2share.com wx4.cc wx8g.com wx8h.com wx8s.com wx920.com wx939.com wxagame.com wxagyy.com wxamedia.com wxamkfyy.com wxappclub.com wxappvideo.com wxatech.com wxavu.com wxaz.net wxb.com wxb3d.com wxbaoming.com wxbiao.com wxbjyy.com wxbkw.com wxblockchain.com wxboiler.com wxboilerchina.com wxbrandway.com wxbsgc.com wxccfz.com wxccl.net wxcec.net wxcha.com wxchaoshengbo.com wxchildren.com wxchina.com wxchuguan.com wxchunleikeji.com wxcig.com wxcjfzjt.com wxcloudrun.com wxcnc.com wxcnpa.com wxcsgd.com wxcts.com wxddlfsq.com wxdegroup.com wxdesk.com wxdfgc.com wxdhnt.com wxdianju.com wxdtsj.com wxdw.info wxeditor.com wxedu.net wxeic.com wxf.com wxfhqchina.com wxfls.net wxfncjd.com wxfr.net wxfsdff.com wxfsgj.com wxfxw.com wxgamemini.com wxgamemini.work wxgateway.com wxggxx.com wxgjyy.com wxglyy.com wxgmkt.com wxgongkaike.com wxgrcpa.com wxgxjt.com wxhaifa.com wxhand.com wxhbjt.com wxhbzx.com wxhcgbds.com wxhdzg.com wxhgglc.com wxhgsrm.com wxhkexpress.com wxhledu.com wxhlhg.com wxhlzx.com wxhon.com wxhongqiao.com wxhouse.com wxhrm.com wxhsgkjt.com wxhstx.net wxhtkfyy.com wxhudong.com wxhxyk.com wxhyts.com wxhyzf.com wxiao.net wxiaoai.com wxiat.com wxidg.com wxivzhvp.com wxjava.com wxjcgas.com wxjgxx.com wxjh120.com wxjiaogun.com wxjieyang.com wxjkedu.com wxjmar.com wxjmsyzdxx.com wxjoi.com wxjsgs.com wxjshx.com wxjsxqc.com wxjsxy.com wxjtyf.com wxjx123.com wxjzh.com wxkj666.com wxkjwlw.com wxkml.com wxkou.com wxkpharma.com wxlagame.com wxlele.com wxlight.com wxlivecdn.com wxlongda.com wxlongre.com wxlpool.com wxlxjy.com wxlydhb.com wxmama.com wxmetro.net wxmolegames.com wxmovie.com wxmuseum.com wxnacy.com wxngh.com wxp114.com wxp2022.vip wxpangu.com wxpayui.com wxphp.com wxpmc.com wxq.today wxqcgc.com wxqxbxg.com wxrb.com wxrc.com wxrcgz.com wxrcw.com wxrrd.com wxsbank.com wxscreen.com wxscxxx.com wxsd.com wxsdezyyy.com wxsell.com wxsemzx.com wxsemzxyy.com wxsgf.com wxshake.com wxshgs.com wxshiteng.com wxshops.co wxshuku.la wxskysy.com wxslzf.com wxsohu.com wxsswgs.com wxsteed.com wxstztg.com wxsywater.com wxsyyxh.com wxszjt.com wxt2020.com wxtaihujx.com wxtcm.com wxtcxny.com wxtdf.com wxthe.com wxtj.com wxtj10086.com wxtpb.com wxtrirh.com wxtrust.com wxtyjt.com wxtyyy.com wxtyzyyy.com wxurls.com wxuse.tech wxutil.com wxw120.com wxwerp.com wxwjk5.com wxwmdq.com wxworklive.com wxwtblg.com wxwzt.com wxxd.co wxxfltg.com wxxfzx.com wxxrh.com wxxsh.net wxxsjyk.com wxxsyg.com wxxuetao.com wxxyxnb.com wxy1314.com wxyhgk.com wxyhhosp.com wxyljgxx.com wxyongji.com wxystour.com wxyuannuo.com wxyxrc.com wxyzedu.net wxzfkj.com wxzhongcai.com wxzpw8.com wxzq.com wxzwb.com wxzxw.com wxzzz.com wy000.com wy100.com wy182000.com wy213.com wy213.net wy2fy.com wy34.com wy6000.com wya1.com wybgs.com wybosch.com wybzdwss.com wycad.com wycfw.com wycsyyjt.com wydbw.com wydljx.com wydns.com wyduihua.com wyfluorine.com wygkmitk.com wyh138.com wyhef.com wyhos.fun wyins.cc wyins.net wyjianzhan.com wyjsq.com wyk8.com wykefu.com wykw.com wyl.cc wylylxx.com wyn88.com wynca.com wyndhamchangshasouth.com wyndhamgrandxian.com wyndhamsanya.com wynnstools.com wyptk.com wypxj.com wyrj.net wyrlzy.com wysaid.org wysap.com wysbglza.vip wysfgc.com wyshuoshuo.com wysls.com wysm88.com wyteam.net wytracir.com wytx.net wytype.com wytzgl.com wyuetec.com wywsdx.com wywy.ltd wywy6.com wywyx.com wyx365.com wyxokokok.com wyxzxyjhyy.com wyydsb.xin wyyve.com wyzc.com wyzg.org wyzxsd.com wyzyz.org wz-cjjt.com wz-emauto.com wz-goodcarbide.com wz-tea.com wz-zhongheng-zy.com wz-zhongheng.com wz01.com wz121.com wz132.com wz141.com wz16.net wz5.cc wz5.com wzadri.com wzaigo.com wzbb.com wzbhct.com wzbks.com wzbox.net wzbyjt.com wzcbd.com wzcfjt.com wzcggroup.com wzchayuan.com wzcl.net wzclxx.com wzdjy.com wzdlqj.com wzdsb.net wzdslyy.com wzdyn.com wzer.net wzes.net wzfg.com wzfou.com wzg0898.com wzg6.com wzgbj.com wzgemsmall.com wzghy.com wzguolian.com wzgyjt.com wzgytz.com wzh.kim wzhealth.com wzhibo.net wzhibo.tv wzhonghe.com wzhosp.com wzhouhui.com wzhouhui.net wzhphg.com wzhuanzhong.com wzhust.com wzhxlx.com wziii.com wzime.com wzits.com wzjbbus.com wzjcsc.com wzjrtzjt.com wzjsjtzcpt.com wzjsxx.com wzjxdyf.com wzjxyq.com wzkelineng.com wzkex.com wzkuailu.com wzkygroup.com wzlcgf.com wzlgjt.com wzlijingyuanlin.com wzlingyun.com wzlyqy.com wzlysz.com wzm.com wzmc.net wzmfgs.com wzmryy.com wzmtr.com wznas.com wznfgs.com wznyfz.com wzofjt.com wzojk.com wzoka.com wzotai.com wzpcw.com wzpkus.com wzplc.com wzport.com wzpy.com wzqbhsls.com wzqingou.com wzqmt.com wzqsyy120.com wzrc.com wzrc.net wzrclt.com wzrdwl2.com wzright.com wzrjsp.com wzrm-hospital.com wzrssip.com wzrygcht.com wzsee.com wzshe.com wzshuidian.com wzsky.net wzspinneret.com wzsrmyy.com wzssx.net wzstsj.com wzsxj.net wzsz.net wzsz.org wztf121.com wztianshanfs.com wztlink1013.com wztsy.com wzty.ltd wzu.com wzwqs.com wzwtrlyy.com wzxchem.com wzxclc.com wzxianggui.com wzxinchang.com wzxinfeng.com wzxmkj.com wzxszx.net wzxywj.com wzy2.com wzy6.com wzyc.com wzyds.com wzyestar.com wzyzdyf.com wzz1809.com wzzbdz.com wzzbtb.com wzzcd.com wzzhchem.com wzzjzxx.com wzzlovesli.com wzznft.com wzzp.com wzzpw.net wzzqqh.com wzzsfd.com wzzww.com wzzyhp.com wzzysm.com x-abt.com x-bull.com x-cloud.cc x-cmd.com x-droners.com x-imagine.com x-jishu.com x-kicks.com x-mol.com x-newedu.com x-peng.com x-ray.work x-storm.com x-tetris.com x-vsion.com x0246.com x0769.com x1106y.mobi x11263.com x11296.com x118.net x1abo.com x23118.com x23119.com x23qb.com x23us.us x23wxw.com x2552.com x2intell.com x315.com x3322.net x3366.com x33699.com x33yq.org x3china.com x3cn.com x431.com x4dp.com x5dj.com x5zs.com x64go.com x64pro.com x66597.com x69zw.com x6d.com x6tb.com x6x8.com x72y.com x7game.com x7sy.com x7z.cc x81zw.co x81zw2.com x821.com x86android.com x86pi.com x8ds.com x8sb.com xa-bank.com xa-online.com xa-psj.com xa.com xa189.net xa30zx.com xa4.com xa8yuan.com xa9t.com xaaycz.com xabaotu.com xabbs.com xabpo.com xacademy.cc xacbank.com xacg.info xachangda.com xachangxing.com xachanhe.com xachyy.com xacitywall.com xaclcrm.com xacnnic.com xacsjsedu.com xactad.net xacxxy.com xacyyxq.com xadamai.com xadlwx.com xadsa.com xadwyy.com xadyyy.com xaeaa.com xaecong.com xaedumedia.com xaent.com xafc.com xafish.com xafzjy.com xagdyz.com xagkwl.com xagmsm.com xaguanggu.com xagxp.com xahc971.com xahhp.com xahmqy.com xahr.net xahttd.com xahuapu.net xahuayi.com xahuilong.com xahxgy.com xahxp.com xaidc.com xainjo.com xaixs.org xajfwy.com xajiason.com xajjk.com xajjn.com xajjwy.com xajob.com xajx.com xajxcw.com xakaili.com xakjgzz.com xakqby.com xakrlab.com xalanq.com xalawyer.net xalhar.net xalyd.com xamama.net xaminim.com xamv.com xanahotelle.com xanhr.com xank120.com xanway.com xany6.com xaocao.com xaoji.com xaonline.com xaoyao.com xapcn.com xapi.ltd xaqhgas.com xarc.net xarlm.com xarongdi.com xarptec.com xarqba352.vip xarxbio.com xaseastar.com xasfyw.com xasgxy.com xashl.com xashuiwu.com xashzhjz.com xasimonds.com xasrc.com xasrite.com xasun.com xaswx.com xasyx.com xatc168.com xatielu.com xatourismgroup.com xatvs.com xatyds.com xatyz.com xatzj.com xauat-hqc.com xaudiopro.com xavierbrooks.shop xavua.com xawb.com xawdcy.com xawdslzp.com xawdz.com xaweather.com xawscu.com xawyjx.com xaxcgx.com xaxddz.com xaxydr.com xaxzlsgs.com xayabx.com xayestar.com xaygddc.com xayhedu.com xayizhou.com xayzjc.com xazbts.com xazcit.com xazls.com xazmkm.com xazwy.com xazysoft.net xazyy.com xazzs.com xb.app xb0.cc xb2s.com xba123.com xbaixing.com xbaodi.com xbaofun.com xbase.cloud xbase.xyz xbatu.com xbauto.com xbb8.com xbbaoan.com xbceo.com xbcjy.com xbcloudprint.com xbcpsjk.com xbd61.com xbdgps.com xbds.cc xbdym.com xbec-tencentclb.cloud xbec-tencentclb.com xbec-tencentclb.net xbec-tencentclb.work xbeian.com xbequge.com xbeta.info xbext.com xbfashion.com xbfnet.com xbfzb.com xbgjw.com xbhb.net xbhjgg.com xbhy.com xbiao.com xbidc.com xbiqiku.net xbiqiku2.com xbiquge.la xbiqugu.info xbiqugu.net xbiquke.com xbiquwx.la xbiquzw.com xbirder.com xbitw.net xbjianzhan.com xbjob.com xbjtkj.com xbk.icu xbkjvip.com xblaw.com xblou.com xblqb.com xblqugex.cc xblsign.com xblyw.com xbmbw.com xbmiaomu.com xbniao.com xbnj.net xbongbong.com xboot.org xboxfan.com xbpex.com xbptc.com xbrl-cn.org xbrother.com xbtest.com xbtw.com xbuwrp.sbs xbuyees.com xbw0.com xbwbh.com xbwebyun.com xbxgame.com xbxxb.com xbxxz.com xbzlapp.com xc-fc.com xc-fund.com xc-js.com xc05x.com xc1000.com xc2500.com xcabc.com xcao.win xcape.cc xcar.com xcarimg.com xcb-family.com xcbank.com xcbbtf.com xcc.com xccrugs.com xccy.cc xcdesign.net xcdn.global xcdngyc.vip xcdntp.vip xcdssy.com xcedu.net xcex.net xcfuer.com xcfunds.com xcgbb.com xcgbie.com xcgogo.club xcgogo.site xcgp.com xcgui.com xcgwk.com xcgyy175.org xcharger.net xchjw.org xchr-group.com xchsgy.com xchuxing.com xciic.com xcj.com xcjd.net xcjincheng.com xcjmcnc.com xcjtjt.com xcjyxx.com xckfsq.com xckgq.com xckpjs.com xckssw.com xckszx.com xclawyers.org xcljs.com xcloudbase.com xcmad.com xcmg-dkrob.com xcmg.com xcmgmall.com xcmobi.com xcmsports.com xcnchinese.com xcncp.com xcnv.com xcode.me xcoder.in xcommon.com xcoodir.com xcot.com xcpapa.site xcpapa.xyz xcpxssx.com xcq2022.com xcq518.com xcqpayy.com xcqxcq.com xcrc.net xcrmyy.com xcsc.com xcshaifen.com xcstuido.com xcsyy.com xctmr.com xcultur.com xcurrency.com xcvdd.xyz xcvec.com xcvmbyte.com xcvvs.com xcwhjj.com xcx-x.com xcxd-inc.com xcxd1997.com xcxjpd.com xcxvs.com xcxwo.com xcxymw.com xcxzks.com xcxzww.com xcyg.net xczhmzb.com xczhsh.com xczim.com xczzs.com xd-tech.com xd-world.com xd.com xd0.co xd0.com xd0731.com xd56b.com xd57.com xd8888.net xda.show xdadang.com xdapp.com xdbcb8.com xdbin.com xdc.at xdcdn.com xdcdn.net xdcg100.com xddpay.com xde.com xdebike.com xdf99.com xdfckjz.com xdfpr.com xdfsjj.com xdgalaxy.com xdggd.com xdgj.com xdgkwl.com xdglt.com xdgogogo.com xdhcn.com xdhelp.com xdhyty.com xdiarys.com xdingerp.com xdiscuz.com xdj-sz.com xdja.com xdjcgs.com xdju.com xdjunxiao.com xdjy369.com xdkb.net xdkjjy.com xdkjpx.com xdmb.xyz xdmssp.com xdn001.com xdn10000.com xdn2.com xdnice.com xdnote.com xdnphb.com xdnsvip.com xdnsvip.info xdocin.com xdowns.com xdpaomo.com xdper.com xdpipe.com xdpjump.com xdplt.com xdpvp.com xdqtech.com xdressy.com xdrig.com xdrqsb.com xdrtc.com xdrun.com xdsipo.com xdsp.mobi xdsyzzs.com xdter.com xdtev.com xdtool.com xdtos.com xduim.com xdundq.work xduoo.com xduoyu.com xduph.com xdwan.com xdweilai.com xdwyx.com xdxct.com xdxdsz.com xdxialingying.com xdxiaoshuo.com xdxmsy.com xdxmwang.com xdyanbao.com xdyjt.com xdystar.com xdytuliao.com xdyy.net xdyy100.com xdyyws.com xdzhsw.com xdzu.net xed.plus xedaojia.com xedaojia.net xedge.cc xeeger.com xeeok.com xefan.com xege.org xegnfwkju.com xegymyb.xyz xehedu.com xeknow.com xeltek-cn.com xen0n.name xender.com xenium.mobi xepher.fun xesabc.com xesapp.com xescdn.com xesdns.com xesee.com xesimg.com xesv5.com xet.tech xetimes.com xetlk.com xetslk.com xev-connectivity.com xevd.co xevddy.com xeylon.com xf-fund.com xf-gtm.com xf-world.org xf-yun.com xf.com xf0797.com xf119.xin xf1233.com xf21.com xf24ms.com xf3z.com xf4hs.com xf5z.com xfabs.com xfadx.com xfannix.com xfaqwlw.com xfb315.com xfbst.com xfcjn.com xfcn.com xfconnect.com xfcqc.com xfdown.com xfdp.net xfdwz.com xfdyb.com xfehc.com xfeng.me xffbb.com xffox.com xfguo.org xfhx.com xfinfr.com xfisp.com xfj100.com xfjcw.com xfjw.net xfjxs.com xflapp.com xflimg.com xfliusheng.com xflstatic.com xfltd.net xfmspps.com xfnano.com xfocus.net xfocus.org xforceplus.com xfpaas.com xfpass.com xfpg119.com xfplay.com xfprecise.com xframework.org xft123.com xftransa.com xfun233.com xfusion.com xfwed.com xfwindow.com xfx02.com xfx168.com xfxb.net xfxglass.com xfyousheng.com xfypaper.com xfyun.com xfzc.com xfzhsf.com xfzllht.com xfztgxt.com xg-techgroup.com xg1234.com xg38.com xgamecenter.com xgamevip.com xgantt.net xgate.com xgc002.com xgc004.com xgc09.com xgccm.com xgcp.asia xgcs55.com xgcsczyc.com xgcsfz.com xgd.com xgd666.com xgdfz.com xgdown.com xgdq.com xgdqsn.com xggj56.com xggjj.com xghylt.com xgimi.com xgimi.net xgiu.com xgj-info.com xgjdyjjt.com xgjgas.com xgjjw.com xgkwx.com xglgift.com xglist.com xgllreport.com xglopto.com xglpa.com xgn-cy.com xgo.cc xgost.com xgp365.com xgpharma.com xgqq.com xgqyy.com xgsdk.com xgsdpm.com xgss.net xgsxt.net xgsyun.com xgt2014.com xgtea.com xgwx.net xgxedu.com xgxsignage.com xgyszj.com xgz.cc xgzbwdj.com xgzdhj.com xgzrs.com xh-arch.com xh-health.com xh-silicone.com xh.com xh0523.com xh1958.com xh39.com xhaiwai.com xhante.com xhay1122.com xhbaoguan.net xhboke.com xhbosn.com xhby.net xhbycm.net xhcct.com xhclaw.com xhclub.net xhcpa.net xhcpas.com xhcs.com xhctcm.com xhd.org xhdjx.com xhdnwct.com xhdpay.com xhdxly.com xhedu.net xhfk120.net xhforex.com xhg.com xhgame.com xhgamesdk.com xhgjyc.com xhgz.com xhh.pw xhhd6.com xhhdd.cc xhhhzs.com xhhos.com xhidc.com xhily.com xhintech.com xhj.com xhj.info xhjaty.com xhjianglong.com xhjingling.com xhjj.com xhjkgj.com xhjnyy.com xhjs168.com xhjt.com xhjyxxw.com xhkt.tv xhlcsl.com xhlld002.shop xhlsgs.com xhma.com xhmedia.com xhmwxy.com xhnews.net xhostserver.com xhpfw.com xhpiano.com xhpr.net xhqbapp.com xhqqt.com xhrczp.com xhs.com xhscdn.com xhscdn.net xhsd.com xhsd.net xhsea.com xhsf.com xhslink.com xhslw.com xhsmlt.com xhsrmyy.com xhsxmt.com xhsyqx.com xhsyww.com xhtheme.com xhtw.com xhtwb.com xhtxgroup.com xhu2.com xhu218.com xhuaian.com xhup.club xhw520.com xhwater.com xhwcdasha.com xhwhouse.com xhwtech.com xhwx100.com xhwyzsd.com xhxcedu.com xhxgt.com xhxhr.com xhxsw.com xhy.com xhyd.com xhygroup.com xhyksha.xyz xhylbfyy.com xhyljt.com xhysh.com xhytd.com xhyun.vip xhzysg.com xi-9.com xi-soft.com xi.biz xi.su xi5jie.com xia1ge.com xiaa.net xiabingbao.com xiabor.com xiabu.com xiacai.com xiacaopu.net xiache.net xiachufang.com xiadaolieche.com xiadele.com xiaditu.com xiadts.com xiadu.com xiafenfa.com xiagaoqing.com xiagepian.com xiageyy.com xiaguanzhan.com xiagujian.com xiaheng.net xiaiot.com xiajuan88.com xiakefyz.com xiakeol.com xialingying.cc xialv.com xiamag.com xiamai.net xiame.com xiamen888.com xiamenair.com xiamenbg.com xiamenfojiao.com xiamenhuandongmarathon.com xiamenjiyang.com xiamentianqi114.com xiamenwater.com xiami.com xiami.net xiamo.fun xiamoyun.com xiamp4.com xian-feng.com xian-tourism.com xian-yao.com xian.com xianayi.net xianbao.fun xianbao.net xianbao5.com xianbdj.com xianbeikeji.com xianbey.com xiancaotang.com xianchengyou.com xiancn.com xiandaihospital.com xiandaimuye.com xiandaiyuwen.com xiandanjia.com xiandengdengguan.com xiandp.com xianer.net xianfae.com xianfan2022.com xianfengjiayuan.com xianfengsg.com xianfengyiyao.com xiang.com xiang.xin xiang5.com xiang578.com xiangange.com xianganquan.com xianganyu.com xiangauto.com xiangbababus.com xiangbala.net xiangbinmeigui.com xiangbojiubo.com xiangbosoft.com xiangcoin.com xiangcun.cc xiangcun.com xiangcunxiaoshuo.com xiangdian.com xiangdian.store xiangguo.com xiangguohe.com xiangha.com xianghuanji.com xianghumarathon.com xianghunet.com xianghus.com xiangjiamuye.com xiangjiang-amc.com xiangjiasz.com xiangjiayaoyehz.com xiangkanwang.com xiangkesi.com xiangley.com xiangliuzi.com xianglongpharm.com xianglute.com xiangmaita.com xiangming.site xiangmu.com xiangni.com xiangniya.com xiangoo.com xiangpeach.com xiangpi.com xiangpu24fa.com xiangqiai.com xiangqianpos.com xiangqigame.com xiangqin7.com xiangqishan.com xiangqiyouxi.com xiangqu.com xiangrikui.com xiangrikuijianzhan.com xiangrikuisite.com xiangruichina.com xiangruizulin.com xiangshang360.com xiangshangban.com xiangshanpark.com xiangshe.com xiangshengbao.com xiangshengnet.com xiangshi.cc xiangshi.video xiangshitan.com xiangshuheika.com xiangshunjy.com xiangsidi.com xiangsw.com xiangtaiyun.com xiangtaole.com xiangtatech.com xiangtuan.xyz xiangtx.com xianguo.com xianguomall.com xianguotea.com xiangw.com xiangwushuo.com xiangxiangmf.com xiangxihe.com xiangxinggroup.com xiangxingnet.com xiangyang-marathon.com xiangyang.net xiangyangwater.com xiangyi.co xiangyiai.com xiangyilxj.com xiangyu-group.com xiangyue.life xiangyueedu.com xiangyueliangyuan.com xiangyuezhongxue.com xiangyujiankang.com xiangyuncdn.com xiangyungx.com xiangyuyaoye.com xiangzhan.com xiangzhiren.com xiangzhuyuan.com xiangzi.ltd xiangzi.tech xiangzuanjiang.com xiangzukeji.com xianjian.com xianjian10.com xianjiaosuo.com xianjichina.com xianjiqun.com xianjzyxh.org xiankabao.com xiankan.com xianlai.work xianlaicd.com xianlaigame.com xianlaihy.com xianlaivip.com xianlan315.com xianliao.me xianlife.com xianliming.com xianmaiyangsheng.com xianmeilai.com xianmeisc.com xianningmarathon.com xianniu.com xianniu.net xianniuzu.com xiannvhu.com xianpinyun.com xianpp.com xianrail.com xianrenzhang.net xianshangzixun.com xianshangzixun.net xianshiqiba.com xianshishangmao.com xianshu.com xianshua.net xianshuabao.com xianshufang.com xiansimo.com xiansuan.com xiantao-marathon.com xiantao.com xianweizhang.com xianxiadao.com xianxiadao.net xianxiazhuanjz.com xianxueba.com xianyang888.com xianyer.com xianyongyong.com xianyouhe.com xianyuange.com xianyudanji.net xianyugame.com xianyugouwu.com xianyuso.com xianyuvr.com xianyuwang.com xianyuyouxi.com xianzhanget.com xianzhi.net xianzhice.com xianzhid.com xianzhongwang.com xianzidaer.com xianzilaishui.com xiao-an.com xiao-bo.com xiao-new.com xiao100.com xiao2she.com xiao688.com xiao84.com xiaoa.name xiaoac.com xiaoaiassist.com xiaoaiscan.net xiaoaisound.com xiaoangel.com xiaoantech.com xiaoantech.net xiaoao.com xiaoapp.io xiaoba001.com xiaobai.com xiaobaibar.net xiaobaipan.com xiaobaishiji.com xiaobaishixi.com xiaobaitool.net xiaobaiupin.com xiaobaivr.com xiaobaixitong.com xiaobal.com xiaobangbaoxian.com xiaobangguihua.com xiaobangtouzi.com xiaobao360.com xiaobaodt.com xiaobaoming.com xiaobaoonline.com xiaobaostudio.com xiaobeibike.com xiaobeigl.com xiaobeiyangji.com xiaobeizuqin.com xiaobianli8.com xiaobingxitong.com xiaobool.com xiaobot.net xiaobu.tech xiaobu121.com xiaobuwq.com xiaocanapp.com xiaocanhulian.com xiaocantech.com xiaocaoo.com xiaocaoyun.com xiaoce.fun xiaocen.com xiaochamao.com xiaoche001.com xiaocheng.com xiaochengxu029.com xiaochengxucms.com xiaochi198.com xiaochixiang.com xiaochuanyun.com xiaocifang.com xiaocms.com xiaocx.org xiaoda.fun xiaodaijl.com xiaodaka.net xiaodangxian.com xiaodanzi.com xiaodao0.com xiaodaotv.com xiaodaozhi.com xiaodapei.com xiaodengvip.com xiaodian.com xiaodian.so xiaodianweb.com xiaodigu.com xiaoding110.com xiaodingchui.com xiaodiyouxi.com xiaodongrui.com xiaodongxier.com xiaodoubi.com xiaodoukj.com xiaodoushebao.com xiaodouzuche.com xiaoduoai.com xiaoduseo.com xiaodutv.com xiaody.com xiaoe-assets.com xiaoe-live.com xiaoe-materials.com xiaoe-tech.com xiaoe-tools.com xiaoecloud.com xiaoeeye.com xiaoeknow.com xiaoenai.com xiaoerjiren.com xiaoeryi.com xiaoetong.com xiaofany.com xiaofeng.org xiaofengtv.com xiaofubao.com xiaofuzi.net xiaogan.com xiaogd.net xiaogegelive.com xiaogj.com xiaogou111.com xiaogou222.com xiaogou333.com xiaogou444.com xiaogou555.com xiaogou666.com xiaogou777.com xiaogou888.com xiaogou999.com xiaogouds.com xiaogouh5.com xiaogouzhineng.com xiaoguaniu.com xiaoguikuaipao.com xiaoguo101.com xiaoguosq.com xiaoguowenhua.com xiaoguoyi.com xiaogushi.com xiaohansong.com xiaohe-jiankang.com xiaohe666.com xiaoheihegame.com xiaoheima.com xiaohelive.com xiaohengmaidan.com xiaohi.cc xiaohongchun.com xiaohongjituan.com xiaohongshu-mycdn.com xiaohongshu.com xiaohongshu.net xiaohongshulvyou.com xiaohouyisheng.com xiaohouyunyin.com xiaohu8.com xiaohua8.com xiaohuabaichu.com xiaohuabuluo.com xiaohuai.com xiaohuangji.com xiaohuanxiong.com xiaohuazhuo.com xiaohucloud.com xiaohufev.com xiaohulu.com xiaohun.net xiaohuochai.cc xiaohuochai.site xiaohuohu.com xiaohus.com xiaohuwl.com xiaoi.com xiaoi.me xiaoice.com xiaoj.com xiaoji.com xiaoji001.com xiaojian.site xiaojiaokeji.com xiaojiaoyar.com xiaojiaoyu.com xiaojiaoyu100.com xiaojing.work xiaojing360.com xiaojinzi.com xiaojiuwang.com xiaojl.com xiaojp.com xiaojuchefu.com xiaojudeng.com xiaojukeji.com xiaojupeijian.com xiaoka.tv xiaokache.com xiaokakj.com xiaokanba.com xiaokanglongjiang.com xiaokao.com xiaokaxiu.com xiaokcdn.com xiaokcehui.com xiaoke.space xiaoke101.com xiaokeai.com xiaokeduo.com xiaokepu.com xiaokesoso.com xiaokudang.com xiaokuihua.net xiaokusha.com xiaolachuxing.com xiaolajiao.com xiaolanapp.com xiaolanben.com xiaolangtt.com xiaolantiao.com xiaole.com xiaoleimob.com xiaolianbao.com xiaoliangkou.com xiaolianhb.com xiaoliebian.com xiaolii.com xiaolikj.online xiaolin.in xiaolinbysj.com xiaolincoding.com xiaolinsi.com xiaolintj.com xiaolinwl.com xiaoliqing.net xiaolizhuli.com xiaolizupai.com xiaolong.li xiaoluboke.com xiaolun.net xiaoluxuanfang.com xiaoluyouxuan.com xiaoluyy.com xiaoluzhidian.com xiaolvji.com xiaolxiao.com xiaoma.com xiaoma.net xiaomachuxing.com xiaomagaojian.com xiaomai.live xiaomai5.com xiaomaidong.com xiaomaigongkao.com xiaomaigui.com xiaomaiketang.com xiaomaiuzu.com xiaomajia.com xiaomaomi.online xiaomaomv.com xiaomape.com xiaomark.com xiaomashijia.com xiaomaxitong.com xiaomayi.net xiaomazhixing.com xiaomei.cc xiaomeiti.com xiaomeng1235.com xiaomi.com xiaomi.hk xiaomi.net xiaomi.org xiaomi.tw xiaomiaozai.com xiaomicorp.com xiaomicorp.net xiaomicp.com xiaomidns.com xiaomidns.net xiaomiev.com xiaomiinc.com xiaomiinc.net xiaomimimo.com xiaomimobile.com xiaominet.com xiaominfo.com xiaomingjianzhan.com xiaomingtaiji.cc xiaomingtaiji.com xiaomingtaiji.net xiaominr.com xiaomiqiu.com xiaomiquan.com xiaomirom.com xiaomisa.com xiaomisa.net xiaomisa.org xiaomishu.com xiaomiw.cc xiaomiwear.com xiaomixiaoai.com xiaomiyoupin.com xiaomlove.com xiaomor.com xiaomu.cc xiaomuji.info xiaomuzhi.com xiaomy.net xiaomyc.com xiaonaodai.com xiaonaonao.org xiaonei.com xiaonengren.com xiaoni.com xiaoniaofei.com xiaoniba.com xiaoniu66.com xiaoniuben.com xiaoniuds.com xiaoniuhululu.com xiaopai.vip xiaopaitech.com xiaopaotec.com xiaopeiqing.com xiaopeng.com xiaophy.com xiaopi.com xiaopinchuxing.com xiaopinw.com xiaopiu.com xiaoqiandao.com xiaoqiangge.com xiaoqiling.com xiaoqingtou.com xiaoqinre.com xiaoqiqiao.com xiaoqiweb.com xiaoquba.com xiaoqueshe.com xiaoquyijia.com xiaorizi.me xiaorui.cc xiaoruibao.com xiaoshengping.com xiaoshentongzongbu.com xiaoshidata.com xiaoshijie.com xiaoshituina.vip xiaoshouhudong.com xiaoshourc.com xiaoshouyi.com xiaoshuapp.com xiaoshuiguo.com xiaoshujiang.com xiaoshuo.com xiaoshuo1-sm.com xiaoshuo2-sm.com xiaoshuo520.com xiaoshuoba.com xiaoshuobi.cc xiaoshuodaquan.com xiaoshuohui.net xiaoshuoli.com xiaoshuowu.com xiaoshuxiong.com xiaositv.com xiaot.com xiaota.com xiaotangketang.com xiaote.com xiaote.net xiaotee.com xiaotengyouxi.com xiaotiancai.com xiaoting.com xiaotongqq.com xiaotud.com xiaotuzhan.com xiaou2014.com xiaoupan.com xiaowang.net xiaowangshen.com xiaowangyun.com xiaowangzi777.com xiaowazi.com xiaoweichen.com xiaoweigod.com xiaoweijia.net xiaoweijiankang.com xiaoweirobot.com xiaowiba.com xiaowm.com xiaowuwl.com xiaoxia.vip xiaoxiaapi.com xiaoxiang.club xiaoxiangbz.com xiaoxiangtoutiao.com xiaoxiangxueyuan.com xiaoxiangyoupin.com xiaoxiaodangan.com xiaoxiaoketang.com xiaoxiaomo.com xiaoxiaoshuo.com xiaoxiaotong.org xiaoxiaoyouxuan.com xiaoxichangliu.com xiaoxili.com xiaoxinbk.com xiaoxineye.com xiaoxinrili.com xiaoxintoutiao.com xiaoxintuku.com xiaoxiong360.com xiaoxiongjita.com xiaoxiongmeishu.com xiaoxiongxitong.com xiaoxiongyouhao.com xiaoxiongzhoupu.com xiaoxitech.com xiaoxiuapp.com xiaoxusd.com xiaoya56.com xiaoyanjiusheng.com xiaoyantong.com xiaoyanwenxue.com xiaoyaodsx.com xiaoyaoxi.com xiaoyaoyou.com xiaoyastar.com xiaoyatong.com xiaoyegejitar.com xiaoyejidian.com xiaoyejixie.com xiaoyeren.com xiaoyezi.com xiaoyezu.com xiaoyi.com xiaoyiads.com xiaoyida.com xiaoyida.net xiaoyiduoduo.com xiaoying.co xiaoying.com xiaoying.tv xiaoyingxiong.com xiaoyingzhenxuan.com xiaoyisysreset.com xiaoyizhiqu.com xiaoyou66.com xiaoyouxi.co xiaoyouxi.com xiaoyouxi100.com xiaoyouxiqun.com xiaoyouzb.net xiaoyu.com xiaoyuananquantong.com xiaoyuankousuan.com xiaoyuansouti.com xiaoyuansouti.xyz xiaoyuanyun2.com xiaoyuanzhao.com xiaoyuanzhaopin.net xiaoyuer.com xiaoyujia.com xiaoyun.com xiaoyusan.com xiaoyusanchou.com xiaoyutiao.com xiaoyuxitong.com xiaoyuzhoufm.com xiaoz.me xiaozhang365.com xiaozhao365.com xiaozhen.com xiaozhenpaotui.com xiaozhibaoxian.com xiaozhibo.com xiaozhimed.com xiaozhiyun.com xiaozhongjishu.com xiaozhoumo.com xiaozhu.com xiaozhu.hk xiaozhu158.com xiaozhu2.com xiaozhua.com xiaozhuangzhuang.com xiaozhuanhao.com xiaozhustatic1.com xiaozhustatic2.com xiaozhustatic3.com xiaozlife.com xiaozu365.com xiaozuan8.com xiaozuanbike.com xiaozufan.com xiaozujian.com xiaozuowen.net xiapac.com xiapilu.com xiappt.com xiapu.co xiaqu.org xiaqunfeng.cc xiarenzhuxin.com xiarj.com xiashanet.com xiataoseo.com xiatou.com xiaw.net xiawan8.com xiawen.tv xiawuyouke.com xiaxs.info xiaxs.la xiayixing.com xiayx.com xiazai.live xiazai126.com xiazai16.com xiazai163.com xiazaiba.com xiazaicc.com xiazaidizhi.cc xiazaijidi.com xiazais.com xiazaitool.com xiazaiwx.com xiazhougroup.com xibaike.com xibaiwang.com xibanyaqz.com xibao100.com xibeicanyin.com xibeidev.com xiberia.net xibojiaoyu.com xibu168.com xibujuece.com xiburongmei.com xicaijing.com xicaishe.com xicaodesign.com xichengo.com xichongsm.com xichu.net xichuan001.com xichuangzhu.com xici.com xici.net xicp.net xidesheng.com xidian.cc xidibuy.com xidie.com xidiglobal.com xiduobaby.com xie22.com xiebanyun.com xiebao18.com xieboke.net xiecdn.com xieche.com xieche.net xiecheng.com xiechuangw.com xiedaimala.com xiedajia.com xiedao.com xiediantong.com xiefenxiang.com xiegangsir.com xiege.net xiegekt.com xiehehp.com xiehejx.com xiehekjkf.com xiehepcb.com xiehouit.com xiehuiyi.com xiejiahe.com xiejianji.com xiejiaxin.com xiejing.com xieliaofa.com xielijiaoyu.com xieliqun.com xiemm.com xiesk.com xietonghuaxue.com xiexiaoyuan.com xiexin.com xiexinbao.com xiexingcun.com xieyangzhe.com xieyimao.com xieyudatea.com xiezewen.com xiezi.tech xiezilouzulinwang.com xieziqiu.net xiezixiansheng.com xiezuocat.com xiezuoye.com xiezuoyisi.com xifangw.com xifenfei.com xifengboke.com xifenggroup.com xifengjiuzhaoshang.com xifu120.com xifumi.com xigaogen.com xiggua.com xigo.tv xigou100.com xigoubao.com xigua.com xigua110.com xiguaapp.com xiguabook.com xiguaji.com xiguang.xyz xiguaplayer.com xiguashipin.net xiguavideo.net xigushan.com xigushan.net xigushi.com xihabang.com xihachina.com xihaiannews.com xihaianrc.com xihangzh.com xihawan8.com xihaxueche.com xihazsww.com xihegp.com xiherencai.com xihuan.me xihusgh.com xiimoon.com xiinnn.com xiji-express.com xiji.com xijie.com xijie888.com xijinfa.com xijing01.com xijingjianzhan.com xijingjianzhan0.com xijingjianzhan1.com xijingjianzhan2.com xijingjianzhan3.com xijingjianzhan4.com xijingjianzhan5.com xijingjianzhan6.com xijingjianzhan7.com xijingjianzhan8.com xijingjianzhan9.com xikang365.net xikcloud.com xikii.com xikoutourism.com xikrs.com xikuan.com xikuqi.com xilaijian.com xilaiping.com xilanggufen.com xilddt.com xilehongniang.com xilele.com xilexuan.com xileyougame.com xili.fan xilian-group.com xiliangjituan.com xilichi.com xiliguoji.com xilinjie.com xilinsi.org xilinx-ic.com xilipy.com xilish.com xilitang.com xiliulou.com xilu.com xiluoxuan.com xilvlaw.com xima.org xima.tv ximalaya.com ximalaya.fm ximalaya.men ximalaya.tv ximalayadata.com ximalayaos.com ximeiapp.com ximeigroup.com ximendou.com ximenwai.com ximgs.net ximiplay.com ximitools.com ximiyouxi.com ximmerse.com ximogo.com ximuw.com xin-health.com xin-manganese.com xin-yao.com xin.com xin.science xin.xin xin1234.com xin21.xyz xin3721.com xin6.net xinac.net xinanjr.com xinanrui.com xinansec.com xinaogas.com xinaoyun.com xinba.com xinbaicai.com xinbalive.com xinbear.com xinbiaocha.com xinbiaochijiaoyu.com xinboaa.com xinbqg.com xincache.com xincai.com xincailiao.com xincainet.com xincaise.com xincaitong.net xincanshu.com xinceremed.com xincg.com xincha.com xinchacha.com xinchaipower.com xinchanfeng.com xinchangol.com xinchao.com xinchaoss.com xinchego.com xinchenai.com xincheng.com xinchengbio.com xinchengge13.com xinchengyue.com xincheping.com xinchess.com xinchong.com xinchuanbo.com xinchuang-bio.com xinchukj.com xincj.com xincmm.com xincode.com xincomm.com xinda-bio.com xindachem.com xindaifu.com xindalawyer.com xindaohang123.com xindasulian.com xindawz.com xinde.org xindemarinenews.com xindetihuiya.com xindexuexi.com xindianti.com xindingdianxsw.com xindingwealth.com xindns.com xindong.com xindongdinglv.com xindonghuyu123.com xindu.cc xinduo.com xinduoad.com xinenw.com xiner-membrane.com xineurope.com xinexpress.com xinfaholding.com xinfangcidian.com xinfangsheng.com xinfei.com xinfeijituan.com xinfeipengjixie.com xinfeiyu.net xinfenggxgroup.com xinfengji.com xinfengming.com xinfenlei.com xinfinite.net xinfox.net xinfree.com xinfuhk.com xinfushe.com xinfuyouxi.com xinfuyun.net xing-su.com xing73.com xingames.com xingaochengtai.com xingb.net xingbangfl.com xingbo.tv xingchao1.com xingchengb.org xingchenjia.com xingcheshixian.com xingchiauto.com xingchuangcar.com xingchuangtiandi.com xingdatrip.com xingdong.co xingdongliu.com xinge.com xinge.la xinge365.com xingechemical.com xingechina.com xingefuwu.com xingeshan.com xingezhan.com xingfagroup.com xingfeiinc.com xingfudu.com xingfufangdai.com xingfulaonian.com xingfulizhaofang.com xingfuu.com xinggan.net xingganggas.com xingguanggongkao.com xinghai365.com xinghaigroup.com xinghaiwaimai.com xinghan.vip xinghangdao.com xinghantec.com xinghaoyun8.com xinghejoy.com xinghengedu.com xingheoa.com xinghuaport.com xinghuazixun.com xinghuo100.com xinghuo365.com xinghuoxiaoshuo.com xinghy.com xinghy56.com xingjiagames.com xingjiaoyun.com xingjiesj.com xingjijy.com xingjimob.com xingjuhe.com xingjun-group.com xingkec.com xingkeqi.com xingketech.com xingkong.link xingkongfy.xyz xingkongmt.com xingkupai.com xinglai.com xinglan.co xingliao.work xingliju.com xinglin-tech.com xinglingyingxue.com xinglinpukang.com xinglizhou.vip xingloo.com xingmima.com xingming.com xingming.net xingmuyi.com xingnuo.cc xingongjiaoyu.com xingpai.com xingpaibilliard.com xingpan.com xingpin.com xingqier.com xingqisihuishou.com xingqiu.tv xingqiu520.com xingqu11.com xingquanke.com xingren.com xingronghealthcare.com xingrongn.com xingruan.com xingrui-cn.com xingrunkg.com xingse.net xingseapp.com xingshangnet.com xingshawater.com xingshen.com xingshu.com xingshuishuiwu.net xingshulin.com xingsteel.com xingsuyun58.com xingtai.net xingtai0319.com xingtai123.com xingtaishipping.com xingtan.one xingtan001.com xingtangzp.com xingtongsw.com xingtu.com xingtui520.com xinguad.com xinguangjian.com xinguge.com xinguida.com xinguizhou.com xingumin.net xinguodu.com xingvps.com xingwajiang.com xingwan001.com xingxing.com xingxingbao.com xingxingjizhang.com xingxingzaixian.fun xingxingzu.com xingyangroup.com xingyao.com xingyaomob.com xingyaoss.com xingyaowa.com xingyaozhilian.com xingye.work xingye1.com xingyeace.com xingyeai.com xingyeddz.com xingyigz.com xingyihaiyang.com xingyin.com xingying2018.com xingyizhai.com xingyongli.com xingyou99.com xingyoucai.com xingyuan-hb.com xingyuan.com xingyuebike.com xingyuebio.com xingyuedoor.com xingyuehuyu.com xingyuhuwai.com xingyunb.com xingyunba.com xingyungroup.com xingyunol.com xingyusoft.net xingyutc.com xingyuyouxi.com xingzh.xyz xingzhean.com xingzhige.com xingzhilan.com xingzi-vision.com xingzou.art xingzoushu.com xingzuo.com xingzuomi.com xingzuopei.com xingzuowu.com xingzuoyundns.com xinhaiglobal.com xinhaimineral.com xinhaiminingepc.com xinhaimininggroup.com xinhaisoft.com xinhaitravel.com xinhanhd.com xinhanhr.com xinhanyx.com xinhaolian.com xinhaoqi.net xinhaosi.com xinhay.com xinhe99.com xinhechina.com xinhecq.com xinhedjq.com xinhengshui.net xinheshenggroup.com xinheyun.net xinhongru.com xinhua-news.com xinhua.org xinhua08.com xinhuaapp.com xinhuachongming.com xinhuachuanmeijs.com xinhuacu.com xinhuaiot.com xinhuamm.net xinhuanet.com xinhuanet.ltd xinhuapo.com xinhuaprs.com xinhuapub.com xinhuaqipai.com xinhuashe.org xinhuashudian.com xinhuasuye.com xinhuawang.com xinhuawz.com xinhuaxmt.com xinhuayimin.com xinhuazhiyun.com xinhuoq.com xinhuozhi.com xining-marathon.com xiniu.com xiniu3d.com xiniugushi.com xiniushu.com xiniuyun.com xiniuz.com xinjiadiy.com xinjianggames.com xinjianggou.com xinjiangqinglvyou.com xinjiangroup.com xinjiashangtou.com xinjidian.com xinjifangchan.com xinjimo.com xinjingst.com xinjingxiang.com xinjinqiu.com xinjiren.com xinjisuan.net xinjiyuan.net xinju.fun xinjuc.com xinjunshi.net xinjunshicn.net xinke-semi.com xinkuai.com xinlangtupian.com xinlanshengbc.com xinle.com xinle366.com xinleineng.com xinleshan.com xinleshiyiyuan.com xinlexie.com xinli001.cc xinli001.com xinli001.xyz xinli001wx.com xinli10.com xinliangxiang.com xinliceping.com xinlifudao.com xinlilw.com xinlinghuayuan.com xinlingletu.com xinlip.com xinliwanju.com xinlixinli.net xinlong-holding.com xinluex.com xinlvtu.com xinlvyy.com xinmaizj.com xinmanduo.com xinmanhua.net xinmanyuan.com xinmaotao.net xinmei365.com xinmeihu.com xinmeijiutian.com xinmeinuo.com xinmem.com xinmenglife.com xinmeow.com xinmeti.com xinmima.com xinminghui.com xinminheng.com xinmintian.vip xinmizx.com xinnakj.com xinnet.com xinnetdns.com xinnetvip.com xinniangjie.com xinnianhua.com xinnong.com xinnong.net xinnuodazu.com xino-tech.com xinorngyk.com xinouhk.com xinoujixie.com xinpa.com xinpeihu.net xinpg.com xinpianchang.com xinpianyugao.com xinpin-ip.com xinping.cc xinpingmu.com xinpinhe.com xinpinmao.com xinpintoutiao.com xinpupower.com xinpure.com xinqidian-sh.com xinqigu.com xinqingyulu.com xinqite.com xinqiucc.com xinqiyejia.com xinqtech.com xinquanedu.com xinquji.com xinranliu.me xinray.com xinray.net xinrenxinshi.com xinri.com xinrong88.com xinrui-games.com xinrui-pharm.com xinrui.biz xinruipiao.com xinruiweb.com xinsanbanbao.com xinsankeji.com xinsdn.com xinsenz.com xinsf.cc xinshangmeng.com xinshangshangxin.com xinshengdagroup.com xinshengku.com xinshengsemi.com xinshi525.com xinshiba.com xinshipu.com xinshishen.com xinshouyou.com xinshouzhanzhang.com xinshuge.net xinshuiny.com xinshuru.com xinsilu.com xinsource.com xinss.com xinss.net xinstall.com xinstatic.com xinszy.com xintaikeji.com xintairen.com xintairencai.com xintaishequ.com xintaizhou.com xintajixie.com xinteenergy.com xintengmenchuang.com xintheme.com xintiandi.com xintianw.com xintianya.net xintiao100.com xintiaogroup.com xintiaoyouxi.com xintongconference.com xintongwang.com xintrum.com xintuan.com xintucdn.com xintuosoft.com xintv.com xinwangcj.com xinwanr.com xinweier.com xinweiyun.com xinwell.com xinwen365.com xinwen520.net xinwengao.net xinwengood.com xinwenke.com xinwenlianbo.tv xinwo.com xinwuji.com xinwulan.com xinxe.com xinxi28.com xinxianghui.com xinxianshilb.com xinxiansk.com xinxianwang.com xinxiaochina.com xinxiaodian.com xinxiaoqi.com xinxiaozu.com xinxiehe.com xinxifabu.net xinxinapp.net xinxing-marathon.com xinxing001.com xinxing100.com xinxing91.com xinxinhot.net xinxinhotel.com xinxinjoy.com xinxinmed.com xinxjs.com xinxue-edu.com xinxuejy.com xinxunwang.com xinxyun.com xinya.me xinyali.net xinyan-gx.com xinyan.com xinyanggaopin.com xinyanglao.com xinyanwuliu.com xinyao168.com xinyaoapp.com xinyaoshi.com xinyapharm.com xinyayk.com xinyegang.com xinyetongcard.com xinyi-tech.com xinyi.com xinyidc.com xinyiglass.com xinyihl.com xinyinghc.com xinyingpower.com xinyingtec.com xinyingyang.com xinyisemi.com xinyishiji.com xinyitt.com xinyo100.com xinyong.net xinyongbuy.com xinyongsoon.com xinyou.com xinyoudui.com xinyour.com xinyu-tam.com xinyu19.com xinyuanclub.com xinyuanf.com xinyuanfin.com xinyuanshiye.net xinyubt.com xinyuchen.com xinyueclub.com xinyuefei.com xinyuehealth.com xinyuejiaxiao.net xinyueseo.com xinyuevod.com xinyuhole.com xinyuhongyuan.com xinyuncs.com xinyunfuwu.com xinyunit.com xinyurc.com xinyustone.com xinyutengyuan.com xinzegongshui.com xinzengwj.net xinzheng.cc xinzhi.com xinzhi.space xinzhibang168.com xinzhibid.com xinzhichuangzhi.com xinzhiguanwangyun.com xinzhongqi.net xinzhou.org xinzlkj.com xinzuojia.com xinzushenghuo.com xiolift.com xiongan1dt.org xionganxinxi.com xiongbagk.com xiongchuan.com xiongdong.com xiongf.com xiongfengcl.com xiongfenggroup.com xiongge.club xiongmaitech.com xiongmao555.com xiongmao789.com xiongmaoboshi.com xiongmaodangao.com xiongmaojinku.com xiongmaosaohao.com xionguamaqui.com xiongyin.com xiongying.com xiongyudl.com xiowo.net xioxix.com xipu.com xipunet.com xipushuju.net xiqb.com xiqianyangyi.com xiqiaoshantour.com xiqifun.com xiqinrc.com xiqkj.com xiqu.me xiqu001.com xiquebo.com xiqueer.com xiquepark.net xiqueqingjian.com xiqurongmei.com xiquwenhua.net xirang.com xiri-vacuum.com xironiot.net xisaiwang.com xise3.com xishalz.com xishanju-hn.com xishanju.com xishanxuexiao.com xishaoye.com xishiwang.com xishixiuhair.com xishpj.com xishu365.com xishuai.com xishuai.net xishuizk.com xishunj.com xisofttec.com xitang.love xitanhotel.com xitaoinfo.com xite-group.com xitek.com xitek.net xitengbingxue.com xitie.com xitieba.com xitieba.net xitinet.com xitmi.com xitong-tech.com xitong114.com xitong5.com xitong8.com xitong86.com xitongcity.com xitongdaquan.net xitonggho.com xitonghe.com xitongku.com xitongle.com xitongpe.com xitongqingli.com xitongtiandi.net xitongtiankong.com xitongtu.net xitongwanjia.com xitongxz.net xitongzhijia.com xitongzhijia.net xitongzijia.net xitongzongcai.com xitu.com xitu.io xituan.com xiu.com xiu8.com xiuai.com xiubiaoshi.com xiubiaozu.com xiucai.com xiudodo.com xiudtech.com xiufa.com xiufaxing.com xiugei.com xiugu.com xiuhandingzhi.com xiuhangzhe.com xiuhe128.com xiuimg.com xiujiadian.com xiujixia.com xiujue.cc xiulian.com xiuluowang.com xiuluren.com xiulv.com xiumb.com xiumb12.com xiumi.us xiumius.com xiumucn.com xiuna.com xiuno.com xiuqicloud.com xiuren.com xiushao.com xiusheji.com xiushuang.com xiushui.net xiusifudianji.com xiustatic.com xiutanqi.com xiutuan.com xiutv.com xiuxiandou.com xiuxianshipin.com xiuxiu.com xiuxiuda.com xiuxiustatic.com xiuxmanhua.com xiuzhan365.com xiuzhanwang.com xiuzhiwu.com xivcdn.com xiwan.vip xiwang.com xiwangame.com xiwangchina.com xiwangd.com xiwanglife.com xiwangxiaoyuan.com xiwantrip.com xiweigas.com xiwenquan.com xiwicloud.com xiwnn.com xiwuji.com xiwuy.com xixhx.com xixiangongjiao.com xixianwatergroup.com xixiaoyou.com xixiarc.com xixibobo.com xixidoudizhu.com xixig8.com xixih.cc xixih.net xixik.com xixik.net xixinews.com xixinghanghr.com xixiqipai.com xixisys.com xixiwg.com xiyacs.com xiyangan.com xiyashiji.com xiyec-tencentclb.cloud xiyec-tencentclb.com xiyec-tencentclb.net xiyec-tencentclb.work xiyi-jt.com xiyijiang.com xiyijm.com xiyin.life xiyiqq.com xiyogo.com xiyongpark.com xiyoo.com xiyou-g.com xiyoucdn.com xiyouchat.com xiyouence.com xiyouji.com xiyouji.work xiyoulinux.com xiyoupark.com xiyouquan.com xiyousdk.com xiyouwebgame.com xiyouxi.com xiyuanshuke.com xiyucosmetics.com xiyuege.com xiyuegr.com xiyufine.com xiyun.net xizanggames.com xizangguolv.net xizangmaoniunai.com xizangqinglv.com xizangzl.com xizexiao.com xizhai2021.com xizhang.com xizhengtouzi.com xizhi.com xizi.com xizice.com xiziiparking.com xiziquan.com xiziwang.net xj-biotech.com xj-etyy.com xj-tianye.com xj-zp.com xj120.com xj123.info xj169.com xj5152.com xj5u.com xj71.com xj917.com xj96596.com xjabc.net xjauto.net xjbank.com xjbaoyouge.com xjbdf.net xjbhc.net xjbuluo.com xjc18.com xjcc.net xjcmtj.com xjcysky.com xjcysw.com xjd2020.com xjdaily.com xjdkctz.com xjdpx.com xjdsb.com xjdwfc.com xjdzhyq.com xjedu.org xjent.com xjesps.com xjf.pub xjfam.com xjfdcw.com xjfilm.net xjfk.com xjflcp.com xjfm.com xjfzb.com xjgameapi.com xjgameinfo.com xjgc.com xjggjy.com xjgj.com xjgqt.org xjgsdm.com xjgt.com xjguanghui.com xjguowang.org xjgwy.org xjgxjt.com xjh.com xjh.me xjhgame.net xjhjrq.com xjhr.com xjhsxt.com xjhtrq.com xjhuan.fun xjhx120.com xjhyktsp.com xjhzn.com xjietiao.com xjishu.com xjisme.com xjiyou.com xjjhjt.com xjjnjp.org xjjqd154.com xjjsws.com xjjt.com xjks.net xjlxw.com xjlytz.com xjlz365.com xjmachine.com xjmg.com xjmty.com xjnnet.net xjnzm.com xjoycity.com xjpdf.com xjphsd.com xjpnmt.com xjqixing.com xjqysw.com xjr2018.com xjrb.com xjrb.net xjrc365.com xjrmyy.com xjshanhao.com xjsic.com xjsmwl.com xjsy56.com xjtcm.com xjtjjt.com xjtour.com xjtrcw.com xjtrry.com xjtsnews.com xjtssw.com xjtucompressor.com xjtudlc.com xju88.com xjwell.com xjwljb.com xjwyglw.com xjx11221ts.com xjxa.com xjxbmy.com xjxbx.com xjxdf.com xjxf.com xjxhdn.com xjxtrq.com xjy020.com xjygaofu.com xjyrcw.com xjysk.com xjytjt.com xjz.com xjzclyqc.com xjzcsq.com xjzdjx.com xjzhsh.com xjzlyy.com xjzp.net xk57.com xk857.com xk89.com xk9l.com xkaxka.com xkbbtang.com xkbjm.com xkcd.in xkcun.com xkdywl.com xkeirofiowef.com xker.com xkfyzmob.com xkgiwdey.com xkhouse.com xkitd.com xkjian.com xkjt.com xkjt.net xkjxcon.com xknow.net xkonglong.com xkpx.com xksafe.com xksast.com xktech.com xktsz.com xkunyi.com xkw.com xkwe.com xkxs.org xkxsc.com xkyl.vip xkyn.com xkyn.net xkyy.com xkzzz.com xl-ai.com xl-edu.net xl-ele.com xl-soft.com xl-vip.com xl18z.com xl2824.com xl5bb.com xl5dd.com xl5du.com xl5dw.com xl699.com xlaidudu.info xlaidudu.net xlaomi.net xlbsoft.com xlcai.com xlcgjg.com xlcidc.com xlcjzx.com xlctyd.com xlczg.com xldlive.com xldz.com xlewen5.com xlfred.com xlgao.com xlgjg.net xlgogo.com xlgtx.com xlgxapp.com xlhb.com xlhbgroup.com xlhfmj.xin xlhhy.com xlhk.net xlhs.com xlhyc.com xlibai.com xlinclass.com xlisp.net xljly.com xljnjy.com xljsci.com xlkdyf.com xlkorganic.com xlkshop.com xlkty.com xllyk.com xlm258.com xlmarathon.com xlmr.com xlmz.net xlndt.com xlobo.com xlongm.com xloveyoux.com xlpai.com xlpan.com xlpp.net xlqeai.com xlqzh.com xlread.com xlreads.com xlsdn.com xlsemi.com xlshou.com xlsxmj.com xltll.com xltnjslfd.com xlvshi.com xlwl95.com xlxkgjt.com xlxqsgf.com xlxslny.com xlyap.com xlyfhw.com xlykzz.com xlyouxi.com xlyouxi.net xlysauc.com xlysauc.net xlysoft.net xlyx3.com xlyxo.com xlyxp.com xlzfpt.com xlzhao.com xlzyd.com xlzys.com xlzyyw.com xm-ad.com xm-ais.net xm-chuang.com xm-gzf.com xm-olympic-museum.org xm002.com xm200.com xm51.com xm5156.com xm680.com xm6wpp.com xm9.co xm909.com xm9m.com xmac.app xmafkj.com xmaibu.com xmalaya.com xmamiga.com xmanblog.net xmantou.com xmasg.com xmayitxt.com xmbankonline.com xmbhw.com xmbie.com xmbike.com xmbus.com xmccb.com xmcdn.com xmchong.com xmcimg.com xmcord.com xmcp.ltd xmcwh.com xmcx.net xmcy.com xmdh.com xmeasygo.com xmecard.com xmerak.com xmeye.net xmf.com xmfc.com xmferry.com xmfev.com xmfish.com xmfls.net xmfunny.com xmgd.com xmgltwzhs.com xmgod.site xmgps.com xmgsd.com xmgslx.com xmguoyi.com xmgwbn.com xmhaicangmarathon.com xmheigu.com xmheitu.com xmhitek.com xmhlcs.org xmhljx.net xmhouse.com xmht.com xmhx.com xmigc.com xmindchina.net xminfoport.com xming.ai xminnov.com xminzu.com xmisp.com xmitic.com xmj1688.com xmjchyxh.com xmjgjy.com xmjiaruan.com xmjim.com xmjj3d.com xmjled.com xmjsci.com xmjslh.com xmjyw.com xmjzykj.com xmkanshu.com xml-journal.net xmldz4.com xmlhifi.com xmlulub.com xmlvbarcode.com xmmade.com xmmama.com xmmeiyou.com xmmnrj.com xmmtu.com xmmuye.com xmnjdwx.com xmnovel.com xmocloud01.com xmonecode.com xmos.tv xmov.ai xmpaoyou.com xmparking.net xmpbjl.com xmpcba.com xmqianzun.com xmqxy.com xmr-zh.com xmrb.com xmrbi.com xmrdtx.com xmruanci.com xmruiyou.com xmseaview.com xmseeyouyima.com xmsgame.com xmshqh.com xmsixian.com xmsiyb.com xmsj.org xmsme.com xmsmjk.com xmsoft.com xmsouhu.com xmsoushu.com xmspace.net xmssie.com xmsssyy.com xmsumi.com xmsuperlite.com xmswim.com xmtbang.com xmtyy.net xmuli.tech xmvod.org xmwan.com xmwes.com xmwsrc.com xmx023.com xmxc.com xmxdev.com xmxfxh.com xmxgame.com xmxmc.com xmxsapp.com xmxwl.net xmxwz.com xmyeditor.com xmylhy.com xmyouma.com xmyzm.com xmzangao.com xmzdls.com xmzgxcl.com xmzhdz.com xmzhkt.com xmzibi.com xmzjjl.com xmzjtjckmy.com xmzmmr.com xmzmy.com xmzs.org xmzsyg.site xmzwdgm.com xmzyark.com xmzzy.net xn--0lqwsu2w.com xn--1bs9ye16ez8b.com xn--1ctq05bvu1a.com xn--1d3a16a.com xn--1lqq7i4w0acli.com xn--1qqw23a xn--2cyr99a.com xn--2quu5hi8e69p.com xn--2vra6db.com xn--2vxsp6vi4j.com xn--3bs35yfl6bn8a.ink xn--3bs70igqdr64f.com xn--3bs781ecijtrt.com xn--3bsp13hurlcwb.com xn--3bst00m xn--3bsx54la62v.com xn--3bsz0pskmp89skv3a0zd724b1py.net xn--3ds443g xn--48s50dpwnbh95ah07i.com xn--4gq0d69oba129b9wd94ey8bs83ji3c3q7hoka.org xn--4gq1d760bszbgdv5p12rhq5bx2yc.net xn--4lwr21d.com xn--4qwqc04pn0lg9h.com xn--4xup5j.com xn--54q23ckxiyx0e.com xn--54q249denfzw9a.net xn--54q40czz0g7xp.com xn--55qw42g xn--55qw7biqf7g3d004h8yuw1ctrt04sep1cjfb.com xn--55qx2ag79c1iq.com xn--55qx5d xn--55qzsxj5y4ozkz93dswptmau4jc88dg75ctid8raf29c.com xn--5brz4b846h.com xn--5kv317c.com xn--5kv91jiz2b.com xn--5tzm5g xn--6fr61zj8c92fg34d.com xn--6frz82g xn--6kr66fp2ep1ac5edz2hy7s2wq.com xn--6krw3qs7jl59b.com xn--6oq83hzb922dnorwsomx9dzkb.com xn--6qq986b3xl xn--6qqp94buie2ss.com xn--6rtq6phwfhva.com xn--6xv710dola.net xn--730-l44eu9iitvv9h.com xn--7mqy6dj0brts55e.com xn--7qvz7xssa.com xn--88-9s0f59z.com xn--8lqrjra071bi0qgga421cs99a4qeqwm.com xn--8ou124e6ek.net xn--8owq8u.com xn--8stx8olrwkucjq3b.com xn--8y0a063a xn--91-y60d638c.xyz xn--9et52u xn--9kr72kqwe.com xn--9krv3x413bbyb.com xn--9myo55bi8l.com xn--9pr56vfna007k.com xn--9pry86bq5ex68c.org xn--b0t462i.com xn--b0tn0sxy3ayhj.com xn--b0tp7p3met2a.com xn--b0tp7p3met2a.net xn--b8qi619ujyk.com xn--btvs3aw8fhtbms310k.com xn--btvu9x9qgt8c.com xn--bxyy83e.net xn--cesw6hd3s99f.com xn--cesx3oukw29l.com xn--chq7lp8e46htw3g.com xn--chq84itwgrb674blm6f.com xn--chq978ctsf6v6c.com xn--cjztj18l.com xn--cpqr0dg9g4t0fodaq5c.com xn--cssw8z54rj2ds2q.com xn--czr694b xn--czr93rxry.com xn--czrs0t xn--czru2d xn--czru2dx3eszw3lat53b.com xn--dev407h.com xn--djr48g6sik7q.com xn--djr58xb1mzxk3mtrhfc8g.com xn--dkr447bejn.com xn--dkr447bejn.net xn--dll-8n0e103bz5hg93c.site xn--dlq10g6xfkw4a201b.com xn--dlqu6kw2e2n3aolseyrfhn.com xn--dlqw10borzgxh.com xn--dtq23gl66e.com xn--eh1a34ykpl.com xn--fcs316auqlyoe.com xn--fhq79jyym9nh74hfm8a.com xn--fiq03fftg7m2c.com xn--fiq06jqoz14s.com xn--fiq228c5hs xn--fiq446amrnx0i.com xn--fiq4mgq69drxaiym2g5wnynb77huij0bchq7vj5ay61o3cwdq2ah92mlg9c.com xn--fiq60luzcp97a7oxivr99k.org xn--fiq64b xn--fiq6q20pz51d.com xn--fiq73f39fwr0b4wk.net xn--fiq7v55hnsepqz.net xn--fiqr9gg1vdha.com xn--fiqrtn9duw9e.cc xn--fiqs8s xn--fiqs8sr9ge7eb4b28vo92a.com xn--fiqu59c0hf2sy.net xn--fiqv94di0c54ipe.net xn--fiqw8jl3h7xc25m753d.link xn--fiqx7ci2whnj.com xn--fiqz9s xn--fjq5py34j65v.com xn--fjq720a xn--g2xx48c xn--glr604k.com xn--gmq238c5fy.com xn--gmqr9gdtrhuf56g.com xn--h0tn34c.cc xn--husx9zj2eepau0se83d.com xn--hutn94av9amzg.net xn--hxt814e xn--i6q33br88fkud.com xn--igry70bi8kqt9a.org xn--igt225itqf.com xn--imr513n xn--io0a7i xn--it-if7c19g5s4bps5c.com xn--jh1a128b.com xn--jor0b302fdhgwnccw8g.com xn--jpr47zq87axwjc0d.com xn--jxuv1s.net xn--kivq8be3whsi.com xn--kput3i xn--l9qya49g86gm9ghpbzy1dwl0fppo.com xn--lt0at3k.com xn--mct72chgrm.net xn--mes380bwhsoec.com xn--mmz.cc xn--mnqs00c24c2pw0ii.com xn--mts196b.net xn--n5q75cia631gba51vx4ag2a008o08l1t0adzay2skp4b.com xn--n6qy1xeobw60f.net xn--ncym25ahib.net xn--nmqp78hmufjwu.com xn--ntso8dsz1borbzvfm5h.com xn--ntsp37j.net xn--nyqx2gbsm8u0b.com xn--nyqy26a xn--ohqn1dw64cf45c8l9a1ba.com xn--omrvgz6er31au6f.com xn--oorz70c56jtwb49x.net xn--otu796d xn--p5t28ylet56a.com xn--pss89e6xl72g.com xn--ptua509t.com xn--q20av2y36ac54a.com xn--qruq25bjsj.net xn--qzwx3ij21azka.com xn--r8s65df7admf92a.com xn--rhq112dhez17bejdyhl55dypc.com xn--rhqr3ykwbm05aegjqxb.com xn--rhqt5j7qj6mj.com xn--rhqv96g xn--rht439a44bdyk.com xn--riqi041otpd.com xn--ror-j59d107t.net xn--rpv331d.com xn--rss237b.com xn--rss404ac6aj60e.net xn--rsss0ke5ghnj.com xn--ruqs20ac8b5z7av8ir2u.net xn--ruqz9zcojm5sf19a.com xn--s4t325g.com xn--ses554g xn--sgt856gbjl.cc xn--siq0gv77a3c.com xn--sosw2ge0bs10aoq0a.com xn--sss604efuw.com xn--swts8irvtrtr.com xn--tesiro-n17nh93r.net xn--tfr181fg2az43a.com xn--tkr55q2oa097dyxe209c.com xn--tlq092au7hsi3a.com xn--tlqz3aj77agil76ww4ni2k.com xn--tqq89g2tjj5x8xs.com xn--unup4y xn--vcso1ukuz.net xn--vcsu51b3zccpm.com xn--vcsu9p66gy1l9vpnnbk52f.com xn--vhq3m33sbqhpsmtnuxfq.com xn--vhq3mr8b802a.net xn--vhq4ut2dsxd5xqnicjxxo55a756aovhik0aunm.com xn--vhq72yfwbt0elp2cpkhtld55g73l1o6a.com xn--vhqqbz2p62hm92e04p.com xn--vhqr42drhf5k7b.com xn--vhqu1kbz3bnbi.com xn--vhquv xn--viq463a.com xn--vq3a5gj6c9i.com xn--vuq861b xn--w9q313dfn4a.com xn--w9q675dm1p7em.net xn--w9qr0k.com xn--w9qy23cc6adz7d.net xn--wbsz85a2a.com xn--wxtr44c.live xn--xcry9n251cvcar5xj6r.com xn--xhq521b xn--xhq60k09cr85at2f494d.com xn--xhq60kzbz07dem6azlu.com xn--xhq8sm16c5ls.com xn--xhqq4f5vc69qlmk6mva633mwoeiuad9562e.com xn--xhqs8jmxkive1yest6g.com xn--xhqs8jp0kpz2d.net xn--xhqx10kr8o.com xn--xkr190gv5p.com xn--xkr26fp82clgt.com xn--xkr999cp4fv97a.com xn--xkrs9ba41r.com xn--y6q834d2k3al4h.com xn--y8jhmm6gn.moe xn--ygtp21bwyedsq.com xn--yhqq38bmov17mqxi.com xn--ykr169cm1pskt.com xn--z4q559dueav8q.com xn--z63a11k.com xn--zfr164b xn-ck.com xn0.cc xn121.com xna8.com xnara.org xnb.me xncjdx.com xndm.tech xndqfw.com xndxfz.com xndyyljt.com xnfyy.com xngjbus.com xnh123.com xnh98d9c32om.com xnhdgame.com xninja.org xnjcw.com xnjdcbs.com xnjxnz.com xnnpc.com xnongren.com xnparking.com xnpfs.com xnpic.com xns315.com xnsbdzb.com xnsdermyy.com xnsntr.com xnssy.com xnszlszgs.com xntg.com xntt.com xntv.tv xnw.com xnw19.vip xnwan.com xnwatch.com xnwbw.com xnwmw.com xnxy120.com xny365.com xnyauto.com xnye.net xnytjt.com xnzjxx.com xnzn.net xnzxyy.com xnzyyy.com xo58tjrol4.work xoao.com xoliao.com xooooa.com xopenbeta.com xorlink.com xorpay.com xoso13.com xoso57.com xoso64.com xoso94.com xoso96.com xoss.co xoudou.com xox717.com xox848.com xoxv.net xoxxoo.com xoyo.com xoyobox.com xoyocdn.com xoyq.net xp3366.com xp535.com xp6000.com xp61.com xp666.com xp811.com xp9365.com xp94.com xpaper.com xpaper.net xpccdn.com xpcdz.com xpcha.com xpchina.net xpdf.net xpeae.com xpeng.link xpf.cc xpgod.com xpgps.cc xphcn.com xpj0066.com xpj8857.com xpjis.com xpkjpk.com xpkongqipao.com xplaymobile.com xppjzs.com xpsheying.com xpsup.com xpsy.net xptt.com xpu93.com xpw888.com xpwin7.com xpykjsws.com xpyouxi.com xpyx.net xpzsgc.com xq0356.com xq0757.com xq2024.com xq5.com xq668.com xqb24.com xqbase.com xqblog.com xqbssj.com xqce.com xqckg.com xqdgroup.com xqdjkwz.com xqebp.org xqfunds.com xqgmx.com xqhuyu.com xqhzw.org xqipu.com xqishuta.com xqiushu.com xqjmzc.com xqjs.net xqllaser.com xqltzp.com xqmdc.com xqmice.com xqnmz.com xqpharma.com xqppt.com xqsbw.com xqshe.com xqship.com xqu5.com xqyake.com xqyk024.com xqymuy.com xqypay.com xr100.net xrain.net xray.cool xrbulk.com xrcch.com xrccp.com xrdyl.com xrdzidonghua.com xredu.com xrender.com xresgrbw.com xrhhg.com xrichengapp.com xrjjk.com xrkapp.com xrkcdn.com xrkmonitor.com xrlmold.com xrpyq.com xrqh.com xrso.com xrunda.com xrvm.com xrwf66.com xrxr.xyz xrxx365.com xrzdsp.com xrzhg.com xrzww.com xs-ir.com xs-servers.com xs058.com xs3cnc.com xs52.com xs63.info xs7.cc xs7.com xs7.la xs920.com xs9999.com xsa239.com xsappxz.com xsb120.com xsbja.com xsbus.com xscbs.com xschu.com xschuban.com xscp03150xq.com xscxzcz.com xsdma.com xsdmr.com xsdnjl.com xsdoudou.com xsdwk.com xsee.cc xsesc.com xsfaya.com xsfc.com xsgame.net xsgame99.com xsgongju.com xsgtvacct.com xshellcn.com xshengyan.com xshenshu.com xshhotels.com xshkvip.com xshmzz.com xshntc.com xshouyou.com xshr.com xshrcw.com xshts.com xshuai.com xshubao.org xshuma.com xshuoba.com xshuoshuo.com xsignal-ft.com xsina.net xsinger.me xsj21.com xsjedu.org xsjgzbdf.com xsjit.com xsjk.net xsjny.com xsjom.com xsjplm.com xsjrc.com xsjs-cifs.com xsjtxt.com xsjwyx.com xsjxyedu.com xsjzsy.com xskb.org xskhome.com xskjw.com xslb.me xslb.net xslmed.net xsm818.com xsmaofa.com xsmart.com xsmart.link xsmoe.com xsn168.com xsnow.net xsnsyh.com xsool.com xsp0311.com xsphs.com xspinfo.com xspio.com xsqzyyy.com xsrm.com xsrtvu.com xss.tv xssc8888.com xssdcdn.com xsser.date xsshuku.com xsskc.com xsslyjt.com xssz.net xsteach.com xsti.net xstnet.com xstqj.com xsttop.com xstv.net xstx.info xstzgs.com xsui.com xsuweb.com xswang.com xswdcasting.com xsxgjsw.com xsxlt.com xsxzls.com xsy-edu.com xsy.science xsycps.com xsyeli.com xsyk021.com xsyq.cc xsyx.xyz xsyxsc.com xsyydtfy.com xsyzdl.com xszhuan.com xszrcw.com xszsw.com xszww2.com xszww8.net xt-gas.com xt-kp.com xt-luyou.com xt-rent.com xt-shipping.com xt12333.com xt3yy.com xt700.com xt7p.com xtadmins.com xtaike.com xtal.cc xtao.me xtbank.com xtc-edu.com xtcaq.com xtcfjt.com xtcrm.com xtdj.cc xtedu.com xtep.com xthinking.net xthtc.com xthyjt.com xtiai.com xtianlang.com xtibet.com xtingcloud.com xtion.net xtjc.com xtjcxh.org xtjky.com xtjlyy.com xtjob.net xtjsxy.net xtjtjs.com xtlexueu.com xtlog.com xtmit.com xtmtrj.com xtomp.com xtong-solar.com xtongs.com xtoobmo.xyz xtransfer.com xtrapowercn.com xtrc.net xtrunc.com xtsfuke.com xttaff.com xttblog.com xttz.com xtu2.com xtuan.com xtuos.com xtutoring.com xtw-system.com xtwzyx.com xtx6.com xtxbemp.xyz xtxcm.com xtxh.net xtxnxk.sbs xtylxx.com xtyyw.com xtzdc.com xtzhiliji.com xtzjup.com xtzpw.com xtzy.com xu1s.com xu42x.net xu8.fun xu97.vip xuan5.com xuanba.com xuancaizi.com xuanceo.com xuancheng.org xuanchuanyi.com xuandan.com xuandecarpet.com xuanfengge.com xuanhaikuwan.com xuanhao.com xuanhk.com xuanhuange.com xuanhuange.net xuanjigame.com xuanjingcn.com xuanjutong.com xuanke.com xuankuge.com xuanliw.com xuanma.com xuannaer.com xuanqii.com xuanquge.com xuanqun.com xuanruanjian.com xuanshi.link xuanshitou.com xuanshu.com xuanshu.org xuansiwei.com xuantaikeji.com xuanteng.org xuanwifi.com xuanwonainiu.com xuanwu88.com xuanwumobile.com xuanwww.com xuanxiaodi.com xuanxiaozhuanjia.com xuanxuan.com xuanxuangame.com xuanxue.com xuanxuewang.com xuanyang888.com xuanyge.info xuanyouwang.com xuanyuan.cloud xuanyuan.run xuanyuancode.com xuanyuanhuangdi.org xuanyuans.com xuanyuanzjy.com xuanyusong.com xuanyutech.com xuanzhi.com xuanzhuanmumatuwen.com xuavieres.com xubei.com xuchencq.com xuchuang.com xucongbaobao.com xudan123.com xudankeji.com xudong8.com xudongfood.com xudoodoo.com xue.net xue114.com xue126.com xue138.com xue163.net xue51.com xue63.com xue8nav.com xue99.com xueanquan.com xueba100.com xuebaclass.com xuebaike.net xuebangsoft.com xuebapan.com xuebawang.net xuecaijie.com xuecan.net xueche.com xueche.net xuechebu.com xuechela.com xuechu123.com xuecoo.com xueda.com xuedao.com xuedapei.com xuedi.com xuedingmiao.com xuedong97.com xuedou.com xueepay.com xueersi.com xueersibook.com xueerxing.com xueeu.com xuefa.com xuefeiji.org xuefenxi.com xuefo.com xuefo.net xuefoxue.com xuegaogame.com xuegaogg.com xuegeshui.com xuegongkong.com xuegui.net xueguoedu.net xuehai.net xuehaiwu.com xuehuacdn.com xuehui.com xuehuile.com xuehuiwang.com xueid.com xueit.com xuejia123.com xuejian.site xuejiaoso.com xuejiqiao.com xuekanba.com xuekao.com xuekao123.com xuekeedu.com xuekewang.com xuekuaiji.com xuekubao.com xuekuibang.shop xuelangapp.com xuele.net xueleku.com xuelema.com xueleyun.com xueli9.com xueliedu.com xuemh.com xueming.li xuenarui.com xuenb.com xuepaijie.com xuepaipai.com xuepingx.com xuepojie.com xueqian.com xueqinji.com xueqiu.com xueqiu360.com xuerong.com xuesai.net xuesax.com xuesexs.com xueshanlinghu.com xuesheng.com xueshiyun.com xueshu.com xueshu5.com xueshuda.com xueshujia.com xueshut.com xueshuwenhai.com xuesidaojiajiao.com xuesongshuwood.com xuesw.com xuetangonline.com xuetangx.com xuetengedu.com xuetianli.com xuetimes.com xueto.com xuetongw.com xuetu.net xueui.com xuewangshang.com xuewangzhan.com xuewangzhan.net xuewei360.com xueweigui.com xueweijiema.com xuewennet.com xuewenya.com xuexb.com xuexi.la xuexi199.com xuexi365.com xuexi365.net xuexi612.com xuexi613.com xuexi616.com xuexi637.com xuexi665.com xuexi682.com xuexi683.com xuexi684.com xuexi707.com xuexi719.com xuexi721.com xuexi725.com xuexi727.com xuexi733.com xuexi734.com xuexi782.com xuexi784.com xuexi786.com xuexi806.com xuexi807.com xuexi823.com xuexi824.com xuexi825.com xuexi826.com xuexi827.com xuexi828.com xuexi829.com xuexi848.com xuexi851.com xuexi859.com xuexi860.com xuexi861.com xuexi863.com xuexi864.com xuexiaodaquan.com xuexiaozhaopin.com xuexibao.com xuexicha.com xuexicn.com xuexigang.com xuexili.com xuexin365.com xuexinjiaoshi.com xuexito.com xuexitong.com xuexiuwang.com xuexiwa.com xuexizhiwang.com xuexizoo.com xuexun.com xueyanshe.com xueyiyun.com xueyou.org xueyuhuangjinyan.com xuezeshi.com xuezhangbb.com xuezhangya.com xuezhao.space xuezhishi88.com xuezhiyou.com xuezhouyi.com xuezizhai.com xufa315.com xugaoyang.com xugt.com xuguang.net xuguangwangluo.com xuhaijun.pw xuhe56.com xuheen.com xuhenghandicraft.com xuhongjx.com xuhuihs.com xujc.com xuji.co xujianhua.com xujiepack.com xujingkj.com xujinhuancaishui.com xujun.org xuka.com xukou.net xulaoshi68.com xuld.net xulihang.me xuliutian.com xulizui6.com xumenger.com xumengwang.com xumingxiang.com xumucloud.com xumurc.com xumuren.com xumuzx.com xun-gou.com xun321.com xunbang.com xunbao178.com xunbaozhifu.com xunbf.com xunbin.com xunbo.net xunchabing.com xunchanggroup.com xundasemi.com xundayun.com xundekai.com xundiesoft.com xundns.com xundns.net xundupdf.com xunerjie.com xunfan.net xunfang.com xunfeia.com xunfeib.com xunfeivr.com xunfeiwl.com xunfeixxj.com xungejiang.com xungou.com xungou5.com xunguagua.com xunguanggame.com xunhuai.com xunhuanshuibeng.com xunhupay.com xunhuweb.com xunicard.com xunihao.net xuniquan.com xunjiecad.com xunjiefanyi.com xunjiepdf.com xunjieshipin.com xunjietupian.com xunjk.com xunkids.com xunlanchina.com xunlei.com xunlei.net xunleioa.com xunlew.com xunliandata.com xunlianip.com xunlong.net xunlong.tv xunlongsoft.com xunlu-led.com xunlugame.com xunmai888.com xunmall.net xunmei.net xunmeinet.com xunmengtu.com xunpaibao.com xunqinji.net xunrenzhaoren.com xunruicms.com xunruns.com xunsearch.com xunshi.cc xunsho.com xunshou.com xunsl.com xunsn.com xunsns.com xunta.mobi xuntongwuxian.com xuntou.com xuntou.mobi xuntuoguan.com xunurl.com xunvision.com xunw.shop xunwan.com xunwangba.com xunwei.tm xunweihc.com xunxi.com xunxiang.site xunxu.com xunyangzaixian.com xunye1975.com xunyou.com xunyou.mobi xunyouyw.com xunyuan1314.com xunyun.com xunzai.com xunzhuang.net xuooo.com xupai.com xupea.com xupernode.com xupertves.com xuprinter.com xupu.name xupu120.com xupupifu.com xuqijt.com xuqyfw.com xuruowei.com xushenghb.com xushunda.com xusplastic.com xussb.com xusss.com xuvol.com xuweidj.com xuwenliang.com xuxian.com xuxian.me xuxiang.com xuxueli.com xuxusheng.com xuyalipin.com xuyangny.com xuyanmaoyi.com xuyechem.com xuyi.net xuyongrongmei.com xuyu56.com xuyueswkj.com xuyunjt.com xuzai.com xuzhi.net xuzhoufabu.com xuzhoujob.com xuzhouma.com xuzhoumuseum.com xuzhounano.com xuzhousports.com xuzhouwater.com xuzpazms.com xv5.com xvacuum.com xvcdmo.com xvhttu3c9.com xvista.com xvjhzuc.com xvnez.org xvuikerk.com xvwprdk.com xw-chip.com xw-planning.com xw-scm.com xw1806.com xw360.com xw365.com xw501.com xwabx.com xwadv.com xwamp.com xwan.com xwb8.com xwbank.com xwcbgg.com xwcx6.com xwcx666.com xwcxgroup.com xwdsp.com xweb.vip xwei.tv xwfintech.com xwfls.com xwfruits.com xwg.cc xwgl.cc xwhb.com xwhodesign.com xwhosp.org xwinvip.com xwjqr.com xwjr.com xwjy.org xwkjcms.com xwlcdfactory.com xwlxw.com xwmyw.com xwog.com xwood.net xwpbj.com xwpx.com xwscg.com xwshensuofeng.com xwtcmh.com xwtele.com xwuad.com xwuorvhz.com xwx.mobi xwxguan.com xwxwh.com xwy-powder.com xwylhh.com xwyun.net xwzc.net xwzxldfx.com xx-industrial.com xx-motor.com xx-sapce.com xx007.com xx186.com xx4a.com xx5515.com xx7z.co xx8g.com xxahsk.com xxaks01080sspao.xyz xxaks01081sspao.xyz xxart.net xxbiquge.com xxbmm.com xxbt.com xxcang.com xxccx.com xxcig.com xxcipharm.com xxcmw.com xxdao.com xxeden.com xxedu123.com xxfbiaa.xyz xxfqc.com xxgd888.com xxghh.biz xxgzz.com xxhd-tech.com xxhnanke.com xxhrd.com xxinficity.com xxingclub.com xxir.com xxjdns.com xxjqgs.com xxjrjxc.com xxjzg.com xxka.com xxkapp.com xxkucun.com xxkxjx.net xxkxw.net xxlcn.com xxlifexx.com xxliudsp.com xxlsmqzs.com xxlwin.com xxmac.com xxmyf.com xxnet.vip xxnets.net xxnmjx.com xxoojoke.com xxorg.com xxparking.com xxpay.vip xxpie.com xxpkg.com xxptcs.com xxpysc.com xxqb5200.net xxqipai.com xxqun.com xxrjm.com xxrmyy.net xxrsm.com xxrxfilter.com xxs8.com xxsb.com xxsfjx.com xxshell.com xxshu.com xxspd.com xxsrmyy.com xxsy.com xxsy.net xxsypro.com xxszxw.net xxtaotao.com xxtiao.com xxtjdz.com xxtlw.com xxtmail.com xxw001.com xxwmy.com xxwolo.com xxwxf.com xxx1577.com xxxbiquge.com xxxcsf.com xxxedu.net xxxfeng.com xxxhhh.com xxxmeng.com xxxx68xxxx.com xxxx88xxxx.com xxxx92xxxx.com xxxx96xxxx.com xxxxxx6.com xxxzzlm.org xxycw.com xxyeyan.com xxyfgy.com xxyhzd.com xxykgl.com xxymdy.com xxymw.com xxyo.com xxys2023.com xxyw.com xxyx.ltd xxyy.co xxyzh.net xxzfgjj.com xxzhushou.com xxzmz.com xxzrs.xyz xxzsgame.com xy-365.com xy-asia.com xy-ddh.com xy-dgyx.com xy-display.com xy-invite.com xy-mp.com xy-technology.com xy.com xy007.net xy120.net xy1212.com xy1758.com xy178.com xy3000.com xy36z.com xy3yy.com xy58.net xy599.com xy980.net xyb2b.com xybch123.com xybhdy.com xybj365.com xybsyw.com xybtv.com xybygc.com xybygw.com xycad.com xycaogen.com xycareer.com xycclass.com xycdn.com xycdn.net xycgd.com xychyy.com xycloud.com xyclouds.com xycms.com xycsq.com xyctgroup.com xycwei.com xycyky.com xyda.cc xydcname.com xydcname.net xydhl.com xydpay.com xydxcloud.com xydyfy.com xydz08.com xyebbs.com xyeidc.com xyeyy.com xyf6.com xyfc.com xyfcw.com xyffsb.com xyffvip.com xyfinechem.com xyfish.com xyfsy.com xyg100.com xygdcm.com xygmed.com xygre.com xygsjt.com xygt666.com xygtea.com xygulou.com xygwh.cc xyh2021.com xyhc.com xyhis.com xyhjd168.com xyhlcd.com xyhospital.com xyhqsh.com xyhtml5.com xyhygs.com xyict.com xyimg.net xyj.link xyj321.com xyj618.com xyjbglass.com xyjj99.com xyjs999.com xyjtzz.com xyjuyuan.com xyjy.net xyjyjt.com xyjyy.net xykgjt.net xykmovie.com xyktjt.com xyl2002.com xylh888.com xylhwdu.com xylink.com xylive.tv xylll.com xylmf.com xymfqb.com xymj.xyz xymlcs.com xynbnb.com xynetweb.com xyngas.com xyniubi.com xynsh.com xyookj.com xyous.com xypifu.com xyppzx.com xypse.com xyqb.com xyqczy.com xyqmall.com xyqxr.com xyqy88.com xyrbszb.com xyre.com xyriaf.work xyrsks.com xyrtv.com xysb.com xysdyrmyygw.com xyshoppingbag.com xyshu8.com xyshuk.com xysjg.com xysmart.com xysstgs.com xystatic.com xystoy.com xyswychgs.com xysy.com xysyzx.com xyszxyy.com xyt-tech.com xytcw.vip xytfy.com xytiyu.com xytjcpj.com xytsoft.com xytsw.com xytzg.com xytzjt.com xyuncloud.com xyunjiasu.com xyunqi.com xyusk.com xyvcard.com xyvcpe.com xyvend.com xyvending.com xyw-wifi.com xyw.com xywclass.com xywlhlh.com xywm.com xywy.com xywyfw.com xywzs.com xyx234.com xyx3d.com xyxcables.com xyxdie.com xyxrmt.com xyxsc.com xyxsns.com xyxsw.ltd xyxww.com xyxy.net xyxy01.com xyxyzz.com xyxza.com xyy001.com xyyao.com xyyb.net xyybs.com xyydnode.com xyyh.xyz xyyksy.com xyykt.org xyyl.com xyyuan.fun xyyuedu.com xyyx82.com xyyy999.com xyyzi.com xyz-jm.com xyz1412.net xyzcdn.net xyzcn.com xyzdict.com xyzdns.xyz xyzele.com xyzfm.link xyzfm.space xyzggg.com xyzimo.com xyzkj.xyz xyzmdzs.com xyzmovie.net xyzop.com xyzs.com xyzshouji.com xyzspeaker.com xyzsq.com xyzttt.xyz xyzvo.com xyzywl.com xz-juming.com xz-soft.com xz.com xz325.com xz3733.com xz3z.com xz6.com xz6699.com xz66gxnnjyl.com xz6y.com xz7.com xz7899.com xz8.com xzairport.com xzaz.com xzb360.com xzbaorun.com xzbco.com xzbhfk.com xzbu.com xzbzq.com xzcblog.com xzcbxg.com xzccjt.com xzcdc.com xzcet.com xzcjyjt.com xzcoder.com xzcr.com xzcykg.com xzdabyw.xyz xzdag.com xzdfcd.com xzdfyy.com xzdtjt.com xzep.net xzepa.com xzfenghe.com xzfesco.com xzfhhz.com xzfile.com xzfwzl.com xzgdsf.com xzggjyzpw.com xzgj.com xzgjj.com xzgqm.com xzgtjt.com xzgxwq.com xzhh966888.com xzhhbfesco.com xzhichang.com xzhizao.com xzhlz.com xzhome.com xzhpck.com xzhyjsjt.com xzhzkd.com xzis.org xzjhgt.com xzjiufa.com xzjsxy.com xzjtkg.com xzjy.net xzkd.com xzking.com xzkssb.com xzksyy.com xzkwjtzyy.com xzkx.com xzldbl.com xzlgjt.com xzlogo.com xzlres.com xzlsqy.com xzltrq.com xzltzc.com xzlzf.com xzm56.com xzmai.com xznqcc.com xznqnews.com xzoo.org xzpf110.com xzpm.com xzpoll.com xzport.com xzpxrc.com xzqh.org xzqixing.com xzqrmyy.com xzqxj.com xzrbw.com xzrcfc.com xzrcyy.com xzrdwq.com xzriit.com xzsckj.com xzsdszx.com xzsdyyy.com xzsec.com xzsis.com xzskfyy.com xzsmartmetro.com xzsmlq.com xzsnw.com xzstatic.com xzsthj.com xzsw.net xzswjt.com xzszb.net xzszjt.com xztcm.com xztdesign.com xztsjf.com xztzb.com xzuan.com xzvfd.xyz xzw.com xzw.pw xzwanda.com xzwhg.com xzwhlyjt.com xzwy.com xzwyxh.com xzx.com xzxjkyy.com xzxkjd.com xzxw.com xzxx.com xzxxlcp.com xzyhealth.com xzyituo.com xzyjl.com xzynyy.com xzzh.com xzzhbsq.com xzzhongye.com xzzhtc.com xzzlyy.com xzzp.net xzztly.com xzzulin.com y-feng.com y-i-y.com y-lotus.com y-os.net y.to y007.com y1995.com y1v.com y2002.com y2531.com y3pm.com y5000.com y55l6.com y56.com y5663.com y5api.com y5coin.com y5kfpt.com y5news.com y5store.com y617.com y67.net y77.cc y78r.com y80s.com y8cyx6fvyxk3hs.com y8l.com y92ft2vz.com ya-bo888.com ya-marathon.com ya17.com ya19si8.lol ya247.com yab44.com yabais.com yabaite.com yabandpay.com yabang-qhpharm.com yabet03.com yabet08.com yabet888.com yabet99.com yabo.com yabo00.com yabo0000.com yabo016.com yabo023.com yabo063.com yabo072.com yabo077.com yabo083.com yabo085.com yabo098.com yabo159.com yabo170.com yabo189.com yabo199.com yabo2025.com yabo552.com yabo593.com yabo602.com yabo64.com yabo6600.com yabo691.com yabo70.com yabo75.com yabo7755.com yabolive.com yaboo-cn.com yaboshi0777.com yabyy.com yac8.com yace17.com yachtsinchina.com yacol.com yacou.net yacto-tech.com yadancoffee.org yadao8.com yadashi.com yadatong.net yadilite.com yadingtour.com yadongjf.com yadran.com yadugroup.com yadunyun.com yaduo.com yaeherhealth.com yaersen.com yaexun.com yaeyy.com yafangyiyuan.com yafco.com yafdev.com yafeilinux.com yafshb.com yago-mall.com yahacode.com yahaha.net yahaizi.com yahanmr.com yahboom.com yahong-mold.com yahoo001.com yahuayunshu.com yahuhost.com yahui.cc yahui.hk yahuishou.com yahunet.com yahxxcl.com yaimg.com yaitest.com yaiyuan.com yajxc.com yake123.com yake5.com yakgamer.com yakjhfh.com yakool.com yakup.info yalayi.com yalayi.net yalewoo.com yalianedu.com yaliaojie.com yalikongzhi.com yaling8.com yalishiyanji.com yalj.net yalongbay.net yalqq8976.com yamaijia.net yameisj.com yamibo.com yamoke.com yan-grh.com yan-jian.com yan678.com yanagou.net yananpharm.com yanbaike.com yanbaohui.com yanbaolong.com yanbeige.com yanbinghu.com yanbm.com yanbmn.com yanboyuan.com yance.wiki yanchebang.com yancheng-culture.com yanchengdj.com yanchengjtgz.com yanchengzx.com yanchupiao.com yanchupiaojia.com yanchupiaowu.com yandaco.com yandianying.com yanding.com yandui.com yanduyiyuan.com yanedu.com yanfabu.com yanfen.online yanfeng.com yanfengauto.com yanfukun.com yang99.fun yangbentong.com yangbinlvshi.com yangchanji.com yangchenghudzx.com yangchenglianhe.com yangcheyongche.com yangchunjian.com yangcong.com yangcong345.com yangcongchufang.com yangdongjia.com yangfannie.com yanggang-group.com yanggeng.com yanggu.tv yangguangxinye.com yangguanjun.com yangguiweihuo.com yanghd.com yanghong.art yanghuaxing.com yangji.com yangjibao.com yangjie.li yangjigroup.com yangjinyou.com yangjisen.com yangk6668.com yangkeduo.com yangki.net yangkun.net yanglaocn.com yanglaofuwu365.com yanglaotiandi.com yanglee.com yangli.com yangliping.com yangliq.com yanglong.pro yangluojob.com yangmao.info yangmi.net yangmingauction.com yangner.com yangnongchem.com yangoo-global.com yangpanzg.com yangqi.show yangqianguan.com yangqimanhua.com yangqq.com yangqu.com yangsam.com yangsan.work yangsensheng.com yangshengliang.com yangshengtang123.com yangshengtv.com yangshijz.com yangshuolvyou.com yangsihan.com yangstandards.com yangtai.com yangtaiapp.com yangtao.site yangtaolujiu.com yangtengfei.com yangtianb.com yangtong.com yangtse-automobile.com yangtse.com yangwajia.com yangwang.pw yangwangauto.com yangwc.com yangwenlong.org yangwenqing.com yangxiang.com yangxiangdb.com yangxingzhen.com yangxinren.com yangyangad.com yangyangla.com yangyanxing.com yangyi.vip yangyi02.com yangyi08.com yangyi09.com yangyi13.com yangyi19.com yangyingming.com yangyivacuum.com yangyongquan.com yangyq.net yangzhe1991.org yangzhengfang.com yangzhi777.com yangzhihb.com yangzhiriji.com yangzhix.com yangzhongchao.com yangzhoutuozhan.com yangzhouyiyuan.com yangzhu360.com yangziclean.com yangzijiang.com yangziwater.com yangzw.vip yanhaijing.com yanhuamedia.net yanhuoidc.com yaniu.net yanjiao.com yanjiaoapp.com yanjiaoweixin.com yanjinews.com yanjingge.com yanjiubaogao.com yanjiuchubanshe.com yanjiusuo.cc yanjob.com yanjun7858.com yanjunbo.com yankay.com yanke360.com yankon.com yankong.com yanliang.com yanliaofang.work yanlong.shop yanmaiyingyu.com yannv.com yanoda.com yanpengjk.com yanpk.com yanqiao.com yanqingshan.com yanqueai.com yanrongyun.com yanshanmuyuan.com yanshanpump.com yanshaoutlets.com yanshihua.com yanshimei.com yanshishuo.com yanshuoshi.com yansx.com yanta.cc yantai-chuanpiao.com yantaibank.net yantaihr.com yantaijintai.com yantailuoshuan.com yantaiport.com yantaitech.com yantan.cc yantangmilk.com yantao.wiki yantaparking.com yantaqu.com yantian-port.com yantu360.net yantubao.com yantubbs.com yantuchina.com yantudq.com yanue.net yanweihappybirthday.com yanwugroup.com yanxian.org yanxianggroup.com yanxintong.com yanxishe.com yanxiu.com yanxizhu.com yanxurui.cc yanyapeng.com yanyib2b.com yanyidakaoyan.com yanyijingling.com yanyin.tech yanyiquan.com yanyiwu.com yanyizc.com yanyue.net yanyunmail.com yanzhaorc.com yanzhaowang.com yanzhihuisc.com yanzhiwu.com yanzhoulugang.com yao.com yao123.com yao51.com yaobo.net yaocai.com yaocaicang.com yaocaizhongzi.com yaocdn.com yaochengwang.com yaochentech.com yaochixie.com yaochufa.com yaocsoft.com yaodou.net yaodu365.com yaoex.com yaofangwang.com yaofangwang.net yaofei365.com yaoge123.com yaoguo.com yaohaixiao.com yaohuaglass.net yaohuascape.com yaohuiji.com yaohuo.me yaohuo168.com yaoji.center yaojibuyu.com yaojidsfee.com yaojiedianzi.com yaojigames.com yaojiuqq.com yaokaihui.com yaokantv.com yaokeke.com yaoky.com yaolaifen.com yaolan.com yaolandairy.com yaoliangmi.com yaoliwang.com yaolue.com yaolutong.com yaoluu.com yaomai666.com yaomaiche.com yaoman.net yaomv.com yaonano.com yaooxx.space yaopaiming.com yaopharma.com yaopinlenglian.com yaopinnet.com yaoq.net yaoqing.com yaoqun.net yaosai.com yaoshagroup.com yaoshanly.com yaoshimiaolianhua.com yaotia.com yaotiannano.com yaotongjn.com yaotou.com yaoudq.com yaoujc.com yaowan.com yaoxiaoyi.com yaoxuebang.com yaoxun.net yaoyaola.net yaoyedan.net yaoying.vip yaoyl.com yaoyouke.com yaozh.com yaozhigong.com yaozhizhu.com yaozs.com yaozui.com yapingkeji.com yapingtech.com yapp.com yaqilian.com yaqjyj.com yaristyle.com yarncm.com yarward.com yasee-zs.com yashili.com yashowmarket.com yasishuo.com yasiyasi.com yasking.org yasn.com yasudachem.com yasuotu.com yasyy.com yatai.com yataidianli.com yataifr.com yataiinsur.com yatailx.com yataimall.com yataioa.com yataohome.com yatebizhi.com yaterv.com yatiku.com yatiwang.com yato-sh.com yatsenglobal.com yatsoft.com yatv.tv yatyjx.com yaucn.com yauuy.com yawancaiwu.com yawbbs.com yawei.cc yaweijituan.com yawen8.com yawy.cc yaxi.net yaxiaodong.com yaxige.com yaxin888.com yaxinde.com yaxinghbkj.com yaxuntuhang.com yaya.love yayaad.com yayagushi.com yayawan.com yayeschool.com yayihouse.com yayiskq.com yayitianyun.com yayiyun.net yayjrj.com yayouapp.com yaypool.com yayu.net yayunjiqi.com yazhihg.com yazhijian.com yazhougoufang.com yazuo.com yazx.net yb-able.com yb1518.com yb1867.com yb3.cc yb983.com yb999.com yba120.com ybaby.com ybanj.com ybaobx.com ybaomall.com ybbwy.com ybbxkj.com ybc1024.com ybc35.com ybccb.com ybccode.com ybcheck.com ybchen.work ybcjmarathon.com ybcnjg.com ybcxjd.com ybcxz.com ybdbz.com ybdlogistic.com ybe.net ybfljs.com ybgkz.com ybgz.com ybhdmob.com ybi.net ybirds.com ybj.com ybjjsgc.com ybjsk.com ybk001.com ybk168.com ybk6.com yblc.com yblcs.com yblry.com ybm100.com ybmedicine.com ybmilkgoat.com ybqysw.com ybrc128.com ybren.com ybs120.com ybscjp.com ybscpqtlxx.com ybsftd.com ybsjyyn.com ybstjs.com ybstwl.com ybsyyh.com ybt168.com ybtianshantu.com ybtvyun.com ybty.com ybvip.com ybvips.com ybvv.com ybw315.com ybword.com ybxww.com yby1953.com ybyiot.com ybynet.com ybypark.com ybzhao.com ybznzz.com ybzzgh.org yc-exp.com yc-gc.com yc-petronas.com yc-yinhe.com yc-zj.com yc0917.com yc123.com yc123.net yc12313.com yc222.com yc2e.com yc360.org yc370.com yc8.com yc9y.com ycait.com ycamlyy.com ycandyz.com ycangels.com ycaqr.com ycb.com ycbiz.net ycbright.com ycbroker.com ycbus.com ycbus.net ycc.ink yccdl.net yccdn.com yccn.cc ycdext.net ycdfby.com ycdfwater.com ycdongxu.com ycdrh.com ycdryy.com ycduile.com ycdz.shop ycdzcc.com yceshop.com ycfang.net ycfanglei.com ycfbapp.com ycfggc.com ycfog.com ycfybj.com ycfybjy.com ycgame.com ycgj.cc ycgjxx.com ycgslb.com ycgwl.com ycgzgame.com ychanfang.com ychap.com ychcqmu.com ychdzxsh.com ychr.com ychromedgeie.com ychszh.com ychxie.com ychxiex.com ycig.com ycigilink.com yciou.com ycis-bj.com ycis-cq.com ycis-schools.com ycis-sh.com yciyun.com ycjhjsbyy.com ycjingweiranqi.com ycjintou.com ycjinze.com ycjklrq.com ycjljt.com ycjob.com ycjsxy.com ycjt2007.com ycjyjt.com ycjzzsw.com yckceo.com yckceo.vip yckjzsq.com yckkdd.com ycku.com ycleaning.com yclh6.com ycloud.online ycloudlb.com ycloudvip.com yclyq.com ycmae.com ycmlaw.com ycmm.com ycnaxin.com ycnevpds.com ycny.com ycoa0898.com ycool.com ycpack.net ycpai.com ycpec.com ycphkj.com ycpinke.com ycpsy.com ycqin.com ycqq.com ycrcrs.com ycrcw.net ycrh.com ycrkb.com ycrusher.com ycrx360.com ycrysw.com ycs120.com ycscszh.com ycsd.work ycsdryy.com ycsdyyy.com ycshengquan.com ycsjtjt.com ycsound.com ycsrc.com ycsthqrmyy.com ycsystem.com ycsyy.com yct-tec.com yctdyy.com yctxrj.com ycty.org yculblog.com ycur.net ycwalker.com ycwb.com ycwljt.com ycxba.com ycxdryy.com ycxicmall.com ycxiezhu.com ycxinxi.com ycxjtd.com ycxm.com ycxskw.com ycxy.com ycxzlsyxgs.com ycyaw.com ycyck.com ycycut.com ycyhzx.com ycyjkj.com ycym.com ycypin.com ycyunyuk.com ycyz.com ycyzwb.net yczbw.com yczfwy.com yczihua.com yczjkfyy.com yczk.org yczpw.com yczxyy.com yczy5.com yd-data.com yd-jxt.com yd-power.com yd-tec.com yd126.com yd166.com ydadmob.com ydalison.com ydamc.com ydayc.com ydbimg.com ydbmed.com ydbox.com ydc360.com ydcb.com ydce.com ydcloud.cc yddsha2.com yddtiyu.com yddxkj.com ydfeathers.com ydfgq.com ydgj2727.com ydguolan.com ydh.fun ydhex.com ydhexpress.com ydhjj.com ydhl.cc ydhlaz11151.com ydhn.com ydht.com ydhyfs.com ydihi.com ydimmi.com ydjdcjc.com ydjt1166.com ydjt2288.com ydjwy.net ydjy.net ydkj2019.com ydl-sh.com ydl.com ydlcdn.com ydlut.com ydmel.com ydmeng.com ydmob.com ydn5.com ydnewmedia.com ydniu.com ydouu.com ydr.me ydsaso.com ydscan.net ydsjjs.com ydsjpt.com ydsrmyy.com ydstatic.com ydsyyy.com ydt-express.com ydt.link ydtad.com ydtbl.com ydtnotary.com ydtqd.com yduav.com ydwatch.com ydwgame.net ydx2.com ydxphb.com ydxrf.com ydxxt.com ydyb.com ydycdn.com ydyeducation.com ydyj.net ydylcn.com ydyljk.com ydylmtytv.com ydyspc.com ydywh.shop ydyy120.com ydzxyjhyy.com ydzz.com ye1992.com ye3.com ye40.com yead.net yeah.net yeahka.com yeahnic.net yeahteen.com yeahworld.com yeai.com yealink.com yealinkvc.com yeaosound.com yeapcloud.net yearlygreen.com yearnfar.com yeastar.com yeasturias.com yebaike.com yebangyu.org yebaojiasu.com yebinnet.com yeboyzq.com yebrewing.com yecao.net yecaoyun.com yecdn.com yechangktv.com yechengmuye.com yedanguan365.com yedapi.com yedarc.com yedejia.com yedingding.com yedone.com yeduxiaoshuo.com yee5.com yee800.com yeeanbao.com yeeaoo.com yeeauto.com yeecai.com yeecin.com yeecloud.com yeedian365.com yeefeitrip.com yeefire.com yeefung.com yeefx.net yeekang.com yeekit.com yeelight.com yeelink.net yeelogo.com yeemei.com yeemen.com yeemiao.com yeemiao.net yeepay.com yeepaycdn.com yeepbank.com yeepiao.com yeesha.com yeetan.com yeeuu.com yeewo.net yeeyan.com yeeyan.org yeezon.com yefengs.com yegame.com yegaochemical.com yegenyou.com yegoo.com yegrand.com yegu168.com yeguohd.com yehoochina.com yehuisteel.com yeidc.com yeitu.com yejiangye.com yejibang.com yejienet.com yejuu.com yekyc.com yelanxiaoyu.com yelinmall.com yelishi.net yelixiali.com yellowjm.com yellowriver.org yelook.com yelot.com yemacaijing.com yemadai.com yemajun.com yemancomic.com yemaosheji.com yemaosoft.com yemayun.com yemeihuoguo.com yemeisy.com yemengstar.com yemet.com yemhj.com yenlex.com yentechnology.com yeolar.com yeoner.com yepaisz.com yephy.com yeql3hzbd.com yeren86.com yergoo.com yes-chinese.com yes-lcd.com yes115.com yes58.net yes88.com yesacc.com yesapi.net yesbt.cc yesbx.com yeschool.net yescontrols.com yesdotnet.com yesense.com yeshen.com yeshengarts.com yeshine.net yeshitv.com yeshj.com yeshu.cloud yeshu.com yesidos.com yesilicon.com yeskn.com yesky.com yeslicake.com yesmyimg.com yesmywine.com yesonfashion.com yesou.com yesoulchina.com yespearl.com yespik.com yespmp.com yestar.com yestar1992.com yestarcorp.com yestargz.com yestarm.com yestarvip.com yestehotel.com yeston.net yestone.com yesudoo.com yesungroup.com yesuse.net yeswan.com yeswood.com yesxun.com yetaidrink.com yetianlian.cc yetianlian.info yetianzi.com yettos.com yetu.net yewanba.com yewen.us yewuyuan.com yexinggroup.com yeyday.com yeyezhenxuan.com yeyimg.com yeyingkf.com yeyo.cc yeyou.com yeyoucdn.com yeyoujia.com yeyousg.com yeyulingfeng.com yeyun.com yezaifei.com yezhuwq.com yezhuwuyou.com yezi66.xyz yeziapp.com yezipi.net yeziting.com yezixigame.com yezixueyuan.com yezizhu.com yezizx.com yf-ec.com yf-zs.com yf0008168.com yf520.com yf77.com yfanad.com yfanads.com yfano.com yfanqie.com yfbudong.com yfbzb.com yfcache.com yfcalc.com yfcdn.net yfchuhai.com yfcity.net yfcloud.com yfd.xyz yfdc.net yfds168.com yfdts.net yfdurl.com yfdurl0.com yfdurl1.com yfdurl10.com yfdurl11.com yfdurl12.com yfdurl13.com yfdurl14.com yfdurl15.com yfdurl16.com yfdurl17.com yfdurl18.com yfdurl19.com yfdurl2.com yfdurl20.com yfdurl3.com yfdurl4.com yfdurl5.com yfdurl6.com yfdurl7.com yfdurl8.com yfdurl9.com yfdxs.com yfdyf.com yfemj.com yffood.com yffy120.com yffzkl.com yfgg.com yfgj68.com yfhex.com yfhhf.com yfhl.net yfhospital.com yfhxtech.com yfinds.com yfiot.com yfisher.com yfjiakao.com yfjnjc.com yfklxz.com yflcloud.online yfldocker.com yfm99.com yfmac.com yfmhgf.com yfmhw.com yfp2p.net yfpayment.com yfsafety.com yfsail.net yfscdn.com yfscdn.net yfservice.com yfsteel.com yfswjt.com yfswny.com yftxt.com yfty88.com yfvb.com yfway.com yfwnm.com yfworld.com yfwpt.vip yfwqlij.xyz yfycrc.com yfycyboil.com yfygxyy.com yfyky.com yfysjt.com yg-pump.com yg-st.com yg1997.com yg84.com yg8898.com ygbid.com ygbx.com ygc711iq.com ygcgfw.com ygcloud.com ygcooler.com ygct.com ygdatabase.com ygdl.com ygdy8.net yge.me ygeer.com ygei.com yget.me ygfengshui.com ygfmlt.com yggk.net yghsh.com ygibao.com yginsight.com ygjctech.com ygjj.com ygjoy.com ygmsy.com ygread.com ygrtt.com ygsdmedia.com ygsf.com ygsm.com ygsoft.com ygtape.com ygtcpa.com ygtf.net ygtiyu.com ygtl.com ygtq.net ygvyp.com ygwenxue.com ygwh.cc ygwood.com ygx8888.com ygxy.com ygym.org ygzt.net yh-group.com yh0.com yh2000.com yh31.com yh596.com yh598.com yh914.com yh99.cc yh999999.com yhaabva.com yhachina.com yhadmob.com yham.net yhc-card.com yhcangchu.com yhchj.com yhchn.com yhcjcw.com yhcko.com yhcmovie.com yhcplatform.com yhcqw.com yhd.com yhdd365.shop yhdfa.com yhdi.net yhdlcs.com yhdm5.com yhdns.net yhedu.com yhees.com yhgdiopn.vip yhgfb-cn-static.com yhggroup.com yhgmjf.com yhgzjt.com yhhh8888.com yhhjcc.com yhhotel.com yhidc.com yhindustrial.com yhj9.com yhjbox.com yhjcollege.com yhjj.com yhjktgfd.cc yhjx2018.com yhkaq.com yhkbchao.com yhkingdee.com yhkz.com yhlbx.com yhly.shop yhm11.com yhmob.com yhmsfc.com yhmyi.com yhpackaging.net yhppk.com yhqapp.com yhqdashi.com yhqh.net yhqrmyy.com yhquan365.com yhqurl.com yhrcb.com yhrjk.com yhrongde.com yhrsks.com yhs518.com yhsc.com yhshapp.com yhsms.com yhsp.net yhsport.com yhstjt.com yhtclb.com yhthing.com yhtools.cc yhtuchuang.com yhtx.tv yhtzx.net yhurl.com yhwch.com yhwins.com yhwjlp.plus yhwomen.com yhx3318.com yhxincai.com yhxmset.com yhxs3344.net yhxuexiao.com yhydl.com yhyhwy.com yhylc71.com yhyyjk.com yhz18.com yhz2000.com yhz365.com yhz66.com yhzky.net yhzky1.net yhzm.cc yhzm.com yhzrt.com yhzuche.com yi-fengshui.com yi-hall.com yi-i.com yi-jy.com yi-oa.com yi-programmer.com yi-sky.com yi-you.org yi-zhifu.com yi-zhou.com yi020.com yi0600.com yi114.com yi2.net yi6.com yi7.com yi958.com yiai.me yiaini.com yiandrive.com yianjiulao.com yiapp.com yibaijin.com yibaixun.com yiban.io yiban1314.com yibaogao.com yibaojiankang.com yibaotech.com yibei.com yibeiic.com yibeiwangluo.com yibenmanhua.com yibentushu.com yibiao-sh.com yibite.com yiboard.com yiboliu.com yiboow.com yiboshi.com yibotec.com yiboyangguang.com yicai.com yicaiai.com yicaiexpo.com yicaiglobal.com yicaihua.com yicaiykt.com yicamp.com yicang.com yicanggongyi.com yicbo.com yice11.com yicha-yc.com yichadan.com yichafen.com yichangly.com yichangmarathon.com yiche.com yichemall.com yichengfood.net yichengji.com yichengnews.com yichengwangluo.net yicheshi.com yichezhi.com yichi.tech yichip.com yichuan.net yichuntv.com yichuyifan.com yickd.com yiclear.com yicloud.org yicode.tech yicoe.com yicongfound.org yiconmed.com yicuba.com yicungn.com yicx.com yida6666.com yidaba.com yidachem.com yidachina.com yidadrillcollar.com yidagas.com yidahospital.com yidai.com yidaidai.com yidaointernational.com yidaomall.com yidaomobi.com yidaplay.com yidaweb.com yide.com yideamobile.com yidejia.com yidengxuetang.com yidian-inc.com yidian360.com yidian51.com yidiancangwei.com yidianchina.com yidianda.com yidianedu.com yidianfenqi.com yidianhulian.com yidianliangdiansandiansidianwudianliudianqidianbadianjiudianshi.com yidianling.com yidianliulan.com yidianmail.com yidiansz.com yidianting.xin yidianyuan-wawa.com yidianzixun.com yiding-gr.com yidingbao.shop yidingding3.com yidmall.com yidns.net yidong-food.com yidonghua.com yidongtimes.com yidontek.com yidop.com yidoutang.com yidouzhaofang.com yidu-marathon.com yidu.cc yidubbs.com yiduchuan.com yidui.me yiduir.com yidulive.com yidumen.com yidun.com yiduoli.com yiduoxinya.com yiduqiang.com yiduwater.com yiec.com yiernews.com yiexi.com yifajingren.com yifake.com yifan211.com yifancdn.com yifancn.com yifanggl.com yifanghy.com yifanmedia.net yifanshangplus.com yifanyy.com yifatong.com yifei.com yifei.space yifeigufen.com yifeimeiye.com yifeishu.com yifeng-filter.com yifeng-mover.com yifeng.com yifenghudong.com yifengke.com yifengliangyou.com yifengx.com yifengxin.org yifont.com yifu.net yifubao.com yifucj.com yifum.com yifum.hk yifum.net yifutu.com yigao.com yigaosu.com yige.org yigeban.com yigecun.com yigerlife.com yigomob.com yigongdcs.com yigonghl.com yigood.net yigoonet.com yigouu.com yiguanba.com yiguanghuagong.com yiguo.com yiguoimg.com yihafo.com yihaikerry.net yihaiquanyi.com yihaishijia.com yihang.info yihao.com yihao01.com yihaocar.com yihaodian.com yihaodianimg.com yihaoduozhongduan.com yihaojiaju.com yihaomen.com yihaoranjd.com yihaoyunche.com yihchina.com yiheda.com yihedoors.com yihegroup.com yihekf.com yihengyt.com yiherubber.com yihexingyao.com yihong001.com yihong1718.com yihtc.com yihu.com yihu365.com yihuacomputer.com yihuajiaoyu.com yihuan.org yihuanjt.com yihubaijia.com yihubaiying.com yihubg.com yihuichuang.com yihuikeji.vip yihuimg.com yihuiyun.net yihun.com yihuohao.com yiibai.com yiichina.com yiigle.com yiihuu.com yiii.net yiimoo.com yiinet.net yiiwo.com yijia-ai.com yijia.com yijia.ink yijia5.com yijiakao.com yijian-app.com yijian119.com yijiande.com yijiangbao.com yijianjiexi.com yijianlogo.com yijianqutu.com yijianzj.com yijiaqin.com yijiaren3413.com yijiawang.com yijiebuyi.com yijiedai.com yijifen.com yijimaoyi.com yijinghong.com yijingji.com yijingxiehui.net yijintong.net yijirecovery.com yijiupi.com yijiuplus.com yijueculture.com yijuedesign.com yijueweb.com yijun77.com yikag.com yikai.com yikaiye.com yikaiye.net yikang.work yikang1977.com yikangdongf.com yikanxs.com yikaoapp.com yikaochacha.com yikaow.com yikebus.com yikedou.com yikeou.com yiketalks.com yiketianqi.com yikeweiqi.com yikexue.com yikezhengxing.com yikouhy.com yikuaide.com yikuaiqu.com yikuaixiu.com yikuns.com yikuyi.com yilandezhong.com yilantop.com yilanvaas.com yile8.com yilewan.com yileweb.com yileyiqi.com yileyoo.com yileyunssp.com yili.com yilianapp.com yilianmeiti.com yilianyixue.com yiliaosheji.com yilibabyclub.com yilicar.com yilihuo.com yiliit.com yilijet.com yilikim.com yilingarden.com yilingshop.com yilingsj.com yilinweb.com yiliqqstar.com yilishiji.com yiliwater.com yiliysr.com yillionbank.com yilong.com yilongnews.com yilongweiguo.com yilu365.com yilufawh.com yilule.com yiluzouhao.com yilvcheng.com yima.world yima88.com yimaitongdao.com yimakk.com yimao.net yimaoip.com yimapay.com yimashijie.com yimeichu.com yimeihui360.com yimeima.com yimeiya.com yimenapp.com yimenapp.net yimeng.com yimenonline.com yimenseo.net yimenssl.com yimian.xyz yimianmian.com yimiaotui.com yimiaoxia.com yimidida.com yimifund.com yimihaodi.com yimin.biz yimin168.com yimingcul.com yimingkeji.net yimingroup.com yimingzhi.net yimininfo.com yiminjiayuan.com yiminw.com yiminyy.com yimisoft.com yimitongxue.com yimiyisu.com yimuapp.com yimudoor.com yimutian.com yimuymc.com yinbaitu.com yinban.com yinbangbroker.com yinbian.cc yinbin.ink yincat.com yinchar.com yinchenglawyer.com yinchengli.com yinchengpai.com yinchuanwater.com yinchuanzxd.com yindon.com yindu.com yinduchina.com yindudigital.com yindui.net yindunjituan.com yinduzx.com yineitong.com yinengjituan.net yinengkt.com yinengwl.com yinerda.com yinfeiy.com yinfenggr.com ying-sw.com ying-ting.com yingbei365.com yingbio.com yingbozhu.org yingcai.cc yingcaicheng.com yingcankeji.com yingchao-wikipedia.com yingchaozhibo.com yingcheng.net yingchengnet.com yingchuang.com yingchulawyer.com yingci86.com yingdao.com yingde.com yingdev.com yinge.cc yinge.tech yingeye.com yingfangkeji.com yingfeiyun.com yingfeng.me yinggou.com yingguangroup.com yingguantx.com yinghai.work yinghaicar.com yinghanhuyi.com yinghecloud.com yingheedu.com yingheying.com yinghezhong.com yinghuaonline.com yinghuasuan.com yinghuiiot.com yinghuo.art yinghuochong.com yinghuochong.fun yinghuochongjz.com yinghuodd.com yingjia360.com yingjianzhijia.com yingjiesheng.com yingjiesheng.net yingjiesheng.org yingjimall.com yingjinhk.com yingke010.com yingkefuli.com yingkelawyer.com yingkounews.com yingle.com yingleku.com yinglib.com yingligroup.com yinglisolar.com yingliugroup.com yinglunka.com yingmei.me yingmi.com yingming.net yingnor.com yingpaigame.com yingpaikeji.com yingpengbz.com yingpost.com yingriliuti.com yingrongit.com yingshe.com yingsheng.com yingshi-ai.com yingshiyou.com yingso.fun yingsoft.com yingsoo.com yingsun.net yingsx.com yingt.asia yingt.fun yingtai.com yingtaigroup.com yingtaorelian.com yingtaosiyue.com yingtaoyun.com yingteach.com yingtexin.net yingtianit.com yingtianlight.com yingtianwang.com yingtongshe.com yinguobing.com yingworks.com yingwuyuzd.cc yingxi.tv yingxiahome.com yingxiaofangan.com yingxiaoli.com yingxichina.com yingxiong.com yingxiongji.com yingxun56.com yingyang630.com yingyankantu.com yingyecraft.com yingyijin.com yingyinclub.com yingyinglicai.com yingyonghao8.com yingyonghui.com yingyongmiao.com yingyongshichang.com yingyongso.com yingyu.com yingyuchat.com yingyudengji.com yingyuehe.com yingyushijie.com yingyuxiaoshuo.com yingzaocms.com yingzhongshare.com yingzi01.com yingzi02.com yingzicms.com yingzt.com yinhai.com yinhang123.net yinhangchaxun.com yinhanghanghao.com yinhangkadata.com yinhangkahao.com yinhangzhaopin.com yinhe.com yinhe.net yinhecn.com yinheyuedu.com yinhu.com yinhuadm.one yinhuafu.com yinhuatangyiyao.com yinhuchem.com yinhulaser.com yini.org yini8.com yinisun.com yinjia.com yinjiabio.com yinjispace.com yinka.co yinkunwi.work yinlimedia.com yinlingshuyuan.com yinlvaa.com yinmakeji.com yinmaojx.com yinmishu.com yinning.vip yinongtao.com yinpiao.com yinqiao.com yinqiaogroup.com yinrcw.com yinsafe.com yinsfinance.com yinsha.com yinshenxia.com yinshua.cc yinshuahangyewang.mobi yinshuiyu.com yinsuwl.com yintai.com yintechi.com yintime.com yinuo1000.com yinuobeidiao.com yinuochina.com yinuoedu.net yinuotech.com yinvmh.com yinxiang.com yinxiangart.com yinxianggame.com yinxiangmall.com yinxiangqingyang.com yinxiangwuye.com yinxiao.com yinxiaobao.net yinxinbh.com yinxinchina.com yinxing.com yinxunbiao.com yinyangresin.com yinyangshi.com yinyao168.com yinyouapp.com yinyue7.com yinyuegf.com yinyueke.net yinyuemeitu.com yinyuetai.com yinyueyouxi.com yinyuezhizuoren.com yinzhaowang.com yinzhijie.com yinzhupharma.com yinziyan.com yinzuo100.com yioho.com yioulai.com yiovo.com yipai360.com yipaiming.com yipaogan.com yiparts.com yipemail.com yipeng888.com yipiaoyun.com yipigu.com yipihuo.com yipinbowu.com yipingmed.com yipingmi.vip yipingsj.com yipinhr.com yipinpai.com yipinsmart.com yipintemian.com yipinyiwu.com yipsink.com yipujiance.com yipuping.com yiputouzi.com yipuwuyou.com yiq.com yiqi.com yiqi35.com yiqi4.com yiqianbao.com yiqianbao.net yiqianlian.com yiqiao88.com yiqiaochina.com yiqibazi.com yiqibing.com yiqibuduoduo.com yiqicai.com yiqicesuan.com yiqichuangxiang.com yiqicms.com yiqifa.com yiqifa.org yiqifei.com yiqifengtian.com yiqig.com yiqihi.com yiqihuihui.com yiqijian.com yiqijixiang.com yiqikan8.com yiqike.com yiqiming88.com yiqimob.com yiqingyuan.com yiqinzi.com yiqioffice.com yiqipaipingtai.com yiqishai.com yiqishanyuan.com yiqiso.com yiqistore.com yiqitp.com yiqituodan.com yiqiuu.com yiqiwang.net yiqiwin.com yiqixiaofei.com yiqixie.com yiqixiegushi.com yiqiyoo.com yiqiyou.com yiquan-keji.com yiquhai.com yiqujing.com yiquxapp.com yirankejiao.com yiranmeifushi.com yiren001.com yirendai.com yirentong.com yirenwuye.com yirenzhushou.com yirenzuji.com yirgalab.com yirlir.com yirong.com yiruan.la yiruantong.com yiruide.com yiruikecorp.com yiruituo.com yirujs.com yiruniot.com yiruwijojn1.com yiryi.com yisa.com yisanban.com yisanwu.com yisbei.com yisell.com yishalai.com yishan168.com yishang.cc yishangwang.com yishangye.com yishengfanyi.com yishengjiaoyu.com yishidian.com yishihui.com yishihui.net yishion.com yishion.net yishiongd.com yishixue.com yishouapp.com yishs.com yishu168.com yishujia.net yishujie.com yishuliuxue.com yishun.fun yishutang.com yishuzhifa.com yishuzi.com yishuzi.org yishuziti.com yisier.com yisimeimaoyi.xyz yiso.fun yisocms.com yisou.com yisouti.com yisouyifa.com yissimg.com yisu.com yisuan.net yisuddoscdn.com yisuoyi.com yit.com yitai17.com yitaifang.com yitaigroup.com yitaihdbf.com yitanyun.com yitao.com yitaopu.com yitb.com yitcollege.com yitechnology.com yiteholdings.com yitel.com yitelish.com yitesoft.com yitiangroup.com yitianshidai.com yitianxinda.com yitiaoyule.com yiticm.com yitijizhi.com yitisports.com yitoa.com yitong-group.com yitongguan.com yitongmedia.com yitongsolar.com yitonyiqi.com yitoto.cc yitsoftware.com yitutech.com yituyu.com yiubd.com yiupin.com yiuxiu.com yivian.com yivicar.com yivizd.com yiwaiart.com yiwan.com yiwangdujin.com yiwanggo.net yiwangtui.com yiwanlian.net yiwanzhushou.com yiwealth.com yiweb.com yiweiads.com yiweishi.com yiwenyida.com yiwenyizhi.com yiwise.com yiwk.com yiworld.com yiwu56.com yiwubuy.com yiwufair.com yiwugo.com yiwugou.com yiwuguan.com yiwuku.com yiwulianhe.com yiwumls.com yiwupay.com yiwutalk.com yiwuzhaopin.com yiwuzhongxiyi.com yiwz.net yixao.com yixao.net yixc.com yixi.tv yixia.com yixiaai.com yixiaai.online yixianfabu.com yixiangzuji.com yixiansheng.com yixiaobang.net yixiaoyuan.com yixiaozu.com yixiatong.com yixiekeji.com yixin-valve.com yixin.com yixin.im yixin5.com yixincao.com yixincapital.com yixinfinance.com yixinfund.com yixingart.com yixingauto.com yixingguanchang.com yixinli.xin yixintui.com yixinu.com yixiu.cloud yixiubx.com yixiuxueyuan.com yixuan.net yixue.com yixue68.com yixue99.com yixuegr.com yixueks.com yixuelunwen.com yixuexianzhi.com yixuezp.com yixui.com yixun.com yixunjidian.com yixunwu.com yiya520.com yiyacht.com yiyaha.com yiyanche.com yiyang168.com yiyang668.com yiyangadx.com yiyangidc.com yiyangzhuangyuan.com yiyao.tv yiyaodxt.com yiyaohang.com yiyaojd.com yiyaojie.com yiyaoqianyan.com yiyayans.com yiye-a.com yiye-h.com yiye-v.com yiye.ai yiyebang.com yiyedu.com yiyefei.com yiyesheng.net yiyiarts.net yiyifoods.com yiyimh.com yiyisoft.com yiyitech.com yiyitesco.com yiyiu.com yiyiwawa.com yiyongcad.com yiyouliao.com yiyouliuxue.com yiyouqi.com yiyoushu.net yiyu.com yiyuan.com yiyuanjichang.com yiyuanluye.com yiyuanqiang.net yiyuansoft.com yiyuanyi.org yiyuanzhaopin.com yiyukj.com yiyum.com yiyun518.com yiyupack.com yiyusemi.com yiz.vip yizanmeiye.com yizenb.com yizeseafood.com yizhanapp.com yizhang8.com yizhanhulian.com yizhanzx.com yizhaopin.com yizhedian.com yizhengwx.com yizhibi.com yizhibo.com yizhidayu.com yizhifubj.com yizhijia.com yizhikan.com yizhiknow.com yizhiqc.com yizhiqingxie.com yizhitou.com yizhiwechat.com yizhiweixin.com yizhiws.com yizhixiaogame.com yizhoucb.com yizhu-tech.com yizhuan5.com yizimg.com yizlife.com yizu.org yizu.tv yizumi-group.com yizumi.com yizuxing.com yj-fun.com yj-zn.com yj.com yj.ink yj028.com yj36.com yj518.com yjai.art yjbys.com yjbzr.com yjcard.com yjcf360.com yjcp.com yjctrip.com yjdatasos.com yjdzm.com yjfs8.com yjfy.com yjgf.com yjgxcx.com yjhbqx.com yjhnt888.com yjhospital.com yjhyjl.com yjhzb.com yjihua.com yjijy.com yjiyun.com yjjsjt.com yjk.com yjk.im yjkxw.org yjldp.com yjlhq.com yjlin4.com yjlink.cc yjliquan.com yjllq.com yjmc.org yjmuseum.com yjopen.com yjpal.com yjpd.work yjpoo.com yjq.cc yjqegc.com yjr123.com yjrc.com yjrc.net yjrcyw.com yjro.com yjs-cdn.com yjs-cdn1.com yjs-cdn10.com yjs-cdn2.com yjs-cdn3.com yjs-cdn4.com yjs-cdn5.com yjs-cdn6.com yjs-cdn7.com yjs-cdn8.com yjs-cdn9.com yjscloud.com yjsershi.com yjsmodel.com yjsry.com yjssishisi.com yjsswjt.com yjswsht.xyz yjtiyu.com yjtvw.com yjtw.com yjwlnet.com yjwlo.com yjwmidc.com yjwujian.com yjxbgjj.com yjxfz.com yjxlawyer.com yjxsoft.com yjydl.com yjygjjt.com yjygx.com yjyxiyan.com yjyz.com yjz9.com yjzcalzcxm.com yjzf.com yk-bio.com yk-fm.com yk0579.com yk56.com ykai.com ykccn.com ykccn.net ykcer.com ykclass.com ykcuqlt.com ykdgd.com ykdmsy.com ykedu.net ykelai.com ykfc.net ykhongye.com ykimg.com ykinvestment.com ykjljdcss.com ykjtb.com ykkpict.com ykkpict.vip ykmanhua.com ykneng.com ykplg.com ykptg.com ykq.ink ykqj.com ykqnl.com ykqx.com ykrc.net ykrcx.com yksdks.com yksign.com yksjjt.com yksuit.com ykt.io yktchina.com yktworld.com yktz.net ykuee.link ykw18.com ykwater.com ykwin.com ykxwcm.com ykyao.com ykyi.net ykzls.com ykzq.com ykzr.com ykzyyy.com yl-csj.com yl-fc.com yl-scm.com yl.ag yl.vip yl0008168.com yl01.com yl1001.com yl1988.com yladm.com ylallinone.com ylbeef.com ylbloc.com ylbycw.com ylcapsule.com ylchbyfz.com ylcm.net ylcncmy.com ylcxsb.net yldaye.com yldayu.com yldigitallife.com yldmall.com yldndl.com yldrs.com ylduyi.com yldy.net yldzhb.com ylfd.net ylfx.com ylgaoshan.com ylgjsty.com ylgnyy.com ylgs96332.com ylgxgs.com ylhags.com ylhakc.com ylhdgg.com ylhdsl.com ylhfjq.com ylhh.net ylhhny.com ylhmgz.com ylhongjin.com ylhr.net ylhrjxfw.com ylhsrsrc.com ylibi.com ylijh.com ylike.com ylike.net ylitc.net yliyun.com ylizu.com yljcjt.com yljdjx.com yljr.com ylkaite.com ylkbf.com ylkjgame.com ylklyl.com yllhzb.com yllm666.xyz yllt.icu ylmaterial.com ylmf.cc ylmf123.com ylmf888.com ylmfeng.com ylmfwin100.com ylmm.com ylnetworks.com yloo.org ylprinter.com ylq.com ylqk88.com ylqyyr.com ylr114.com ylrb.com ylrj.com ylrq.org ylscgl.com ylscw.net ylsdeyy.com ylsdyyy.com ylsfqyy.com ylsmtnozzle.com ylssgg.com ylssofa.com ylsssgg.com ylstatic.com ylstcgz.com ylstudy.com ylsw.net ylt2008.com yltapi.com yltender.com yltexgroup.com yltlgjzx.com yltpcb.com ylturl.com yltvb.com yltxxx.com ylun8.com ylunion.com yluu.com ylwdec.com ylwl.cc ylwltv.com ylwpark.com ylws.net ylwyw.com ylxdtww.com ylxgf.com ylxhmy.com ylxw.net ylxweb.com ylxyct.com ylxyyy.com ylxyzs.com ylxzgz.com ylyk.com ylyun.com ylyz.com ylzbsj.com ylzbtech.com ylzhaopin.com ylzhsk.com ylzknk.com ylzmjd.com ylzms.com ylzpay.com ylzsy.com ylztwy.com ylzuche.com ylzxmryy.com ylzyhb.com ylzyjx.com ylzz5557.com ylzz5999.com ylzz666.com ylzz6777.com ylzz877.com ym-trans.com ym.link ym.run ym.today ym01.tech ym23.com ym3222333.com ymacg.com ymadly.com ymailcampaign.com ymanz.com ymapp.com ymark.cc ymars.com ymatou.com ymawv.la ymbaidu.com ymbank.com ymcart.com ymcart.net ymcsepu.com ymdoctor.com ymechina.com ymexf.com ymfund.com ymg.cc ymgk.com ymgkimg.com ymhfp.com ymhudong.com ymhui.com ymhuwai.com ymhzpx.com ymiot.net ymisc.com ymj9.com ymjkj.com ymjx8.com ymkuzhan.com ymlfxp.com ymlinks.com ymlt.net ymlt.vip ymm56.com ymmfa.com ymmobi.com ymnsdk.com ympc88.com ympcb.com ymrcw.vip yms.cool ymsoft.team ymsss.com ymsteam.com ymt.com ymt123.com ymt360.com ymtc.com ymtie.com ymtmt.com ymtnet.com ymuuy.com ymvkt.com ymwcds.org ymwl.net ymxinke.com ymxinxi.com ymxlass.com ymyun.com ymyxsw.com ymzer.com ymzsl.com ymzxconf.com ymzy.games yn-tcm-hospital.com yn-tobacco.com yn2007.com yn58.com ynaec.com ynairport.com ynb2dca.com ynbit.com ynbojie.com ynbzxh.com ync365.com yncost.com yncun.net yncunguan.com yncyc1990.com yndaily.com yndcc.com yndkt.com yndzdj.com yneg-ev.com yneit.com ynet.com ynfabu.com ynfmly.com ynfww.com ynfwyy.com ynfxw.com yngas.net yngp.com yngsxy.net yngw518.com ynhkfyy.com ynhl.net ynho.com ynhotel.net ynhouse.com ynhr.com ynhthbkj.com ynhuasong.com ynhzm.com yni84.com ynian.com ynjgy.com ynjiaoyu.net ynjkeji.com ynjkjy.com ynjlgroup.com ynjtt.com ynjttzjt.com ynjtys.com ynkcfc.com ynkgyy.com ynkm88.com ynkmit.com ynlygf.com ynmbwl.com ynmcyl.com ynmec.com ynmlgsgs.com ynmzly.com ynnits.com ynpco.com ynpta.com ynpti.com ynpublish.com ynqjnews.net ynqrmyy.com ynradio.com ynrainbow.com ynrc.net ynrcc.com ynrd.com ynscgg.com ynsdfz.net ynsfhq.com ynshangji.com ynshhyy.com ynshijian.com ynsjg.com ynsjzyxh.com ynsmyy.com ynsnjt.com ynsnw.com ynsrx.com ynsst.com ynstl.com ynsydwzp.com ynsyhkgs.com ynsyy.com ynszfw.com ynszk.com ynszlyy.com yntz.cc yntz.net ynurl.com ynw360.com ynwater.com ynwin.com ynwww.cc ynxdfpr.com ynxingexinxi.com ynxinhua.com ynxiu.com ynxr.com ynxrmyy.com ynxxb.com ynxxwfw.com ynxzy.com ynyc.com ynyes.com ynylhy.com ynyp.com ynytkc.com ynyysc.com ynzaojia.com ynzbxh.com ynzcwl.com ynzg.org ynzp.com ynzqyc.com ynzrf.com ynzs.com ynztrq.com ynztzh.com ynztzxw.com ynzy-tobacco.com ynzzwl.com yo4399.com yoagoa.com yobo.ink yobo360.com yobochina.com yocajr.com yocdev.com yocofs.com yocopi.com yocvn.com yocyxc.com yodak.net yodao.com yodao.info yodao.net yodao.org yodiya.com yodo1.com yodo1api.com yodou.com yoduzw.com yoe365.com yofc.com yofcjs.com yofijoy.com yofish.com yofogo.com yofond.com yofond.net yofus.com yoga-8.com yogeev.com yoghourt.space yogiyogacenter.com yogoip.com yogorobot.com yoher.com yohipay.com yoho.org yohobuy.com yohui.com yohuu.com yojcool.com yojochina.com yoju360.com yoju360.net yoka.com yokacdn.com yokagames.com yokaimg.com yokaverse.com yokechina.com yokemart.com yokmob.com yokong.com yokotop.com yolanda.hk yolcool.com yolewa.com yolexi.com yolinkmob.com yolipai.net yoloho.com yoloogames.com yolyon.com yomhy.com yomiko.cloud yomiko.club yomiko.fun yomiko.tech yomob.com yomocode.com yomuzu.com yonderep.com yondocredit.com yoneihan.com yonex-china.com yong-gang.com yong-ming.com yong9ai.com yonganyiyuan.com yongaomy.com yongchaohuagong.com yongche.com yongche.org yongchengren.com yongdachina.com yongdaoyun.com yongdasteel.com yongdugroup.com yonggu.com yonghe2008.com yongheng.online yongheyl.com yonghongtech.com yonghuivip.com yonghungs.store yongjiang.com yongjiezb.com yongjindl.com yongjukeji.com yongjx.com yongkang56.com yongkao.com yonglibao.com yonglibelt.com yonglin.com yonglinyy.com yonglvtong.com yongmei0537.com yongnangroup.com yongootech.com yongpingziyuan.com yongqianbao.com yongqischool.net yongridt.com yongsheng-sl.com yongshenggroup.com yongshenghn.com yongshengjituan.com yongshikj.com yongsy.com yongtaitech.com yongtaiyun.com yongtu.net yongwangcpa.com yongweigroup.com yongxiandata.com yongxiang.work yongxiangwz.com yongxinby.com yongxinfushi.com yongxinhuangjin.com yongxinshuo.com yongxintex.com yongxinxuexiao.com yongxiuren.com yongyi-valve.com yongyoujia.com yongyu.xyz yongyuenj.com yongzhegroup.com yongzhentang.com yongzhoubus.com yonho.com yonjan.com yonkersz.com yonlive.com yonthin.com yonyou.com yonyouaud.com yonyoubao.com yonyouccs.com yonyoucloud.com yonyoufintech.com yonyougov.com yonyougx.com yonyouny.com yonyouoa.com yonyouup.com yoo-club.com yoo616.com yoo66.com yooc.me yoodb.com yooek.com yoofh.com yoogene.com yoohe.net yoohouse.com yoojia.com yoojing.com yooknet.com yooli.com yooojie.monster yoooooooooo.com yoopu.me yooquma.com yooxlife.com yooxun.com yooyo.com yoozai.com yoozhe.com yoozhibo.cc yoozhibo.net yoozoo.com yopoint.cc yopoint.com yoptech.com yopu.co yopwork.com yopye.com yoqoo.com yoqu.net yorentown.com york-tech.com york33.com yorlaw.com yorui.net yoseleather.com yostar.net yostatic.com yotopic.com you-mi.net you03.com you1ke.com you200.com youacc.com youandme123.com youba.com youba123.com youban.com youbangkeyi.com youbangyun.com youbbs.org youbeichefu.com youbian.com youbibi.com youbike.me youbikecn.com youbohe.com youboy.com youboy.net youboyy.com youcaihua.net youcaiyun.com youcaizhushou.com youcareyk.com youcash.com youcha.net youche.com youchedi.com youchejiuxing.com youchent.com youcheyihou.com youchuhuodong.com youcloud.com youda8.com youdajx.com youdao.com youdaocaifu.com youdaochem.com youdas.com youdashidai.com youdawangluo.com youde.com youdemai.com youdiancms.com youdianyisi.com youdianzhishi.com youdingsuit.com youdingte.com youdong.com youdou.mobi youdubook.com youduzw.com youdwh.com youease.net youedata.com youez.com youfabiao.com youfan.pub youfanerbuy.com youfang123.com youfangou.com youfangzx.com youfanx.com youfen666.com youfengbio.com youfubao.vip youfujc.com youfunlab.com youfutongxinag.org youfuyoucai.com yougababy.com youganghangmoguan.com yougaoji.com yougaoyx.com yougenet.com youginorg.com yougou.com yougu.tv yougumuye.com youguo.com youguoquan.com youguu.com youhaodongxi.com youhaosoft.com youhaosuda.com youhaoxinxi.com youhro.com youhu.net youhua.com youhua.pw youhuaaa.com youhuafuzhi.com youhuas.com youhuashu.com youhugmedia.com youhuiduo.net youhuiguan.com youhundao.com youhuohao.com youhutong.com youideal.net youimg1.tripcdn.com youinsh.com youj.com youjiajk.com youjiands.net youjiangdati.com youjiangzhijia.com youjiao.com youjiao365.net youjiao5.com youjiaxiao.com youjimilk.com youjindi.com youjingnetwork.com youjiuhealth.com youjoy.tv youju360.com youke.co youke.com youked.com youkeda.com youkego.com youkexueyuan.com youkia.com youkia.net youking.com youkongkan.com youkongwan.com youku-dns.com youku.com youkua.net youkuaiyun.com youkud.com youkupic.com youlai.tech youlanw.com youle55.com youlechuhai.com youlecn.com youleliwu.com youlesp.com youletd.com youleyou.com youlian.fun youlianfuwu.com youliangda.com youlianghz.com youliao.com youliao.love youliaobaike.com youliaoyi.com youlingtong.com youlinyouke.com youlionbattery.com youlishipin.com youloft.com youlong123.com youlongciqing.com youlu.com youlu.net youlu6.com youlupei.com youluwx.com youma.cc youmai.com youmanvideo.com youme.im youmeisiji.com youmeng020.com youmengcms.com youmengmob.com youmenr.com youmew.com youmi.net youmiad.com youmian99.com youmiaoyigou.com youmideer.com youmindao.com youmobi.com youneedcrydear.com youneng.com younet.com young40.com youngem.com youngerfeel.com younggas.com youngjoygame.com youngle.site youngle.tech youngor.com youngsunpack.com youni.im younuokeji.cloud youo.net youol.com youonbike.com youpengcx.com youpengw.com youpin898.com youpingame.com youpinhaoche.com youpinimg.com youpinppt.com youpinsanyue.com youpintechs.com youpinx.com youplus.cc youpont.net youpuchina.com youpumao.com youpumao.xyz youqiantu.com youqichuyun.com youqiong.net youqiwu.com youqizhan.com youqo.com youqu.in youqudao.com youquhui.com your-man.com your360loans.com your724sports.com yourbin.com yourcee.com yourchinagent.com yourcollect.net yourdream.cc youren5.com yourjia.com yourongsj.com yourtion.com yourtravelyourchoice.com youruitech.com youscm.com youseen.com yousengshe.com yousenjiaoyu.com youser.cc youshang.com youshaohua.com yousheng.shop youshenggz.com youshenhudong.com yousheyoujia.com youshibeike.com youshifu.com youshihui.cc youshikoudai.com youshixiu.com youshop01.com youshop02.com youshop03.com youshop04.com youshop10.com youshu.cc youshuge.com youshujian.com yousi.com youstong.com youtaidoors.com youtaidu.com youtao55.com youtaojd.com youthi.com youtiandi.com youtianli.com youtianmetal.com youtianz.com youtibao.com youto.club youtoart.com youtochat.com youtoupiao.com youtrans.net youtu.com youtube-dubbing.com youtuzi.com youtx.com youuav.com youuvs.com youwanplay.com youwawa.com youwei-china.com youwei.com youweigroup.com youweihui.com youwo.com youwoxing.net youwu.today youwusc.com youxedu.com youxi.com youxi01.com youxi377.com youxi527.com youxi528.com youxi567.com youxi8282.com youxia.com youxiacg.com youxiagushi.com youxiaju.com youxiake.com youxiake.net youxiamotors.com youxiangclub.com youxiangyx.com youxiaoad.com youxiaoge.com youxiaohou.com youxiaxiazai.com youxibao.com youxibaoku.com youxibd.com youxica.com youxicdn.com youxichaguan.com youxicheng.net youxicitang.com youxicool.net youxidaxue.com youxidr.com youxidun.com youxiduo.com youxifan.com youxigongchang.com youxigt.com youxigu.com youxiguancha.com youxigui.com youxih.com youxihezi.net youxihun.com youxiivf.com youxila.com youximt.com youxin.com youxingapp.com youxiniao.com youxinpai.com youxinshi.com youxinsign.com youxipai.com youxiping.com youxiputao.com youxiqiang.com youxiqun.com youxishuo.com youxitexiao.com youxituoluo.com youxiuhui.com youxiwangguo.com youxiwugui.com youxixf.com youxixinzhi.com youxixj.com youxizhan.com youxuan.com youxuanan.com youxuancdn.com youxuandns.com youxuangu.com youxueke.com youxuetong.com youyacao.com youyacheye.com youyan.xyz youyannet.com youyantech.com youyeetoo.com youyegame.com youyi-game.com youyi800.com youyicun.net youyierp.com youyigame.com youyiguke.com youyihuibk.com youyijifen.com youyijiu.com youyiqi.com youyiqiaogou.com youyitape.com youyitian.net youyitms.com youyiweizhan.com youyiwms.com youyix.com youyixue.com youyizhidao.com youyo88.com youyogame.com youyong360.com youyou.com youyou001.com youyou234.com youyoufood.com youyouwin.com youyuan.com youyudf.com youyuegame.com youyuela.com youyuit.net youyur.com youyuwenhuay.com youyuwo.com youyy.com youzack.com youzan.com youzanyun.com youzhai.com youzhan.org youzhanjia.com youzhao.com youzhenhua.com youzhi.net youzhi99.com youzhicai.com youzhicn.com youzhiwk.com youzhixueyuan.com youzhiying.com youzhiyouxing.com youzhou-knife.com youzhu.com youzhuan.com youzi02.com youzibuy.com youzijie.com youzijimu.com youziku.com youzikuaibao.com youzipay.com youzu.com youzuanmy.vip yovisun.com yovocloud.com yovole.com yovyuan.com yowooa.com yoxiha.com yoximi.com yoxmail.com yoxuba.com yoxyok.com yoya.com yoybuy.com yoyi.tv yoyiapp.com yoyiit.com yoyile.com yoyo007.com yoyo1900.com yoyo2008.com yoyoask.com yoyoer.com yoyojacky.com yoyojie.com yoyokko.com yoyoogo.com yoyosc.com yoyotown.com yoyou.com yoytang.com yoyucn.com yoyv.com yozodcs.com yozodoc.com yozodocs.com yozooffice.com yozosoft.com yozsc.com yozyn.com yp001.com yp007.net ypank.com ypattern.com ypblkm.com ypc-fc.com ypfph.com ypgyyq.com yph-shop.com yphbuy.com yphuifu.com ypiao.com ypicw.com ypjiameng.com ypjsgl.com ypkc.com ypkegroup.com ypky.net yplady.com yplog.net yplogistics.com yplsw.com ypmail.work yppp.net ypppt.com yprh.com ypshengxian.com ypshop.net ypstech.com ypwater.com ypxiixs.xyz ypyyjt.com ypzdw.com ypzhushou.com yq-zc.com yq2404.com yqacg.com yqb.at yqb.com yqb920.com yqbank.com yqbdt.com yqbimg.com yqbimg.net yqchjd.com yqcn.com yqcsbqxj.com yqdtv.com yqelect.com yqfcw.net yqfml.com yqfoodec.com yqfxw.net yqh.com yqh1969.com yqh5.com yqhlm.com yqjtgs.com yqk889.com yqk8ku.com yqkddm.com yqkk.link yqlzq.com yqmb001.com yqmengyou.com yqmh.com yqmls.com yqms.net yqmsn.com yqn.com yqphh.com yqrc.com yqrcw.com yqrtv.com yqsbz.com yqslmall.com yqsn.com yqtg.cc yqtkgzbk.com yqtsgg.com yqw188.com yqwfpy.com yqwxw.cc yqwyx.xyz yqxiuyoung.com yqxs.cc yqxsg.cc yqxsge.cc yqxxjy.com yqy021.com yqybzhan.com yqyu.com yqzww.cc yqzww.la yqzww.net yqzwww.com yqzxx.net yr-info.com yr17.net yr3.com yra2.com yracc.com yrapp.net yrcbank.com yrdart.com yretc.com yrglass.com yrgx168.com yrhct.com yrmpay.com yrobot.com yrom.net yrtgame.com yrtyyds.com yruan.com yrucd.com yrw.cc yrw.com yrwy.com yrxitong.com yrxsw.com yryz.com yrz.name yrzjw.com ys-fj.com ys-oss.xin ys.cc ys001.com ys0431.net ys121.com ys133.com ys137.com ys168.com ys1898.com ys2345.com ys4fun.com ys630.com ys7.com ys720.com ys8.com ys991.com ysaedesign.com ysali.com ysbopet.com ysbz168.com yscase.com ysch.cc ysclass.net yscq.com yscro.com ysczw.com ysdq8.com ysdwe.asia ysedu.com ysej.com ysemi.com ysepan.com ysepay.com ysext.com ysfog.com ysgang.com ysgfood.com ysghh.com ysgtg.com ysgushi.com yshp.net yshshuimitao.com yshsports.com yshw1.com yshzjt.com ysicing.net ysidcz.com ysiis.com ysirv.com ysjcyxgs.com ysjdaijia.com ysjf.com ysjianzhan.com ysjkbk.com ysjwj.com yskcsj.com yskjz.com yskjzj.com yskxjy.com yslcw.com yslpaint.com yslqo.com yslw.com yslyhr.com yslzc.com ysmeet.com ysmiji.com ysmine.com ysmir.net ysn.cc ysnews.net ysod.com ysok.net ysol.com ysosuo.com ysplay.com ysrencai.com ysrh.com ysrzdb.com ysslc.com yssp88.com yssql.com yssrmyy.com ysstech.com ysszzs.com yst100.net ystan.com ystb.com ystbds.com ysten.com ystencdn.com ysts.cc ystsx.com ystzzy.com ysug.com ysupan.com ysw1950.com ysw68.com yswebportal.cc yswh.com yswlgame.com yswswkj.com yswu.net yswyyds.com ysx8.vip ysx9999.com ysxapp.com ysxs8.com ysxswz.com ysxts.com ysxyhtz.com ysxzls.com ysys.com ysyycv.com yszpwatch.com yszx99.com yszxx.net yszyun.com yt-ma.com yt-taili.com yt-xinpeng.com yt0.cc yt1998.com yt2.net yt69.com yt698.com ytaotao.net ytaxx.com ytbainakeji.com ytbbs.com ytbfilm.com ytbt.cc ytcables.com ytcbh.com ytccr.com ytchangyang.com ytcj.com ytcnc.net ytcutv.com ytdaily.com ytdcloud.com yte1.com ytecn.com ytedi.com ytelc.com yteng.net ytesting.com ytf8888.com ytfcjy.com ytg666.com ytgas.com ytghnb.com ytgos.com ythairui.com ytholidayplaza.com ythospital.com ythouse.com ythzg.com ytjcpj.com ytjiage.com ytjlc.net ytjob.com ytjpkj.com ytjqjt.com ytjunyue.com ytkiewvf.cc ytkj2010.com ytlh120.com ytlvbao.com ytmachinery.net ytmc.press ytmedia.tv ytmgz.com ytmingju.com ytnetgame.com ytnstone.com yto-jsd.com yto-lgs.com yto-lgs.net yto.vip yto.xin yto56test.com ytocargo.com ytoexpress.com ytoglobal.com ytogroup.com ytoholding.com ytokj.com ytokj.net ytoluohan.com ytoluohan.net ytoluohan.xin ytop8.com ytphq.com ytport.com ytpowder.com ytpp.com ytpu.com ytqh-electric.com ytrain.com ytrcw.com ytrdc.com ytrlzyw.com ytrmtzx.com yts88.com ytsanchuan.com ytsense.com ytsfc.com ytshipin.com ytsyy.com ytszg.com yttxcs.com ytud.net ytuqy.com ytusmart.com ytwater.com ytxedu.com ytxinhai.com ytxinyan.com ytxsc.com ytxww.com ytyaoye.com ytyhdyy.com ytyz.net ytyz.org ytzhihui.com ytzq.com ytzww.com yu-electronics.net yu163.com yu4l.com yu72.com yu7l.com yuaigongwu.com yuaiweiwu.com yuan2808.com yuan7i.com yuanabsorber.com yuanbaobaoxian.com yuanbaokc.com yuanbaotaoche.com yuanbei.biz yuanben.io yuanbin.me yuancangipr.com yuancdn.com yuancefund.com yuanchang888.com yuanchengroup.com yuanchengxiezuo.com yuanchuangyinyue.com yuancoder.com yuanda-fm.com yuandacn.com yuandaocn.com yuandi.com yuandian.club yuandiancredit.com yuandongsl.com yuanf56.com yuanfen.icu yuanfeng021.com yuanfeng1.com yuanfudao.biz yuanfudao.com yuanfudao.ws yuanfudaoschool.com yuanfusc.com yuangongbao.com yuanhaitaiji.com yuanhangqiche.com yuanhangzyt.com yuanhechem.com yuanhengyi.com yuanheyaoye.com yuanhua.com yuanhuixinhai.com yuanjingang.com yuanjingss.com yuanjisong.com yuanjoy.com yuanlai.com yuanlei.net yuanley.com yuanlian365.com yuanlin.com yuanlin365.com yuanlin8.com yuanlvkeji.com yuanma.net yuanmadian.com yuanmait.com yuanmajiaoyiw.com yuanmatao.com yuanmengyouxuan.com yuano.cc yuanpanguoji.com yuanqiao.net yuanqiao.pw yuanqilt.com yuanqingsh.com yuanqisenlin.com yuanrenbang.com yuanrengu.com yuanrenxue.com yuansfer.com yuanshen.com yuanshi-sec.com yuanshichang.com yuanshuflow.com yuansikeji2021.com yuansoti.com yuansouti.biz yuansouti.com yuant.net yuantaobgjj.com yuanteng.net yuantest.com yuantiku.biz yuantiku.com yuantongyizhan.com yuantoushuo.com yuantu.info yuantuedu.com yuantujun.com yuantutech.com yuanu.com yuanvip.shop yuanweish.com yuanwind.com yuanwsk.com yuanxianmedia.com yuanxinbaoxian.com yuanxinjituan.com yuanyaedu.com yuanyangbj.com yuanyangcoffee.com yuanyangmed.com yuanyeer.com yuanyoumao.com yuanyoutao.com yuanyubusiness.com yuanzhanapp.com yuanzhexi.com yuanzhi.com yuanzhihao.life yuanzhiyijiantong.com yuanzidai.com yuanzige.com yuanzipower.com yuanziyan.com yuanzun.fun yuaoq.com yuapt.com yubaike.com yubangweb.com yuboinfo.com yuboqj.com yucekj.com yucezhijia.com yuchai.com yuchaicd.com yuchaidiesel.com yuchainev.com yuchainz.com yuchaipg.com yuchaizm.com yuchenpharm.com yuchenw.com yuchofoodmachine.com yuchuan.org yuchuantech.com yuci998.com yucoolgame.com yucui.org yucunkeji.com yudamedical.com yudeglobal.com yudiangame.vip yudiaomingjia.com yudiu.com yudoauto.com yudouyudou.com yuduxx.com yue-grh.com yue-tao.com yue365.com yue7.com yuebai.tv yueban.com yueban.net yuebao.ltd yuebei.vip yuebeist.com yuebie.com yueblx.com yuebooemt.com yuecdn.net yuecheng.com yuecong.club yueda.com yuedainvest.com yuedaoec.com yuedarzzl.com yuedatc.com yuedianedu.com yuedisk.com yuedsk.com yuedu.pro yuedu88.com yuedufang.com yueduji.com yuedujiayuan.com yuedunovel.com yueduwen.com yueduwu.com yueduwuxianpic.com yueduyun.com yuegongyutu.com yuegowu.com yuegui.shop yueguisuchong.com yuehaifeed.com yuehaowy.com yueimg.com yueji.com yuejiewangluo.com yuejikeng.com yuejob.com yuejuanbao.com yuejuwang.com yueka.com yuekenet.com yuekesoft.com yuekesoft.net yuekeyun.com yuelanxinghe.com yueliangshi.com yuelongchina.com yuelongdzc168.com yueloo.com yuelu.net yuelun.com yuelvxing.com yuemagroup.com yueme.tv yuemei.com yuemicn.com yueniuzq.com yuenongren.com yuenshui.com yuenwooping-truelegend.com yuenyled.com yuepaijia.com yueqi.com yueqiji.com yueqikan.com yueqingchayuan.com yueqiweixiu.com yueqiyou.com yueque.com yuequtech.com yuer.com yuerbao.com yueren123.com yuerenjt.com yueru.com yuerugou.com yuesekaer.com yueserve.com yueseyuewei.com yueshenggame.com yueshifengyin.net yueshitv.com yuesuoping.com yuetengiot.com yueting.net yuetingapp.com yuetj.com yuetu.tech yuetuvip.com yuetuvip.net yuewanggd.com yuewei007.com yueweimusic.com yuewen.com yuexiamen.com yuexiangpin.com yuexiangspace.com yuexindianqi.com yuexing.com yuexingchem.com yuexinship.com yuexirc.com yuexiren.com yuexiu-finance.com yuexiu.com yuexiudevelopment.com yuexiufoods.com yuexiuleasing.com yuexiuproperty.com yuexunedu.com yuexw.com yueya.net yueyaa.com yueyan365.com yueyangshop.com yueyangyy.com yueyat.net yueye7.com yueyear.com yueyouxs.com yueyq.com yueyu114.com yueyuanzhiye.com yueyues.com yueyueworld.com yueyueyd.com yueyuez.com yueyundns.com yueyuzhushou.com yuezeyi.com yuezhicn.com yuezhiding.com yuezhinan.com yufanlogistics.com yufanwei.com yufeng05.com yufenggroup.com yufenjiameng.com yuflc.com yufuid.com yufuid.net yugasun.com yugenmed.com yugew.com yuglf.com yugongw.com yugudz.com yuguimedia.com yuguo.com yuguowang.net yugusoft.com yuguz.com yuhaids.com yuhaiyiya.com yuhaochemical.com yuhaotime.com yuhaozhixing.com yuheii.com yuhein.com yuhengcheng.com yuhocare.com yuhongchem.com yuhongpharm.com yuhou.com yuhougame.com yuhsoft.com yuhuagu.com yuhuaholding.com yuhuanghuagong.com yuhucoldchain.com yuhuijob.com yuhx.com yui06111shga.com yui06130shga.com yui06131shga.com yui06161shga.com yui06171shga.com yujia.com yujiahui.com yujianai520.com yujianpay.com yujianxiaomian.com yujiawuliu.com yujiefs.com yujifruit.com yujingkj.com yujiu.vip yujpa.com yujunjie.com yujunren.com yukaidi.com yukaiprecision.com yukeinfo.com yukeweb.com yukexinchem.com yukicat.net yukicomic.com yukiovo.com yukuai.com yukxw.com yulangair.com yule114.com yule263.com yuledaily.com yulefm.com yulehezi.com yuleie.com yulejiaodian.com yulekan.com yulekoudai.com yuleqiu.com yulhe.com yuli.be yuliancn.com yuliang-sh.com yulicdn.com yulinapp.com yulincard.com yulindxgjj.com yulinedu.net yulingtianxia.com yulinhuaran.com yulinjue.com yulinqj.com yulins.com yulinshidefu.com yulinyw.com yuliqx.com yulong.com yulongdt.com yulongjun.com yulongpc.com yulongsteelpipe.com yulongtour.com yulongwanski.com yuloo.com yulore.com yulorepages.com yulu1.com yulu99.com yuluju.com yuluyao.com yulv.net yumao.com yumaochuhai.com yumaoclub.com yumaoshu.com yumchina.com yumi.cc yumi.com yumimobi.com yumingguwen.com yumingyouhui.com yummy.tech yumstone.com yun-ac.com yun-dns.com yun-gu.com yun-idc.com yun-img.com yun-jinrong.com yun-jintong.com yun-kai.com yun-live.com yun-qu.com yun-wp.com yun123.com yun5.vip yun61.com yun88.com yunadmins.com yunalias.com yunannet.com yunaq.com yunarm.com yunassess.com yunaw.com yunba.io yunban.com yunbaofei.com yunbaolai.com yunbaoming.com yunbei.com yunbiao.tv yunbiaowulian.com yunbiaozhun.com yunbiji.com yunbisai.com yunbohealth.com yunbook.vip yunbu.me yunbugame.com yunbuzhan.com yuncai5.com yuncaioo.com yuncdn.bid yuncdn123.com yuncdn263.com yuncdndun.com yunce.work yuncechina.com yunceng.com yunchelogistics.com yuncheng.com yunchexing.com yunchip.com yunchonglife.com yunchongmob.com yunchou.com yunchuan.info yuncii.com yuncitys.com yuncloudauth.com yuncname.com yuncode.net yuncuntu.com yund.tech yunda56.com yundaex.com yundagongyi.com yundagroup.com yundalog.com yundaltl.com yundangan.com yundangnet.com yundaomen.com yundasys.com yunde.net yundianjia.com yundianseo.com yundiantech.com yundingdun.com yundongfang.com yundonghao.com yundongit.com yundousoft.com yundui.cc yunduimedia.com yundun.com yundun.shop yunduncdn.com yunduncdns.com yunduncname.com yundunddos.com yundundns.com yunduns.com yundunwaf.com yundunwaf1.com yundunwaf2.com yundunwaf3.com yundunwaf4.com yundunwaf5.com yunduocrm.com yunduoke.net yunduoketang.com yunduolp.com yundzh.com yuneach.com yunerba.com yunews.net yunexam.com yunexpress.com yunfabiao.com yunface.com yunfalv.com yunfan.com yunfan0739.com yunfancdn.com yunfangtan.com yunfanka.com yunfanyouxi.com yunfei89.com yunfeihudong.com yunfeitech.com yunfeiyang.com yunfengdie.com yunfutang8.com yunfutech.com yunfuwuqiba.com yungangbj.com yungao-ssp.com yungao.mobi yungbang.com yungengxin.com yungongchang.com yungotec.com yungou618.com yungouos.com yungousj.net yungpu.com yungu.org yunguajibao.com yungujia.com yunhaicangshu.com yunhaike.com yunhaiqiao.com yunhaisteel.com yunhaoka.com yunhaoren.com yunhe518.net yunhedata.com yunhehudong.com yunheit.com yunhesanwan.com yunhetong.com yunhou.com yunhuangroup.com yunhuaq.com yunhuasheji.com yunhuashu.com yunhuijing.com yunhulu.org yunhuotong.net yunifang.com yunify.com yunio.com yunip.com yunipo.com yunji.work yunji.xin yunjian.com yunjian.net yunjiasu-cdn.net yunjiasu.cc yunjiasu.com yunjiasu360.com yunjiazheng.com yunjichaobiao.com yunjie.art yunjiemi.net yunjifarm.com yunjiglobal.com yunjing720.com yunjingdian.net yunjinggo.com yunjinginc.com yunjitele.com yunjiweidian.com yunjix.com yunjuwuliu.com yunkaiguan.com yunkangdoctor.com yunkanghealth.com yunkanpan.com yunkawulian.com yunkd.com yunke.com yunkejituan.com yunken.com yunketop.com yunkezan.com yunkuaimai.com yunkushop.com yunlaiwu.com yunlangtuanjian.com yunlie.net yunlietou.com yunliketech.com yunlinghang.com yunlitz.com yunliunet.com yunlsp.com yunlucn.cc yunma99.com yunmai.com yunmayi.com yunmc.vip yunmd.net yunmeipai.com yunmell.com yunmengdata.com yunmianqian.com yunmoseo.com yunmoxing.com yunn-tech.com yunna.me yunnan.vip yunnancoffee.org yunnandns.com yunnanjun.com yunnanlong.com yunnanuu.com yunnao.com yunneidongli.com yunos-inc.com yunos-tv.com yunos.com yunpan.com yunpansou.cc yunpanx.com yunparking.cloud yunpay.cc yunpei.com yunpian.com yunpiao.net yunqi.org yunqi2050.com yunqi6.com yunqiba.com yunqifly.com yunqiju.com yunqikecrm.com yunqingugm.com yunqishi.net yunqishi8.com yunqishuju.com yunqiyqh.com yunque360.com yunquna.com yunrang.fun yunrenshi.net yunrg.com yunrongu.com yunruicloud.com yunruikj.com yunruizz.com yunsd.net yunser.com yunshan.net yunshangdian.com yunshangguangdong.com yunshanghangzhou.com yunshangkj.com yunshangnc.com yunshangshou.com yunshangsuzhou.com yunshangxuzhou.com yunshangzhejiang.com yunshanit.com yunshanmedical.com yunshanmeicai.com yunsheng.com yunsheng999.com yunshibuluo.com yunshicloud.com yunshiketang.xyz yunshipei.com yunshow.com yunshunxx.com yunshuren.com yunshuwh.com yunsiya.com yunsom.com yunsong.com yunsou168.com yunssl.com yunsuan.org yunsuanzi.com yunsuo.com yuntaigo.com yuntask.com yuntemai.com yunteng-group.com yuntiancloud.com yuntianti.com yuntianxia.com yuntingbo.com yuntingiot.com yuntisoft.com yuntongauto.com yuntongbu.com yuntongcloud.com yuntongshuke.com yuntongxun.com yuntongzy.com yuntop.com yuntsg.com yuntu.io yuntue.com yuntuiweishang.com yuntuoguan.cc yuntus.com yuntus.net yuntust.com yuntuys.com yuntyfilter.com yunupay.com yunverify.com yunvm.com yunwei8.com yunweibang.com yunweipai.com yunweiwl.com yunwenkeji.com yunwenxue.com yunwins.com yunwuxian.net yunxi.cc yunxi.net yunxi.tv yunxi10.com yunxiacn.com yunxianchang.com yunxiao.com yunxin123.com yunxin163.com yunxinapi.com yunxindai.com yunxindns.com yunxinfa.com yunxinfw.com yunxing123.com yunxingslb.com yunxinhi.com yunxinhy.com yunxinrtc.com yunxinshi.com yunxinsvr.com yunxinvcloud.com yunxinvideo.com yunxiren.com yunxish.com yunxiu.com yunxs.com yunxuetang.com yunxunmedia.com yunxya.com yunyangwang.com yunyazu.com yunyi-china.com yunyi-dd.com yunyibiji.com yunyichong.com yunyihudong.com yunyin.org yunying001.com yunyingbiotech.com yunyingdashu.com yunyingketang.com yunyingmiao.com yunyingpai.com yunyingxbs.com yunyingxuetang.com yunyis.com yunyiyuan.com yunyize.com yunyoufeitian.com yunyouni.com yunyousj.com yunysr.com yunyu123.com yunyuba.com yunyueqiji.com yunyunvip.com yunyuwuyou.com yunzazhi.com yunzehj.com yunzhan365.com yunzhangfang.com yunzhanggui.net yunzhanghu.com yunzhanxinxi.com yunzhanyou.com yunzhifankeji.net yunzhijia.com yunzhirencai.com yunzhisec.com yunzhitai.com yunzhixiyou.com yunzhizao.net yunzhonghe.com yunzhu100.com yunzhuan.com yunzhuangbei.com yunzhuxue.com yunzitraining.com yunzmall.com yunzongnet.com yunzuji.vip yunzujia.com yunzuowen.com yunzuoye.net yunzz.net yuoucn.com yupao.com yupaowang.com yupeiholdings.com yupinny.com yupoo.com yupu.com yuqianshu.com yuqiao.com yuqiaolong.com yuqinpin.com yuquanhosp.com yuque.com yur09130og.com yur09140og.com yuren.org yuriimg.com yurongoptical.com yurun.com yusa.me yusainorthwest.com yusanmao12345.store yushanfang.com yushangmao.com yushengny.com yushengtang.com yushexuetang.com yushics.com yushin88.com yushiyan.net yushiyuan.com yushu5.com yushunews.com yusi.com yusi.tv yusi123.com yusii.com yusii.net yusinvestment.com yusiyy.com yusmnfgh.vip yusongec.com yusuan.com yusunjewelry.com yusuusnw.com yusxz.com yutai365.com yutainews.com yutaoyouxi.com yuteng.site yutennet.com yutian.cc yutianedu.com yutonad.com yutong.com yutongplay.vip yutongzyc.com yuttz.com yutuwo.com yuucn.com yuudnn.com yuwan-game.com yuwang.com yuwangcn.com yuwanjianshe.com yuwanyouxi.com yuweikuijianzhan.com yuweitek.com yuweiyanwo.com yuwell.com yuwellgroup.com yuwen.net yuwen123.com yuwen360.com yuwenchaoshi.com yuwenmi.com yuwennews.com yuwenxiandaihua.com yux.team yuxianall.com yuxiangwang0525.com yuxianxing.com yuxiaogroup.com yuxiaor.com yuxiaotuo.com yuxicorrosion.com yuxinews.com yuxinoulogistics.com yuxipark.com yuxitech.com yuyangtec.com yuyejt.com yuyicai.com yuyin.tv yuyinct.com yuyinfanyi.com yuyingufen.com yuyoung32.com yuyouyouxi.com yuyu.com yuyue111.com yuyue27.com yuyuecoat.com yuyueshop.com yuyuetec.com yuyuetui.com yuyueweb.com yuyuezhiyangji.com yuyunkj.com yuyuntang.com yuyuntech.com yuzeli.com yuzeli.net yuzhengzixun.net yuzhenhai.com yuzhicaiexpo.com yuzhiguo.com yuzhike.com yuzhong.biz yuzhong.net yuzhongxxw.com yuzhoua.com yuzhouwan.com yuzhouyiyuan.com yuzhua.com yuzhuan.com yuzhulin.com yuzhuw.com yuzijiaoyu.com yuzmshanghai.org yuzone.net yuzua.com yuzundaojia.com yvkkqfy7m.shop yvrdream.com yvv.in yvzfgigpiwmofux.com yw11.com yw160.com yw2005.com ywart.com ywbank.com ywcbs.com ywclxp.com ywdier.com ywditan315.com ywei.org yweisugar.com ywfby.com ywgc.net ywgd.com ywhack.com ywhqs.com ywies-bj.com ywies-gz.com ywies-sh.com ywies-shpd.com ywindex.com ywinf.com ywint.net ywit.xyz ywjinfabag.com ywkefu.com ywky.org ywlandport.com ywnds.com ywnz.com ywopt.com ywork.me ywpark.net ywshouyou.com ywshouyou.net ywsoftware.com ywstsb.com ywt.com ywtd.xyz ywtds.com ywurl.com ywwl.com ywwpay.com ywxue.com ywxww.net ywyanxing.com ywyishi.com ywziwei.com ywzt.org ywzz.com yx-g.com yx-s.com yx-s.net yx0599.com yx090.com yx12345.com yx1312.com yx192.com yx231.com yx643.com yx7088.com yx74.com yx7507.com yx93.com yx988.com yx99.com yxacc6.com yxad.com yxaz.com yxbabe.com yxbao.com yxbhhbkj.com yxbk.com yxbox91.com yxbrand.com yxc.hk yxcal.com yxcax.com yxcc.net yxcity.com yxcxfw.com yxdaily.com yxdd.com yxdh.com yxdimg.com yxdinghuo.com yxdmgame.com yxdou.com yxdown.com yxdr.com yxduo.com yxdwj.com yxecg.com yxeht.com yxen.net yxflzs.com yxfshop.com yxfw.com yxfwai.com yxgames.fun yxgcx.com yxgczx.com yxgf.net yxgfcj.com yxgxbike.com yxgxw.com yxgxz.com yxgzs.com yxhao.com yxhapi.com yxhenan.com yxhhdl.com yxhhr.com yxhi.com yxhimg.com yxhjgs.com yxholding.com yxhqj.com yxhy.asia yxhyu.com yxi.cc yxiangzu.com yxiannetgz.com yxianypin.com yxid.net yxielts.com yxilogistics.com yximgs.com yxin18.com yxinbao.com yxintent.com yxit.net yxixy.com yxjia.com yxjjdby.com yxjkhb.com yxjob.net yxjs.org yxjsjg.com yxjuren.com yxjyy.net yxk120.com yxkfw.com yxkjlcd.com yxkxyghx.org yxlaba.com yxlady.com yxlady.net yxle.net yxlele.com yxlink.com yxlmdl.net yxlqge.com yxlsj.com yxm.com yxmarketing01.com yxmcu.com yxmspx.com yxmxc.com yxn.fun yxnu.net yxnxz.com yxool.com yxopt.com yxou.com yxph.com yxpk.net yxpms.com yxptfs.com yxqiche.com yxrb.net yxrcw.com yxrj.com yxsc33.com yxsea.com yxsj.net yxsos.com yxss.com yxssp.com yxsxhj.com yxt-tattoo.com yxt.com yxtidc.com yxtk.xyz yxttzb.com yxtvg.com yxuankeji.com yxun.net yxwg21lyyn.com yxwh5.com yxwic.com yxwsgame.com yxx-china.com yxxgame.com yxxurl.com yxxzbox.com yxybb.com yxydns.com yxylbz.com yxyy33.com yxyzjx.com yxz.me yxzd.info yxzggame.com yxzhi.com yxzoo.com yxzp.net yxzq.com yxzu.com yxzxgy.com yxzzd.com yy.com yy11.com yy138.com yy1986.com yy2169.com yy2hd.com yy365.com yy4080.com yy502.com yy520.com yy591.com yy845.com yy960.com yyarea.com yyblly.com yybnet.net yybox.cc yycec.com yyclouds.com yyclub.org yyclub.work yycoin.com yycqc.com yycqfw.com yyctrade.com yyczxt.com yydbzz.com yydcs.com yyddss.vip yydl-china.com yyds.co yyds.pink yyds.space yydsmh.com yydsok.com yydszp.com yydy.com yydzh.com yyearth.com yyej.com yyestar.com yyfax.com yyfdcw.com yyfqm.com yyfunning.com yyg.com yyg120.com yyg7.com yygamedev.com yyge.com yygold.com yygongzi.com yygrammar.com yyh78.com yyha168.com yyhao.com yyhh.com yyhn365.com yyhybz.com yyi100.com yyijt.com yyixx.com yyizu.com yyjingyan.com yyjxkj.com yyjzt.com yyk100.com yykj.site yykj2003.com yykj8775.com yykpx.com yylending.com yylivens.com yylm.org yylys.com yymedias.com yyming2.com yymoban.com yynetwk.com yynykj.com yyouren.com yyoz.com yypf-china.com yypjyds.com yypt.com yyq.com yyquan.vip yyqyweb.com yyqyyyy.com yyrc.com yyrec.com yyrenting.com yyrjd.net yyrtv.com yysf.cc yyshangfu.com yystatic.com yysweb.com yyszfsxx.com yyszq.com yytcdn.com yytek.com yytfood.com yytiflytek.com yytingli.com yyuap.com yyutfzv.com yywd.com yywlsj.com yywords.com yyws.net yywsb.com yywsbjb.com yywszzs.com yywt.online yywx888.com yywz123.com yywzw.com yyx.com yyxfilm.com yyxfplayer.com yyxmgl.com yyxsen.com yyxtao.com yyxx100.com yyxxgame.com yyxxgameyw.com yyxyjt.com yyy1389.com yyyeee.com yyyisp.com yyylll.com yyymvp.com yyyncp.com yyyqkq.com yyyqm.com yyyxbl.com yyyy.games yyyyy.run yyz100.com yyzb-live.com yyzdjd.com yyzdm.com yyzf.com yyzf.vip yyzls.com yyzqta.com yyzqtb.com yyzsoft.com yyzw.com yyzx.org yyzxcj.com yyzy-play.vip yyzyytj.com yyzzqk.com yyzzsem.com yz-iot.com yz-kjjt.com yz-li.com yz-machinery.com yz-proton.com yz-show.com yz-xd.com yz0752.com yz168.cc yz2pp.com yz2y.com yz360.cc yz3c.com yz3l.com yz4l.com yzajz.com yzbank.com yzbhn.work yzbo.tv yzbpro.com yzbqzx.net yzbsytl.com yzceg.com yzckjt.com yzcn.net yzcnet.com yzcrown.net yzcsoft.com yzcxx.com yzcyj.net yzcyjy.com yzcyts.com yzdfyy.com yzdhxx.com yzdir.net yzdjkcy.com yzdn.net yzdryer.com yzdx99.com yzdxnews.com yzdyhwh.com yzeco.com yzej.com yzemd.com yzfang.com yzfbgjj.com yzfc8.com yzfcdn.com yzfchat.com yzfdc.net yzfjy.com yzfrkf.com yzftpx.com yzfybj.com yzgcsj.com yzgcyy.com yzggdj.com yzgjgs.com yzgnet.com yzgttm.com yzgzx.com yzh.li yzhbw.net yzhcloud.com yzhdyy.com yzhejin.com yzhi.cc yzhifupay.com yzhmyy.com yzhotels.com yzhp.com yzhqyy.com yzhrhl.com yzhsk.com yzhuali.com yzhx.net yzhyai.com yzie.net yziin.com yzimgs.com yzinter.com yzitc.com yzj.cc yzja.com yzjb.com yzjdgs88.com yzjiaozhai.com yzjj120.com yzjjw.net yzjob.net yzjship.com yzjsxy.com yzjtcyjt.com yzjtech.com yzjyfz.com yzkdfcw.com yzkhfw.com yzkimage.com yzkjpcb.com yzkos.com yzlngi.com yzlxjt.com yzlyxx.com yzmary.com yzmat.com yzmcms.com yzmcxx.com yzmg.com yzmgf.com yzmiao03.com yzmls.com yzmoney.com yznano.com yzncms.com yznn.com yzntv.com yzops.net yzpanstar.com yzpetfood.com yzpfbyy.com yzport.com yzqcw.com yzqgamefun.com yzqx.com yzqzf.com yzra900.com yzrayy.com yzrb.com yzrc.net yzren.com yzrenai.com yzrom.com yzrshop.com yzrsks.com yzrss.com yzrzgroup.com yzs.com yzs.io yzsbh.com yzsbhjt.com yzsfuer.com yzshkjxx.com yzshyzz.com yzsljz.com yzsrmyy.org yzsszw888.com yzstudio.net yzsz.net yzsz3.icu yzszsxh.com yzszyy.com yzt-tools.com yzt888.com yztcdn.com yztchg.com yztjb.net yztzairport.net yzw.cc yzwb.com yzwb.net yzweekly.com yzx0771.com yzxcfdj.com yzxdyrmyy.com yzxw.com yzxxfzy.com yzy-gx.com yzygo.com yzyhyy.com yzyjhg.com yzyouth.com yzywhw.com yzyxart.com yzyxgame.com yzyz.org yzzcyy.com yzzd.com yzzp.com yzzpw.com yzzs.cc yzzsoft.com yzzxjyjt.com yzzxxz.com yzzy20-play.com yzzy29-play.com yzzy31-play.com yzzyimages.com z-bank.com z-henergy.com z-inn.com z-tek.com z.ai z.wiki z0.cc z01.com z0ukun.com z120.com z12345.com z17.link z1987.com z1cdn.com z211.vip z28j.com z2chain.com z2ehospital.com z2imc.com z2sci.com z2u.tv z316.com z318.com z3quant.com z4bgpo.com z574.com z5encrypt.com z5w.net z5z4.com z668.net z6e.com z701.com z729.com z7xz.com z888.net z8q.cc z99.biz z9cdn.com za-cosmetics.com za-doctor.com zabxib.com zac1993.com zachina.org zack.asia zacveh.com zadervice.com zaduonews.com zaecu.com zaeke.com zaepi.com zafinsvc.com zafk120.com zahtb.com zahui.fan zahuishi.com zahuod.com zahuoji.com zai-art.com zai-xian.com zaibaoan.com zaidu.org zaiduu.com zaiemei.com zaifan.com zaigl.com zaiguahao.com zaih.com zaihuangshi.com zaijia.com zaijiawan.com zailaboratory.com zailingtech.com zailouxia.com zaimanhua.com zaiminglvsuo.com zainanjing365.com zaitong.net zaiwai.com zaiweiwx.com zaiwenai.com zaixian100f.com zaixianfanyi.com zaixiangzx.com zaixianjisuan.com zaixiankaoshi.com zaixianps.cc zaixianvip.net zaixs.com zaiyulin.com zaiyunli.com zajiebao.com zajilu.com zajourney.com zakc.group zaker.com zaku.fun zakww.com zalandode.com zallcn.com zallgo.com zallimg.com zalljinfu.com zallsoon.com zallxk.com zamcs.com zampda.net zampdmp.com zampdsp.com zamplink.net zamplus.com zan-live.com zanao.com zanba.com zanbai.com zancar.com zangao.com zangaopet.com zangdiyg.com zangenggroup.com zangft.com zanggekuangye.com zanghaihuatxt.com zanglikun.com zangto.com zangtui.com zangx.com zangyitang123.com zangyitong.com zanig.com zanih.com zankee1955.com zanlaa.com zanmeizhibo.com zanpic.com zanpu.com zantainet.com zanyiba.com zaobang.com zaoche168.com zaodao.net zaodian.com zaodin.com zaodula.com zaofabiao.com zaofacai.com zaogai.com zaojiadoc.com zaojiance.com zaojiance.net zaojiao.com zaojiaxueshe.com zaojiu.com zaojuge.com zaojuzi.com zaojv.com zaoowoo.com zaoqiangzhiheng.com zaowandushu.com zaowuyun.com zaoyang.org zaozuo.com zapak.com zapyamobile.com zaqizaba.xyz zarcw.com zarsion.com zastatic.com zasv.com zasv.net zasysz.com zat.cc zatan.com zatanb1.com zatest.com zaticdn.com zattc.com zauoehg.com zawomkv.com zaxdcredit.com zaxline.com zaxzn.com zaysz.com zazhipu.com zazsz.com zb-kc.com zb1.org zb18.net zb8.com zb800.com zb99.net zbao.com zbao56.com zbbar.net zbbm.net zbbus.com zbbx.org zbc.pub zbc.wiki zbca.com zbcars.com zbchem.com zbcyrq.com zbczce.com zbdedu.com zbdzy.com zbfilm.com zbgala.com zbgarden.cc zbgedu.com zbgl.net zbgscm.com zbhbkj.com zbhot.com zbhouse.com zbhuafx.com zbii.com zbinfo.net zbintel.com zbird.com zbisq.com zbitcloud.com zbiwl.com zbj.com zbj66.com zbjdev.com zbjdr.com zbjiangsu.com zbjimg.com zbjsaas.com zbjwork.com zbjzgroup.com zbkb.com zblcyy.com zblhh.com zblhrl.com zbling.com zbljw.com zblogcn.com zblzm.xyz zbmag.com zbmbj.com zbmeishu.com zbnews.net zbo0n.com zbom.com zbopr.net zboqc.com zbpengxuan.com zbqlm.com zbqtwbzr.com zbra-inc.com zbrhsc.com zbrty.com zbrushcn.com zbsfdy.com zbsjzy.com zbsonline.com zbstatic1.com zbstatic5.com zbsyzx.com zbszkj.com zbt-china.com zbt.com zbt.net zbt100.com zbtaizhan.com zbtbjt.com zbtianao.com zbudbq.sbs zbusa.com zbw315.com zbwbbs.com zbwdj.com zbwg.cc zbwmy.com zbwpay.com zbxcck.com zbxinmeiti.com zbxjgs.com zbxsoft.com zbxyh.com zbxyly.com zbyads.com zbycg.com zbycorp.com zbyinghe.com zbylc.com zbytb.com zbyz.net zbz.com zbzb.org zbzdm.com zbzw.com zbzw.la zc-gs100.com zc-ha.com zc-it.com zc0317.com zc173.com zc532.com zc61.com zc6sigma.com zcaijing.com zcand.com zcbearing.com zcbgy.net zcbm580.com zcccc.com zccninfo.com zccrzx.com zcdiesel.com zcdlkeji.com zcdog.com zcdz1688.com zcedi.com zcedustudy.com zcfc.com zcfeed.com zcfirst.com zcfuhua.com zcfun.com zcfy.cc zcgg.net zcgou.com zcgsfy.com zcgsh.com zchat.tech zchb-water.net zchmbx.com zchmh.com zchospital.com zchrgroup.com zcict.com zcimg.com zcinfo.net zcitidc.net zciv.com zcjbgame.com zcjce.com zcjhsdk.com zcjxedu.com zcjxzl.com zckb001.com zckdwx.com zckp.com zclkj.com zclock.xyz zcloud.world zclqzls.com zcmlc.com zcmol.com zcmpark.com zcnest.com zcoa365.com zcobrand.com zcodesign.com zcofuture.com zcom.com zcomc.com zcoming.com zcooler.com zcosz.com zcowh.com zcpc.net zcpd.cc zcpm.net zcpzj.com zcqh.com zcqss.com zcqtz.com zcrcw.com zcrczp.com zcread.com zcry007.com zcs.cc zcsbbs.com zcscz.com zcset.com zcsweb.com zcszcm.com zctec.cc zctl.net zctpt.com zctt.com zctx.com zctzgr.com zcwin.com zcwlsc.com zcwxjx.com zcwz.com zcxcl.com zcxd9.com zcxn.com zcxsl.com zcycdn.com zczbzx.com zczj.com zczy100.com zczy56.com zczyofficial.com zd-auto.com zd-brake.com zd-dl.com zd-hs.com zd-pm.com zd-power.com zd.biz zd.hk zd200572.com zd315.net zdanfu.com zdao.com zdaoxb.com zdaye.com zdbfjj.com zdbiogene.com zdbnm.com zdcgc.com zdcj.net zdcjw18.com zdcs666.com zdctid.com zddhr.com zddhub.com zddjq.com zddr.com zddream.com zdepay.com zdeqs.com zdevo.com zdfans.com zdfdc.com zdfei.com zdfx.net zdgkyy.com zdgxchina.com zdgzc.com zdh0.com zdh10230lo.com zdh11040lo.com zdh168.com zdhaitao.com zdhaitao.net zdhuoyunbao.com zdhyibiao.com zdiao.com zdic.net zdjt.com zdkfq.com zdkqyy.com zdlink.com zdlpk.net zdm.net zdmimg.com zdmq.com zdmq88.com zdmr.net zdnph.com zdnscloud.biz zdnscloud.com zdnscloud.info zdnscloud.net zdomo.com zdong.net zdpower.com zdrcw.com zdsdp.com zdsee.com zdsfy.net zdsju.com zdslb.com zdsr.net zdtent.com zdvalves.com zdvc.net zdwafis.com zdwallcovering.com zdwang.com zdwfy.com zdwmq.com zdworks.com zdwx.com zdwx.net zdwx.vip zdxlz.com zdyfy.com zdz.la zdzdm.com zdzwtesting.com zdzxtech.com ze-assemble.com ze-clock.com ze-grow.com ze-introduce.com ze-invite.com ze-mp.com ze-wx.com ze5.com zeaho.com zealer.com zeali.net zealquest.com zealsafe.net zebangedu.com zebracdn.com zebraenglish.biz zebraenglish.com zebred.com zecsma.com zeda1.com zedyer.com zeedao.com zeehoev.com zeekrlife.com zeekrline.com zeelis.com zeesin.com zeeteq.com zeetzj.com zeewain.com zegarkirepliki.pl zegnau.shop zego.im zeguoren.com zeheng.com zeidei.com zeiet.com zeisis.com zeisp.com zejiexinxi.com zeju.com zejunpharma.com zeku.com zekv.com zeldacn.com zelinai.com zemc.vip zemismart.com zen-est.com zencheer.com zengdefei.com zengenti.com zengjunpeng.com zengjunyin.com zenglong3d.com zengrong.net zengslb.com zengyongfu.com zengyt.com zengzeng.net zenha.net zenhotspring.com zenith-group.net zenithfashion.asia zenithmining.com zenithspace.net zenixauto.com zenkungforging.com zenlesszonezero.com zenmen.com zenner-metering.com zeno-tech.com zenoven.com zenshine-pharma.com zentao.net zentaopm.com zepcc.com zepdi.com zeperd.com zepp.com zeq366.net zero2me.com zerobreeze.com zerocollege.com zerogfans.com zeroling.com zerongjituan.com zerontruck.com zeroonead.com zeropartner.com zerotogether.net zerseager.com zeruns.com zerustech.com zesee.com zeshengproject.com zeshengshun.online zeshengtecphar.com zesidasi.com zesmob.com zeststore.com zetacn.com zetaijituan.com zetast.com zetbig.com zetcloud.com zettlernb.com zetyun.com zeusai.xin zeuux.com zeuux.org zexiaoqiao.com zeyouquan.com zeyu99.com zeyuan.shop zeyuan123.com zezhengcnc.com zezhenwangluo.com zezhuanggd.com zf313.com zf360.net zf3d.com zfancy.net zfb369.com zfboke.com zfbzhsq.com zfcm.net zfdliot.com zfdmkj.com zfemc.com zfengit.com zffan.com zfgy88.com zfhz.org zfile.vip zfj1441.com zfkg.com zfkjgw.com zfl9.com zfnet.net zfowed.com zfrontier.com zfrykj.com zfsc.com zfservicescn.com zfsf.com zfsjy.com zfsjzx.com zfsoft.com zft.com zftime.com zfty.work zfvnet.com zfw.net zfwlxt.com zfwx.com zfxz.com zfyypt.com zg-gaoling.com zg-gyt.com zg-import.com zg-imsoft.com zg-seastar.com zg114jy.com zg114w.com zg114zs.com zg118.com zg163.net zg3721.com zg388.com zg58.com zgaode.com zgaxr.com zgazxxw.com zgbaili.cc zgbenrun.com zgbfw.com zgbghdw.com zgbk.com zgblh.com zgbmcl.com zgbnt.com zgboke.com zgbszf.com zgby114.com zgbywl.com zgc-bigdata.org zgc261.com zgcbank.com zgcbb.com zgccity.com zgcdiy.com zgcgjn.com zgchawang.com zgchawenhua.com zgchospital.com zgchrx.com zgcicc.com zgcindex.org zgcjm.org zgcjpx.com zgclease.com zgclzzc.com zgcmc.com zgcmlm.com zgcsa.org zgcswhcbw.com zgcszkw.com zgcups.com zgcwpark.com zgcxbs.com zgcznet.com zgczrj.com zgddek.com zgddmx.com zgdjw.com zgdlfzw.com zgdlzb.org zgdmly.com zgdnjj.com zgdqcy.com zgdqjy.com zgdsw.com zgdwzp.com zgdxhbkf.com zgdych.com zgdydyxh.com zgdygf.com zgdztk.com zgeyanwo.com zgfllt.com zgfp.com zgfwgj.com zgfxnews.com zgfzh.com zgfznews.com zgfznj.com zgg.com zggas.com zggbdsw.net zggbhb.com zggcks.com zggd.city zgggws.com zgggz.com zggjgy.com zggjsmc.com zggldgj.com zgglkx.com zgglyun.com zggqzp.com zggroups.com zggtxhw.com zggua.com zggwy.com zggwy.org zggxgp.com zggxhj.com zggxlbc.com zggxsmlt.com zggye.com zggysyw.com zggzgg.com zggzzk.com zgh.com zghaojiaoyu.com zghaopingche.com zghbxh.org zghctc.com zghdch.com zghde.com zghhzx.net zghlzs.com zghongbiao.com zghongqi.com zghotnews.com zghtcd.com zghtedu.com zghtqk.com zghy.com zghzp.com zghzsk.com zgjcks.com zgjct.com zgjgw.com zgjhjy.com zgjianfang.com zgjiaoyan.com zgjiayang.com zgjiemeng.com zgjinglong.com zgjjzyjy.org zgjl123.com zgjm.net zgjm.org zgjmorg.com zgjrcw.com zgjrjw.com zgjrw.com zgjscopper.com zgjsdsj.com zgjsks.com zgjsqw.com zgjsyw.com zgjt518.com zgjtb.com zgjxcad.com zgjxjjw.com zgjymg.com zgjzy.org zgkao.com zgkashi.com zgkawah.com zgkfzz.com zgkjb.com zgkjcx.com zgkjw.org zgkjxww.com zgkjzx.com zgkqth.com zgkqw.com zgkyb.com zglb.org zglcn.net zglcxyxzz.com zglibrary.com zglipin.com zgljl2012.com zglushang.com zglutongjituan.com zglwb.com zglww.net zglxw.com zglyfair.com zglyrc.com zglyz.com zgmba.com zgmcxw.com zgmdbw.com zgmh.net zgmicro.com zgmsbw.com zgmsbweb.com zgmscmpm.com zgmxjjgs.com zgmxl.com zgmzgsx.com zgmzyyzz.com zgnfys.com zgng.com zgnhzx.com zgnnwdkj.com zgnt.cc zgnt.net zgnwp.com zgny.com zgnyw.net zgoa.net zgong.com zgoog.com zgpingshu.com zgpj.net zgps168.com zgpts.com zgpy168.com zgqbyp.com zgqcdt.com zgqczj.com zgqdrc.com zgqkgw.com zgqkk.com zgqw.com zgqywhcbw.com zgqyzxw.com zgqzjt.com zgqzswdx.com zgrcjlxh.com zgrcjyw.com zgrd.org zgrdnews.com zgruisai.com zgrzbj.com zgsclp.com zgsd.net zgsepri.com zgserver.com zgshenglu.com zgshgs.com zgshige.com zgshige.net zgshjj.com zgshoes.com zgshq.com zgshuhuaxh.com zgshxd.com zgshxfw.com zgshyshyxh.com zgsj.com zgsjcn.com zgsjshy.com zgslb.net zgslylw.com zgsmile.com zgsmmhw.com zgsmsy.net zgsnzj.com zgsof.com zgspws.com zgsssss.com zgsta.com zgstly.net zgswcn.com zgswzys.com zgsxzs.com zgsyb.com zgsydw.com zgsynews.com zgsyqx.com zgsyz.com zgszglfh.com zgszjs.com zgtaining.com zgtcc.com zgtcyswh.com zgtghccl.com zgtianlong.com zgtianqi.com zgtjqxh.com zgtnzx.com zgtop10.com zgtuku.com zgty188.com zgtygg.com zgtywdysxh.com zgtzc.com zgtzhb.com zgui.com zguonew.com zgvmxma.com zgw.com zgweimeng.com zgwhfe.com zgwlwx.com zgwstxc.com zgwt.co zgwypl.com zgxcc.com zgxcfx.com zgxcw.com zgxetnw.com zgxhm.com zgxk.org zgxledu.com zgxmlsp.com zgxnnews.com zgxnyhyxh.com zgxnyxh.com zgxqwqh.com zgxrjy.com zgxsczdldak.com zgxue.com zgxytc.com zgxyzx.net zgxzcj.com zgxzhjx.com zgybsfxh.com zgycgc.com zgyeda.com zgyey.com zgyhbc.com zgyhys.org zgyjlf.com zgylbx.com zgylj.com zgyouth.cc zgys.net zgyssyxh.com zgysw.cc zgytc.com zgyxjt.com zgyxzs.com zgyygl.com zgyyjgw.com zgyykx.com zgyythy.com zgyyzn2004.com zgyzyq.com zgzb.com zgzca.com zgzcw.com zgzcwy.com zgzhmz.com zgzjjcy.com zgzjzzs.com zgznh.com zgznjt.com zgzpsjz.com zgzsa.com zgzsrc.com zgzszy.com zgzy.net zgzypyw.com zgzyxxzs.com zgzzs.com zgzzxx.com zh-an-pg-gaming.com zh-ansheng.com zh-brimed.com zh-chem.com zh-cjh.com zh-douqiutiyu.com zh-gs.com zh-hbs.com zh-heshi.com zh-hks-slotsimulator.com zh-hr.com zh-hz.com zh-itone.com zh-jieli.com zh-jinhang.com zh-languan.com zh-le-slotsimulator.com zh-longshi.com zh-piao.com zh10.com zh189.com zh818.com zh996.com zha.co zhads.com zhaeec.com zhai14.com zhaiba.com zhaibao.vip zhaibian.com zhaidou.com zhaihai.com zhaijihui.com zhaijis.com zhaikexueyuan.com zhainanba.net zhainanfulishe.com zhainanhuayuan.com zhaipan.vip zhairport.com zhaitushe.com zhaiwuu.com zhaixiaoniu.com zhaixue.cc zhale.me zhan.com zhanbanji.com zhanbuba.com zhanchenyouqi.com zhanchily.com zhandaren.com zhandian88.com zhandodo.com zhang-chu.com zhang365.com zhangbj.com zhangbo.org zhangchangfa.com zhangchi.art zhangdongxuan.com zhangdu.com zhangdu5.net zhangdu520.com zhange8.com zhangfeibiao.com zhangfensir.com zhangferry.com zhangfupeng.com zhanggaoyuan.com zhangge.net zhanghaodaren.com zhanghonghong.com zhanghongliang.com zhanghuang.com zhangjet.com zhangjiee.com zhangjinyue.com zhangjunbk.com zhangkai.red zhangkc.com zhangketong.com zhangkongapp.com zhangkoubei.net zhangku.com zhangle.com zhangleglobal.com zhanglinfeng09.com zhangliziyun.com zhangluya.com zhangmen.com zhangmen.org zhangmenkid.com zhangnan.xyz zhangnq.com zhangqi.ltd zhangqiaokeyan.com zhangqiongjie.com zhangqiu.cc zhangqiubus.com zhangrc.site zhangread.com zhangrunnan.com zhangsenhao.com zhangshangtong.com zhangshengcw.com zhangshengrong.com zhangshi.org zhangshuchang.com zhangsifan.com zhangtaiwuye.com zhangtu.com zhangu365.com zhangwan.net zhangwei.li zhangwenli.com zhangwojumian.com zhangxin.ltd zhangxinhulian.com zhangxinkeji.com zhangxinmj.com zhangxinxu.com zhangxiu.com zhangyi123.com zhangyoubao.com zhangyoushijie.com zhangyu.com zhangyu39.com zhangyuanqiang.com zhangyue.com zhangyue.net zhangyue01.com zhangyue02.com zhangyue03.com zhangyuecdn.com zhangyupeng.com zhangzepower.com zhangzhao.me zhangzhengfan.com zhangzhongpei.com zhangzhongyun.com zhangzhuo.ltd zhangzidao.com zhangzifan.com zhangziran.com zhanh.com zhanhi.com zhanhome.com zhanhuidaili.com zhanhuiniu.com zhanhuiquan.com zhanhuo.com zhanid.com zhanjiangletian.com zhankoo.com zhankuaqq.com zhanlingol.com zhanmang.com zhanq.net zhanqi.net zhanqi.tv zhanqitv.com zhanqu.tv zhanruizb.com zhanshaoyi.com zhanshi888.com zhanshifood.com zhanshiren.com zhansu.com zhantai.com zhantuo.com zhanuan.com zhanxingfang.com zhanyouyun.com zhanyugroup.com zhanzhanbao.com zhanzhang.net zhanzhangb.com zhanzhangs.com zhao-meng.com zhao123.org zhaoba.net zhaobeijing.com zhaobenshan.tv zhaobiaoziyuan.com zhaobide.com zhaobuxiu.com zhaocaimall.com zhaocaiyan.com zhaochanpin.com zhaochao.xyz zhaochongwu.com zhaoda.net zhaodanji.com zhaodaojia.com zhaodedao.xyz zhaodigroup.com zhaodll.com zhaodns999.com zhaofangbang.net zhaofenxiang.com zhaogang.com zhaogangimg.com zhaogui.com zhaohaowang.com zhaohe.net zhaoheng-cpm.com zhaoiphone.com zhaojiafang.com zhaojiao.net zhaojiaoan.com zhaojiaxiao.com zhaojs.com zhaojunhg.com zhaoka.com zhaokaifeng.com zhaokao.net zhaokaocn.com zhaokeli.com zhaoketang.com zhaokuaizhao.com zhaolaobanla.com zhaoliangji.com zhaoliming.net zhaomengtu.com zhaoming.biz zhaomishijie.com zhaomu.com zhaomuqingyun.com zhaomxd.com zhaoniupai.com zhaoonline.com zhaopianzhibo.com zhaopin.com zhaopin400.com zhaopin668.com zhaopinbao.me zhaopingou.com zhaopinrugao.com zhaopintangyin.com zhaoplc.com zhaoqianwang.com zhaoqiufa.com zhaoqt.net zhaoquanwang.vip zhaoren.net zhaorunsen.com zhaosf.co zhaosha.com zhaoshang.net zhaoshang100.com zhaoshang800.com zhaoshangbang.com zhaoshangbao.com zhaoshangdai.com zhaoshayou.com zhaosheng.com zhaosheng365.com zhaoshixi.com zhaoshizhou.xyz zhaosifang.com zhaosuliao.com zhaosw.com zhaosy.com zhaota8.com zhaotaicaiyin.com zhaotu.com zhaouc.com zhaouc.net zhaowenyu.com zhaowofanyi.com zhaoxi.org zhaoxiangliao.com zhaoxiangyd.com zhaoxiaoshuo.com zhaoxin.com zhaoxingfang.com zhaoxitech.com zhaoxuncaijing.com zhaoyanblog.com zhaoyangmao.com zhaoyangsem.com zhaoyangxueyuan.com zhaoyaojd.com zhaoyasai.com zhaoybbk.com zhaoyingtian.com zhaoyinqian.com zhaoyl.com zhaoyo.com zhaoyuan365.com zhaoyun.com zhaozhanxu.com zhaozhishi.com zhaozhonggong.com zhaozongjie.com zharev.com zhatoufa.com zhatuyunshu.com zhayanwang.com zhb1.com zhbit.com zhblawyer.com zhboyang.com zhbus.org zhbx.net zhby-point.com zhcic.com zhcidian.com zhckw.com zhcnews.com zhcommerce.com zhcomputing.com zhcsgc.com zhctv.com zhcw.com zhcyanshi.com zhdfg.com zhdgps.com zhdhq.com zhdhqc.com zhdhqcz.com zhdhqzy.com zhdmwhg.com zhdsbang.com zhe.com zhe800.com zhe900.com zhebei.com zhebeipharm.com zhebumai.com zhechem.com zhedabingchong.com zhedu.net zhefengle.com zhefuhua.com zhegu8.xyz zheiyu.com zhejiangcheng.com zhejiangcircuit.com zhejiangfa.com zhejiangfc1998.com zhejianghanpu.com zhejianglab.com zhejianglab.org zhejiangliming.com zhejianglong.com zhejiangmuseum.com zhejiangqinghe.com zhejiangseed.com zhejiangzhuohang.com zhejing.tech zhekoulieshou.com zhekouniu.net zhekouo.com zhelaoda.com zheli.com zhelibao.com zhelin.me zhelixin.com zheliyin.com zhemu.xyz zhen-ao.com zhen.com zhenai.com zhenaihn.com zhenandl.com zhenaoyaoye.com zhenbanggd.com zhenbi.com zhenbizi.com zhenchu.cc zhending-chicken.com zhendong365.com zhendonggames.com zhene.net zhenfacloud.com zhenfangyuan.com zhenfund.com zhengbang.com zhengben56group.com zhengbiaoke.com zhengcaimall.com zhengcaishangcheng.com zhengchang.com zhengdaijingji.com zhengdaojiapei.com zhengdaotang.com zhengdapeanut.com zhengdichaiqian.com zhengdong.cc zhengdongzulin.com zhengerpin.com zhengfalaw.com zhengfayunpt.com zhengfengnet.com zhenggang.org zhenggui.com zhengguzhishen.com zhenghai-ht.com zhenghangplc.com zhenghangyq.net zhenghe.biz zhenghewuye.com zhenghong888.com zhenghuiyaoye.com zhengjia.com zhengjianzhao.com zhengjie.com zhengjifb.com zhengjimt.com zhengkaji.com zhenglonggroup.com zhengmeng.net zhengmin.com zhengpengbo.com zhengpic.com zhengpinle.com zhengqi100.com zhengqingsong.com zhengquan.org zhengqun123.com zhengruioi.com zhengtaidianlan.com zhengte.net zhengtongcloud.com zhengtoon.com zhenguanyu.biz zhenguanyu.com zhenguo.com zhengw-tech.com zhengwei007.com zhengwutong.com zhengxiaoling.com zhengxinbao.com zhengxing021.com zhengxingzhijia.com zhengxinonly.com zhengyaing.win zhengyang-tek.com zhengyaokeji.net zhengyee.com zhengyexing.com zhengyounet.com zhengyouyoule.com zhengyuanfu.com zhengyutuliao.com zhengzai.tv zhengzhaopai.com zhengzhenxx.com zhengzhou42195.com zhengzhoubus.com zhengzhoutools.com zhengzhoutx.com zhengzhouyunmei.com zhengzihui.com zhenhaofu.com zhenhaotao.com zhenhaotv.com zhenheli.com zhenhonggroup.com zhenhospital.com zhenhuadj.com zhenhuan888.com zhenimg.com zhenjiatong.com zhenjingtv.com zhenkongbang.com zhenlongvip.com zhenmeidai.com zhenmeifoods.com zhenmeigroup.com zhenpin.com zhenren.com zhenrongbao.com zhenruhotels.com zhenrun.press zhensheng.com zhenshi.com zhenshigroup.com zhenshua.com zhenshungroup.com zhensiyu.com zhenstyle.com zhensuo.tv zhentaigroup.com zhentan.la zhentoo.com zhenweiexpo.com zhenwu.com zhenxiad.com zhenxiliangshi.com zhenxin2014.com zhenxinet.com zhenxinfu.com zhenxingkuangchanpin.com zhenxipin.net zhenyangshoes.com zhenye.com zhenyouliao.com zhenyoumei.com zhenyuansoft.com zhenyunpan.com zhenzhuchanfu.com zheshenet.com zhetao.com zhetian.org zhetouniu.com zheurl.com zhewanji.net zhexi.tech zhexingzx.com zhexinit.com zhexinsteel.net zheye.com zheyibu.com zheyinleasing.com zheyouxinxi.com zheyuntech.com zhezheai.com zhezhekan.com zhezhewhkj.com zhezhi.tech zhfc.com zhfivehospital.com zhfund.com zhfwq.com zhfyhb.com zhgc.com zhgfanyi.com zhgjx.com zhgl.com zhglory.com zhgn.com zhgnj.com zhgreens.com zhguoguo.com zhgxjs.com zhhainiao.com zhhaitai.com zhheo.com zhhfedu.com zhhfjt.com zhhlaw.com zhhlogistics.com zhhrm.com zhhs-china.com zhhuahui.com zhhuashengjt.com zhhuihua.com zhhy-oa.com zhi-ming.com zhi-niao.com zhi.hu zhi10.com zhi3.net zhiaimusic.com zhiangit.com zhiangroup.com zhiannet.com zhiantec.com zhibaimeixue.com zhibiao168.com zhibiaow.com zhibitouzi.com zhibo.tv zhibo8.cc zhibo8.com zhiboba.com zhiboohui.com zhiboqiao.com zhiboyun.net zhibs.net zhibugongzuo.com zhicaiwang.com zhicall.com zhichanli.com zhichaoxt.com zhicheng-champion.com zhicheng.net zhichepai.com zhichepin.com zhichi.com zhichidata.com zhichikeji.com zhichiwangluo.com zhichiweiye.com zhicms.cc zhicyun.com zhidao91.com zhidaochuanxin.com zhidaoplan.com zhidejian.com zhidemai.com zhidesoft.com zhidi66.com zhidianfan.com zhidianlife.com zhidieyun.com zhidiy.com zhidtech.com zhiduopc.com zhidx.com zhienkeji.com zhiexa.com zhifa.cc zhifa315.com zhifang.com zhifayangfa.com zhifayiyuan.com zhifeishengwu.com zhifengtang.com zhifou123.com zhifoukeji.com zhiftype.com zhifufu.com zhifujie.com zhifuquanzi.com zhifure.com zhifux.com zhifuzi.com zhigaometal.com zhige.net zhigongfu.com zhigou.com zhigou888.com zhigouyp.com zhiguagua.com zhiguang.me zhigudata.com zhiguf.com zhiguoguo.com zhihai.fun zhihang100.com zhihe.link zhihe.mobi zhihei.com zhiheiot.com zhihejia.com zhihejiaoyu.com zhihemobi.com zhihengwangchen.com zhihepartners.com zhihevip.com zhihjf.com zhihu.com zhihu.dev zhihua-tech.com zhihuangjin.com zhihudsp.com zhihuichuangyanshi.com zhihuiep.com zhihuifangdong.net zhihuihongze.com zhihuihuiwu.com zhihuihutong.com zhihuiji.com zhihuijingyingba.com zhihuikangyang.com zhihuimami.com zhihuinanzhan.com zhihuishan.com zhihuishitang.net zhihuishu.com zhihuiwater.com zhihuixiadan.com zhihuixl.com zhihuixuexipt.com zhihuiya.com zhihuiyunbo.com zhihuizeyuan.com zhihuizhangyu.com zhihuizp.com zhihuoseo.com zhihur.com zhiji.com zhijia.com zhijian114.com zhijianbao.com zhijianchuhai.com zhijianfengyi.com zhijiangames.com zhijiannuoche.com zhijiaow.com zhijiaow.net zhijiapro.com zhijiashe.com zhijidoc.com zhijie-edu.com zhijieguo.com zhijieketang.com zhijin.com zhijinwang.com zhijizhibi.com zhikaiis.com zhikao100.com zhikao365.net zhikaocn.com zhikaojy.com zhikaowangxiao.net zhiketong.com zhiketong.net zhikexun.com zhikongyangpin.com zhikuai.com zhikubao.net zhil.cloud zhilandaren.com zhilehuo.com zhileiqiye.com zhilepin.com zhilian-nb.com zhilian.com zhilian.host zhilianghui.com zhiliangren.com zhilianiot.com zhiliaobiaoxun.com zhiliaocaibao.com zhiliaoke.com zhilidata.com zhilingshidai.com zhilingshop.com zhilitraffic.com zhilongtech.com zhiluo.net zhima1688.com zhimacangku.com zhimaixiaodian.com zhimantian.com zhimap.com zhimapay.net zhimaquan.net zhimaruanjian.com zhimatech.com zhimawenda.com zhimaxkf.com zhimei.com zhimeibot.com zhimeijiankang.com zhimengad.com zhimengdaren.com zhimg.com zhimi.com zhiminglawyer.com zhimodesign.com zhimoe.com zhineikaixin.com zhinengdayi.com zhinengjianzhan.com zhinengxia.com zhinengxiehui.com zhinengyujia.com zhinet.com zhinianboke.com zhiniceshi.com zhinikefu.com zhiniu8.com zhinuoshuzi.com zhinvnetwork.com zhipan.net zhipeix.com zhiper.com zhipianbang.com zhipianbang.vip zhipin.com zhipingke.com zhipucn.com zhipuzi.com zhiqi.info zhiqiang.org zhiqiapp.com zhiqicms.com zhiqihuo.com zhiqihuo.org zhiqijichu.com zhiquanxia.com zhiquapp.com zhiquhuyu.work zhiquyuan.com zhiqwl.com zhiren.com zhiren.ren zhiribao.com zhiru.com zhirui-inv.com zhirui.net zhiruiinvest.com zhisanzhao.com zhishanfu.com zhishangnet.com zhishangsoft.com zhisheji.com zhisheng.com zhishengbang.com zhishengtec.com zhishengxinchuang-food.com zhishi.com zhishi.tech zhishifenzi.com zhishisoft.com zhishiwu.com zhishutang.com zhishuyun.com zhisiyun.com zhisuoyi.net zhitaiparking.com zhitangvalve.com zhitaosoft.com zhitingtech.com zhito.com zhitongcaijing.com zhitongpm.com zhitouxing.com zhituad.com zhitui.com zhitusoft.com zhituwujie.com zhituzhilian.com zhivisaworld.com zhiweidata.com zhiweihome.com zhiweisoft.com zhiwenw.com zhiwgx.com zhiwo.com zhiwo.work zhiwu.com zhiwushuo.com zhiwutiyu.com zhiwutong.com zhixi.com zhixiaochengxu.com zhixiaohuoke.com zhixiaosj.com zhixiaowang.com zhixin-semi.com zhixingapp.com zhixingit.com zhixingjj88.com zhixingyunke.com zhixiu.net zhixuan.com zhixue.com zhixue.org zhixuedoc.com zhixueyun.com zhixunfang.com zhixunkeji.xyz zhiyakeji.com zhiyanxuan.com zhiyazz.com zhiye.com zhiyeapp.com zhiyeguihua.com zhiyequan.com zhiyexueyuan.com zhiyi.com zhiyicx.com zhiyinghui.com zhiyingos.com zhiyingyang.com zhiyinhao.com zhiyinlou.com zhiyinmanhuawang.com zhiyinmedia.com zhiyoo.com zhiyoubao.com zhiyousx.com zhiys.com zhiyu-china.com zhiyuan-robot.com zhiyuanbang.com zhiyuanshijie.com zhiyuanxinglvye.com zhiyuanyun.com zhiyuanzhongyi.com zhiyuapp.com zhiyueit.com zhiyun-cn.com zhiyun-tech.com zhiyunwang.net zhiyutianqi.com zhiyuyg.com zhizaoyun.com zhizeu.com zhizhan360.com zhizhen.com zhizhi88.com zhizhibaike.com zhizhihu.com zhizhizhi.com zhizhizhi.net zhizhonghl.com zhizhoukeji.com zhizhoumi.com zhizhu35.net zhizhucms.com zhizhuip.com zhizhuma.com zhizhuwu.com zhizhuyule.com zhizhuyx.com zhizihuan.com zhizihuan.net zhiziyun.com zhizugz.com zhizunbo.com zhizundun.com zhizunnews.com zhizuobiao.com zhizuobiaojiaoyu.com zhizuoh5.com zhizuotu.com zhj9.com zhjd.org zhjdkz.com zhjgkg.com zhjgkgjt.com zhjgongjiao.com zhjiameng.com zhjianet.com zhjingsai.com zhjj.org zhjncb.com zhjtaq.com zhjtong.com zhjuche.com zhjxwh.com zhjypco.com zhjzg.com zhjzgroup.com zhk.me zhka.com zhks.org zhku.com zhl.com zhld.com zhlhh.com zhliaoshe.com zhliqi.com zhljq.com zhlm.com zhlqjt.com zhltech.net zhltraffic.com zhlyen.com zhlzw.com zhmag.com zhmedcenter.com zhmeiwen.com zhmf.com zhmodaoli.com zhmold.com zhmu.com zhmxchina.com zhmzqi.com zhnbj.com zhnc-kaiyunapp.com zhnfad.com zhnsyh.com zhong-yao.net zhong.com zhong100.com zhongan.com zhongan.io zhongancloud.com zhonganfengshang.com zhonganguobao.com zhonganib.com zhonganinfo.com zhongankang.com zhonganweishi.com zhongbao360.com zhongbaounion.com zhongbeiyouhao.com zhongbenkeji.com zhongbenwangluo.com zhongbingtongxin.com zhongbowenwu.com zhongboxinwen.com zhongcai.com zhongcaistream.com zhongcaisuo.com zhongcetech.com zhongche.com zhongchebaolian.com zhongchewuliu.com zhongchouke.com zhongchouyan.com zhongchuang365.com zhongchuangwenhua.com zhongda021.com zhongdajc.com zhongdakang.com zhongdazm.com zhongdegroup.com zhongdemetal.com zhongdeng.com zhongdengwang.com zhongdeschool.com zhongdexc.com zhongdi168.com zhongerp.com zhongfeiqiao.com zhongfu.net zhongfuwatch.com zhonggenggroup.com zhonggu56.com zhongguang.com zhongguanpetro.com zhongguinong.com zhongguobaiyin.com zhongguobingxue.com zhongguociwang.com zhongguoditu.com zhongguofeng.com zhongguogouliang.com zhongguoguwan.com zhongguohao123.com zhongguohuo.com zhongguopeixun.net zhongguose.com zhongguosou.com zhongguoss.com zhongguowangshi.com zhongguoym.com zhonggushipping.com zhonghaitech.com zhonghaojituan.com zhonghe58.com zhonghegame.com zhonghengxingufen.com zhonghengyiyao.com zhonghhd.com zhonghongwang.com zhonghuacar.com zhonghuacpa.com zhonghuadiancang.com zhonghuaent.com zhonghuamba.com zhonghuameiwang.com zhonghuanjianbj.com zhonghuanus.com zhonghuaqiming.com zhonghuasuan.com zhonghuaying.com zhonghuilv.com zhonghuitj.com zhonghuvalve.com zhongji.cc zhongjian.run zhongjiangapp.com zhongjianyiliao.com zhongjiaochuxing.com zhongjijidian.com zhongjincc.com zhongjintongsheng.com zhongjiujiu.com zhongjiunanshuo.com zhongjixinyuan.com zhongjukiln.com zhongjunstone.com zhongkaiedu.com zhongkao.com zhongkaohelp.com zhongkaowu.com zhongkecn.com zhongkeguan.com zhongkekc.com zhongkerd.com zhongkezhihang.com zhongkongbancn.com zhongkongdaikuan.com zhongleny.com zhongli.com zhonglian.com zhonglianbiao.com zhonglianguanwei.com zhongliangxny.com zhonglianhuashu.com zhonglianhuaxin.com zhonglianyx.com zhongliusp.com zhongliuyiyuan.com zhonglue-consulting.com zhonglun.com zhonglunnet.com zhongluyuntong.com zhongmaohr.com zhongmei.com zhongmeigk.com zhongmeigk.hk zhongmian.com zhongminenergy.com zhongmingjiaoyu.net zhongnakeji.com zhongnengrecycling.com zhongnice.com zhongnongjimu.com zhongp.com zhongpaiwang.com zhongpenggufen.com zhongping.com zhongpingcapital.com zhongpujiancai.com zhongqijiye.com zhongqijt.com zhongqingshao.com zhongqixin360.com zhongran.org zhongrenbang.cc zhongruihuacheng.com zhongruitech.com zhongruiyaoye.com zhongsenmenye.com zhongshan-hotel.com zhongshanchengtai.com zhongshang114.com zhongshanpark.com zhongshantoukong.com zhongshanweixin.com zhongshanzhekai.com zhongshengdai.com zhongshenglong.xyz zhongshi-chem.com zhongshiqixie.com zhongshucan.com zhongshungroup.com zhongshuopg.com zhongso.com zhongsou.com zhongsou.net zhongtaihangzhou.com zhongtaitrust.com zhongtefamen.com zhongtiancloud.com zhongtieyintong.com zhongtong.com zhongtongshe.com zhongtou.co zhongtuirong.com zhongtuobang.com zhongtusy.com zhongwang.com zhongwangsc.com zhongwei-info.com zhongweicable.com zhongweihotels.com zhongweiteamtop.com zhongwen.wiki zhongwenhexinqikan.com zhongwogroup.com zhongwucan.com zhongwulian.com zhongxiang.com zhongxiangdichan.net zhongxiangwang.co zhongxiaole.net zhongxiaoyl.com zhongxingglove.com zhongxinjzzs.com zhongxinkeji.vip zhongxinlm.com zhongxinwei.net zhongxinzhongxue.com zhongxisunve.com zhongxues.com zhongxuewuyou.net zhongxuewy.net zhongxunrunda.com zhongxuntv.com zhongxuyiyuan.com zhongyagroup.com zhongyangkeji.com zhongyangweixiu.com zhongyao365.com zhongyapeicui.com zhongyasmart.com zhongyejy.com zhongyf.com zhongyi6.com zhongyi9999.com zhongyibaodian.com zhongyiinc.com zhongyiiot.com zhongyiju360.com zhongyingdp.com zhongyingtougu.com zhongyingyiyao.com zhongyinlawyer.com zhongyishangwu.com zhongyisousuo.com zhongyiyisheng.com zhongyoo.com zhongyouai.com zhongyouex.com zhongyougc.com zhongyoumedia.com zhongyu.com zhongyu87.xyz zhongyuan-sports.com zhongyuanauto.com zhongyue001.com zhongyuefuwu.com zhongyulian.com zhongyunjt.net zhongyunjy.com zhongyunqianbao.com zhongyuyx.com zhongzaisheng.net zhongzeny.com zhongzetherapeutics.com zhongzhaizs.com zhongzhao.com zhongzhen56.com zhongzhenjiaoyu.com zhongzhensen.com zhongzhi-faqian.com zhongzhide.com zhongzhifaqian.com zhongzhiiov.com zhongzhilin.com zhongzhixin.com zhongzhixitong.com zhongzhongkeji.com zhongzhoulianhe.com zhongzhouwater.com zhongzhuang.com zhongzilu.com zhonshian.com zhou.icu zhouao.com zhoubaitong.net zhoubianyou.com zhouchun.net zhoudaosh.com zhoufengsd.com zhougong.com zhouhaismart.com zhouhing.com zhouhoulin.com zhoujiahong.com zhoujianhui.com zhoujifood.com zhoujunji.com zhoukaiwen.com zhoulaoshi.club zhoulingjie.com zhoupu123.com zhoupudata.com zhouql.vip zhouweitong.site zhouxianghb.com zhouxiaoben.info zhouxingchi.info zhouxuanyu.com zhouyi.biz zhouyi.cc zhouyi114.com zhouyiapi.com zhouyiy.com zhouyou360.com zhouyouji.world zhouzhuang.net zhoz.com zhpca.com zhpecc.com zhpharm-sh.com zhqgtjxh.com zhqyue.com zhrct.com zhrczp.com zhrtc.com zhsapphire.com zhsc.net zhsecurity.net zhsho.com zhshw.com zhsrcw.com zhsumarc.com zhsunway.com zhsw.org zhswfw.com zhszcz.com zht-cn.com zhtdtech.com zhtelecom.com zhtfw.net zhtgroup.com zhthg.com zhtlq.com zhtmid.com zhty.net zhtyljt.com zhu.today zhuainiu.com zhuajiyou.com zhualeyixia.com zhuancorp.com zhuanfa.net zhuanfou.com zhuang520.com zhuangbutong.com zhuanghebm.com zhuangji.net zhuangjiba.com zhuangjinshanhe.com zhuangjizhuli.net zhuangkou.com zhuangku.com zhuangpeitu.com zhuangshengsheng.com zhuangshijituansheji.com zhuangxiang.cc zhuangxiaomi.com zhuangxiu.com zhuangxiu567.com zhuangxiubao.com zhuangyanyanglao.com zhuangyuantao.com zhuangzhuang.net zhuanhuamao.com zhuanhuanqi.com zhuanhuanqi.net zhuaniao.com zhuaninc.com zhuankeapp.com zhuankezu.com zhuanlichaxun.net zhuanliqiao.com zhuanmenmian.com zhuanpinyin.com zhuanqianba.net zhuanspirit.com zhuanstatic.com zhuanwaifu.com zhuanyejun.com zhuanyepeixun.com zhuanyes.com zhuanyewanjia.com zhuanyezhidao.com zhuanyizhuanw.com zhuanyun.cc zhuanyun123.com zhuanzfx.com zhuanzhi.net zhuanzhuan.com zhuatang.com zhuaxia.com zhuayao.net zhuayou.com zhuayoukong.com zhuayuya.com zhuazi.com zhubai.love zhubai.pub zhubaijia.com zhubajie.com zhubajie.la zhubangbang.com zhubao.com zhubao668.com zhubaowo.com zhubian.com zhubiaoju.com zhubo123.com zhuboqiang.com zhuceshenzhengongsi.com zhuceyou.com zhuchao.cc zhucheng.com zhuchengdc.com zhuchuang.club zhudai.com zhudianquan.com zhufaner.com zhufangdianping.com zhufengpeixun.com zhuge.com zhuge888.com zhugeapi.com zhugeapi.net zhugeculture.com zhugefang.com zhugeio.com zhugejianzhi.com zhugexuetang.com zhuhai-holitel.com zhuhaidutyfree.com zhuhaigh.com zhuhaihuwai.com zhuhaily.com zhuhaimarathon.com zhuhd.win zhuhua.com zhuhuotech.com zhuige.com zhuigong.com zhuiguang.com zhuiguangzhe.com zhuihuodong.com zhuimabk.com zhuimeng8.com zhuimengzhu.com zhuinianqing.com zhuinw.com zhuiqu.com zhuishu.la zhuishukan.com zhuishushenqi.com zhuishuwang.com zhuishuyun.com zhuitiankeji.com zhuiwan.org zhuiyi.ai zhuiyi123.com zhuiyigemeng.fun zhuji.com zhuji.net zhuji5.com zhuji66.com zhujia100.com zhujia360.com zhujiajiao.com zhujianapp.com zhujiangbeer.com zhujiangfuji.com zhujiangrc.com zhujiangroad.com zhujianptcn.com zhujib.com zhujibaike.com zhujibank.com zhujicankao.com zhujiceping.com zhujipindao.com zhujipower.com zhujirc.com zhujisou.com zhujitao.com zhujiw.com zhujiwanjia.com zhujiwiki.com zhujiwu.com zhujizixun.com zhukai.com zhukang.tech zhukao666.com zhuke.com zhul.in zhulang.com zhulang.net zhulanli.com zhulemei.com zhuli999.com zhulianwines.com zhulincat.com zhulinedu.com zhulinweiye.com zhulixiaolie.com zhulogic.com zhulong.com zhulong360.com zhulongjiang.com zhulouren.com zhulu86.com zhulubox.com zhulusoft.com zhuluyy.com zhumanggroup.com zhumanggroup.net zhumaweb.com zhumengwl.com zhumingepc.com zhumiquan.com zhumotech.com zhumu.me zhumulive.com zhuna.net zhunaerminsu.com zhunbai.com zhunc.vip zhundao.net zhundaoyun.com zhuneicdn.com zhuneijs.com zhuniangjia.com zhuniu.com zhunnai.com zhunshitianqi.com zhunter.com zhuntui.com zhunzha.com zhuo.com zhuo.re zhuobao.com zhuobufan.com zhuodai.net zhuofan.net zhuofansoft.com zhuoguang.net zhuohaomao.com zhuohuamg.com zhuohuan-ep.com zhuojuead.com zhuokai1.com zhuolaoshi.com zhuolaoshi.net zhuoligk.com zhuomaiyun.com zhuomiles.com zhuomogroup.com zhuoquapp.com zhuoqun.info zhuoqun.xyz zhuoqundianli.com zhuoshigroup.com zhuoshixiong.com zhuotianchike.com zhuotingwl.com zhuoxun68.com zhuoyachina.com zhuoyi.com zhuoyigame.com zhuoyigame.site zhuoyitm.site zhuoyixuan.com zhuoykeji.com zhuoyou.com zhuoyoutech.com zhuoyue78.com zhuoyuechenxing.com zhuoyuegame.com zhuoyuegame.net zhuoyuesuoxue.com zhuoyuezhongxue.com zhuozhan.com zhuozhengsoft.com zhuozhoufangchan.com zhuozhourencai.com zhuozhuogame.com zhupinhr.com zhuqinit.com zhuqiy.com zhuqiyang.com zhuqu.com zhuque.me zhushan.cc zhushandata.com zhushiyao.com zhushou001.com zhust.com zhutao.com zhutaostudio.com zhutihome.net zhutile.com zhutiwo.com zhutix.com zhutix.net zhutix.vip zhutou.com zhutxia.com zhuwang.cc zhuwang360.com zhuwona.com zhux2.com zhuxian.com zhuxianfei.com zhuxiaobang.com zhuxuezi.com zhuye.kim zhuye.xyz zhuye123.com zhuyili.org zhuyitai.com zhuyst.cc zhuzao.com zhuzaobang.com zhuzaocloud.com zhuzhai.com zhuzher.com zhuzhichao.com zhuzhou.com zhuzhoubus.com zhuzhoumarathon.com zhuzhouwang.com zhuzhutown.com zhuzi.me zhuzihaoke.com zhuziplay.com zhw2101024.com zhwangart.com zhwdw.com zhwenxue.com zhwiki.net zhwjw.net zhwkg.com zhwxwz.com zhwyy.com zhx-mall.com zhx2008.com zhxbjsjt.com zhxcn.com zhxdfpr.com zhxg.com zhxgimg.com zhxhs.net zhxht.com zhxinuser.com zhxnyw.com zhxqpt.com zhxszq.com zhxwq.com zhxww.net zhxwzx.com zhxy1z.com zhyccw.com zhycn.com zhyczx.com zhyd.me zhyfkj.com zhyg.org zhyi828.com zhyingxiao.com zhylwx.vip zhylyy.com zhyouliang.com zhyourun.com zhysdxl.com zhyymall.com zhyyz.com zhz.com zhzdtz.com zhzf-group.com zhzf360.net zhzh.xyz zhzpjt.com zhzxin.com zhzyw.com zhzzx.com zi-maoqu.com zi0.cc zi15.com zi5.cc zi6.cc zianwu.com zibaomuye.com zibasset.com zibll.com ziboborui.com ziboga.com zibogongli.com zibojinling.com zibomama.com zibomarathon.com zibowater.com zibozhongxue.com zibsc.com zichanjie.com zichen.zone zichenit.com zicini.com zicp.fun zicp.vip zidan.chat zidanduanxin.com zidanduanxin.net zidg.com zidian8.com zidiankeji.com zidianqu.com zidianwang.com zidoo.tv zidootv.com zifandiaosu.com zifumao.com zigaokj.com zige365.com zigeer.com zigonggroup.com ziguhonglan.com zihai0351.com zihai0535.com zihai24.com zihaixiaochengxu.com zihexin.com zihexin.net zihu.com zihua.li zihua01.com zihuazhijia.com ziir-robot.com ziisp.com ziji.work zijiang.com zijiangqy.com zijiantty.com zijieapi.com zijieapi.net zijiecdn.com zijiecdn.net zijieimg.com zijieimg.net zijiejiaodian.com zijietiaodong.com zijieurl.com zijieurl.net zijiewap.com zijiewap.net zijinfx.com zijinji.com zijinshan.net zijintiyu.com zijizhang.com zikao-zikao.com zikao.gd zikao211.com zikao365.com zikao5.com zikaobm.com zikaocqi.com zikaogd.com zikaoj.com zikaoshu.net zikaoshu.vip zikaosw.com zikeys.com zikoo-int.com zikoo.com zikui-design.com zilang.net zilhua.com zilian5.com ziliao8.cc ziliao8.com ziliaoge.com ziliref.com zilongame.com zilongshanren.com zilrms.com ziluolanh.com zimilan.com zimlev.com zimoapps.com zimudashi.com zimufy.com zimuism.com zimujiang.com zimuzu.com zindall.com zine.la zinffer.com zing-api.com zingfront.com zingke.com zinglix.xyz zingsemi.com ziniao.com ziniusoft.com zinsight-tech.com zintow.com zinyon.com zionpharma.com ziooc.com zip118.com zipadc.com zipjpg.com ziqingi.com ziquyun.com zircite.com ziroom.com ziroomapartment.com ziroomstay.com ziruxing.com zisea.com zisen.com zisha.com zishapot.com zishu.life zishuo.com zishuovideo.com zisuo.com zitbbs.com zitengyu.com zitern.com ziti163.com ziti3.com ziti6.com ziti88.com ziti9.com zitichina.com ziticq.com zitidi.com zitiewang.com zitiguanjia.com zitijia.com zitixiazai.org zitiziyuan.com zitongit.com zituo.net ziubao.com zivers.com zivoo.com ziwanyouxi.com ziweicn.com ziweifu.com ziweihuan.com ziwoyou.net ziwufang.com ziwuyunjiao.com zixia.com zixiaomao.com zixigua.com zixijiaoshi.com zixingxinwen.com zixueguoxue.com zixuejie.com zixueren.com zixuewang.cc zixunauto.com zixunhk.com zixunkankan.xyz zixuntop.com ziy.cc ziya1337.com ziyainfo.com ziyan666.com ziyanfoods.com ziyanmm.com ziyaokj.com ziye66.com ziye8.com ziyexing.com ziyi-health.com ziyimall.com ziying.site ziyou.com ziyou.studio ziyoufa.com ziyouma.net ziyouwu.com ziyouxing.net ziyouziti.com ziyrta.com ziyuan.tv ziyuan605.com ziyuandai.com ziyuangou.com ziyuanku.com ziyuanlm.com ziyuanm.com ziyuanniao.com ziyuanshare.cc ziyuantun.com ziyuantx.com ziyuanxiyanly.com ziyuanyuan.com ziyuen.com ziyun.com ziyunshanju.com zizailvyou.com zizcy.com zizdog.com zizhengfang.com zizhigx.com zizhijie.com zizhuauto.com zizhuhui.com zizhupark.com zizhuyuangongyuan.com zizhuyunxuan.com zizi2000.com zizige.com zizizaizai.com zizizizizi.com zizyw.com zizzs.com zj-art.com zj-ccmi.com zj-echo.com zj-equation.com zj-fhzx.com zj-gold.com zj-guojun.com zj-hc168.com zj-huawei.com zj-huishi.com zj-idc.com zj-innolight.com zj-jc.com zj-jinchen.com zj-jingyang.com zj-lenor.com zj-nongdu.com zj-nuolong.com zj-shibo.com zj-syfj.com zj-tattoo.com zj-tiansong.com zj-tuna.com zj-tunnel.com zj-yinlong.com zj-zhongshe.com zj-zhx.com zj-zxjx.com zj-zyhb.com zj.com zj01.com zj1058.com zj123.com zj186.com zj1991.com zj1996.com zj2460.com zj2car.com zj31.net zj315.org zj32.com zj339.com zj9.co zj9.com zj96596.com zjabank.com zjabhw.com zjabjc.com zjadgroup.com zjaf.net zjafl.com zjags.com zjaijiagroup.com zjaikang.com zjairports.com zjalky.com zjalufoil.com zjamo.com zjamp.com zjanchor.com zjanyy.com zjaqxy.com zjart.com zjasem.com zjautoparts.com zjaxyx.com zjaxzl.com zjbadminton.com zjbanger.com zjbar.com zjbdc.com zjbdfood.com zjbdt.com zjbeacon.com zjbelong.com zjbhi.com zjbicycle.com zjbinya.com zjblab.com zjblast.com zjbolunfilter.com zjbxcn.com zjbyte.com zjbyte.net zjca.org zjcaoban.com zjcarnet.com zjcb.com zjcbank.com zjcbcm.com zjcbjy.com zjcbl.com zjcdn.com zjceia.com zjcgmetal.com zjchanghua.com zjchina.org zjchuanning.com zjchuguo.com zjchunhui.com zjcio.org zjcjjt.com zjckw.org zjcloud.com zjcnbank.com zjcnyb.com zjcqk.com zjcrcgas.com zjcrjzj.com zjcshjt.com zjct56.com zjctm.net zjcuhb.com zjcxbank.com zjcyts.com zjcyxh.com zjcyyy.com zjda.com zjdadeyy.com zjdashi.com zjdata.net zjdeju.com zjdeluo.com zjdetong.com zjdfc.com zjdg.com zjdhky.com zjdianying.com zjdjc.com zjdjqc.com zjdjxh.com zjdkjs.com zjdl.com zjdlgroup.com zjdljc.com zjdljt.com zjdmxc.com zjdnajy.com zjdpco.com zjdsgroup.com zjdsz.com zjdtkg.com zjdxghy.com zjdxjs.com zjdybank.com zjdydlc.com zjdyjob.com zjdzqt.com zje.com zjeagles.com zjeav.com zjeclean.com zjecredit.org zjedps.com zjedu.com zjedu.org zjej.com zjemec.com zjeq.com zjerg.com zjetc.net zjevt.com zjfangchan.com zjfcdn.com zjfdc.net zjfengli.com zjfish.org zjfj.net zjfm.com zjfszhsw.com zjft.com zjftu.org zjfujiu.com zjfurnace.com zjg-edu.com zjg-jcu.com zjg.me zjgas.com zjgckg.com zjgcreative.com zjgengu.com zjgeyi.com zjgf88.com zjgfjt.com zjgfls.com zjgj.com zjgjj.com zjgkg.com zjgmwl.com zjgqt.org zjgrc.com zjgroupedu.com zjgrrb.com zjgsgroup.com zjgslb.com zjgt.com zjguji.com zjgwqxh.com zjgwsc.com zjgwy.org zjgwyw.org zjgycjj.com zjgyjt.com zjgzcpa.com zjgzks.com zjgzp.com zjgztz.com zjgzzc.com zjh1893.xyz zjha.org zjhac.com zjhaitian.com zjhangmo.com zjhangyin.com zjharbor.com zjhbdlkj.com zjhby.com zjhcbank.com zjhcly.com zjhd.com zjhdchem.com zjheacc.com zjheadway.com zjhejiang.com zjheliang.com zjhengshun.com zjhengyida.com zjhf.org zjhfxcl.com zjhi.net zjhkele.com zjhlcnc.com zjhlgroup.com zjhlyyjt.com zjhnlianzhong.com zjhnrb.com zjhospital.net zjhpyy.com zjhrnet.com zjhsfs.com zjhslyw.com zjhtcm.com zjhualing.com zjhuazhe.com zjhuba.com zjhui.net zjhwgroup.com zjhx520.com zjhxgf.com zjhxw.com zjhyrcb.com zjhzgy.com zjhzjt.com zjhzjtjt.com zjhzkq.com zjhzxc.com zji.net zjian.net zjibao.com zjiec.com zjiecode.com zjiekai.com zjiii.org zjiis.com zjim.org zjimc.com zjipc.com zjitc.net zjivy.com zjj-holiday.com zjjaxx.com zjjcbdt.com zjjd.org zjjedu.com zjjfl.com zjjfpharm.com zjjgy.com zjjgylydjc.com zjjgzdh.com zjjh.com zjjianhong.com zjjiaoke.com zjjinuo.com zjjinzi.com zjjizhi.com zjjjtec.com zjjky.com zjjlvyou8264.com zjjm.net zjjmtl.com zjjn.com zjjnzyjx.com zjjr.com zjjrh.com zjjrtv.com zjjs.net zjjsbank.com zjjsit.com zjjsjt.com zjjstzhb.com zjjsw.com zjjta.com zjjtgc.com zjjttaa.com zjjtwxpgs.com zjjubao.com zjjudong.com zjjxjt.com zjjxsoft.com zjjy.com zjjy.net zjjytyt.com zjjyxx.net zjjyzx.com zjjzxgj.com zjjzyxh.com zjkangzh.com zjkbfjd.com zjkccb.com zjkdl.com zjkdqz.com zjke.com zjkelan.com zjkeling.com zjkfcapital.com zjkgdcs.com zjkgjj.com zjkim.com zjkings.com zjkjob.com zjklfj.com zjkmtgc.com zjknews.com zjknsn.com zjkpet.com zjks.com zjks.net zjkszg.com zjkwhjj.com zjkyjs.com zjlande.com zjlca.com zjlcwg.com zjldrcb.com zjledfbd.com zjlepu.com zjlfdq.com zjlianchi.com zjlianhua.com zjlindu.com zjlljt.com zjlottery.com zjlsbz.com zjlsedu.org zjlvjie.com zjlxjs.com zjlxtx.com zjlzgg.com zjma.org zjmaerfj.com zjmaiou.com zjmana.com zjmax.com zjmc.tv zjmct.com zjmetal.com zjmi-mall.com zjmi.com zjmichem.com zjmif.com zjmileasing.com zjminb.com zjminghong.com zjmingzhen.com zjmingzhuang.com zjminong.com zjmj.org zjmjtec.com zjmkzx.com zjmobile.com zjmrhpt.com zjmrmf.com zjmsbt.com zjmtw.com zjmuex.com zjmycn.com zjnad.com zjnature.com zjnav.cc zjnav.com zjndjs.com zjnengyuan.com zjnews.com zjnrcb.com zjnrg.com zjnthkg.com zjnzi.com zjolcdn.com zjoldns.com zjorient.com zjoubbs.com zjpark.com zjpcedu.com zjpci.com zjpec.com zjphrcb.com zjpia.net zjpjmy.com zjplan.com zjpmw.com zjpoetry.com zjpost.com zjpse.com zjptcc.com zjpubservice.com zjqichuang.com zjqinghu.com zjqingshan.com zjqinzijianding.com zjqjs.com zjqsysj.com zjqzsy.com zjradiology.org zjrc.com zjrc.net zjrcu.com zjrdl.com zjrh.net zjriji.com zjrob.com zjrongli.com zjrq.com zjrqchina.com zjrtv.vip zjrunqiang.com zjrxz.com zjsairport.com zjsaisi.com zjsaisiet.com zjsalt.com zjsanji.com zjsanma.com zjsaz.com zjsbigdata.com zjscdb.com zjsck.com zjscs.com zjsdbjt.com zjseaport.com zjsee.org zjsftc.com zjsgjs.com zjshangfeng.com zjshcl.com zjshibao.com zjshijian.com zjshining.com zjshipyard.com zjshjkj.com zjshuangtu.com zjshuhao.com zjshuo.com zjshwl.com zjsight.com zjsjcjt.com zjsjjjt.com zjsjky.com zjsjty.com zjsjtz.com zjskgr.com zjskjt.com zjslep.com zjslzh.com zjsms.com zjspas.com zjssjt.com zjsszsjy.com zjsta.org zjstar-electric.com zjstm.org zjstv.com zjsuntex.com zjsw.org zjswxpx.com zjsxkj.com zjsxlt.com zjsxrz.com zjsxss.com zjsyyhyxh.com zjszbank.com zjszjz.com zjszrc.com zjszsyy.com zjszyyxh.com zjszzs.com zjt2017.com zjtaa.net zjtbe.com zjtcc.com zjtcjt.com zjtcn.com zjtcpm.com zjtdw.com zjtdyl.com zjtea.com zjteam.com zjtggroup.com zjtic.com zjtjw.com zjtkdz.com zjtlcb.com zjtmb.com zjtmkg.com zjtntd.com zjtobacco.com zjtongde.com zjtp.com zjtree.com zjts.com zjtxedu.org zjtyphoon.com zjtzcx.com zjtzedu.com zjtzwater.com zju88.org zjubh.com zjuers.com zjugis.com zjuiwz.com zjujournals.com zjukf.com zjun.info zjuqsc.com zjut.cc zjvending.com zjwandi.com zjwanma.com zjwater.com zjwater.org zjwc168.com zjwcjm.com zjwcqp.com zjwebapp.com zjwentou.com zjwfgroup.com zjwhhly.com zjwhyis.com zjwiki.com zjwit.net zjwjrc.com zjwk.com zjwmw.com zjwqw.com zjws.net zjwsbidding.com zjwttools.com zjwu.net zjwxbank.com zjwzba.com zjwzbearing.com zjxc.com zjxcsw.com zjxf119.com zjxhbj.com zjxhedu.com zjxhgd.com zjxhxny.com zjxindongyang.com zjxindu.com zjxinghe.com zjxinyun.com zjxjrc.com zjxlmb.com zjxltz.com zjxlyp.com zjxnd.com zjxpp.com zjxqyy.com zjxs.work zjxsbank.com zjxssj.com zjxtxs.com zjxwjs.com zjxwkg.com zjxwtoy.com zjxxkx.com zjxxt.com zjxymy.com zjxzgrd.com zjyanxing.com zjyari.com zjycpx.com zjyfyxzz.com zjyhjsjt.com zjyhqy.com zjyingcai.com zjyinzuo.com zjyiot.com zjyiyuan.com zjykrc.com zjylbx.com zjylgroup.com zjyonder.com zjyoutian.com zjyq.cc zjysgroup.com zjytxl.com zjyxzzs.com zjyyc.com zjyygy.com zjyzpcxx.com zjza.com zjzajsjt.com zjzcec.com zjzcen.com zjzcj.com zjzfj.com zjzfjs.com zjzg.com zjzhd.com zjzhengding.com zjzhengxingyiyuan.com zjzhengyao.com zjzhenyou.com zjzhitan.com zjzhongcheng.com zjzhonglan.com zjzhongtian.com zjzj.net zjzj.org zjzjjx.com zjzoneng.com zjzramc.com zjzrzyjy.com zjzs.net zjzsa.com zjzsco.com zjzsxb.com zjzwlab.com zjzy.com zjzybiotech.com zjzydns.com zjzygroup.com zjzyxs.com zk0771.com zk100.com zk2013.com zk5u.com zk678.com zk71.com zk789.net zkailun.com zkauto.com zkb77.com zkbhj.com zkbs.net zkck.com zkcmg.com zkcrm.com zkcserv.com zkcx.com zkdt.net zke999.com zkecopro.com zkedrive.com zkgenergy.com zkh.com zkh360.com zkhb.group zkhcsoft.com zkhcsy.com zkhgchip.com zkhj618.com zkicme.com zking.com zkjan.com zkjds.com zkkailiaoji.com zkkjpa.com zkl2333.com zkmeiling.com zkmob.net zknmattress.com zkoffcn.com zkpeace.com zkpk.org zkrdlab.com zkreen.com zkroom.com zkrsks.com zksbxhyxh.com zkscgj.com zksglaser.com zkshare.com zksn.com zksoftwaresz.com zksps.com zksyzy.com zktecn.com zkteco.com zkteco.xin zktecoiot.com zktecosj.com zktest.com zktimecube.com zktools.net zktw.com zku.net zkunet.com zkungfu.com zkuyun.com zkw2009.com zkwtech.com zkxblog.com zkxww.com zkyai.com zkydib.com zkyl.vip zkyouxi.com zkyxc.com zkyxls.com zkzbkj.com zkzj.org zkzls.com zkzn666.com zkzs.net zl-steelpipe.com zl1006.com zl56.com zl99.org zlbaba.com zlbagx.com zlbkj.com zlca.org zlcool.com zldatas.com zldq.org zle.com zlf.co zlfc.mobi zlfedu.com zlfind.com zlfshop.com zlfzyj.com zlg.com zlgcgl.com zlghr.com zlglpt.com zlgmcu.com zlgpy.com zlgsj.com zlh-zh.com zlhome.com zlhospital.com zlhui.com zlibs.com zlingad.com zlink-e.com zlinkurl.com zlitoa.cc zlitoa.com zljskb.com zljweb.com zljx.net zlkb.net zlketang.com zlkj20.com zlm4.com zlmlt.com zlnewlife.com zlongad.com zlongame.com zlook.com zlprc.com zlpumps.com zlqb.net zlqbk.com zlqh.com zlqiao.com zlqx.com zlr6.com zls365.com zlscn.net zlsin.com zlsoft.com zlsqlt.com zlsss.com zlsyun.com zlt365.com zltianhen.com zlttxl.com zluren.com zlview.com zlvod.com zlwh2026.com zlwl.vip zlwlhse.com zlx.com zlxiang.com zly169.com zlygjzx.com zlygu.com zlysgl.com zlzlzsl.com zlzscq.com zlzt.com zm-assemble.com zm-clock.com zm-ep.com zm-grow.com zm-introduce.com zm-invite.com zm-mp.com zm-wx.com zm0772.com zm1717.com zm30.com zmapp.com zmaxfilm.com zmaxhotels.cc zmbesta.com zmbg.com zmbga.com zmc-china.com zmcchina.com zmccx.com zmclearing.com zmd5.com zmdfcw.com zmdfdc.com zmdsbus.com zmdsjob.com zmdwater.com zmdyzkgjt.com zmdz.com zmeetb.com zmeng.cc zmeng123.com zmengzhu.com zmgov.com zmgrcw.com zmhttp.com zmifi.com zmingcx.com zmirrordemo.com zmis.me zmister.com zmjiudian.com zmjm.com zmkma.com zmkmex.com zmlearn.com zmmek.com zmmio.com zmndjm.com zmnedu.com zmnh.com zmnjtwx.com zmnoa.com zmnrz.com zmnxbc.com zmobuy.com zmpal.com zmqdez.ru zmqh.com zmqmt.com zmren.com zmrenwu.com zmshz.com zmsq.com zmssh.com zmtpc.com zmtquan.com zmubf.com zmufivehospital.com zmumu.com zmweb.net zmwo.com zmwxxcx.com zmxitang.com zmye5vly.com zmyui.com zmyyc.com zmzb.com zmzjt.com zmzx.cc zn99.com znba.net znbo.com znc365.com zncar.com zncmjt.com znczz.com zndata.com zndlkj.com zndls.com zndns.com znds.com znds.net zndsbbs.com zndsrom.com zndstec.com znelc.com znfit.com zngm.com zngue.com zngxjt.com znhhmedical.com znhospital.com znhr.com znhwhw.com znjchina.com znjj.tv znjs.com znjsjt.com znjtgf.com znjttz.com znlc2015.com znlcn.org znlerp.com znlh.com znmq.com znnu.com znonline.net znp9.com znpin.com znpla.space znrfwy.com znrom.com znrsc.com znshuke.com znshuru.com znsjw.com znsmart.com znstartups.com zntb.net zntcexpo.com zntschool.com zntvrom.com zntx.cc znum.com znwb.com znxdxs.com znxhd.com znxk.net znyp.com znypjy.com znzcompass.com znzcompass.net znzmo.com znzncn.com znznet.net znztool.com znztv.com znzyf.com zo-station.com zoassetmanagement.com zobmxcfw.com zocai.com zocolor.com zocoxx.com zodgame.me zoe360.com zoebon.com zoeeasy.com zoeess.com zoform.com zofund.com zoharforce.com zohead.com zohi.tv zoioo.com zoje.com zojirushi-china.com zokmetal.com zokogo.com zol-img.com zol.com zollty.com zoloz.net zoly.tech zomanbio.com zombiescat.com zomiu.com zomsky.com zon100.com zonafs.com zonboapp.com zonci.com zone-king.com zone.id zone139.com zoneben.com zoneidc.com zoneker.com zonelo.tech zonen-tech.com zoneray56.com zoneve.com zoneyung.com zonezu.com zongcaidetishenqianqi.net zongdegongju.com zonghangsl.com zonghe.com zonghe888.com zongheng.com zongheng001.com zonghengke.com zonghengxiaoshuo.com zonglai.com zonglikeji.com zongming.net zongmutech.com zongs365.com zongshengjituan.com zongtiku.com zongxiankj.com zongyiconverge.com zongyifile.com zongyigame.com zongyimobile.com zongyionline.com zongyiphone.com zongyixun.com zonhen.com zonsengroup.com zonsenmotor.com zonst.com zontes.com zoocer.com zoocoffee.com zooelab.com zoofon.com zookingsoft.com zookparts.com zoolnasm.com zoom3g.com zoomerstudio.com zoomeye.org zoomfr.com zoomla.net zoomlion.com zoomwo.com zoopda.com zoosnet.net zoossoft.com zoossoft.net zooszyservice.com zoot.plus zootope.ink zooyoo.cc zoqlan.com zoranchem.com zoroli.com zorrospray.com zorun.com zoscape.com zotiser.com zotrppzv.com zotrus.com zotye.com zou.la zouaw.com zoubiao.com zoucheng.cc zoucz.com zoues.com zouhong365.com zouht.com zouin.net zoujiang.com zoukankan.com zoular.com zoutu.com zouzhi.world zouzhiqiang.com zovps.com zowoyoo.com zoxun.com zoyoo.net zoyse.com zoyst.com zoyuecs.com zozen.com zp.cc zp.do zp005.com zp0716.com zp0737.com zp114.net zp365.com zp515.com zpan.space zparking-tech.com zpascal.net zpb365.com zpbtnpl.com zpc-cn.com zpcdi.com zpchaji.com zpcmshopping.com zpedu.com zpedu.org zpfdc.com zpgd.net zphit.com zphlkj.com zphospital.com zpjkcy.com zplay.com zplayworld.com zpm.so zpmc.com zpmg.com zpparts.com zpstar.com zpt966033.com zptq.com zpug.net zpwcb.com zpwz.net zpxrmyy.com zq12369.com zq235.com zq6.com zq84.com zqagr.com zqaqxh.com zqase.com zqbykj.com zqcaf.com zqcloud.com zqcloudgame.com zqcyzg.com zqd086.com zqdns37.vip zqedu.net zqfdc.net zqgame.com zqgjz1312.com zqgreen.com zqhthr.com zqhuahui.com zqhuwkc.com zqic.net zqids.com zqin758.xyz zqjcedu.com zqjiese.com zqjinneng.com zqlian.com zqlx.com zqnf.com zqpj.com zqread.com zqsign.com zqsjf.com zqsos.com zqsx.net zqtbg.com zqtbu.com zqtong.com zquan.cc zquan.org zqvip8.cc zqwfe.work zqwh.com zqwxzf.com zqxsc.com zqy.com zqygame.com zqyxf.com zqz510.com zqzd.com zqzyxx.com zr-fanuc.com zr66.com zrahh.com zran88.com zrblog.com zrblog.net zrbn.ltd zrbx.com zrcaifu.com zrcbank.com zrfan.com zrfe.com zrfilm.com zrhsh.com zring.com zritc.com zrj96.com zrkjy.com zrlyyy.com zrmm.com zrmxswrl.com zrpta.com zrtechnology.com zrtg-group.com zrtg.com zrthink.com zrtjt.com zrway.com zrwjk.com zrxdsj.com zry97.com zrzhpt.com zs-ah.com zs-e.com zs-frd.com zs-hospital.com zs-jlc.com zs-lzlj.com zs-nj.com zs-rh.com zs-united.com zs6y.com zs8q.com zs9.com zs91.com zsaber.com zsacg.com zsaeroengine.com zsafedns.net zsaipay.com zsamc.com zsanxing.com zsaxi.com zsb2c.com zsbeike.com zsboai.com zsbqgz.com zsbsoft.com zsbus.wiki zsbyw.com zsc-group.com zscbd.com zscch.com zsceta.com zschem.com zscjjt.com zscollege.com zsctgroup.com zscz0768.com zsd.name zsdianlan.com zsdlw.com zsdown.com zsedu.net zsemall.com zsemi.com zsengine.com zseoo.com zsex.ltd zsezt.com zsfund.com zsfzjs.com zsg6.com zsgai.com zsgcgj.com zsgd.com zsgjs.com zsglrj.com zsgoodlighting.com zsgsly.com zsgzc.com zsh.com zsh8.com zshandsome.com zshc12306.com zshcx.com zshgsoft.com zshhjt.com zshield.net zshl.com zshnb.com zshpldbz.com zshsoft.com zshszy.com zshtys888.com zshuoshao.store zshuoshao.tech zshypr.com zsia.org zsihuo.com zsimc.com zsincer.com zsite.com zsj18.com zsjdxh.org zsjhsjy.com zsjhx.com zsjjob.com zsjuchuang.com zsjxwj.com zsjz.com zskoubei.com zsksdw.com zsksw.net zslady.com zslefx.art zslhs.com zslin.com zslp021.com zsmama.com zsmeishiling.com zsmls.com zsmw.net zsmyy.com zsmz.com zspharm.com zsppsj.com zsquant.com zsqx.com zsr.cc zsscw.net zssjzyxh.com zssl.net zssmk.net zssph.com zssubeihospital.com zsswjt.com zssxyy.com zsszsh.com zsszyy.com zstack.io zstack.org zstatic.net zstaticcdn.com zsthk.com zstime.com zstled.com zsuan.com zsucai.com zsufivehos.com zsvsz.com zswater.com zswcn.com zswebao.shop zswj.com zswmailbox.com zswtjt.com zsxfsy.com zsxgzn.com zsxinsha.com zsxq.com zsxq100.com zsxsoft.com zsyanxuan.com zsyknk.com zsynjt.com zsysgz.com zsythink.net zsytit.com zsyyart.com zszk.net zszq.com zszxsz.com zszyss.com zt-express.com zt-g.com zt-info.com zt-job.com zt-motor.com zt0729.xyz zt1356.com zt1388.com zt17.com zt1f.com zt24j.com ztautoparts.com ztbeijixing.com ztbest.com ztcadx.com ztcdata.com ztcexam.com ztch.ltd ztcia.com ztcjjt.com ztcnwy.com ztcpa.com ztdgroup.com ztdli.com ztdsp.com zte.net ztedevice.com ztedevices.com ztedu.com ztedu8.com ztehotel.com ztehotel.net ztemall.com ztemap.com ztems.com ztestin.com ztfans.com ztfsec.com ztfssc.com ztgame.com ztgcglzx.com ztgy.org zthrv.com zthsqx.com zthx.com zthx2004.com ztinfoga.com ztjczx.com ztjhuyu.com ztjinchi.com ztjoin.com ztjttz.com ztjy61.com ztjystore.com ztjzgf.net ztjzht.com ztkm.com ztkosen.com ztky.com ztkycn.com ztlycm.com ztmao.com ztmvip.com ztn.com ztnews.net ztno.com ztnwork.com ztny188.com zto.com zto.net zto56.com ztoapp.com ztoglobal.com ztogroup.com ztomember.com ztoyh.com ztqft.com ztqqt.com ztrczp.com ztrhmall.com ztrong.com ztsafe.com ztshjcb.com ztsiot.com ztskc.com ztt.cc zttx-exp.com zttx.com ztupic.com ztups.com ztvcar.com ztweld.com ztwlbeijing.com ztwlgyl.com ztwzcg.com ztwzsc.com ztxinli.com ztxxr.com ztxyg.com ztxygj.com ztxywy.net ztxz.cc ztxzsjt.com ztyang.com ztytech.com ztyyw.com ztzcnc.com ztzhbw.com ztzhgw.com ztzhsq.com ztzjt.com ztzqzg.com ztzsnn.com ztzupu.com ztzy.com ztzzls.com zu.biz zu1tai.com zu3.com zuadr.com zuan-cheng.com zuan88.com zuanke8.com zuanqianyi.com zuanshi.com zuanshitoupiao.com zubei.co zuber.im zubunet.com zucaijia.com zucangbao.com zuchang1688.com zuche.com zuche900.com zuchecdn.com zuchuan.cc zuciz.com zucp.net zudequ.com zudong.com zuduijun.com zueiai.net zuezu.com zufang.com zufangzi.com zugame.com zugeliang01.com zugeqifu.com zuhao.space zuhaoapp.com zuhaofa.com zuhaohao.com zuhaowan.com zuhaowan.net zuhedaikuan.com zuhuaizhijia.com zuhuanhao.com zui.com zui5.com zui88.com zuiaixs.net zuiben.com zuibook.com zuiceshi.net zuicool.com zuidaima.com zuidijia.com zuidongxi.com zuifengyun.com zuifuli.com zuigx.com zuihaodaxue.com zuihuimai.com zuihuixue.com zuijh.net zuijiao.net zuik.ren zuiku.com zuikzy.com zuimeia.com zuimeiqidai.com zuimeitianqi.com zuiqiangyingyu.net zuiqingfeng.com zuishidai.com zuitang.com zuitu.com zuiwan.net zuixiaoyao.com zuixu.com zuiyanke.com zuiyou.com zuiyouxi.com zuizhifu.com zuji360.com zujiant.com zujuan.com zujuanku.com zujuanyi.com zuk.com zuka666.com zukang88.com zuke.com zuker.im zulijian.com zulin.com zulinbao.com zulinks.com zulllv.com zulong.com zulongacmall.com zulongtea.com zumbacn.com zumulv.com zun.com zun.gd zun9.com zunnou.com zunsf.com zunsou.com zunxiang17.com zunxun.com zunxun.net zunyibus.com zunyihospital.com zuo11.com zuo3.com zuoanedu.com zuoanfloor.com zuobaike.net zuobiao.press zuobin.net zuocaibusiness.com zuocaicn.com zuocheng.net zuodanye.com zuodao.com zuodashi.com zuodia.com zuofawang.com zuogj.com zuoh5.com zuohaotu.com zuohome.com zuohuodong.com zuoji-scm.com zuojiachubanshe.com zuojiang.com zuojiawang.com zuojing.com zuojj.com zuoli.com zuolin.com zuoqu.com zuoqudashi.net zuosa.com zuoshangbao.com zuoshouyisheng.com zuoshujiang.com zuotishi.com zuoweibc.com zuowen.com zuowen.net zuowen8.com zuowenjing.com zuowenjun.com zuowenku.net zuowenren.com zuowenwang.net zuowenzhitiao.com zuoyebang.cc zuoyebang.com zuoyebao.com zuoyebao.net zuoyehezi.com zuoyesou.com zuoyou-sofa.com zuozu.net zuozuowang.net zupig.com zupuk.com zupulu.com zuqiuba.com zuqiuba.net zuqiuju.com zusan.com zushouji.com zushoushou.com zuszw.com zutingwan.com zuulee.com zuwuzhuyi.com zuxiaoqi.com zuxiaoyi.com zuyaxi.com zuyizhan.com zuyouzu.com zuysfr.com zuyunfei.com zuyushop.com zuzheyong.com zuzhirenshi.com zuzitech.com zuzuche.com zuzuqueen.com zviewcloud.com zving.com zvstapp.com zvsts.com zvv.me zw-tencentclb.cloud zw-tencentclb.com zw-tencentclb.net zw-tencentclb.work zw110.com zw3dp.com zw69.com zw885.com zwads.com zwayoptik.com zwaztizp.com zwbdata.com zwcad.com zwcctv.com zwcnw.com zwcsm.com zwcuo.com zwda.com zwdn.com zwdns.com zwds.cc zwdsty.com zwduxs.com zwechat.com zwefu.com zwelec.com zwfw.com zwgeek.com zwgfood.com zwggb.com zwgjpx.com zwgt.net zwgx.com zwhuilian.com zwhz.com zwie2003.com zwjczx.com zwjhl.com zwjiaoyu.com zwjk.com zwjkey.com zwjl.net zwk999.com zwkf.net zwlhome.com zwoasi.com zwoptical.com zwoptics.com zwslshy.com zwsmds.com zwtianshangm.com zwtkl8.com zwtxipr.com zwuoo.com zwwank.com zwwdm.com zwwlgzs.com zwwltkl.com zwwx.com zwxww.net zwxx2022.com zwying.com zwyll.com zwyq110.com zwzdiy.cc zwzrent.com zwzsh.net zwzyzx.com zx-tour.com zx-xcx.com zx0093.com zx017.com zx017.net zx0818.com zx100.com zx10000.com zx110.org zx1234.com zx16f.com zx181.com zx18x.com zx350zx.com zx42195.com zx7b.com zx8.com zx98.com zx990.com zxb12315.com zxblinux.com zxbook.net zxbzr.com zxchemgroup.com zxcmk.com zxcoder.com zxczw.com zxd.com zxd666.com zxdkj.com zxdu.net zxdyw.com zxerp.com zxfsv.online zxfw888.com zxfwgj.com zxgcloud.com zxgj56.com zxgongshui.com zxgroup.com zxgstock.com zxgzs.com zxgzw.com zxhgroup.com zxhmjj.com zxhnzq.com zxhong.com zxhospital.com zxhsd.com zxhuman.com zxhwzm.com zxiaosi.com zxiaoxiang.com zxicrm.com zxinc.org zxingyun.com zxinzxw.com zxip.com zxiti02.com zxiu.com zxiw.com zxiyun.com zxja.com zxjkj.com zxjsq.net zxjy.net zxk120.com zxknow.com zxkq022.com zxky007.com zxl.com zxlib.com zxliu.com zxlo.com zxls.com zxmall.com zxmn2018.com zxmoto.com zxmseed.com zxneweye.com zxnic.net zxnrh.com zxoid.com zxopen.com zxpcloud.com zxpec.com zxpmq.com zxqfjt.com zxqg.com zxrcfw.com zxrtb.com zxsauto.com zxsctf.com zxshe.com zxsmd.com zxsou.com zxstyl.com zxswjx.com zxsx.org zxsxs.com zxsygs.com zxt2007.com zxtang.com zxtnetwork.com zxttax.com zxtw168.com zxw1.com zxw51.com zxwcbj.com zxwindow.com zxwyouxi.com zxx.world zxxk.com zxxmr.com zxxww.com zxxwypsj.com zxxxkj.com zxxyedu.com zxydss.com zxyee.com zxz.ee zxzhengxin.com zxzhijia.com zxzls.com zxzmail.com zxzt123.com zxzx8.com zxzyl.com zxzyy.com zy-cam.com zy-geo.com zy-textiles.com zy.com zy100.com zy120.com zy169.net zy223.com zy234.com zy728.com zy91.com zy99.net zyactech.com zyalc.com zyan.cc zyan456.com zyanzn.com zyark.com zyautoe.com zybang.com zybaoan.com zybest.com zybtp.com zybuluo.com zybwhsb.com zybwj.cc zybz518.com zyc123.com zyccst.com zycits.com zycitscn.com zycjcrz.org zycmmt.com zyctd.com zycultura.com zyczg.com zydanxia.com zydlks.com zydsy.com zydtrip.net zydza.com zydzkjcloud.com zye.cc zyea.com zyecp.com zyedu.org zyfb.com zyfbjzsc.com zyfchina.com zyfj.com zyfsz.net zygames.com zygj.net zygjtzjt.com zygs.com zygx8.com zygxxs.com zygxy.online zyh365.com zyhao.com zyhbjt.com zyhbxs.com zyhh.cc zyhobby.com zyholding.com zyhot.com zyict.net zyiis.net zying.net zyip.com zyiwater.com zyixi.xyz zyixinx.com zyjhzyy.com zyjiajiao.com zyjjt.com zyjkwh.com zyjoygame.com zyjtgas.com zyjthb.com zyjymall.com zyjyxx.com zyjyyun.com zyka.cc zykj0668.com zykjct.com zykjgame.com zykjnet.com zykpic.com zyks-lv.com zykths.com zyku.net zyl.me zylianto.com zylseo.com zymc1.com zymkcdn.com zymkshop.com zymreal.com zyms8.me zyoffice.com zyoo.net zyoogame.com zyops.com zyou100.com zyouexpress.com zyoulun.com zyoung.me zypharm.com zyplayer.com zyq.today zyq366.com zyqcs.com zyqjg.com zyqjs.com zyqxt.com zyqzyyy.com zyrack-china.com zyrb.com zyrc168.com zyrj.org zyrm.com zyrykbiandao.com zys6d.com zysd.work zyskys.com zysljhslt.com zysou.com zystarlink.com zyswsb.com zysxqgs.com zysyjqrmyy.com zyszyx.com zyt8.com zytang.net zytm913.com zyucan.com zyue.com zyun.vip zyvqb.com zywjw.com zywsw.com zywtc.com zywvvd.com zywxgames.com zywxpress.com zyxhmm.com zyxintuo.com zyxmmovie.com zyxr.com zyxxlyg.com zyxyfy.com zyxzyyy.com zyydb.com zyydjk.net zyyfy.com zyyimin.com zyykj168.com zyylee.com zyz119.com zyzhan.com zyzl120.com zyzw.com zz-hh.com zz-invest.com zz.ci zz123456789.xyz zz2024.com zz2z.com zz314.com zz34.com zz597.com zz618.com zz6789.com zz8j.com zz91.com zz96269.com zz9ivb.com zzad.com zzairport.com zzay.net zzbaike.com zzbbs.com zzbd.org zzboiler.com zzboyou.com zzbs.org zzbtool.com zzbtv.com zzc9.com zzccom.com zzccp.com zzcdnx.com zzcjby.com zzcjxy.com zzcm1.com zzcm2.com zzcm5.com zzcmjn.com zzcomm.com zzcrcgas.com zzd.pub zzdengji.com zzdh.net zzdjw.com zzdkdz.com zzdl.com zzdnews.com zzdsj.com zzdtec.com zzect.com zzepa.org zzfcw.com zzfeilu.com zzfh.com zzfly.net zzfreshair.com zzfriend.com zzfxfz.com zzgcjyzx.com zzgdapp.com zzgeli.net zzgjj.com zzgkyy.com zzgtjtgs.com zzguest.com zzguifan.com zzhaofang.com zzhaoz.com zzhbgs.com zzhfkm.com zzhszj.com zzhuanruan.com zzhybz.com zzicpa.com zzidc.com zzjdgcxx.com zzjianyun.com zzjidi.com zzjldsx.com zzjob88.com zzjsled.com zzjunzhi.com zzjxbg.com zzjyi.com zzk001.com zzkcjq.com zzkehui.com zzkjgy.com zzkk.cc zzksjx.com zzlcjj.xyz zzlgxy.net zzliot.com zzlirui.com zzllq.com zzlongyou.com zzlt.net zzltsw.com zzluohang.com zzlvjuren.com zzlvwang.com zzmama.net zzmetro.com zzmingtai.com zzmlb.com zzms.com zzmxbc.com zzmy.net zzmyt.com zznah001.com zznst.com zznyy.com zzprotect.com zzptech.com zzpzh.com zzqckj.com zzqfte.com zzqiyou.com zzqklm.com zzqqhb.com zzqrr.com zzqss.com zzquan9.com zzqudu.com zzqxs.com zzqz2024.com zzqzz.com zzrc.net zzrcw.net zzrmyy.com zzrseng.com zzs5.com zzs5.info zzsdyrmyy.com zzsey.com zzsf.com zzsggzy.com zzsgjj.com zzshe.com zzsi.com zzsiji.com zzsin.com zzsjzyxh.com zzslyy.com zzsmt.com zzsnewell.com zzspider.com zzsspnode.com zzssptop.com zzsteel.com zzstep.com zzszbsw.com zzszxyy.com zzt9.com zztaoning.com zzteacher.com zztender.com zztfly.com zzthjixie.com zztline.com zztlj.com zztuku.com zztv.tv zztvzd.com zztxkj.com zztyscl.com zzun777.com zzusah.com zzw-hb.com zzwah.com zzwanshou.com zzwenxue.com zzwgd.com zzwl.info zzwljc.com zzwonder.com zzwqqx.com zzwro.com zzwtjx.com zzwwiidd.com zzwzj.com zzxbn.com zzxca.com zzxcy.com zzxdc.com zzxfjxzz.com zzxhns.com zzxic.com zzxmys.com zzxw.net zzxworld.com zzxx.org zzxy.net zzy2001.com zzyauto.com zzycpa.com zzyecc.com zzyedu.org zzyfjc.com zzygxh.com zzyiquan.com zzyjs.com zzykcd.com zzyuam.com zzyugang.com zzyxxw.com zzyyds.com zzyyrl.com zzz4.com zzzdc.com zzzdm.com zzzfgjj.com zzzglby.com zzzhtc.com zzzj.com zzzla.com zzzlsh.com zzznkq.com zzzppp.com zzzqqp.com zzzsxx.com zzzxwh.net zzzyb.com zzzymjg.com zzzyy.com zzzyyy.com zzzzaaaa.com zzzzzz.me 265.com 2mdn-cn.net 2mdn.net a1.mzstatic.com a2.mzstatic.com a3.mzstatic.com a4.mzstatic.com a5.mzstatic.com activate.activation-v2.kaspersky.com activation-v2.geo.kaspersky.com activation-v2.kaspersky.com adcdownload.apple.com adcdownload.apple.com.akadns.net admob-cn.com adservice.google.com afcs.dell.com ai.zhaomi.cn alibaba.cdn.steampipe.steamcontent.com amp-api-edge-lb-cn.itunes-apple.com.akadns.net amp-api-edge-lb.itunes-apple.com.akadns.net amp-api-edge.apps.apple.com amp-api-edge.music.apple.com amp-api-search-edge.apps.apple.com amp-api-updates.apps.apple.com amp-api.apps.apple.com amp-api.media.apple.com amp-api.music.apple.com aod-ssl.itunes.apple.com aod.itunes.apple.com api-edge.apps.apple.com app-analytics-services.com app-measurement-cn.com app-measurement.com app-site-association.cdn-apple.com appldnld.apple.com appldnld.g.aaplimg.com appleid.cdn-apple.com apps.mzstatic.com apps5.oingo.com apptrailers.itunes.apple.com auth.music.apple.com avail.googleflights.net b.c2r.ts.cdn.office.net bag-cdn.itunes-apple.com.akadns.net bag.itunes.apple.com beacons.gcp.gvt2.com beacons.gvt2.com beacons2.gvt2.com beacons3.gvt2.com bg.v4.a.dl.ws.microsoft.com bg4.v4.a.dl.ws.microsoft.com bj1.api.bing.com bookkeeper.itunes.apple.com build.microsoft.com c.admob.com c.android.clients.google.com c.pki.goog cache-management-prod.google.com cache.pack.google.com cdn-cn.apple-mapkit.com cdn-cn1.apple-mapkit.com cdn-cn2.apple-mapkit.com cdn-cn3.apple-mapkit.com cdn-cn4.apple-mapkit.com cdn.ampproject.org cdn.apple-mapkit.com cdn.globalsigncdn.com.cdn.cloudflare.net cdn.marketplaceimages.windowsphone.com cdn1.apple-mapkit.com cdn2.apple-mapkit.com cdn3.apple-mapkit.com cdn4.apple-mapkit.com cds-cdn.v.aaplimg.com cds.apple.com cds.apple.com.akadns.net cdsassets.apple.com certs-lb.apple.com.akadns.net certs.apple.com checkin.gstatic.com cl1-cdn.origin-apple.com.akadns.net cl1.apple.com cl2-cdn.origin-apple.com.akadns.net cl2-cn.apple.com cl2.apple.com cl3-cdn.origin-apple.com.akadns.net cl3.apple.com cl4-cdn.origin-apple.com.akadns.net cl4-cn.apple.com cl4.apple.com cl5-cdn.origin-apple.com.akadns.net cl5.apple.com clickserve.cc-dt.com clickserve.dartsearch.net clickserver.googleads.com client-api.itunes.apple.com clientflow.apple.com clientflow.apple.com.akadns.net clientperipherals.dell.com clientservices.googleapis.com cma.itunes.apple.com cn-smp-paymentservices.apple.com cn.download.nvidia.com cn.widevine.com cn.windowssearch.com cnappinstall.googleadapis.com communities.apple.com configuration.apple.com configuration.apple.com.akadns.net connectivitycheck.gstatic.com content.googleadapis.com crashlyticsreports-pa.googleapis.com crl-lb.apple.com.akadns.net crl.apple.com crl.globalsign.net crl.kaspersky.com crl.pki.goog crls.pki.goog csi.gstatic.com cstat.apple.com cstat.cdn-apple.com ctdsb.clouddiffuse.xyz ctldl.windowsupdate.com cueme-api.quark.cn customization-cdn.dell.com dartsearch-cn.net dc1-cert.ksn.kaspersky-labs.com dc1-file.ksn.kaspersky-labs.com dc1-pp.ksn.kaspersky-labs.com dc1-st.ksn.kaspersky-labs.com dc1.ksn.kaspersky-labs.com dd-cdn.origin-apple.com.akadns.net dds.dell.com dejavu.apple.com devblogs.microsoft.com developer.microsoft.com devimages-cdn.apple.com devstreaming-cdn.apple.com dg-meta.video.google.com discussionschinese.apple.com dl.dell.com dl.google.com dl.l.google.com dnl-00.geo.kaspersky.com dnl-01.geo.kaspersky.com dnl-02.geo.kaspersky.com dnl-03.geo.kaspersky.com dnl-04.geo.kaspersky.com dnl-05.geo.kaspersky.com dnl-06.geo.kaspersky.com dnl-07.geo.kaspersky.com dnl-08.geo.kaspersky.com dnl-09.geo.kaspersky.com dnl-10.geo.kaspersky.com dnl-11.geo.kaspersky.com dnl-12.geo.kaspersky.com dnl-13.geo.kaspersky.com dnl-14.geo.kaspersky.com dnl-15.geo.kaspersky.com dnl-16.geo.kaspersky.com dnl-17.geo.kaspersky.com dnl-18.geo.kaspersky.com dnl-19.geo.kaspersky.com docs.microsoft.com doubleclick-cn.net doubleclick.net download.developer.apple.com download.microsoft.com download.mlcc.google.com download.qatp1.net download.tensorflow.google.com download.visualstudio.microsoft.com downloaddispatch.itunes.apple.com ea2cn-dev-outlet.dell.com ea2cn-prod-outlet.dell.com ea2cn-staging-outlet.dell.com edge.geo.kaspersky.com emmapplecodevice.googleapis.com emoi-cncdn.bing.com experiments.apple.com f.c2r.ts.cdn.office.net fcs.dell.com fides-pol.apple.com firebase-settings.crashlytics.com fontfiles.googleapis.com fonts.googleapis.com fonts.gstatic.com fs.microsoft.com fta.dell.com ftaapj.dell.com ftaemea.dell.com ftasitapj.dell.com g0.gstatic.com g1.gstatic.com g2.gstatic.com g3.gstatic.com gbxgateway-dev.dell.com gbxgateway.dell.com geetest.datasink.sensorsdata.cn go.corp.google.com gog-cdn-fastly.gog.com gog-cdn.akamaized.net gog.qtlglb.com gogalaxy.gog-statics.com gonglchuangl.net gongyichuangyi.net google-analytics-cn.com google-analytics.com googleadservices-cn.com googleadservices.com googleanalytics.com googleapis-cn.com googleapps-cn.com googleflights-cn.net googleoptimize-cn.com googleoptimize.com googlesyndication-cn.com googlesyndication.com googletagmanager-cn.com googletagmanager.com googletagservices-cn.com googletagservices.com googletraveladservices-cn.com googletraveladservices.com googlevads-cn.com gs-loc-cn.apple.com gs-loc.apple.com gsp10-ssl-cn.ls.apple.com gsp12-cn.ls.apple.com gsp13-cn.ls.apple.com gsp4-cn.ls.apple.com gsp4-cn.ls.apple.com.edgekey.net.globalredir.akadns.net gsp5-cn.ls.apple.com gsp85-cn-ssl.ls.apple.com gspe11-2-cn-ssl.ls.apple.com gspe12-cn-ssl.ls.apple.com gspe19-2-cn-ssl.ls-apple.com.akadns.net gspe19-2-cn-ssl.ls.apple.com gspe19-cn-ssl.ls.apple.com gspe19-cn.ls-apple.com.akadns.net gspe19-cn.ls.apple.com gspe21-ssl.ls.apple.com gspe35-ssl.ls.apple.com gspe79-cn-ssl.ls.apple.com gspe85-cn-ssl.ls.apple.com gstatic-cn.com gstaticadssl.l.google.com gtm.oasisfeng.com guzzoni-apple-com.v.aaplimg.com guzzoni.apple.com guzzoni.smoot.apple.com hellofontpreview.oss-cn-beijing.aliyuncs.com hellowebfonts.oss-cn-beijing.aliyuncs.com hospital.pku.edu.cn i.dell.com i.pki.goog icloud-cdn.icloud.com.akadns.net icloud.cdn-apple.com images-cn-8.ssl-images-amazon.com images-cn.ssl-images-amazon.com images.apple.com.edgekey.net.globalredir.akadns.net imasdk.googleapis.com inappcheck-cn.itunes-apple.com.akadns.net inappcheck-lb.itunes-apple.com.akadns.net inappcheck.itunes.apple.com init-kt.apple.com init-p01md-lb.push-apple.com.akadns.net init-p01md.apple.com init-p01st-lb.push-apple.com.akadns.net init-p01st.push.apple.com init-s01st-lb.push-apple.com.akadns.net init-s01st.push.apple.com init.ess.apple.com init.gc-lb.apple.com.akadns.net init.gc.apple.com init.itunes.apple.com iosapps.itunes.apple.com iosapps.itunes.g.aaplimg.com ipcdn.apple.com iphone-ld.apple.com iphone-ld.origin-apple.com.akadns.net is-ssl.mzstatic.com-cn-lb.itunes-apple.com.akadns.net is1-ssl.mzstatic.com is1.mzstatic.com is2-ssl.mzstatic.com is2.mzstatic.com is3-ssl.mzstatic.com is3.mzstatic.com is4-ssl.mzstatic.com is4.mzstatic.com is5-ssl.mzstatic.com is5.mzstatic.com itunes-apple.com.akadns.net itunes.apple.com itunesconnect.apple.com izattime.qcomgeo2.com js-cdn.music.apple.com km.support.apple.com ksn-cinfo-geo.kaspersky-labs.com ksn-cinfo.geoksn.kaspersky.com ksn-crypto-info-geo.kaspersky-labs.com ksn-crypto-kas-geo.kaspersky-labs.com ksn-crypto-tcert-geo.kaspersky-labs.com ksn-crypto-url-geo.kaspersky-labs.com ksn-crypto-verdict-geo.kaspersky-labs.com ksn-crypto-wifiplus-geo.kaspersky-labs.com ksn-crypto-wifiplus.geoksn.kaspersky.com ksn-dc1-cert.geoksn.kaspersky.com ksn-dc1-file.geoksn.kaspersky.com ksn-dc1.geoksn.kaspersky.com ksn-file-geo.kaspersky-labs.com ksn-file.geoksn.kaspersky.com ksn-info-geo.kaspersky-labs.com ksn-info.geoksn.kaspersky.com ksn-kas.geoksn.kaspersky.com ksn-mdr.geoksn.kaspersky.com ksn-tcert-geo.kaspersky-labs.com ksn-tcert.geoksn.kaspersky.com ksn-url-geo.kaspersky-labs.com ksn-url.geoksn.kaspersky.com ksn-verdict-geo.kaspersky-labs.com ksn-verdict.geoksn.kaspersky.com l2-uberproxy.corp.google.com learn.microsoft.com logger-dev.corp.google.com logger.corp.google.com login.corp.google.com lv.queniujq.cn maps.apple.com mdr.ksn.kaspersky-labs.com menu-static.gog-statics.com mesu-cdn.apple.com.akadns.net mesu-china.apple.com.akadns.net mesu.apple.com misc-assets.itunes.apple.com ml.cdn-apple.com monitoring.qpdp1.net moocs.unipus.cn music.apple.com musicstatus.music.apple.com mvod.itunes.apple.com myapp.itunes.apple.com myvs.download.prss.microsoft.com nexus.dell.com np-edge.itunes.apple.com ntp.aliyun.com ntp.tencent.com ntp1.aliyun.com ntp1.tencent.com ntp2.aliyun.com ntp2.tencent.com ntp3.aliyun.com ntp3.tencent.com ntp4.aliyun.com ntp4.tencent.com ntp5.aliyun.com ntp5.tencent.com ntp6.aliyun.com ntp7.aliyun.com o.pki.goog ocsp-lb.apple.com.akadns.net ocsp.apple.com ocsp.pki.goog ocsp2-lb.apple.com.akadns.net ocsp2.apple.com oemsoc.download.prss.microsoft.com officecdn.microsoft.com opencourse.pku.edu.cn oscdn.apple.com oscdn.origin-apple.com.akadns.net osxapps.itunes.apple.com osxapps.itunes.g.aaplimg.com p.cdn.persaas.dell.com p00.upd.kaspersky.com p01.upd.kaspersky.com p02.upd.kaspersky.com p03.upd.kaspersky.com p04.upd.kaspersky.com p05.upd.kaspersky.com p06.upd.kaspersky.com p07.upd.kaspersky.com p08.upd.kaspersky.com p09.upd.kaspersky.com p1-juejin.byteimg.com p10.upd.kaspersky.com p11.upd.kaspersky.com p12.upd.kaspersky.com p13.upd.kaspersky.com p14.upd.kaspersky.com p15.upd.kaspersky.com p16.upd.kaspersky.com p17.upd.kaspersky.com p18.upd.kaspersky.com p19.upd.kaspersky.com p2-juejin.byteimg.com p3-juejin.byteimg.com p3-novel.byteimg.com p4-juejin.byteimg.com p5-juejin.byteimg.com p6-juejin.byteimg.com p6-novel.byteimg.com p7-juejin.byteimg.com p8-juejin.byteimg.com p9-juejin.byteimg.com pagead-googlehosted.l.google.com pancake.apple.com pancake.cdn-apple.com.akadns.net pba0.apple.com pd-nk.itunes.apple.com pd.itunes.apple.com performanceparameters.googleapis.com pki-goog.l.google.com play.itunes.apple.com play.music.apple.com probe.siri.apple.com prod-controlbe.floonet.goog prod-databe.floonet.goog prod-support.apple-support.akadns.net prod.databe.floonet.goog productcard.gog-statics.com proxyconfig.corp.google.com publicassets.cdn-apple.com qagpublic.qatp1.net qgadmin.qcpp1.net qiao-cn.com qpx.googleflights.net qualysapi.qatp1.net qualysguard.qpdp1.net r.cert.corp.google.com rapture-prod.corp.google.com recaptcha-cn.net recaptcha.net redirector.bdn.dev redirector.c.chat.google.com redirector.c.mail.google.com redirector.c.pack.google.com redirector.c.play.google.com redirector.c.youtubeeducation.com redirector.gcpcdn.gvt1.com redirector.gvt1.com redirector.offline-maps.gvt1.com redirector.snap.gvt1.com redirector.xn--ngstr-lra8j.com refresh-bkg.activation-v2.kaspersky.com res-1.cdn.office.net res.cdn.office.net reserve-prime.apple.com s.mzstatic.com s00.upd.kaspersky.com s01.upd.kaspersky.com s02.upd.kaspersky.com s03.upd.kaspersky.com s04.upd.kaspersky.com s05.upd.kaspersky.com s06.upd.kaspersky.com s07.upd.kaspersky.com s08.upd.kaspersky.com s09.upd.kaspersky.com s1.mzstatic.com s10.upd.kaspersky.com s11.upd.kaspersky.com s12.upd.kaspersky.com s13.upd.kaspersky.com s14.upd.kaspersky.com s15.upd.kaspersky.com s16.upd.kaspersky.com s17.upd.kaspersky.com s18.upd.kaspersky.com s19.upd.kaspersky.com s2.mzstatic.com s3.mzstatic.com s4.mzstatic.com s5.mzstatic.com safebrowsing-cache.google.com safebrowsing.googleapis.com scanservice1.qcpp1.net scene7-cdn.dell.com sdx.microsoft.com se-edge.itunes.apple.com se2.itunes.apple.com search.itunes.apple.com seed-sequoia.siri.apple.com seed-swallow.siri.apple.com seed.siri.apple.com sequoia.apple.com service.urchin.com sf-api-token-service.itunes.apple.com sh-pod2-smp-device.apple.com shazam-insights.cdn-apple.com shell.cdn.office.net si.cdn.dell.com sm.dell.com smp-device-content.apple.com snp.cdn.dell.com snpi.dell.com software.download.prss.microsoft.com sp.itunes.apple.com speedysub.music.apple.com ss.bjmu.edu.cn ssl-google-analytics.l.google.com ssl.gstatic.com sslredirect.corp.google.com staging-controlbe.floonet.goog staging-databe.floonet.goog staging.databe.floonet.goog static-login.gog-statics.com static.gc.apple.com statics.teams.cdn.office.net stocks-sparkline-lb.apple.com.akadns.net stocks-sparkline.apple.com store.apple.com store.apple.com.edgekey.net store.apple.com.edgekey.net.globalredir.akadns.net store.storeimages.apple.com.akadns.net store.storeimages.cdn-apple.com storeedgefd.dsx.mp.microsoft.com streaming-uberproxy-rotation.corp.google.com streaming-uberproxy.corp.google.com streamingaudio.itunes.apple.com study.163.com su.itunes.apple.com sup-ssh-relay.corp.google.com sup-ssh-relay2.corp.google.com sup.corp.google.com sup.l.google.com support-china.apple-support.akadns.net support.apple.com supportassist.dell.com surface.downloads.prss.microsoft.com swallow-apple-com.v.aaplimg.com swallow.apple.com swcatalog-cdn.apple.com.akadns.net swcatalog.apple.com swcdn.apple.com swcdn.g.aaplimg.com swdist.apple.com swdist.apple.com.akadns.net swscan-cdn.apple.com.akadns.net swscan.apple.com sylvan.apple.com sync.itunes.apple.com tac.googleapis.com tesla-cdn.thron.cn test.gbugs-qa.chromium.org tf-feedback.itunes.apple.com time.amazonaws.cn time.izatcloud.net time.xtracloud.net tj-pod1-smp-device.apple.com tools.google.com tools.l.google.com tp.louisvuitton.com uberproxy-debug4.corp.google.com uberproxy.corp.google.com uberproxy6.corp.google.com update.crashlytics.com update.googleapis.com updates-http.cdn-apple.com updates-http.cdn-apple.com.akadns.net updates.cdn-apple.com uplaypc-s-ubisoft.cdn.ubi.com upp.itunes.apple.com valid.apple.com valid.origin-apple.com.akadns.net vscode.download.prss.microsoft.com vz.download.prss.microsoft.com wear.googleapis.com weather-data.apple.com weather-data.apple.com.akadns.net weather-map.apple.com weather-map2.apple.com weatherkit.apple.com wscont1.apps.microsoft.com wscont2.apps.microsoft.com www-csb.dell.com www-google-analytics.l.google.com www-googletagmanager.l.google.com www.amd.com www.apple.com www.apple.com.edgekey.net.globalredir.akadns.net www.dell.com www.destinationurl.com www.entrust.cn www.gstatic.com www.microsoft.com www.pxcc.com www.recaptcha.net www.support.apple.com www4-static.gog-statics.com xn--flw351e.com xp.apple.com xtratime.qcomgeo2.com xz.pphimalayanrt.com ================================================ FILE: luci-app-homeproxy/root/etc/homeproxy/resources/china_list.ver ================================================ 202604232238 ================================================ FILE: luci-app-homeproxy/root/etc/homeproxy/resources/gfw_list.txt ================================================ 000webhost.com 0rz.tw 1-apple.com.tw 1000giri.net 10beasts.net 10musume.com 12bet.com 12vpn.com 12vpn.net 1337x.to 141jj.com 1688.com.au 173ng.com 18board.com 18comic.org 1984bbs.com 1991way.com 1e100.net 1lib.sk 1point3acres.com 1pondo.tv 2008xianzhang.info 2021hkcharter.com 2047.name 2047.one 2049bbs.xyz 233abc.com 24hrs.ca 32red.com 36rain.com 404museum.com 466453.com 4bluestones.biz 4everproxy.com 4rbtv.com 4shared.com 4sqi.net 500px.com 500px.org 51.ca 51jav.org 51luoben.com 5278.cc 611study.com 611study.icu 63i.com 666pool.cn 69shuba.cx 6do.news 6do.world 6park.com 6parkbbs.com 6parker.com 6parknews.com 7capture.com 8-d.com 85cc.us 881903.com 89-64.org 8964museum.com 8z1.net 91dasai.com 91porn.com 91porny.com 91vps.club 991.com 996.icu 99btgc01.com 99cn.info 9bis.com 9bis.net 9cache.com 9gag.com 9news.com.au a-normal-day.com a248.e.akamai.net aamacau.com aave.com abc.net.au abc.xyz abebooks.co.uk abebooks.com abematv.akamaized.net aboluowang.com about.gitlab.com about.me abplive.com acast.com accountkit.com acevpn.com acg.rip acg18.me acgbox.org acgkj.com acgnx.se activpn.com aculo.us adcex.com addictedtocoffee.de addons.mozilla.org addyoutube.com adguard-vpn.com admin.recaptcha.net admob.com adpl.org.hk ads-twitter.com adsense.com adult-sex-games.com adult.friendfinder.com advanscene.com advertfan.com advertisercommunity.com aei.org aenhancers.com aex.com af.mil afantibbs.com afr.com afreecatv.com agnesb.fr agoogleaday.com agro.hk ai.dev ai.studio aiosearch.com aiph.net airconsole.com airitilibrary.com airvpn.org ait.org.tw aiweiweiblog.com akademiye.org akamai.tvb.com akamaihd.net akiba-online.com akiba-web.com akile.io akinator.com akow.org alabout.com alanhou.com alasbarricadas.org alforattv.net alive.bar aljazeera.com aljazeera.net alkasir.com all4mom.org allcoin.com allconnected.co alldrawnsex.com allfinegirls.com allinfa.com allmovie.com alternate-tools.com altrec.com alwaysdata.com alwaysdata.net alwaysvpn.com am730.com.hk amazon.co.jp amazonvideo.com ameblo.jp americangreencard.com americorps.gov amiblockedornot.com amitabhafoundation.us amnesty.org amnesty.org.hk amnestyusa.org ampproject.org amuletmc.com anchor.fm anchorfree.com ancsconf.org andfaraway.net android-x86.org android.com androidapksfree.com androidify.com androidtv.com andygod.com angela-merkel.de angola.org angularjs.org aniscartujo.com annas-archive.gd annas-archive.gl annas-archive.pk anobii.com anonfiles.com anonymouse.org anthonycalzadilla.com anthropic.com antiwave.net antpool.com anuneko.com anysex.com ao3.org aobo.com.au aofriend.com aomedia.org aomiwang.com aoxvpn.com apartmentratings.com apartments.com apat1989.org api-secure.recaptcha.net api-verify.recaptcha.net api.ai api.palworldgame.com api.pureapk.com api.recaptcha.net api.steampowered.com apiary.io apigee.com apk.support apkcombo.com apkmirror.com apkmonk.com apkplz.com apkpure.com apkpure.net app.box.com app.cloudcone.com app.element.io app.smartmailcloud.com appadvice.com appbrain.com appledaily.com appledaily.com.tw apps.evozi.com appshopper.com appsocks.net appspot.com appsto.re aptoide.com archive-it.org archive.fo archive.is archive.li archive.md archive.org archive.ph archive.today archive.vn archiveofourown.com archiveofourown.org archives.gov arctosia.com areca-backup.org arena.ai arena.taipei arethusa.su arlingtoncemetery.mil arte.tv artstation.com arvanstorage.ir arweave.org asacp.org asiaharvest.org asianage.com asianews.it asianfanfics.com asiansexdiary.com asiaone.com asiasociety.org ask.com askstudent.com askynz.net aspi.org.au aspistrategist.org.au assembla.com assets.bwbx.io assets.nxtrace.org assimp.org astrill.com atc.org.au atchinese.com athenaeizou.com atlanta168.com atnext.com auctions.yahoo.co.jp audacy.com auntology.fandom.com autodraw.com av.movie av01.tv avaaz.org avdb.in avdb.tv avg.com avgle.com avidemux.org avistaz.to avmo.pw avmoo.pw avoision.com axios.com axureformac.com azirevpn.com azurewebsites.net b-ok.cc b.hatena.ne.jp babylonbee.com backchina.com backend-v2.crixet.com bad.news badiucao.com bahamut.com.tw baidu.jp baijie.org bailandaily.com baixing.me baizhi.org banana-vpn.com band.us bandcamp.com bandwagonhost.com bangchen.net bangdream.space bangkokpost.com bangumi.moe bangyoulater.com bankmobilevibe.com bannedbook.org banorte.com baramangaonline.com barnabu.co.uk bartender.dowjones.com barton.de bastillepost.com bayvoice.net bb-chat.tv bbc.co.uk bbc.com bbc.pdn.tritondigital.com bbcchinese.com bbchat.tv bbci.co.uk bbs.cantonese.asia bbs.hanminzu.org bbs.junglobal.net bbs.mikocon.com bbs.mychat.to bbs.naixi.net bbs.nyinfor.com bcex.ca bearteach.com bebo.com beeg.com beepool.com beepool.org beevpn.com behance.net beijing1989.com beijing2022.art beijingspring.com bell.wiki bellingcat.com berlinerbericht.de berlintwitterwall.com bestvpn.com bestvpnanalysis.com bestvpnforchina.net bestvpnserver.com bestvpnservice.com bestvpnusa.com bet365.com betaclouds.net bettergpt.chat betterhash.net betternet.co bettervpn.com bettween.com betvictor.com bfnn.org bfsh.hk bgme.me bgvpn.com biblesforamerica.org bibox.com biedian.me big.one bigjapanesesex.com bignews.org bigone.com bild.de biliworld.com binance.com binance.org binancezh.cc bird.so bit-z.com bit.do bit.ly bitbaby.com bitbay.net bitchute.com bitcointalk.org bitcoinworld.com bitfinex.com bitget.com bithumb.com bitmex.com bitshare.com bitterwinter.org bittorrent.com bitvise.com bitz.ai bjzc.org bl-doujinsouko.com blacked.com blackmagicdesign.com blackvpn.com blinkx.com blip.tv blockcast.it blockcn.com blockedbyhk.com blockless.com blocktempo.com blog.cryptographyengineering.com blog.de blog.excite.co.jp blog.expofutures.com blog.fizzik.com blog.fuckgfw233.org blog.jackjia.com blog.jp blog.martinoei.com blog.pathtosharepoint.com blog.pentalogic.net blog.ranxiang.com blog.reimu.net blog.soylent.com blog.tiney.com blogblog.com blogcatalog.com blogcity.me blogger.com blogjav.net bloglines.com bloglovin.com blogspot.ae blogspot.al blogspot.am blogspot.ba blogspot.be blogspot.bg blogspot.ca blogspot.cat blogspot.ch blogspot.cl blogspot.co.uk blogspot.com blogspot.com.ar blogspot.com.au blogspot.com.br blogspot.com.by blogspot.com.co blogspot.com.cy blogspot.com.ee blogspot.com.eg blogspot.com.es blogspot.com.mt blogspot.com.ng blogspot.com.tr blogspot.com.uy blogspot.cz blogspot.de blogspot.dk blogspot.fi blogspot.fr blogspot.gr blogspot.hk blogspot.hr blogspot.hu blogspot.ie blogspot.in blogspot.is blogspot.it blogspot.jp blogspot.kr blogspot.li blogspot.lt blogspot.lu blogspot.md blogspot.mk blogspot.mx blogspot.my blogspot.nl blogspot.no blogspot.pe blogspot.pt blogspot.qa blogspot.ro blogspot.ru blogspot.se blogspot.sg blogspot.si blogspot.sk blogspot.sn blogspot.tw blogspot.ug blogtd.org bloodshed.net bloomberg.cn bloomberg.com bloomberg.de bloombergview.com bloomfortune.com blubrry.com bmdru.com bnbstatic.com bnext.com.tw bnn.co bnrmetal.com boardreader.com bod.asia bolehvpn.net boobstagram.com book.com.tw bookdepository.com books.com.tw booktopia.com.au bookwalker.com.tw bootstrapcdn.com borgenmagazine.com botanwang.com bowenpress.com boxpn.com boxun.com boxun.tv boysmaster.com br.st braumeister.org brave.com bravotube.net brazzers.com breached.to break.com breakgfw.com breakingtweets.com breakwall.net brill.com brizzly.com broadpressinc.com brookings.edu brutaltgp.com bsky.app bsky.network bsky.social bt4g.org bt4gprx.com bt95.com btbit.net btbtt.co btbtt.me btc.com btc98.com btcbank.bank btctrade.im btdig.com btguard.com btku.me btku.org budaedu.org buffered.com bullguard.com bullog.org bullogger.com bumingbai.net bunbunhk.com busayari.com business-humanrights.org business.page businessinsider.com businesstoday.com.tw busu.org buzzorange.com buzzsprout.com bvpn.com bwgyhw.com bwh1.net bx.in.th bybit.com bynet.co.il bypasscensorship.org byrut.org c-est-simple.com c-span.org c-spanvideo.org c.mi.com c2cx.com c3pool.com cableav.tv cablegatesearch.net cachefly.com cachefly.net cacnw.com cactusvpn.com calebelston.com calendarz.com camfrog.com campaign-archive.com campaignforuyghurs.org cams.com canva.com canyu.org caobian.info caochangqing.com caoporn.us cap.org.hk carfax.com cari.com.my caribbeancom.com carousell.com.hk carrd.co cartoonmovement.com casatibet.org.mx casino.williamhill.com casinobellini.com castbox.fm catbox.moe catch22.net catchgod.com catholic.org.hk catholic.org.tw cato.org cattt.com caus.com cbc.ca cbs.ntu.edu.tw cccat.cc cccat.co ccfd.org.tw cchere.com cchostvps.xyz cclife.org cclifefl.org ccthere.com ccthere.net cdbook.org cdef.org cdig.info cdjp.org cdn-images.mailchimp.com cdn-telegram.org cdn.arstechnica.net cdn.jwplayer.com cdn.printfriendly.com cdn.seatguru.com cdn.softlayer.net cdn.statically.io cdninstagram.com cdp1998.org cdp2006.org cdpeu.org cdpuk.co.uk cdpweb.org cdpwu.org cdw.com cecc.gov cellulo.info cenews.eu centauro.com.br centerforhumanreprod.com centralnation.com centurys.net certificate-transparency.org certificate.revocationcheck.com cfr.org cgdepot.org change.org changp.com channelnewsasia.com chanworld.org chaoex.com chaos.social character.ai chat.com chat.lmsys.org chatgpt.com chatpdf.com chaturbate.com checkgfw.com chengmingmag.com chenguangcheng.com chenpokong.com chenpokongvip.com chenshan20042005.wordpress.com cherrysave.com chhongbi.org china-mmm.net china-review.com.ua china-week.com china.ucanews.com china101.com china18.org china21.com china21.org china5000.us chinaaffairs.org chinaaid.net chinaaid.org chinaaid.us chinachange.org chinachannel.hk chinademocrats.org chinadialogue.net chinadigitaltimes.net chinaelections.org chinafile.com chinafreepress.org chinagfw.org chinahorizon.org chinamule.com chinanewscenter.com chinapress.com.my chinasocialdemocraticparty.com chinasoul.org chinatopsex.com chinauncensored.tv chinaview.wordpress.com chinaworker.info chinese-memorial.org chinese.engadget.com chinesedailynews.com chinesedemocracy.com chinesegay.org chinesen.de chinesenews.net.au chineseradioseattle.com chineseupress.com chingcheong.com chinman.net chobit.cc chrdnet.com christianfreedom.org christianstudy.com christiantimes.org.hk chrlawyers.hk chrome.com chromecast.com chromeexperiments.com chromestatus.com ci-en.jp cia.gov cici.com ciciai.com cirosantilli.com citizencn.com citizenlab.ca citizenlab.org city365.ca citypopulation.de civicparty.hk civilhrfront.org civilmedia.tw civitai.com cixiaoya.club ck101.com classicalguitarblog.net claude.ai claude.com cldr.unicode.org clearsurance.com clementine-player.org clinica-tibet.ru clipconverter.cc cloud.dify.ai cloud.mail.ru cloudflare-dns.com cloudflare-ipfs.com cloudflarestatus.com cloudfunctions.net club1069.com clubhouseapi.com clyp.it cmcn.org cmegroup.com cmi.org.tw cms.gov cmule.com cmx.im cn-proxy.com cn.fmnnow.com cn.sandscotaicentral.com cn.shafaqna.com cn.theaustralian.com.au cn.uptodown.com cna.com.tw cnbbnews.wordpress.com cnbeta.com.tw cnd.org cnnews.chosun.com cnpolitics.org co.ng.mil coat.co.jp cobinhood.com cochina.org codeshare.io codeskulptor.org cofacts.tw coffeemanga.to coinbase.com coinbene.com coinex.com coingecko.com coingi.com coinmarketcap.com coinrail.co.kr cointiger.com cointobe.com coinut.com colacloud.net collateralmurder.com collateralmurder.org comefromchina.com comments.app commentshk.com communistcrimes.org communitychoicecu.com comparitech.com compileheart.com connect.facebook.net conoha.jp contests.twilio.com cool18.com coolaler.com coolder.com coolloud.org.tw coolstuffinc.com copilot.microsoft.com cos-moe.com cosplayjav.pl costco.com cotweet.com counter.social coursehero.com covenantswatch.org.tw coze.com cpj.org cpu-monkey.com cq99.us crackle.com crashlytics.com crazypool.org crazyshit.com crbug.com crchina.org creaders.net creativelab5.com cristyli.com crocotube.com crossfire.co.kr crossvpn.net crosswall.org croxyproxy.com crrev.com crucial.com crunchyroll.com cruxpool.com csdparty.com csis.org csmonitor.com css.pixnet.in csuchen.de csw.org.uk ct.org.tw ctinets.com ctinews.com ctitv.com.tw ctowc.org cts.com.tw ctwant.com cuiweiping.net culture.tw cumlouder.com curvefish.com cusp.hk cutout.pro cutscenes.net cw.com.tw cyberghostvpn.com cynscribe.com d-fukyu.com d.cash d100.net d2bay.com d2pass.com dabr.co.uk dabr.me dabr.mobi dadazim.com daidostup.ru dailymail.co.uk dailymotion.com dailysabah.com dailyview.tw dajiyuan.de dalailama.mn dalailama.ru dalailamacenter.org dalailamaworld.com dalianmeng.org daliulian.org danbooru.donmai.us danke4china.net darmau.co darpa.mil darrenliuwei.com dashlane.com data-vocabulary.org daum.net david-kilgour.com dawangidc.com daxa.cn dazn.com db.tt dbgjd.com dcard.tw dcs-spotify.megaphone.fm ddc.com.tw ddex.io deadhouse.org deadline.com debug.com deck.ly deck.new decodet.co deepai.org deepmind.com deezer.com deja.com delcamp.net demo.unlock-music.dev demosisto.hk depositphotos.com desc.se desipro.de dessci.com deutsche-welle.de developers.box.net deviantart.com deviantart.net devio.us devpn.com devv.ai diaoyuislands.org digiland.tw digisfera.com diigo.com directcreative.com discoins.com disconnect.me discord.com discord.gg discordapp.com discordapp.net discuss.com.hk dish.com disk.yandex.com disk.yandex.ru disneyplus.com disp.cc disqus.com dit-inc.us diyin.org dizhuzhishang.com dl-laby.jp dl.box.net dlive.tv dlsite.com dlyoutube.com dm530.net dma.mil dmc.nico dmcdn.net dmhy.org dmm.co.jp dns.cloudflare.com dns.sb dns2go.com dnscrypt.org dnssec.net dnvod.tv doc.new docker.com docker.io dockerstatus.com docs.new documentingreality.com doh.sb dolc.de dolf.org.hk dongtaiwang.com dongtaiwang.net doom9.org doosho.com doourbest.org dot.sb dotplane.com dotsub.com dotvpn.com doub.io doubibackup.com doubiyunbackup.com doublethinklab.org douchi.space dougscripts.com doujincafe.com download.dappcdn.com dpool.top dpp.org.tw dpr.info dragonex.io dragonsprings.org drgan.net dropbooks.tv dropbox.com dropboxapi.com dropboxusercontent.com dscn.info dstk.dk dtiblog.com dtic.mil dubox.com duck.com duckduckgo.com duckmylife.com duga.jp duihua.org duihuahrjournal.org duplicati.com duyaoss.com dvdpac.com dvorak.org dw-world.com dw-world.de dw.com dw.de dweb.link dwnews.com dwnews.net dynawebinc.com dynu.com dynupdate.no-ip.com dysfz.cc e-classical.com.tw e-gold.com e-hentai.org e-hentaidb.com e-zone.com.hk e123.hk e621.net earlytibet.com earthvpn.com eastasiaforum.org eastturkistangovernmentinexile.us ebook.hyread.com.tw ebtcbank.com ecfa.org.tw ecimg.tw economist.com edgecastcdn.net edubridge.com edx-cdn.org eesti.ee eevpn.com efksoft.com efukt.com eic-av.com eireinikotaerukai.com eksisozluk.com elconfidencial.com elgoog.im elpais.com emule-ed2k.com emulefans.com en.favotter.net encrypt.me encyclopedia.com enewstree.com englishfromengland.co.uk entermap.com epochhk.com epochtimes-bg.com epochtimes-romania.com epochtimes.co.il epochtimes.co.kr epochtimes.com epochtimes.com.tw epochtimes.de epochtimes.fr epochtimes.it epochtimes.jp epochtimes.ru epochtimes.se epochtimestr.com epochweek.com epochweekly.com eporner.com erights.net eriversoft.com ernestmandel.org erodaizensyu.com erodoujinlog.com erodoujinworld.com eromanga-kingdom.com eromangadouzin.com eromon.net esg.t91y.com eslite.com esurance.com etherdelta.com ethermine.org etherscan.com etherscan.io etizer.org etokki.com etools.ncol.com etsy.com eurekavpt.com euronews.com evchk.wikia.com everipedia.org evschool.net exchristian.hk exhentai.org exmo.com exmormon.org expatshield.com expecthim.com expekt.com exploader.net expressvpn.com exrates.me extmatrix.com eyevio.jp eyny.com f-droid.org f2pool.com f8.com facebook.com facebook.de facebook.design facebook.hu facebook.in facebook.nl facebook.se facebookmail.com facebookquotes4u.com faceless.me facesofnyfw.com facesoftibetanselfimmolators.info factchecklab.org factpedia.org faith100.org faiththedog.info fakku.net fallenark.com falsefire.com falunasia.info falunau.org falundafa-florida.org falundafa-nc.org falundafa-pa.net falundafaindia.org falunhr.org famunion.com fanbox.cc fangeqiang.com fanglizhi.info fangong.org fanhaolou.com fanqiang.network fanqiangdang.com fanqianghou.com fanqiangzhe.com fanswong.com fantv.hk fast.com fast.wistia.com fastestvpn.com fastpic.ru fastssh.com faststone.org fatbtc.com favstar.fm faz.net fb.com fb.me fb.watch fbaddins.com fbcdn.net fbsbx.com fbworkmail.com fc2cn.com feedburner.com feeder.co feedly.com feeds.fileforum.com feedx.net feelssh.com feitianacademy.org feixiaohao.com feministteacher.com fengzhenghu.com fengzhenghu.net ff.im fhreports.net fiddle.jshell.net figprayer.com fileflyer.com files.oaiusercontent.com filesor.com financetwitter.com financialexpress.com finchvpn.com findyoutube.com findyoutube.net firearmsworld.net firebaseio.com fireofliberty.info fireofliberty.org firetweet.io firstpost.com firstrade.com fish.audio flecheinthepeche.fr fleursdeslettres.com flexclip.com flexpool.io flgjustice.org flickr.com flipboard.com flipkart.com flitto.com flog.tw flowgpt.com flowhongkong.net flypool.org flyvpn.com flyzy2005.com fnac.be fnac.com fnc.ebc.net.tw fochk.org focustaiwan.tw fofg.org fooooo.com forbes.com forefront.ai foreignaffairs.com foreignpolicy.com form.new forms.new forum.cyberctm.com fountmedia.io fourthinternational.org foxgay.com foxsub.com fpmt.org fpmtmexico.org fqrouter.com frank2019.me franklc.com freakshare.com free-ss.site free.bg free.com.tw freebeacon.com freebrowser.org freechinaweibo.com freedom.gov freedomhouse.org freedominfonetweb.wordpress.com freedomsherald.org freegao.com freegpt.es freegpt.tech freehongkong.org freekazakhs.org freelotto.com freenetproject.org freeoz.org freess.org freessh.us freeterabox.com freetibet.org freetibetanheroes.org freetls.fastly.net freetribe.me freevpn.me freewallpaper4.me freewechat.com freeweibo.com freezhihu.org friendfeed.com friends-of-tibet.org friendsoftibet.org fril.jp fring.com fringenetwork.com frommel.net frontlinedefenders.org frootvpn.com froth.zone fscked.org ft.com ftchinese.com ftv.com.tw ftvnews.com.tw ftx.com fuchsia.dev fuckccp.com fuckccp.xyz fulione.com fullerconsideration.com fullservicegame.com funkyimg.com furbo.org furinkan.com furrybar.com futuremessage.org fw.cm fxcm-chinese.com fxnetworks.com g-area.org g-queen.com g.co g0v.social g6hentai.com gab.com gabocorp.com gagaoolala.com galenwu.com game735.com gamer.com.tw gamez.com.tw ganjing.com ganjingworld.com gaoming.net gaopi.net gartlive.com garudalinux.org gate.io gatecoin.com gather.com gaymap.cc gaywatch.com gazotube.com gcc.org.hk gclubs.com gcmasia.com gcpnews.com gcr.io gdaily.org geek-art.net gekikame.com gelbooru.com generated.photos genius.com geph.io get.app get.dev get.how get.page getastrill.com getcloak.com getfoxyproxy.org getgom.com geti2p.net getlantern.org getmalus.com getmdl.io getoutline.org getsession.org getsync.com gettr.com gettyimages.ae gettyimages.ca gettyimages.de gettyimages.hk gettyimages.in gettyimages.it gettyimages.us getuploader.com gfsale.com gfw.press gfw.report gfwatch.org gfwbao.com ggpht.com ggssl.com ghidra-sre.org ghostpath.com ghut.org giantessnight.com giga-web.jp girlbanker.com git.io gitbook.io github.blog github.com github.io githubassets.com githubcopilot.com githubusercontent.com gitlab.net gizlen.net gjczz.com glarity.app glass8.eu global.bing.com global.ssl.fastly.net globaljihad.net globalrescue.net globalvoices.org globalvoicesonline.org globalvpn.net glorystar.me glype.com gmail.com gmgard.com gmgn.ai gmodules.com gmp4.com gnci.org.hk gnews.org go-to-zlibrary.se go141.com go5.dev goagent.biz godaddy.com godfootsteps.org godoc.org gofundme.com gohappy.com.tw gojet.krtco.com.tw golang.org goldbetsports.com golden-ages.org goldeneyevault.com goldenfrog.com goldwave.com gongm.in goo.gl goo.ne.jp gooday.xyz goodhope.school goodnewsnetwork.org goodreaders.com goodreads.com goofind.com google.ac google.ad google.ae google.af google.ai google.al google.am google.as google.at google.az google.ba google.be google.bf google.bg google.bi google.bj google.bs google.bt google.by google.ca google.cat google.cd google.cf google.cg google.ch google.ci google.cl google.cm google.cn google.co.ao google.co.bw google.co.ck google.co.cr google.co.id google.co.il google.co.in google.co.jp google.co.ke google.co.kr google.co.ls google.co.ma google.co.mz google.co.nz google.co.th google.co.tz google.co.ug google.co.uk google.co.uz google.co.ve google.co.vi google.co.za google.co.zm google.co.zw google.com google.com.af google.com.ag google.com.ai google.com.ar google.com.au google.com.bd google.com.bh google.com.bn google.com.bo google.com.br google.com.bz google.com.co google.com.cu google.com.cy google.com.do google.com.ec google.com.eg google.com.et google.com.fj google.com.gh google.com.gi google.com.gt google.com.hk google.com.jm google.com.kh google.com.kw google.com.lb google.com.ly google.com.mm google.com.mt google.com.mx google.com.my google.com.na google.com.nf google.com.ng google.com.ni google.com.np google.com.om google.com.pa google.com.pe google.com.pg google.com.ph google.com.pk google.com.pr google.com.py google.com.qa google.com.sa google.com.sb google.com.sg google.com.sl google.com.sv google.com.tj google.com.tr google.com.tw google.com.ua google.com.uy google.com.vc google.com.vn google.cv google.cz google.de google.dev google.dj google.dk google.dm google.dz google.ee google.es google.eu google.fi google.fm google.fr google.ga google.ge google.gg google.gl google.gm google.gp google.gr google.gy google.hk google.hn google.hr google.ht google.hu google.ie google.im google.iq google.is google.it google.it.ao google.je google.jo google.kg google.ki google.kz google.la google.li google.lk google.lt google.lu google.lv google.md google.me google.mg google.mk google.ml google.mn google.ms google.mu google.mv google.mw google.mx google.ne google.nl google.no google.nr google.nu google.org google.pl google.pn google.ps google.pt google.ro google.rs google.ru google.rw google.sc google.se google.sh google.si google.sk google.sm google.sn google.so google.sr google.st google.td google.tg google.tk google.tl google.tm google.tn google.to google.tt google.us google.vg google.vn google.vu google.ws googleapis.com googleapps.com googlearth.com googleartproject.com googleblog.com googlebot.com googlechinawebmaster.com googlecode.com googlecommerce.com googledomains.com googledrive.com googleearth.com googlefiber.net googlegroups.com googlehosted.com googleideas.com googleinsidesearch.com googlemail.com googlemashups.com googlepagecreator.com googleplay.com googleplus.com googlescholar.com googlesource.com googleusercontent.com googlevideo.com googleweblight.com googlezip.net gopetition.com goreforum.com goregrish.com gospelherald.com gotdns.ch gotquestions.org gotrusted.com gotw.ca gov.ir gov.taipei gov.tw grammaly.com graph.org graphis.ne.jp graphql.org gravatar.com greasyfork.org greatfire.org greatfire.us7.list-manage.com greatfirevpn.com greatfirewallofchina.org greenpeace.org greenvpn.net grindr.com grok.com grokipedia.com ground.news gsearch.media gsp.target.com gstatic.com gtricks.com gtv.org gtv1.org gu-chu-sum.org guaguass.com guishan.org gumroad.com gunsamerica.com gutteruncensored.com gvlib.com gvm.com.tw gvt1.com gvt3.com gwins.org gwtproject.org gzone-anime.info h-china.org h-moe.com hackmd.io hackthatphone.net haijiao.com haiwaikan.com hakkatv.org.tw halktv.com.tr hanime.tv hanime1.me hardsextube.com hautelook.com hautelookcdn.com hbg.com hbo.com hbomax.com hdtvb.net hdzog.com heartyit.com hec.su hecaitou.net hechaji.com heeact.edu.tw hegre-art.com helixstudios.net helloandroid.com helloqueer.com help.byspotify.com helpeachpeople.com helpster.de hembed.com heqinglian.net heritage.org herokuapp.com herominers.com hexieshe.com hexieshe.xyz hexxeh.net heyuedi.com hicairo.com hiccears.com hidden-advent.org hide.me hideipvpn.com hideman.net hidemy.name hidemyass.com hidemycomp.com highrockmedia.com hiitch.com hikinggfw.org himalayan-foundation.org himemix.com hindustantimes.com hinet.net hitbtc.com hitomi.la hiveon.net hk-pub.com hk.gradconnection.com hk.jiepang.com hk01.com hka8964.wordpress.com hkanews.wordpress.com hkbookcity.com hkchronicles.com hkcnews.com hkcoc.com hkcoc.weather.com.hk hkdc.us hket.com hkfaa.com hkgalden.com hkgolden.com hkgpao.com hklts.org.hk hkmap.live hkopentv.com hkpeanut.com hkreporter.com hmoegirl.com hmvdigital.ca hmvdigital.com hnjhj.com hojemacau.com.mo hola.com hola.org hole.thu.monster holyspiritspeaks.org home.saxo homedepot.com homeservershow.com hongkong.fandom.com hongkongfp.com hongzhi.li honven.xyz hootsuite.com hoover.org hoovers.com hornytrip.com horrorporn.com hostloc.com hotair.com hotcoin.com hotspotshield.com hottg.com hotvpn.com howtoforge.com hoxx.com hoy.tv hpjav.com hqcdp.org hqjapanesesex.com hqsbnet.wordpress.com hqsbonline.wordpress.com hrichina.org hrntt.org hrw.org hsex.men hsjp.net hsselite.com hst.net.tw ht.ly htkou.net htl.li html5rocks.com htx.com huaglad.com huanghuagang.org huaren.us huashangnews.com huayuworld.org hudatoriq.web.id hudson.org huffingtonpost.com huffpost.com huggingface.co hugoroy.eu huhaitai.com huhamhire.com huhangfei.com hulu.com huluim.com humanparty.me humanrightspressawards.org hung-ya.com huobi.co huobi.com huobi.li huobi.me huobi.pro huobi.sc huobipool.com huobipro.com huping.net hustlercash.com hutianyi.net hwayue.org.tw hxwk.org hybrid-analysis.com hyperbeam.com hyperrate.com hypothes.is i-scmp.com i.111666.best i.lithium.com i2p2.de i818hk.com iam.soy iask.ca iavian.net ibvpn.com icedrive.net icij.org icl-fi.org icoco.com iconpaper.org icu-project.org id.heroku.com idcflare.com identi.ca idiomconnection.com idope.se ifan.cz.cc ifcss.org ifreechina.wordpress.com ifreewares.com ift.tt igcd.net igfw.net igoogle.com igvita.com iicns.com iipdigital.usembassy.gov ilbe.com ilhamtohtiinstitute.org illawarramercury.com.au illusionfactory.com ilove80.be ilovelongtoes.com im88.tw imagefap.com imageflea.com imageglass.org images-gaytube.com images.prismic.io imageshack.us imagevenue.com imagezilla.net imago-images.com imb.org img.dlsite.jp img.ly img.picgo.net imgasd.com imgchili.net imgur.com imkev.com imlive.co improd.works incloak.com incredibox.fr independent.co.uk india.com indiablooms.com indianarrative.com indiandefensenews.in indiatoday.in indiemerch.com inews-api.tvb.com info-graf.fr infura.io inherit.live initiativesforchina.org inkbunny.net inkui.com inmediahk.net inoreader.com inote.tw insecam.org inside.com.tw insidevoa.com instagram.com institut-tibetain.org interactivebrokers.com internet.org internetfreedom.org internetpopculture.com interseclab.org inthenameofconfuciusmovie.com investigating.wordpress.com investing.com invidio.us inxian.com ipdefenseforum.com ipfire.org ipfs.4everland.io ipfs.io iphone4hongkong.com iphonetaiwan.org iphonix.fr ipicture.ru ipify.org ipjetable.net iportal.me ippotv.com ipredator.se iptvbin.com ipvanish.com irangov.ir irna.ir ironpython.net ironsocket.com isaacmao.com isc.sans.edu isgreat.org ishr.ch islam.org.hk islamhouse.com ismaelan.com ismprofessional.net israbox.com issues.chromium.org issuu.com isupportuyghurs.org italiatibet.org itasoftware.com itch.io itemfix.com itiger.com itshidden.com itweet.net iuhrdf.org ivacy.com ivonblog.com ivpn.net iwara.tv ixquick.com iyouport.com iyouport.org j.mp jable.tv jamestown.org jamyangnorbu.com jan.ai japan-whores.com japanhdv.com japantimes.co.jp jav321.com javakiba.org javbus.com javdb.com javfinder.ai javfor.me javhub.net javhuge.com javlibrary.com javmobile.net javseen.com jcpenney.com jex.com jgoodies.com jhelab.org jiangweiping.com jiaoyou8.com jifangge.com jihadology.net jiji.com jims.net jingpin.org jinrizhiyi.news jintian.net jinx.com jitouch.com jkb.cc jma.go.jp jmsc.hku.hk jmscult.com joachims.org jobnewera.wordpress.com joinclubhouse.com joinmastodon.org jornaldacidadeonline.com.br journalofdemocracy.org jpl.nasa.gov jsdelivr.net jtvnw.net jukujo-club.com juliepost.com juliereyc.com junauza.com juoaa.com justhost.ru justmysocks.net justmysocks1.net justmysockscn.com juziyue.com ka-wai.com kadokawa.co.jp kagyu.org.za kagyuoffice.org kagyuoffice.org.tw kakao.com kanald.com.tr kannewyork.com kanshifang.com kantie.org kaotic.com karayou.com kawaiikawaii.jp kawase.com kb.monitorware.com kebrum.com kendatire.com kenengba.com kepard.com kex.com keycdn.com khatrimaza.org kichiku-doujinko.com kik.com killwall.com kindle4rss.com kindleren.com kingdomsalvation.org kingkong.com.tw kingstone.com.tw kinmen.org.tw kinmen.travel kinokuniya.com kiwi.kz kk-whys.co.jp kkbox.com kknews.cc knowyourmeme.com kobo.com kobobooks.com kompozer.net konachan.com koolsolutions.com koornk.com koranmandarin.com kpkuang.org kqes.net kraken.com kspcoin.com ktzhk.com kuaichedao.co kucoin.com kukuku.uk kurtmunger.com kwcg.ca kwongwah.com.my kxsw.life kzaobao.com kzeng.info lab.skk.moe labiennale.org lagranepoca.com lala.im lama.com.tw lamayeshe.com lamnia.co.uk landofhope.tv lantern.io laogai.org laogairesearch.org laqingdan.net larsgeorge.com lastcombat.com lastfm.es lausan.hk lbank.info ldplayer.net ldplayer.tw le-vpn.com leafyvpn.net lecloud.net ledger.com left21.hk legra.ph leisurepro.com lematin.ch lenwhite.com lesoir.be letscorp.net lexica.art lhakar.org li.taipei liangyou.net liangzhichuanmei.com liaowangxizang.net liberal.org.hk libertysculpturepark.com libertytimes.com.tw library-access.sk library.usc.cuhk.edu.hk libredd.it lifemiles.com lighten.org.tw lighti.me lightnovel.cn lightyearvpn.com lih.kg lihkg.com like.com lilaoshibushinilaoshi.com line-apps.com line-scdn.net line.me line.naver.jp linear-abematv.akamaized.net lingualeo.com lingvodics.com link-o-rama.com linkedin.com linktr.ee linux.do linux.org.hk liquiditytp.com liquidvpn.com listennotes.com listentoyoutube.com litenews.hk liuxiaobo.net liuxiaotong.com livecoin.net liveleak.com livemint.com livestream.com livevideo.com livingstream.com lmarena.ai localbitcoins.com localdomain.ws lockestek.com login.target.com logos.com.hk longtermly.net longtoes.com lookpic.com looktoronto.com lovart.ai lovetvshow.com lpsg.com lrfz.com lrip.org lsd.org.hk lsm.org lsmchinese.org lsmkorean.org lt.sntp.uk ltn.com.tw luckydesigner.space luckymobile.ca ludepress.com lupm.org lushstories.com lvhai.org lvv2.com lyfhk.net lzjscript.com lzmtnews.org m.hkgalden.com m.me m.moegirl.org macgamestore.com mad-ar.ch madewithcode.com madonna-av.com madou.club madrau.com madthumbs.com mahjongsoul.com main-ecnpaper-economist.content.pugpig.com maiplus.com makemymood.com mandiant.com mangabz.com mangafox.com mangafox.me mangmang.run manta.com manus.im manyvoices.news marc.info martau.com martsangkagyuofficial.org marxist.net marxists.org mash.to mastodon.cloud mastodon.host mastodon.online mastodon.social mastodon.xyz matainja.com material.io matome-plus.com matome-plus.net matrix.org matters.news matters.town matthewdgreen.wordpress.com mattwilcox.net maven.neoforged.net mcadforums.com mcaf.ee mcusercontent.com md-t.org me.me me.ns.ci meansys.com media.nu.nl mediachinese.com mediafreakcity.com mediawiki.org medium.com meee.com.tw mega.co.nz mega.io mega.nz megalodon.jp megaproxy.com megurineluka.com meizhong.blog meizhong.report memehk.com memes.tw mercari.com mercari.jp mercatox.com mercdn.net mercyprophet.org mergersandinquisitions.com meridian-trust.org meripet.com merit-times.com.tw messenger.com meta.com metafilter.com metamask.io metart.com metarthunter.com meteorshowersonline.com metro.taipei metrolife.ca metroradio.com.hk mewe.com mfxmedia.com mgoon.com mgstage.com mh4u.org microvpn.com mihua.org mij.rip mikanani.me mike.cz.cc mikesoltys.com mindrolling.org mingdemedia.org minghui-school.org minghui.or.kr minghui.org minghuiyw.wordpress.com mingjinglishi.com mingjingnews.com mingjingtimes.com mingpao.com mingpaocanada.com mingpaomonthly.com mingpaonews.com mingpaony.com mingpaosf.com mingshengbao.com minhhue.net miningpoolhub.com ministrybooks.org minzhuzhongguo.org miraheze.org miroguide.com mirror.xyz mirrorbooks.com mirrormedia.mg missav.com missav.ws mistral.ai mitbbs.com miuipolska.pl mixero.com mixi.jp mixx.com mizzmona.com mji.rip mjj.rip mjlsh.usc.cuhk.edu.hk mlc.ai mlzs.work mmaaxx.com mo.nightlife141.com mobatek.net mobile01.com mobileways.de moby.to mod.io modernchinastudies.org moeerolibrary.com moeshare.cc mog.com mohu.club mohu.rocks mojim.com momoshop.com.tw mondex.org money-link.com.tw moneydj.com monica.im monitorchina.org monocloud.me monster.com moodyz.com moon.fm moonbbs.com moonbingo.com moptt.tw moresci.sale morningsun.org mos.ru mosavi.io motherless.com movements.org moviefap.com mpettis.com mpfinance.com mpinews.com mrtweet.com msa-it.org msha.gov mstdn.social mswe1.org mthruf.com mubi.com mullvad.net multiply.com musixmatch.com muzi.com muzi.net muzu.tv mvg.jp my-private-network.co.uk my.pcloud.com myaudiocast.com mybet.com mychinanews.com mycnnews.com myeclipseide.com myiphide.com myjs.tw mykomica.org mymoe.moe myparagliding.com mypikpak.com mypopescu.com myspacecdn.com mytvsuper.com mywife.cc naacoalition.org naitik.net nakedsecurity.sophos.com nakido.com nalandabodhi.org nalandawest.org namu.wiki nanopool.org nanyang.com nanyangpost.com nat.moe national-lottery.co.uk nationalawakening.org nationalinterest.org nationalreview.com nationwide.com naughtyamerica.com naver.com navyfamily.navy.mil navyreserve.navy.mil nbcnews.com nbtvpn.com nbyy.tv nchrd.org ncn.org ndi.org nekoslovakia.net neo-miracle.com neowin.net nephobox.com netalert.me netflav.com netflix.com netflix.net netlify.app netme.cc netsarang.com newcenturymc.com newchen.com newhighlandvision.com newindianexpress.com newmitbbs.com news.ebc.net.tw news.mt.co.kr news.seehua.com news.tvbs.com.tw news.ycombinator.com news1.kr news18.com newsancai.com newsblur.com newsmax.com newstamago.com newstapa.org newstatesman.com newsweek.com newtalk.tw newthuhole.com newyorker.com nexon.com nextdigital.com.hk nexton-net.jp nexttv.com.tw nf.id.au nflxext.com nflximg.com nflximg.net nflxso.net nflxvideo.net nftstorage.link nga.mil nhentai.net nic.cz.cc nic.gov nicovideo.jp nightswatch.top nikke-en.com nikke-jp.com nikke-kr.com nikke.hotcool.tw nikkei.com ninjaproxy.ninja nirsoft.net nitter.cc nitter.net niu.moe niusnews.com njactb.org nlfreevpn.com nmsl.website nnews.eu nobel.se nodeseek.com nokogiri.org nokola.com nordstrom.com nordstromimage.com nordstromrack.com nordvpn.com nos.nl notepad-plus-plus.org nottinghampost.com now.com nownews.com noxinfluencer.com npa.go.jp npnt.me npsboost.com nradio.me nrk.no ntd.tv ntdtv.com ntdtv.com.tw ntdtv.cz nuexpo.com nurgo-software.com nusatrip.com nutaku.net nutsvpn.work nuuvem.com nvdst.com nvtongzhisheng.org nyaa.eu nyaa.si nybooks.com nypost.com nyt.com nytcn.me nytco.com nyti.ms nytimes.com nytimes.map.fastly.net nytimg.com nytstyle.com o3o.ca oanda.com oann.com obyte.org october-review.org octocaptcha.com oculus.com oculuscdn.com odysee.com oex.com officeoftibet.com ofile.org ogaoga.org ogate.org ohmyrss.com ok.ru okayfreedom.com okcoin.com okex.com okk.tw oklink.com okpool.me okx.com old.honeynet.org olehdtv.com olelive.com olevod.com olumpo.com omct.org omni7.jp omnitalk.com omnitalk.org omny.fm on.cc on2.com onapp.com one.one.one.one onedrive.com onedrive.live.com onejav.com onevps.com onion.city onion.ly online.recoveryversion.org onlineyoutube.com onlygayvideo.com onlytweets.com onthehunt.com ontrac.com oojj.de ooni.io ooni.org open.firstory.me openai.com openart.ai opencritic.com opendemocracy.net openid.net openleaks.org opensea.io openstreetmap.org opentech.fund openvpn.net openvpn.org openwebster.com opus-gaming.com ordns.he.net oricon.co.jp orient-doll.com orientaldaily.com.my orn.jp osfoora.com osmand.net otcbtc.com otto.de ourdearamy.com oursteps.com.au ourtv.hk overcast.fm overdaily.org overplay.net oversea.istarshine.com ovpn.com ow.ly owl.li owltail.com oxfordscholarship.com ozvoice.org pachosting.com pacom.mil pacopacomama.com page.link pages.dev paimon.moe pancakeswap.finance pandafan.pub pandapow.co pandavpn-jp.com pandavpnpro.com pandora.com panoramio.com pao-pao.net parkansky.com parler.com parse.com parsevideo.com partnerstack.xyz passion.com paste.ee pastie.org patreon.com patreonusercontent.com pawoo.net paxful.com payments-jp.amazon.com pbs.org pbworks.com pbxes.com pbxes.org pcgamestorrents.com pcij.org pct.org.tw pdproxy.com pds.nasa.gov pdst.fm peace.ca peing.net pekingduck.org pemulihan.or.id pen.io pendrivelinux.com pentoy.hk peoplenews.tw peopo.org perfect-privacy.com periscope.tv perplexity.ai pewresearch.org phayul.com phmsociety.org phncdn.com phosphation13.rssing.com photodharma.net photofocus.com photonmedia.net piaotia.com picacomic.com picacomiccn.com picasaweb.com picsart.com picturedip.com picuki.com pigav.com pimg.tw pin-cong.com pin6.com pincong.rocks ping.fm pinimg.com pinoy-n.com pinterest.at pinterest.ca pinterest.cl pinterest.co.uk pinterest.com pinterest.com.au pinterest.com.mx pinterest.de pinterest.es pinterest.fr pinterest.ie pinterest.it pinterest.jp pinterest.nz pinterest.ph pinterest.pt pinterest.se pixeldrain.com pixelqi.com pixiv.net pixiv.org pixivsketch.net pixnet.net pki.goog pkqjiasu.com pkuanvil.com placemix.com play-asia.com playboy.com playboyplus.com player.fm playno1.com playpcesor.com plexvpn.pro plurk.com plus.codes pmatehunter.com po2b.com podbean.com podcast.co podictionary.com podwise.ai poe.com points-media.com pokerstars.com pokerstars.net politicalchina.org poloniex.com polymarket.com polymer-project.org polymerhk.com poolbinance.com poolin.com popai.pro popvote.hk popxi.click popyard.org pornhd.com pornhub.com pornhubdeutsch.net pornmate.com pornrapidshare.com pornsharing.com pornstarbyface.com pornstarclub.com porntvblog.com poskotanews.com post76.com post852.com posts.careerengine.us potato.im potatso.com potvpn.com pourquoi.tw power.com powerapple.com powercx.com ppy.sh prayforchina.net prcleader.org premproxy.com presentation.new presentationzen.com president.ir presidentlee.tw prestige-av.com primevideo.com prism-break.org pritunl.com privacybox.de privacyguides.org private.com privateinternetaccess.com privatepaste.com privatetunnel.com privatevpn.com privoxy.org procopytips.com project-syndicate.org prompthero.com prosiben.de proton.me protonvpn.com provpnaccounts.com proxfree.com proxomitron.info proxpn.com proxynetwork.org.uk proxz.com proyectoclubes.com pscp.tv pshvpn.com psiphon.ca psiphon3.com pstatic.net pt.im ptt.cc pttgame.com ptwxz.com pubu.com.tw puffinbrowser.com pullfolio.co pure18.com pureconcepts.net puredns.org pureinsight.org purepdf.com purevpn.com purpose.nike.com pursuestar.com putty.org pximg.net python.com.tw qbittorrent.org qgirl.com.tw qi-gong.me qianbai.tw qiandao.today qianglie.com qiangwaikan.com qiangyou.org qianmo.tw qiwen.lu qmp4.com qoos.com qq.co.za qstatus.com qtrac.eu questvisual.com quitccp.org quiz.directory quora.com quoracdn.net quran.com qz.com r-pool.net r0.ru r10s.jp r18.com radiko.jp radio-canada.ca radio-en-ligne.fr radio.co radio.garden radioaustralia.net.au radiohilight.net radiojar.com radioline.co radiovaticana.org radiovncr.com radmin-vpn.com rael.org raggedbanner.com raidcall.com.tw raindrop.io raizoji.or.jp rakuten.co.jp ramcity.com.au rapidmoviez.com rapidvpn.com rarbgprx.org rateyourmusic.com rationalwiki.org raw.githack.com rawgit.com rawgithub.com rawstory.com rcam.target.com rcinet.ca rd.com reabble.com read01.com readingtimes.com.tw readmoo.com readydown.com realcourage.org realitykings.com reason.com recordedfuture.com recoveryversion.com.tw red-lang.org redbubble.com redchinacn.net redd.it reddit.com reddithelp.com redditlist.com redditmedia.com redditspace.com redditstatic.com redhotlabs.com referer.us reflectivecode.com relay.firefox.com religionnews.com renminbao.com rentry.co renyurenquan.org resilio.com resistchina.org retweetrank.com reuters.com reutersmedia.net rfa.org rferl.org rfi.fr rfi.my riku.me riseup.net ritter.vg rixcloud.com rixcloud.us rlwlw.com rmbl.ws roblox.com robustnessiskey.com rocket-inc.net rocket.chat rocksdb.org rojo.com rolfoundation.org rolia.net rolsociety.org ronjoneswriter.com rou.video rsdlmonitor.com rsf-chinese.org rsf.org rsshub.app rssmeme.com rtalabel.org rthk.hk rthk.org.hk rti.org.tw rti.tw rtm.tnt-ea.com rule34.xxx rule34video.com rumble.com rustdesk.com rusvpn.com ruten.com.tw rutracker.net rutracker.org rxhj.net s-cute.com s.yimg.com s3-ap-northeast-1.amazonaws.com sacks.com sacom.hk sadistic-v.com sadpanda.us safechat.com safeguarddefenders.com safervpn.com sagernet.org saintyculture.com sakuralive.com salvation.org.hk sankakucomplex.com sankei.com sanmin.com.tw savethedate.foo savethesounds.info savetibet.de savetibet.org savetibetstore.org saveuighur.org sbme.me sbti.unun.dev scache.vzw.com scache1.vzw.com scache2.vzw.com schema.org scmp.com scramble.io scratch.mit.edu scribd.com scriptspot.com search.aol.com search.com search.xxx search.yahoo.co.jp searx.me seattlefdc.com secretchina.com secretgarden.no secretsline.biz secure.hustler.com secure.logmein.com secure.shadowsocks.nu secureservercdn.net securetunnel.com securityinabox.org securitykiss.com seed4.me seevpn.com seezone.net sehuatang.net sehuatang.org sensortower.com sesawe.net sethwklein.net setn.com sevenload.com sex.com sex3.com sex8.cc sexinsex.net sf.net sfshibao.com sftuk.org shadeyouvpn.com shadowsocks.be shadowsocks.com.hk shadowsocks.org shahit.biz share-videos.se share.america.gov sharecool.org shattered.io sheet.new sheets.new shellfire.de shenyunperformingarts.org shenyunshop.com shenzhoufilm.com shenzhouzhengdao.org shiksha.com shitjournal.org shixiao.org shizhao.org shodanhq.com shooshtime.com shopee.tw shopping.yahoo.co.jp showwe.tw shutterstock.com shwchurch.org shwchurch3.com sidelinesnews.com signal.org silvergatebank.com simbolostwitter.com simianx.ai simplecd.me simplecd.org simpleswap.io simplex.chat sina.com.hk singaporepools.com.sg singlelogin.se singtao.com singtaousa.com sinoants.com sinoca.com sinocast.com sinoinsider.com sipml5.org sis001.com site.new sitekreator.com sitemaps.org sites.new six-degrees.io sketchappsources.com skimtube.com skybet.com skyvegas.com skyxvpn.com slacker.com slashine.onl sleazyfork.org slheng.com slickvpn.com slides.com slides.new slideshare.net slutmoonbeam.com sm-miracle.com smartdnsproxy.com smh.com.au smn.news snapseed.com sndcdn.com sobees.com soc.mil social.datalabour.com social.edu.ci socialblade.com socks-proxy.net sockslist.net socrec.org softether-download.com softether.org softfamous.com softwarebychuck.com softwaredownload.gitbooks.io sogclub.com sogrady.me soh.tw sohcradio.com sohfrance.org solana.com solarsystem.nasa.gov solscan.io solv.finance somee.com songjianjun.com sora.com sorting-algorithms.com sos.org sosad.fun sosreader.com soubory.com soulcaliburhentai.net soundcloud.com soundofhope.org soundon.fm soup.io south-plus.net south-plus.org southmongolia.org southnews.com.tw southpark.cc.com sowers.org.hk spaces.hightail.com spacex.com spankbang.com sparkpool.com spatial.io spb.com speakerdeck.com speedcat.me speedify.com spencertipping.com spendee.com spicevpn.com spideroak.com spiderpool.com sports.williamhill.com spotflux.com spotify.com spreadsheet.new spreadshirt.es spreaker.com spring4u.info springboardplatform.com springwood.me sproutcore.com squirrelvpn.com ss-link.com ss7.vzw.com ssglobal.co ssl.webpack.de sspanel.net ssr.tools ssrshare.com ssrshare.us ssrtool.com sstm.moe sstmlt.moe sstmlt.net standard.co.uk standupfortibet.org standwithhk.org starp2p.com startpage.com startuplivingchina.com static-economist.com static.pocketcasts.com static.shemalez.com staticflickr.com stboy.net stc.com.sa steamcommunity.com steamladder.com steamstatic.com steel-storm.com steemit.com steganos.com stephaniered.com sthoo.com stitcher.com stoptibetcrisis.net storage.yandex.net storagenewsletter.com store.steampowered.com storj.io storm.mg storry.tv stoweboyd.com straitstimes.com straplessdildo.com streamable.com streamate.com streamingthe.net strongvpn.com studentsforafreetibet.org stumbleupon.com subhd.tv substack.com suche.gmx.net sugarsync.com sugumiru18.com suissl.com sujiatun.wordpress.com sumrando.com sundayguardianlive.com sunmedia.ca suno.ai suno.com sunporno.com supchina.com superpages.com supervpn.net superzooi.com suprememastertv.com surfeasy.com surfeasy.com.au surfshark.com surrenderat20.net swagbucks.com swapspace.co swissinfo.ch swissvpn.net switch1.jp switchvpn.net sydney.bing.com sydneytoday.com sylfoundation.org synapse.org syncback.com synergyse.com syosetu.com t-g.com t.co t.me t66y.com taa-usa.org taaze.tw taedp.org.tw tagwalk.com tails.net taipeisociety.org taipeitimes.com taisounds.com taiwanhot.net taiwanjustice.net taiwanncf.org.tw taiwannews.com.tw taiwantt.org.tw talkatone.com talkboxapp.com talkcc.com talkonly.net tanc.org tanks.gg taoism.net tap.io tapanwap.com tapatalk.com taptap.io tardigrade.io tarr.uspto.gov taup.net taweet.com tbcollege.org tbsec.org tbsn.org tbssqh.org teachparentstech.org technews.tw techviz.net teck.in teco-hk.org teco-mo.org teddysun.com tehrantimes.com telega.one telegra.ph telegram.dog telegram.me telegram.org telegram.space telegramdownload.com telesco.pe tellapart.com temu.com tenor.com tensorflow.org tenzinpalmo.com terabox.com terobox.com tew.org textnow.com textnow.me tfc-taiwan.org.tw tfhub.dev tfiflve.com tg-me.com tg.dev theatlantic.com theatrum-belli.com thebcomplex.com theblaze.com thebobs.com thebodyshop-usa.com thecenter.mit.edu thechasernews.co.uk thechinacollection.org theconversation.com thedalailamamovie.com thediplomat.com thedw.us theepochtimes.com thefacebook.com thegay.com thegioitinhoc.vn theguardian.com thehansindia.com thehindu.com thehun.net theinitium.com thenewslens.com thepiratebay.org theporndude.com theportalwiki.com theprint.in thesaturdaypaper.com.au thestandnews.com thetatoken.org thetibetpost.com thetvdb.com thewgo.org thewirechina.com theync.com thinkchina.sg thinkgeek.com thinkingtaiwan.com thinkwithgoogle.com thirdmill.org thisav.com thomasbernhard.org threadreaderapp.com threads.com threads.net throughnightsfire.com thuhole.com thywords.com tiananmenduizhi.com tiananmenuniv.com tiananmenuniv.net tiandixing.org tianti.io tiantibooks.org tibet-envoy.eu tibet-initiative.de tibet.com tibet.net tibet.nu tibet.org tibet.org.tw tibet.to tibet3rdpole.org tibetaction.net tibetanbuddhistinstitute.org tibetancommunity.org tibetancommunityuk.net tibetanentrepreneurs.org tibetanhealth.org tibetanliberation.org tibetansports.org tibetanwomen.org tibetanyouthcongress.org tibetcorps.org tibetexpress.net tibetfocus.com tibetfund.org tibetgermany.de tibethouse.jp tibethouse.org tibethouse.us tibetmuseum.org tibetnetwork.org tibetoffice.ch tibetoffice.com.au tibetoffice.org tibetonline.com tibetonline.tv tibetoralhistory.org tibetpolicy.eu tibetrelieffund.co.uk tibetsociety.com tibetsun.com tibetsupportgroup.org tibetswiss.ch tibettelegraph.com tibettimes.net tibettruth.com tibetwrites.org tigervpn.com tiktok.com tiktokcdn-eu.com tiktokcdn-us.com tiktokcdn.com tiktokv.com tiktokv.us tiltbrush.com timdir.com time.com timesnownews.com timesofindia.indiatimes.com timtales.com tinc-vpn.org tineye.com tingtalk.me tiny.cc tinychat.com tinypaste.com tinyurl.com tipas.net tkcs-collins.com tl.gd tma.co.jp tmagazine.com tmi.me tmpp.org tn1.shemalez.com tn2.shemalez.com tn3.shemalez.com tnaflix.com tnp.org to-porno.com togetter.com token.im tokenlon.im tokyo-porn-tube.com tokyocn.com tomp3.cc top.tv top10vpn.com topbtc.com toppornsites.com topsy.com toptip.ca toptoon.net tor.eff.org torguard.net torlock.com torproject.org torrentgalaxy.to torrentkitty.tv torrentprivacy.com torrentproject.se torrenty.org tortoisesvn.net torvpn.com tosh.comedycentral.com totalvpn.com tou.tv tpi.org.tw tracfone.com tradingview.com translate.goog transparency.org treemall.com.tw trendsmap.com tronscan.org trouw.nl trt.net.tr truebuddha-md.org trustwallet.com truthsocial.com tryheart.jp tsdr.uspto.gov tt1069.com tttan.com ttv.com.tw ttvnw.net tube8.com tube911.com tubeislam.com tubepornclassic.com tubewolf.com tuidang.org tukaani.org tumblr.com tumutanzi.com tumview.com tunein.com tunein.streamguys1.com tunnelbear.com tunnelblick.net tunnelr.com tunsafe.com turbobit.net turbohide.com turkistantimes.com turntable.fm tushycash.com tuvpn.com tuzaijidi.com tv.com tv.jtbc.joins.com tvbanywhere.com tvboxnow.com tvunetworks.com tw-blog.com tw.jiepang.com tw01.org twapperkeeper.com twaud.io twblogger.com tweepguide.com tweepml.org tweetbackup.com tweetboard.com tweetcs.com tweetdeck.com tweetedtimes.com tweetphoto.com tweetree.com tweettunnel.com tweetwally.com tweez.net twelve.today twerkingbutt.com twftp.org twgov.tw twgreatdaily.com twibble.de twibs.com twicountry.org twiends.com twifan.com twiffo.com twiggit.org twimg.com twimg.edgesuite.net twip.me twipple.jp twishort.com twister.net.co twitch.tv twitchcdn.net twitiq.com twitlonger.com twitoaster.com twitonmsn.com twitpic.com twitstat.com twitter.com twitter.jp twitter4j.org twittercounter.com twittergadget.com twitterkr.com twittermail.com twitterrific.com twittertim.es twitturk.com twitturly.com twkan.com twreporter.org twt.tl twtkr.com twttr.com tx.me tycool.com typepad.com typeset.io typora.io u15.info u9un.com ua5v.com ub0.cc ubddns.org uberproxy.net uc-japan.org uchicago.edu udn.com udn.com.tw udomain.hk uforadio.com.tw uhdwallpapers.org uhrp.org uighur.nl uku.im ulop.net ultrasurf.us ultravpn.com ultravpn.fr unblock-us.com unblock.cn.com unblockdmm.com unblocksit.es uncyclopedia.hk uncyclopedia.tw underwoodammo.com unholyknight.com unirule.cloud uniswap.org unknownspace.org unmineable.com unseen.is unstable.icu unwire.hk uocn.org up.audio upbit.com updates.tdesktop.com upghsbc.com upmedia.mg upornia.com uproxy.org uptodown.com uraban.me urbandictionary.com urbansurvival.com urchin.com urlborg.com urlparser.com usacn.com usaip.eu uscardforum.com uscg.mil uscnpm.org use.typekit.net usercontent.goog usfk.mil usma.edu usno.navy.mil ustibetcommittee.org ustream.tv utopianpal.com uujiasu.com uukanshu.com uupool.cn uvwxyz.xyz uwants.com uyghur-j.org uyghuraa.org uyghuramerican.org uyghurbiz.org uyghurcongress.org uyghurpen.org uyghurstudies.org uyghurtribunal.com uygur.fc2web.com uymaarip.com v2.help v2.hysteria.network v2ex.com v2fly.org v2ray.com v2raycn.com valeursactuelles.com vansky.com vaticannews.va vatn.org vcf-online.org vcfbuilder.org vegas.williamhill.com vegasred.com venetianmacao.com ventureswell.com vercel.app vern.cc verybs.com vevo.com vewas.net viber.com victimsofcommunism.org vid.me vidble.com video.aol.com videobam.com videomega.tv videopress.com vilanet.me vilavpn.com vimeo.com vimeocdn.com vimperator.org vincnd.com vine.co vinniev.com vip-enterprise.com virtualrealporn.com viu.com viu.tv vivaldi.com vivthomas.com vjav.com vllcs.org vmixcore.com vmpsoft.com vnet.link voacambodia.com voacantonese.com voachinese.com voachineseblog.com voaindonesia.com voanews.com voatibetan.com voatibetanenglish.com vocaroo.com vocus.cc vod-abematv.akamaized.net vod.wwe.com voicettank.org vot.org vovo2000.com voxer.com vpl.bibliocommons.com vpn.ac vpn.cmu.edu vpn.net vpn.sv.cmu.edu vpn4all.com vpnaccount.org vpnaccounts.com vpncoupons.com vpncup.com vpndada.com vpnforgame.net vpngate.jp vpngate.net vpnhub.com vpninja.net vpnjack.com vpnmaster.com vpnmentor.com vpnpick.com vpnpop.com vpnpronet.com vpnproxymaster.com vpnreactor.com vpnreviewz.com vpnsecure.me vpnshazam.com vpnshieldapp.com vpntunnel.com vpnuk.info vpnunlimitedapp.com vpnvip.com vporn.com vpsxb.net vrchat.com vrporn.com vrsmash.com vtunnel.com vultryhw.com w-pool.com w3s.link waffle1999.com wainao.me walletconnect.com walletconnect.org wallmama.com wallpapercasa.com wallsttv.com wallzhihu.com waltermartin.com waltermartin.org wanderinghorse.net wangafu.net wangjinbo.org wango.org want-daily.com wanz-factory.com warroom.org waselpro.com washingtonpost.com watchinese.com watchmygf.net watchout.tw wattpad.com wav.tv waveprotocol.org waybig.com waymo.com wd.bible wealth.com.tw wearn.com web.dev web2project.net webmproject.org webpkgcache.com webrtc.org websdr.org website.new webwarper.net wechatlawsuit.com weebly.com wefightcensorship.org wego.here.com weights.com weijingsheng.org weiming.info weisuo.ws welt.de wemigrate.org wengewang.org wenxuecity.com wenyunchao.com wenzhao.ca westca.com westernwolves.com westpoint.edu wezone.net wforum.com whatblocked.com whatbrowser.org whats.new whatsapp.com whatsapp.net whatsonweibo.com wheelockslatin.com whereiswerner.com wheretowatch.com whispersystems.org whoer.net whyx.org widevine.com wiki.gamerp.jp wiki.jqueryui.com wiki.metacubex.one wiki.oauth.net wiki.phonegap.com wikibooks.org wikidata.org wikileaks.ch wikileaks.com wikileaks.de wikileaks.eu wikileaks.lu wikileaks.org wikileaks.pl wikiless.funami.tech wikimapia.org wikimedia.org wikinews.org wikipedia.com wikipedia.org wikis.tw wikisource.org wikiunblocked.org wikiversity.org wikivoyage.org wikiwand.com wiktionary.org willw.net wilsoncenter.org windscribe.com wingamestore.com wingy.site wionews.com wire.com wiredbytes.com wiredpen.com wireguard.com wisevid.com wispbyte.com withgoogle.com withyoutube.com witopia.net wizcrafts.net wjbk.org wmflabs.org wmfusercontent.org wn.com wnacg.com wnacg.org wo.tc wo3ttt.wordpress.com woeser.com wokar.org wolfax.com wombo.ai woolyss.com woopie.jp woopie.tv wordpress.com work2icu.org workatruna.com workerempowerment.org workers.dev worldvpn.net wowgirls.com wowhead.com wowporn.com woyaolian.org wp.com wpoforum.com writesonic.com wsj.com wsj.net wufafangwen.com wufi.org.tw wujieliulan.com wunderground.com wuw.red wwitv.com www.ajsands.com www.antd.org www.aolnews.com www.bing.com www.clashverge.dev www.cmoinc.org www.dmm.com www.eastturkistan.net www.gmiddle.com www.gmiddle.net www.hoyolab.com www.hustlercash.com www.idlcoyote.com www.kindleren.com www.lorenzetti.com.br www.m-sport.co.uk www.monlamit.org www.moztw.org www.msn.com www.oxid.it www.powerpointninja.com www.s4miniarchive.com www.shadowsocks.com www.skype.com www.tablesgenerator.com www.taiwanonline.cc www.wan-press.org www.websnapr.com www.xicons.org www.zensur.freerk.com wxw.cat wxw.moe x-art.com x-berry.com x-wall.org x.ai x.co x.com x.company x3guide.com xbabe.com xbookcn.com xbtce.com xcafe.in xcancel.com xcity.jp xdaforums.com xerotica.com xfinity.com xfxssr.me xgmyd.com xhamster.com xianjian.tw xiaohexie.com xiaolan.me xiaoma.org xiaomi.eu xiaxiaoqiang.net xijie.wordpress.com xing.com xinjiangpolicefiles.org xinmiao.com.hk xjtravelguide.com xm.com xml-training-guide.com xn--11xs86f.icu xn--1jqvh729avzfcy2d8ummib.com xn--4gq171p.com xn--9iqy04a7fi01l.com xn--9pr62r24a.com xn--czq75pvv1aj5c.org xn--i2ru8q2qg.com xn--kcrv3utim32hx9f6qe.com xn--ngstr-lra8j.com xn--noss43i.com xn--oiq.cc xn--p8j9a0d9c9a.xn--q9jyb4c xn--u2u927b.com xnpool.com xnxx.com xpud.org xsden.info xskywalker.com xt.com xt.pub xtube.com xuchao.net xuchao.org xuehua.us xvbelink.com xvideos-cdn.com xvideos.com xvideos.es xvinlink.com xxx.com xxx.xxx xxxx.com.au xxxymovies.com y2mate.com yadi.sk yahoo.com yahoo.com.hk yahoo.com.tw yakbutterblues.com yam.com yam.org.tw yande.re yangzhi.org yasni.co.uk yasukuni.or.jp yeahteentube.com yecl.net yeelou.com yeeyi.com yegle.net yes-news.com yes123.com.tw yesasia.com yesasia.com.hk yespornplease.com yeyeclub.com yfsp.tv yhcw.net yibaochina.com yidio.com yigeni.com yipub.com yizhihongxing.com yobit.net yobt.tv yogichen.org you-get.org you.com youjizz.com youmaker.com youmind.com youpai.org youporn.com youporngay.com yourepeat.com yourlisten.com yourlust.com yousendit.com youtu.be youtube-nocookie.com youtube.com youtubeeducation.com youtubegaming.com youtubekids.com youversion.com youwin.com youxu.info yt.be ytimg.com ytn.co.kr yulghun.com yunchao.net yunomi.tokyo yvesgeleyn.com yyii.org yyjlymb.xyz yysub.net yzzk.com z-lib.fm z-lib.fo z-lib.gd z-lib.gl z-lib.io z-lib.org z-library.ec z-library.sk zalmos.com zamimg.com zaochenbao.com zattoo.com zb.com zdnet.com.tw zello.com zenmate.com zenmate.com.ru zerohedge.com zeronet.io zh-hans.cfsh99.com zh.ecdm.wikia.com zh.pokerstrategy.com zh.wikiquote.org zhangtianliang.com zhanlve.org zhao.1984.city zhengjian.org zhengwunet.org zhenxiang.biz zhizhu.top zhongguo.ca zhongguotese.net zhongzidi.com zhuatieba.com zhuichaguoji.org zi.media zillionk.com zim.vn zinio.com zmedia.com.tw zmw.cn zodgame.xyz zonaeuropa.com zonghexinwen.com zoogvpn.com zoominfo.com zooqle.com zootool.com zophar.net zorrovpn.com zozotown.com zpn.im zspeeder.me zuo.la zuobiao.me zuola.com zvereff.com zynamics.com zyxel.com zzcloud.me ================================================ FILE: luci-app-homeproxy/root/etc/homeproxy/resources/gfw_list.ver ================================================ 202604232238 ================================================ FILE: luci-app-homeproxy/root/etc/homeproxy/scripts/clean_log.sh ================================================ #!/bin/sh # SPDX-License-Identifier: GPL-2.0-only # # Copyright (C) 2022-2023 ImmortalWrt.org NAME="homeproxy" log_max_size="50" #KB main_log_file="/var/run/$NAME/$NAME.log" singc_log_file="/var/run/$NAME/sing-box-c.log" sings_log_file="/var/run/$NAME/sing-box-s.log" while true; do sleep 180 for i in "$main_log_file" "$singc_log_file" "$sings_log_file"; do [ -s "$i" ] || continue [ "$(( $(ls -l "$i" | awk -F ' ' '{print $5}') / 1024 >= log_max_size))" -eq "0" ] || echo "" > "$i" done done ================================================ FILE: luci-app-homeproxy/root/etc/homeproxy/scripts/firewall_post.ut ================================================ #!/usr/bin/utpl -S {%- import { readfile } from 'fs'; import { cursor } from 'uci'; import { isEmpty } from '/etc/homeproxy/scripts/homeproxy.uc'; const fw4 = require('fw4'); function array_to_nftarr(array) { if (type(array) !== 'array') return null; return `{ ${join(', ', uniq(array))} }`; } function resolve_ipv6(str) { if (isEmpty(str)) return null; let ipv6 = fw4.parse_subnet(str)?.[0]; if (!ipv6 || ipv6.family !== 6) return null; if (ipv6.bits > -1) return `${ipv6.addr}/${ipv6.bits}`; else return `& ${ipv6.mask} == ${ipv6.addr}`; } function resolve_mark(str) { if (isEmpty(str)) return null; let mark = fw4.parse_mark(str); if (isEmpty(mark)) return null; if (mark.mask === 0xffffffff) return fw4.hex(mark.mark); else if (mark.mark === 0) return `mark and ${fw4.hex(~mark.mask & 0xffffffff)}`; else if (mark.mark === mark.mask) return `mark or ${fw4.hex(mark.mark)}`; else if (mark.mask === 0) return `mark xor ${fw4.hex(mark.mark)}`; else return `mark and ${fw4.hex(~mark.mask & 0xffffffff)} xor ${fw4.hex(mark.mark)}`; } /* Misc config */ const resources_dir = '/etc/homeproxy/resources'; /* UCI config start */ const cfgname = 'homeproxy'; const uci = cursor(); uci.load(cfgname); const routing_mode = uci.get(cfgname, 'config', 'routing_mode') || 'bypass_mainland_china'; let outbound_node, outbound_udp_node, china_dns_server, bypass_cn_traffic; if (routing_mode !== 'custom') { outbound_node = uci.get(cfgname, 'config', 'main_node') || 'nil'; outbound_udp_node = uci.get(cfgname, 'config', 'main_udp_node') || 'nil'; china_dns_server = uci.get(cfgname, 'config', 'china_dns_server'); } else { outbound_node = uci.get(cfgname, 'routing', 'default_outbound') || 'nil'; bypass_cn_traffic = uci.get(cfgname, 'routing', 'bypass_cn_traffic') || '0'; } let routing_port = uci.get(cfgname, 'config', 'routing_port'); if (routing_port === 'common') routing_port = uci.get(cfgname, 'infra', 'common_port') || '22,53,80,143,443,465,587,853,873,993,995,8080,8443,9418'; const proxy_mode = uci.get(cfgname, 'config', 'proxy_mode') || 'redirect_tproxy', ipv6_support = uci.get(cfgname, 'config', 'ipv6_support') || '0'; let self_mark, redirect_port, tproxy_port, tproxy_mark, tun_name, tun_mark; if (match(proxy_mode, /redirect/)) { self_mark = uci.get(cfgname, 'infra', 'self_mark') || '100'; redirect_port = uci.get(cfgname, 'infra', 'redirect_port') || '5331'; } if (match(proxy_mode, /tproxy/)) if (outbound_udp_node !== 'nil' || routing_mode === 'custom') { tproxy_port = uci.get(cfgname, 'infra', 'tproxy_port') || '5332'; tproxy_mark = resolve_mark(uci.get(cfgname, 'infra', 'tproxy_mark') || '101'); } if (match(proxy_mode, /tun/)) { tun_name = uci.get(cfgname, 'infra', 'tun_name') || 'singtun0'; tun_mark = resolve_mark(uci.get(cfgname, 'infra', 'tun_mark') || '102'); } const control_options = [ "listen_interfaces", "lan_proxy_mode", "lan_direct_mac_addrs", "lan_direct_ipv4_ips", "lan_direct_ipv6_ips", "lan_proxy_mac_addrs", "lan_proxy_ipv4_ips", "lan_proxy_ipv6_ips", "lan_gaming_mode_mac_addrs", "lan_gaming_mode_ipv4_ips", "lan_gaming_mode_ipv6_ips", "lan_global_proxy_mac_addrs", "lan_global_proxy_ipv4_ips", "lan_global_proxy_ipv6_ips", "wan_proxy_ipv4_ips", "wan_proxy_ipv6_ips", "wan_direct_ipv4_ips", "wan_direct_ipv6_ips" ]; const control_info = {}; for (let i in control_options) control_info[i] = uci.get(cfgname, 'control', i); const dns_redirect = uci.get(cfgname, 'infra', 'dns_redirect') || '1'; const dns_hijacked = uci.get('dhcp', '@dnsmasq[0]', 'dns_redirect') || '0', dns_port = uci.get('dhcp', '@dnsmasq[0]', 'port') || '53'; /* UCI config end */ -%} {# Reserved addresses -#} set homeproxy_local_addr_v4 { type ipv4_addr flags interval auto-merge elements = { 0.0.0.0/8, 10.0.0.0/8, 100.64.0.0/10, 127.0.0.0/8, 169.254.0.0/16, 172.16.0.0/12, 192.0.0.0/24, 192.0.2.0/24, 192.31.196.0/24, 192.52.193.0/24, 192.88.99.0/24, 192.168.0.0/16, 192.175.48.0/24, 198.18.0.0/15, 198.51.100.0/24, 203.0.113.0/24, 224.0.0.0/4, 240.0.0.0/4 } } {% if (ipv6_support === '1'): %} set homeproxy_local_addr_v6 { type ipv6_addr flags interval auto-merge elements = { ::/128, ::1/128, ::ffff:0:0/96, 100::/64, 64:ff9b::/96, 2001::/32, 2001:10::/28, 2001:20::/28, 2001:db8::/28, 2002::/16, fc00::/7, fe80::/10, ff00::/8 } } {% endif %} {% if (routing_mode === 'gfwlist'): %} set homeproxy_gfw_list_v4 { type ipv4_addr flags interval auto-merge } {% if (ipv6_support === '1'): %} set homeproxy_gfw_list_v6 { type ipv6_addr flags interval auto-merge } {% endif /* ipv6_support */ %} {% elif (match(routing_mode, /mainland_china/) || bypass_cn_traffic === '1'): %} set homeproxy_mainland_addr_v4 { type ipv4_addr flags interval auto-merge elements = { {% for (let cnip4 in split(trim(readfile(resources_dir + '/china_ip4.txt')), /[\r\n]/)): %} {{ cnip4 }}, {% endfor %} } } {% if ((ipv6_support === '1') || china_dns_server): %} set homeproxy_mainland_addr_v6 { type ipv6_addr flags interval auto-merge elements = { {% for (let cnip6 in split(trim(readfile(resources_dir + '/china_ip6.txt')), /[\r\n]/)): %} {{ cnip6 }}, {% endfor %} } } {% endif /* ipv6_support */ %} {% endif /* routing_mode */ %} {# WAN ACL addresses #} set homeproxy_wan_proxy_addr_v4 { type ipv4_addr flags interval auto-merge {% if (control_info.wan_proxy_ipv4_ips): %} elements = { {{ join(', ', control_info.wan_proxy_ipv4_ips) }} } {% endif %} } {% if (ipv6_support === '1'): %} set homeproxy_wan_proxy_addr_v6 { type ipv6_addr flags interval auto-merge {% if (control_info.wan_proxy_ipv6_ips): %} elements = { {{ join(', ', control_info.wan_proxy_ipv6_ips) }} } {% endif /* wan_proxy_ipv6_ips*/ %} } {% endif /* ipv6_support */ %} set homeproxy_wan_direct_addr_v4 { type ipv4_addr flags interval auto-merge {% if (control_info.wan_direct_ipv4_ips): %} elements = { {{ join(', ', control_info.wan_direct_ipv4_ips) }} } {% endif %} } {% if (ipv6_support === '1'): %} set homeproxy_wan_direct_addr_v6 { type ipv6_addr flags interval auto-merge {% if (control_info.wan_direct_ipv6_ips): %} elements = { {{ join(', ', control_info.wan_direct_ipv6_ips) }} } {% endif /* wan_direct_ipv6_ips */ %} } {% endif /* ipv6_support */ %} {% if (routing_port): %} set homeproxy_routing_port { type inet_service flags interval auto-merge elements = { {{ join(', ', split(routing_port, ',')) }} } } {% endif %} {# DNS hijack & TCP redirect #} chain dstnat { {% if ((dns_redirect === '1') && (dns_hijacked !== '1')): %} {% if (control_info.listen_interfaces): %} meta iifname {{ array_to_nftarr(control_info.listen_interfaces) }} {%- endif /* listen_interfaces */ %} meta nfproto { ipv4, ipv6 } udp dport 53 counter redirect to :{{ dns_port }} comment "!{{ cfgname }}: DNS hijack" {% endif /* dns_hijacked */ %} {% if (match(proxy_mode, /redirect/)): %} meta nfproto { {{ (ipv6_support === '1') ? 'ipv4, ipv6' : 'ipv4' }} } meta l4proto tcp jump homeproxy_redirect_lanac {% endif /* proxy_mode */ %} } {# TCP redirect #} {% if (match(proxy_mode, /redirect/)): %} chain homeproxy_redirect_proxy { meta l4proto tcp counter redirect to :{{ redirect_port }} } chain homeproxy_redirect_proxy_port { {% if (routing_port): %} tcp dport != @homeproxy_routing_port counter return {% endif %} goto homeproxy_redirect_proxy } chain homeproxy_redirect_lanac { {% if (control_info.listen_interfaces): %} meta iifname != {{ array_to_nftarr(control_info.listen_interfaces) }} counter return {% endif %} meta mark {{ self_mark }} counter return {% if (control_info.lan_proxy_mode === 'listed_only'): %} {% if (!isEmpty(control_info.lan_proxy_ipv4_ips)): %} ip saddr {{ array_to_nftarr(control_info.lan_proxy_ipv4_ips) }} counter goto homeproxy_redirect {% endif /* lan_proxy_ipv4_ips */ %} {% for (let ipv6 in control_info.lan_proxy_ipv6_ips): %} ip6 saddr {{ resolve_ipv6(ipv6) }} counter goto homeproxy_redirect {% endfor /* lan_proxy_ipv6_ips */ %} {% if (!isEmpty(control_info.lan_proxy_mac_addrs)): %} ether saddr {{ array_to_nftarr(control_info.lan_proxy_mac_addrs) }} counter goto homeproxy_redirect {% endif /* lan_proxy_mac_addrs */ %} {% elif (control_info.lan_proxy_mode === 'except_listed'): %} {% if (!isEmpty(control_info.lan_direct_ipv4_ips)): %} ip saddr {{ array_to_nftarr(control_info.lan_direct_ipv4_ips) }} counter return {% endif /* lan_direct_ipv4_ips */ %} {% for (let ipv6 in control_info.lan_direct_ipv6_ips): %} ip6 saddr {{ resolve_ipv6(ipv6) }} counter return {% endfor /* lan_direct_ipv6_ips */ %} {% if (!isEmpty(control_info.lan_direct_mac_addrs)): %} ether saddr {{ array_to_nftarr(control_info.lan_direct_mac_addrs) }} counter return {% endif /* lan_direct_mac_addrs */ %} {% endif /* lan_proxy_mode */ %} {% if (control_info.lan_proxy_mode !== 'listed_only'): %} counter goto homeproxy_redirect {% endif %} } chain homeproxy_redirect { meta mark {{ self_mark }} counter return ip daddr @homeproxy_wan_proxy_addr_v4 counter goto homeproxy_redirect_proxy_port {% if (ipv6_support === '1'): %} ip6 daddr @homeproxy_wan_proxy_addr_v6 counter goto homeproxy_redirect_proxy_port {% endif %} ip daddr @homeproxy_local_addr_v4 counter return {% if (ipv6_support === '1'): %} ip6 daddr @homeproxy_local_addr_v6 counter return {% endif %} {% if (routing_mode !== 'custom'): %} {% if (!isEmpty(control_info.lan_global_proxy_ipv4_ips)): %} ip saddr {{ array_to_nftarr(control_info.lan_global_proxy_ipv4_ips) }} counter goto homeproxy_redirect_proxy_port {% endif /* lan_global_proxy_ipv4_ips */ %} {% for (let ipv6 in control_info.lan_global_proxy_ipv6_ips): %} ip6 saddr {{ resolve_ipv6(ipv6) }} counter goto homeproxy_redirect_proxy_port {% endfor /* lan_global_proxy_ipv6_ips */ %} {% if (!isEmpty(control_info.lan_global_proxy_mac_addrs)): %} ether saddr {{ array_to_nftarr(control_info.lan_global_proxy_mac_addrs) }} counter goto homeproxy_redirect_proxy_port {% endif /* lan_global_proxy_mac_addrs */ %} {% endif /* routing_mode */ %} ip daddr @homeproxy_wan_direct_addr_v4 counter return {% if (ipv6_support === '1'): %} ip6 daddr @homeproxy_wan_direct_addr_v6 counter return {% endif /* ipv6_support */ %} {% if (routing_mode === 'gfwlist'): %} ip daddr != @homeproxy_gfw_list_v4 counter return {% if (ipv6_support === '1'): %} ip6 daddr != @homeproxy_gfw_list_v6 counter return {% endif /* ipv6_support */ %} {% elif (routing_mode === 'bypass_mainland_china' || bypass_cn_traffic === '1'): %} ip daddr @homeproxy_mainland_addr_v4 counter return {% if (ipv6_support === '1'): %} ip6 daddr @homeproxy_mainland_addr_v6 counter return {% endif /* ipv6_support */ %} {% elif (routing_mode === 'proxy_mainland_china'): %} ip daddr != @homeproxy_mainland_addr_v4 counter return {% if (ipv6_support === '1'): %} ip6 daddr != @homeproxy_mainland_addr_v6 counter return {% endif /* ipv6_support */ %} {% endif /* routing_mode */ %} {% if (!isEmpty(control_info.lan_gaming_mode_ipv4_ips)): %} ip saddr {{ array_to_nftarr(control_info.lan_gaming_mode_ipv4_ips) }} counter goto homeproxy_redirect_proxy {% endif /* lan_gaming_mode_ipv4_ips */ %} {% for (let ipv6 in control_info.lan_gaming_mode_ipv6_ips): %} ip6 saddr {{ resolve_ipv6(ipv6) }} counter goto homeproxy_redirect_proxy {% endfor /* lan_gaming_mode_ipv6_ips */ %} {% if (!isEmpty(control_info.lan_gaming_mode_mac_addrs)): %} ether saddr {{ array_to_nftarr(control_info.lan_gaming_mode_mac_addrs) }} counter goto homeproxy_redirect_proxy {% endif /* lan_gaming_mode_mac_addrs */ %} counter goto homeproxy_redirect_proxy_port } chain homeproxy_output_redir { type nat hook output priority filter -105; policy accept meta nfproto { {{ (ipv6_support === '1') ? 'ipv4, ipv6' : 'ipv4' }} } meta l4proto tcp jump homeproxy_redirect } {% endif %} {# UDP tproxy #} {% if (match(proxy_mode, /tproxy/) && (outbound_udp_node !== 'nil' || routing_mode === 'custom')): %} chain homeproxy_mangle_tproxy { meta l4proto udp meta mark set {{ tproxy_mark }} tproxy ip to 127.0.0.1:{{ tproxy_port }} counter accept {% if (ipv6_support === '1'): %} meta l4proto udp meta mark set {{ tproxy_mark }} tproxy ip6 to [::1]:{{ tproxy_port }} counter accept {% endif %} } chain homeproxy_mangle_tproxy_port { {% if (routing_port): %} udp dport != @homeproxy_routing_port counter return {% endif %} goto homeproxy_mangle_tproxy } chain homeproxy_mangle_mark { {% if (routing_port): %} udp dport != @homeproxy_routing_port counter return {% endif %} meta l4proto udp meta mark set {{ tproxy_mark }} counter accept } chain homeproxy_mangle_lanac { {% if (control_info.listen_interfaces): %} meta iifname != {{ array_to_nftarr(uniq([...control_info.listen_interfaces, ...['lo']])) }} counter return {% endif %} meta iifname != lo udp dport 53 counter return meta mark {{ self_mark }} counter return {% if (control_info.lan_proxy_mode === 'listed_only'): %} {% if (!isEmpty(control_info.lan_proxy_ipv4_ips)): %} ip saddr {{ array_to_nftarr(control_info.lan_proxy_ipv4_ips) }} counter goto homeproxy_mangle_prerouting {% endif /* lan_proxy_ipv4_ips */ %} {% for (let ipv6 in control_info.lan_proxy_ipv6_ips): %} ip6 saddr {{ resolve_ipv6(ipv6) }} counter goto homeproxy_mangle_prerouting {% endfor /* lan_proxy_ipv6_ips */ %} {% if (!isEmpty(control_info.lan_proxy_mac_addrs)): %} ether saddr {{ array_to_nftarr(control_info.lan_proxy_mac_addrs) }} counter goto homeproxy_mangle_prerouting {% endif /* lan_proxy_mac_addrs */ %} {% elif (control_info.lan_proxy_mode === 'except_listed'): %} {% if (!isEmpty(control_info.lan_direct_ipv4_ips)): %} ip saddr {{ array_to_nftarr(control_info.lan_direct_ipv4_ips) }} counter return {% endif /* lan_direct_ipv4_ips */ %} {% for (let ipv6 in control_info.lan_direct_ipv6_ips): %} ip6 saddr {{ resolve_ipv6(ipv6) }} counter return {% endfor /* lan_direct_ipv6_ips */ %} {% if (!isEmpty(control_info.lan_direct_mac_addrs)): %} ether saddr {{ array_to_nftarr(control_info.lan_direct_mac_addrs) }} counter return {% endif /* lan_direct_mac_addrs */ %} {% endif /* lan_proxy_mode */ %} {% if (control_info.lan_proxy_mode !== 'listed_only'): %} counter goto homeproxy_mangle_prerouting {% endif %} } chain homeproxy_mangle_prerouting { ip daddr @homeproxy_wan_proxy_addr_v4 counter goto homeproxy_mangle_tproxy_port {% if (ipv6_support === '1'): %} ip6 daddr @homeproxy_wan_proxy_addr_v6 counter goto homeproxy_mangle_tproxy_port {% endif %} ip daddr @homeproxy_local_addr_v4 counter return {% if (ipv6_support === '1'): %} ip6 daddr @homeproxy_local_addr_v6 counter return {% endif %} {% if (routing_mode !== 'custom'): %} {% if (!isEmpty(control_info.lan_global_proxy_ipv4_ips)): %} ip saddr {{ array_to_nftarr(control_info.lan_global_proxy_ipv4_ips) }} counter goto homeproxy_mangle_tproxy_port {% endif /* lan_global_proxy_ipv4_ips */ %} {% for (let ipv6 in control_info.lan_global_proxy_ipv6_ips): %} ip6 saddr {{ resolve_ipv6(ipv6) }} counter goto homeproxy_mangle_tproxy_port {% endfor /* lan_global_proxy_ipv6_ips */ %} {% if (!isEmpty(control_info.lan_global_proxy_mac_addrs)): %} ether saddr {{ array_to_nftarr(control_info.lan_global_proxy_mac_addrs) }} counter goto homeproxy_mangle_tproxy_port {% endif /* lan_global_proxy_mac_addrs */ %} {% endif /* routing_mode */ %} ip daddr @homeproxy_wan_direct_addr_v4 counter return {% if (ipv6_support === '1'): %} ip6 daddr @homeproxy_wan_direct_addr_v6 counter return {% endif /* ipv6_support */ %} {% if (routing_mode === 'gfwlist'): %} ip daddr != @homeproxy_gfw_list_v4 counter return {% if (ipv6_support === '1'): %} ip6 daddr != @homeproxy_gfw_list_v6 counter return {% endif /* ipv6_support */ %} udp dport { 80, 443 } counter reject comment "!{{ cfgname }}: Fuck you QUIC" {% elif (routing_mode === 'bypass_mainland_china' || bypass_cn_traffic === '1'): %} ip daddr @homeproxy_mainland_addr_v4 counter return {% if (ipv6_support === '1'): %} ip6 daddr @homeproxy_mainland_addr_v6 counter return {% endif /* ipv6_support */ %} {% if (routing_mode !== 'custom'): %} udp dport { 80, 443 } counter reject comment "!{{ cfgname }}: Fuck you QUIC" {% endif /* routing_mode */ %} {% elif (routing_mode === 'proxy_mainland_china'): %} ip daddr != @homeproxy_mainland_addr_v4 counter return {% if (ipv6_support === '1'): %} ip6 daddr != @homeproxy_mainland_addr_v6 counter return {% endif /* ipv6_support */ %} {% endif /* routing_mode */ %} {% if (!isEmpty(control_info.lan_gaming_mode_ipv4_ips)): %} ip saddr {{ array_to_nftarr(control_info.lan_gaming_mode_ipv4_ips) }} counter goto homeproxy_mangle_tproxy {% endif /* lan_gaming_mode_ipv4_ips */ %} {% for (let ipv6 in control_info.lan_gaming_mode_ipv6_ips): %} ip6 saddr {{ resolve_ipv6(ipv6) }} counter goto homeproxy_mangle_tproxy {% endfor /* lan_gaming_mode_ipv6_ips */ %} {% if (!isEmpty(control_info.lan_gaming_mode_mac_addrs)): %} ether saddr {{ array_to_nftarr(control_info.lan_gaming_mode_mac_addrs) }} counter goto homeproxy_mangle_tproxy {% endif /* lan_gaming_mode_mac_addrs */ %} counter goto homeproxy_mangle_tproxy_port } chain homeproxy_mangle_output { meta mark {{ self_mark }} counter return ip daddr @homeproxy_wan_proxy_addr_v4 counter goto homeproxy_mangle_mark {% if (ipv6_support === '1'): %} ip6 daddr @homeproxy_wan_proxy_addr_v6 counter goto homeproxy_mangle_mark {% endif %} ip daddr @homeproxy_local_addr_v4 counter return {% if (ipv6_support === '1'): %} ip6 daddr @homeproxy_local_addr_v6 counter return {% endif %} ip daddr @homeproxy_wan_direct_addr_v4 counter return {% if (ipv6_support === '1'): %} ip6 daddr @homeproxy_wan_direct_addr_v6 counter return {% endif /* ipv6_support */ %} {% if (routing_mode === 'gfwlist'): %} ip daddr != @homeproxy_gfw_list_v4 counter return {% if (ipv6_support === '1'): %} ip6 daddr != @homeproxy_gfw_list_v6 counter return {% endif /* ipv6_support */ %} {% elif (routing_mode === 'bypass_mainland_china' || bypass_cn_traffic === '1'): %} ip daddr @homeproxy_mainland_addr_v4 counter return {% if (ipv6_support === '1'): %} ip6 daddr @homeproxy_mainland_addr_v6 counter return {% endif /* ipv6_support */ %} {% elif (routing_mode === 'proxy_mainland_china'): %} ip daddr != @homeproxy_mainland_addr_v4 counter return {% if (ipv6_support === '1'): %} ip6 daddr != @homeproxy_mainland_addr_v6 counter return {% endif /* ipv6_support */ %} {% endif /* routing_mode */ %} counter goto homeproxy_mangle_mark } chain mangle_prerouting { meta nfproto { {{ (ipv6_support === '1') ? 'ipv4, ipv6' : 'ipv4' }} } meta l4proto udp jump homeproxy_mangle_lanac } chain mangle_output { meta nfproto { {{ (ipv6_support === '1') ? 'ipv4, ipv6' : 'ipv4' }} } meta l4proto udp jump homeproxy_mangle_output } {% endif %} {# TUN #} {% if (match(proxy_mode, /tun/)): %} chain homeproxy_mangle_lanac { iifname {{ tun_name }} counter return udp dport 53 counter return {% if (control_info.listen_interfaces): %} meta iifname != {{ array_to_nftarr(control_info.listen_interfaces) }} counter return {% endif %} {% if (control_info.lan_proxy_mode === 'listed_only'): %} {% if (!isEmpty(control_info.lan_proxy_ipv4_ips)): %} ip saddr {{ array_to_nftarr(control_info.lan_proxy_ipv4_ips) }} counter goto homeproxy_mangle_tun {% endif /* lan_proxy_ipv4_ips */ %} {% for (let ipv6 in control_info.lan_proxy_ipv6_ips): %} ip6 saddr {{ resolve_ipv6(ipv6) }} counter goto homeproxy_mangle_tun {% endfor /* lan_proxy_ipv6_ips */ %} {% if (!isEmpty(control_info.lan_proxy_mac_addrs)): %} ether saddr {{ array_to_nftarr(control_info.lan_proxy_mac_addrs) }} counter goto homeproxy_mangle_tun {% endif /* lan_proxy_mac_addrs */ %} {% elif (control_info.lan_proxy_mode === 'except_listed'): %} {% if (!isEmpty(control_info.lan_direct_ipv4_ips)): %} ip saddr {{ array_to_nftarr(control_info.lan_direct_ipv4_ips) }} counter return {% endif /* lan_direct_ipv4_ips */ %} {% for (let ipv6 in control_info.lan_direct_ipv6_ips): %} ip6 saddr {{ resolve_ipv6(ipv6) }} counter return {% endfor /* lan_direct_ipv6_ips */ %} {% if (!isEmpty(control_info.lan_direct_mac_addrs)): %} ether saddr {{ array_to_nftarr(control_info.lan_direct_mac_addrs) }} counter return {% endif /* lan_direct_mac_addrs */ %} {% endif /* lan_proxy_mode */ %} {% if (control_info.lan_proxy_mode !== 'listed_only'): %} counter goto homeproxy_mangle_tun {% endif %} } chain homeproxy_mangle_tun_mark { {% if (routing_port): %} {% if (proxy_mode === 'tun'): %} tcp dport != @homeproxy_routing_port counter return {% endif /* proxy_mode */ %} udp dport != @homeproxy_routing_port counter return {% endif /* routing_port */ %} counter meta mark set {{ tun_mark }} } chain homeproxy_mangle_tun { iifname {{ tun_name }} counter return ip daddr @homeproxy_wan_proxy_addr_v4 counter goto homeproxy_mangle_tun_mark {% if (ipv6_support === '1'): %} ip6 daddr @homeproxy_wan_proxy_addr_v6 counter goto homeproxy_mangle_tun_mark {% endif %} ip daddr @homeproxy_local_addr_v4 counter return {% if (ipv6_support === '1'): %} ip6 daddr @homeproxy_local_addr_v6 counter return {% endif %} {% if (routing_mode !== 'custom'): %} {% if (!isEmpty(control_info.lan_global_proxy_ipv4_ips)): %} ip saddr {{ array_to_nftarr(control_info.lan_global_proxy_ipv4_ips) }} counter goto homeproxy_mangle_tun_mark {% endif /* lan_global_proxy_ipv4_ips */ %} {% for (let ipv6 in control_info.lan_global_proxy_ipv6_ips): %} ip6 saddr {{ resolve_ipv6(ipv6) }} counter goto homeproxy_mangle_tun_mark {% endfor /* lan_global_proxy_ipv6_ips */ %} {% if (!isEmpty(control_info.lan_global_proxy_mac_addrs)): %} ether saddr {{ array_to_nftarr(control_info.lan_global_proxy_mac_addrs) }} counter goto homeproxy_mangle_tun_mark {% endif /* lan_global_proxy_mac_addrs */ %} {% endif /* routing_mode */ %} {% if (control_info.wan_direct_ipv4_ips): %} ip daddr {{ array_to_nftarr(control_info.wan_direct_ipv4_ips) }} counter return {% endif /* wan_direct_ipv4_ips */ %} {% if (control_info.wan_direct_ipv6_ips): %} ip6 daddr {{ array_to_nftarr(control_info.wan_direct_ipv6_ips) }} counter return {% endif /* wan_direct_ipv6_ips */ %} {% if (routing_mode === 'gfwlist'): %} ip daddr != @homeproxy_gfw_list_v4 counter return {% if (ipv6_support === '1'): %} ip6 daddr != @homeproxy_gfw_list_v6 counter return {% endif /* ipv6_support */ %} udp dport { 80, 443 } counter reject comment "!{{ cfgname }}: Fuck you QUIC" {% elif (routing_mode === 'bypass_mainland_china' || bypass_cn_traffic === '1'): %} ip daddr @homeproxy_mainland_addr_v4 counter return {% if (ipv6_support === '1'): %} ip6 daddr @homeproxy_mainland_addr_v6 counter return {% endif /* ipv6_support */ %} {% if (routing_mode !== 'custom'): %} udp dport { 80, 443 } counter reject comment "!{{ cfgname }}: Fuck you QUIC" {% endif /* routing_mode */ %} {% elif (routing_mode === 'proxy_mainland_china'): %} ip daddr != @homeproxy_mainland_addr_v4 counter return {% if (ipv6_support === '1'): %} ip6 daddr != @homeproxy_mainland_addr_v6 counter return {% endif /* ipv6_support */ %} {% endif /* routing_mode */ %} {% if (!isEmpty(control_info.lan_gaming_mode_ipv4_ips)): %} ip saddr {{ array_to_nftarr(control_info.lan_gaming_mode_ipv4_ips) }} counter meta mark set {{ tun_mark }} {% endif /* lan_gaming_mode_ipv4_ips */ %} {% for (let ipv6 in control_info.lan_gaming_mode_ipv6_ips): %} ip6 saddr {{ resolve_ipv6(ipv6) }} counter meta mark set {{ tun_mark }} {% endfor /* lan_gaming_mode_ipv6_ips */ %} {% if (!isEmpty(control_info.lan_gaming_mode_mac_addrs)): %} ether saddr {{ array_to_nftarr(control_info.lan_gaming_mode_mac_addrs) }} counter meta mark set {{ tun_mark }} {% endif /* lan_gaming_mode_mac_addrs */ %} counter goto homeproxy_mangle_tun_mark } chain mangle_prerouting { meta nfproto { {{ (ipv6_support === '1') ? 'ipv4, ipv6' : 'ipv4' }} } meta l4proto { {{ (proxy_mode === 'tun') ? 'tcp, udp' : 'udp' }} } jump homeproxy_mangle_lanac } chain mangle_output { meta nfproto { {{ (ipv6_support === '1') ? 'ipv4, ipv6' : 'ipv4' }} } meta l4proto { {{ (proxy_mode === 'tun') ? 'tcp, udp' : 'udp' }} } jump homeproxy_mangle_tun } {% endif %} ================================================ FILE: luci-app-homeproxy/root/etc/homeproxy/scripts/firewall_pre.uc ================================================ #!/usr/bin/ucode 'use strict'; import { writefile } from 'fs'; import { cursor } from 'uci'; import { isEmpty, RUN_DIR } from 'homeproxy'; const cfgname = 'homeproxy'; const uci = cursor(); uci.load(cfgname); const routing_mode = uci.get(cfgname, 'config', 'routing_mode') || 'bypass_mainland_china', proxy_mode = uci.get(cfgname, 'config', 'proxy_mode') || 'redirect_tproxy'; let outbound_node, tun_name; if (match(proxy_mode, /tun/)) { if (routing_mode === 'custom') outbound_node = uci.get(cfgname, 'routing', 'default_outbound') || 'nil'; else outbound_node = uci.get(cfgname, 'config', 'main_node') || 'nil'; if (outbound_node !== 'nil') tun_name = uci.get(cfgname, 'infra', 'tun_name') || 'singtun0'; } const server_enabled = uci.get(cfgname, 'server', 'enabled'); let forward = [], input = []; if (tun_name) { push(forward, `oifname ${tun_name} counter accept comment "!${cfgname}: accept tun forward"`); push(input ,`iifname ${tun_name} counter accept comment "!${cfgname}: accept tun input"`); } if (server_enabled === '1') { uci.foreach(cfgname, 'server', (s) => { if (s.enabled !== '1' || s.firewall !== '1') return; let proto = s.network || '{ tcp, udp }'; push(input, `meta l4proto ${proto} th dport ${s.port} counter accept comment "!${cfgname}: accept server ${s['.name']}"`); }); } if (!isEmpty(forward)) writefile(RUN_DIR + '/fw4_forward.nft', join('\n', forward) + '\n'); if (!isEmpty(input)) writefile(RUN_DIR + '/fw4_input.nft', join('\n', input) + '\n'); ================================================ FILE: luci-app-homeproxy/root/etc/homeproxy/scripts/generate_client.uc ================================================ #!/usr/bin/ucode /* * SPDX-License-Identifier: GPL-2.0-only * * Copyright (C) 2023-2025 ImmortalWrt.org */ 'use strict'; import { readfile, writefile } from 'fs'; import { isnan } from 'math'; import { connect } from 'ubus'; import { cursor } from 'uci'; import { isEmpty, parseURL, strToBool, strToInt, strToTime, removeBlankAttrs, validation, HP_DIR, RUN_DIR } from 'homeproxy'; const ubus = connect(); /* const features = ubus.call('luci.homeproxy', 'singbox_get_features') || {}; */ /* UCI config start */ const uci = cursor(); const uciconfig = 'homeproxy'; uci.load(uciconfig); const uciinfra = 'infra', ucimain = 'config', ucicontrol = 'control'; const ucidnssetting = 'dns', ucidnsserver = 'dns_server', ucidnsrule = 'dns_rule'; const uciroutingsetting = 'routing', uciroutingnode = 'routing_node', uciroutingrule = 'routing_rule'; const ucinode = 'node'; const uciruleset = 'ruleset'; const routing_mode = uci.get(uciconfig, ucimain, 'routing_mode') || 'bypass_mainland_china'; let wan_dns = ubus.call('network.interface', 'status', {'interface': 'wan'})?.['dns-server']?.[0]; if (!wan_dns) wan_dns = (routing_mode in ['proxy_mainland_china', 'global']) ? '8.8.8.8' : '223.5.5.5'; const dns_port = uci.get(uciconfig, uciinfra, 'dns_port') || '5333'; const ntp_server = uci.get(uciconfig, uciinfra, 'ntp_server') || 'time.apple.com'; const ipv6_support = uci.get(uciconfig, ucimain, 'ipv6_support') || '0'; let main_node, main_udp_node, dedicated_udp_node, default_outbound, default_outbound_dns, domain_strategy, sniff_override, dns_server, china_dns_server, dns_default_strategy, dns_default_server, dns_disable_cache, dns_disable_cache_expire, dns_independent_cache, dns_client_subnet, cache_file_store_rdrc, cache_file_rdrc_timeout, direct_domain_list, proxy_domain_list; if (routing_mode !== 'custom') { main_node = uci.get(uciconfig, ucimain, 'main_node') || 'nil'; main_udp_node = uci.get(uciconfig, ucimain, 'main_udp_node') || 'nil'; dedicated_udp_node = !isEmpty(main_udp_node) && !(main_udp_node in ['same', main_node]); dns_server = uci.get(uciconfig, ucimain, 'dns_server'); if (isEmpty(dns_server) || dns_server === 'wan') dns_server = wan_dns; if (routing_mode === 'bypass_mainland_china') { china_dns_server = uci.get(uciconfig, ucimain, 'china_dns_server'); if (isEmpty(china_dns_server) || type(china_dns_server) !== 'string' || china_dns_server === 'wan') china_dns_server = wan_dns; } dns_default_strategy = (ipv6_support !== '1') ? 'ipv4_only' : null; direct_domain_list = trim(readfile(HP_DIR + '/resources/direct_list.txt')); if (direct_domain_list) direct_domain_list = split(direct_domain_list, /[\r\n]/); proxy_domain_list = trim(readfile(HP_DIR + '/resources/proxy_list.txt')); if (proxy_domain_list) proxy_domain_list = split(proxy_domain_list, /[\r\n]/); sniff_override = uci.get(uciconfig, uciinfra, 'sniff_override') || '1'; } else { /* DNS settings */ dns_default_strategy = uci.get(uciconfig, ucidnssetting, 'default_strategy'); dns_default_server = uci.get(uciconfig, ucidnssetting, 'default_server'); dns_disable_cache = uci.get(uciconfig, ucidnssetting, 'disable_cache'); dns_disable_cache_expire = uci.get(uciconfig, ucidnssetting, 'disable_cache_expire'); dns_independent_cache = uci.get(uciconfig, ucidnssetting, 'independent_cache'); dns_client_subnet = uci.get(uciconfig, ucidnssetting, 'client_subnet'); cache_file_store_rdrc = uci.get(uciconfig, ucidnssetting, 'cache_file_store_rdrc'), cache_file_rdrc_timeout = uci.get(uciconfig, ucidnssetting, 'cache_file_rdrc_timeout'); /* Routing settings */ default_outbound = uci.get(uciconfig, uciroutingsetting, 'default_outbound') || 'nil'; default_outbound_dns = uci.get(uciconfig, uciroutingsetting, 'default_outbound_dns') || 'default-dns'; domain_strategy = uci.get(uciconfig, uciroutingsetting, 'domain_strategy'); sniff_override = uci.get(uciconfig, uciroutingsetting, 'sniff_override'); } const proxy_mode = uci.get(uciconfig, ucimain, 'proxy_mode') || 'redirect_tproxy', default_interface = uci.get(uciconfig, ucicontrol, 'bind_interface'); const mixed_port = uci.get(uciconfig, uciinfra, 'mixed_port') || '5330'; let self_mark, redirect_port, tproxy_port, tun_name, tun_addr4, tun_addr6, tun_mtu, tcpip_stack, endpoint_independent_nat, udp_timeout; if (routing_mode === 'custom') udp_timeout = uci.get(uciconfig, uciroutingsetting, 'udp_timeout'); else udp_timeout = uci.get(uciconfig, 'infra', 'udp_timeout'); if (match(proxy_mode, /redirect/)) { self_mark = uci.get(uciconfig, 'infra', 'self_mark') || '100'; redirect_port = uci.get(uciconfig, 'infra', 'redirect_port') || '5331'; } if (match(proxy_mode), /tproxy/) if (main_udp_node !== 'nil' || routing_mode === 'custom') tproxy_port = uci.get(uciconfig, 'infra', 'tproxy_port') || '5332'; if (match(proxy_mode), /tun/) { tun_name = uci.get(uciconfig, uciinfra, 'tun_name') || 'singtun0'; tun_addr4 = uci.get(uciconfig, uciinfra, 'tun_addr4') || '172.19.0.1/30'; tun_addr6 = uci.get(uciconfig, uciinfra, 'tun_addr6') || 'fdfe:dcba:9876::1/126'; tun_mtu = uci.get(uciconfig, uciinfra, 'tun_mtu') || '9000'; tcpip_stack = 'system'; if (routing_mode === 'custom') { tcpip_stack = uci.get(uciconfig, uciroutingsetting, 'tcpip_stack') || 'system'; endpoint_independent_nat = uci.get(uciconfig, uciroutingsetting, 'endpoint_independent_nat'); } } const log_level = uci.get(uciconfig, ucimain, 'log_level') || 'warn'; /* UCI config end */ /* Config helper start */ function parse_port(strport) { if (type(strport) !== 'array' || isEmpty(strport)) return null; let ports = []; for (let i in strport) push(ports, int(i)); return ports; } function parse_dnsserver(server_addr, default_protocol) { if (isEmpty(server_addr)) return null; if (!match(server_addr, /:\/\//)) server_addr = (default_protocol || 'udp') + '://' + (validation('ip6addr', server_addr) ? `[${server_addr}]` : server_addr); server_addr = parseURL(server_addr); return { type: server_addr.protocol, server: server_addr.hostname, server_port: strToInt(server_addr.port), path: (server_addr.pathname !== '/') ? server_addr.pathname : null, } } function parse_dnsquery(strquery) { if (type(strquery) !== 'array' || isEmpty(strquery)) return null; let querys = []; for (let i in strquery) isnan(int(i)) ? push(querys, i) : push(querys, int(i)); return querys; } function generate_endpoint(node) { if (type(node) !== 'object' || isEmpty(node)) return null; const endpoint = { type: node.type, tag: 'cfg-' + node['.name'] + '-out', address: node.wireguard_local_address, mtu: strToInt(node.wireguard_mtu), private_key: node.wireguard_private_key, peers: (node.type === 'wireguard') ? [ { address: node.address, port: strToInt(node.port), allowed_ips: [ '0.0.0.0/0', '::/0' ], persistent_keepalive_interval: strToInt(node.wireguard_persistent_keepalive_interval), public_key: node.wireguard_peer_public_key, pre_shared_key: node.wireguard_pre_shared_key, reserved: parse_port(node.wireguard_reserved), } ] : null, system: (node.type === 'wireguard') ? false : null, tcp_fast_open: strToBool(node.tcp_fast_open), tcp_multi_path: strToBool(node.tcp_multi_path), udp_fragment: strToBool(node.udp_fragment) }; return endpoint; } function generate_outbound(node) { if (type(node) !== 'object' || isEmpty(node)) return null; const outbound = { type: node.type, tag: 'cfg-' + node['.name'] + '-out', routing_mark: strToInt(self_mark), server: node.address, server_port: strToInt(node.port), /* Hysteria(2) */ server_ports: node.hysteria_hopping_port, username: (node.type !== 'ssh') ? node.username : null, user: (node.type === 'ssh') ? node.username : null, password: node.password, /* Direct */ override_address: node.override_address, override_port: strToInt(node.override_port), proxy_protocol: strToInt(node.proxy_protocol), /* AnyTLS */ idle_session_check_interval: strToTime(node.anytls_idle_session_check_interval), idle_session_timeout: strToTime(node.anytls_idle_session_timeout), min_idle_session: strToInt(node.anytls_min_idle_session), /* Hysteria (2) */ hop_interval: strToTime(node.hysteria_hop_interval), up_mbps: strToInt(node.hysteria_up_mbps), down_mbps: strToInt(node.hysteria_down_mbps), obfs: node.hysteria_obfs_type ? { type: node.hysteria_obfs_type, password: node.hysteria_obfs_password } : node.hysteria_obfs_password, auth: (node.hysteria_auth_type === 'base64') ? node.hysteria_auth_payload : null, auth_str: (node.hysteria_auth_type === 'string') ? node.hysteria_auth_payload : null, recv_window_conn: strToInt(node.hysteria_recv_window_conn), recv_window: strToInt(node.hysteria_revc_window), disable_mtu_discovery: strToBool(node.hysteria_disable_mtu_discovery), /* Shadowsocks */ method: node.shadowsocks_encrypt_method, plugin: node.shadowsocks_plugin, plugin_opts: node.shadowsocks_plugin_opts, /* ShadowTLS / Socks */ version: (node.type === 'shadowtls') ? strToInt(node.shadowtls_version) : ((node.type === 'socks') ? node.socks_version : null), /* SSH */ client_version: node.ssh_client_version, host_key: node.ssh_host_key, host_key_algorithms: node.ssh_host_key_algo, private_key: node.ssh_priv_key, private_key_passphrase: node.ssh_priv_key_pp, /* Tuic */ uuid: node.uuid, congestion_control: node.tuic_congestion_control, udp_relay_mode: node.tuic_udp_relay_mode, udp_over_stream: strToBool(node.tuic_udp_over_stream), zero_rtt_handshake: strToBool(node.tuic_enable_zero_rtt), heartbeat: strToTime(node.tuic_heartbeat), /* VLESS / VMess */ flow: node.vless_flow, alter_id: strToInt(node.vmess_alterid), security: node.vmess_encrypt, global_padding: strToBool(node.vmess_global_padding), authenticated_length: strToBool(node.vmess_authenticated_length), packet_encoding: node.packet_encoding, multiplex: (node.multiplex === '1') ? { enabled: true, protocol: node.multiplex_protocol, max_connections: strToInt(node.multiplex_max_connections), min_streams: strToInt(node.multiplex_min_streams), max_streams: strToInt(node.multiplex_max_streams), padding: strToBool(node.multiplex_padding), brutal: (node.multiplex_brutal === '1') ? { enabled: true, up_mbps: strToInt(node.multiplex_brutal_up), down_mbps: strToInt(node.multiplex_brutal_down) } : null } : null, tls: (node.tls === '1') ? { enabled: true, server_name: node.tls_sni, insecure: strToBool(node.tls_insecure), alpn: node.tls_alpn, min_version: node.tls_min_version, max_version: node.tls_max_version, cipher_suites: node.tls_cipher_suites, certificate_path: node.tls_cert_path, ech: (node.tls_ech === '1') ? { enabled: true, config: node.tls_ech_config, config_path: node.tls_ech_config_path } : null, utls: !isEmpty(node.tls_utls) ? { enabled: true, fingerprint: node.tls_utls } : null, reality: (node.tls_reality === '1') ? { enabled: true, public_key: node.tls_reality_public_key, short_id: node.tls_reality_short_id } : null } : null, transport: !isEmpty(node.transport) ? { type: node.transport, host: node.http_host || node.httpupgrade_host, path: node.http_path || node.ws_path, headers: node.ws_host ? { Host: node.ws_host } : null, method: node.http_method, max_early_data: strToInt(node.websocket_early_data), early_data_header_name: node.websocket_early_data_header, service_name: node.grpc_servicename, idle_timeout: (node.http_idle_timeout), ping_timeout: (node.http_ping_timeout), permit_without_stream: strToBool(node.grpc_permit_without_stream) } : null, udp_over_tcp: (node.udp_over_tcp === '1') ? { enabled: true, version: strToInt(node.udp_over_tcp_version) } : null, tcp_fast_open: strToBool(node.tcp_fast_open), tcp_multi_path: strToBool(node.tcp_multi_path), udp_fragment: strToBool(node.udp_fragment) }; return outbound; } function get_outbound(cfg) { if (isEmpty(cfg)) return null; if (type(cfg) === 'array') { if ('any-out' in cfg) return 'any'; let outbounds = []; for (let i in cfg) push(outbounds, get_outbound(i)); return outbounds; } else { switch (cfg) { case 'block-out': case 'direct-out': return cfg; default: const node = uci.get(uciconfig, cfg, 'node'); if (isEmpty(node)) die(sprintf("%s's node is missing, please check your configuration.", cfg)); else if (node === 'urltest') return 'cfg-' + cfg + '-out'; else return 'cfg-' + node + '-out'; } } } function get_resolver(cfg) { if (isEmpty(cfg)) return null; switch (cfg) { case 'default-dns': case 'system-dns': return cfg; default: return 'cfg-' + cfg + '-dns'; } } function get_ruleset(cfg) { if (isEmpty(cfg)) return null; let rules = []; for (let i in cfg) push(rules, isEmpty(i) ? null : 'cfg-' + i + '-rule'); return rules; } /* Config helper end */ const config = {}; /* Log */ config.log = { disabled: false, level: log_level, output: RUN_DIR + '/sing-box-c.log', timestamp: true }; /* NTP */ if (!isEmpty(ntp_server)) config.ntp = { enabled: true, server: ntp_server, detour: 'direct-out', domain_resolver: 'default-dns', }; /* DNS start */ /* Default settings */ config.dns = { servers: [ { tag: 'default-dns', type: 'udp', server: wan_dns, detour: self_mark ? 'direct-out' : null }, { tag: 'system-dns', type: 'local', detour: self_mark ? 'direct-out' : null } ], rules: [], strategy: dns_default_strategy, disable_cache: strToBool(dns_disable_cache), disable_expire: strToBool(dns_disable_cache_expire), independent_cache: strToBool(dns_independent_cache), client_subnet: dns_client_subnet }; if (!isEmpty(main_node)) { /* Main DNS */ push(config.dns.servers, { tag: 'main-dns', domain_resolver: { server: 'default-dns', strategy: (ipv6_support !== '1') ? 'ipv4_only' : null }, detour: 'main-out', ...parse_dnsserver(dns_server, 'tcp') }); config.dns.final = 'main-dns'; if (length(direct_domain_list)) push(config.dns.rules, { rule_set: 'direct-domain', action: 'route', server: (routing_mode === 'bypass_mainland_china') ? 'china-dns' : 'default-dns' }); /* Filter out SVCB/HTTPS queries for "exquisite" Apple devices */ if (routing_mode === 'gfwlist' || length(proxy_domain_list)) push(config.dns.rules, { rule_set: (routing_mode !== 'gfwlist') ? 'proxy-domain' : null, query_type: [64, 65], action: 'reject' }); if (routing_mode === 'bypass_mainland_china') { push(config.dns.servers, { tag: 'china-dns', domain_resolver: { server: 'default-dns', strategy: 'prefer_ipv6' }, detour: self_mark ? 'direct-out' : null, ...parse_dnsserver(china_dns_server) }); if (length(proxy_domain_list)) push(config.dns.rules, { rule_set: 'proxy-domain', action: 'route', server: 'main-dns' }); push(config.dns.rules, { rule_set: 'geosite-cn', action: 'route', server: 'china-dns', strategy: 'prefer_ipv6' }); push(config.dns.rules, { type: 'logical', mode: 'and', rules: [ { rule_set: 'geosite-noncn', invert: true }, { rule_set: 'geoip-cn' } ], action: 'route', server: 'china-dns', strategy: 'prefer_ipv6' }); } } else if (!isEmpty(default_outbound)) { /* DNS servers */ uci.foreach(uciconfig, ucidnsserver, (cfg) => { if (cfg.enabled !== '1') return; let outbound = get_outbound(cfg.outbound); if (outbound === 'direct-out' && isEmpty(self_mark)) outbound = null; push(config.dns.servers, { tag: 'cfg-' + cfg['.name'] + '-dns', type: cfg.type, server: cfg.server, server_port: strToInt(cfg.server_port), path: cfg.path, headers: cfg.headers, tls: cfg.tls_sni ? { enabled: true, server_name: cfg.tls_sni } : null, domain_resolver: (cfg.address_resolver || cfg.address_strategy) ? { server: get_resolver(cfg.address_resolver || dns_default_server), strategy: cfg.address_strategy } : null, detour: outbound }); }); /* DNS rules */ uci.foreach(uciconfig, ucidnsrule, (cfg) => { if (cfg.enabled !== '1') return; push(config.dns.rules, { ip_version: strToInt(cfg.ip_version), query_type: parse_dnsquery(cfg.query_type), network: cfg.network, protocol: cfg.protocol, domain: cfg.domain, domain_suffix: cfg.domain_suffix, domain_keyword: cfg.domain_keyword, domain_regex: cfg.domain_regex, port: parse_port(cfg.port), port_range: cfg.port_range, source_ip_cidr: cfg.source_ip_cidr, source_ip_is_private: strToBool(cfg.source_ip_is_private), ip_cidr: cfg.ip_cidr, ip_is_private: strToBool(cfg.ip_is_private), source_port: parse_port(cfg.source_port), source_port_range: cfg.source_port_range, process_name: cfg.process_name, process_path: cfg.process_path, process_path_regex: cfg.process_path_regex, user: cfg.user, rule_set: get_ruleset(cfg.rule_set), rule_set_ip_cidr_match_source: strToBool(cfg.rule_set_ip_cidr_match_source), invert: strToBool(cfg.invert), outbound: get_outbound(cfg.outbound), action: cfg.action, server: get_resolver(cfg.server), strategy: cfg.domain_strategy, disable_cache: strToBool(cfg.dns_disable_cache), rewrite_ttl: strToInt(cfg.rewrite_ttl), client_subnet: cfg.client_subnet, method: cfg.reject_method, no_drop: strToBool(cfg.reject_no_drop), rcode: cfg.predefined_rcode, answer: cfg.predefined_answer, ns: cfg.predefined_ns, extra: cfg.predefined_extra }); }); if (isEmpty(config.dns.rules)) config.dns.rules = null; config.dns.final = get_resolver(dns_default_server); } /* DNS end */ /* Inbound start */ config.inbounds = []; push(config.inbounds, { type: 'direct', tag: 'dns-in', listen: '::', listen_port: int(dns_port) }); push(config.inbounds, { type: 'mixed', tag: 'mixed-in', listen: '::', listen_port: int(mixed_port), udp_timeout: strToTime(udp_timeout), sniff: true, sniff_override_destination: strToBool(sniff_override), set_system_proxy: false }); if (match(proxy_mode, /redirect/)) push(config.inbounds, { type: 'redirect', tag: 'redirect-in', listen: '::', listen_port: int(redirect_port), sniff: true, sniff_override_destination: strToBool(sniff_override) }); if (match(proxy_mode, /tproxy/)) push(config.inbounds, { type: 'tproxy', tag: 'tproxy-in', listen: '::', listen_port: int(tproxy_port), network: 'udp', udp_timeout: strToTime(udp_timeout), sniff: true, sniff_override_destination: strToBool(sniff_override) }); if (match(proxy_mode, /tun/)) push(config.inbounds, { type: 'tun', tag: 'tun-in', interface_name: tun_name, address: (ipv6_support === '1') ? [tun_addr4, tun_addr6] : [tun_addr4], mtu: strToInt(tun_mtu), auto_route: false, endpoint_independent_nat: strToBool(endpoint_independent_nat), udp_timeout: strToTime(udp_timeout), stack: tcpip_stack, sniff: true, sniff_override_destination: strToBool(sniff_override) }); /* Inbound end */ /* Outbound start */ config.endpoints = []; /* Default outbounds */ config.outbounds = [ { type: 'direct', tag: 'direct-out', routing_mark: strToInt(self_mark) }, { type: 'block', tag: 'block-out' } ]; /* Main outbounds */ if (!isEmpty(main_node)) { let urltest_nodes = []; if (main_node === 'urltest') { const main_urltest_nodes = uci.get(uciconfig, ucimain, 'main_urltest_nodes') || []; const main_urltest_interval = uci.get(uciconfig, ucimain, 'main_urltest_interval'); const main_urltest_tolerance = uci.get(uciconfig, ucimain, 'main_urltest_tolerance'); push(config.outbounds, { type: 'urltest', tag: 'main-out', outbounds: map(main_urltest_nodes, (k) => `cfg-${k}-out`), interval: strToTime(main_urltest_interval), tolerance: strToInt(main_urltest_tolerance), idle_timeout: (strToInt(main_urltest_interval) > 1800) ? `${main_urltest_interval * 2}s` : null, }); urltest_nodes = main_urltest_nodes; } else { const main_node_cfg = uci.get_all(uciconfig, main_node) || {}; if (main_node_cfg.type === 'wireguard') { push(config.endpoints, generate_endpoint(main_node_cfg)); config.endpoints[length(config.endpoints)-1].tag = 'main-out'; } else { push(config.outbounds, generate_outbound(main_node_cfg)); config.outbounds[length(config.outbounds)-1].tag = 'main-out'; } } if (main_udp_node === 'urltest') { const main_udp_urltest_nodes = uci.get(uciconfig, ucimain, 'main_udp_urltest_nodes') || []; const main_udp_urltest_interval = uci.get(uciconfig, ucimain, 'main_udp_urltest_interval'); const main_udp_urltest_tolerance = uci.get(uciconfig, ucimain, 'main_udp_urltest_tolerance'); push(config.outbounds, { type: 'urltest', tag: 'main-udp-out', outbounds: map(main_udp_urltest_nodes, (k) => `cfg-${k}-out`), interval: strToTime(main_udp_urltest_interval), tolerance: strToInt(main_udp_urltest_tolerance), idle_timeout: (strToInt(main_udp_urltest_interval) > 1800) ? `${main_udp_urltest_interval * 2}s` : null, }); urltest_nodes = [...urltest_nodes, ...filter(main_udp_urltest_nodes, (l) => !~index(urltest_nodes, l))]; } else if (dedicated_udp_node) { const main_udp_node_cfg = uci.get_all(uciconfig, main_udp_node) || {}; if (main_udp_node_cfg.type === 'wireguard') { push(config.endpoints, generate_endpoint(main_udp_node_cfg)); config.endpoints[length(config.endpoints)-1].tag = 'main-udp-out'; } else { push(config.outbounds, generate_outbound(main_udp_node_cfg)); config.outbounds[length(config.outbounds)-1].tag = 'main-udp-out'; } } for (let i in urltest_nodes) { const urltest_node = uci.get_all(uciconfig, i) || {}; if (urltest_node.type === 'wireguard') { push(config.endpoints, generate_endpoint(urltest_node)); config.endpoints[length(config.endpoints)-1].tag = 'cfg-' + i + '-out'; } else { push(config.outbounds, generate_outbound(urltest_node)); config.outbounds[length(config.outbounds)-1].tag = 'cfg-' + i + '-out'; } } } else if (!isEmpty(default_outbound)) { let urltest_nodes = [], routing_nodes = []; uci.foreach(uciconfig, uciroutingnode, (cfg) => { if (cfg.enabled !== '1') return; if (cfg.node === 'urltest') { push(config.outbounds, { type: 'urltest', tag: 'cfg-' + cfg['.name'] + '-out', outbounds: map(cfg.urltest_nodes, (k) => `cfg-${k}-out`), url: cfg.urltest_url, interval: strToTime(cfg.urltest_interval), tolerance: strToInt(cfg.urltest_tolerance), idle_timeout: strToTime(cfg.urltest_idle_timeout), interrupt_exist_connections: strToBool(cfg.urltest_interrupt_exist_connections) }); urltest_nodes = [...urltest_nodes, ...filter(cfg.urltest_nodes, (l) => !~index(urltest_nodes, l))]; } else { const outbound = uci.get_all(uciconfig, cfg.node) || {}; if (outbound.type === 'wireguard') { push(config.endpoints, generate_endpoint(outbound)); config.endpoints[length(config.endpoints)-1].bind_interface = cfg.bind_interface; config.endpoints[length(config.endpoints)-1].detour = get_outbound(cfg.outbound); if (cfg.domain_resolver) config.endpoints[length(config.endpoints)-1].domain_resolver = { server: get_resolver(cfg.domain_resolver), strategy: cfg.domain_strategy }; } else { push(config.outbounds, generate_outbound(outbound)); config.outbounds[length(config.outbounds)-1].bind_interface = cfg.bind_interface; config.outbounds[length(config.outbounds)-1].detour = get_outbound(cfg.outbound); if (cfg.domain_resolver) config.outbounds[length(config.outbounds)-1].domain_resolver = { server: get_resolver(cfg.domain_resolver), strategy: cfg.domain_strategy }; } push(routing_nodes, cfg.node); } }); for (let i in filter(urltest_nodes, (l) => !~index(routing_nodes, l))) { const urltest_node = uci.get_all(uciconfig, i) || {}; if (urltest_node.type === 'wireguard') push(config.endpoints, generate_endpoint(urltest_node)); else push(config.outbounds, generate_outbound(urltest_node)); } } if (isEmpty(config.endpoints)) config.endpoints = null; /* Outbound end */ /* Routing rules start */ /* Default settings */ config.route = { rules: [ { inbound: 'dns-in', action: 'hijack-dns' } /* * leave for sing-box 1.13.0 * { * action: 'sniff' * } */ ], rule_set: [], auto_detect_interface: isEmpty(default_interface) ? true : null, default_interface: default_interface }; /* Routing rules */ if (!isEmpty(main_node)) { /* Avoid DNS loop */ config.route.default_domain_resolver = { action: 'route', server: (routing_mode === 'bypass_mainland_china') ? 'china-dns' : 'default-dns', strategy: (ipv6_support !== '1') ? 'prefer_ipv4' : null }; /* Direct list */ if (length(direct_domain_list)) push(config.route.rules, { rule_set: 'direct-domain', action: 'route', outbound: 'direct-out' }); /* Main UDP out */ if (dedicated_udp_node) push(config.route.rules, { network: 'udp', action: 'route', outbound: 'main-udp-out' }); config.route.final = 'main-out'; /* Rule set */ /* Direct list */ if (length(direct_domain_list)) push(config.route.rule_set, { type: 'inline', tag: 'direct-domain', rules: [ { domain_keyword: direct_domain_list, } ] }); /* Proxy list */ if (length(proxy_domain_list)) push(config.route.rule_set, { type: 'inline', tag: 'proxy-domain', rules: [ { domain_keyword: proxy_domain_list, } ] }); if (routing_mode === 'bypass_mainland_china') { push(config.route.rule_set, { type: 'remote', tag: 'geoip-cn', format: 'binary', url: 'https://fastly.jsdelivr.net/gh/1715173329/IPCIDR-CHINA@rule-set/cn.srs', download_detour: 'main-out' }); push(config.route.rule_set, { type: 'remote', tag: 'geosite-cn', format: 'binary', url: 'https://fastly.jsdelivr.net/gh/1715173329/sing-geosite@rule-set-unstable/geosite-geolocation-cn.srs', download_detour: 'main-out' }); push(config.route.rule_set, { type: 'remote', tag: 'geosite-noncn', format: 'binary', url: 'https://fastly.jsdelivr.net/gh/1715173329/sing-geosite@rule-set-unstable/geosite-geolocation-!cn.srs', download_detour: 'main-out' }); } if (isEmpty(config.route.rule_set)) config.route.rule_set = null; } else if (!isEmpty(default_outbound)) { config.route.default_domain_resolver = { action: 'resolve', server: get_resolver(default_outbound_dns) }; if (domain_strategy) push(config.route.rules, { action: 'resolve', strategy: domain_strategy }); uci.foreach(uciconfig, uciroutingrule, (cfg) => { if (cfg.enabled !== '1') return null; push(config.route.rules, { ip_version: strToInt(cfg.ip_version), protocol: cfg.protocol, network: cfg.network, domain: cfg.domain, domain_suffix: cfg.domain_suffix, domain_keyword: cfg.domain_keyword, domain_regex: cfg.domain_regex, source_ip_cidr: cfg.source_ip_cidr, source_ip_is_private: strToBool(cfg.source_ip_is_private), ip_cidr: cfg.ip_cidr, ip_is_private: strToBool(cfg.ip_is_private), source_port: parse_port(cfg.source_port), source_port_range: cfg.source_port_range, port: parse_port(cfg.port), port_range: cfg.port_range, process_name: cfg.process_name, process_path: cfg.process_path, process_path_regex: cfg.process_path_regex, user: cfg.user, rule_set: get_ruleset(cfg.rule_set), rule_set_ip_cidr_match_source: strToBool(cfg.rule_set_ip_cidr_match_source), rule_set_ip_cidr_accept_empty: strToBool(cfg.rule_set_ip_cidr_accept_empty), invert: strToBool(cfg.invert), action: cfg.action, outbound: get_outbound(cfg.outbound), override_address: cfg.override_address, override_port: strToInt(cfg.override_port), udp_disable_domain_unmapping: strToBool(cfg.udp_disable_domain_unmapping), udp_connect: strToBool(cfg.udp_connect), udp_timeout: strToTime(cfg.udp_timeout), tls_fragment: strToBool(cfg.tls_fragment), tls_fragment_fallback_delay: strToTime(cfg.tls_fragment_fallback_delay), tls_record_fragment: strToBool(cfg.tls_record_fragment) }); }); config.route.final = get_outbound(default_outbound); /* Rule set */ uci.foreach(uciconfig, uciruleset, (cfg) => { if (cfg.enabled !== '1') return null; push(config.route.rule_set, { type: cfg.type, tag: 'cfg-' + cfg['.name'] + '-rule', format: cfg.format, path: cfg.path, url: cfg.url, download_detour: get_outbound(cfg.outbound), update_interval: cfg.update_interval }); }); } /* Routing rules end */ /* Experimental start */ if (routing_mode in ['bypass_mainland_china', 'custom']) { config.experimental = { cache_file: { enabled: true, path: RUN_DIR + '/cache.db', store_rdrc: strToBool(cache_file_store_rdrc), rdrc_timeout: strToTime(cache_file_rdrc_timeout), } }; } /* Experimental end */ system('mkdir -p ' + RUN_DIR); writefile(RUN_DIR + '/sing-box-c.json', sprintf('%.J\n', removeBlankAttrs(config))); ================================================ FILE: luci-app-homeproxy/root/etc/homeproxy/scripts/generate_server.uc ================================================ #!/usr/bin/ucode /* * SPDX-License-Identifier: GPL-2.0-only * * Copyright (C) 2023 ImmortalWrt.org */ 'use strict'; import { writefile } from 'fs'; import { cursor } from 'uci'; import { isEmpty, strToBool, strToInt, strToTime, removeBlankAttrs, HP_DIR, RUN_DIR } from 'homeproxy'; /* UCI config start */ const uci = cursor(); const uciconfig = 'homeproxy'; uci.load(uciconfig); const uciserver = 'server'; const log_level = uci.get(uciconfig, uciserver, 'log_level') || 'warn'; /* UCI config end */ const config = {}; /* Log */ config.log = { disabled: false, level: log_level, output: RUN_DIR + '/sing-box-s.log', timestamp: true }; config.inbounds = []; uci.foreach(uciconfig, uciserver, (cfg) => { if (cfg.enabled !== '1') return; push(config.inbounds, { type: cfg.type, tag: 'cfg-' + cfg['.name'] + '-in', listen: cfg.address || '::', listen_port: strToInt(cfg.port), bind_interface: cfg.bind_interface, reuse_addr: strToBool(cfg.reuse_addr), tcp_fast_open: strToBool(cfg.tcp_fast_open), tcp_multi_path: strToBool(cfg.tcp_multi_path), udp_fragment: strToBool(cfg.udp_fragment), udp_timeout: strToTime(cfg.udp_timeout), network: cfg.network, /* AnyTLS */ padding_scheme: cfg.anytls_padding_scheme, /* Hysteria */ up_mbps: strToInt(cfg.hysteria_up_mbps), down_mbps: strToInt(cfg.hysteria_down_mbps), obfs: cfg.hysteria_obfs_type ? { type: cfg.hysteria_obfs_type, password: cfg.hysteria_obfs_password } : cfg.hysteria_obfs_password, recv_window_conn: strToInt(cfg.hysteria_recv_window_conn), recv_window_client: strToInt(cfg.hysteria_revc_window_client), max_conn_client: strToInt(cfg.hysteria_max_conn_client), disable_mtu_discovery: strToBool(cfg.hysteria_disable_mtu_discovery), ignore_client_bandwidth: strToBool(cfg.hysteria_ignore_client_bandwidth), masquerade: cfg.hysteria_masquerade, /* Shadowsocks */ method: (cfg.type === 'shadowsocks') ? cfg.shadowsocks_encrypt_method : null, password: (cfg.type in ['shadowsocks', 'shadowtls']) ? cfg.password : null, /* Tuic */ congestion_control: cfg.tuic_congestion_control, auth_timeout: strToTime(cfg.tuic_auth_timeout), zero_rtt_handshake: strToBool(cfg.tuic_enable_zero_rtt), heartbeat: strToTime(cfg.tuic_heartbeat), /* AnyTLS / HTTP / Hysteria (2) / Mixed / Socks / Trojan / Tuic / VLESS / VMess */ users: (cfg.type !== 'shadowsocks') ? [ { name: !(cfg.type in ['http', 'mixed', 'naive', 'socks']) ? 'cfg-' + cfg['.name'] + '-server' : null, username: cfg.username, password: cfg.password, /* Hysteria */ auth: (cfg.hysteria_auth_type === 'base64') ? cfg.hysteria_auth_payload : null, auth_str: (cfg.hysteria_auth_type === 'string') ? cfg.hysteria_auth_payload : null, /* Tuic */ uuid: cfg.uuid, /* VLESS / VMess */ flow: cfg.vless_flow, alterId: strToInt(cfg.vmess_alterid) } ] : null, multiplex: (cfg.multiplex === '1') ? { enabled: true, padding: strToBool(cfg.multiplex_padding), brutal: (cfg.multiplex_brutal === '1') ? { enabled: true, up_mbps: strToInt(cfg.multiplex_brutal_up), down_mbps: strToInt(cfg.multiplex_brutal_down) } : null } : null, tls: (cfg.tls === '1') ? { enabled: true, server_name: cfg.tls_sni, alpn: cfg.tls_alpn, min_version: cfg.tls_min_version, max_version: cfg.tls_max_version, cipher_suites: cfg.tls_cipher_suites, certificate_path: cfg.tls_cert_path, key_path: cfg.tls_key_path, acme: (cfg.tls_acme === '1') ? { domain: cfg.tls_acme_domain, data_directory: HP_DIR + '/certs', default_server_name: cfg.tls_acme_dsn, email: cfg.tls_acme_email, provider: cfg.tls_acme_provider, disable_http_challenge: strToBool(cfg.tls_acme_dhc), disable_tls_alpn_challenge: (cfg.tls_acme_dtac), alternative_http_port: strToInt(cfg.tls_acme_ahp), alternative_tls_port: strToInt(cfg.tls_acme_atp), external_account: (cfg.tls_acme_external_account === '1') ? { key_id: cfg.tls_acme_ea_keyid, mac_key: cfg.tls_acme_ea_mackey } : null, dns01_challenge: (cfg.tls_dns01_challenge === '1') ? { provider: cfg.tls_dns01_provider, access_key_id: cfg.tls_dns01_ali_akid, access_key_secret: cfg.tls_dns01_ali_aksec, region_id: cfg.tls_dns01_ali_rid, api_token: cfg.tls_dns01_cf_api_token } : null } : null, ech: (cfg.tls_ech_key) ? { enabled: true, key: split(cfg.tls_ech_key, '\n'), // config: split(cfg.tls_ech_config, '\n') } : null, reality: (cfg.tls_reality === '1') ? { enabled: true, private_key: cfg.tls_reality_private_key, short_id: cfg.tls_reality_short_id, max_time_difference: strToTime(cfg.tls_reality_max_time_difference), handshake: { server: cfg.tls_reality_server_addr, server_port: strToInt(cfg.tls_reality_server_port) } } : null } : null, transport: !isEmpty(cfg.transport) ? { type: cfg.transport, host: cfg.http_host || cfg.httpupgrade_host, path: cfg.http_path || cfg.ws_path, headers: cfg.ws_host ? { Host: cfg.ws_host } : null, method: cfg.http_method, max_early_data: strToInt(cfg.websocket_early_data), early_data_header_name: cfg.websocket_early_data_header, service_name: cfg.grpc_servicename, idle_timeout: strToTime(cfg.http_idle_timeout), ping_timeout: strToTime(cfg.http_ping_timeout) } : null }); }); if (length(config.inbounds) === 0) exit(1); system('mkdir -p ' + RUN_DIR); writefile(RUN_DIR + '/sing-box-s.json', sprintf('%.J\n', removeBlankAttrs(config))); ================================================ FILE: luci-app-homeproxy/root/etc/homeproxy/scripts/homeproxy.uc ================================================ /* * SPDX-License-Identifier: GPL-2.0-only * * Copyright (C) 2023 ImmortalWrt.org */ import { mkstemp } from 'fs'; import { urldecode_params } from 'luci.http'; /* Global variables start */ export const HP_DIR = '/etc/homeproxy'; export const RUN_DIR = '/var/run/homeproxy'; /* Global variables end */ /* Utilities start */ /* Kanged from luci-app-commands */ export function shellQuote(s) { return `'${replace(s, "'", "'\\''")}'`; }; export function isBinary(str) { for (let off = 0, byte = ord(str); off < length(str); byte = ord(str, ++off)) if (byte <= 8 || (byte >= 14 && byte <= 31)) return true; return false; }; export function executeCommand(...args) { let outfd = mkstemp(); let errfd = mkstemp(); const exitcode = system(`${join(' ', args)} >&${outfd.fileno()} 2>&${errfd.fileno()}`); outfd.seek(0); errfd.seek(0); const stdout = outfd.read(1024 * 512) ?? ''; const stderr = errfd.read(1024 * 512) ?? ''; outfd.close(); errfd.close(); const binary = isBinary(stdout); return { command: join(' ', args), stdout: binary ? null : stdout, stderr, exitcode, binary }; }; export function getTime(epoch) { const local_time = localtime(epoch); return replace(replace(sprintf( '%d-%2d-%2d@%2d:%2d:%2d', local_time.year, local_time.mon, local_time.mday, local_time.hour, local_time.min, local_time.sec ), ' ', '0'), '@', ' '); }; export function wGET(url, ua) { if (!url || type(url) !== 'string') return null; if (!ua) ua = 'Wget/1.21 (HomeProxy, like v2rayN)'; const output = executeCommand(`/usr/bin/wget -qO- --user-agent ${shellQuote(ua)} --timeout=10 ${shellQuote(url)}`) || {}; return trim(output.stdout); }; /* Utilities end */ /* String helper start */ export function isEmpty(res) { return !res || res === 'nil' || (type(res) in ['array', 'object'] && length(res) === 0); }; export function strToBool(str) { return (str === '1') || null; }; export function strToInt(str) { return !isEmpty(str) ? (int(str) || null) : null; }; export function strToTime(str) { return !isEmpty(str) ? (str + 's') : null; }; export function removeBlankAttrs(res) { let content; if (type(res) === 'object') { content = {}; map(keys(res), (k) => { if (type(res[k]) in ['array', 'object']) content[k] = removeBlankAttrs(res[k]); else if (res[k] !== null && res[k] !== '') content[k] = res[k]; }); } else if (type(res) === 'array') { content = []; map(res, (k, i) => { if (type(k) in ['array', 'object']) push(content, removeBlankAttrs(k)); else if (k !== null && k !== '') push(content, k); }); } else return res; return content; }; export function validateHostname(hostname) { return (match(hostname, /^[a-zA-Z0-9_]+$/) != null || (match(hostname, /^[a-zA-Z0-9_][a-zA-Z0-9_%-.]*[a-zA-Z0-9]$/) && match(hostname, /[^0-9.]/))); }; export function validation(datatype, data) { if (!datatype || !data) return null; const ret = system(`/sbin/validate_data ${shellQuote(datatype)} ${shellQuote(data)} 2>/dev/null`); return (ret === 0); }; /* String helper end */ /* String parser start */ export function decodeBase64Str(str) { if (isEmpty(str)) return null; str = trim(str); str = replace(str, '_', '/'); str = replace(str, '-', '+'); const padding = length(str) % 4; if (padding) str = str + substr('====', padding); return b64dec(str); }; export function parseURL(url) { if (type(url) !== 'string') return null; const services = { http: '80', https: '443' }; const objurl = {}; objurl.href = url; url = replace(url, /#(.+)$/, (_, val) => { objurl.hash = val; return ''; }); url = replace(url, /^(\w[A-Za-z0-9\+\-\.]+):/, (_, val) => { objurl.protocol = val; return ''; }); url = replace(url, /\?(.+)/, (_, val) => { objurl.search = val; objurl.searchParams = urldecode_params(val); return ''; }); url = replace(url, /^\/\/([^\/]+)/, (_, val) => { val = replace(val, /^([^@]+)@/, (_, val) => { objurl.userinfo = val; return ''; }); val = replace(val, /:(\d+)$/, (_, val) => { objurl.port = val; return ''; }); if (validation('ip4addr', val) || validation('ip6addr', replace(val, /\[|\]/g, '')) || validation('hostname', val)) objurl.hostname = val; return ''; }); objurl.pathname = url || '/'; if (!objurl.protocol || !objurl.hostname) return null; if (objurl.userinfo) { objurl.userinfo = replace(objurl.userinfo, /:(.+)$/, (_, val) => { objurl.password = val; return ''; }); if (match(objurl.userinfo, /^[A-Za-z0-9\+\-\_\.]+$/)) { objurl.username = objurl.userinfo; delete objurl.userinfo; } else { delete objurl.userinfo; delete objurl.password; } }; if (!objurl.port) objurl.port = services[objurl.protocol]; objurl.host = objurl.hostname + (objurl.port ? `:${objurl.port}` : ''); objurl.origin = `${objurl.protocol}://${objurl.host}`; return objurl; }; /* String parser end */ ================================================ FILE: luci-app-homeproxy/root/etc/homeproxy/scripts/migrate_config.uc ================================================ #!/usr/bin/ucode /* * SPDX-License-Identifier: GPL-2.0-only * * Copyright (C) 2025 ImmortalWrt.org */ 'use strict'; import { cursor } from 'uci'; import { isEmpty, parseURL } from 'homeproxy'; const uci = cursor(); const uciconfig = 'homeproxy'; uci.load(uciconfig); const uciinfra = 'infra', ucimigration = 'migration', ucimain = 'config', ucinode = 'node', ucidns = 'dns', ucidnsserver = 'dns_server', ucidnsrule = 'dns_rule', ucirouting = 'routing', uciroutingnode = 'routing_node', uciroutingrule = 'routing_rule', uciserver = 'server'; /* chinadns-ng has been removed */ if (uci.get(uciconfig, uciinfra, 'china_dns_port')) uci.delete(uciconfig, uciinfra, 'china_dns_port'); /* chinadns server now only accepts single server */ const china_dns_server = uci.get(uciconfig, ucimain, 'china_dns_server'); if (type(china_dns_server) === 'array') { uci.set(uciconfig, ucimain, 'china_dns_server', china_dns_server[0]); } else { if (china_dns_server === 'wan_114') uci.set(uciconfig, ucimain, 'china_dns_server', '114.114.114.114'); else if (match(china_dns_server, /,/)) uci.set(uciconfig, ucimain, 'china_dns_server', split(china_dns_server, ',')[0]); } /* github_token option has been moved to config section */ const github_token = uci.get(uciconfig, uciinfra, 'github_token'); if (github_token) { uci.set(uciconfig, ucimain, 'github_token', github_token); uci.delete(uciconfig, uciinfra, 'github_token') } /* ntp_server was introduced */ if (!uci.get(uciconfig, uciinfra, 'ntp_server')) uci.set(uciconfig, uciinfra, 'ntp_server', 'nil'); /* tun_gso was deprecated in sb 1.11 */ if (!isEmpty(uci.get(uciconfig, uciinfra, 'tun_gso'))) uci.delete(uciconfig, uciinfra, 'tun_gso'); /* create migration section */ if (!uci.get(uciconfig, ucimigration)) uci.set(uciconfig, ucimigration, uciconfig); /* delete old crontab command */ const migration_crontab = uci.get(uciconfig, ucimigration, 'crontab'); if (!migration_crontab) { system('sed -i "/update_crond.sh/d" "/etc/crontabs/root" 2>"/dev/null"'); uci.set(uciconfig, ucimigration, 'crontab', '1'); } /* log_level was introduced */ if (isEmpty(uci.get(uciconfig, ucimain, 'log_level'))) uci.set(uciconfig, ucimain, 'log_level', 'warn'); if (isEmpty(uci.get(uciconfig, uciserver, 'log_level'))) uci.set(uciconfig, uciserver, 'log_level', 'warn'); /* empty value defaults to all ports now */ if (uci.get(uciconfig, ucimain, 'routing_port') === 'all') uci.delete(uciconfig, ucimain, 'routing_port'); /* experimental section was removed */ if (uci.get(uciconfig, 'experimental')) uci.delete(uciconfig, 'experimental'); /* block-dns was removed from built-in dns servers */ const default_dns_server = uci.get(uciconfig, ucidns, 'default_server'); if (default_dns_server === 'block-dns') { /* append a rule at last to block all DNS queries */ uci.set(uciconfig, '_migration_dns_final_block', ucidnsrule); uci.set(uciconfig, '_migration_dns_final_block', 'label', 'migration_final_block_dns'); uci.set(uciconfig, '_migration_dns_final_block', 'enabled', '1'); uci.set(uciconfig, '_migration_dns_final_block', 'mode', 'default'); uci.set(uciconfig, '_migration_dns_final_block', 'action', 'reject'); uci.set(uciconfig, ucidns, 'default_server', 'default-dns'); } const dns_server_migration = {}; /* DNS servers options */ uci.foreach(uciconfig, ucidnsserver, (cfg) => { /* legacy format was deprecated in sb 1.12 */ if (cfg.address) { const addr = parseURL((!match(cfg.address, /:\/\//) ? 'udp://' : '') + (validation('ip6addr', cfg.address) ? `[${cfg.address}]` : cfg.address)); /* RCode was moved into DNS rules */ if (addr.protocol === 'rcode') { dns_server_migration[cfg['.name']] = { action: 'predefined' }; switch (addr.hostname) { case 'success': dns_server_migration[cfg['.name']].rcode = 'NOERROR'; break; case 'format_error': dns_server_migration[cfg['.name']].rcode = 'FORMERR'; break; case 'server_failure': dns_server_migration[cfg['.name']].rcode = 'SERVFAIL'; break; case 'name_error': dns_server_migration[cfg['.name']].rcode = 'NXDOMAIN'; break; case 'not_implemented': dns_server_migration[cfg['.name']].rcode = 'NOTIMP'; break; case 'refused': default: dns_server_migration[cfg['.name']].rcode = 'REFUSED'; break; } uci.delete(uciconfig, cfg['.name']); return; } uci.set(uciconfig, cfg['.name'], 'type', addr.protocol); uci.set(uciconfig, cfg['.name'], 'server', addr.hostname); uci.set(uciconfig, cfg['.name'], 'server_port', addr.port); uci.set(uciconfig, cfg['.name'], 'path', (addr.pathname !== '/') ? addr.pathname : null); uci.delete(uciconfig, cfg['.name'], 'address'); } if (cfg.strategy) { if (cfg['.name'] === default_dns_server) uci.set(uciconfig, ucidns, 'default_strategy', cfg.strategy); dns_server_migration[cfg['.name']] = { strategy: cfg.strategy }; uci.delete(uciconfig, cfg['.name'], 'strategy'); } if (cfg.client_subnet) { if (cfg['.name'] === default_dns_server) uci.set(uciconfig, ucidns, 'client_subnet', cfg.client_subnet); if (isEmpty(dns_server_migration[cfg['.name']])) dns_server_migration[cfg['.name']] = {}; dns_server_migration[cfg['.name']].client_subnet = cfg.client_subnet; uci.delete(uciconfig, cfg['.name'], 'client_subnet'); } }); /* DNS rules options */ uci.foreach(uciconfig, ucidnsrule, (cfg) => { /* outbound was removed in sb 1.12 */ if (cfg.outbound) { uci.delete(uciconfig, cfg['.name']); if (!cfg.enabled) return; map(cfg.outbound, (outbound) => { switch (outbound) { case 'direct-out': case 'block-out': break; case 'any-out': uci.set(uciconfig, ucirouting, 'default_outbound_dns', cfg.server); break; default: uci.set(uciconfig, cfg.outbound, 'domain_resolver', cfg.server); break; } }); return; } /* rule_set_ipcidr_match_source was renamed in sb 1.10 */ if (cfg.rule_set_ipcidr_match_source === '1') uci.rename(uciconfig, cfg['.name'], 'rule_set_ipcidr_match_source', 'rule_set_ip_cidr_match_source'); /* block-dns was moved into action in sb 1.11 */ if (cfg.server === 'block-dns') { uci.set(uciconfig, cfg['.name'], 'action', 'reject'); uci.delete(uciconfig, cfg['.name'], 'server'); } else if (!cfg.action) { /* add missing 'action' field */ uci.set(uciconfig, cfg['.name'], 'action', 'route'); } /* strategy and client_subnet were moved into dns rules */ if (dns_server_migration[cfg.server]) { if (dns_server_migration[cfg.server].strategy) uci.set(uciconfig, cfg['.name'], 'strategy', dns_server_migration[cfg.server].strategy); if (dns_server_migration[cfg.server].client_subnet) uci.set(uciconfig, cfg['.name'], 'client_subnet', dns_server_migration[cfg.server].client_subnet); if (dns_server_migration[cfg.server].rcode) { uci.set(uciconfig, cfg['.name'], 'action', 'predefined'); uci.set(uciconfig, cfg['.name'], 'rcode', dns_server_migration[cfg.server].rcode); uci.delete(uciconfig, cfg['.name'], 'server'); } } }); /* nodes options */ uci.foreach(uciconfig, ucinode, (cfg) => { /* tls_ech_tls_disable_drs is useless and deprecated in sb 1.12 */ if (!isEmpty(cfg.tls_ech_tls_disable_drs)) uci.delete(uciconfig, cfg['.name'], 'tls_ech_tls_disable_drs'); /* tls_ech_enable_pqss is useless and deprecated in sb 1.12 */ if (!isEmpty(cfg.tls_ech_enable_pqss)) uci.delete(uciconfig, cfg['.name'], 'tls_ech_enable_pqss'); /* wireguard_gso was deprecated in sb 1.11 */ if (!isEmpty(cfg.wireguard_gso)) uci.delete(uciconfig, cfg['.name'], 'wireguard_gso'); }); /* routing rules options */ uci.foreach(uciconfig, uciroutingrule, (cfg) => { /* rule_set_ipcidr_match_source was renamed in sb 1.10 */ if (cfg.rule_set_ipcidr_match_source === '1') uci.rename(uciconfig, cfg['.name'], 'rule_set_ipcidr_match_source', 'rule_set_ip_cidr_match_source'); /* block-out was moved into action in sb 1.11 */ if (cfg.outbound === 'block-out') { uci.set(uciconfig, cfg['.name'], 'action', 'reject'); uci.delete(uciconfig, cfg['.name'], 'outbound'); } else if (!cfg.action) { /* add missing 'action' field */ uci.set(uciconfig, cfg['.name'], 'action', 'route'); } }); /* server options */ /* auto_firewall was moved into server options */ const auto_firewall = uci.get(uciconfig, uciserver, 'auto_firewall'); if (!isEmpty(auto_firewall)) uci.delete(uciconfig, uciserver, 'auto_firewall'); uci.foreach(uciconfig, uciserver, (cfg) => { /* auto_firewall was moved into server options */ if (auto_firewall === '1') uci.set(uciconfig, cfg['.name'], 'firewall' , '1'); /* sniff_override was deprecated in sb 1.11 */ if (!isEmpty(cfg.sniff_override)) uci.delete(uciconfig, cfg['.name'], 'sniff_override'); /* domain_strategy is now pointless without sniff override */ if (!isEmpty(cfg.domain_strategy)) uci.delete(uciconfig, cfg['.name'], 'domain_strategy'); }); if (!isEmpty(uci.changes(uciconfig))) uci.commit(uciconfig); ================================================ FILE: luci-app-homeproxy/root/etc/homeproxy/scripts/update_crond.sh ================================================ #!/bin/sh # SPDX-License-Identifier: GPL-2.0-only # # Copyright (C) 2023 ImmortalWrt.org SCRIPTS_DIR="/etc/homeproxy/scripts" for i in "china_ip4" "china_ip6" "gfw_list" "china_list"; do "$SCRIPTS_DIR"/update_resources.sh "$i" done "$SCRIPTS_DIR"/update_subscriptions.uc ================================================ FILE: luci-app-homeproxy/root/etc/homeproxy/scripts/update_resources.sh ================================================ #!/bin/sh # SPDX-License-Identifier: GPL-2.0-only # # Copyright (C) 2022-2025 ImmortalWrt.org NAME="homeproxy" RESOURCES_DIR="/etc/$NAME/resources" mkdir -p "$RESOURCES_DIR" RUN_DIR="/var/run/$NAME" LOG_PATH="$RUN_DIR/$NAME.log" mkdir -p "$RUN_DIR" log() { echo -e "$(date "+%Y-%m-%d %H:%M:%S") $*" >> "$LOG_PATH" } to_upper() { echo -e "$1" | tr "[a-z]" "[A-Z]" } check_list_update() { local listtype="$1" local listrepo="$2" local listref="$3" local listname="$4" local lock="$RUN_DIR/update_resources-$listtype.lock" local github_token="$(uci -q get homeproxy.config.github_token)" local wget="wget --timeout=10 -q" exec 200>"$lock" if ! flock -n 200 &> "/dev/null"; then log "[$(to_upper "$listtype")] A task is already running." return 2 fi [ -z "$github_token" ] || github_token="--header=Authorization: Bearer $github_token" local list_info="$($wget "${github_token:--q}" -O- "https://api.github.com/repos/$listrepo/commits?sha=$listref&path=$listname&per_page=1")" local list_sha="$(echo -e "$list_info" | jsonfilter -qe "@[0].sha")" local list_ver="$(echo -e "$list_info" | jsonfilter -qe "@[0].commit.message" | grep -Eo "[0-9-]+" | tr -d '-')" if [ -z "$list_sha" ] || [ -z "$list_ver" ]; then log "[$(to_upper "$listtype")] Failed to get the latest version, please retry later." return 1 fi local local_list_ver="$(cat "$RESOURCES_DIR/$listtype.ver" 2>"/dev/null" || echo "NOT FOUND")" if [ "$local_list_ver" = "$list_ver" ]; then log "[$(to_upper "$listtype")] Current version: $list_ver." log "[$(to_upper "$listtype")] You're already at the latest version." return 3 else log "[$(to_upper "$listtype")] Local version: $local_list_ver, latest version: $list_ver." fi if ! $wget "https://fastly.jsdelivr.net/gh/$listrepo@$list_sha/$listname" -O "$RUN_DIR/$listname" || [ ! -s "$RUN_DIR/$listname" ]; then rm -f "$RUN_DIR/$listname" log "[$(to_upper "$listtype")] Update failed." return 1 fi mv -f "$RUN_DIR/$listname" "$RESOURCES_DIR/$listtype.${listname##*.}" echo -e "$list_ver" > "$RESOURCES_DIR/$listtype.ver" log "[$(to_upper "$listtype")] Successfully updated." return 0 } case "$1" in "china_ip4") check_list_update "$1" "1715173329/IPCIDR-CHINA" "master" "ipv4.txt" ;; "china_ip6") check_list_update "$1" "1715173329/IPCIDR-CHINA" "master" "ipv6.txt" ;; "gfw_list") check_list_update "$1" "Loyalsoldier/v2ray-rules-dat" "release" "gfw.txt" ;; "china_list") check_list_update "$1" "Loyalsoldier/v2ray-rules-dat" "release" "direct-list.txt" && \ sed -i -e "s/full://g" -e "/:/d" "$RESOURCES_DIR/china_list.txt" ;; *) echo -e "Usage: $0 " exit 1 ;; esac ================================================ FILE: luci-app-homeproxy/root/etc/homeproxy/scripts/update_subscriptions.uc ================================================ #!/usr/bin/ucode /* * SPDX-License-Identifier: GPL-2.0-only * * Copyright (C) 2023 ImmortalWrt.org */ 'use strict'; import { md5 } from 'digest'; import { open } from 'fs'; import { connect } from 'ubus'; import { cursor } from 'uci'; import { urldecode, urlencode } from 'luci.http'; import { init_action } from 'luci.sys'; import { wGET, decodeBase64Str, getTime, isEmpty, parseURL, validation, HP_DIR, RUN_DIR } from 'homeproxy'; /* UCI config start */ const uci = cursor(); const uciconfig = 'homeproxy'; uci.load(uciconfig); const ucimain = 'config', ucinode = 'node', ucisubscription = 'subscription'; const allow_insecure = uci.get(uciconfig, ucisubscription, 'allow_insecure') || '0', filter_mode = uci.get(uciconfig, ucisubscription, 'filter_nodes') || 'disabled', filter_keywords = uci.get(uciconfig, ucisubscription, 'filter_keywords') || [], packet_encoding = uci.get(uciconfig, ucisubscription, 'packet_encoding') || 'xudp', subscription_urls = uci.get(uciconfig, ucisubscription, 'subscription_url') || [], user_agent = uci.get(uciconfig, ucisubscription, 'user_agent'), via_proxy = uci.get(uciconfig, ucisubscription, 'update_via_proxy') || '0'; const routing_mode = uci.get(uciconfig, ucimain, 'routing_mode') || 'bypass_mainalnd_china'; let main_node, main_udp_node; if (routing_mode !== 'custom') { main_node = uci.get(uciconfig, ucimain, 'main_node') || 'nil'; main_udp_node = uci.get(uciconfig, ucimain, 'main_udp_node') || 'nil'; } /* UCI config end */ /* String helper start */ function filter_check(name) { if (isEmpty(name) || filter_mode === 'disabled' || isEmpty(filter_keywords)) return false; let ret = false; for (let i in filter_keywords) { const patten = regexp(i); if (match(name, patten)) ret = true; } if (filter_mode === 'whitelist') ret = !ret; return ret; } /* String helper end */ /* Common var start */ const node_cache = {}, node_result = []; const ubus = connect(); const sing_features = ubus.call('luci.homeproxy', 'singbox_get_features', {}) || {}; /* Common var end */ /* Log */ system(`mkdir -p ${RUN_DIR}`); function log(...args) { const logfile = open(`${RUN_DIR}/homeproxy.log`, 'a'); logfile.write(`${getTime()} [SUBSCRIBE] ${join(' ', args)}\n`); logfile.close(); } function parse_uri(uri) { let config, url, params; if (type(uri) === 'object') { if (uri.nodetype === 'sip008') { /* https://shadowsocks.org/guide/sip008.html */ config = { label: uri.remarks, type: 'shadowsocks', address: uri.server, port: uri.server_port, shadowsocks_encrypt_method: uri.method, password: uri.password, shadowsocks_plugin: uri.plugin, shadowsocks_plugin_opts: uri.plugin_opts }; } } else if (type(uri) === 'string') { uri = split(trim(uri), '://'); switch (uri[0]) { case 'anytls': /* https://github.com/anytls/anytls-go/blob/v0.0.8/docs/uri_scheme.md */ url = parseURL('http://' + uri[1]) || {}; params = url.searchParams || {}; config = { label: url.hash ? urldecode(url.hash) : null, type: 'anytls', address: url.hostname, port: url.port, password: urldecode(url.username), tls: '1', tls_sni: params.sni, tls_insecure: (params.insecure === '1') ? '1' : '0' }; break; case 'http': case 'https': url = parseURL('http://' + uri[1]) || {}; config = { label: url.hash ? urldecode(url.hash) : null, type: 'http', address: url.hostname, port: url.port, username: url.username ? urldecode(url.username) : null, password: url.password ? urldecode(url.password) : null, tls: (uri[0] === 'https') ? '1' : '0' }; break; case 'hysteria': /* https://github.com/HyNetwork/hysteria/wiki/URI-Scheme */ url = parseURL('http://' + uri[1]) || {}; params = url.searchParams || {}; if (!sing_features.with_quic || (params.protocol && params.protocol !== 'udp')) { log(sprintf('Skipping unsupported %s node: %s.', uri[0], urldecode(url.hash) || url.hostname)); if (!sing_features.with_quic) log(sprintf('Please rebuild sing-box with %s support!', 'QUIC')); return null; } config = { label: url.hash ? urldecode(url.hash) : null, type: 'hysteria', address: url.hostname, port: url.port, hysteria_protocol: params.protocol || 'udp', hysteria_auth_type: params.auth ? 'string' : null, hysteria_auth_payload: params.auth, hysteria_obfs_password: params.obfsParam, hysteria_down_mbps: params.downmbps, hysteria_up_mbps: params.upmbps, tls: '1', tls_insecure: (params.insecure in ['true', '1']) ? '1' : '0', tls_sni: params.peer, tls_alpn: params.alpn }; break; case 'hysteria2': case 'hy2': /* https://v2.hysteria.network/docs/developers/URI-Scheme/ */ url = parseURL('http://' + uri[1]) || {}; params = url.searchParams || {}; if (!sing_features.with_quic) { log(sprintf('Skipping unsupported %s node: %s.', uri[0], urldecode(url.hash) || url.hostname)); log(sprintf('Please rebuild sing-box with %s support!', 'QUIC')); return null; } config = { label: url.hash ? urldecode(url.hash) : null, type: 'hysteria2', address: url.hostname, port: url.port, password: url.username ? ( urldecode(url.username + (url.password ? (':' + url.password) : '')) ) : null, hysteria_obfs_type: params.obfs, hysteria_obfs_password: params['obfs-password'], tls: '1', tls_insecure: (params.insecure === '1') ? '1' : '0', tls_sni: params.sni }; break; case 'socks': case 'socks4': case 'socks4a': case 'socsk5': case 'socks5h': url = parseURL('http://' + uri[1]) || {}; config = { label: url.hash ? urldecode(url.hash) : null, type: 'socks', address: url.hostname, port: url.port, username: url.username ? urldecode(url.username) : null, password: url.password ? urldecode(url.password) : null, socks_version: (match(uri[0], /4/)) ? '4' : '5' }; break; case 'ss': /* "Lovely" Shadowrocket format */ const ss_suri = split(uri[1], '#'); let ss_slabel = ''; if (length(ss_suri) <= 2) { if (length(ss_suri) === 2) ss_slabel = '#' + urlencode(ss_suri[1]); if (decodeBase64Str(ss_suri[0])) uri[1] = decodeBase64Str(ss_suri[0]) + ss_slabel; } /* Legacy format is not supported, it should be never appeared in modern subscriptions */ /* https://github.com/shadowsocks/shadowsocks-org/commit/78ca46cd6859a4e9475953ed34a2d301454f579e */ /* SIP002 format https://shadowsocks.org/guide/sip002.html */ url = parseURL('http://' + uri[1]) || {}; let ss_userinfo = {}; if (url.username && url.password) /* User info encoded with URIComponent */ ss_userinfo = [url.username, urldecode(url.password)]; else if (url.username) /* User info encoded with base64 */ ss_userinfo = split(decodeBase64Str(urldecode(url.username)), ':', 2); let ss_plugin, ss_plugin_opts; if (url.search && url.searchParams.plugin) { const ss_plugin_info = split(url.searchParams.plugin, ';', 2); ss_plugin = ss_plugin_info[0]; if (ss_plugin === 'simple-obfs') /* Fix non-standard plugin name */ ss_plugin = 'obfs-local'; ss_plugin_opts = ss_plugin_info[1]; } config = { label: url.hash ? urldecode(url.hash) : null, type: 'shadowsocks', address: url.hostname, port: url.port, shadowsocks_encrypt_method: ss_userinfo[0], password: ss_userinfo[1], shadowsocks_plugin: ss_plugin, shadowsocks_plugin_opts: ss_plugin_opts }; break; case 'trojan': /* https://p4gefau1t.github.io/trojan-go/developer/url/ */ url = parseURL('http://' + uri[1]) || {}; params = url.searchParams || {}; config = { label: url.hash ? urldecode(url.hash) : null, type: 'trojan', address: url.hostname, port: url.port, password: urldecode(url.username), transport: (params.type !== 'tcp') ? params.type : null, tls: '1', tls_sni: params.sni }; switch(params.type) { case 'grpc': config.grpc_servicename = params.serviceName; break; case 'ws': config.ws_host = params.host ? urldecode(params.host) : null; config.ws_path = params.path ? urldecode(params.path) : null; if (config.ws_path && match(config.ws_path, /\?ed=/)) { config.websocket_early_data_header = 'Sec-WebSocket-Protocol'; config.websocket_early_data = split(config.ws_path, '?ed=')[1]; config.ws_path = split(config.ws_path, '?ed=')[0]; } break; } break; case 'tuic': /* https://github.com/daeuniverse/dae/discussions/182 */ url = parseURL('http://' + uri[1]) || {}; params = url.searchParams || {}; if (!sing_features.with_quic) { log(sprintf('Skipping unsupported %s node: %s.', uri[0], urldecode(url.hash) || url.hostname)); log(sprintf('Please rebuild sing-box with %s support!', 'QUIC')); return null; } config = { label: url.hash ? urldecode(url.hash) : null, type: 'tuic', address: url.hostname, port: url.port, uuid: url.username, password: url.password ? urldecode(url.password) : null, tuic_congestion_control: params.congestion_control, tuic_udp_relay_mode: params.udp_relay_mode, tls: '1', tls_sni: params.sni, tls_alpn: params.alpn ? split(urldecode(params.alpn), ',') : null, }; break; case 'vless': /* https://github.com/XTLS/Xray-core/discussions/716 */ url = parseURL('http://' + uri[1]) || {}; params = url.searchParams || {}; /* Unsupported protocol */ if (params.type === 'kcp') { log(sprintf('Skipping sunsupported %s node: %s.', uri[0], urldecode(url.hash) || url.hostname)); return null; } else if (params.type === 'quic' && ((params.quicSecurity && params.quicSecurity !== 'none') || !sing_features.with_quic)) { log(sprintf('Skipping sunsupported %s node: %s.', uri[0], urldecode(url.hash) || url.hostname)); if (!sing_features.with_quic) log(sprintf('Please rebuild sing-box with %s support!', 'QUIC')); return null; } config = { label: url.hash ? urldecode(url.hash) : null, type: 'vless', address: url.hostname, port: url.port, uuid: url.username, transport: (params.type !== 'tcp') ? params.type : null, tls: (params.security in ['tls', 'xtls', 'reality']) ? '1' : '0', tls_sni: params.sni, tls_alpn: params.alpn ? split(urldecode(params.alpn), ',') : null, tls_reality: (params.security === 'reality') ? '1' : '0', tls_reality_public_key: params.pbk ? urldecode(params.pbk) : null, tls_reality_short_id: params.sid, tls_utls: sing_features.with_utls ? params.fp : null, vless_flow: (params.security in ['tls', 'reality']) ? params.flow : null }; switch(params.type) { case 'grpc': config.grpc_servicename = params.serviceName; break; case 'http': case 'tcp': if (params.type === 'http' || params.headerType === 'http') { config.http_host = params.host ? split(urldecode(params.host), ',') : null; config.http_path = params.path ? urldecode(params.path) : null; } break; case 'httpupgrade': config.httpupgrade_host = params.host ? urldecode(params.host) : null; config.http_path = params.path ? urldecode(params.path) : null; break; case 'ws': config.ws_host = params.host ? urldecode(params.host) : null; config.ws_path = params.path ? urldecode(params.path) : null; if (config.ws_path && match(config.ws_path, /\?ed=/)) { config.websocket_early_data_header = 'Sec-WebSocket-Protocol'; config.websocket_early_data = split(config.ws_path, '?ed=')[1]; config.ws_path = split(config.ws_path, '?ed=')[0]; } break; } break; case 'vmess': /* "Lovely" shadowrocket format */ if (match(uri, /&/)) { log(sprintf('Skipping unsupported %s format.', uri[0])); return null; } /* https://github.com/2dust/v2rayN/wiki/Description-of-VMess-share-link */ try { uri = json(decodeBase64Str(uri[1])) || {}; } catch(e) { log(sprintf('Skipping unsupported %s format.', uri[0])); return null; } if (uri.v != '2') { log(sprintf('Skipping unsupported %s format.', uri[0])); return null; /* Unsupported protocol */ } else if (uri.net === 'kcp') { log(sprintf('Skipping unsupported %s node: %s.', uri[0], uri.ps || uri.add)); return null; } else if (uri.net === 'quic' && ((uri.type && uri.type !== 'none') || uri.path || !sing_features.with_quic)) { log(sprintf('Skipping unsupported %s node: %s.', uri[0], uri.ps || uri.add)); if (!sing_features.with_quic) log(sprintf('Please rebuild sing-box with %s support!', 'QUIC')); return null; } /* * https://www.v2fly.org/config/protocols/vmess.html#vmess-md5-%E8%AE%A4%E8%AF%81%E4%BF%A1%E6%81%AF-%E6%B7%98%E6%B1%B0%E6%9C%BA%E5%88%B6 * else if (uri.aid && int(uri.aid) !== 0) { * log(sprintf('Skipping unsupported %s node: %s.', uri[0], uri.ps || uri.add)); * return null; * } */ config = { label: uri.ps ? urldecode(uri.ps) : null, type: 'vmess', address: uri.add, port: uri.port, uuid: uri.id, vmess_alterid: uri.aid, vmess_encrypt: uri.scy || 'auto', vmess_global_padding: '1', transport: (uri.net !== 'tcp') ? uri.net : null, tls: (uri.tls === 'tls') ? '1' : '0', tls_sni: uri.sni || uri.host, tls_alpn: uri.alpn ? split(uri.alpn, ',') : null, tls_utls: sing_features.with_utls ? uri.fp : null }; switch (uri.net) { case 'grpc': config.grpc_servicename = uri.path; break; case 'h2': case 'tcp': if (uri.net === 'h2' || uri.type === 'http') { config.transport = 'http'; config.http_host = uri.host ? split(uri.host, ',') : null; config.http_path = uri.path; } break; case 'httpupgrade': config.httpupgrade_host = uri.host; config.http_path = uri.path; break; case 'ws': config.ws_host = uri.host; config.ws_path = uri.path; if (config.ws_path && match(config.ws_path, /\?ed=/)) { config.websocket_early_data_header = 'Sec-WebSocket-Protocol'; config.websocket_early_data = split(config.ws_path, '?ed=')[1]; config.ws_path = split(config.ws_path, '?ed=')[0]; } break; } break; } } if (!isEmpty(config)) { if (config.address) config.address = replace(config.address, /\[|\]/g, ''); if (!validation('host', config.address) || !validation('port', config.port)) { log(sprintf('Skipping invalid %s node: %s.', config.type, config.label || 'NULL')); return null; } else if (!config.label) config.label = (validation('ip6addr', config.address) ? `[${config.address}]` : config.address) + ':' + config.port; } return config; } function main() { if (via_proxy !== '1') { log('Stopping service...'); init_action('homeproxy', 'stop'); } for (let url in subscription_urls) { url = replace(url, /#.*$/, ''); const groupHash = md5(url); node_cache[groupHash] = {}; const res = wGET(url, user_agent); if (isEmpty(res)) { log(sprintf('Failed to fetch resources from %s.', url)); continue; } let nodes; try { nodes = json(res).servers || json(res); /* Shadowsocks SIP008 format */ if (nodes[0].server && nodes[0].method) map(nodes, (_, i) => nodes[i].nodetype = 'sip008'); } catch(e) { nodes = decodeBase64Str(res); nodes = nodes ? split(trim(replace(nodes, / /g, '_')), '\n') : []; } let count = 0; for (let node in nodes) { let config; if (!isEmpty(node)) config = parse_uri(node); if (isEmpty(config)) continue; const label = config.label; config.label = null; const confHash = md5(sprintf('%J', config)), nameHash = md5(label); config.label = label; if (filter_check(config.label)) log(sprintf('Skipping blacklist node: %s.', config.label)); else if (node_cache[groupHash][confHash] || node_cache[groupHash][nameHash]) log(sprintf('Skipping duplicate node: %s.', config.label)); else { if (config.tls === '1' && allow_insecure === '1') config.tls_insecure = '1'; if (config.type in ['vless', 'vmess']) config.packet_encoding = packet_encoding; config.grouphash = groupHash; push(node_result, []); push(node_result[length(node_result)-1], config); node_cache[groupHash][confHash] = config; node_cache[groupHash][nameHash] = config; count++; } } if (count == 0) log(sprintf('No valid node found in %s.', url)); else log(sprintf('Successfully fetched %s nodes of total %s from %s.', count, length(nodes), url)); } if (isEmpty(node_result)) { log('Failed to update subscriptions: no valid node found.'); if (via_proxy !== '1') { log('Starting service...'); init_action('homeproxy', 'start'); } return false; } let added = 0, removed = 0; uci.foreach(uciconfig, ucinode, (cfg) => { /* Nodes created by the user */ if (!cfg.grouphash) return null; /* Empty object - failed to fetch nodes */ if (length(node_cache[cfg.grouphash]) === 0) return null; if (!node_cache[cfg.grouphash] || !node_cache[cfg.grouphash][cfg['.name']]) { uci.delete(uciconfig, cfg['.name']); removed++; log(sprintf('Removing node: %s.', cfg.label || cfg['name'])); } else { map(keys(cfg), (v) => { if (v in node_cache[cfg.grouphash][cfg['.name']]) uci.set(uciconfig, cfg['.name'], v, node_cache[cfg.grouphash][cfg['.name']][v]); else uci.delete(uciconfig, cfg['.name'], v); }); node_cache[cfg.grouphash][cfg['.name']].isExisting = true; } }); for (let nodes in node_result) map(nodes, (node) => { if (node.isExisting) return null; const nameHash = md5(node.label); uci.set(uciconfig, nameHash, 'node'); map(keys(node), (v) => uci.set(uciconfig, nameHash, v, node[v])); added++; log(sprintf('Adding node: %s.', node.label)); }); uci.commit(uciconfig); let need_restart = (via_proxy !== '1'); if (!isEmpty(main_node)) { const first_server = uci.get_first(uciconfig, ucinode); if (first_server) { let main_urltest_nodes; if (main_node === 'urltest') { main_urltest_nodes = filter(uci.get(uciconfig, ucimain, 'main_urltest_nodes'), (v) => { if (!uci.get(uciconfig, v)) { log(sprintf('Node %s is gone, removing from urltest list.', v)); return false; } return true; }); } if ((main_node === 'urltest') ? !length(main_urltest_nodes) : !uci.get(uciconfig, main_node)) { uci.set(uciconfig, ucimain, 'main_node', first_server); uci.commit(uciconfig); need_restart = true; log('Main node is gone, switching to the first node.'); } if (!isEmpty(main_udp_node) && main_udp_node !== 'same') { let main_udp_urltest_nodes; if (main_udp_node === 'urltest') { main_udp_urltest_nodes = filter(uci.get(uciconfig, ucimain, 'main_udp_urltest_nodes'), (v) => { if (!uci.get(uciconfig, v)) { log(sprintf('Node %s is gone, removing from urltest list.', v)); return false; } return true; }); } if ((main_udp_node === 'urltest') ? !length(main_udp_urltest_nodes) : !uci.get(uciconfig, main_udp_node)) { uci.set(uciconfig, ucimain, 'main_udp_node', first_server); uci.commit(uciconfig); need_restart = true; log('Main UDP node is gone, switching to the first node.'); } } } else { uci.set(uciconfig, ucimain, 'main_node', 'nil'); uci.set(uciconfig, ucimain, 'main_udp_node', 'nil'); uci.commit(uciconfig); need_restart = true; log('No available node, disable tproxy.'); } } if (need_restart) { log('Restarting service...'); init_action('homeproxy', 'stop'); init_action('homeproxy', 'start'); } log(sprintf('%s nodes added, %s removed.', added, removed)); log('Successfully updated subscriptions.'); } if (!isEmpty(subscription_urls)) try { call(main); } catch(e) { log('[FATAL ERROR] An error occurred during updating subscriptions:'); log(sprintf('%s: %s', e.type, e.message)); log(e.stacktrace[0].context); log('Restarting service...'); init_action('homeproxy', 'stop'); init_action('homeproxy', 'start'); } ================================================ FILE: luci-app-homeproxy/root/etc/init.d/homeproxy ================================================ #!/bin/sh /etc/rc.common # SPDX-License-Identifier: GPL-2.0-only # # Copyright (C) 2022-2023 ImmortalWrt.org USE_PROCD=1 START=99 STOP=10 CONF="homeproxy" PROG="/usr/bin/sing-box" HP_DIR="/etc/homeproxy" RUN_DIR="/var/run/homeproxy" LOG_PATH="$RUN_DIR/homeproxy.log" # we don't know which is the default server, just take the first one DNSMASQ_UCI_CONFIG="$(uci -q show "dhcp.@dnsmasq[0]" | awk 'NR==1 {split($0, conf, /[.=]/); print conf[2]}')" if [ -f "/tmp/etc/dnsmasq.conf.$DNSMASQ_UCI_CONFIG" ]; then DNSMASQ_DIR="$(awk -F '=' '/^conf-dir=/ {print $2}' "/tmp/etc/dnsmasq.conf.$DNSMASQ_UCI_CONFIG")/dnsmasq-homeproxy.d" else DNSMASQ_DIR="/tmp/dnsmasq.d/dnsmasq-homeproxy.d" fi log() { echo -e "$(date "+%Y-%m-%d %H:%M:%S") [DAEMON] $*" >> "$LOG_PATH" } start_service() { config_load "$CONF" local routing_mode proxy_mode config_get routing_mode "config" "routing_mode" "bypass_mainland_china" config_get proxy_mode "config" "proxy_mode" "redirect_tproxy" local outbound_node if [ "$routing_mode" != "custom" ]; then config_get outbound_node "config" "main_node" "nil" else config_get outbound_node "routing" "default_outbound" "nil" fi local server_enabled config_get_bool server_enabled "server" "enabled" "0" if [ "$outbound_node" = "nil" ] && [ "$server_enabled" = "0" ]; then return 1 fi mkdir -p "$RUN_DIR" if [ "$outbound_node" != "nil" ]; then # Generate/Validate client config ucode -S "$HP_DIR/scripts/generate_client.uc" 2>>"$LOG_PATH" if [ ! -e "$RUN_DIR/sing-box-c.json" ]; then log "Error: failed to generate client configuration." return 1 elif ! "$PROG" check --config "$RUN_DIR/sing-box-c.json" 2>>"$LOG_PATH"; then log "Error: wrong client configuration detected." return 1 fi # Auto update local auto_update auto_update_time config_get_bool auto_update "subscription" "auto_update" "0" if [ "$auto_update" = "1" ]; then config_get auto_update_time "subscription" "auto_update_time" "2" sed -i "/#${CONF}_autosetup/d" "/etc/crontabs/root" 2>"/dev/null" echo -e "0 $auto_update_time * * * $HP_DIR/scripts/update_crond.sh #${CONF}_autosetup" >> "/etc/crontabs/root" /etc/init.d/cron restart fi # DNSMasq rules local ipv6_support dns_port config_get_bool ipv6_support "config" "ipv6_support" "0" config_get dns_port "infra" "dns_port" "5333" mkdir -p "$DNSMASQ_DIR" echo -e "conf-dir=$DNSMASQ_DIR" > "$DNSMASQ_DIR/../dnsmasq-homeproxy.conf" case "$routing_mode" in "bypass_mainland_china"|"custom"|"global") cat <<-EOF >> "$DNSMASQ_DIR/redirect-dns.conf" no-poll no-resolv server=127.0.0.1#$dns_port EOF ;; "gfwlist") local gfw_nftset_v6 [ "$ipv6_support" -eq "0" ] || gfw_nftset_v6=",6#inet#fw4#homeproxy_gfw_list_v6" sed -r -e "s/(.*)/server=\/\1\/127.0.0.1#$dns_port\nnftset=\/\1\\/4#inet#fw4#homeproxy_gfw_list_v4$gfw_nftset_v6/g" \ "$HP_DIR/resources/gfw_list.txt" > "$DNSMASQ_DIR/gfw_list.conf" ;; "proxy_mainland_china") sed -r -e "s/(.*)/server=\/\1\/127.0.0.1#$dns_port/g" \ "$HP_DIR/resources/china_list.txt" > "$DNSMASQ_DIR/china_list.conf" ;; esac if [ "$routing_mode" != "custom" ] && [ -s "$HP_DIR/resources/proxy_list.txt" ]; then local wan_nftset_v6 [ "$ipv6_support" -eq "0" ] || wan_nftset_v6=",6#inet#fw4#homeproxy_wan_proxy_addr_v6" sed -r -e '/^\s*$/d' -e "s/(.*)/server=\/\1\/127.0.0.1#$dns_port\nnftset=\/\1\\/4#inet#fw4#homeproxy_wan_proxy_addr_v4$wan_nftset_v6/g" \ "$HP_DIR/resources/proxy_list.txt" > "$DNSMASQ_DIR/proxy_list.conf" fi /etc/init.d/dnsmasq restart >"/dev/null" 2>&1 # Setup routing table local table_mark config_get table_mark "infra" "table_mark" "100" case "$proxy_mode" in "redirect_tproxy") local outbound_udp_node config_get outbound_udp_node "config" "main_udp_node" "nil" if [ "$outbound_udp_node" != "nil" ] || [ "$routing_mode" = "custom" ]; then local tproxy_mark config_get tproxy_mark "infra" "tproxy_mark" "101" ip rule add fwmark "$tproxy_mark" table "$table_mark" ip route add local 0.0.0.0/0 dev lo table "$table_mark" if [ "$ipv6_support" -eq "1" ]; then ip -6 rule add fwmark "$tproxy_mark" table "$table_mark" ip -6 route add local ::/0 dev lo table "$table_mark" fi fi ;; "redirect_tun"|"tun") local tun_name tun_mark config_get tun_name "infra" "tun_name" "singtun0" config_get tun_mark "infra" "tun_mark" "102" ip tuntap add mode tun user root name "$tun_name" sleep 1s ip link set "$tun_name" up ip route replace default dev "$tun_name" table "$table_mark" ip rule add fwmark "$tun_mark" lookup "$table_mark" ip -6 route replace default dev "$tun_name" table "$table_mark" ip -6 rule add fwmark "$tun_mark" lookup "$table_mark" ;; esac # sing-box (client) procd_open_instance "sing-box-c" procd_set_param command "$PROG" procd_append_param command run --config "$RUN_DIR/sing-box-c.json" # QUIC-GO GSO is broken on kernel 6.6 currently uname -r | grep -Eq "^6\.6" && procd_set_param env "QUIC_GO_DISABLE_GSO"="true" if [ -x "/sbin/ujail" ] && [ "$routing_mode" != "custom" ] && ! grep -Eq '"type": "(wireguard|tun)"' "$RUN_DIR/sing-box-c.json"; then procd_add_jail "sing-box-c" log procfs procd_add_jail_mount "$RUN_DIR/sing-box-c.json" procd_add_jail_mount_rw "$RUN_DIR/sing-box-c.log" [ "$routing_mode" != "bypass_mainland_china" ] || procd_add_jail_mount_rw "$RUN_DIR/cache.db" procd_add_jail_mount "$HP_DIR/certs/" procd_add_jail_mount "/etc/ssl/" procd_add_jail_mount "/etc/localtime" procd_add_jail_mount "/etc/TZ" procd_set_param capabilities "/etc/capabilities/homeproxy.json" procd_set_param no_new_privs 1 procd_set_param user sing-box procd_set_param group sing-box fi procd_set_param limits core="unlimited" procd_set_param limits nofile="1000000 1000000" procd_set_param stderr 1 procd_set_param respawn procd_close_instance fi if [ "$server_enabled" = "1" ]; then # Generate/Validate server config ucode -S "$HP_DIR/scripts/generate_server.uc" 2>>"$LOG_PATH" if [ ! -e "$RUN_DIR/sing-box-s.json" ]; then log "Error: failed to generate server configuration." return 1 elif ! "$PROG" check --config "$RUN_DIR/sing-box-s.json" 2>>"$LOG_PATH"; then log "Error: wrong server configuration detected." return 1 fi # sing-box (server) procd_open_instance "sing-box-s" procd_set_param command "$PROG" procd_append_param command run --config "$RUN_DIR/sing-box-s.json" # QUIC-GO GSO is broken on kernel 6.6 currently uname -r | grep -Eq "^6\.6" && procd_set_param env "QUIC_GO_DISABLE_GSO"="true" if [ -x "/sbin/ujail" ]; then procd_add_jail "sing-box-s" log procfs procd_add_jail_mount "$RUN_DIR/sing-box-s.json" procd_add_jail_mount_rw "$RUN_DIR/sing-box-s.log" procd_add_jail_mount_rw "$HP_DIR/certs/" procd_add_jail_mount "/etc/acme/" procd_add_jail_mount "/etc/ssl/" procd_add_jail_mount "/etc/localtime" procd_add_jail_mount "/etc/TZ" procd_set_param capabilities "/etc/capabilities/homeproxy.json" procd_set_param no_new_privs 1 procd_set_param user sing-box procd_set_param group sing-box fi procd_set_param limits core="unlimited" procd_set_param limits nofile="1000000 1000000" procd_set_param stderr 1 procd_set_param respawn procd_close_instance fi # log-cleaner procd_open_instance "log-cleaner" procd_set_param command "$HP_DIR/scripts/clean_log.sh" procd_set_param respawn procd_close_instance case "$routing_mode" in "bypass_mainland_china") # Prepare cache db [ -e "$RUN_DIR/cache.db" ] || touch "$RUN_DIR/cache.db" ;; "custom") # Prepare ruleset directory [ -d "$HP_DIR/ruleset" ] || mkdir -p "$HP_DIR/ruleset" ;; esac [ "$outbound_node" = "nil" ] || echo > "$RUN_DIR/sing-box-c.log" if [ "$server_enabled" = "1" ]; then echo > "$RUN_DIR/sing-box-s.log" mkdir -p "$HP_DIR/certs" fi # Update permissions for ujail chown -R sing-box:sing-box "$RUN_DIR" # Setup firewall ucode "$HP_DIR/scripts/firewall_pre.uc" [ "$outbound_node" = "nil" ] || utpl -S "$HP_DIR/scripts/firewall_post.ut" > "$RUN_DIR/fw4_post.nft" fw4 reload >"/dev/null" 2>&1 log "sing-box $(sing-box version -n) started." } stop_service() { sed -i "/#${CONF}_autosetup/d" "/etc/crontabs/root" 2>"/dev/null" /etc/init.d/cron restart >"/dev/null" 2>&1 # Setup firewall # Load config config_load "$CONF" local table_mark tproxy_mark tun_mark tun_name config_get table_mark "infra" "table_mark" "100" config_get tproxy_mark "infra" "tproxy_mark" "101" config_get tun_mark "infra" "tun_mark" "102" config_get tun_name "infra" "tun_name" "singtun0" # Tproxy ip rule del fwmark "$tproxy_mark" table "$table_mark" 2>"/dev/null" ip route del local 0.0.0.0/0 dev lo table "$table_mark" 2>"/dev/null" ip -6 rule del fwmark "$tproxy_mark" table "$table_mark" 2>"/dev/null" ip -6 route del local ::/0 dev lo table "$table_mark" 2>"/dev/null" # TUN ip route del default dev "$tun_name" table "$table_mark" 2>"/dev/null" ip rule del fwmark "$tun_mark" table "$table_mark" 2>"/dev/null" ip -6 route del default dev "$tun_name" table "$table_mark" 2>"/dev/null" ip -6 rule del fwmark "$tun_mark" table "$table_mark" 2>"/dev/null" # Nftables rules for i in "homeproxy_dstnat_redir" "homeproxy_output_redir" \ "homeproxy_redirect" "homeproxy_redirect_proxy" \ "homeproxy_redirect_proxy_port" "homeproxy_redirect_lanac" \ "homeproxy_mangle_prerouting" "homeproxy_mangle_output" \ "homeproxy_mangle_tproxy" "homeproxy_mangle_tproxy_port" \ "homeproxy_mangle_tproxy_lanac" "homeproxy_mangle_mark" \ "homeproxy_mangle_tun" "homeproxy_mangle_tun_mark"; do nft flush chain inet fw4 "$i" nft delete chain inet fw4 "$i" done 2>"/dev/null" for i in "homeproxy_local_addr_v4" "homeproxy_local_addr_v6" \ "homeproxy_gfw_list_v4" "homeproxy_gfw_list_v6" \ "homeproxy_mainland_addr_v4" "homeproxy_mainland_addr_v6" \ "homeproxy_wan_proxy_addr_v4" "homeproxy_wan_proxy_addr_v6" \ "homeproxy_wan_direct_addr_v4" "homeproxy_wan_direct_addr_v6" \ "homeproxy_routing_port"; do nft flush set inet fw4 "$i" nft delete set inet fw4 "$i" done 2>"/dev/null" echo 2>"/dev/null" > "$RUN_DIR/fw4_forward.nft" echo 2>"/dev/null" > "$RUN_DIR/fw4_input.nft" echo 2>"/dev/null" > "$RUN_DIR/fw4_post.nft" fw4 reload >"/dev/null" 2>&1 # Remove DNS hijack rm -rf "$DNSMASQ_DIR/../dnsmasq-homeproxy.conf" "$DNSMASQ_DIR" /etc/init.d/dnsmasq restart >"/dev/null" 2>&1 rm -f "$RUN_DIR/sing-box-c.json" "$RUN_DIR/sing-box-c.log" \ "$RUN_DIR/sing-box-s.json" "$RUN_DIR/sing-box-s.log" log "Service stopped." } service_stopped() { # Load config config_load "$CONF" local tun_name config_get tun_name "infra" "tun_name" "singtun0" # TUN ip link set "$tun_name" down 2>"/dev/null" ip tuntap del mode tun name "$tun_name" 2>"/dev/null" } reload_service() { log "Reloading service..." stop start } service_triggers() { procd_add_reload_trigger "$CONF" procd_add_interface_trigger "interface.*.up" wan /etc/init.d/$CONF reload } ================================================ FILE: luci-app-homeproxy/root/etc/uci-defaults/luci-homeproxy ================================================ #!/bin/sh [ -f "/www/luci-static/resources/icons/loading.gif" ] && \ sed -i "s,/loading.svg,/loading.gif,g" "/www/luci-static/resources/view/homeproxy/status.js" uci -q batch <<-EOF >"/dev/null" delete firewall.homeproxy_pre delete firewall.homeproxy_forward set firewall.homeproxy_forward=include set firewall.homeproxy_forward.type=nftables set firewall.homeproxy_forward.path="/var/run/homeproxy/fw4_forward.nft" set firewall.homeproxy_forward.position="chain-pre" set firewall.homeproxy_forward.chain="forward" delete firewall.homeproxy_input set firewall.homeproxy_input=include set firewall.homeproxy_input.type=nftables set firewall.homeproxy_input.path="/var/run/homeproxy/fw4_input.nft" set firewall.homeproxy_input.position="chain-pre" set firewall.homeproxy_input.chain="input" delete firewall.homeproxy_post set firewall.homeproxy_post=include set firewall.homeproxy_post.type=nftables set firewall.homeproxy_post.path="/var/run/homeproxy/fw4_post.nft" set firewall.homeproxy_post.position="table-post" commit firewall EOF exit 0 ================================================ FILE: luci-app-homeproxy/root/etc/uci-defaults/luci-homeproxy-migration ================================================ #!/bin/sh ucode "/etc/homeproxy/scripts/migrate_config.uc" exit 0 ================================================ FILE: luci-app-homeproxy/root/usr/share/luci/menu.d/luci-app-homeproxy.json ================================================ { "admin/services/homeproxy": { "title": "HomeProxy", "order": 10, "action": { "type": "firstchild" }, "depends": { "acl": [ "luci-app-homeproxy" ], "uci": { "homeproxy": true } } }, "admin/services/homeproxy/client": { "title": "Client Settings", "order": 10, "action": { "type": "view", "path": "homeproxy/client" } }, "admin/services/homeproxy/node": { "title": "Node Settings", "order": 15, "action": { "type": "view", "path": "homeproxy/node" } }, "admin/services/homeproxy/server": { "title": "Server Settings", "order": 20, "action": { "type": "view", "path": "homeproxy/server" } }, "admin/services/homeproxy/status": { "title": "Service Status", "order": 30, "action": { "type": "view", "path": "homeproxy/status" } } } ================================================ FILE: luci-app-homeproxy/root/usr/share/rpcd/acl.d/luci-app-homeproxy.json ================================================ { "luci-app-homeproxy": { "description": "Grant access to homeproxy configuration", "read": { "file": { "/etc/homeproxy/scripts/update_subscriptions.uc": [ "exec" ], "/var/run/homeproxy/homeproxy.log": [ "read" ], "/var/run/homeproxy/sing-box-c.log": [ "read" ], "/var/run/homeproxy/sing-box-s.log": [ "read" ] }, "ubus": { "service": [ "list" ], "luci.homeproxy": [ "*" ] }, "uci": [ "homeproxy" ] }, "write": { "file": { "/tmp/homeproxy_certificate.tmp": [ "write" ] }, "uci": [ "homeproxy" ] } } } ================================================ FILE: luci-app-homeproxy/root/usr/share/rpcd/ucode/luci.homeproxy ================================================ #!/usr/bin/ucode /* * SPDX-License-Identifier: GPL-2.0-only * * Copyright (C) 2023-2024 ImmortalWrt.org */ 'use strict'; import { access, error, lstat, popen, readfile, writefile } from 'fs'; /* Kanged from ucode/luci */ function shellquote(s) { return `'${replace(s, "'", "'\\''")}'`; } function hasKernelModule(kmod) { return (system(sprintf('[ -e "/lib/modules/$(uname -r)"/%s ]', shellquote(kmod))) === 0); } const HP_DIR = '/etc/homeproxy'; const RUN_DIR = '/var/run/homeproxy'; const methods = { acllist_read: { args: { type: 'type' }, call: function(req) { if (index(['direct_list', 'proxy_list'], req.args?.type) === -1) return { content: null, error: 'illegal type' }; const filecontent = readfile(`${HP_DIR}/resources/${req.args?.type}.txt`); return { content: filecontent }; } }, acllist_write: { args: { type: 'type', content: 'content' }, call: function(req) { if (index(['direct_list', 'proxy_list'], req.args?.type) === -1) return { result: false, error: 'illegal type' }; const file = `${HP_DIR}/resources/${req.args?.type}.txt`; let content = req.args?.content; /* Sanitize content */ if (content) { content = trim(content); content = replace(content, /\r\n?/g, '\n'); if (!match(content, /\n$/)) content += '\n'; } system(`mkdir -p ${HP_DIR}/resources`); writefile(file, content); return { result: true }; } }, certificate_write: { args: { filename: 'filename' }, call: function(req) { const writeCertificate = (filename, priv) => { const tmpcert = '/tmp/homeproxy_certificate.tmp'; const filestat = lstat(tmpcert); if (!filestat || filestat.type !== 'file' || filestat.size <= 0) { system(`rm -f ${tmpcert}`); return { result: false, error: 'empty certificate file' }; } let filecontent = readfile(tmpcert); if (is_binary(filecontent)) { system(`rm -f ${tmpcert}`); return { result: false, error: 'illegal file type: binary' }; } /* Kanged from luci-proto-openconnect */ const beg = priv ? /^-----BEGIN (RSA|EC) PRIVATE KEY-----$/ : /^-----BEGIN CERTIFICATE-----$/, end = priv ? /^-----END (RSA|EC) PRIVATE KEY-----$/ : /^-----END CERTIFICATE-----$/, lines = split(trim(filecontent), /[\r\n]/); let start = false, i; for (i = 0; i < length(lines); i++) { if (match(lines[i], beg)) start = true; else if (start && !b64dec(lines[i]) && length(lines[i]) !== 64) break; } if (!start || i < length(lines) - 1 || !match(lines[i], end)) { system(`rm -f ${tmpcert}`); return { result: false, error: 'this does not look like a correct PEM file' }; } /* Sanitize certificate */ filecontent = trim(filecontent); filecontent = replace(filecontent, /\r\n?/g, '\n'); if (!match(filecontent, /\n$/)) filecontent += '\n'; system(`mkdir -p ${HP_DIR}/certs`); writefile(`${HP_DIR}/certs/${filename}.pem`, filecontent); system(`rm -f ${tmpcert}`); return { result: true }; }; const filename = req.args?.filename; switch (filename) { case 'client_ca': case 'server_publickey': return writeCertificate(filename, false); break; case 'server_privatekey': return writeCertificate(filename, true); break; default: return { result: false, error: 'illegal cerificate filename' }; break; } } }, connection_check: { args: { site: 'site' }, call: function(req) { let url; switch(req.args?.site) { case 'baidu': url = 'https://www.baidu.com'; break; case 'google': url = 'https://www.google.com'; break; default: return { result: false, error: 'illegal site' }; break; } return { result: (system(`/usr/bin/wget --spider -qT3 ${url} 2>"/dev/null"`, 3100) === 0) }; } }, log_clean: { args: { type: 'type' }, call: function(req) { if (!(req.args?.type in ['homeproxy', 'sing-box-c', 'sing-box-s'])) return { result: false, error: 'illegal type' }; const filestat = lstat(`${RUN_DIR}/${req.args?.type}.log`); if (filestat) writefile(`${RUN_DIR}/${req.args?.type}.log`, ''); return { result: true }; } }, singbox_generator: { args: { type: 'type', params: 'params' }, call: function(req) { if (!(req.args?.type in ['ech-keypair', 'uuid', 'reality-keypair', 'vapid-keypair', 'wg-keypair'])) return { result: false, error: 'illegal type' }; const type = req.args?.type; let result = {}; const fd = popen('/usr/bin/sing-box generate ' + type + ` ${req.args?.params || ''}`); if (fd) { let ech_cfg_set = false; let ech_key_set = false; for (let line = fd.read('line'); length(line); line = fd.read('line')) { if (type === 'uuid') result.uuid = trim(line); else if (type in ['reality-keypair', 'vapid-keypair', 'wg-keypair']) { let priv = match(trim(line), /PrivateKey: (.*)/); if (priv) result.private_key = priv[1]; let pub = match(trim(line), /PublicKey: (.*)/); if (pub) result.public_key = pub[1]; } else if (type in ['ech-keypair']) { if (trim(line) === '-----BEGIN ECH CONFIGS-----') ech_cfg_set = true; else if (trim(line) === '-----BEGIN ECH KEYS-----') ech_key_set = true; if (ech_cfg_set) result.ech_cfg = result.ech_cfg ? result.ech_cfg + '\n' + trim(line) : trim(line) ; if (ech_key_set) result.ech_key = result.ech_key ? result.ech_key + '\n' + trim(line) : trim(line) ; if (trim(line) === '-----END ECH CONFIGS-----') ech_cfg_set = false; else if (trim(line) === '-----END ECH KEYS-----') ech_key_set = false; } } fd.close(); } return { result }; } }, singbox_get_features: { call: function() { let features = {}; const fd = popen('/usr/bin/sing-box version'); if (fd) { for (let line = fd.read('line'); length(line); line = fd.read('line')) { if (match(trim(line), /^sing-box version (.*)/)) features.version = match(trim(line), /^sing-box version (.*)/)[1]; let tags = match(trim(line), /^Tags: (.*)/); if (tags) for (let i in split(tags[1], ',')) features[i] = true; } fd.close(); } features.hp_has_ip_full = access('/usr/libexec/ip-full'); features.hp_has_tcp_brutal = hasKernelModule('brutal.ko'); features.hp_has_tproxy = hasKernelModule('nft_tproxy.ko') || access('/etc/modules.d/nft-tproxy'); features.hp_has_tun = hasKernelModule('tun.ko') || access('/etc/modules.d/30-tun'); return features; } }, resources_get_version: { args: { type: 'type' }, call: function(req) { const version = trim(readfile(`${HP_DIR}/resources/${req.args?.type}.ver`)); return { version: version, error: error() }; } }, resources_update: { args: { type: 'type' }, call: function(req) { if (req.args?.type) { const type = shellquote(req.args?.type); const exit_code = system(`${HP_DIR}/scripts/update_resources.sh ${type}`); return { status: exit_code }; } else return { status: 255, error: 'illegal type' }; } } }; return { 'luci.homeproxy': methods }; ================================================ FILE: luci-app-ikoolproxy/Makefile ================================================ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-ikoolproxy PKG_VERSION:=3.8.5 PKG_RELEASE:=20250314 PKG_MAINTAINER:=panda-mute LUCI_TITLE:=LuCI support for koolproxy LUCI_PKGARCH:=all LUCI_DEPENDS:=+koolproxy +openssl-util +ipset +dnsmasq-full +@BUSYBOX_CONFIG_DIFF +iptables-mod-nat-extra +wget define Package/$(PKG_NAME)/conffiles /etc/config/koolproxy /usr/share/koolproxy/data/rules/ endef include $(TOPDIR)/feeds/luci/luci.mk # call BuildPackage - OpenWrt buildroot signature ================================================ FILE: luci-app-ikoolproxy/change.log ================================================ ## 更新:2024年6月10日: 1、修复openssl3.0无法下载证书问题,感谢[Black-Steel](https://github.com/Black-Steel) 2、修复init.d目录下的脚本有stop实现,但是没定义停止编号。会导致一些异常。感谢[lnc1995](https://github.com/lnc1995) ## 更新:2024年1月24日: 1、支持5.10以及以上内核。但是因为openssl升级可能会导致证书无法下载。目前lean的openssl可以回退到老的版本即可。 ## 更新:2022年10月11日: 1、感谢群里Mr Conter(@biliconter)提供修复证书过期的二进制文件。 ## 更新:2022年3月24日: 1、删除以前所有commits。升级到了最新的comiits:其中重要的几次如下 ## 更新:2022年2月12日: 删除不必要的rmempty:luci-app-ikoolproxy: drop rmempty 感谢 [Beginner-Go](https://github.com/Beginner-Go) ## 更新:2022年1月3日: 感谢 [Beginner-Go](https://github.com/Beginner-Go) 升级koolproxy: x86_64 bin update to 3.8.6 ## 更新:2021年3月23日: 感谢 [maple's sky](https://github.com/maplesky) 大佬提供技术支持,修复状态栏不动态问题。 ## 更新:2021年3月4日: 感谢 [xiaoqi2020](https://github.com/xiaoqi2020) 提供,选择规则托管国内。 ## 更新:2021年2月26日(元宵): 原来的码云以及coding规则已经无法获取(被封)了。现在托管在github上。 ================================================ FILE: luci-app-ikoolproxy/development.doc ================================================ koolproxy插件/固件开发文档1.3 更新日期:2017年7月7日(koolproxy 3.6.1) ================================================================================================ 声明: KoolProxy 是一个免费软件,著作权归属 KoolProxy.com,用户可以非商业性地复制和使用 KoolProxy,但禁止将 KoolProxy 用于商业用途。 KoolProxy 可以对 https 网络数据进行识别代理,使用 https 功能的用户需要自己提供相关证书,本程序提供的证书生成脚本仅供用户参考,证书的保密工作由用户自行负责。 使用本软件的风险由用户自行承担,在适用法律允许的最大范围内,对因使用本产品所产生的损害及风险,包括但不限于直接或间接的个人损害、商业赢利的丧失、贸易中断、商业信息的丢失或任何其它经济损失,KoolProxy.com 不承担任何责任。 ================================================================================================ KoolProxy By Xiaobao & Crwnet v3.6.1 USAGE: koolproxy [options] [arguments...] OPTIONS: -p value listen port, default value is 3000 -l value log level (0:DEBUG, 1:INFO, 2:AD, 3:WARNING, 4:ERROR), default value is ERROR -c value thread count, default value is the number of cpus -b value data path, default value is './data' -d run as daemon mode -v show version -h show help ADVANCED: --cert generate ssl cert --ipv6 enable ipv6, works for ipv6 nat mode --video | -e video mode, load video rules only --mark mark mode, set the socket mark(src ip) when connect to remote host. requires the CAP_NET_ADMIN capability --ttl value ttl mode, set the socket ttl when connect to remote host. default value is 0 (disable) ================================================================================================ 交流地址: 1 QQ群1: 595300867 2 QQ群2: 203726739 3 TG群: https://t.me/joinchat/AAAAAD-tO7GPvfOU131_vg 4 更新日志:http://koolshare.cn/thread-64086-1-1.html ================================================================================================ #koolproxy部署文件目录参考1(使用openssl生成证书) . ├── data │   ├── gen_ca.sh #证书生成脚本 │   ├── koolproxy_ipset.conf #ipset名单 │   ├── openssl.cnf #证书生成所用配置文件 │   ├── rules #规则存放文件夹 │   │   ├── kp.dat #视频规则 │   │   ├── koolproxy.txt #静态规则 │   │   ├── daily.txt #每日规则 │   │   └── user.txt #自定义规则 │   └── version #插件版本号(merlin) └── koolproxy #koolproxy二进制(为了保证二进制顺利更新,请保证目录可写) 1 证书生成使用命令 sh gen_ca.sh,该脚本会调用系统内的openssl来生成证书,运行成功后会自动创建data/private data/cert目录 私钥和公钥会分别存在data/private data/cert目录下,使用http://110.110.110.110会下载路由器内的证书 ------------------------------------------------------------------------------------------------ #koolproxy部署文件目录参考2(使用koolproxy生成证书) . └── koolproxy #koolproxy二进制(为了保证二进制顺利更新,请保证目录可写) 1 因为规则文件会由koolproxy自动下载,下载后会自动创建data/rules目录 2 使用koolproxy --cert命令可以生成证书,运行成功后会自动创建data/private data/cert目录 私钥和公钥会分别存在data/private data/cert目录下,使用http://110.110.110.110会下载路由器内的证书 因为mbedtls性能原因,在非软路由机器上用koolproxy --cert生成证书需要时间较长,请耐心等待 ================================================================================================ 说明: 1 koolproxy启动会自动检测规则更新,如果没有./data/rules文件夹,会自己创建并下载规则到此处 2 koolproxy启动后会检测二进制文件更新,如果有更新,会替换./koolproxy,并且由父进程重启koolproxy,以后每20分钟检测一次更新 3 现在不支持规则订阅了,只能识别kp.dat, koolproxy.txt, user.txt,daily.txt,需要自定义规则的可以修改user.txt # 二进制下载固定地址 https://koolproxy.com/downloads/i386 https://koolproxy.com/downloads/x86_64 https://koolproxy.com/downloads/arm https://koolproxy.com/downloads/mips https://koolproxy.com/downloads/mipsel # 规则下载固定地址 https://kprule.com/koolproxy.txt https://kprule.com/daily.txt https://kprule.com/kp.dat https://kprule.com/user.txt # 规则下载对应的CDN地址 https://kprules.b0.upaiyun.com/koolproxy.txt https://kprules.b0.upaiyun.com/daily.txt https://kprules.b0.upaiyun.com/kp.dat https://kprules.b0.upaiyun.com/user.txt # 二进制文件和规则 github备份地址: 二进制:https://github.com/koolproxy/koolproxy-bin (已作废) 规则:https://github.com/koolproxy/koolproxy_rules (已作废) 1 建议从上面的链接获取最新的二进制和基本的规则文件,然后按照上面的目录结构来部署 2 如果不需要https过滤,只需要一个koolproxy程序就足够了,data文件夹和rules文件夹都会自己创建。 3 koolproxy.txt内有视频规则、静态规则、每日规则的更新日期,可以用于提取并显示到界面 ================================================================================================ koolproxy运行: 1 在koolproxy主程序目录运行,例如merlin固件下运行:cd /koolshare/koolproxy && koolproxy -d 2 不在koolproxy主程序目录运行(例如将koolproxy放在环境变量中),例如merlin固件下运行:koolproxy -b /koolshare/koolproxy -d -b为data路径 其它运行方式可能会造成koolproxy识别不到data目录而无法加载规则 koolproxy运行后默认会使用端口3000作为透明代理端口,需要利用iptables将数据导到端口3000才能发挥作用。 视频模式: 1 使用命令koolproxy -e 即可开启 2 开启后只会加载视频规则kp.dat和user.txt 调试模式: 1 使用命令koolproxy -l0 即可开启,l后面的数字代表不同的日志详细程度 2 需要检查规则命中行数可以需要使用-l2 ttl功能: 1 使用命令koolproxy --ttl 160 即可开启ttl功能,后面的数值代表ttl大小 2 ttl功能开启后,koolproxy会对经过它的所有数据ttl进行调整,可以利用iptables的match ttl功能数据进行匹配 mark功能: 1 使用命令koolproxy --mark 即可开启mark功能 2 mark功能开启后,koolproxy会对经过它的所有数据打上标记,mark值等于该数据的源ip转换为十六进制的值 3 例如局域网内192.168.1.100的数据,将会被打上0xc0a80164的mark(192 = c0, 168 = a8, 1 = 01, 100 = 64 ) 4 开发者可以用此功和SS配合,达到既科学上网,又能过滤这些科学上网的流量,还不影响科学上网访问控制的功能 5 ip转换为mark值参考命令:echo 192.168.1.100 | awk -F "." '{printf ("0x%02x", $1)} {printf ("%02x", $2)} {printf ("%02x", $3)} {printf ("%02x\n", $4)}' ================================================================================================ ss + kp过滤方案(2017年7月7日): 方案1(优先SS,其次KP,不推荐): 1 在NAT PREROUTING链内,SS在前,KP在后,流量将先走SS,经过SS分流后,国外流量走ss-redir,实现翻墙; 2 而剩下国内流量在PREROUTING链内继续往下匹配到koolrpxy规则,流量最终走koolproxy,实现过滤。 结果:koolproxy只能过滤国内流量(SS剩下的)。 方案2(优先KP,其次SS,不推荐); 1 在NAT PREROUTING链内,KP在前,SS在后,流量将先走KP,实现过滤; 2 为了SS能拿到KP过滤后的数据,使用match ttl匹配,在OUTPUT链内将流量全部给SS,实现翻墙; 结果:因为在OUTPUT链内没有源ip信息,流量给SS后无法匹配到源ip,因此SS失去了acl(访问控制)功能。 方案3 (优先kp,其次SS,推荐); 为便于理解,以下iptables配置只展示流量经过顺序,不是iptables的创建顺序,PREROUTING内规则的创建实际上应该在最后 0 koolproxy默认开启ttl和mark功能 KoolProxy --ttl 160 --mark -d(固件不支持ttl的仅开启mark也行: KoolProxy --mark -d) 1 在NAT PREROUTING链内,KP在前,SS在后,KP开启--mark,流量将先走KP(80,443),实现过滤,过滤后每个主机会被打上不同的mark; #KP在前,所有tcp流量全部交给KOOLPROXY链 -A PREROUTING -p tcp -j KOOLPROXY #SS在后,在kp开启的时候,只能拿到非80,443的流量,在kp关闭后,可以拿到所有端口的流量 -A PREROUTING -p tcp -j SHADOWSOCKS 2 例如局域网内192.168.1.100主机的数据经过kp过滤后,将会被打上0xc0a80164的mark(192 = c0, 168 = a8, 1 = 01, 100 = 64 ); #创建KOOLPROXY链,用于白名单和访问控制 -N KOOLPROXY #创建KOOLPROXY_HTTP链,用于过滤http流量 -N KOOLPROXY_HTTP #创建KOOLPROXY_HTTPS链,用于过滤https流量 -N KOOLPROXY_HTTPS #局域网和保留地址不走kp -A KOOLPROXY -m set --match-set white_kp_list dst -j RETURN #主机192.168.1.100需要https过滤 -A KOOLPROXY -s 192.168.1.100/32 -p tcp -g KOOLPROXY_HTTPS #其它主机过滤http流量 -A KOOLPROXY -p tcp -j KOOLPROXY_HTTP 3 为了SS能拿到数据,在NAT OUTPUT链中,使用match ttl匹配,在OUTPUT链内将流量全部给SHADOWSOCKS_EXT链; #创建SHADOWSOCKS_EXT链,用于开启kp情况下ss的访问控制实现 -N SHADOWSOCKS_EXT #使用ttl匹配将KP过滤后的数据转到SHADOWSOCKS_EXT链(如果固件不支持ttl匹配,使用下面的命令) -A OUTPUT -p tcp -m ttl --ttl-eq 160 -j SHADOWSOCKS_EXT #如果固件不支持ttl match,可以用mark匹配ip地址的前三位(用0xffffff00作为掩码的形式),来将KP过滤后的数据转到SHADOWSOCKS_EXT链 # echo 192.168.1 | awk -F "." '{printf ("0x%02x", $1)} {printf ("%02x", $2)} {printf ("%02x", $3)} {printf ("00/0xffffff00\n")}' = 0xc0a80100/0xffffff00 -A OUTPUT -p tcp -m mark --mark 0xc0a80100/0xffffff00 -j SHADOWSOCKS_EXT 4 如果开启了acl,比如需要192.168.1.75不走SS(全端口),192.168.1.246走gfwlist模式(80,443端口),192.168.1.214走大陆白名单模式(22,80,443端口),剩余主机全部走大陆白名单模式(全端口): #主机192.168.1.75(0xc0a8014b),流量经过KP过滤后并打上mark后,通过OUTPUT链进入SHADOWSOCKS_EXT链,而未能翻墙(RETURN) -A SHADOWSOCKS_EXT -p tcp -m mark --mark 0xc0a8014b -j RETURN #主机192.168.1.246(0xc0a801f6),流量经过KP过滤后并打上mark后,通过OUTPUT链进入SHADOWSOCKS_EXT链,在此流量被导向了SHADOWSOCKS_GFW链,实现gfwlist模式翻墙(80,443端口) -A SHADOWSOCKS_EXT -p tcp -m multiport --dports 80,443 -m mark --mark 0xc0a801f6 -g SHADOWSOCKS_GFW #主机192.168.1.214(0xc0a801f6),流量经过KP过滤后并打上mark后,通过OUTPUT链进入SHADOWSOCKS_EXT链,在此流量被导向了SHADOWSOCKS_CHN链,实现大陆白名单模式翻墙(22,80,443端口) -A SHADOWSOCKS_EXT -p tcp -m multiport --dports 22,,80,443 -m mark --mark 0xc0a801d6 -g SHADOWSOCKS_CHN #剩余的主机,流量经过KP过滤后并打上mark后,通过OUTPUT链进入SHADOWSOCKS_EXT链,在此流量被导向了SHADOWSOCKS_CHN链,实现大陆白名单模式翻墙(全端口) -A SHADOWSOCKS_EXT -p tcp -j SHADOWSOCKS_CHN 情形: 1 当SS开启,kp未开启:所有流量走ss PREROUTING过,经过分流后,国内的流量在经过OUTPUT的时候,因为KP没开,数据不会匹配到ttl值(或者没匹配到mark值),所以不会过滤广告,翻墙正常 2 当KP开启,SS未开启,所有流量走kp PREROUTING过,广告过滤正常 3 当SS开启,翻墙和acl工作正常的时候,开启KP:KP在PREROUTING内插入到SS前面,会先得到流量,广告过滤正常 4 当KP开启,过滤广告正常的时候,开启SS:SS从原来的从PREROUTING拿流量变成从OUTPUT内拿流量,翻墙和acl会同样正常 5 当KP和SS都开启,此时关闭SS,kp过滤广告正常 6 当KP和SS都开启,此时关闭KP,ss翻墙和acl正常 总结: 使用 ttl + mark (或者纯mark)的方式,可以实现原先很难实现的过滤经过SS流量的广告 主要的改动在于给SS预置好OUTPUT和SHADOWSOCKS_EXT规则链,当kp启用时,它们就会工作,kp关闭时,不会影响正常数据 次要的改动就是给koolproxy默认开启ttl + mark(或者纯mark)功能 ================================================================================================ ================================================ FILE: luci-app-ikoolproxy/koolproxy/Makefile ================================================ include $(TOPDIR)/rules.mk PKG_NAME:=koolproxy PKG_VERSION:=3.8.5 PKG_RELEASE:=$(AUTORELEASE) include $(INCLUDE_DIR)/package.mk define Package/koolproxy SECTION:=multimedia CATEGORY:=Multimedia DEPENDS:=@(aarch64||arm||i386||mips||mipsel||x86_64) TITLE:=koolproxy bin is from koolshare URL:=https://github.com/houzi-/CDN endef define Build/Compile endef define Package/koolproxy/install $(INSTALL_DIR) $(1)/usr/share/koolproxy ifeq ($(ARCH),aarch64) $(INSTALL_BIN) ./files/aarch64 $(1)/usr/share/koolproxy/koolproxy else ifeq ($(ARCH),arm) $(INSTALL_BIN) ./files/arm $(1)/usr/share/koolproxy/koolproxy else ifeq ($(ARCH),i386) $(INSTALL_BIN) ./files/i386 $(1)/usr/share/koolproxy/koolproxy else ifeq ($(ARCH),mips) $(INSTALL_BIN) ./files/mips $(1)/usr/share/koolproxy/koolproxy else ifeq ($(ARCH),mipsel) $(INSTALL_BIN) ./files/mipsel $(1)/usr/share/koolproxy/koolproxy else ifeq ($(ARCH),x86_64) $(INSTALL_BIN) ./files/x86_64 $(1)/usr/share/koolproxy/koolproxy endif endef $(eval $(call BuildPackage,koolproxy)) ================================================ FILE: luci-app-ikoolproxy/luasrc/controller/koolproxy.lua ================================================ module("luci.controller.koolproxy",package.seeall) function index() if not nixio.fs.access("/etc/config/koolproxy") then return end entry({"admin", "services", "koolproxy"}, alias("admin", "services", "koolproxy", "basic"), _("iKoolProxy 滤广告"), 1).dependent = true entry({"admin", "services", "koolproxy", "basic"}, cbi("koolproxy/basic"), _("基本设置"), 1).leaf = true entry({"admin", "services", "koolproxy", "control"}, cbi("koolproxy/control"), _("访问控制"), 2).leaf = true entry({"admin", "services", "koolproxy", "add_rule"}, cbi("koolproxy/add_rule"), _("规则订阅"), 3).leaf = true entry({"admin", "services", "koolproxy", "cert"}, cbi("koolproxy/cert"), _("证书管理"), 4).leaf = true entry({"admin", "services", "koolproxy", "white_list"}, cbi("koolproxy/white_list"), _("网站白名单设置"), 5).leaf = true entry({"admin", "services", "koolproxy", "black_list"}, cbi("koolproxy/black_list"), _("网站黑名单设置"), 6).leaf = true entry({"admin", "services", "koolproxy", "ip_white_list"}, cbi("koolproxy/ip_white_list"), _("IP白名单设置"), 7).leaf = true entry({"admin", "services", "koolproxy", "ip_black_list"}, cbi("koolproxy/ip_black_list"), _("IP黑名单设置"), 8).leaf = true entry({"admin", "services", "koolproxy", "custom_rule"}, cbi("koolproxy/custom_rule"), _("自定义规则"), 9).leaf = true entry({"admin", "services", "koolproxy", "update_log"}, cbi("koolproxy/update_log"), _("更新日志"), 10).leaf = true entry({"admin", "services", "koolproxy", "tips"}, cbi("koolproxy/tips"), _("帮助支持"), 11).leaf = true entry({"admin", "services", "koolproxy", "rss_rule"}, cbi("koolproxy/rss_rule"), nil).leaf = true entry({"admin", "services", "koolproxy", "status"}, call("act_status")).leaf = true end function act_status() local e = {} e.running = luci.sys.call("pidof koolproxy >/dev/null") == 0 e.bin_version = luci.sys.exec("/usr/share/koolproxy/koolproxy -v") luci.http.prepare_content("application/json") luci.http.write_json(e) end ================================================ FILE: luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/add_rule.lua ================================================ o = Map("koolproxy") t = o:section(TypedSection,"rss_rule", translate("iKoolProxy 规则订阅")) t.description = translate("请确保订阅规则的兼容性") t.anonymous = true t.addremove = true t.sortable = true t.template = "cbi/tblsection" t.extedit = luci.dispatcher.build_url("admin/services/koolproxy/rss_rule/%s") t.create = function(...) local sid = TypedSection.create(...) if sid then luci.http.redirect(t.extedit % sid) return end end e = t:option(Flag, "load", translate("启用")) e.default = 0 e = t:option(DummyValue, "name", translate("规则名称")) function e.cfgvalue(...) return Value.cfgvalue(...) or translate("None") end e = t:option(DummyValue,"url", translate("规则地址")) function e.cfgvalue(...) return Value.cfgvalue(...) or translate("None") end e = t:option(DummyValue, "time", translate("更新时间")) return o ================================================ FILE: luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/basic.lua ================================================ local o,t,e local a = luci.sys.exec("head -3 /usr/share/koolproxy/data/rules/koolproxy.txt | grep rules | awk -F' ' '{print $3,$4}'") local b = luci.sys.exec("head -4 /usr/share/koolproxy/data/rules/koolproxy.txt | grep video | awk -F' ' '{print $3,$4}'") local c = luci.sys.exec("head -3 /usr/share/koolproxy/data/rules/daily.txt | grep rules | awk -F' ' '{print $3,$4}'") local s = luci.sys.exec("grep -v !x /usr/share/koolproxy/data/rules/adg.txt | wc -l") local m = luci.sys.exec("grep -v !x /usr/share/koolproxy/data/rules/adgk.txt | wc -l") local u = luci.sys.exec("grep -v !x /usr/share/koolproxy/data/rules/steven.txt | wc -l") local p = luci.sys.exec("grep -v !x /usr/share/koolproxy/data/rules/yhosts.txt | wc -l") local h = luci.sys.exec("grep -v '^!' /usr/share/koolproxy/data/rules/user.txt | wc -l") local l = luci.sys.exec("grep -v !x /usr/share/koolproxy/data/rules/koolproxy.txt | wc -l") local q = luci.sys.exec("grep -v !x /usr/share/koolproxy/data/rules/daily.txt | wc -l") local f = luci.sys.exec("grep -v !x /usr/share/koolproxy/data/rules/antiad.txt | wc -l") local i = luci.sys.exec("cat /usr/share/koolproxy/dnsmasq.adblock | wc -l") o = Map("koolproxy") o.title = translate("iKoolProxy滤广告") o.description = translate("iKoolProxy是基于KoolProxyR重新整理的能识别adblock规则的免费开源软件,追求体验更快、更清洁的网络,屏蔽烦人的广告!") o:section(SimpleSection).template = "koolproxy/koolproxy_status" t = o:section(TypedSection, "global") t.anonymous = true e = t:option(Flag, "enabled", translate("启用")) e.default = 0 e = t:option(Value, "startup_delay", translate("启动延迟")) e:value(0, translate("不启用")) for _, v in ipairs({5, 10, 15, 25, 40, 60}) do e:value(v, translate("%u 秒") %{v}) end e.datatype = "uinteger" e.default = 0 e = t:option(ListValue, "koolproxy_mode", translate("过滤模式")) e:value(1, translate("全局模式")) e:value(2, translate("IPSET模式")) e:value(3, translate("视频模式")) e.default = 1 e = t:option(MultiValue, "koolproxy_rules", translate("内置规则")) e:value("koolproxy.txt", translate("静态规则")) e:value("daily.txt", translate("每日规则")) e:value("kp.dat", translate("视频规则")) e:value("user.txt", translate("自定义规则")) e.optional = false e = t:option(MultiValue, "thirdparty_rules", translate("第三方规则")) e:value("adg.txt", translate("AdGuard规则")) e:value("steven.txt", translate("Steven规则")) e:value("yhosts.txt", translate("Yhosts规则")) e:value("antiad.txt", translate("AntiAD规则")) e:value("adgk.txt", translate("Banben规则")) e.optional = false e = t:option(ListValue, "koolproxy_port", translate("端口控制")) e:value(0, translate("关闭")) e:value(1, translate("开启")) e.default = 0 --e = t:option(ListValue, "koolproxy_ipv6", translate("IPv6支持")) --e:value(0, translate("关闭")) --e:value(1, translate("开启")) --e.default = 0 e = t:option(Value, "koolproxy_bp_port", translate("例外端口")) e.description = translate("单端口:80  多端口:80,443") e:depends("koolproxy_port", "1") e = t:option(Flag, "koolproxy_host", translate("开启Adblock Plus Hosts")) e:depends("koolproxy_mode","2") e.default = 0 e = t:option(ListValue, "koolproxy_acl_default", translate("默认访问控制")) e.description = translate("访问控制设置中其他主机的默认规则") e:value(0, translate("不过滤")) e:value(1, translate("过滤HTTP协议")) e:value(2, translate("过滤HTTP(S)协议")) e:value(3, translate("过滤全端口")) e.default = 1 e = t:option(ListValue, "time_update", translate("定时更新")) e.description = translate("定时更新规则") for t = 0,23 do e:value(t,translate("每天"..t.."点")) end e:value(nil, translate("关闭")) e.default = nil e = t:option(Button, "restart", translate("规则状态")) e.inputtitle = translate("更新规则") e.inputstyle = "reload" e.write = function() luci.sys.call("/usr/share/koolproxy/kpupdate 2>&1 >/dev/null") luci.http.redirect(luci.dispatcher.build_url("admin","services","koolproxy")) end e.description = translate(string.format("更新订阅规则与Adblock Plus Hosts
    AdGuard规则: %s条
    Steven规则: %s条
    Yhosts规则: %s条
    AntiAD规则: %s条
    Banben规则: %s条
    静态规则: %s条
    视频规则: %s
    每日规则: %s条
    自定义规则: %s条
    Host: %s条

    ", s, u, p, f, m, l, b, q, h, i)) return o ================================================ FILE: luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/black_list.lua ================================================ o = Map("koolproxy") t = o:section(TypedSection, "global") t.anonymous = true e = t:option(TextValue, "adblock_domain") e.description = translate("加入的网址将走广告过滤端口。只针对黑名单模式。只能输入WEB地址,如:google.com,每个地址一行。") e.rows = 28 e.wrap = "off" local fs = require "nixio.fs" local i = "/etc/adblocklist/adblock" function e.cfgvalue() return fs.readfile(i) or "" end function e.write(self, section, value) if value then value = value:gsub("\r\n", "\n") else value = "" end fs.writefile("/tmp/adblock", value) if (luci.sys.call("cmp -s /tmp/adblock /etc/adblocklist/adblock") == 1) then fs.writefile(i, value) end fs.remove("/tmp/adblock") end return o ================================================ FILE: luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/cert.lua ================================================ o = Map("koolproxy") t = o:section(TypedSection, "global",translate("证书恢复")) t.description = translate("上传恢复已备份的证书,文件名必须为koolproxyCA.tar.gz") t.anonymous = true e = t:option(DummyValue, "c1status") e = t:option(FileUpload, "") e.template = "koolproxy/caupload" e = t:option(DummyValue,"",nil) e.template = "koolproxy/cadvalue" if nixio.fs.access("/usr/share/koolproxy/data/certs/ca.crt") then t = o:section(TypedSection, "global",translate("证书备份")) t.description = translate("下载备份的证书") t.anonymous = true e = t:option(DummyValue,"c2status") e = t:option(Button,"certificate") e.inputtitle = translate("下载证书备份") e.inputstyle = "reload" e.write = function() luci.sys.call("/usr/share/koolproxy/camanagement backup 2>&1 >/dev/null") Download() luci.http.redirect(luci.dispatcher.build_url("admin","services","koolproxy")) end end function Download() local t,e t = nixio.open("/tmp/upload/koolproxyca.tar.gz","r") luci.http.header('Content-Disposition', 'attachment; filename="koolproxyCA.tar.gz"') luci.http.prepare_content("application/octet-stream") while true do e = t:read(nixio.const.buffersize) if (not e) or (#e==0) then break else luci.http.write(e) end end t:close() luci.http.close() end local t,e t = "/tmp/upload/" nixio.fs.mkdir(t) luci.http.setfilehandler( function(o,a,i) if not e then if not o then return end e = nixio.open(t..o.file,"w") if not e then return end end if a and e then e:write(a) end if i and e then e:close() e = nil luci.sys.call("/usr/share/koolproxy/camanagement restore 2>&1 >/dev/null") end end ) return o ================================================ FILE: luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/control.lua ================================================ o = Map("koolproxy") t = o:section(TypedSection, "acl_rule", translate("iKoolProxy 访问控制")) t.anonymous = true t.description = translate("访问控制列表是用于指定特殊IP过滤模式的工具,如为已安装证书的客户端开启https广告过滤等,MAC或者IP必须填写其中一项。") t.template = "cbi/tblsection" t.sortable = true t.addremove = true e = t:option(Value, "remarks", translate("客户端备注")) e.width = "30%" e = t:option(Value, "ipaddr", translate("内部 IP 地址")) e.width = "20%" e.datatype = "ip4addr" luci.ip.neighbors({family = 4}, function(neighbor) if neighbor.reachable then e:value(neighbor.dest:string(), "%s (%s)" %{neighbor.dest:string(), neighbor.mac}) end end) e = t:option(Value,"mac",translate("MAC 地址")) e.width = "20%" e.datatype = "macaddr" luci.ip.neighbors({family = 4}, function(neighbor) if neighbor.reachable then e:value(neighbor.mac, "%s (%s)" %{neighbor.mac, neighbor.dest:string()}) end end) e = t:option(ListValue, "proxy_mode", translate("访问控制")) e.width = "20%" e:value(0,translate("不过滤")) e:value(1,translate("过滤HTTP协议")) e:value(2,translate("过滤HTTP(S)协议")) e:value(3,translate("过滤全端口")) e.default = 1 return o ================================================ FILE: luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/custom_rule.lua ================================================ o = Map("koolproxy") t = o:section(TypedSection, "global") t.anonymous = true e = t:option(TextValue, "user_rule") e.description = translate("输入你的自定义规则,每条规则一行。") e.rows = 28 e.wrap = "off" local fs = require "nixio.fs" local i = "/usr/share/koolproxy/data/user.txt" function e.cfgvalue() return fs.readfile(i) or "" end function e.write(self, section, value) if value then value = value:gsub("\r\n", "\n") else value = "" end fs.writefile("/tmp/user.txt", value) if (luci.sys.call("cmp -s /tmp/user.txt /usr/share/koolproxy/data/user.txt") == 1) then fs.writefile(i, value) end fs.remove("/tmp/user.txt") end return o ================================================ FILE: luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/ip_black_list.lua ================================================ o = Map("koolproxy") t = o:section(TypedSection, "global") t.anonymous = true e = t:option(TextValue, "adblock_ip") e.description = translate("这些已经加入的ip地址不会使用过滤器.请输入ip地址或ip地址段,每行只能输入一个ip地址。例如,112.123.134.145 / 24或112.123.134.145。") e.rows = 28 e.wrap = "off" local fs = require "nixio.fs" local i = "/etc/adblocklist/adblockip" function e.cfgvalue() return fs.readfile(i) or "" end function e.write(self, section, value) if value then value = value:gsub("\r\n", "\n") else value = "" end fs.writefile("/tmp/adblockip", value) if (luci.sys.call("cmp -s /tmp/adblockip /etc/adblocklist/adblockip") == 1) then fs.writefile(i, value) end fs.remove("/tmp/adblockip") end return o ================================================ FILE: luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/ip_white_list.lua ================================================ o = Map("koolproxy") t = o:section(TypedSection, "global") t.anonymous = true e = t:option(TextValue, "adbypass_ip") e.description = translate("这些已加入的ip地址将使用代理,但只有GFW型号。请输入ip地址或ip地址段,每行只能输入一个ip地址。例如,112.123.134.145 / 24或112.123.134.145。") e.rows = 28 e.wrap = "off" local fs = require "nixio.fs" local i = "/etc/adblocklist/adbypassip" function e.cfgvalue() return fs.readfile(i) or "" end function e.write(self, section, value) if value then value = value:gsub("\r\n", "\n") else value = "" end fs.writefile("/tmp/adbypassip", value) if (luci.sys.call("cmp -s /tmp/adbypassip /etc/adblocklist/adbypassip") == 1) then fs.writefile(i, value) end fs.remove("/tmp/adbypassip") end return o ================================================ FILE: luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/rss_rule.lua ================================================ local m, s, o local koolproxy = "koolproxy" local sid = arg[1] m = Map(koolproxy) m.title = translate("iKoolProxy滤广告 - 编辑规则") m.redirect = luci.dispatcher.build_url("admin/services/koolproxy") if not arg[1] or m.uci:get(koolproxy, sid) ~= "rss_rule" then luci.http.redirect(m.redirect) return end -- [[ Edit Rule ]]-- s = m:section(NamedSection, sid, "rss_rule") s.anonymous = true s.addremove = true o = s:option(Flag, "load", translate("启用")) o.default = 0 o = s:option(Value, "name", translate("规则描述")) o = s:option(Value, "url", translate("规则地址")) o.placeholder="[https|http|ftp]://[Hostname]/[File]" function o.validate(self, value) if not value then return nil else return value end end return m ================================================ FILE: luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/tips.lua ================================================ o = Map("koolproxy") t = o:section(TypedSection, "usetips") t.title = translate("iKoolProxy 帮助支持") t.anonymous = true t:append(Template("koolproxy/tips")) return o ================================================ FILE: luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/update_log.lua ================================================ o = Map("koolproxy") t = o:section(TypedSection, "global") t.anonymous = true local fs = require "nixio.fs" local i = "/var/log/koolproxy.log" e = t:option(TextValue, "kpupdate_log") e.description = translate("查看最近的更新日志") e.rows = 28 e.wrap = "off" function e.cfgvalue() return fs.readfile(i) or "" end function e.write(self, section, value) end return o ================================================ FILE: luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/white_list.lua ================================================ o = Map("koolproxy") t = o:section(TypedSection, "global") t.anonymous = true e = t:option(TextValue, "adbypass_domain") e.description = translate("这些已经加入的网站将不会使用过滤器。请输入网站的域名,每行只能输入一个网站域名。例如google.com。") e.rows = 28 e.wrap = "off" local fs = require "nixio.fs" local i = "/etc/adblocklist/adbypass" function e.cfgvalue() return fs.readfile(i) or "" end function e.write(self, section, value) if value then value = value:gsub("\r\n", "\n") else value = "" end fs.writefile("/tmp/adbypass", value) if (luci.sys.call("cmp -s /tmp/adbypass /etc/adblocklist/adbypass") == 1) then fs.writefile(i, value) end fs.remove("/tmp/adbypass") end return o ================================================ FILE: luci-app-ikoolproxy/luasrc/view/koolproxy/cadvalue.htm ================================================ <%+cbi/valueheader%> <% local val = self:cfgvalue(section) or self.default or "" write(pcdata(val)) %> <%+cbi/valuefooter%> ================================================ FILE: luci-app-ikoolproxy/luasrc/view/koolproxy/caupload.htm ================================================ <%+cbi/valueheader%>
    <%+cbi/valuefooter%> ================================================ FILE: luci-app-ikoolproxy/luasrc/view/koolproxy/koolproxy_status.htm ================================================

    <%:收集数据...%>

    ================================================ FILE: luci-app-ikoolproxy/luasrc/view/koolproxy/tips.htm ================================================

    1、 一般配置:过滤模式(全局模式)+ 默认访问控制(过滤http协议)达到一般的过滤效果。
    2、 最佳配置:在1的基础上,再在 访问控制 + 增加需要过滤的客户端 + 过滤HTTP(S)协议 + 对应客服端安装证书。
    3、 使用步骤:A、更新规则,B、恢复证书,C、设置要过滤的https客户端ip,D、清除浏览器或APP数据或断网重连。
    4、 Adblock Plus的Host列表 + KoolProxy黑名单模式运行更流畅上网体验。
    5、 过滤HTTPS广告需要为相应客户端安装证书,在“访问控制”里添加客户端ip或者mac地址,并选择用过滤HTTP(S)协议
    6、 在路由器下的设备,在浏览器中输入110.110.110.110来下载证书,导入证书目录请选择“受信任的根证书颁发机构”。
    7、 安装完证书后,请在客户端机器上清除浏览器的缓存、视频APP的全部数据、断开网络重新联网。如果访问网页弹出不安全提示,请检查证书是否安装正确。
    8、 如果想在多台路由器上使用一个证书,请先备份证书,然后再在另一个路由器上恢复证书即可。
    ================================================ FILE: luci-app-ikoolproxy/root/etc/adblocklist/adblock ================================================ ================================================ FILE: luci-app-ikoolproxy/root/etc/adblocklist/adblockip ================================================ ================================================ FILE: luci-app-ikoolproxy/root/etc/adblocklist/adbypass ================================================ ================================================ FILE: luci-app-ikoolproxy/root/etc/adblocklist/adbypassip ================================================ ================================================ FILE: luci-app-ikoolproxy/root/etc/config/koolproxy ================================================ config global option enabled '0' option koolproxy_port '0' option startup_delay '0' option koolproxy_acl_default '1' option koolproxy_mode '1' option koolproxy_host '1' option koolproxy_rules 'koolproxy.txt daily.txt kp.dat' option koolproxy_ipv6 '0' option time_update 'nil' config acl_rule option proxy_mode '2' option remarks '选要滤https的客户端' option ipaddr '192.168.8.168' config usetips option load '0' option name '1' option url '1' ================================================ FILE: luci-app-ikoolproxy/root/etc/init.d/koolproxy ================================================ #!/bin/sh /etc/rc.common # # Copyright (C) 2015 OpenWrt-dist # Copyright (C) 2016 fw867 # # This is free software, licensed under the GNU General Public License v3. # See /LICENSE for more information. # START=99 STOP=99 USE_PROCD=1 CONFIG=koolproxy KP_DIR=/usr/share/koolproxy TMP_DIR=/tmp alias echo_date='echo $(date +%Y年%m月%d日\ %X):' config_n_get() { local ret=$(uci get $CONFIG.$1.$2 2>/dev/null) echo ${ret:=$3} } config_t_get() { local index=0 [ -n "$4" ] && index=$4 local ret=$(uci get $CONFIG.@$1[$index].$2 2>/dev/null) echo ${ret:=$3} } add_ipset_conf() { if [ -s /etc/adblocklist/adbypass ]; then echo_date 添加白名单软连接... cat /etc/adblocklist/adbypass | sed "s/,/\n/g" | sed "s/^/ipset=&\/./g" | sed "s/$/\/white_kp_list/g" >> /tmp/adbypass.conf rm -rf /tmp/dnsmasq.d/adbypass.conf ln -sf /tmp/adbypass.conf /tmp/dnsmasq.d/adbypass.conf dnsmasq_restart=1 fi if [ "$koolproxy_mode" == "2" ]; then if [ "$koolproxy_host" == "1" ];then echo_date 添加Adblock Plus Host软连接... ln -sf $KP_DIR/dnsmasq.adblock /tmp/dnsmasq.d/dnsmasq.adblock fi echo_date 添加黑名单软连接... rm -rf /tmp/dnsmasq.d/koolproxy_ipset.conf ln -sf $KP_DIR/koolproxy_ipset.conf /tmp/dnsmasq.d/koolproxy_ipset.conf echo_date 添加自定义黑名单软连接... if [ -s /etc/adblocklist/adblock ]; then cat /etc/adblocklist/adblock | sed "s/,/\n/g" | sed "s/^/ipset=&\/./g" | sed "s/$/\/black_koolproxy/g" >> /tmp/adblock.conf rm -rf /tmp/dnsmasq.d/adblock.conf ln -sf /tmp/adblock.conf /tmp/dnsmasq.d/adblock.conf fi dnsmasq_restart=1 fi } remove_ipset_conf() { if [ -L "/tmp/dnsmasq.d/adbypass.conf" ]; then echo_date 移除白名单软连接... rm -rf /tmp/adbypass.conf rm -rf /tmp/dnsmasq.d/adbypass.conf dnsmasq_restart=1 fi if [ -L "/tmp/dnsmasq.d/koolproxy_ipset.conf" ]; then echo_date 移除黑名单软连接... rm -rf /tmp/dnsmasq.d/koolproxy_ipset.conf dnsmasq_restart=1 fi if [ -L "/tmp/dnsmasq.d/adblock.conf" ]; then echo_date 移除自定义黑名单软连接... rm -rf /tmp/dnsmasq.d/adblock.conf rm -rf /tmp/adblock.conf dnsmasq_restart=1 fi if [ -L "/tmp/dnsmasq.d/dnsmasq.adblock" ]; then echo_date 移除Adblock Plus Host软连接... rm -rf /tmp/dnsmasq.d/dnsmasq.adblock dnsmasq_restart=1 fi } restart_dnsmasq() { if [ "$dnsmasq_restart" == "1" ]; then echo_date 重启dnsmasq进程... /etc/init.d/dnsmasq restart > /dev/null 2>&1 fi } creat_ipset() { echo_date 创建ipset名单 # Load ipset netfilter kernel modules and kernel modules ipset -! create white_kp_list nethash ipset -! create black_koolproxy iphash cat $KP_DIR/data/rules/yhosts.txt $KP_DIR/data/rules/adg.txt $KP_DIR/data/rules/steven.txt $KP_DIR/data/rules/antiad.txt $KP_DIR/data/rules/koolproxy.txt $KP_DIR/data/rules/adgk.txt $KP_DIR/data/rules/daily.txt $KP_DIR/data/rules/user.txt | grep -Eo "(.\w+\:[1-9][0-9]{1,4})/" | grep -Eo "([0-9]{1,5})" | sort -un | sed -e '$a\80' -e '$a\443' | sed -e "s/^/-A kp_full_port &/g" -e "1 i\-N kp_full_port bitmap:port range 0-65535 " | ipset -R -! } add_white_black_ip() { echo_date 添加ipset名单 ip_lan="0.0.0.0/8 10.0.0.0/8 100.64.0.0/10 127.0.0.0/8 169.254.0.0/16 172.16.0.0/12 192.0.0.0/24 192.0.2.0/24 192.31.196.0/24 192.52.193.0/24 192.88.99.0/24 192.168.0.0/16 192.175.48.0/24 198.18.0.0/15 198.51.100.0/24 203.0.113.0/24 224.0.0.0/4 240.0.0.0/4 255.255.255.255" for ip in $ip_lan do ipset -A white_kp_list $ip >/dev/null 2>&1 done sed -e "s/^/add white_kp_list &/g" /etc/adblocklist/adbypassip | awk '{print $0} END{print "COMMIT"}' | ipset -R 2>/dev/null ipset -A black_koolproxy 110.110.110.110 >/dev/null 2>&1 sed -e "s/^/add black_koolproxy &/g" /etc/adblocklist/adblockip | awk '{print $0} END{print "COMMIT"}' | ipset -R 2>/dev/null } load_config() { ENABLED=$(config_t_get global enabled 0) [ $ENABLED -ne 1 ] && return 0 koolproxy_mode=$(config_t_get global koolproxy_mode 1) koolproxy_host=$(config_t_get global koolproxy_host 0) koolproxy_acl_default=$(config_t_get global koolproxy_acl_default 1) koolproxy_port=$(config_t_get global koolproxy_port 0) koolproxy_bp_port=$(config_t_get global koolproxy_bp_port) koolproxy_ipv6=$(config_t_get global koolproxy_ipv6 0) config_load $CONFIG return 1 } __load_lan_acl() { local mac local ipaddr local proxy_mode config_get mac $1 mac config_get ipaddr $1 ipaddr config_get proxy_mode $1 proxy_mode [ -n "$ipaddr" ] && [ -z "$mac" ] && echo_date 加载ACL规则:【$ipaddr】模式为:$(get_mode_name $proxy_mode) [ -z "$ipaddr" ] && [ -n "$mac" ] && echo_date 加载ACL规则:【$mac】模式为:$(get_mode_name $proxy_mode) [ -n "$ipaddr" ] && [ -n "$mac" ] && echo_date 加载ACL规则:【$ipaddr】【$mac】模式为:$(get_mode_name $proxy_mode) #echo iptables -t nat -A KOOLPROXY $(factor $ipaddr "-s") $(factor $mac "-m mac --mac-source") -p tcp $(get_jump_mode $proxy_mode) $(get_action_chain $proxy_mode) iptables -t nat -A KOOLPROXY $(factor $ipaddr "-s") $(factor $mac "-m mac --mac-source") -p tcp $(get_jump_mode $proxy_mode) $(get_action_chain $proxy_mode) acl_nu=`expr $acl_nu + 1` } lan_acess_control() { acl_nu=0 [ -z "$koolproxy_acl_default" ] && koolproxy_acl_default=1 config_foreach __load_lan_acl acl_rule if [ $acl_nu -ne 0 ]; then echo_date 加载ACL规则:其余主机模式为:$(get_mode_name $koolproxy_acl_default) else echo_date 加载ACL规则:所有模式为:$(get_mode_name $koolproxy_acl_default) fi } __load_exrule() { local file local exrule local enable config_get file $1 file config_get exrule $1 url config_get enable $1 load if [ -n "$exrule" ]; then if [ $enable -ne 1 ]; then [ -n "$file" ] && [ -f $KP_DIR/data/rules/$file ] && rm -f $KP_DIR/data/rules/$file uci set koolproxy.$1.time="" uci commit koolproxy return fi if [ -z "$file" ]; then file=$(echo $exrule |awk -F "/" '{print $NF}') uci set koolproxy.$1.file="$file" uci commit koolproxy fi if [ ! -f $KP_DIR/data/rules/$file ]; then wget $exrule -q -O $TMP_DIR/$file if [ "$?" == "0" ]; then uci set koolproxy.$1.time="`date +%Y-%m-%d" "%H:%M`" uci commit koolproxy mv $TMP_DIR/$file $KP_DIR/data/rules/$file else echo "koolproxy download rule $file failed!" [ -f $TMP_DIR/$file ] && rm -f $TMP_DIR/$file fi fi cat $KP_DIR/data/rules/$file >>$KP_DIR/data/rules/user.txt fi } load_user_rules() { cp $KP_DIR/data/user.txt $KP_DIR/data/rules/user.txt config_foreach __load_exrule rss_rule } load_rules() { sed -i '1,9s/1/0/g' $KP_DIR/data/source.list local rulelist="$(uci -q get koolproxy.@global[0].koolproxy_rules)" for rule in $rulelist do case "$rule" in koolproxy.txt) sed -i '1s/0/1/g' $KP_DIR/data/source.list ;; daily.txt) sed -i '2s/0/1/g' $KP_DIR/data/source.list ;; kp.dat) sed -i '3s/0/1/g' $KP_DIR/data/source.list ;; user.txt) sed -i '4s/0/1/g' $KP_DIR/data/source.list ;; esac done local rulelist="$(uci -q get koolproxy.@global[0].thirdparty_rules)" for rule in $rulelist do case "$rule" in yhosts.txt) sed -i '5s/0/1/g' $KP_DIR/data/source.list ;; adg.txt) sed -i '6s/0/1/g' $KP_DIR/data/source.list ;; steven.txt) sed -i '7s/0/1/g' $KP_DIR/data/source.list ;; antiad.txt) sed -i '8s/0/1/g' $KP_DIR/data/source.list ;; adgk.txt) sed -i '9s/0/1/g' $KP_DIR/data/source.list ;; esac done } get_mode_name() { case "$1" in 0) echo "不过滤" ;; 1) echo "过滤HTTP协议" ;; 2) echo "过滤HTTP(S)协议" ;; 3) echo "过滤全端口" ;; esac } get_jump_mode() { case "$1" in 0) echo "-j" ;; *) echo "-g" ;; esac } get_action_chain() { case "$1" in 0) echo "RETURN" ;; 1) echo "KP_HTTP" ;; 2) echo "KP_HTTPS" ;; 3) echo "KP_ALL_PORT" ;; esac } factor() { if [ -z "$1" ] || [ -z "$2" ]; then echo "" else echo "$2 $1" fi } load_nat() { echo_date 加载nat规则! #----------------------BASIC RULES--------------------- echo_date 写入iptables规则到nat表中... # 创建KOOLPROXY nat rule iptables -t nat -N KOOLPROXY # 局域网地址不走KP iptables -t nat -A KOOLPROXY -m set --match-set white_kp_list dst -j RETURN # 生成对应CHAIN iptables -t nat -N KP_HTTP iptables -t nat -A KP_HTTP -p tcp -m multiport --dport 80 -j REDIRECT --to-ports 3000 iptables -t nat -N KP_HTTPS iptables -t nat -A KP_HTTPS -p tcp -m multiport --dport 80,443 -j REDIRECT --to-ports 3000 iptables -t nat -N KP_ALL_PORT #iptables -t nat -A KP_ALL_PORT -p tcp -j REDIRECT --to-ports 3000 # 端口控制 if [ "$koolproxy_port" == "1" ]; then echo_date 开启端口控制:【$koolproxy_bp_port】 if [ -n "$koolproxy_bp_port" ]; then iptables -t nat -A KP_ALL_PORT -p tcp -m multiport ! --dport $koolproxy_bp_port -m set --match-set kp_full_port dst -j REDIRECT --to-ports 3000 else iptables -t nat -A KP_ALL_PORT -p tcp -m set --match-set kp_full_port dst -j REDIRECT --to-ports 3000 fi else iptables -t nat -A KP_ALL_PORT -p tcp -m set --match-set kp_full_port dst -j REDIRECT --to-ports 3000 fi [ "$koolproxy_ipv6" == "1" ] && ip6tables -t nat -I PREROUTING -p tcp -j REDIRECT --to-ports 3000 # 局域网控制 lan_acess_control # 剩余流量转发到缺省规则定义的链中 iptables -t nat -A KOOLPROXY -p tcp -j $(get_action_chain $koolproxy_acl_default) # 重定所有流量到 KOOLPROXY # 全局模式和视频模式 [ "$koolproxy_mode" == "1" ] || [ "$koolproxy_mode" == "3" ] && iptables -t nat -I PREROUTING 1 -p tcp -j KOOLPROXY # ipset 黑名单模式 [ "$koolproxy_mode" == "2" ] && iptables -t nat -I PREROUTING 1 -p tcp -m set --match-set black_koolproxy dst -j KOOLPROXY } add_cru() { time=$(config_t_get global time_update) wirtecron=$(cat /etc/crontabs/root | grep "00 $time * * *" | grep kpupdate) if [ -z "$wirtecron" ];then sed -i '/kpupdate/d' /etc/crontabs/root >/dev/null 2>&1 echo "0 $time * * * /usr/share/koolproxy/kpupdate" >> /etc/crontabs/root fi } del_cru() { sed -i '/kpupdate/d' /etc/crontabs/root >/dev/null 2>&1 } detect_cert(){ if [ ! -f $KP_DIR/data/private/ca.key.pem -o ! -f $KP_DIR/data/cert/ca.crt ]; then echo_date 开始生成koolproxy证书,用于https过滤! cd $KP_DIR/data && sh gen_ca.sh fi } flush_nat() { echo_date 移除nat规则... cd $TMP_DIR iptables -t nat -S | grep -E "KOOLPROXY|KP_HTTP|KP_HTTPS|KP_ALL_PORT" | sed 's/-A/iptables -t nat -D/g'|sed 1,4d > clean.sh && chmod 777 clean.sh && ./clean.sh [ -f $TMP_DIR/clean.sh ] && rm -f $TMP_DIR/clean.sh iptables -t nat -X KOOLPROXY > /dev/null 2>&1 iptables -t nat -X KP_HTTP > /dev/null 2>&1 iptables -t nat -X KP_HTTPS > /dev/null 2>&1 iptables -t nat -X KP_ALL_PORT > /dev/null 2>&1 ipset -F black_koolproxy > /dev/null 2>&1 && ipset -X black_koolproxy > /dev/null 2>&1 ipset -F white_kp_list > /dev/null 2>&1 && ipset -X white_kp_list > /dev/null 2>&1 ip6tables -t nat -D PREROUTING -p tcp -j REDIRECT --to-ports 3000 > /dev/null 2>&1 } export_ipt_rules() { FWI=$(uci get firewall.koolproxy.path 2>/dev/null) [ -n "$FWI" ] || return 0 cat <<-CAT >>$FWI iptables-save -c | grep -v -E "KOOLPROXY|KP" | iptables-restore -c iptables-restore -n <<-EOF $(iptables-save | grep -E "KOOLPROXY|KP|^\*|^COMMIT" |\ sed -e "s/^-A \(PREROUTING\)/-I \1 1/") EOF CAT return $? } flush_ipt_rules() { FWI=$(uci get firewall.koolproxy.path 2>/dev/null) [ -n "$FWI" ] && echo '# firewall include file' >$FWI return 0 } pre_start() { load_config [ $? -ne 1 ] && return 0 iptables -t nat -C PREROUTING -p tcp -j KOOLPROXY 2>/dev/null && [ $? -eq 0 ] && return 0; detect_cert load_rules load_user_rules add_ipset_conf && restart_dnsmasq creat_ipset add_white_black_ip load_nat flush_ipt_rules && export_ipt_rules add_cru [ "$koolproxy_mode" == "1" ] && echo_date 选择【全局过滤模式】 [ "$koolproxy_mode" == "2" ] && echo_date 选择【IPSET过滤模式】 if [ "$koolproxy_mode" == "3" ]; then echo_date 选择【视频过滤模式】 sed -i '1s/1/0/g;2s/1/0/g' $KP_DIR/data/source.list fi return 1 } post_stop() { load_config [ $? -ne 1 ] && NO_RESTART_DNSMASQ=false if [ $NO_RESTART_DNSMASQ ]; then remove_ipset_conf else remove_ipset_conf && restart_dnsmasq fi flush_ipt_rules flush_nat del_cru return 0 } start_service() { echo_date ================== koolproxy启用 ================ pre_start [ $? -ne 1 ] && return 0 procd_open_instance procd_set_param command /usr/share/koolproxy/koolproxy procd_append_param command --mark procd_append_param command --ttl 160 procd_set_param respawn procd_set_param file /etc/adblocklist/adblock procd_set_param file /etc/adblocklist/adblockip procd_set_param file /usr/share/koolproxy/data/user.txt procd_set_param stdout 1 procd_set_param stderr 1 procd_close_instance logger "koolproxy has started." echo_date ================================================= } stop_service() { echo_date ====================== 关闭 ===================== post_stop logger "koolproxy has stopped." echo_date ================================================= } reload_service() { logger "koolproxy reload service." NO_RESTART_DNSMASQ=true stop start } service_triggers() { procd_add_reload_trigger "koolproxy" } restart() { logger "koolproxy restart service." NO_RESTART_DNSMASQ=true stop start } boot() { local delay=$(config_t_get global startup_delay 0) (sleep $delay && start >/dev/null 2>&1) & return 0 } ================================================ FILE: luci-app-ikoolproxy/root/etc/uci-defaults/luci-koolproxy ================================================ #!/bin/sh uci -q batch <<-EOF >/dev/null [ -e "/etc/config/ucitrack" ] && { delete ucitrack.@koolproxy[-1] add ucitrack koolproxy set ucitrack.@koolproxy[-1].init=koolproxy commit ucitrack } delete firewall.koolproxy set firewall.koolproxy=include set firewall.koolproxy.type=script set firewall.koolproxy.path=/var/etc/koolproxy.include set firewall.koolproxy.reload=1 commit firewall EOF rm -f /tmp/luci-indexcache exit 0 ================================================ FILE: luci-app-ikoolproxy/root/lib/upgrade/keep.d/koolproxy ================================================ /usr/share/koolproxy/data/certs/ca.crt /usr/share/koolproxy/data/private/base.key.pem /usr/share/koolproxy/data/private/ca.key.pem ================================================ FILE: luci-app-ikoolproxy/root/usr/sbin/adblockplus ================================================ #!/bin/sh echo "$(date "+%F %T"): 正在下载adblockplus规则..." wget-ssl --quiet --no-check-certificate https://easylist-downloads.adblockplus.org/easylistchina+easylist.txt -O /tmp/adlist.txt if [ "$?" == "0" ]; then grep ^\|\|[^\*]*\^$ /tmp/adlist.txt | sed -e 's:||:address\=\/:' -e 's:\^:/0\.0\.0\.0:' > /tmp/dnsmasq.adblock rm -f /tmp/adlist.txt diff /tmp/dnsmasq.adblock /usr/share/koolproxy/dnsmasq.adblock >/dev/null [ $? = 0 ] && echo "$(date "+%F %T"): adblockplus本地规则和服务器规则相同,无需更新!" && rm -f /tmp/dnsmasq.adblock && return 1 echo "$(date "+%F %T"): 检测到adblockplus规则有更新,开始转换规则!" sed -i '/youku/d' /tmp/dnsmasq.adblock >/dev/null 2>&1 sed -i '/[1-9]\{1,3\}\.[1-9]\{1,3\}\.[1-9]\{1,3\}\.[1-9]\{1,3\}/d' /tmp/dnsmasq.adblock >/dev/null 2>&1 mv /tmp/dnsmasq.adblock /usr/share/koolproxy/dnsmasq.adblock echo "$(date "+%F %T"): adblockplus规则转换完成,应用新规则。" echo "" echo "$(date "+%F %T"): 重启dnsmasq进程" /etc/init.d/dnsmasq restart > /dev/null 2>&1 return 0 else echo "$(date "+%F %T"): 获取在线版本时出现错误! " [ -f /tmp/adlist.txt ] && rm -f /tmp/adlist.txt return 1 fi ================================================ FILE: luci-app-ikoolproxy/root/usr/share/koolproxy/adblock.conf ================================================ ================================================ FILE: luci-app-ikoolproxy/root/usr/share/koolproxy/camanagement ================================================ #!/bin/sh kpfolder="/usr/share/koolproxy/data" kplogfile="/var/log/koolproxy.log" readyfolder="/tmp/upload/koolproxy" backup() { if [ ! -f $kpfolder/private/ca.key.pem ]; then echo "未找到ca.key.pem,请先运行Koolproxy一次!" > $kplogfile exit 1 fi if [ ! -f $kpfolder/private/base.key.pem ]; then echo "未找到base.key.pem,请先运行Koolproxy一次!" > $kplogfile exit 1 fi if [ ! -f $kpfolder/certs/ca.crt ]; then echo "未找到ca.crt,请先运行Koolproxy一次!" > $kplogfile exit 1 fi mkdir -p /tmp/upload cd $kpfolder tar czf /tmp/upload/koolproxyca.tar.gz private/ca.key.pem private/base.key.pem certs/ca.crt [ -f /tmp/upload/koolproxyca.tar.gz ] && echo "证书备份已成功生成。" > $kplogfile } restore() { if [ ! -f /tmp/upload/koolproxyCA.tar.gz ]; then echo "未找到备份文件,文件名必须为koolproxyCA.tar.gz或已损坏,请检查备份文件!" >> $kplogfile else mkdir -p $readyfolder cd $readyfolder tar xzf /tmp/upload/koolproxyCA.tar.gz fi if [ ! -f $readyfolder/private/ca.key.pem ]; then echo "未找到ca.key.pem,备份文件不正确或已损坏,请检查备份文件!" > $kplogfile exit 1 fi if [ ! -f $readyfolder/private/base.key.pem ]; then echo "未找到base.key.pem,备份文件不正确或已损坏,请检查备份文件!" > $kplogfile exit 1 fi if [ ! -f $readyfolder/certs/ca.crt ]; then echo "未找到ca.crt,备份文件不正确或已损坏,请检查备份文件!" > $kplogfile exit 1 fi mv -f $readyfolder/private/ca.key.pem $kpfolder/private/ca.key.pem mv -f $readyfolder/private/base.key.pem $kpfolder/private/base.key.pem mv -f $readyfolder/certs/ca.crt $kpfolder/certs/ca.crt rm -rf $readyfolder rm -f /tmp/upload/koolproxyCA.tar.gz echo "证书成功还原,重启Koolproxy。" > $kplogfile /etc/init.d/koolproxy restart } case "$*" in "backup") backup ;; "restore") restore ;; "help") echo "use backup or restore" ;; esac ================================================ FILE: luci-app-ikoolproxy/root/usr/share/koolproxy/data/gen_ca.sh ================================================ #!/bin/sh alias echo_date='echo $(date +%Y年%m月%d日\ %X):' if [ ! -f openssl.cnf ]; then echo_date "Cannot found openssl.cnf" exit 1 fi if [ -f /usr/share/koolproxy/data/private/ca.key.pem ]; then echo_date "已经有证书了!" else echo_date "生成证书中..." #step 1, root ca mkdir -p certs private rm -f serial private/ca.key.pem chmod 700 private echo 1000 > serial openssl genrsa -traditional -aes256 -passout pass:koolshare -out private/ca.key.pem 2048 chmod 400 private/ca.key.pem openssl req -config openssl.cnf -passin pass:koolshare \ -subj "/C=CN/ST=Beijing/L=KP/O=KoolProxy inc/CN=koolproxy.com" \ -key private/ca.key.pem \ -new -x509 -days 7300 -sha256 -extensions v3_ca \ -out certs/ca.crt #step 2, domain rsa key openssl genrsa -traditional -aes256 -passout pass:koolshare -out private/base.key.pem 2048 echo_date "证书生成完毕..." fi ================================================ FILE: luci-app-ikoolproxy/root/usr/share/koolproxy/data/openssl.cnf ================================================ # OpenSSL root CA configuration file. # Copy to `/root/ca/openssl.cnf`. [ ca ] # `man ca` default_ca = CA_default [ CA_default ] # Directory and file locations. dir = ./ca certs = $dir/certs crl_dir = $dir/crl new_certs_dir = $dir/newcerts database = $dir/index.txt serial = $dir/serial RANDFILE = $dir/private/.rand # The root key and root certificate. private_key = $dir/private/ca.key.pem certificate = $dir/certs/ca.cert.pem # For certificate revocation lists. crlnumber = $dir/crlnumber crl = $dir/crl/ca.crl.pem crl_extensions = crl_ext default_crl_days = 30 # SHA-1 is deprecated, so use SHA-2 instead. default_md = sha256 name_opt = ca_default cert_opt = ca_default default_days = 375 preserve = no policy = policy_strict [ policy_strict ] # The root CA should only sign intermediate certificates that match. # See the POLICY FORMAT section of `man ca`. countryName = match stateOrProvinceName = match organizationName = match organizationalUnitName = optional commonName = supplied emailAddress = optional [ policy_loose ] # Allow the intermediate CA to sign a more diverse range of certificates. # See the POLICY FORMAT section of the `ca` man page. countryName = optional stateOrProvinceName = optional localityName = optional organizationName = optional organizationalUnitName = optional commonName = supplied emailAddress = optional [ req ] # Options for the `req` tool (`man req`). default_bits = 2048 distinguished_name = req_distinguished_name string_mask = utf8only # SHA-1 is deprecated, so use SHA-2 instead. default_md = sha256 # Extension to add when the -x509 option is used. x509_extensions = v3_ca [ req_distinguished_name ] # See . countryName = Country Name (2 letter code) stateOrProvinceName = State or Province Name localityName = Locality Name 0.organizationName = Organization Name organizationalUnitName = Organizational Unit Name commonName = Common Name emailAddress = Email Address # Optionally, specify some defaults. countryName_default = GB stateOrProvinceName_default = England localityName_default = 0.organizationName_default = Alice Ltd organizationalUnitName_default = emailAddress_default = [ v3_ca ] # Extensions for a typical CA (`man x509v3_config`). subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always,issuer basicConstraints = critical, CA:true keyUsage = critical, digitalSignature, cRLSign, keyCertSign [ v3_intermediate_ca ] # Extensions for a typical intermediate CA (`man x509v3_config`). subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always,issuer basicConstraints = critical, CA:true, pathlen:0 keyUsage = critical, digitalSignature, cRLSign, keyCertSign [ usr_cert ] # Extensions for client certificates (`man x509v3_config`). basicConstraints = CA:FALSE nsCertType = client, email nsComment = "OpenSSL Generated Client Certificate" subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer keyUsage = critical, nonRepudiation, digitalSignature, keyEncipherment extendedKeyUsage = clientAuth, emailProtection [ server_cert ] # Extensions for server certificates (`man x509v3_config`). basicConstraints = CA:FALSE nsCertType = server nsComment = "OpenSSL Generated Server Certificate" subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer:always keyUsage = critical, digitalSignature, keyEncipherment extendedKeyUsage = serverAuth [ crl_ext ] # Extension for CRLs (`man x509v3_config`). authorityKeyIdentifier=keyid:always [ ocsp ] # Extension for OCSP signing certificates (`man ocsp`). basicConstraints = CA:FALSE subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer keyUsage = critical, digitalSignature extendedKeyUsage = critical, OCSPSigning ================================================ FILE: luci-app-ikoolproxy/root/usr/share/koolproxy/data/rules/user.txt ================================================ ! ******************************* KoolProxyR 自定义过滤语法简表 ******************************* ! ------------------------ 规则基于adblock规则,并进行了语法部分的扩展 ------------------------ ! ABP规则请参考https://adblockplus.org/zh_CN/filters,下面为大致摘要 ! "!" 为行注释符,注释行以该符号起始作为一行注释语义,用于规则描述 ! "@@" 为白名单符,白名单具有最高优先级,放行过滤的网站,例如:@@||taobao.com ! "@@@@" 超级白名单,比白名单符拥有更高的优先级,主要用于放行https网站,例如:@@@@||https://taobao.com ! ------------------------------------------------------------------------------------------ ! "*" 为字符通配符,能够匹配0长度或任意长度的字符串,该通配符不能与正则语法混用。 ! "^" 为分隔符,可以是除了字母、数字或者 _ - . % 之外的任何字符。 ! "~" 为排除标识符,通配符能过滤大多数广告,但同时存在误杀, 可以通过排除标识符修正误杀链接。 ! 注:通配符仅在 url 规则中支持,html 规则中不支持 ! ------------------------------------------------------------------------------------------ ! "|" 为管线符号,来表示地址的最前端或最末端 ! "||" 为子域通配符,方便匹配主域名下的所有子域 ! 用法及例子如下:(以下等号表示等价于) ! ||xx.com/ad = http://xx.com/ad* || http://*.xx.com/ad* ! ||http://xx.com/ad = http://xx.com/ad* || http://*.xx.com/ad* ! ||https://xx.com/ad = https://xx.com/ad* || https://*.xx.com/ad* ! |xx.com/ad = http://xx.com/ad* ! |http://xx.com/ad = http://xx.com/ad* ! |https://xx.com/ad = https://xx.com/ad* ! ad = http://*ad* ! http://ad = http://*ad* ! https://ad = 不支持,需要指定域名,如下例 ! https://xx.com/ad = |https://xx.com/ad = https://xx.com/ad* ! [同时可以表示两个以及两个以上的域名]如下例子 ! https://xx.ad.com 和 https://xxx.xx.ad.com = ||https://ad.com (注意! 由于https的原因使用要非常谨慎,不可以大范围使用) ! ------------------------------------------------------------------------------------------ ! 兼容adblock规则的html规则语法,例如: ! fulldls.com,torrentzap.com##.tp_reccomend_banner ! 但是推荐写成以下标准写法: ! ||fulldls.com##.tp_reccomend_banner ! ||torrentzap.com##.tp_reccomend_banner ! 如果一个网站html规则有多条,可以合并为这样: ! ||torrentzap.com##.tp_reccomend_banner,.ad_top,[class="ad_right"]...... ! ------------------------------------------------------------------------------------------ ! 文本替换语法:$s@匹配内容@替换内容@ ! 非标准端口过滤语法:||abc.com:8081/ad.html或者|http://adb.com:8081/ ! 文本替换例子:|http://cdn.pcbeta.js.inimc.com/data/cache/common.js?$s@old@new@ ! 重定向语法:$r@匹配内容@替换内容@ ! 重定向例子:|http://koolshare.cn$r@http://koolshare.cn/*@http://www.qq.com@ ! 注:文本替换语法及重定向语法中的匹配内容不仅支持通配符功能,而且额外支持以下功能 ! 支持通配符 * 和 ? 表示单个字符 ! 支持全正则匹配,/正则内容/ 表示应用正则匹配 ! 正则替换:替换内容支持 $1 $2 这样的符号 ! 普通替换:替换内容支持 * 这样的符号,表示把命中的内容复制到替换的内容。(类似 $1 $2,但是 * 号会自动计算数字) ! ------------------------------------------------------------------------------------------ ! 未来将逐步添加相关语法,兼容adblock puls的更多语法,敬请期待。 ! ****************************************************************************************** ================================================ FILE: luci-app-ikoolproxy/root/usr/share/koolproxy/data/source.list ================================================ 1|koolproxy.txt||静态规则 1|daily.txt||每日规则 1|kp.dat||视频规则 1|user.txt||自定义规则 1|yhosts.txt||Yhosts规则 1|adg.txt||AdGuard规则 1|steven.txt||Steven规则 1|antiad.txt||AntiAD规则 1|adgk.txt||坂本规则 ================================================ FILE: luci-app-ikoolproxy/root/usr/share/koolproxy/data/user.txt ================================================ ! ******************************* KoolProxy 自定义过滤语法简表 ******************************* ! ------------------------ 规则基于adblock规则,并进行了语法部分的扩展 ------------------------ ! ABP规则请参考https://adblockplus.org/zh_CN/filters,下面为大致摘要 ! "!" 为行注释符,注释行以该符号起始作为一行注释语义,用于规则描述 ! "@@" 为白名单符,白名单具有最高优先级,放行过滤的网站,例如:@@||taobao.com ! "@@@@" 超级白名单,比白名单符拥有更高的优先级,主要用于放行https网站,例如:@@@@||https://taobao.com ! ------------------------------------------------------------------------------------------ ! "*" 为字符通配符,能够匹配0长度或任意长度的字符串,该通配符不能与正则语法混用。 ! "^" 为分隔符,可以是除了字母、数字或者 _ - . % 之外的任何字符。 ! "~" 为排除标识符,通配符能过滤大多数广告,但同时存在误杀, 可以通过排除标识符修正误杀链接。 ! 注:通配符仅在 url 规则中支持,html 规则中不支持 ! ------------------------------------------------------------------------------------------ ! "|" 为管线符号,来表示地址的最前端或最末端 ! "||" 为子域通配符,方便匹配主域名下的所有子域 ! 用法及例子如下:(以下等号表示等价于) ! ||xx.com/ad = http://xx.com/ad* || http://*.xx.com/ad* ! ||http://xx.com/ad = http://xx.com/ad* || http://*.xx.com/ad* ! ||https://xx.com/ad = https://xx.com/ad* || https://*.xx.com/ad* ! |xx.com/ad = http://xx.com/ad* ! |http://xx.com/ad = http://xx.com/ad* ! |https://xx.com/ad = https://xx.com/ad* ! ad = http://*ad* ! http://ad = http://*ad* ! https://ad = 不支持,需要指定域名,如下例 ! https://xx.com/ad = |https://xx.com/ad = https://xx.com/ad* ! [同时可以表示两个以及两个以上的域名]如下例子 ! https://xx.ad.com 和 https://xxx.xx.ad.com = ||https://ad.com (注意! 由于https的原因使用要非常谨慎,不可以大范围使用) ! ------------------------------------------------------------------------------------------ ! 兼容adblock规则的html规则语法,例如: ! fulldls.com,torrentzap.com##.tp_reccomend_banner ! 但是推荐写成以下标准写法: ! ||fulldls.com##.tp_reccomend_banner ! ||torrentzap.com##.tp_reccomend_banner ! 如果一个网站html规则有多条,可以合并为这样: ! ||torrentzap.com##.tp_reccomend_banner,.ad_top,[class="ad_right"]...... ! ------------------------------------------------------------------------------------------ ! 文本替换语法:$s@匹配内容@替换内容@ ! 非标准端口过滤语法:||abc.com:8081/ad.html或者|http://adb.com:8081/ ! 文本替换例子:|http://cdn.pcbeta.js.inimc.com/data/cache/common.js?$s@old@new@ ! 重定向语法:$r@匹配内容@替换内容@ ! 重定向例子:|http://koolshare.cn$r@http://koolshare.cn/*@http://www.qq.com@ ! 注:文本替换语法及重定向语法中的匹配内容不仅支持通配符功能,而且额外支持以下功能 ! 支持通配符 * 和 ? 表示单个字符 ! 支持全正则匹配,/正则内容/ 表示应用正则匹配 ! 正则替换:替换内容支持 $1 $2 这样的符号 ! 普通替换:替换内容支持 * 这样的符号,表示把命中的内容复制到替换的内容。(类似 $1 $2,但是 * 号会自动计算数字) ! ------------------------------------------------------------------------------------------ ! 未来将逐步添加相关语法,兼容adblock puls的更多语法,敬请期待。 ! ****************************************************************************************** ================================================ FILE: luci-app-ikoolproxy/root/usr/share/koolproxy/dnsmasq.adblock ================================================ ================================================ FILE: luci-app-ikoolproxy/root/usr/share/koolproxy/koolproxy_ipset.conf ================================================ ================================================ FILE: luci-app-ikoolproxy/root/usr/share/koolproxy/kpupdate ================================================ #!/bin/sh # set -x . /lib/functions.sh CONFIG=koolproxy KP_DIR=/usr/share/koolproxy TMP_DIR=/tmp/koolproxy LOGFILE="/var/log/koolproxy.log" config_t_get() { local index=0 [ -n "$4" ] && index=$4 local ret=$(uci get $CONFIG.@$1[$index].$2 2>/dev/null) echo ${ret:=$3} } limit_log() { local log=$1 [ ! -f "$log" ] && return local sc=100 [ -n "$2" ] && sc=$2 local count=$(grep -c "" $log) if [ $count -gt $sc ];then let count=count-$sc sed -i "1,$count d" $log fi } init_env() { rm -rf "$TMP_DIR" mkdir -p "$TMP_DIR" } restart_koolproxy() { /etc/init.d/koolproxy restart } __compare_file() { local descript=$1 local localPath=$2 local remoteUrl=$3 echo $(date "+%F %T"): ------------------- $descript更新 ------------------- >>$LOGFILE local filename=`basename $localPath` local remotePath="$TMP_DIR/$filename" wget "$remoteUrl" -q -O "$remotePath" if [ "$?" == "0" ]; then if [ -f "$localPath" ]; then localMD5=`md5sum "$localPath" | awk '{print $1}'` localNum=`cat "$localPath" | grep -v '^!' | wc -l` else localMD5="文件不存在" localNum="0" fi remoteMD5=`md5sum "$remotePath" | awk '{print $1}'` remoteNum=`cat "$remotePath" | grep -v '^!' | wc -l` echo $(date "+%F %T"): 本地版本MD5:$localMD5 >>$LOGFILE echo $(date "+%F %T"): 本地版本条数:$localNum >>$LOGFILE echo >>$LOGFILE echo $(date "+%F %T"): 在线版本MD5:$remoteMD5 >>$LOGFILE echo $(date "+%F %T"): 在线版本条数:$remoteNum >>$LOGFILE echo >>$LOGFILE if [ "$localMD5" != "$remoteMD5" ];then echo $(date "+%F %T"): 检测到更新,开始更新规则! >>$LOGFILE mv -f "$remotePath" "$localPath" echo $(date "+%F %T"): 更新成功! >>$LOGFILE echo >>$LOGFILE return 0 fi else echo "$(date "+%F %T"): 获取在线版本时出现错误! " >>$LOGFILE echo >>$LOGFILE fi return 1 } __update_rule() { local name local file local exrule local enable config_get name $1 name config_get file $1 file config_get exrule $1 url config_get enable $1 load if [ -n "$file" ] && [ -n "$exrule" ]; then if [ $enable -ne 1 ]; then return fi __compare_file "$name" "$KP_DIR/data/rules/$file" "$exrule" if [ "$?" == "0" ]; then uci set koolproxy.$1.time="`date +%Y-%m-%d" "%H:%M`" uci commit koolproxy RESTART_KOOLPROXY=true fi cat $KP_DIR/data/rules/$file >>$KP_DIR/data/rules/user.txt echo >>$LOGFILE fi } update_rss_rules() { cp $KP_DIR/data/user.txt $KP_DIR/data/rules/user.txt config_load $CONFIG config_foreach __update_rule rss_rule } update_rules() { echo $(date "+%F %T"): ------------------- 内置规则更新 ------------------- >>$LOGFILE wget 'https://cdn.jsdelivr.net/gh/ilxp/koolproxy@main/rules/kp.dat' -q -O $KP_DIR/data/rules/kp.dat wget 'https://cdn.jsdelivr.net/gh/ilxp/koolproxy@main/rules/daily.txt' -q -O $KP_DIR/data/rules/daily.txt wget 'https://cdn.jsdelivr.net/gh/ilxp/koolproxy@main/rules/koolproxy.txt' -q -O $KP_DIR/data/rules/koolproxy.txt wget 'https://cdn.jsdelivr.net/gh/ilxp/koolproxy@main/rules/yhosts.txt' -q -O $KP_DIR/data/rules/yhosts.txt wget 'https://cdn.jsdelivr.net/gh/ilxp/koolproxy@main/rules/steven.txt' -q -O $KP_DIR/data/rules/steven.txt wget 'https://cdn.jsdelivr.net/gh/ilxp/koolproxy@main/rules/adg.txt' -q -O $KP_DIR/data/rules/adg.txt wget 'https://cdn.jsdelivr.net/gh/ilxp/koolproxy@main/rules/antiad.txt' -q -O $KP_DIR/data/rules/antiad.txt wget 'https://cdn.jsdelivr.net/gh/ilxp/koolproxy@main/rules/adgk.txt' -q -O $KP_DIR/data/rules/adgk.txt wget 'https://cdn.jsdelivr.net/gh/ilxp/koolproxy@main/rules/koolproxy_ipset.conf' -q -O $KP_DIR/koolproxy_ipset.conf wget 'https://cdn.jsdelivr.net/gh/ilxp/koolproxy@main/rules/dnsmasq.adblock' -q -O $KP_DIR/dnsmasq.adblock adg_rules_local=`cat /usr/share/koolproxy/data/rules/adg.txt | sed -n '4p'|awk '{print $4}'` steven_rules_local=`cat /usr/share/koolproxy/data/rules/steven.txt | sed -n '2p'|awk '{print $3,$4,$5,$6}'` yhosts_rules_local=`cat /usr/share/koolproxy/data/rules/yhosts.txt | sed -n '1p' | cut -d ":" -f2` antiad_rules_local=`cat /usr/share/koolproxy/data/rules/antiad.txt | sed -n '2p' | cut -d "=" -f2` koolproxy_rules_local=`cat /usr/share/koolproxy/data/rules/koolproxy.txt | sed -n '3p'|awk '{print $3,$4}'` adgk_rules_local=`cat /usr/share/koolproxy/data/rules/adgk.txt | sed -n '2p'|awk '{print $3}'` echo $(date "+%F %T"): -------------------AdGuard规则 Version $adg_rules_local >>$LOGFILE echo $(date "+%F %T"): -------------------Steven规则 Version $steven_rules_local >>$LOGFILE echo $(date "+%F %T"): -------------------Yhosts规则 Version $yhosts_rules_local >>$LOGFILE echo $(date "+%F %T"): -------------------AntiAD规则 Version $antiad_rules_local >>$LOGFILE echo $(date "+%F %T"): -------------------坂本规则 Version $adgk_rules_local >>$LOGFILE echo $(date "+%F %T"): -------------------静态规则 Version $koolproxy_rules_local >>$LOGFILE echo $(date "+%F %T"): ------------------- 内置规则更新成功! ------------------- >>$LOGFILE RESTART_KOOLPROXY=true } update_adb_host() { /usr/sbin/adblockplus >>$LOGFILE 2>&1 & if [ "$?" == "0" ]; then RESTART_DNSMASQ=true fi } # main process init_env limit_log $LOGFILE # update rules update_rules # update user rules update_rss_rules koolproxy_mode=$(config_t_get global koolproxy_mode 1) koolproxy_host=$(config_t_get global koolproxy_host 0) # update ADB Plus Host if [ "$koolproxy_mode" == "2" ] && [ "$koolproxy_host" == "1" ];then update_adb_host fi if [ $RESTART_KOOLPROXY ]; then restart_koolproxy echo $(date "+%F %T"): 重启koolproxy进程 >>$LOGFILE fi init_env ================================================ FILE: luci-app-ikoolproxy/root/usr/share/rpcd/acl.d/luci-app-ikoolproxy.json ================================================ { "luci-app-ikoolproxy": { "description": "Grant UCI access for luci-app-ikoolproxy", "read": { "uci": [ "koolproxy" ] }, "write": { "uci": [ "koolproxy" ] } } } ================================================ FILE: luci-app-ikoolproxy/root/usr/share/ucitrack/luci-app-ikoolproxy.json ================================================ { "config": "koolproxy", "init": "koolproxy" } ================================================ FILE: luci-app-iperf3-server/Makefile ================================================ # Copyright (C) 2020-2026 Hyy2001X include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-iperf3-server PKG_VERSION:=3.0.0 PKG_RELEASE:=3 PKG_LICENSE:=GPL-3.0-or-later LUCI_TITLE:=LuCI support for iPerf3 Server LUCI_DESCRIPTION:=Configure and manage multiple iperf3 server instances with LuCI status/actions. LUCI_DEPENDS:=+iperf3 LUCI_PKGARCH:=all include $(TOPDIR)/feeds/luci/luci.mk # call BuildPackage - OpenWrt buildroot signature ================================================ FILE: luci-app-iperf3-server/luasrc/controller/iperf3-server.lua ================================================ module("luci.controller.iperf3-server", package.seeall) function index() local fs = require "nixio.fs" if not fs.access("/etc/config/iperf3-server") then return end local page page = entry({"admin", "services", "iperf3-server"}, cbi("iperf3-server"), _("iPerf3 Server"), 99) page.acl_depends = { "luci-app-iperf3-server" } page = entry({"admin", "services", "iperf3-server", "status"}, call("act_status")) page.leaf = true page.acl_depends = { "luci-app-iperf3-server" } page = entry({"admin", "services", "iperf3-server", "start"}, call("act_start")) page.leaf = true page.acl_depends = { "luci-app-iperf3-server" } page = entry({"admin", "services", "iperf3-server", "stop"}, call("act_stop")) page.leaf = true page.acl_depends = { "luci-app-iperf3-server" } page = entry({"admin", "services", "iperf3-server", "restart"}, call("act_restart")) page.leaf = true page.acl_depends = { "luci-app-iperf3-server" } end local function json_ok(extra) local e = extra or {} luci.http.prepare_content("application/json") luci.http.write_json(e) end function act_status() local uci = require("luci.model.uci").cursor() local sys = require("luci.sys") local result = { running = false, -- 是否任意一个 server 正常运行 servers = {} -- 每个端口的详细状态 } -- 解析 /proc/net/tcp & /proc/net/tcp6,判断端口是否 LISTEN local function is_listening_in_proc(path, port) local f = io.open(path, "r") if not f then return false end local hex = string.format("%04X", port) -- 端口 16 进制,大写,固定 4 位 -- /proc/net/tcp 列格式: sl local_address rem_address st ... -- local_address: AAAAAAAA:PPPP -- st = 0A 表示 LISTEN for line in f:lines() do -- 跳过表头 if not line:match("^%s*sl%s+") then local st = line:match("^%s*%d+:%s+%x+:" .. hex .. "%s+%x+:%x+%s+(%x+)") if st == "0A" then f:close() return true end end end f:close() return false end local function is_listening(port) -- IPv4 LISTEN if is_listening_in_proc("/proc/net/tcp", port) then return true end -- IPv6 LISTEN(有的系统会只在 tcp6 里出现) if is_listening_in_proc("/proc/net/tcp6", port) then return true end return false end -- 用 ps 判断:是否存在 iperf3 server / delay 阶段 sleep+iperf3 local ps = sys.exec("ps w 2>/dev/null") or "" local function has_iperf3_server_proc(port) local p = tostring(port) for line in ps:gmatch("[^\r\n]+") do -- 只要这行同时包含: -- 1) iperf3 -- 2) -s(server) -- 3) -p 端口(支持 "-p 5201" 或 "-p5201") if line:find("iperf3", 1, true) then local hasS = line:match("%-s") ~= nil local hasP = (line:match("%-p%s*" .. p .. "%f[^%d]") ~= nil) or (line:match("%-p" .. p .. "%f[^%d]") ~= nil) if hasS and hasP then return true end end end return false end local function has_delay_pending_proc(port) local p = tostring(port) for line in ps:gmatch("[^\r\n]+") do -- 匹配 sh -c "sleep N; exec iperf3 -s -p ..." if (line:find("/bin/sh", 1, true) or line:find("sh -c", 1, true)) and line:find("sleep", 1, true) and line:find("iperf3", 1, true) and (line:match("%-p%s*" .. p .. "%f[^%d]") or line:match("%-p" .. p .. "%f[^%d]")) then return true end end return false end uci:foreach("iperf3-server", "servers", function(s) local port = tonumber(s.port) local enabled = (s.enable_server == "1") if not port then return end local listen = is_listening(port) local iperf3_proc = has_iperf3_server_proc(port) local delay_pending = has_delay_pending_proc(port) local state, detail if not enabled then state = "disabled" detail = "detail_disabled" else if delay_pending and not listen then state = "delay" detail = "detail_delay" elseif listen and iperf3_proc then state = "running" detail = "detail_running" result.running = true elseif listen and not iperf3_proc then state = "conflict" detail = "detail_conflict" else state = "stopped" detail = "detail_stopped" end end result.servers[#result.servers + 1] = { port = port, enable = enabled, listen = listen, state = state, detail = detail } end) luci.http.prepare_content("application/json") luci.http.write_json(result) end function act_start() local rc = luci.sys.call("/etc/init.d/iperf3-server start >/dev/null 2>&1") json_ok({ ok = (rc == 0) }) end function act_stop() local rc = luci.sys.call("/etc/init.d/iperf3-server stop >/dev/null 2>&1") json_ok({ ok = (rc == 0) }) end function act_restart() local rc = luci.sys.call("/etc/init.d/iperf3-server restart >/dev/null 2>&1") json_ok({ ok = (rc == 0) }) end ================================================ FILE: luci-app-iperf3-server/luasrc/model/cbi/iperf3-server.lua ================================================ m = Map("iperf3-server", translate("iPerf3 Server"), translate("iPerf3 - The ultimate speed test tool for TCP, UDP and SCTP") ) m:section(SimpleSection).template = "iperf3-server/iperf3-server_status" -- 主配置段 local g = m:section(TypedSection, "iperf3-server", "") g.addremove = false g.anonymous = true local main_enable = g:option(Flag, "main_enable", translate("Enable"), translate("Enable iPerf3 Servers") ) main_enable.default = "0" main_enable.rmempty = false -- servers 表格 local s = m:section(TypedSection, "servers", translate("Server Settings"), translate("Set up Multi-iPerf3 Servers") ) s.anonymous = true s.addremove = true s.template = "cbi/tblsection" local enable_server = s:option(Flag, "enable_server", translate("Enable")) enable_server.default = "1" enable_server.rmempty = false local port = s:option(Value, "port", translate("Port")) port.datatype = "port" port.default = "5201" port.rmempty = true -- 关键:允许新增行先空着,避免“点添加无反应” function port.validate(self, value, section) -- 新增行刚创建时可能是空值:先放行,让它能显示出来 if value == nil or value == "" then return value end local v = tonumber(value) if not v or v < 1 or v > 65535 then return nil, translate("Invalid port.") end -- 端口去重:仅在有值时检查 local dup = false m.uci:foreach("iperf3-server", "servers", function(s2) if s2[".name"] ~= section and s2.port and tonumber(s2.port) == v then dup = true end end) if dup then return nil, translate("Port must be unique.") end return tostring(v) end local delay = s:option(Value, "delay", translate("Start delay (Seconds)")) delay.default = "0" delay.datatype = "uinteger" delay.rmempty = true -- 同理:新增行先允许空 function delay.validate(self, value, section) if value == nil or value == "" then return value end local v = tonumber(value) if v == nil or v < 0 or v > 3600 then return nil, translate("Delay must be between 0 and 3600 seconds.") end return tostring(v) end local extra_options = s:option(Value, "extra_options", translate("Extra Options")) extra_options.rmempty = true extra_options.password = false function extra_options.validate(self, value, section) if not value or value == "" then return value end -- 简单拦截 shell 元字符(安全兜底) if value:match("[;&|`$()<>\"']") then return nil, translate("Invalid characters in Extra Options.") end return value end return m ================================================ FILE: luci-app-iperf3-server/luasrc/view/iperf3-server/iperf3-server_status.htm ================================================
    <%:Status%>
    -
    ================================================ FILE: luci-app-iperf3-server/po/zh_Hans/iperf3-server.po ================================================ # # App / Menu # msgid "iPerf3 Server" msgstr "iPerf3 服务器" msgid "iPerf3 - The ultimate speed test tool for TCP, UDP and SCTP" msgstr "iPerf3 是一款集 TCP、UDP 和 SCTP 于一身的终极速度测试工具" # # CBI (model) # msgid "Enable" msgstr "启用" msgid "Enable iPerf3 Servers" msgstr "启用 iPerf3 服务器" msgid "Server Settings" msgstr "服务端设置" msgid "Set up Multi-iPerf3 Servers" msgstr "设置多个 iPerf3 服务端" msgid "Port" msgstr "端口" msgid "Start delay (Seconds)" msgstr "启动延迟(秒)" msgid "Extra Options" msgstr "额外参数" msgid "Invalid port." msgstr "端口无效。" msgid "Port must be unique." msgstr "端口必须唯一,不能重复。" msgid "Delay must be between 0 and 3600 seconds." msgstr "启动延迟必须在 0 到 3600 秒之间。" msgid "Invalid characters in Extra Options." msgstr "额外参数包含非法字符。" # # Status page (.htm) # msgid "Status" msgstr "状态" msgid "Running" msgstr "运行中" msgid "Not running" msgstr "未运行" msgid "Stopped" msgstr "已停止" msgid "Start" msgstr "启动" msgid "Stop" msgstr "停止" msgid "Restart" msgstr "重启" msgid "Delay" msgstr "延迟中" msgid "Conflict" msgstr "端口冲突" msgid "Disabled" msgstr "已禁用" msgid "disabled" msgstr "已禁用" msgid "PID" msgstr "进程号" msgid "LISTEN" msgstr "监听中" msgid "NO LISTEN" msgstr "未监听" msgid "starting after configured delay" msgstr "将在设定的延迟时间后启动" msgid "port is occupied" msgstr "端口已被其他服务占用" msgid "Start iPerf3 servers?" msgstr "确认启动 iPerf3 服务?" msgid "Stop iPerf3 servers?" msgstr "确认停止 iPerf3 服务?" msgid "Restart iPerf3 servers?" msgstr "确认重启 iPerf3 服务?" # # Controller detail keys (act_status -> detail) # 你现在返回的是 detail_* key,前端应做 key->文本映射或直接 <%:detail_xxx%> # msgid "detail_disabled" msgstr "已在配置中禁用" msgid "detail_delay" msgstr "延迟启动中" msgid "detail_running" msgstr "正在监听,且 iPerf3 进程已启动" msgid "detail_conflict" msgstr "端口正在监听,但不是 iPerf3(被占用)" msgid "detail_stopped" msgstr "未监听端口" ================================================ FILE: luci-app-iperf3-server/root/etc/config/iperf3-server ================================================ config iperf3-server 'main' option main_enable '0' ================================================ FILE: luci-app-iperf3-server/root/etc/init.d/iperf3-server ================================================ #!/bin/sh /etc/rc.common # iPerf3 Server init (OpenWrt 23.05) - procd multi-instance (UCI-only fetch) # UCI: /etc/config/iperf3-server # # config iperf3-server # option main_enable '1' # # config servers # option enable_server '1' # option port '5201' # option delay '0' # option extra_options '' USE_PROCD=1 START=99 PROG="/usr/bin/iperf3" CONFIG="iperf3-server" LOGGER="logger -t iPerf3-Server" # 与 CBI 的 extra_options 校验保持一致:拦截明显 shell 元字符 is_safe_extra_opts() { [ -z "$1" ] && return 0 case "$1" in *";"*|*"&"*|*"|"*|*"\`"*|*"\$"*|*"<"*|*">"*|*"\""*|*"'"* ) return 1 ;; esac return 0 } # 停止某端口:既杀 iperf3 server,也杀 delay 阶段的 sh/sleep kill_by_port() { local port="$1" local pids # 1) 已经起来的 iperf3 server pids="$(ps w | grep '[i]perf3' | grep ' -s' | grep " -p $port" | awk '{print $1}')" [ -n "$pids" ] && kill $pids 2>/dev/null # 2) delay 阶段:/bin/sh -c "sleep N; exec iperf3 -s -p PORT ..." pids="$(ps w | grep '[s]leep' | grep '[i]perf3' | grep " -p $port" | awk '{print $1}')" [ -n "$pids" ] && kill $pids 2>/dev/null sleep 1 # hard kill 兜底 pids="$(ps w | grep '[i]perf3' | grep ' -s' | grep " -p $port" | awk '{print $1}')" [ -n "$pids" ] && kill -9 $pids 2>/dev/null pids="$(ps w | grep '[s]leep' | grep '[i]perf3' | grep " -p $port" | awk '{print $1}')" [ -n "$pids" ] && kill -9 $pids 2>/dev/null } # 获取 servers 索引列表(0 1 2 ...) get_server_indexes() { # 从 uci show 里提取 @servers[NUM] uci -q show "$CONFIG" 2>/dev/null \ | sed -n "s/^$CONFIG\.@servers\[\([0-9]\+\)\]=servers$/\1/p" } start_one_idx() { local idx="$1" local enable_server port delay extra_options enable_server="$(uci -q get $CONFIG.@servers[$idx].enable_server)" port="$(uci -q get $CONFIG.@servers[$idx].port)" delay="$(uci -q get $CONFIG.@servers[$idx].delay)" extra_options="$(uci -q get $CONFIG.@servers[$idx].extra_options)" # 默认值 [ -n "$enable_server" ] || enable_server="1" [ -n "$port" ] || port="5201" [ -n "$delay" ] || delay="0" [ "$enable_server" = "1" ] || return 0 # 端口合法性兜底 case "$port" in *[!0-9]*|'') $LOGGER "Skip invalid port in @servers[$idx]"; return 0 ;; esac [ "$port" -ge 1 ] 2>/dev/null && [ "$port" -le 65535 ] 2>/dev/null || { $LOGGER "Skip invalid port [$port] in @servers[$idx]" return 0 } # delay 合法性兜底 case "$delay" in *[!0-9]*|'') delay=0 ;; esac # extra_options 安全兜底 if [ -n "$extra_options" ] && ! is_safe_extra_opts "$extra_options"; then $LOGGER "Rejected unsafe extra_options on port [$port] (@servers[$idx])" extra_options="" fi $LOGGER "Starting @servers[$idx] port=[$port] delay=[$delay] ..." # procd 实例名按端口 procd_open_instance "iperf3_${port}" # 不用 -D;delay 用 sh -c 不阻塞 if [ "$delay" -gt 0 ] 2>/dev/null; then if [ -n "$extra_options" ]; then procd_set_param command /bin/sh -c "sleep $delay; exec $PROG -s -p $port $extra_options" else procd_set_param command /bin/sh -c "sleep $delay; exec $PROG -s -p $port" fi else if [ -n "$extra_options" ]; then procd_set_param command "$PROG" -s -p "$port" $extra_options else procd_set_param command "$PROG" -s -p "$port" fi fi procd_set_param respawn 3600 5 5 procd_set_param stdout 1 procd_set_param stderr 1 procd_close_instance } start_service() { [ -x "$PROG" ] || { $LOGGER "iperf3 not found: $PROG"; return 1; } # 主开关:直接用 uci 读取匿名段 local main_enable main_enable="$(uci -q get $CONFIG.@iperf3-server[0].main_enable)" [ -n "$main_enable" ] || main_enable="0" [ "$main_enable" = "1" ] || { $LOGGER "iPerf3 Server is disabled ..." return 0 } # 遍历 servers 索引 local idx for idx in $(get_server_indexes); do start_one_idx "$idx" done return 0 } stop_one_idx() { local idx="$1" local enable_server port enable_server="$(uci -q get $CONFIG.@servers[$idx].enable_server)" [ -n "$enable_server" ] || enable_server="1" [ "$enable_server" = "1" ] || return 0 port="$(uci -q get $CONFIG.@servers[$idx].port)" [ -n "$port" ] || port="5201" case "$port" in *[!0-9]*|'') return 0 ;; esac kill_by_port "$port" } stop_service() { $LOGGER "Stopping iPerf3 Server ..." # 按 servers 列表逐个端口清理(不误杀其它 iperf3) local idx for idx in $(get_server_indexes); do stop_one_idx "$idx" done return 0 } reload_service() { # /etc/init.d/iperf3-server reload stop start } service_triggers() { procd_add_reload_trigger "$CONFIG" } ================================================ FILE: luci-app-iperf3-server/root/etc/uci-defaults/iperf3-server ================================================ #!/bin/sh # 已存在就不重复写 if uci -q show ucitrack | grep -q "=iperf3-server"; then exit 0 fi uci -q batch <<'EOF' >/dev/null add ucitrack iperf3-server set ucitrack.@iperf3-server[-1].init='iperf3-server' commit ucitrack EOF exit 0 ================================================ FILE: luci-app-iperf3-server/root/usr/share/rpcd/acl.d/luci-app-iperf3-server.json ================================================ { "luci-app-iperf3-server": { "description": "Grant access to LuCI app iPerf3 Server", "read": { "uci": [ "iperf3-server" ] }, "write": { "uci": [ "iperf3-server" ], "file": { "/etc/init.d/iperf3-server": [ "exec" ] } } } } ================================================ FILE: luci-app-istoreenhance/Makefile ================================================ # Copyright (C) 2016 Openwrt.org # # This is free software, licensed under the Apache License, Version 2.0 . # include $(TOPDIR)/rules.mk LUCI_TITLE:=LuCI support for KSpeeder LUCI_DEPENDS:=+istoreenhance LUCI_PKGARCH:=all PKG_VERSION:=0.6.6-r1 # PKG_RELEASE MUST be empty for luci.mk PKG_RELEASE:= include $(TOPDIR)/feeds/luci/luci.mk # call BuildPackage - OpenWrt buildroot signature ================================================ FILE: luci-app-istoreenhance/luasrc/controller/istoreenhance.lua ================================================ module("luci.controller.istoreenhance", package.seeall) function index() if not nixio.fs.access("/etc/config/istoreenhance") then return end entry({"admin", "services", "istoreenhance"}, cbi("istoreenhance"), _("KSpeeder"), 20).dependent = true entry({"admin", "services", "istoreenhance_status"}, call("istoreenhance_status")) end function istoreenhance_status() local sys = require "luci.sys" local uci = require "luci.model.uci".cursor() local port = tonumber(uci:get_first("istoreenhance", "istoreenhance", "adminport")) local status = { running = (sys.call("pidof iStoreEnhance >/dev/null") == 0), port = (port or 5003) } luci.http.prepare_content("application/json") luci.http.write_json(status) end ================================================ FILE: luci-app-istoreenhance/luasrc/model/cbi/istoreenhance.lua ================================================ local m, s local istoreenhance_model = require "luci.model.istoreenhance" m = Map("istoreenhance", translate("KSpeeder"), translate("KSpeeder is a tool to fix network issues for iStore.")) m:section(SimpleSection).template = "istoreenhance_status" s=m:section(TypedSection, "istoreenhance", translate("Global settings")) s.addremove=false s.anonymous=true s:option(Flag, "enabled", translate("Enable")).rmempty=false s:option(Value, "adminport", translate("Admin Port")).rmempty=false s:option(Value, "port", translate("Port")).rmempty=false o = s:option(Value, "cache", translate("Cache Path").."*") o.rmempty = false o.datatype = "string" local blocks = istoreenhance_model.blocks() local home = istoreenhance_model.home() local paths, default_path = istoreenhance_model.find_paths(blocks, home, "Configs") for _, val in pairs(paths) do o:value(val, val) end o.default = default_path return m ================================================ FILE: luci-app-istoreenhance/luasrc/model/istoreenhance.lua ================================================ local util = require "luci.util" local jsonc = require "luci.jsonc" local istoreenhance = {} istoreenhance.blocks = function() local f = io.popen("lsblk -s -f -b -o NAME,FSSIZE,MOUNTPOINT --json", "r") local vals = {} if f then local ret = f:read("*all") f:close() local obj = jsonc.parse(ret) for _, val in pairs(obj["blockdevices"]) do local fsize = val["fssize"] if fsize ~= nil and string.len(fsize) > 10 and val["mountpoint"] then -- fsize > 1G vals[#vals+1] = val["mountpoint"] end end end return vals end istoreenhance.home = function() local uci = require "luci.model.uci".cursor() local home_dirs = {} home_dirs["main_dir"] = uci:get_first("quickstart", "main", "main_dir", "/root") home_dirs["Configs"] = uci:get_first("quickstart", "main", "conf_dir", home_dirs["main_dir"].."/Configs") home_dirs["Public"] = uci:get_first("quickstart", "main", "pub_dir", home_dirs["main_dir"].."/Public") home_dirs["Downloads"] = uci:get_first("quickstart", "main", "dl_dir", home_dirs["Public"].."/Downloads") home_dirs["Caches"] = uci:get_first("quickstart", "main", "tmp_dir", home_dirs["main_dir"].."/Caches") return home_dirs end istoreenhance.find_paths = function(blocks, home_dirs, path_name) local default_path = '' local configs = {} default_path = home_dirs[path_name] .. "/iStoreEnhance" if #blocks == 0 then table.insert(configs, default_path) else for _, val in pairs(blocks) do table.insert(configs, val .. "/" .. path_name .. "/iStoreEnhance") end local without_conf_dir = "/root/" .. path_name .. "/iStoreEnhance" if default_path == without_conf_dir then default_path = configs[1] end end return configs, default_path end return istoreenhance ================================================ FILE: luci-app-istoreenhance/luasrc/view/istoreenhance_status.htm ================================================
    <%:KSpeeder Status%>

    <%:Collecting data...%>

    ================================================ FILE: luci-app-istoreenhance/po/zh_Hans/istoreenhance.po ================================================ msgid "KSpeeder msgstr "KSpeeder" msgid "Running state" msgstr "运行状态" msgid "KSpeeder is a tool to fix network issues for iStore." msgstr "KSpeeder插件可以有效的解决一些网络问题,让 iStore 更好用。当然不安装也不会影响 iStore 基本功能。" msgid "Port" msgstr "端口" msgid "Admin Port" msgstr "管理端口" msgid "The KSpeeder service is running." msgstr "服务已启动" msgid "The KSpeeder service is not running." msgstr "服务未启动" msgid "KSpeeder Status" msgstr "服务状态" msgid "Collecting data..." msgstr "收集数据..." ================================================ FILE: luci-app-istoreenhance/root/etc/uci-defaults/50_luci-istoreenhance ================================================ #!/bin/sh rm -f /tmp/luci-indexcache /tmp/luci-indexcache.* exit 0 ================================================ FILE: luci-app-istorex/Makefile ================================================ # # Copyright (C) 2008-2014 The LuCI Team # # This is free software, licensed under the Apache License, Version 2.0 . # include $(TOPDIR)/rules.mk LUCI_TITLE:=IstoreX PKG_VERSION:=0.6.6 LUCI_DEPENDS:=+luci-app-quickstart +luci-app-store +luci-lib-taskd LUCI_EXTRA_DEPENDS:=luci-lib-taskd (>=1.0.15) LUCI_MINIFY_CSS:=0 LUCI_MINIFY_JS:=0 define Package/luci-app-istorex/conffiles /etc/config/istorex /www/luci-static/istorex/image/bg.gif endef include $(TOPDIR)/feeds/luci/luci.mk # call BuildPackage - OpenWrt buildroot signature ================================================ FILE: luci-app-istorex/htdocs/luci-static/istorex/chunk.167c223d.js ================================================ import{d as y,i as p,r as x,o as t,c as n,a as s,b as C,l as a,H as B,_ as D,p as $,q as I,u as S,F as _,E as k,m as v,e as h}from"./index.js?v=5b4be379";const b=e=>($("data-v-f0f8da84"),e=e(),I(),e),F={class:"disk-item"},E={class:"disk-item_contanier"},z={class:"disk-item_icon"},N={class:"disk-item_name"},w=b(()=>s("div",{class:"auto"},null,-1)),O={class:"disk-item_used"},V={key:0,class:"disk-item_info"},j={class:"label-msg.warning"},q={key:1,class:"disk-item_info"},M=b(()=>s("div",{class:"auto"},null,-1)),A=y({__name:"item",props:{disk:{type:Object,required:!0}},setup(e){const l=e;p(()=>{var o;return((o=l.disk.childrens)==null?void 0:o.length)||0}),p(()=>{var u,c;let o=0;return(c=(u=l.disk)==null?void 0:u.childrens)==null||c.forEach(i=>{if(!i.mountPoint){const r=Number(i.sizeInt),g=(1<<30)*2;r>g&&o++}}),o});const d=()=>{B.OpenDisk({disk:l.disk})};return(o,u)=>{const c=x("icon-disk");return t(),n("div",F,[s("div",E,[s("div",z,[C(c)]),s("div",N,[s("span",null,a(e.disk.name)+" \u3010"+a(e.disk.size)+"\u3011"+a(e.disk.venderModel),1)]),w,s("div",O,[s("span",null,a(e.disk.used)+" / "+a(e.disk.total),1)])]),e.disk.errorInfo?(t(),n("div",V,[s("span",j,a(e.disk.errorInfo),1)])):(t(),n("div",q,[s("span",null,a(e.disk.path),1),M,s("a",{onClick:u[0]||(u[0]=i=>d())}," \u67E5\u770B ")]))])}}});var m=D(A,[["__scopeId","data-v-f0f8da84"]]);const f=e=>($("data-v-bf0d8af0"),e=e(),I(),e),H={key:0,class:"ul-container"},L=f(()=>s("div",{class:"ul-container_title"},[s("span",null,"\u7CFB\u7EDF\u78C1\u76D8")],-1)),P={class:"ul-container_body"},G={key:1,class:"ul-container"},J=f(()=>s("div",{class:"ul-container_title"},[s("span",null,"\u5DF2\u6302\u8F7D\u78C1\u76D8")],-1)),K={class:"ul-container_body"},Q={key:2,class:"ul-container"},R=f(()=>s("div",{class:"ul-container_title"},[s("span",null,"\u672A\u8BC6\u522B\u78C1\u76D8")],-1)),T={class:"ul-container_body"},U={key:3,class:"ul-container"},W=f(()=>s("div",{class:"ul-container_title"},[s("span",null,"raid")],-1)),X={class:"ul-container_body"},Y=y({__name:"index",setup(e){const l=S(),d=p(()=>l.disk),o=p(()=>l.raid.disks);return(u,c)=>(t(),n("main",null,[d.value.rootDisks.length>0?(t(),n("ul",H,[L,s("div",P,[(t(!0),n(_,null,k(d.value.rootDisks,(i,r)=>(t(),h(m,{disk:i},null,8,["disk"]))),256))])])):v("",!0),d.value.mountedDisks.length>0?(t(),n("ul",G,[J,s("div",K,[(t(!0),n(_,null,k(d.value.mountedDisks,(i,r)=>(t(),h(m,{disk:i},null,8,["disk"]))),256))])])):v("",!0),d.value.errorDisks.length>0?(t(),n("ul",Q,[R,s("div",T,[(t(!0),n(_,null,k(d.value.errorDisks,(i,r)=>(t(),h(m,{disk:i},null,8,["disk"]))),256))])])):v("",!0),o.value.length>0?(t(),n("ul",U,[W,s("div",X,[(t(!0),n(_,null,k(o.value,(i,r)=>(t(),h(m,{disk:i},null,8,["disk"]))),256))])])):v("",!0)]))}});var ss=D(Y,[["__scopeId","data-v-bf0d8af0"]]);export{ss as default}; ================================================ FILE: luci-app-istorex/htdocs/luci-static/istorex/chunk.18e0c91d.js ================================================ import{d as u,r as e,o as r,e as s,w as i,b as c,P as t}from"./index.js?v=5b4be379";const _=u({__name:"index",setup(l){const a=[{name:"disk",title:"\u6211\u7684\u78C1\u76D8",path:"/router/disk"},{name:"disk-raid",title:"\u78C1\u76D8\u9635\u5217",fn:()=>{t({full:!0,title:"\u78C1\u76D8\u9635\u5217",src:"/cgi-bin/luci/admin/nas/raid"})}},{name:"disk-smart",title:"S.M.A.R.T",fn:()=>{t({full:!0,title:"S.M.A.R.T",src:"/cgi-bin/luci/admin/nas/smart"})}}];return(m,d)=>{const n=e("router-loading"),o=e("layout-page");return r(),s(o,{menus:a},{default:i(()=>[c(n)]),_:1})}}});export{_ as default}; ================================================ FILE: luci-app-istorex/htdocs/luci-static/istorex/chunk.211ffb47.js ================================================ import{_ as o,r as n,o as r,c as t,b as a}from"./index.js?v=5b4be379";const c={},s={id:"page",class:"page-container"};function _(d,i){const e=n("router-loading");return r(),t("div",s,[a(e)])}var p=o(c,[["render",_]]);export{p as default}; ================================================ FILE: luci-app-istorex/htdocs/luci-static/istorex/chunk.2147605f.js ================================================ var C=(r,h,d)=>new Promise((k,c)=>{var F=l=>{try{E(d.next(l))}catch(v){c(v)}},t=l=>{try{E(d.throw(l))}catch(v){c(v)}},E=l=>l.done?k(l.value):Promise.resolve(l.value).then(F,t);E((d=d.apply(r,h)).next())});import{_ as S,d as w,s as m,j as I,v as N,o,c as n,F as _,a as s,x,D as g,E as y,m as D,l as p,B as T,p as G,q as U,C as A,T as B}from"./index.js?v=5b4be379";const i=r=>(G("data-v-6bbc1a4d"),r=r(),U(),r),V=["onSubmit"],M=i(()=>s("p",null,"\u4E00\u4E2A\u7B80\u6613\u6C99\u7BB1\uFF0C\u65B9\u4FBF\u7528\u6765\u5B9E\u9A8C\u7CFB\u7EDF\u914D\u7F6E\u548C\u7A0B\u5E8F\uFF0C\u65B9\u4FBF\u5F00\u53D1\u672A\u5B8C\u6210\u7684\u8F6F\u4EF6\uFF0C\u4F46\u4E0D\u4FDD\u62A4Docker\u548C\u786C\u76D8\u7684\u6570\u636E",-1)),q={key:0,class:"label-msg warning"},z=i(()=>s("div",{class:"label-value"},null,-1)),L=i(()=>s("div",{class:"label-name"},[s("span",null,"\u72B6\u6001")],-1)),P={class:"label-value"},$=["value"],j=i(()=>s("option",{disabled:"",selected:"true"},"\u83B7\u53D6\u4E2D...",-1)),O=i(()=>s("option",{disabled:"",value:"stopped"},"\u672A\u5F00\u542F",-1)),W=i(()=>s("option",{disabled:"",value:"running"},"\u5F00\u542F\u4E2D",-1)),H=[j,O,W],J={key:0,class:"label-btns"},K=i(()=>s("div",{class:"label-name"},[s("span",null,"\u76EE\u6807\u78C1\u76D8\uFF08\u5EFA\u8BAE\u9009\u62E9U\u76D8\u6216\u8005\u79FB\u52A8\u786C\u76D8\uFF0C\u65B9\u4FBF\u88C5\u5378\uFF09")],-1)),Q={class:"label-value"},R=i(()=>s("option",{value:""},"\u8BF7\u9009\u62E9\u76EE\u6807\u78C1\u76D8",-1)),X=["value"],Y=i(()=>s("div",{class:"label-name"},[s("span",null,"\u76EE\u6807\u5206\u533A\uFF08\u5206\u533A\u5927\u5C0F\u987B\u5927\u4E8E8G\uFF0C\u5C06\u6B64\u5206\u533A\u4F5C\u4E3A\u5916\u90E8 overlay \u4F7F\u7528\uFF09")],-1)),Z={class:"label-value"},uu=i(()=>s("option",{selected:"true",value:""},"\u8BF7\u9009\u62E9\u76EE\u6807\u5206\u533A",-1)),su=["value","disabled"],tu={key:1,class:"label-btns"},eu=["disabled"],au={key:2,class:"label-msg warning"},ou=w({__name:"index",setup(r){return C(this,null,function*(){let h,d;const k=m(!1),c=m(""),F=m(0),t=I({status:"stopped",diskpath:"",partition:"",sandboxDisks:{disks:[]}}),E=()=>C(this,null,function*(){const b=yield Promise.all([A.Nas.SandboxDisks.GET(),A.Nas.GetSandbox.GET()]);try{const u=b[0];if(u!=null&&u.data){const{result:e,error:a}=u.data;e&&(t.sandboxDisks.disks=e.disks||[]),a&&(c.value=a)}}catch(u){c.value=u,F.value=3}try{const u=b[1];if(u!=null&&u.data){const{result:e}=u.data;e&&(t.status=e.status)}}catch(u){console.log(u)}});[h,d]=N(()=>E()),yield h,d();const l=()=>{t.partition=""},v=()=>C(this,null,function*(){if(confirm("\u6B64\u64CD\u4F5C\u4F1A\u5C06\u4F1A\u5220\u9664\u8BE5\u5206\u533A\u5168\u90E8\u6570\u636E,\u662F\u5426\u7EE7\u7EED?")){const b=B.Loading("\u914D\u7F6E\u4E2D...");try{const u=yield A.Nas.Sandbox.POST({path:t.partition});if(u!=null&&u.data){const{result:e,error:a,success:f}=u.data;a&&B.Warning(a),(u.data.success||0)==0&&B.Success("\u914D\u7F6E\u6210\u529F")}}catch(u){B.Error(`${u}`)}b.Close()}});return(b,u)=>(o(),n("form",{class:"form-container",onSubmit:T(v,["prevent"])},[M,t.sandboxDisks.disks.length==0?(o(),n("div",q," \u68C0\u6D4B\u4E0D\u5230\u6302\u8F7D\u7684\u78C1\u76D8\u4FE1\u606F\uFF0C\u8BF7\u5148\u63D2\u4E0A\u78C1\u76D8\uFF0C\u5EFA\u8BAE\u4F7F\u7528U\u76D8\u6216\u8005\u79FB\u52A8\u786C\u76D8\uFF0C\u65B9\u4FBF\u88C5\u5378 ")):(o(),n(_,{key:1},[z,L,s("div",P,[s("select",{value:t.status,disabled:""},H,8,$)]),F.value==0?(o(),n("div",J,[s("button",{class:"sumbit",type:"button",onClick:u[0]||(u[0]=e=>F.value=1)},"\u914D\u7F6E")])):F.value==1?(o(),n(_,{key:1},[K,s("div",Q,[x(s("select",{"onUpdate:modelValue":u[1]||(u[1]=e=>t.diskpath=e),onChange:l},[R,(o(!0),n(_,null,y(t.sandboxDisks.disks,(e,a)=>(o(),n("option",{value:e.path,key:a},p(e.venderModel)+"\uFF08"+p(e.size)+"\uFF09 ",9,X))),128))],544),[[g,t.diskpath]])]),t.diskpath?(o(),n(_,{key:0},[Y,(o(!0),n(_,null,y(t.sandboxDisks.disks,e=>(o(),n("div",Z,[e.path==t.diskpath?x((o(),n("select",{key:0,"onUpdate:modelValue":u[2]||(u[2]=a=>t.partition=a)},[uu,(o(!0),n(_,null,y(e.childrens,(a,f)=>(o(),n("option",{value:a.path,key:f,disabled:a.sizeInt<8192e6},p(a.name)+"\uFF08"+p(a.filesystem||"\u672A\u683C\u5F0F\u5316")+"\uFF09"+p(a.total),9,su))),128))],512)),[[g,t.partition]]):D("",!0)]))),256))],64)):D("",!0),t.diskpath&&t.partition?(o(),n("div",tu,[s("button",{class:"sumbit",disabled:k.value},"\u4FDD\u5B58",8,eu)])):D("",!0)],64)):D("",!0)],64)),c.value?(o(),n("div",au,p(c.value),1)):D("",!0)],40,V))})}});var lu=S(ou,[["__scopeId","data-v-6bbc1a4d"]]);export{lu as default}; ================================================ FILE: luci-app-istorex/htdocs/luci-static/istorex/chunk.25dae49f.js ================================================ var f=Object.defineProperty;var F=Object.getOwnPropertySymbols;var h=Object.prototype.hasOwnProperty,A=Object.prototype.propertyIsEnumerable;var v=(s,t,u)=>t in s?f(s,t,{enumerable:!0,configurable:!0,writable:!0,value:u}):s[t]=u,b=(s,t)=>{for(var u in t||(t={}))h.call(t,u)&&v(s,u,t[u]);if(F)for(var u of F(t))A.call(t,u)&&v(s,u,t[u]);return s};var E=(s,t,u)=>new Promise((r,d)=>{var c=n=>{try{a(u.next(n))}catch(o){d(o)}},l=n=>{try{a(u.throw(n))}catch(o){d(o)}},a=n=>n.done?r(n.value):Promise.resolve(n.value).then(c,l);a((u=u.apply(s,t)).next())});import{d as y,s as m,j as x,o as D,c as _,a as e,x as i,A as p,y as B,z as C,l as V,m as g,B as I,G as w,T as S,C as k}from"./index.js?v=5b4be379";const M=["onSubmit"],N=w('
    \u65C1\u8DEF\u7531\u6A21\u5F0F\uFF0C\u4E5F\u53EB\u5355\u81C2\u8DEF\u7531\u6A21\u5F0F\u3002\u60A8\u53EF\u4EE5\u7528\u4E0A\u4E00\u7EA7\u8DEF\u7531\u62E8\u53F7\uFF0C\u7136\u540E\u7531\u8BE5\u8BBE\u5907\u6765\u5B9E\u73B0\u4E00\u4E9B\u9AD8\u7EA7\u529F\u80FD\u3002
    LAN \u63A5\u53E3\u914D\u7F6E\u65B9\u5F0F
    IP \u5730\u5740\uFF08\u8BF7\u548C\u4E0A\u4E00\u6B65\u8BB0\u5F55\u7684\u4E3B\u8DEF\u7531\u5730\u5740\u5728\u540C\u4E00\u7F51\u6BB5\uFF09
    ',4),P={class:"label-value"},U=e("div",{class:"label-name"},[e("span",null,"\u5B50\u7F51\u63A9\u7801")],-1),q={class:"label-value"},L=e("div",{class:"label-name"},[e("span",null,"\u7F51\u5173\u5730\u5740")],-1),T={class:"label-value"},G=e("div",{class:"label-name"},[e("span",null,"DNS\u670D\u52A1\u5668")],-1),H={class:"label-value"},R=e("div",{class:"label-name"},[e("span",null,"\u662F\u5426\u63D0\u4F9B DHCP\uFF08\u5982\u679C\u662F\u63D0\u4F9B DHCP\uFF0C\u5219\u9700\u8981\u5173\u95ED\u4E3B\u8DEF\u7531 DHCP\uFF09")],-1),j={class:"label-value"},z={class:"label-flex"},O={class:"label-btns"},J=["disabled"],K={key:0,class:"label-msg"},X=y({__name:"index",setup(s){const t=m(""),u=x({subnetMask:"255.255.255.0",staticDnsIp:"223.5.5.5",staticLanIp:"",gateway:"",enableDhcp:!0}),r=m(!1),d=()=>E(this,null,function*(){const c=b({},u),l=S.Loading("\u914D\u7F6E\u4E2D...");try{const a=yield k.Guide.GatewayRouter.POST(c);if(a!=null&&a.data){const{success:n,error:o}=a==null?void 0:a.data;o&&(t.value=o),(n==null||n==0)&&(t.value="\u914D\u7F6E\u6210\u529F")}}catch(a){t.value=a}l.Close()});return(c,l)=>(D(),_("form",{class:"form-container",onSubmit:I(d,["prevent"])},[N,e("div",P,[i(e("input",{type:"text",placeholder:"ip\u5730\u5740","onUpdate:modelValue":l[0]||(l[0]=a=>u.staticLanIp=a),required:""},null,512),[[p,u.staticLanIp,void 0,{trim:!0}]])]),U,e("div",q,[i(e("input",{type:"text",placeholder:"\u5B50\u7F51\u63A9\u7801\u5730\u5740","onUpdate:modelValue":l[1]||(l[1]=a=>u.subnetMask=a),required:""},null,512),[[p,u.subnetMask,void 0,{trim:!0}]])]),L,e("div",T,[i(e("input",{type:"text",placeholder:"\u7F51\u5173\u5730\u5740","onUpdate:modelValue":l[2]||(l[2]=a=>u.gateway=a),required:""},null,512),[[p,u.gateway,void 0,{trim:!0}]])]),G,e("div",H,[i(e("input",{type:"text",placeholder:"dns\u670D\u52A1\u5668\u5730\u5740","onUpdate:modelValue":l[3]||(l[3]=a=>u.staticDnsIp=a),required:""},null,512),[[p,u.staticDnsIp,void 0,{trim:!0}]])]),R,e("div",j,[e("div",z,[e("label",null,[i(e("input",{type:"radio",value:!1,"onUpdate:modelValue":l[4]||(l[4]=a=>u.enableDhcp=a)},null,512),[[B,u.enableDhcp]]),C("\u5173\u95ED")]),e("label",null,[i(e("input",{type:"radio",value:!0,"onUpdate:modelValue":l[5]||(l[5]=a=>u.enableDhcp=a)},null,512),[[B,u.enableDhcp]]),C("\u542F\u7528")])])]),e("div",O,[e("button",{class:"sumbit",disabled:r.value},"\u4FDD\u5B58",8,J)]),t.value?(D(),_("div",K,[e("span",null,V(t.value),1)])):g("",!0)],40,M))}});export{X as default}; ================================================ FILE: luci-app-istorex/htdocs/luci-static/istorex/chunk.403244cc.js ================================================ var c=(p,t,a)=>new Promise((n,o)=>{var r=e=>{try{s(a.next(e))}catch(_){o(_)}},d=e=>{try{s(a.throw(e))}catch(_){o(_)}},s=e=>e.done?n(e.value):Promise.resolve(e.value).then(r,d);s((a=a.apply(p,t)).next())});import{_ as i,d as u,I as l,o as x,c as g,b as m,J as v}from"./index.js?v=5b4be379";const f={id:"page",class:"page-top-container"},b=u({__name:"index",setup(p){const t=l();return(()=>c(this,null,function*(){yield t.getApp()}))(),(n,o)=>(x(),g("div",f,[m(v)]))}});var h=i(b,[["__scopeId","data-v-701aba0b"]]);export{h as default}; ================================================ FILE: luci-app-istorex/htdocs/luci-static/istorex/chunk.41b74402.js ================================================ import{_ as o,r,o as t,e as n,w as s,S as a,b as c}from"./index.js?v=5b4be379";const _={};function u(f,i){const e=r("router-view");return t(),n(a,null,{default:s(()=>[c(e)]),_:1})}var p=o(_,[["render",u]]);export{p as default}; ================================================ FILE: luci-app-istorex/htdocs/luci-static/istorex/chunk.42bb6629.js ================================================ import{_ as r}from"./index.js?v=5b4be379";const e={};function n(_,c){return null}var a=r(e,[["render",n]]);export{a as default}; ================================================ FILE: luci-app-istorex/htdocs/luci-static/istorex/chunk.4d4bc89c.js ================================================ var _=(p,d,a)=>new Promise((c,n)=>{var o=s=>{try{i(a.next(s))}catch(e){n(e)}},f=s=>{try{i(a.throw(s))}catch(e){n(e)}},i=s=>s.done?c(s.value):Promise.resolve(s.value).then(o,f);i((a=a.apply(p,d)).next())});import{d as g,s as b,j as E,v as w,o as S,c as m,a as r,F as x,E as F,l as h,m as L,B,x as D,y as G,z as T,C as y,T as v}from"./index.js?v=5b4be379";const C=["onSubmit"],k=r("div",{class:"label-name"},[r("span",null,"\u9009\u62E9\u8F6F\u4EF6\u6E90 ")],-1),I={class:"label-value"},V={class:"label-flex"},N=["value"],M={class:"label-btns"},j=["disabled"],q={key:0,class:"label-msg"},O=g({__name:"index",setup(p){return _(this,null,function*(){let d,a;const c=b(!1),n=b(""),o=E({softsourceListIfo:[],softSource:{},currSoftSource:{}}),f=()=>_(this,null,function*(){var s,e,u;try{const t=yield y.Guide.SoftSourceList.GET();if((s=t==null?void 0:t.data)!=null&&s.result){const l=(e=t==null?void 0:t.data)==null?void 0:e.result;o.softsourceListIfo=l.softSourceList||[]}}catch(t){console.log(t)}try{const t=yield y.Guide.GetSoftSource.GET();if((u=t==null?void 0:t.data)!=null&&u.result){const l=t.data.result;o.softSource=l.softSource,o.currSoftSource=l.softSource}}catch(t){console.log(t)}});[d,a]=w(()=>f()),yield d,a();const i=()=>_(this,null,function*(){const s=v.Loading("\u6B63\u5728\u5207\u6362\u4E2D...");c.value=!0;try{const e=yield y.Guide.SoftSource.POST({softSourceIdentity:o.softSource.identity});if(e!=null&&e.data){const{result:u,error:t,success:l}=e.data;t&&v.Warning(t),(e.data.success||0)==0&&(v.Success("\u5207\u6362\u6210\u529F"),yield f())}}catch(e){v.Error(`${e}`)}finally{c.value=!1,s.Close()}});return(s,e)=>(S(),m("form",{class:"form-container",onSubmit:B(i,["prevent"])},[k,r("div",I,[(S(!0),m(x,null,F(o.softsourceListIfo,u=>(S(),m("label",V,[D(r("input",{type:"radio",value:u.identity,"onUpdate:modelValue":e[0]||(e[0]=t=>o.softSource.identity=t)},null,8,N),[[G,o.softSource.identity,void 0,{trim:!0}]]),T(" "+h(u.name),1)]))),256))]),r("div",M,[r("button",{class:"sumbit",disabled:c.value},"\u4FDD\u5B58",8,j)]),n.value?(S(),m("div",q,[r("span",null,h(n.value),1)])):L("",!0)],40,C))})}});export{O as default}; ================================================ FILE: luci-app-istorex/htdocs/luci-static/istorex/chunk.4f4af73e.js ================================================ var r=(c,m,i)=>new Promise((w,t)=>{var n=l=>{try{o(i.next(l))}catch(v){t(v)}},s=l=>{try{o(i.throw(l))}catch(v){t(v)}},o=l=>l.done?w(l.value):Promise.resolve(l.value).then(n,s);o((i=i.apply(c,m)).next())});import{_ as V,d as T,u as I,s as f,j as A,v as M,o as E,c as b,a as u,x as _,y as h,z as D,A as k,m as y,l as U,B as q,p as G,q as N,C as B,T as x}from"./index.js?v=5b4be379";const p=c=>(G("data-v-c5783954"),c=c(),N(),c),L=["onSubmit"],O=p(()=>u("p",null,[D(" \u6B22\u8FCE\u4F7F\u7528\u5FEB\u901F\u7F51\u7EDC\u914D\u7F6E\u5411\u5BFC\uFF0C\u8BF7\u9009\u62E9\u4E00\u79CD\u8FDE\u63A5\u65B9\u5F0F\u4EE5\u5F00\u59CB\u8054\u7F51\uFF0C\u6216\u4F7F\u7528\u5DE6\u4FA7\u83DC\u5355\u8FDB\u884C\u8054\u7F51\u914D\u7F6E "),u("br"),D(" \u6CA1\u627E\u5230\u60F3\u8981\u7684\u914D\u7F6E\uFF1F\u8BF7\u4F7F\u7528 "),u("a",{href:"/cgi-bin/luci/admin/network/network",target:"_blank"},"\u9AD8\u7EA7\u6A21\u5F0F")],-1)),j=p(()=>u("div",{class:"label-name"},[u("span",null,"\u8054\u7F51\u65B9\u5F0F")],-1)),z={class:"label-value"},R={class:"label-flex"},H={style:{display:"none"}},J={key:0,class:"ul-container"},K=p(()=>u("div",{class:"ul-container_title"},[u("span",null,"\u62E8\u53F7\u8054\u7F51\u914D\u7F6E")],-1)),Q=p(()=>u("div",{class:"label-value"},null,-1)),W=p(()=>u("div",{class:"label-name"},[u("span",null,"\u8D26\u53F7")],-1)),X={class:"label-value"},Y=p(()=>u("div",{class:"label-name"},[u("span",null,"\u5BC6\u7801")],-1)),Z={class:"label-value"},$={key:1,class:"label-btns"},uu=["disabled"],eu={key:2,class:"label-msg"},au=T({__name:"index",setup(c){return r(this,null,function*(){let m,i;const w=I(),t=f(""),n=f(!1),s=f(""),o=A({account:"",password:""}),l=A({wanProto:"dhcp",dnsProto:"auto",staticIp:"",subnetMask:"",manualDnsIp:[],gateway:""}),v=()=>r(this,null,function*(){n.value=!0;try{const d=yield B.Guide.Pppoe.GET(),{result:e}=d.data;e&&(o.account=e.account||"",o.password=e.password||"")}catch(d){s.value=d}t.value=yield w.getAsyncNetworkProto,n.value=!1});[m,i]=M(()=>v()),yield m,i();const P=()=>r(this,null,function*(){switch(t.value){case"pppoe":yield S();break;case"dhcp":yield g();break;default:s.value="\u627E\u4E0D\u5230\u4F60\u8981\u7684\u914D\u7F6E";break}}),S=()=>r(this,null,function*(){if(o.account==""){s.value="\u8D26\u53F7\u4E0D\u80FD\u4E3A\u7A7A";return}if(o.password==""){s.value="\u5BC6\u7801\u4E0D\u80FD\u4E3A\u7A7A";return}n.value=!0;const d=x.Loading("\u4FDD\u5B58\u4E2D...");try{const e=yield B.Guide.Pppoe.POST({account:o.account,password:o.password});if(e.data){const{error:a,success:F}=e.data;a&&(s.value=a),(F==null||F==0)&&(s.value="\u914D\u7F6E\u5B8C\u6210")}}catch(e){s.value=e}finally{}n.value=!1,d.Close()}),g=()=>r(this,null,function*(){const d={wanProto:l.wanProto,dnsProto:l.dnsProto};n.value=!0;const e=x.Loading("\u4FDD\u5B58\u4E2D...");try{const a=yield B.Guide.ClientModel.POST(d);if(a!=null&&a.data){const{success:F,error:C}=a==null?void 0:a.data;C&&(s.value=C),(F==null||F==0)&&(s.value="\u914D\u7F6E\u5B8C\u6210")}}catch(a){s.value=a}n.value=!1,e.Close()});return(d,e)=>(E(),b("form",{class:"form-container",onSubmit:q(P,["prevent"])},[O,j,u("div",z,[u("div",R,[u("label",null,[_(u("input",{type:"radio",value:"pppoe","onUpdate:modelValue":e[0]||(e[0]=a=>t.value=a)},null,512),[[h,t.value]]),D("\u8D26\u53F7\u5BC6\u7801")]),u("label",null,[_(u("input",{type:"radio",value:"dhcp","onUpdate:modelValue":e[1]||(e[1]=a=>t.value=a)},null,512),[[h,t.value]]),D("\u81EA\u52A8\u8054\u7F51")]),u("label",H,[_(u("input",{type:"radio",value:"static",hidden:"true","onUpdate:modelValue":e[2]||(e[2]=a=>t.value=a)},null,512),[[h,t.value]]),D("\u7F51\u5173\u8054\u7F51")])])]),t.value=="pppoe"?(E(),b("ul",J,[K,Q,W,u("div",X,[_(u("input",{type:"text",placeholder:"\u5BBD\u5E26\u8D26\u53F7","onUpdate:modelValue":e[3]||(e[3]=a=>o.account=a),required:""},null,512),[[k,o.account,void 0,{trim:!0}]])]),Y,u("div",Z,[_(u("input",{type:"password",placeholder:"\u5BBD\u5E26\u5BC6\u7801","onUpdate:modelValue":e[4]||(e[4]=a=>o.password=a),required:""},null,512),[[k,o.password,void 0,{trim:!0}]])])])):y("",!0),t.value=="pppoe"||t.value=="dhcp"?(E(),b("div",$,[u("button",{class:"sumbit",disabled:n.value},"\u4FDD\u5B58",8,uu)])):y("",!0),s.value?(E(),b("div",eu,[u("span",null,U(s.value),1)])):y("",!0)],40,L))})}});var ou=V(au,[["__scopeId","data-v-c5783954"]]);export{ou as default}; ================================================ FILE: luci-app-istorex/htdocs/luci-static/istorex/chunk.5e41a3f0.js ================================================ import{_ as r}from"./index.js?v=5b4be379";const e={};function n(_,c){return null}var a=r(e,[["render",n]]);export{a as default}; ================================================ FILE: luci-app-istorex/htdocs/luci-static/istorex/chunk.6d3585bb.js ================================================ var M=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{},k={exports:{}};(function(c){(function(p){const a="(0?\\d+|0x[a-f0-9]+)",u={fourOctet:new RegExp(`^${a}\\.${a}\\.${a}\\.${a}$`,"i"),threeOctet:new RegExp(`^${a}\\.${a}\\.${a}$`,"i"),twoOctet:new RegExp(`^${a}\\.${a}$`,"i"),longValue:new RegExp(`^${a}$`,"i")},l=new RegExp("^0[0-7]+$","i"),d=new RegExp("^0x[a-f0-9]+$","i"),w="%[0-9a-z]{1,}",P="(?:[0-9a-f]+::?)+",v={zoneIndex:new RegExp(w,"i"),native:new RegExp(`^(::)?(${P})?([0-9a-f]+)?(::)?(${w})?$`,"i"),deprecatedTransitional:new RegExp(`^(?:::)(${a}\\.${a}\\.${a}\\.${a}(${w})?)$`,"i"),transitional:new RegExp(`^((?:${P})|(?:::)(?:${P})?)${a}\\.${a}\\.${a}\\.${a}(${w})?$`,"i")};function y(t,e){if(t.indexOf("::")!==t.lastIndexOf("::"))return null;let n=0,r=-1,i=(t.match(v.zoneIndex)||[])[0],o,f;for(i&&(i=i.substring(1),t=t.replace(/%.+$/,""));(r=t.indexOf(":",r+1))>=0;)n++;if(t.substr(0,2)==="::"&&n--,t.substr(-2,2)==="::"&&n--,n>e)return null;for(f=e-n,o=":";f--;)o+="0:";return t=t.replace("::",o),t[0]===":"&&(t=t.slice(1)),t[t.length-1]===":"&&(t=t.slice(0,-1)),e=function(){const $=t.split(":"),b=[];for(let g=0;g<$.length;g++)b.push(parseInt($[g],16));return b}(),{parts:e,zoneId:i}}function m(t,e,n,r){if(t.length!==e.length)throw new Error("ipaddr: cannot match CIDR for objects with different lengths");let i=0,o;for(;r>0;){if(o=n-r,o<0&&(o=0),t[i]>>o!==e[i]>>o)return!1;r-=n,i+=1}return!0}function I(t){if(d.test(t))return parseInt(t,16);if(t[0]==="0"&&!isNaN(parseInt(t[1],10))){if(l.test(t))return parseInt(t,8);throw new Error(`ipaddr: cannot parse ${t} as octal`)}return parseInt(t,10)}function E(t,e){for(;t.length=0;i-=1)if(o=this.octets[i],o in r){if(f=r[o],n&&f!==0)return null;f!==8&&(n=!0),e+=f}else return null;return 32-e},t.prototype.range=function(){return s.subnetMatch(this,this.SpecialRanges)},t.prototype.toByteArray=function(){return this.octets.slice(0)},t.prototype.toIPv4MappedAddress=function(){return s.IPv6.parse(`::ffff:${this.toString()}`)},t.prototype.toNormalizedString=function(){return this.toString()},t.prototype.toString=function(){return this.octets.join(".")},t}(),s.IPv4.broadcastAddressFromCIDR=function(t){try{const e=this.parseCIDR(t),n=e[0].toByteArray(),r=this.subnetMaskFromPrefixLength(e[1]).toByteArray(),i=[];let o=0;for(;o<4;)i.push(parseInt(n[o],10)|parseInt(r[o],10)^255),o++;return new this(i)}catch(e){throw new Error("ipaddr: the address does not have IPv4 CIDR format")}},s.IPv4.isIPv4=function(t){return this.parser(t)!==null},s.IPv4.isValid=function(t){try{return new this(this.parser(t)),!0}catch(e){return!1}},s.IPv4.isValidFourPartDecimal=function(t){return!!(s.IPv4.isValid(t)&&t.match(/^(0|[1-9]\d*)(\.(0|[1-9]\d*)){3}$/))},s.IPv4.networkAddressFromCIDR=function(t){let e,n,r,i,o;try{for(e=this.parseCIDR(t),r=e[0].toByteArray(),o=this.subnetMaskFromPrefixLength(e[1]).toByteArray(),i=[],n=0;n<4;)i.push(parseInt(r[n],10)&parseInt(o[n],10)),n++;return new this(i)}catch(f){throw new Error("ipaddr: the address does not have IPv4 CIDR format")}},s.IPv4.parse=function(t){const e=this.parser(t);if(e===null)throw new Error("ipaddr: string is not formatted like an IPv4 Address");return new this(e)},s.IPv4.parseCIDR=function(t){let e;if(e=t.match(/^(.+)\/(\d+)$/)){const n=parseInt(e[2]);if(n>=0&&n<=32){const r=[this.parse(e[1]),n];return Object.defineProperty(r,"toString",{value:function(){return this.join("/")}}),r}}throw new Error("ipaddr: string is not formatted like an IPv4 CIDR range")},s.IPv4.parser=function(t){let e,n,r;if(e=t.match(u.fourOctet))return function(){const i=e.slice(1,6),o=[];for(let f=0;f4294967295||r<0)throw new Error("ipaddr: address outside defined range");return function(){const i=[];let o;for(o=0;o<=24;o+=8)i.push(r>>o&255);return i}().reverse()}else return(e=t.match(u.twoOctet))?function(){const i=e.slice(1,4),o=[];if(r=I(i[1]),r>16777215||r<0)throw new Error("ipaddr: address outside defined range");return o.push(I(i[0])),o.push(r>>16&255),o.push(r>>8&255),o.push(r&255),o}():(e=t.match(u.threeOctet))?function(){const i=e.slice(1,5),o=[];if(r=I(i[2]),r>65535||r<0)throw new Error("ipaddr: address outside defined range");return o.push(I(i[0])),o.push(I(i[1])),o.push(r>>8&255),o.push(r&255),o}():null},s.IPv4.subnetMaskFromPrefixLength=function(t){if(t=parseInt(t),t<0||t>32)throw new Error("ipaddr: invalid IPv4 prefix length");const e=[0,0,0,0];let n=0;const r=Math.floor(t/8);for(;n=0;f-=1)if(i=this.parts[f],i in r){if(o=r[i],n&&o!==0)return null;o!==16&&(n=!0),e+=o}else return null;return 128-e},t.prototype.range=function(){return s.subnetMatch(this,this.SpecialRanges)},t.prototype.toByteArray=function(){let e;const n=[],r=this.parts;for(let i=0;i>8),n.push(e&255);return n},t.prototype.toFixedLengthString=function(){const e=function(){const r=[];for(let i=0;i>8,n&255,r>>8,r&255])},t.prototype.toNormalizedString=function(){const e=function(){const r=[];for(let i=0;ii&&(r=o.index,i=o[0].length);return i<0?n:`${n.substring(0,r)}::${n.substring(r+i)}`},t.prototype.toString=function(){return this.toRFC5952String()},t}(),s.IPv6.broadcastAddressFromCIDR=function(t){try{const e=this.parseCIDR(t),n=e[0].toByteArray(),r=this.subnetMaskFromPrefixLength(e[1]).toByteArray(),i=[];let o=0;for(;o<16;)i.push(parseInt(n[o],10)|parseInt(r[o],10)^255),o++;return new this(i)}catch(e){throw new Error(`ipaddr: the address does not have IPv6 CIDR format (${e})`)}},s.IPv6.isIPv6=function(t){return this.parser(t)!==null},s.IPv6.isValid=function(t){if(typeof t=="string"&&t.indexOf(":")===-1)return!1;try{const e=this.parser(t);return new this(e.parts,e.zoneId),!0}catch(e){return!1}},s.IPv6.networkAddressFromCIDR=function(t){let e,n,r,i,o;try{for(e=this.parseCIDR(t),r=e[0].toByteArray(),o=this.subnetMaskFromPrefixLength(e[1]).toByteArray(),i=[],n=0;n<16;)i.push(parseInt(r[n],10)&parseInt(o[n],10)),n++;return new this(i)}catch(f){throw new Error(`ipaddr: the address does not have IPv6 CIDR format (${f})`)}},s.IPv6.parse=function(t){const e=this.parser(t);if(e.parts===null)throw new Error("ipaddr: string is not formatted like an IPv6 Address");return new this(e.parts,e.zoneId)},s.IPv6.parseCIDR=function(t){let e,n,r;if((n=t.match(/^(.+)\/(\d+)$/))&&(e=parseInt(n[2]),e>=0&&e<=128))return r=[this.parse(n[1]),e],Object.defineProperty(r,"toString",{value:function(){return this.join("/")}}),r;throw new Error("ipaddr: string is not formatted like an IPv6 CIDR range")},s.IPv6.parser=function(t){let e,n,r,i,o,f;if(r=t.match(v.deprecatedTransitional))return this.parser(`::ffff:${r[1]}`);if(v.native.test(t))return y(t,8);if((r=t.match(v.transitional))&&(f=r[6]||"",e=y(r[1].slice(0,-1)+f,6),e.parts)){for(o=[parseInt(r[2]),parseInt(r[3]),parseInt(r[4]),parseInt(r[5])],n=0;n128)throw new Error("ipaddr: invalid IPv6 prefix length");const e=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];let n=0;const r=Math.floor(t/8);for(;nx.isValid(c),h=c=>{const p=x.IPv4.parse(c).toByteArray();return p[0]<<24|p[1]<<16|p[2]<<8|p[3]},R=c=>x.fromByteArray([c>>24&255,c>>16&255,c>>8&255,c&255]).toString(),A=c=>{if(!x.IPv4.isIPv4(c))return!1;let p=0,a=h(c);for(let u=31;u>=0&&(a&1<{let l=h(c)&h(p),d=h(a),w=h(u),v=~h(p);return dl+1&&w{let a=h(p),u=h(c)&a,l=~a,d;return l>=105?(d=u|l-5,u=u|100):l>=3?(d=u|l-1,u=u|2):(u=u|1,d=u),[R(u),R(d)]};var z={isValidMask:A,isValidIP:C,isValidMaskRange:S,calcMaskRange:O};export{M as c,z as i}; ================================================ FILE: luci-app-istorex/htdocs/luci-static/istorex/chunk.6f7d3090.js ================================================ var g=Object.defineProperty;var y=Object.getOwnPropertySymbols;var w=Object.prototype.hasOwnProperty,A=Object.prototype.propertyIsEnumerable;var C=(o,u,s)=>u in o?g(o,u,{enumerable:!0,configurable:!0,writable:!0,value:s}):o[u]=s,k=(o,u)=>{for(var s in u||(u={}))w.call(u,s)&&C(o,s,u[s]);if(y)for(var s of y(u))A.call(u,s)&&C(o,s,u[s]);return o};var b=(o,u,s)=>new Promise((i,t)=>{var p=d=>{try{c(s.next(d))}catch(l){t(l)}},m=d=>{try{c(s.throw(d))}catch(l){t(l)}},c=d=>d.done?i(d.value):Promise.resolve(d.value).then(p,m);c((s=s.apply(o,u)).next())});import{d as T,s as E,j as U,v as q,o as _,c as f,a as e,x as r,A as D,F as V,y as P,z as x,m as B,l as G,B as H,C as M,T as F}from"./index.js?v=5b4be379";import{i as v}from"./chunk.6d3585bb.js";const L=["onSubmit"],N=e("div",{class:"label-name"},[e("span",null,"\u5185\u7F51\u5730\u5740")],-1),R={class:"label-value"},j=e("div",{class:"label-name"},[e("span",null,"\u5B50\u7F51\u63A9\u7801")],-1),z={class:"label-value"},O=e("div",{class:"label-name"},[e("span",null,"DHCP\u670D\u52A1")],-1),$={class:"label-value"},J={class:"label-flex"},K=e("div",{class:"label-name"},[e("span",null,"IP\u6C60\u8D77\u59CB\u5730\u5740")],-1),Q={class:"label-value"},W=e("div",{class:"label-name"},[e("span",null,"IP\u6C60\u7ED3\u675F\u5730\u5740")],-1),X={class:"label-value"},Y={class:"label-btns"},Z=["disabled"],ee={key:2,class:"label-msg"},ue=T({__name:"index",setup(o){return b(this,null,function*(){let u,s;const i=E(""),t=U({lanIp:"",netMask:"255.255.255.0",enableDhcp:!1,dhcpStart:"",dhcpEnd:""}),p=E(!1),m=E(!1),c=()=>b(this,null,function*(){p.value=!0;const l=yield M.Guide.GetLan.GET();if(l.data){const{result:a}=l.data;a&&(t.lanIp=a.lanIp,t.netMask=a.netMask,m.value=a.enableDhcp||!1,t.dhcpStart=a.dhcpStart,t.dhcpEnd=a.dhcpEnd,a.lanIp,location.hostname)}p.value=!1});[u,s]=q(()=>c()),yield u,s();const d=()=>b(this,null,function*(){const l=k({},t);if(!v.isValidIP(l.lanIp)){F.Error("IPv4\u5730\u5740\u683C\u5F0F\u9519\u8BEF");return}if(!v.isValidMask(l.netMask)){F.Error("IPv4\u5B50\u7F51\u63A9\u7801\u683C\u5F0F\u9519\u8BEF");return}if(l.enableDhcp&&!v.isValidIP(l.dhcpStart)||!v.isValidIP(l.dhcpEnd)||!v.isValidMaskRange(l.lanIp,l.netMask,l.dhcpStart,l.dhcpEnd)){F.Error("DHCP\u7684IP\u6C60\u683C\u5F0F\u9519\u8BEF\u6216\u8D85\u51FA\u5B50\u7F51\u8303\u56F4");return}const a=F.Loading("\u6B63\u5728\u914D\u7F6E,\u8BF7\u7A0D\u7B49\u2026");let n=!1;try{const h=yield M.Guide.LanIp.POST(l);if(h.data){const{result:ae,success:S,error:I}=h.data;if(I){i.value=I;return}(S||0)==0&&(n=!0)}}catch(h){i.value=h}finally{a.Close()}n&&(i.value=`\u66F4\u65B0\u6210\u529F,\u8BF7\u8FDB\u5165 ${l.lanIp} \u8DEF\u7531\u5668\u5730\u5740`)});return(l,a)=>(_(),f("form",{class:"form-container",onSubmit:H(d,["prevent"])},[N,e("div",R,[r(e("input",{type:"text",placeholder:"192.168.100.1","onUpdate:modelValue":a[0]||(a[0]=n=>t.lanIp=n),required:""},null,512),[[D,t.lanIp,void 0,{trim:!0}]])]),j,e("div",z,[r(e("input",{type:"text",placeholder:"255.255.255.0","onUpdate:modelValue":a[1]||(a[1]=n=>t.netMask=n),required:""},null,512),[[D,t.netMask,void 0,{trim:!0}]])]),m.value?(_(),f(V,{key:0},[O,e("div",$,[e("div",J,[e("label",null,[r(e("input",{type:"radio",value:!1,"onUpdate:modelValue":a[2]||(a[2]=n=>t.enableDhcp=n)},null,512),[[P,t.enableDhcp]]),x("\u4FDD\u6301DHCP")]),e("label",null,[r(e("input",{type:"radio",value:!0,"onUpdate:modelValue":a[3]||(a[3]=n=>t.enableDhcp=n)},null,512),[[P,t.enableDhcp]]),x("\u4FEE\u6539DHCP")])])])],64)):B("",!0),t.enableDhcp?(_(),f(V,{key:1},[K,e("div",Q,[r(e("input",{type:"text",placeholder:"192.168.100.100","onUpdate:modelValue":a[4]||(a[4]=n=>t.dhcpStart=n),required:""},null,512),[[D,t.dhcpStart,void 0,{trim:!0}]])]),W,e("div",X,[r(e("input",{type:"text",placeholder:"192.168.100.100","onUpdate:modelValue":a[5]||(a[5]=n=>t.dhcpEnd=n),required:""},null,512),[[D,t.dhcpEnd,void 0,{trim:!0}]])])],64)):B("",!0),e("div",Y,[e("button",{class:"sumbit",disabled:p.value},"\u4FDD\u5B58",8,Z)]),i.value?(_(),f("div",ee,[e("span",null,G(i.value),1)])):B("",!0)],40,L))})}});export{ue as default}; ================================================ FILE: luci-app-istorex/htdocs/luci-static/istorex/chunk.7deee291.js ================================================ var f=(n,u,c)=>new Promise((l,o)=>{var d=s=>{try{p(c.next(s))}catch(e){o(e)}},F=s=>{try{p(c.throw(s))}catch(e){o(e)}},p=s=>s.done?l(s.value):Promise.resolve(s.value).then(d,F);p((c=c.apply(n,u)).next())});import{d as $,M as b,s as M,r as N,o as h,c as y,a as t,b as S,_ as A,T as v,C as z,p as g,q as x,l as O,g as q,n as G,j as H,v as W,x as C,A as T,z as U,D as V,e as E,w as L,N as R,S as j}from"./index.js?v=5b4be379";const P=n=>(g("data-v-7b2637d8"),n=n(),x(),n),J=P(()=>t("div",{class:"f"},[t("div",{class:"titleMain"},"\u4E92\u8054\u7F51"),t("div",{class:"titleSub"},"\u8054\u673A\u7C7B\u578B")],-1)),K={class:"r"},Q=P(()=>t("div",{class:"title"}," \u8BF7\u5728\u4EE5\u4E0B\u9009\u9879\u4E2D\u9009\u62E9\u7F51\u7EDC\u8FDE\u63A5\u7C7B\u578B\u3002\u82E5\u60A8\u4E0D\u77E5\u9053\u7F51\u7EDC\u8FDE\u63A5\u7C7B\u578B\uFF0C\u8BF7\u54A8\u8BE2\u60A8\u7684\u7F51\u7EDC\u670D\u52A1\u4F9B\u5E94\u5546\uFF08ISP\uFF09\u3002 ",-1)),X={class:"selector-container"},Y=P(()=>t("div",{class:"select-bar"}," \u81EA\u52A8\u8054\u7F51\uFF08\u52A8\u6001IP\uFF09 ",-1)),Z={class:"narrow-container"},tt=P(()=>t("div",{class:"select-bar"}," \u62E8\u53F7\u8054\u7F51\uFF08PPPoE\uFF09 ",-1)),et={class:"narrow-container"},st={class:"btns"},at=$({__name:"router",props:{setup:{type:String,required:!0}},emits:["update:setup"],setup(n,{emit:u}){const c=b(),l=()=>{u("update:setup","wizard")},o=()=>{u("update:setup","router-pppoe")},d=M(!1),F=()=>f(this,null,function*(){const s={wanProto:"dhcp",dnsProto:"auto"};d.value=!0;const e=v.Loading("\u4FDD\u5B58\u4E2D...");try{const a=yield z.Guide.ClientModel.POST(s);if(a!=null&&a.data){const{success:_,error:D}=a==null?void 0:a.data;if(D)throw D;(_==null||_==0)&&(yield p())}}catch(a){v.Error(`${a}`)}finally{d.value=!1,e.Close()}}),p=()=>f(this,null,function*(){const s=v.Loading("\u914D\u7F6E\u4E2D...");try{const e=yield z.Istorex.Updata.POST({model:"router"});if(e.data){const{success:a,error:_}=e.data;if(_)throw _;a===0&&c.push({path:"/router"})}}catch(e){v.Error(`${e}`)}finally{s.Close()}});return(s,e)=>{const a=N("icon-right");return h(),y("form",null,[J,t("div",K,[Q,t("div",X,[t("div",{class:"selector-container_item",onClick:e[0]||(e[0]=_=>F())},[Y,t("div",Z,[S(a)])]),t("div",{class:"selector-container_item",onClick:e[1]||(e[1]=_=>o())},[tt,t("div",et,[S(a)])])]),t("div",st,[t("button",{class:"back",type:"button",onClick:e[2]||(e[2]=_=>l())},"\u4E0A\u4E00\u6B65"),t("button",{class:"next",type:"button",onClick:e[3]||(e[3]=_=>p())}," \u4E0D\u914D\u7F6E\uFF0C\u8FDB\u5165\u4E3B\u754C\u9762 ")])])])}}});var ot=A(at,[["__scopeId","data-v-7b2637d8"]]);const ut={},nt={class:"main"};function lt(n,u){return h(),y("div",nt)}var it=A(ut,[["render",lt]]);const r=n=>(g("data-v-041c9ebc"),n=n(),x(),n),dt={id:"wizard"},rt={class:"wizard_title"},ct={class:"wizard_body"},pt={class:"wizard-item_icon"},_t={t:"1654871923674",class:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"1414",width:"128",height:"128",style:{padding:"5px"}},ht=r(()=>t("path",{d:"M247.466667 76.8h25.6l51.2 307.2h-25.6L247.466667 76.8zM762.453333 76.8h25.6L742.4 385.706667h-25.6L762.453333 76.8z",fill:"#96CAFF","p-id":"1415"},null,-1)),vt=r(()=>t("path",{d:"M275.2 409.6H324.266667L256.938667 51.2H230.4zM230.4 25.6h26.538667a25.6 25.6 0 0 1 25.173333 20.906667l67.242667 358.4A25.6 25.6 0 0 1 324.266667 435.2h-49.066667a25.6 25.6 0 0 1-25.6-22.442667L204.8 54.357333A25.6 25.6 0 0 1 227.242667 25.6zM785.066667 51.2l-44.885334 358.4H691.2l67.242667-358.4z m0-25.6h-26.624a25.6 25.6 0 0 0-25.173334 20.906667l-67.157333 358.4A25.6 25.6 0 0 0 691.2 435.2h48.981333a25.6 25.6 0 0 0 25.6-22.442667l44.885334-358.4A25.6 25.6 0 0 0 788.138667 25.6z",fill:"#175AA7","p-id":"1416"},null,-1)),ft=r(()=>t("path",{d:"M59.733333 665.6h930.133334a8.533333 8.533333 0 0 1 8.533333 8.533333v162.133334a8.533333 8.533333 0 0 1-8.533333 8.533333H59.733333a8.533333 8.533333 0 0 1-8.533333-8.533333V674.133333a8.533333 8.533333 0 0 1 8.533333-8.533333z",fill:"#96CAFF","p-id":"1417"},null,-1)),Ft=r(()=>t("path",{d:"M460.8 768h25.6v-25.6h-25.6z m-25.6-51.2h76.8v76.8h-76.8zM716.8 768h25.6v-25.6h-25.6z m-25.6-51.2h76.8v76.8h-76.8zM588.8 768h25.6v-25.6h-25.6z m-25.6-51.2h76.8v76.8h-76.8zM844.8 768h25.6v-25.6h-25.6z m-25.6-51.2h76.8v76.8h-76.8z",fill:"#175AA7","p-id":"1418"},null,-1)),mt=r(()=>t("path",{d:"M153.6 844.8h68.693333l-25.6 76.8H179.2l-25.6-76.8z",fill:"#96CAFF","p-id":"1419"},null,-1)),wt=r(()=>t("path",{d:"M203.434667 844.8h8.533333l12.629333 17.493333-2.730666 8.106667h-26.965334z m-74.069334 0h-8.533333l-12.629333 17.493333 2.730666 8.106667h26.965334z m17.066667 51.2h39.936l8.533333-25.6h-57.002666zM102.4 844.8h128l-25.6 76.8h-76.8z",fill:"#175AA7","p-id":"1420"},null,-1)),zt=r(()=>t("path",{d:"M844.8 844.8h68.693333l-25.6 76.8H870.4l-25.6-76.8z",fill:"#96CAFF","p-id":"1421"},null,-1)),Dt=r(()=>t("path",{d:"M913.066667 870.4l2.730666-8.106667-12.629333-17.493333h-8.533333l-8.533334 25.6z m-92.501334-25.6h-8.533333l-12.629333 17.493333 2.730666 8.106667h26.965334z m17.066667 51.2h39.936l8.533333-25.6h-57.002666zM793.6 844.8h128l-25.6 76.8h-76.8zM204.8 768h25.6v25.6h-25.6zM281.6 768h25.6v25.6h-25.6zM128 768h25.6v25.6h-25.6zM358.4 768h25.6v25.6h-25.6zM204.8 716.8h25.6v25.6h-25.6zM281.6 716.8h25.6v25.6h-25.6zM128 716.8h25.6v25.6h-25.6zM358.4 716.8h25.6v25.6h-25.6z",fill:"#175AA7","p-id":"1422"},null,-1)),yt=r(()=>t("path",{d:"M69.12 640l176.128-249.941333A76.8 76.8 0 0 1 307.2 358.4h441.6A76.8 76.8 0 0 1 810.666667 390.058667L986.026667 640",fill:"#B3D9FF","p-id":"1423"},null,-1)),Et=r(()=>t("path",{d:"M742.4 358.4l187.050667 256.597333h57.941333L805.290667 358.4H742.4z",fill:"#96CAFF","p-id":"1424"},null,-1)),At=r(()=>t("path",{d:"M51.2 640a25.6 25.6 0 0 0-25.6 25.6v153.6a25.6 25.6 0 0 0 25.6 25.6h921.6a25.6 25.6 0 0 0 25.6-25.6V665.6a25.6 25.6 0 0 0-25.6-25.6z m0-25.6h921.6a51.2 51.2 0 0 1 51.2 51.2v153.6a51.2 51.2 0 0 1-51.2 51.2H51.2a51.2 51.2 0 0 1-51.2-51.2V665.6a51.2 51.2 0 0 1 51.2-51.2z",fill:"#175AA7","p-id":"1425"},null,-1)),$t=r(()=>t("path",{d:"M167.936 451.84L186.197333 426.666667l15.786667-21.674667A51.2 51.2 0 0 1 243.370667 384h536.149333a51.2 51.2 0 0 1 41.386667 21.077333L985.429333 640h31.232L841.642667 390.058667A76.8 76.8 0 0 0 779.52 358.4H243.370667a76.8 76.8 0 0 0-62.122667 31.658667l-34.133333 47.104L5.12 640h31.232z",fill:"#175AA7","p-id":"1426"},null,-1)),bt=[ht,vt,ft,Ft,mt,wt,zt,Dt,yt,Et,At,$t],Mt=r(()=>t("div",{class:"wizard-item_name"}," \u8DEF\u7531\u6A21\u5F0F ",-1)),Bt=r(()=>t("div",{class:"wizard-item_icon"},[t("svg",{t:"1658387243046",class:"icon",viewBox:"0 0 1137 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"40015",width:"128",height:"128"},[t("path",{d:"M0.967111 0.967111h1135.445333V244.622222H0.967111z",fill:"#5B8FD9","p-id":"40016"}),t("path",{d:"M606.037333 122.766222a47.160889 47.160889 0 1 0 94.264889 0 47.160889 47.160889 0 0 0-94.264889 0z",fill:"#FE6D68","p-id":"40017"}),t("path",{d:"M771.015111 122.766222a47.160889 47.160889 0 1 0 94.321778 0 47.160889 47.160889 0 0 0-94.321778 0z",fill:"#F9D65D","p-id":"40018"}),t("path",{d:"M932.124444 122.766222a47.160889 47.160889 0 1 0 94.264889 0 47.160889 47.160889 0 0 0-94.264889 0z",fill:"#68D279","p-id":"40019"}),t("path",{d:"M0.967111 370.289778h1135.445333v243.598222H0.967111z",fill:"#5B8FD9","p-id":"40020"}),t("path",{d:"M606.037333 488.106667a47.160889 47.160889 0 1 0 94.264889 0 47.160889 47.160889 0 0 0-94.264889 0z",fill:"#FE6D68","p-id":"40021"}),t("path",{d:"M771.015111 488.106667a47.160889 47.160889 0 1 0 94.321778 0 47.160889 47.160889 0 0 0-94.321778 0z",fill:"#F9D65D","p-id":"40022"}),t("path",{d:"M932.124444 488.106667a47.160889 47.160889 0 1 0 94.264889 0 47.160889 47.160889 0 0 0-94.264889 0z",fill:"#68D279","p-id":"40023"}),t("path",{d:"M0.967111 735.687111h1135.445333v243.541333H0.967111z",fill:"#5B8FD9","p-id":"40024"}),t("path",{d:"M606.037333 857.486222a47.160889 47.160889 0 1 0 94.264889 0 47.160889 47.160889 0 0 0-94.264889 0z",fill:"#FE6D68","p-id":"40025"}),t("path",{d:"M771.015111 857.486222a47.160889 47.160889 0 1 0 94.321778 0 47.160889 47.160889 0 0 0-94.321778 0z",fill:"#F9D65D","p-id":"40026"}),t("path",{d:"M932.124444 857.486222a47.160889 47.160889 0 1 0 94.264889 0 47.160889 47.160889 0 0 0-94.264889 0z",fill:"#68D279","p-id":"40027"})])],-1)),Ct=r(()=>t("div",{class:"wizard-item_name"}," NAS\u6A21\u5F0F ",-1)),gt=[Bt,Ct],xt=$({__name:"wizard",props:{setup:{type:String,required:!0}},emits:["update:setup"],setup(n,{emit:u}){const c=M(!1),l=b(),o=()=>f(this,null,function*(){c.value||(yield F("router"))}),d=()=>f(this,null,function*(){c.value||(yield F("next-nas"))}),F=p=>f(this,null,function*(){c.value=!0;try{const s=yield z.Istorex.Updata.POST({model:p});if(s.data){const{success:e,error:a}=s.data;if(a)throw a;e===0&&l.push({path:`/${p}`})}}catch(s){v.Error(`${s}`)}finally{c.value=!1}});return(p,s)=>(h(),y("div",dt,[t("h1",rt,O(q(G).HostName)+" \u5411\u5BFC\u6A21\u5F0F",1),t("div",ct,[t("div",{class:"wizard-item",onClick:s[0]||(s[0]=e=>o())},[t("div",pt,[(h(),y("svg",_t,bt))]),Mt]),t("div",{class:"wizard-item",onClick:s[1]||(s[1]=e=>d())},gt)])]))}});var Pt=A(xt,[["__scopeId","data-v-041c9ebc"]]);const k=n=>(g("data-v-72afa128"),n=n(),x(),n),St=k(()=>t("div",{class:"title"},[t("span",null,"PPPoE \u4E0A\u7F51"),U(" \u8F93\u5165\u7528\u6237\u8D26\u53F7\u548C\u5BC6\u7801 ")],-1)),kt={class:"form-item"},It=k(()=>t("span",{class:"name"}," \u7528\u6237\u540D ",-1)),Tt={class:"form-item"},Vt=k(()=>t("span",{class:"name"},"\u5BC6\u7801",-1)),Lt={class:"btns"},Ht=["disabled"],Ut=["disabled"],Nt=$({__name:"router-pppoe",props:{setup:{type:String,required:!0}},emits:["update:setup"],setup(c,l){return f(this,arguments,function*(n,{emit:u}){let o,d;const F=b(),p=()=>{u("update:setup","router")},s=H({account:"",password:""}),e=M(!1),a=()=>f(this,null,function*(){e.value=!0;try{const m=yield z.Guide.Pppoe.GET(),{result:i}=m.data;i&&(s.account=i.account||"",s.password=i.password||"")}catch(m){}finally{}e.value=!1});[o,d]=W(()=>a()),yield o,d();const _=()=>f(this,null,function*(){if(s.account==""){v.Warning("\u8D26\u53F7\u4E0D\u80FD\u4E3A\u7A7A");return}if(s.password==""){v.Warning("\u5BC6\u7801\u4E0D\u80FD\u4E3A\u7A7A");return}e.value=!0;const m=v.Loading("\u4FDD\u5B58\u4E2D...");try{const i=yield z.Guide.Pppoe.POST({account:s.account,password:s.password});if(i.data){const{error:w,success:I}=i.data;if(w)throw w;(I==null||I==0)&&(yield D())}}catch(i){v.Error(`${i}`)}finally{e.value=!1,m.Close()}}),D=()=>f(this,null,function*(){e.value=!0;try{const m=yield z.Istorex.Updata.POST({model:"router"});if(m.data){const{success:i,error:w}=m.data;if(w)throw w;i===0&&F.push({path:"/router"})}}catch(m){v.Error(`${m}`)}finally{e.value=!1}});return(m,i)=>(h(),y("form",null,[St,t("div",kt,[It,t("label",null,[C(t("input",{type:"text",placeholder:"\u8BF7\u8F93\u5165\u8D26\u53F7","onUpdate:modelValue":i[0]||(i[0]=w=>s.account=w)},null,512),[[T,s.account,void 0,{trim:!0}]])])]),t("div",Tt,[Vt,t("label",null,[C(t("input",{type:"password",placeholder:"\u8BF7\u8F93\u5165\u5BC6\u7801","onUpdate:modelValue":i[1]||(i[1]=w=>s.password=w)},null,512),[[T,s.password,void 0,{trim:!0}]])])]),t("div",Lt,[t("button",{class:"back",type:"button",disabled:e.value,onClick:i[2]||(i[2]=w=>p())},"\u4E0A\u4E00\u6B65",8,Ht),t("button",{class:"next",type:"button",disabled:e.value,onClick:_},"\u4FDD\u5B58\u5E94\u7528",8,Ut)])]))})}});var Ot=A(Nt,[["__scopeId","data-v-72afa128"]]);const B=n=>(g("data-v-56e86acc"),n=n(),x(),n),qt=B(()=>t("div",{class:"title"},[t("span",null,"DHCP\u914D\u7F6E"),U(" \u81EA\u52A8\u8054\u7F51 ")],-1)),Gt={class:"form-item"},Wt=B(()=>t("span",{class:"name"}," IP\u5730\u5740 ",-1)),Rt=B(()=>t("option",{value:"dhcp"},"\u81EA\u52A8\u83B7\u53D6",-1)),jt=[Rt],Jt={class:"form-item"},Kt=B(()=>t("span",{class:"name"}," DNS ",-1)),Qt=B(()=>t("option",{value:"auto"},"\u81EA\u52A8\u83B7\u53D6",-1)),Xt=[Qt],Yt={class:"btns"},Zt=["disabled"],t6=["disabled"],e6=$({__name:"router-dhcp",props:{setup:{type:String,required:!0}},emits:["update:setup"],setup(n,{emit:u}){const c=b(),l=()=>{u("update:setup","router")},o=M(!1),d=H({wanProto:"dhcp",dnsProto:"auto"}),F=()=>f(this,null,function*(){const s={wanProto:d.wanProto,dnsProto:d.dnsProto};o.value=!0;const e=v.Loading("\u4FDD\u5B58\u4E2D...");try{const a=yield z.Guide.ClientModel.POST(s);if(a!=null&&a.data){const{success:_,error:D}=a==null?void 0:a.data;if(D)throw D;(_==null||_==0)&&(yield p())}}catch(a){v.Error(`${a}`)}finally{o.value=!1,e.Close()}}),p=()=>f(this,null,function*(){o.value=!0;try{const s=yield z.Istorex.Updata.POST({model:"router"});if(s.data){const{success:e,error:a}=s.data;if(a)throw a;e===0&&c.push({path:"/router"})}}catch(s){v.Error(`${s}`)}finally{o.value=!1}});return(s,e)=>(h(),y("form",null,[qt,t("div",Gt,[Wt,t("label",null,[C(t("select",{"onUpdate:modelValue":e[0]||(e[0]=a=>d.wanProto=a),disabled:""},jt,512),[[V,d.wanProto]])])]),t("div",Jt,[Kt,t("label",null,[C(t("select",{"onUpdate:modelValue":e[1]||(e[1]=a=>d.dnsProto=a),disabled:""},Xt,512),[[V,d.dnsProto]])])]),t("div",Yt,[t("button",{class:"back",type:"button",disabled:o.value,onClick:e[2]||(e[2]=a=>l())},"\u4E0A\u4E00\u6B65",8,Zt),t("button",{class:"next",type:"button",disabled:o.value,onClick:F},"\u4FDD\u5B58\u5E94\u7528",8,t6)])]))}});var s6=A(e6,[["__scopeId","data-v-56e86acc"]]);const a6={id:"main"},o6=$({__name:"index",setup(n){b();const u=M("wizard");return(c,l)=>(h(),y("div",a6,[(h(),E(j,null,{default:L(()=>[S(R,{name:"slide-top"},{default:L(()=>[u.value=="nas"?(h(),E(it,{key:0,setup:u.value,"onUpdate:setup":l[0]||(l[0]=o=>u.value=o)},null,8,["setup"])):u.value=="router"?(h(),E(ot,{key:1,setup:u.value,"onUpdate:setup":l[1]||(l[1]=o=>u.value=o)},null,8,["setup"])):u.value=="router-pppoe"?(h(),E(Ot,{key:2,setup:u.value,"onUpdate:setup":l[2]||(l[2]=o=>u.value=o)},null,8,["setup"])):u.value=="router-dhcp"?(h(),E(s6,{key:3,setup:u.value,"onUpdate:setup":l[3]||(l[3]=o=>u.value=o)},null,8,["setup"])):(h(),E(Pt,{key:4,setup:u.value,"onUpdate:setup":l[4]||(l[4]=o=>u.value=o)},null,8,["setup"]))]),_:1})]),_:1}))]))}});var l6=A(o6,[["__scopeId","data-v-06e7b595"]]);export{l6 as default}; ================================================ FILE: luci-app-istorex/htdocs/luci-static/istorex/chunk.83d679c2.js ================================================ import{d as a,r as e,o as u,e as r,w as p,b as s}from"./index.js?v=5b4be379";const _=a({__name:"index",setup(c){const t=[{name:"index",title:"\u7F51\u7EDC\u914D\u7F6E",path:"/router/network"},{name:"pppoe",title:"\u62E8\u53F7\u8FDE\u63A5",path:"/router/network/pppoe"},{name:"dhcp",title:"DHCP\u8FDE\u63A5",path:"/router/network/dhcp"},{name:"gateway",title:"\u65C1\u8DEF\u7531\u8FDE\u63A5",path:"/router/network/gateway"},{name:"intranet",title:"\u5185\u7F51\u914D\u7F6E",path:"/router/network/intranet"},{name:"dns",title:"DNS\u914D\u7F6E",path:"/router/network/dns"}];return(i,l)=>{const o=e("router-loading"),n=e("layout-page");return u(),r(n,{menus:t},{default:p(()=>[s(o)]),_:1})}}});export{_ as default}; ================================================ FILE: luci-app-istorex/htdocs/luci-static/istorex/chunk.8bf617a1.js ================================================ var d=(_,i,l)=>new Promise((t,e)=>{var n=o=>{try{c(l.next(o))}catch(u){e(u)}},p=o=>{try{c(l.throw(o))}catch(u){e(u)}},c=o=>o.done?t(o.value):Promise.resolve(o.value).then(n,p);c((l=l.apply(_,i)).next())});import{d as E,s as v,j as h,v as F,o as D,c as f,a,x as b,A as B,l as y,m as A,B as C,C as w,T as x}from"./index.js?v=5b4be379";const g=["onSubmit"],S=a("div",{class:"label-info"}," \u8BF7\u786E\u4FDD\u60A8\u5DF2\u5C06\u8DEF\u7531 WAN \u53E3\u8FDE\u63A5\u5230\u5149\u732B ",-1),T=a("div",{class:"label-name"},[a("span",null,"\u8D26\u53F7")],-1),V={class:"label-value"},k=a("div",{class:"label-name"},[a("span",null,"\u5BC6\u7801")],-1),q={class:"label-value"},G={class:"label-btns"},N=["disabled"],P={key:0,class:"label-msg"},j=E({__name:"index",setup(_){return d(this,null,function*(){let i,l;const t=v(""),e=h({account:"",password:""}),n=v(!1),p=v(!1),c=()=>d(this,null,function*(){n.value=!0;try{const u=yield w.Guide.Pppoe.GET(),{result:s}=u.data;s&&(e.account=s.account||"",e.password=s.password||"")}catch(u){t.value=u}finally{}n.value=!1,p.value=!0});[i,l]=F(()=>c()),yield i,l();const o=()=>d(this,null,function*(){if(e.account==""){t.value="\u8D26\u53F7\u4E0D\u80FD\u4E3A\u7A7A";return}if(e.password==""){t.value="\u5BC6\u7801\u4E0D\u80FD\u4E3A\u7A7A";return}n.value=!0;const u=x.Loading("\u4FDD\u5B58\u4E2D...");try{const s=yield w.Guide.Pppoe.POST({account:e.account,password:e.password});if(s.data){const{error:r,success:m}=s.data;r&&(t.value=r),(m==null||m==0)&&(t.value="\u914D\u7F6E\u5B8C\u6210")}}catch(s){t.value=s}finally{}n.value=!1,u.Close()});return(u,s)=>(D(),f("form",{class:"form-container",onSubmit:C(o,["prevent"])},[S,T,a("div",V,[b(a("input",{type:"text",placeholder:"\u5BBD\u5E26\u8D26\u53F7","onUpdate:modelValue":s[0]||(s[0]=r=>e.account=r),required:""},null,512),[[B,e.account,void 0,{trim:!0}]])]),k,a("div",q,[b(a("input",{type:"password",placeholder:"\u5BBD\u5E26\u5BC6\u7801","onUpdate:modelValue":s[1]||(s[1]=r=>e.password=r),required:""},null,512),[[B,e.password,void 0,{trim:!0}]])]),a("div",G,[a("button",{class:"sumbit",disabled:n.value},"\u4FDD\u5B58",8,N)]),t.value?(D(),f("div",P,[a("span",null,y(t.value),1)])):A("",!0)],40,g))})}});export{j as default}; ================================================ FILE: luci-app-istorex/htdocs/luci-static/istorex/chunk.8f1ff823.js ================================================ var A=(w,h,c)=>new Promise((l,t)=>{var F=i=>{try{d(c.next(i))}catch(D){t(D)}},o=i=>{try{d(c.throw(i))}catch(D){t(D)}},d=i=>i.done?l(i.value):Promise.resolve(i.value).then(F,o);d((c=c.apply(w,h)).next())});import{d as N,s as M,j as f,v as x,o as m,c as v,a,x as r,D as S,F as b,A as _,m as I,E as V,l as U,B as T,C as P,T as q}from"./index.js?v=5b4be379";const G=["onSubmit"],L=a("div",{class:"label-info"}," \u8BF7\u786E\u4FDD\u60A8\u5DF2\u5C06\u8DEF\u7531 WAN \u53E3\u8FDE\u63A5\u5230\u4E0A\u7EA7\u8DEF\u7531\u5C40\u57DF\u7F51\uFF08 LAN \uFF09\u63A5\u53E3 ",-1),W=a("div",{class:"label-name"},[a("span",null,"WAN \u63A5\u53E3\u914D\u7F6E\u65B9\u5F0F")],-1),H={class:"label-value"},j=a("option",{value:"dhcp"},"\u81EA\u52A8\u83B7\u53D6 IP \u5730\u5740\uFF08DHCP\uFF09",-1),O=a("option",{value:"static"},"\u9759\u6001 IP \u5730\u5740",-1),z=[j,O],J=a("div",{class:"label-name"},[a("span",null,"IP\u5730\u5740")],-1),K={class:"label-value"},Q=a("div",{class:"label-name"},[a("span",null,"\u5B50\u7F51\u63A9\u7801")],-1),R={class:"label-value"},X=a("div",{class:"label-name"},[a("span",null,"\u7F51\u5173\u5730\u5740")],-1),Y={class:"label-value"},Z=a("div",{class:"label-name"},[a("span",null,"DNS \u914D\u7F6E\u65B9\u5F0F")],-1),$={class:"label-value"},tt=a("option",{value:"auto"},"\u81EA\u52A8\u83B7\u53D6\uFF08DHCP\uFF09",-1),at=a("option",{value:"manual"},"\u624B\u52A8\u914D\u7F6E",-1),st=[tt,at],et=a("div",{class:"label-name"},[a("span",null,"DNS\u670D\u52A1\u5668")],-1),ut={class:"label-value"},nt=["onUpdate:modelValue"],lt=a("div",{class:"label-name"},[a("span",null,"DNS\u670D\u52A1\u5668")],-1),ot={class:"label-value"},dt=a("div",{class:"label-name"}," \u5907\u7528DNS\u670D\u52A1\u5668 ",-1),it={class:"label-value"},rt={class:"label-btns"},ct=["disabled"],pt={key:2,class:"label-msg"},_t=N({__name:"index",setup(w){return A(this,null,function*(){let h,c;const l=M(""),t=f({wanProto:"dhcp",dnsProto:"auto",staticIp:"",subnetMask:"",manualDnsIp:[],gateway:""}),F=f({staticIP:""}),o=f({dnsAddr1:"",dnsAddr2:""}),d=M(!1),i=()=>A(this,null,function*(){d.value=!0;try{const u=yield Promise.all([P.Guide.ClientModel.GET(),P.Network.Status.GET()]);if(u[0]){const e=u[0],{result:s,error:n}=e.data;if(s){const{wanProto:p,dnsProto:y,staticIp:k,subnetMask:E,gateway:g,manualDnsIp:B}=s;p&&(t.wanProto=p),y&&(t.dnsProto=y),k&&(t.staticIp=k),E&&(t.subnetMask=E),g&&(t.gateway=g),B&&(t.manualDnsIp=B||[])}n&&(l.value=n)}if(u[1]){const e=u[1],{result:s,error:n}=e.data;s&&s.ipv4addr&&(F.staticIP=s.ipv4addr),n&&(l.value=n)}}catch(u){l.value=u}d.value=!1});[h,c]=x(()=>i()),yield h,c();const D=u=>{u.target.value=="static"&&((t.staticIp==null||t.staticIp=="")&&(t.staticIp=F.staticIP),(t.subnetMask==null||t.subnetMask=="")&&(t.subnetMask="255.255.255.0"))},C=()=>A(this,null,function*(){const u={};switch(t.wanProto){case"dhcp":break;case"static":u.staticIp=t.staticIp,u.subnetMask=t.subnetMask,u.gateway=t.gateway;break}switch(t.dnsProto){case"auto":break;case"manual":u.manualDnsIp=[],t.manualDnsIp!=null&&t.manualDnsIp.length>0?u.manualDnsIp=t.manualDnsIp:(u.manualDnsIp.push(o.dnsAddr1),o.dnsAddr2&&u.manualDnsIp.push(o.dnsAddr2));break}u.dnsProto=t.dnsProto,u.wanProto=t.wanProto,d.value=!0;const e=q.Loading("\u4FDD\u5B58\u4E2D...");try{const s=yield P.Guide.ClientModel.POST(u);if(s!=null&&s.data){const{success:n,error:p}=s==null?void 0:s.data;p&&(l.value=p),(n==null||n==0)&&(l.value="\u914D\u7F6E\u5B8C\u6210")}}catch(s){l.value=s}d.value=!1,e.Close()});return(u,e)=>(m(),v("form",{class:"form-container",onSubmit:T(C,["prevent"])},[L,W,a("div",H,[r(a("select",{"onUpdate:modelValue":e[0]||(e[0]=s=>t.wanProto=s),onInput:D},z,544),[[S,t.wanProto]])]),t.wanProto=="static"?(m(),v(b,{key:0},[J,a("div",K,[r(a("input",{type:"text",placeholder:"ip\u5730\u5740","onUpdate:modelValue":e[1]||(e[1]=s=>t.staticIp=s),required:""},null,512),[[_,t.staticIp,void 0,{trim:!0}]])]),Q,a("div",R,[r(a("input",{type:"text",placeholder:"\u5B50\u7F51\u63A9\u7801\u5730\u5740","onUpdate:modelValue":e[2]||(e[2]=s=>t.subnetMask=s),required:""},null,512),[[_,t.subnetMask,void 0,{trim:!0}]])]),X,a("div",Y,[r(a("input",{type:"text",placeholder:"\u7F51\u5173\u5730\u5740","onUpdate:modelValue":e[3]||(e[3]=s=>t.gateway=s),required:""},null,512),[[_,t.gateway,void 0,{trim:!0}]])])],64)):I("",!0),Z,a("div",$,[r(a("select",{"onUpdate:modelValue":e[4]||(e[4]=s=>t.dnsProto=s)},st,512),[[S,t.dnsProto]])]),t.dnsProto=="manual"?(m(),v(b,{key:1},[t.manualDnsIp!=null&&t.manualDnsIp.length>0?(m(!0),v(b,{key:0},V(t.manualDnsIp,(s,n)=>(m(),v(b,null,[et,a("div",ut,[r(a("input",{type:"text",placeholder:"DNS\u670D\u52A1\u5668\u5730\u5740","onUpdate:modelValue":p=>t.manualDnsIp[n]=p},null,8,nt),[[_,t.manualDnsIp[n],void 0,{trim:!0}]])])],64))),256)):(m(),v(b,{key:1},[lt,a("div",ot,[r(a("input",{type:"text",placeholder:"\u4E3BDNS\u670D\u52A1\u5668\u5730\u5740","onUpdate:modelValue":e[5]||(e[5]=s=>o.dnsAddr1=s),required:""},null,512),[[_,o.dnsAddr1,void 0,{trim:!0}]])]),dt,a("div",it,[r(a("input",{type:"text",placeholder:"\u5907\u7528DNS\u670D\u52A1\u5668\u5730\u5740","onUpdate:modelValue":e[6]||(e[6]=s=>o.dnsAddr2=s)},null,512),[[_,o.dnsAddr2,void 0,{trim:!0}]])])],64))],64)):I("",!0),a("div",rt,[a("button",{class:"sumbit",disabled:d.value},"\u4FDD\u5B58",8,ct)]),l.value?(m(),v("div",pt,[a("span",null,U(l.value),1)])):I("",!0)],40,G))})}});export{_t as default}; ================================================ FILE: luci-app-istorex/htdocs/luci-static/istorex/chunk.a1bcc52b.js ================================================ var b=(i,u,t)=>new Promise((s,_)=>{var h=n=>{try{o(t.next(n))}catch(l){_(l)}},p=n=>{try{o(t.throw(n))}catch(l){_(l)}},o=n=>n.done?s(n.value):Promise.resolve(n.value).then(h,p);o((t=t.apply(i,u)).next())});import{d as F,I as Y,i as x,s as $,r as m,o as a,e as k,w as r,b as c,c as d,E as O,F as A,_ as y,O as X,C as M,T as G,Q as J,a as e,l as C,p as I,q as z,R as H,U,V as K,W as e1,g as L,j as q,m as E,H as t1,u as D,X as s1,k as n1,h as N,N as R,Y as a1,z as o1,n as i1,Z as l1,$ as T}from"./index.js?v=5b4be379";import{F as c1,a as u1,G as j}from"./chunk.ffd7724b.js";const Q=i=>(I("data-v-37664f80"),i=i(),z(),i),d1=Q(()=>e("div",{class:"app-content"},[e("div",{class:"app-icon",style:{background:"none",padding:"0"}},[e("svg",{class:"icon",viewBox:"0 0 520 520",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"},[e("title",null,"\u5E94\u7528\u5546\u5E97"),e("g",{id:"\u5E94\u7528\u5546\u5E97",stroke:"none","stroke-width":"1",fill:"none","fill-rule":"evenodd"},[e("path",{d:"M100.645161,0 L419.354839,0 C474.939626,0 520,45.0603736 520,100.645161 L520,419.354839 C520,474.939626 474.939626,520 419.354839,520 L100.645161,520 C45.0603736,520 0,474.939626 0,419.354839 L0,100.645161 C0,45.0603736 45.0603736,0 100.645161,0 Z",id:"Rectangle",fill:"#FFFFFF"}),e("g",{id:"Group-4",transform:"translate(100.000000, 110.000000)"},[e("path",{d:"M283.9875,300 L37.0125,300 C31.6725001,300 27,295.333333 27,290 L27,70 C27,64.6666668 31.6725001,60 37.0125,60 L283.9875,60 C289.3275,60 294,64.6666668 294,70 L294,290 C294,295.333333 289.995,300 283.9875,300 Z",id:"Path",fill:"#F4F4F4","fill-rule":"nonzero"}),e("path",{d:"M283.9875,300 L37.0125,300 C31.6725001,300 27,298.852778 27,297.541667 L27,243.458333 C27,242.147222 31.6725001,241 37.0125,241 L283.9875,241 C289.3275,241 294,242.147222 294,243.458333 L294,297.541667 C294,298.852778 289.995,300 283.9875,300 Z",id:"Path",fill:"#CACACA","fill-rule":"nonzero"}),e("g",{id:"Group"},[e("g",{id:"Group-3"},[e("path",{d:"M95,0 L80,135 C80,157.09139 62.09139,175 40,175 C17.90861,175 0,157.09139 0,135 L34,0 L95,0 Z",id:"Path",fill:"#C0FFEA"}),e("path",{d:"M160,0 L160,135 C160,157.09139 142.09139,175 120,175 C97.90861,175 80,157.09139 80,135 C80,131.957009 80.3397951,128.993381 80.9835121,126.14499 L95,0 L160,0 Z",id:"Path",fill:"#01DE96"}),e("path",{d:"M160,0 L227,0 L239.258077,127.292436 C239.744914,129.78649 240,132.363456 240,135 C240,157.09139 222.09139,175 200,175 C177.90861,175 160,157.09139 160,135 L160,135 L160,0 Z",id:"Combined-Shape",fill:"#C0FFEA"}),e("path",{d:"M227,0 L288,0 L320,135 C320,157.09139 302.09139,175 280,175 C258.129524,175 240.35859,157.447771 240.005359,135.661473 L240,135 L227,0 Z",id:"Path",fill:"#01DE96"})]),e("g",{id:"Group-2",transform:"translate(0.000000, 135.000000)"},[e("path",{d:"M80,0 C80,22.09139 62.09139,40 40,40 C17.90861,40 0,22.09139 0,0 L80,0 Z",id:"Path",fill:"#B3F1DD"}),e("path",{d:"M160,0 C160,22.09139 142.09139,40 120,40 C97.90861,40 80,22.09139 80,0 L160,0 Z",id:"Path",fill:"#02C485"}),e("path",{d:"M240,0 C240,22.09139 222.09139,40 200,40 C178.129524,40 160.35859,22.4477713 160.005359,0.66147314 L160,0 L240,0 Z",id:"Path",fill:"#B3F1DD"}),e("path",{d:"M320,0 C320,22.09139 302.09139,40 280,40 C258.129524,40 240.35859,22.4477713 240.005359,0.66147314 L240,0 L320,0 Z",id:"Path",fill:"#02C485"})])])])])])]),e("div",{class:"app-name"}," \u5E94\u7528\u5546\u5E97 ")],-1)),_1=Q(()=>e("div",{class:"app-content"},[e("div",{class:"app-icon",style:{background:"none",padding:"0"}},[e("svg",{t:"1667208366992",class:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"2669",width:"128",height:"128"},[e("path",{d:"M0 0m0 0l1024 0q0 0 0 0l0 1024q0 0 0 0l-1024 0q0 0 0 0l0-1024q0 0 0 0Z",fill:"#E8EFF8","p-id":"2670"}),e("path",{d:"M141.637818 405.643636A23.272727 23.272727 0 0 0 160.814545 442.181818h350.487273a23.272727 23.272727 0 0 0 18.455273-37.469091L364.683636 190.161455a46.545455 46.545455 0 0 0-75.170909 1.88509l-147.874909 213.620364z",fill:"#69CB91","p-id":"2671"}),e("path",{d:"M337.454545 884.363636a174.545455 174.545455 0 1 0 0-349.090909 174.545455 174.545455 0 0 0 0 349.090909z",fill:"#247ADE","p-id":"2672"}),e("path",{d:"M907.636364 186.181818a23.272727 23.272727 0 0 0-23.272728-23.272727h-209.454545a23.272727 23.272727 0 0 0-23.272727 23.272727v674.909091a23.272727 23.272727 0 0 0 23.272727 23.272727h209.454545a23.272727 23.272727 0 0 0 23.272728-23.272727V186.181818z",fill:"#A0BFF7","p-id":"2673"})])]),e("div",{class:"app-name"}," NAS\u5957\u4EF6 ")],-1)),r1=["onClick"],p1={class:"app-icon"},v1=["src"],h1={class:"app-name"},m1={class:"app-footer"},g1=["onClick"],f1=["onClick"],C1={class:"app-content"},$1={class:"app-icon"},w1=["src"],F1={class:"app-name"},k1=F({__name:"index",setup(i){const u=Y(),t=x(()=>u.localApps.filter(n=>n.name!="istorex")),s=$(!1);(()=>b(this,null,function*(){yield u.getApp(),setTimeout(()=>{p()},2e3)}))();const h=()=>{X.Open()},p=()=>b(this,null,function*(){try{if((yield M.Quickstart.Guide.GlobalFolders.GET()).status!==200)return}catch(n){console.log(n);return}s.value=!0;try{const n=yield M.Storage.Get.POST({key:"nas_guide_init"});if(n.data){const{success:l,error:g,result:v}=n.data;if(v&&v.key=="nas_guide_init")return}}catch(n){return}o()}),o=()=>{if(!s.value){G.Warning("\u8BF7\u5148\u66F4\u65B0\u7CFB\u7EDF\u5230\u6700\u65B0\u7248\u672C");return}J.OpenGuideWindow()};return(n,l)=>{const g=m("nas-section-title"),v=m("nas-section-item"),w=m("nas-section-container"),P=m("nas-section");return a(),k(P,null,{default:r(()=>[c(g,{title:"Apps"}),c(w,{class:"section-app-container"},{default:r(()=>[c(v,{onClick:l[0]||(l[0]=f=>h())},{default:r(()=>[d1]),_:1}),c(v,{onClick:l[1]||(l[1]=f=>o())},{default:r(()=>[_1]),_:1}),(a(!0),d(A,null,O(t.value,f=>(a(),d(A,null,[f.isWebUrl()?(a(),k(v,{key:0,class:"app-item",name:f.name,title:f.title},{default:r(()=>[e("div",{class:"app-content",onClick:Z=>f.openWebUrl()},[e("div",p1,[e("img",{alt:"\u56FE\u6807\u51FA\u8D70\u5566~",src:f.getIcon()},null,8,v1)]),e("div",h1,C(f.title),1)],8,r1),e("div",m1,[e("button",{class:"open",onClick:Z=>f.openWebUrl()}," \u6253\u5F00 ",8,g1),e("button",{class:"setting",onClick:Z=>f.openApp()}," \u914D\u7F6E ",8,f1)])]),_:2},1032,["name","title"])):(a(),k(v,{key:1,onClick:Z=>f.openApp(),name:f.name,title:f.title},{default:r(()=>[e("div",C1,[e("div",$1,[e("img",{alt:"\u56FE\u6807\u51FA\u8D70\u5566~",src:f.getIcon()},null,8,w1)]),e("div",F1,C(f.title),1)])]),_:2},1032,["onClick","name","title"]))],64))),256))]),_:1})]),_:1})}}});var y1=y(k1,[["__scopeId","data-v-37664f80"]]);const E1=i=>(I("data-v-c01a3f98"),i=i(),z(),i),L1={class:"tabls"},x1=E1(()=>e("section",{class:"tab-content"},[e("div",{class:"label-value"},[e("div",{class:"label-name"},[e("span",null,"\u6302\u8F7D\u70B9")]),e("div",{class:"label-value"},[e("input",{type:"text"})])])],-1)),B1=F({__name:"index",props:{disk:{type:Object,required:!0},close:Function},setup(i){const u=i,t=()=>{o.value&&location.reload(),u.close&&u.close()},s=$("main"),_=$(!1),h=$(u.disk),p=$(null),o=$(!1);H("disk",h),H("updateDisk",l=>{h.value=l,o.value=!0}),H("disabled",_),H("onMount",l=>{p.value=l,s.value="mount"});const n=l=>{l=="mount"&&(p.value=null),s.value=l};return(l,g)=>(a(),k(K,{onHandleClose:t,title:"\u5171\u4EAB\u8BBE\u7F6E",width:"420px"},{default:r(()=>[e("ul",L1,[e("button",{class:U({on:s.value=="main"}),onClick:g[0]||(g[0]=v=>n("main"))},"Samba",2),e("button",{class:U({on:s.value=="partition"}),onClick:g[1]||(g[1]=v=>n("partition"))},"WebDav",2)]),x1]),_:1}))}});var b1=y(B1,[["__scopeId","data-v-c01a3f98"]]);class A1 extends e1{Open(){this.openWindow(b1)}}const D1=new A1;const B=i=>(I("data-v-2815b650"),i=i(),z(),i),S1=B(()=>e("div",{class:"tool-content"},[e("div",{class:"f"},[e("div",{class:"title"}," \u6587\u4EF6\u7BA1\u7406 "),e("div",{class:"desc"}," \u5728\u7EBF\u7BA1\u7406\u6587\u4EF6 "),e("div",{class:"btns"},[e("a",{href:"/cgi-bin/luci/admin/services/linkease/file",target:"_blank",class:"open",rel:"noopener noreferrer"}," \u6253\u5F00 ")])]),e("div",{class:"r"},[e("svg",{class:"icon",viewBox:"0 0 520 520",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"},[e("title",null,"\u6587\u4EF6\u7BA1\u7406"),e("g",{id:"\u6587\u4EF6\u7BA1\u7406",stroke:"none","stroke-width":"1",fill:"none","fill-rule":"evenodd"},[e("path",{d:"M100.645161,0 L419.354839,0 C474.939626,0 520,45.0603736 520,100.645161 L520,419.354839 C520,474.939626 474.939626,520 419.354839,520 L100.645161,520 C45.0603736,520 0,474.939626 0,419.354839 L0,100.645161 C0,45.0603736 45.0603736,0 100.645161,0 Z",id:"Rectangle",fill:"#FFFFFF"}),e("g",{id:"Group-5",transform:"translate(91.000000, 125.000000)"},[e("path",{d:"M17.9469027,198 L320.053097,198 L320.004939,41.9999992 C319.997272,33.165374 312.834627,26.0049401 304,26 L168.501475,26 L168.501475,26 L151.360646,5.6827235 C148.32056,2.07926566 143.845981,1.98155802e-14 139.131426,0 L34,0 C25.1651196,0.00429126987 18.0023698,7.16512047 17.9957093,15.9999994 L17.9469027,198 L17.9469027,198 Z",id:"Path-2",fill:"#FFB02C",transform:"translate(169.000000, 99.000000) scale(-1, 1) translate(-169.000000, -99.000000) "}),e("path",{d:"M297.245454,178.4361 L67.8061501,197.326892 C63.4027721,197.689443 59.5392238,194.413704 59.1766735,190.010326 C59.1711924,189.943756 59.1665453,189.87712 59.1627333,189.810433 L51.4420645,54.7472375 C51.1956458,50.4364574 54.4144797,46.7079405 58.7150678,46.322598 L288.43249,25.7393906 C292.833138,25.3450825 296.720218,28.5928625 297.114526,32.9935104 C297.122855,33.0864604 297.129556,33.1795491 297.134627,33.2727336 L304.577178,170.028344 C304.812572,174.353677 301.562579,178.080651 297.245454,178.4361 Z",id:"Path",fill:"#E8E8E8","fill-rule":"nonzero"}),e("path",{d:"M289.245454,185.4361 L59.8061501,204.326892 C55.4027721,204.689443 51.5392238,201.413704 51.1766735,197.010326 C51.1711924,196.943756 51.1665453,196.87712 51.1627333,196.810433 L43.4420645,61.7472375 C43.1956458,57.4364574 46.4144797,53.7079405 50.7150678,53.322598 L280.43249,32.7393906 C284.833138,32.3450825 288.720218,35.5928625 289.114526,39.9935104 C289.122855,40.0864604 289.129556,40.1795491 289.134627,40.2727336 L296.577178,177.028344 C296.812572,181.353677 293.562579,185.080651 289.245454,185.4361 Z",id:"Path",fill:"#F3F3F3","fill-rule":"nonzero"}),e("path",{d:"M280.245454,191.4361 L50.8061501,210.326892 C46.4027721,210.689443 42.5392238,207.413704 42.1766735,203.010326 C42.1711924,202.943756 42.1665453,202.87712 42.1627333,202.810433 L34.4420645,67.7472375 C34.1956458,63.4364574 37.4144797,59.7079405 41.7150678,59.322598 L271.43249,38.7393906 C275.833138,38.3450825 279.720218,41.5928625 280.114526,45.9935104 C280.122855,46.0864604 280.129556,46.1795491 280.134627,46.2727336 L287.577178,183.028344 C287.812572,187.353677 284.562579,191.080651 280.245454,191.4361 Z",id:"Path",fill:"#FAFAFA","fill-rule":"nonzero"}),e("path",{d:"M272.050402,211.155772 L44.7097773,224.528092 C40.2991228,224.787529 36.5132653,221.422303 36.2538278,217.011649 C36.2531111,216.999464 36.2524223,216.987279 36.2517614,216.975091 L28.4285714,72.713026 C28.1911376,68.3346726 31.5223826,64.5810839 35.8979358,64.2966766 L263.165019,49.5245057 C267.573993,49.2379261 271.380491,52.5797871 271.667071,56.9887612 C271.66893,57.0173626 271.670635,57.0459738 271.672187,57.0745935 L279.568919,202.73651 C279.807318,207.133987 276.446738,210.897177 272.050402,211.155772 Z",id:"Path",fill:"#FFFFFF","fill-rule":"nonzero"}),e("path",{d:"M32.5622397,270 L305.635714,270 C313.829424,270 320.698984,263.809932 321.54932,255.660465 L336.157264,115.660465 C337.074313,106.871623 330.692964,99.0034433 321.904122,98.086394 C321.352506,98.0288369 320.798269,98 320.243658,98 L168.501475,98 L168.501475,98 L151.360646,77.6827235 C148.32056,74.0792657 143.845981,72 139.131426,72 L17.5158465,72 C8.67929053,72 1.51584653,79.163444 1.51584653,88 C1.51584653,88.4821829 1.53764343,88.9641194 1.5811705,89.4443337 L16.6275636,255.444334 C17.374725,263.687425 24.2853564,270 32.5622397,270 Z",id:"Path-2",fill:"#FFCA28"})])])])])],-1)),M1={class:"tool-content"},I1=B(()=>e("div",{class:"f"},[e("div",{class:"title"}," \u7F51\u7EDC\u5171\u4EAB "),e("div",{class:"desc"}," \u7F51\u7EDC\u5171\u4EAB\u6587\u4EF6 ")],-1)),z1={class:"content"},V1=B(()=>e("div",null,null,-1)),P1=B(()=>e("span",null,"\u5171\u4EAB\u6587\u4EF6",-1)),H1=[V1,P1],O1=B(()=>e("div",null,null,-1)),Z1=B(()=>e("span",null,"\u5171\u4EAB\u7528\u6237",-1)),G1=[O1,Z1],U1=B(()=>e("div",null,null,-1)),N1=B(()=>e("span",null,"\u5171\u4EAB\u8BBE\u7F6E",-1)),T1=[U1,N1],j1=F({__name:"index",setup(i){return(u,t)=>{const s=m("nas-section-item"),_=m("nas-section-container"),h=m("nas-section");return a(),k(h,null,{default:r(()=>[c(_,{class:"section-setting-container"},{default:r(()=>[c(s,null,{default:r(()=>[S1]),_:1}),c(s,null,{default:r(()=>[e("div",M1,[I1,e("div",z1,[e("div",{onClick:t[0]||(t[0]=p=>L(c1).Open())},H1),e("div",{onClick:t[1]||(t[1]=p=>L(u1).Open())},G1),e("div",{onClick:t[2]||(t[2]=p=>L(D1).Open())},T1)])])]),_:1})]),_:1})]),_:1})}}});var W1=y(j1,[["__scopeId","data-v-2815b650"]]);const q1={class:"disk-content"},R1={class:"name"},Q1={class:"info"},Y1={class:"icon"},X1={class:"card"},J1={key:0,class:"status main"},K1={key:0},e2={key:1},t2={key:2},s2={key:3},n2=["value"],a2=F({__name:"disk",props:{type:{type:String},disk:{type:Object,required:!0}},setup(i){const u=i,t=q(u.disk),s=x(()=>t.errorInfo?"error":t.childrens==null||t.childrens.length==0||t.childrens.length==1&&t.childrens[0].filesystem=="No FileSystem"?"load":t.childrens.filter(h=>h.mountPoint).length==0?"unmounted":"success"),_=()=>{u.type!="raid"&&t1.OpenDisk({disk:u.disk})};return(h,p)=>{const o=m("icon-disk"),n=m("nas-section-item");return a(),k(n,{onClick:p[0]||(p[0]=l=>_())},{default:r(()=>[e("div",q1,[e("div",R1,C(i.type=="raid"?"raid: ":"")+" "+C(t.name),1),e("div",Q1,[e("div",Y1,[c(o)]),e("div",X1,[t.isSystemRoot?(a(),d("div",J1," \u7CFB\u7EDF ")):E("",!0),e("div",{class:U(["status",s.value])},[s.value=="error"?(a(),d("span",K1,"\u9519\u8BEF")):s.value=="success"?(a(),d("span",e2,"\u6B63\u5E38")):s.value=="load"?(a(),d("span",t2,"\u672A\u683C\u5F0F\u5316")):s.value=="unmounted"?(a(),d("span",s2,"\u672A\u6302\u8F7D")):E("",!0)],2),e("li",null,"Used: "+C(t.used),1),e("li",null,"Total: "+C(t.size||t.total),1)])]),e("progress",{value:t.usage||0,max:"100"},null,8,n2)])]),_:1})}}});var W=y(a2,[["__scopeId","data-v-1880f8c7"]]);const o2=F({__name:"index",setup(i){const u=D(),t=x(()=>u.disk),s=x(()=>u.raid.disks);return(_,h)=>{const p=m("nas-section-title"),o=m("nas-section-container"),n=m("nas-section");return a(),k(n,null,{default:r(()=>[c(p,{title:"Storage"}),c(o,{class:"section-disk-container"},{default:r(()=>[(a(!0),d(A,null,O(t.value.disks,l=>(a(),k(W,{disk:l},null,8,["disk"]))),256)),(a(!0),d(A,null,O(s.value,l=>(a(),k(W,{disk:l,type:"raid"},null,8,["disk"]))),256))]),_:1})]),_:1})}}});var i2=y(o2,[["__scopeId","data-v-32ba2e94"]]);const l2={class:"widget-content"},c2=F({__name:"cpu",setup(i){const u=D(),t=q({cpuusage:0,temperature:0,menavailablePercentage:0,menusage:0}),s=$(null),_=$(null),h=()=>{u.getSystemData().then(n=>{t.cpuusage=n.cpu.usage,t.temperature=n.cpu.temperature,t.menavailablePercentage=n.memery.availablePercentage||100,t.menusage=100-t.menavailablePercentage,o.cpu&&o.cpu.setValue(t.cpuusage),o.men&&o.men.setValue(t.menusage)})};h();const p=setInterval(()=>{h()},5e3),o={cpu:null,men:null};return s1(()=>{s.value&&_.value&&(o.cpu=j({el:s.value,value:t.cpuusage,name:"CPU"}),o.men=j({el:_.value,value:t.menusage,name:"RAM"}))}),n1(()=>{clearInterval(p)}),(n,l)=>{const g=m("nas-section-item"),v=m("nas-section-container"),w=m("nas-section");return a(),k(w,null,{default:r(()=>[c(v,null,{default:r(()=>[c(g,null,{default:r(()=>[e("div",l2,[e("div",{class:"gauge",ref_key:"cpu",ref:s},null,512),e("div",{class:"gauge",ref_key:"men",ref:_},null,512)])]),_:1})]),_:1})]),_:1})}}});var u2=y(c2,[["__scopeId","data-v-eb492a5a"]]);const S=i=>(I("data-v-5efc00dc"),i=i(),z(),i),d2=S(()=>e("div",{class:"widget-title"},[e("span",null,"\u7CFB\u7EDF\u4FE1\u606F")],-1)),_2={class:"widget-item"},r2=S(()=>e("div",{class:"widget-item_title"},[e("span",null,"\u8054\u7F51\u72B6\u6001:")],-1)),p2={class:"widget-item_value"},v2={key:0},h2={key:1},m2={key:2},g2={key:4},f2={class:"widget-item"},C2=S(()=>e("div",{class:"widget-item_title"},[e("span",null,"\u8FDE\u63A5\u65B9\u5F0F:")],-1)),$2={class:"widget-item_value"},w2={class:"widget-item"},F2=S(()=>e("div",{class:"widget-item_title"},[e("span",null,"\u5728\u7EBF\u8BBE\u5907:")],-1)),k2={class:"widget-item_value"},y2={class:"widget-item"},E2=S(()=>e("div",{class:"widget-item_title"},[e("span",null,"IPv4\u5730\u5740:")],-1)),L2={class:"widget-item_value"},x2={key:0,class:"widget-item"},B2=S(()=>e("div",{class:"widget-item_title"},[e("span",null,"IPv6\u5730\u5740:")],-1)),b2={class:"widget-item_value"},A2={class:"widget-item"},D2=S(()=>e("div",{class:"widget-item_title"},[e("span",null,"DNS:")],-1)),S2={class:"widget-item_value"},M2=F({__name:"info",setup(i){const u=D(),t=x(()=>u.network),s=x(()=>u.device),_=o=>{switch(o){case"pppoe":return"\u62E8\u53F7\u4E0A\u7F51";case"static":return"\u9759\u6001\u7F51\u7EDC";case"dhcp":return"DHCP"}},h=o=>{switch(o){case"manual":return"\u624B\u52A8\u914D\u7F6E";case"auto":return"\u81EA\u52A8\u83B7\u53D6";default:return""}},p=o=>o.toUpperCase();return(o,n)=>{const l=m("nas-section-item"),g=m("nas-section-container"),v=m("nas-section");return a(),k(v,null,{default:r(()=>[c(g,null,{default:r(()=>[c(l,{class:"widget-main"},{default:r(()=>{var w;return[d2,e("div",_2,[r2,e("div",p2,[t.value.networkInfo=="netSuccess"?(a(),d("span",v2," \u5DF2\u8054\u7F51 ")):t.value.networkInfo=="dnsFailed"?(a(),d("span",h2," DNS\u9519\u8BEF ")):t.value.networkInfo=="softSourceFailed"?(a(),d("span",m2," \u8F6F\u4EF6\u6E90\u89E3\u6790\u9519\u8BEF ")):(a(),d("span",g2," \u68C0\u6D4B\u4E2D "))])]),e("div",f2,[C2,e("div",$2,C(p(t.value.defaultInterface||"")),1)]),e("div",w2,[F2,e("div",k2,C(s.value.devices.length),1)]),e("div",y2,[E2,e("div",L2,C(t.value.ipv4addr)+"\uFF08"+C(_(t.value.proto||""))+"\uFF09 ",1)]),t.value.ipv6addr?(a(),d("div",x2,[B2,e("div",b2,C(t.value.ipv6addr),1)])):E("",!0),e("div",A2,[D2,e("div",S2,[e("p",null,C(h(t.value.dnsProto)),1),e("p",null,C((w=t.value.dnsList)==null?void 0:w.join(", ")),1)])])]}),_:1})]),_:1})]),_:1})}}});var I2=y(M2,[["__scopeId","data-v-5efc00dc"]]);const z2={class:"widget-content"},V2={class:"time"},P2={class:"date"},H2=F({__name:"time",setup(i){const u=N.formatDateYMD,t=N.formatDateHMS,s=D(),_=x(()=>s.localtime);return(h,p)=>{const o=m("nas-section-item"),n=m("nas-section-container"),l=m("nas-section");return a(),k(l,null,{default:r(()=>[c(n,null,{default:r(()=>[c(o,null,{default:r(()=>[e("div",z2,[e("div",V2,C(L(t)(L(_))),1),e("div",P2,C(L(u)(L(_))),1)])]),_:1})]),_:1})]),_:1})}}});var O2=y(H2,[["__scopeId","data-v-ce99f322"]]);const Z2=F({__name:"index",setup(i){return(u,t)=>(a(),d(A,null,[c(O2),c(I2),c(u2)],64))}});const V=i=>(I("data-v-642968c3"),i=i(),z(),i),G2={class:"dropdown-item"},U2=V(()=>e("svg",{t:"1668756315301",class:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"31499",width:"128",height:"128"},[e("path",{d:"M966.79936 655.37024a270.7968 270.7968 0 0 0-143.02208-40.96c-143.02208 0-257.4336 102.4-257.4336 230.4a208.4352 208.4352 0 0 0 45.7728 128H57.21088c-34.33472 0-57.21088-20.48-57.21088-51.2v-870.4c0-30.72 22.87616-51.2 57.21088-51.2h858.112c34.32448 0 57.20064 20.48 57.20064 51.2v604.16h-5.71392z m-200.22272-399.36a25.76384 25.76384 0 1 0 0-51.2H194.5088a25.76384 25.76384 0 1 0 0 51.2h572.07808z m0 256a25.76384 25.76384 0 1 0 0-51.2H194.5088a25.76384 25.76384 0 1 0 0 51.2h572.07808z m-577.792 204.8a25.76384 25.76384 0 0 0 0 51.2h303.2064a25.76384 25.76384 0 0 0 0-51.2z m0 0",fill:"#2E2A2A","p-id":"31500"}),e("path",{d:"M852.38784 819.2v-76.8a28.78464 28.78464 0 0 0-57.21088 0v102.4c0 5.12 5.72416 15.36 5.72416 20.48s11.43808 5.12 22.87616 5.12H938.1888a25.76384 25.76384 0 1 0 0-51.2h-85.80096z m-28.61056 204.8c-108.68736 0-200.22272-81.92-200.22272-179.2S715.08992 665.6 823.77728 665.6 1024 747.52 1024 844.8 932.48512 1024 823.77728 1024z m0 0",fill:"#2E2A2A","p-id":"31501"})],-1)),N2={key:0},T2={key:0,class:"dropdown-container"},j2={class:"title"},W2=V(()=>e("span",null,"\u5B89\u88C5\u4EFB\u52A1",-1)),q2=V(()=>e("div",{class:"auto"},null,-1)),R2={class:"dropdown-container_menus"},Q2={class:"dropdown-menu_item"},Y2=V(()=>e("div",{class:"auto"},null,-1)),X2={class:"status"},J2={key:0},K2={key:1},e0={class:"btn"},t0=V(()=>e("span",null," \u5B89\u88C5\u4E2D ",-1)),s0=F({__name:"task",setup(i){const u=v=>h.value.indexOf(v)!=-1,t=v=>p.value.indexOf(v)!=-1,s=$(!1),_=$([]),h=$([]),p=$([]),o=()=>b(this,null,function*(){try{const v=yield M.Quickstart.SetupResult.GET();if(v.data){const{result:w,error:P}=v.data;v.data.success==0&&w&&(_.value=w.packages||[],h.value=w.success||[],p.value=w.failed||[])}}catch(v){console.log(v)}});let n=!1;setTimeout(()=>b(this,null,function*(){yield o(),localStorage.getItem("nas_guide_init")&&(n=!0,s.value=!0)}),1e3);const l=()=>{s.value=!s.value,n&&localStorage.removeItem("nas_guide_init")},g=()=>{a1.autoSetup.Open()};return(v,w)=>{const P=m("icon-loading");return a(),d("div",G2,[e("button",{onClick:w[0]||(w[0]=f=>s.value=!s.value)},[U2,_.value.length>0?(a(),d("em",N2)):E("",!0)]),s.value?(a(),d("div",{key:0,class:"dropdown-bg",onClick:l})):E("",!0),c(R,{name:"fade"},{default:r(()=>[s.value?(a(),d("div",T2,[e("h2",j2,[W2,e("span",null,"("+C(h.value.length+p.value.length+"/"+_.value.length)+")",1),q2,e("a",{onClick:g},"\u67E5\u770B\u65E5\u5FD7")]),e("div",R2,[(a(!0),d(A,null,O(_.value,f=>(a(),d("div",Q2,[e("span",null,C(f),1),Y2,e("div",X2,[u(f)?(a(),d("span",J2," \u6210\u529F ")):t(f)?(a(),d("span",K2," \u5931\u8D25 ")):(a(),d(A,{key:2},[e("div",e0,[c(P)]),t0],64))])]))),256))])])):E("",!0)]),_:1})])}}});var n0=y(s0,[["__scopeId","data-v-642968c3"]]);const a0={class:"dropdown-item"},o0=e("svg",{t:"1663656201767",class:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"1863",width:"128",height:"128"},[e("path",{d:"M25.6 54.84032v152.79104h967.68V54.84032H25.6z m0 534.76864h967.68V436.81792H25.6v152.79104z m0 381.98272h967.68v-152.79104H25.6v152.79104z","p-id":"1864"})],-1),i0={key:0},l0={key:0,class:"dropdown-container"},c0=e("h2",{class:"title"}," \u7CFB\u7EDF\u8BBE\u7F6E ",-1),u0={class:"dropdown-menu_item"},d0=e("div",{class:"icons"},[e("svg",{t:"1663663794595",class:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"19033",width:"128",height:"128"},[e("path",{d:"M885.376 848H512v-74.624h373.376V250.624H512V176h373.376A74.88 74.88 0 0 1 960 250.688v522.688c0 41.088-33.536 74.624-74.624 74.624zM512 736h336V586.688l-224-112L512 530.688V736z m0 112H325.312v-74.624H512v74.624zM325.312 176H512v74.624H325.312V176zM512 530.688V736H325.312V561.792l74.688 24.896L512 530.688z m-186.688-56V325.376c41.152-0.064 74.688 33.536 74.688 74.624s-33.536 74.688-74.688 74.688z m0 373.312H138.688A74.88 74.88 0 0 1 64 773.376V250.624A74.88 74.88 0 0 1 138.688 176h186.624v74.624H138.688v522.752h186.624v74.624z m0-522.624c-41.088 0-74.624 33.472-74.624 74.624a74.88 74.88 0 0 0 74.624 74.688V325.376z m0 236.416L288 549.376l-112 37.312V736h149.312V561.792z","p-id":"19034"})])],-1),_0=e("span",null,"\u58C1\u7EB8",-1),r0=e("div",{class:"auto"},null,-1),p0={class:"upload",title:"\u4E0A\u4F20\u80CC\u666F"},v0=e("span",null,"\u4E0A\u4F20",-1),h0=e("div",{class:"icons"},[e("svg",{t:"1663666048430",class:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"1979",width:"128",height:"128"},[e("path",{d:"M816.47182493 165.18652616c-45.03283702 5.80844472-91.61106134 5.60212947-139.89197922-1.26634882-48.55758565-6.90879227-98.65581637-20.5761858-150.4053594-41.66144114L512.02569025 116.4921875l-14.23100531 5.76654948c-51.72187603 21.08525534-101.79164949 34.75264886-150.37690215 41.66144114-48.22558465 6.86847828-94.85598046 7.07479277-139.89039874 1.26634881L159.65672594 159.01999391l0.63396504 55.68692219c2.58723985 236.52258702 39.47418405 393.75769043 98.82181686 499.07250806 62.3190467 110.60391658 147.37703179 163.61822717 243.19660678 189.35703593l9.71815688 2.6156971 9.68811914-2.6156971c95.79507051-25.73880876 180.87756008-78.75311934 243.17289253-189.35703593 59.40138634-105.26027387 96.28753954-262.54913003 98.84869362-499.07250806l0.60550779-55.68692219L816.47182493 165.18652616zM536.52502695 716.42199725c0 14.01125204-10.98371543 25.35226399-24.52542245 25.35226399-13.54486954 0-24.49933671-11.34180218-24.49933672-25.35226399l0-410.61466986c0-14.02548105 10.95446718-25.366493 24.49933671-25.36649299 13.54170702 0 24.52542246 11.34101194 24.52542245 25.366493L536.52502695 716.42199725z","p-id":"1980"})])],-1),m0=e("span",null," \u5411\u5BFC\u6A21\u5F0F ",-1),g0=e("div",{class:"auto"},null,-1),f0={class:"btn"},C0={target:"_blank",href:"/cgi-bin/luci/admin/quickstart/",class:"dropdown-menu_item"},$0=e("div",{class:"icons"},[e("svg",{t:"1663665818574",class:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"1800",width:"128",height:"128"},[e("path",{d:"M900.48223089 607.65333044C901.65599673 614.64488767 901.40082993 623.01434302 899.56363186 632.86376636 897.87953241 642.71318476 894.97063672 652.76674038 890.88797519 662.87132559 886.80531367 673.02694531 881.90612131 682.16190192 876.13936032 690.27619046 870.37260346 698.44151353 863.89137986 704.20827039 857.00188672 707.67853421 850.01032949 711.19982761 843.93737131 712.93495745 838.68094394 712.93495745 833.47555027 712.93495745 827.7087934 711.81222613 821.3296347 709.46469858 815.56287701 707.7295646 808.26511929 706.14753335 799.58946179 704.66757031 790.81174103 703.23863767 782.03402026 702.98347085 773.00113186 703.8000058 764.01927798 704.66757031 755.03741998 706.55580288 746.10660061 709.41366406 737.17577712 712.27152524 729.36768909 717.27278579 723.09059861 724.21331345 709.15851373 738.70675738 700.94216111 755.24153579 698.64566311 773.81764539 696.34916596 792.39375581 698.95186032 810.05126636 706.50478567 826.89224197 712.27154666 838.52782886 711.4039772 850.06134671 703.90209048 861.69692947 700.43182749 866.34095913 694.8181684 871.13808246 687.36731207 876.03727893 679.81438672 880.98750581 671.49596506 885.47843274 662.56514157 889.56109426 653.6343222 893.6437558 644.1421347 896.8078183 634.24168179 899.15534585 624.39225845 901.40081345 615.7166059 902.57457517 608.11264685 902.57457517 602.90725318 902.57457517 598.05909534 900.53324399 593.36403611 896.50161697 588.77104095 892.41895544 585.60697846 888.03009671 583.76978039 883.43710156L582.90221506 883.43710156C576.52305554 865.42236011 565.65296991 849.95927851 550.29195652 836.89476309 534.93094394 823.83024768 517.12033478 817.29799038 496.75806164 817.29799038 477.05922073 817.29799038 459.19757788 823.83024768 443.27519882 836.89476309 427.30178689 849.95927851 416.12550159 865.16719331 409.74634289 882.56953706 406.83744721 889.56109426 402.49961968 894.61338853 396.68182666 897.82848142 390.96610102 900.99254392 384.58694314 902.57457517 377.5953851 902.57457517 369.48109573 902.57457517 360.3461416 901.14564663 350.19052106 898.18571643 340.03490134 895.27682073 329.87928162 891.65345913 319.72366189 887.31563081 309.56804135 882.97780164 300.43308722 877.87447699 292.31879786 872.05668149 284.20450848 866.28992461 278.13154947 860.47213324 274.04888794 854.70537225 271.13999224 850.62271072 269.55796099 845.82558245 269.25176132 840.36502692 268.94556164 834.85343274 271.13999224 827.14740879 275.78401944 817.29799038 282.16317732 803.92727366 284.61277472 788.71935886 283.18384289 771.57218274 281.75491189 754.47603949 274.35508843 738.65572698 260.98437253 724.16227893 252.87008316 715.43558774 243.02066229 709.82192947 231.43611157 707.21923511 219.80052634 704.5655021 208.82837414 703.59587268 198.36655475 704.15723669 186.16960385 704.71860483 173.71748697 707.06613238 160.95917041 711.14879392 152.84488104 713.44529108 144.73059167 712.83289337 136.56526944 709.36262954 130.18611157 707.06613238 124.26625198 701.70764011 118.70362659 693.33818476 113.19203323 684.91769489 108.29284006 675.57861011 103.90397885 665.47401996 99.56615134 655.31840024 96.24898941 644.9076137 93.90145938 634.13959629 91.60496222 623.42260842 90.99256287 614.59385728 92.16632788 607.60229592 93.90145938 594.84398184 99.66821789 586.72969331 109.56867163 583.25942947 126.97101538 576.26787226 142.58719477 564.83642261 156.51927634 548.86300739 170.45135791 532.88959629 177.39188226 515.07898711 177.39188226 495.32911252 177.39188226 475.06890594 170.45135791 457.36036252 156.51927634 442.25451594 142.58719477 427.14866934 126.91998252 416.17651715 109.56867163 409.18495911 104.46534534 407.55189499 100.12751782 403.3671669 96.65725564 396.68180936 93.18699346 389.99645098 91.40082911 383.15799402 91.40082911 376.26850254 91.40082911 368.71557965 92.57459412 360.29509061 94.87109128 351.00703623 97.16758762 341.71898184 100.22958438 332.73712714 104.00604541 324.01043842 107.78250726 315.33478339 112.17136846 307.37359345 117.07056164 300.07583654 122.02078852 292.88014539 127.37928162 287.47062024 133.14604095 284.00035723 137.79006814 281.09146154 142.33202878 279.96872939 146.66985629 280.53009589 151.00768381 281.09146154 155.80481042 282.26522656 161.01020411 284.00035723 178.41254786 290.99191528 196.52935669 293.13531219 215.41166595 290.53261536 234.24294071 287.92991934 250.93081854 279.66252972 265.42426661 265.78148184 272.36479095 258.78992462 277.41708356 250.21633533 280.63217974 240.11174848 283.79624225 229.90509588 285.88860629 219.90257559 286.70513794 210.05315473 287.62373697 200.20373468 287.62373697 191.22187998 286.70513794 183.10759061 285.88860629 174.94226837 285.12310669 169.17550903 284.56174103 165.70524686 283.38797601 162.23498468 282.36731042 158.15232315 281.49974509 153.50829597 280.63217974 148.86426877 281.09147885 144.78160723 282.77557666 141.31134588 286.24583884 133.19705652 292.47189728 126.10343191 301.50478567 120.03047373 310.48664038 113.95751472 320.18296099 108.85418841 330.64478039 104.77152688 341.1065998 100.73989904 351.26222034 97.72893598 361.11164038 95.63657193 370.96106042 93.59524158 378.82018381 92.57457599 384.58694314 92.57457599 392.08883316 92.57457599 398.05972479 95.02417341 402.44858599 99.97440027 406.78641351 104.92462714 409.79737659 110.02795344 411.53250727 115.23334629 417.91166596 130.90055936 428.37348535 144.62850781 442.86693259 156.5702919 457.36038064 168.46104312 474.50755759 174.43193475 494.20639849 174.43193475 514.51764041 174.43193475 532.48134817 168.76724279 548.14856208 157.43785724 563.81577185 146.10847251 574.83896021 131.7681247 581.2181156 114.36578095 583.51461277 109.72175376 587.1890097 104.92462714 592.08820122 100.02543313 596.98739771 95.07520627 602.03968866 92.62560969 607.34715054 92.62560969 615.41040539 92.62560969 624.29019436 93.74834183 633.88444595 96.09587186 643.47870249 98.39236902 652.91985547 101.60746438 662.10584577 105.69012591 671.49596506 109.72175376 680.06955353 114.97818029 687.82661118 121.35733816 695.68573374 127.73649686 701.86076013 134.67702039 706.55581936 142.22994409 709.46471506 146.87397129 710.33228039 151.92626472 709.15851373 157.43785724 707.98475201 162.94945059 706.86201657 166.87901187 705.68825486 169.17550903 698.13532949 186.01648711 695.83883152 203.67399686 698.69669763 222.25010562 701.60559332 240.77518152 710.07711277 257.05479312 723.90712942 270.9868747 737.83920935 284.91895627 754.98639041 292.57394653 775.24659534 294.05391123 795.55783478 295.48284222 814.44014157 292.16568029 831.84248532 284.05139093 836.43548047 281.14249524 842.10017324 279.96872939 848.78553327 280.58112876 855.47088999 281.19352811 861.03351373 283.79622412 865.72857791 288.38921844 874.40423047 296.50350781 882.05921991 308.85355813 888.74457993 325.38833654 895.42993664 341.92311414 899.92086277 358.61099279 902.21736074 375.4009372 903.39112659 385.25035724 901.80909534 392.95638037 897.52230151 398.46797373 893.13343866 403.92853338 888.64251172 407.60292786 883.94745249 409.33805936 865.9837406 415.71721722 850.67376172 426.89350254 837.91544763 442.81588159 825.15712942 458.73826064 818.77796991 476.90610401 818.77796991 497.16630976 818.77796991 516.91618518 824.13646548 534.16542621 834.8024147 548.96507559 845.57043708 563.71369046 859.60458521 574.32861011 876.95589526 580.70776467 881.03855679 583.00426267 884.50881567 585.35179434 887.41771548 587.64829233 893.79687087 592.85368518 898.18573374 599.53904107 900.48223089 607.65333044L900.48223089 607.65333044 900.48223089 607.65333044ZM495.94152917 685.93836212C522.01952712 685.93836212 546.71962942 680.98813608 569.83769964 671.13871274 593.05783478 661.28929434 613.21597561 647.66341079 630.36315256 630.26106704 647.51032949 612.8076896 660.98311032 592.70058245 670.83253284 569.78664866 680.68195123 546.87271072 685.58114771 522.32571116 685.58114771 496.29874524 685.58114771 470.16971277 680.68195123 445.67374524 670.83253284 422.81084101 660.98311032 399.89690472 647.51032949 379.84083127 630.36315256 362.74468719 613.21597561 345.64854312 593.10886929 332.12472778 569.83769964 322.27530774 546.71962942 312.42588687 521.96849673 307.47566001 495.94152917 307.47566001 469.86353039 307.47566001 445.31652917 312.42588687 422.40259289 322.27530774 399.53968948 332.12472778 379.48361603 345.64854312 362.43850564 362.74468719 345.34236157 379.84083127 331.81854541 399.89690472 321.96912537 422.81084101 312.11970532 445.67374524 307.16947845 470.22074563 307.16947845 496.29874524 307.16947845 522.37674568 312.11970532 546.87271072 321.96912537 569.78664866 331.81854541 592.64955288 345.34236157 612.8076896 362.43850564 630.26106704 379.53464972 647.66341079 399.59072317 661.23825983 422.45362659 671.13871274 445.36756287 680.98813608 469.86353039 685.93836212 495.94152917 685.93836212L495.94152917 685.93836212 495.94152917 685.93836212Z","p-id":"1801"})])],-1),w0=e("span",null," \u9AD8\u7EA7\u914D\u7F6E ",-1),F0=e("div",{class:"auto"},null,-1),k0={class:"btn"},y0={target:"_blank",href:"/cgi-bin/luci/admin/system/ota",class:"dropdown-menu_item"},E0=e("div",{class:"icons"},[e("svg",{t:"1663663860869",class:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"1740",width:"128",height:"128"},[e("path",{d:"M231.27989011 542.51027439C211.04473401 415.97053009 280.55494614 288.10044748 404.67907455 239.7181185c91.98593976-35.86663916 191.16621194-18.71226809 261.39410679 32.5232872l-59.7602277 96.79966617 267.99328894-1.03276318L778.52183591 90.125l-49.06500266 79.45274542c-103.46886557-67.00707449-244.51980715-88.92265842-368.03127997-40.76788814C190.30194858 195.5193558 91.80435007 368.04331772 111.25180539 542.51027439L231.27989011 542.51027439z","p-id":"1741"}),e("path",{d:"M792.71795273 473.24512467c20.21765158 126.53974429-49.25755151 254.42733225-173.38167993 302.79215588-84.61656134 32.97840298-177.86282217 20.55023657-249.56109146-23.91109305 13.65347928-22.16064716 54.00126068-87.50479751 54.00126067-87.50479751L135.58300519 647.71208133l121.95357577 286.16291867 51.13052902-82.79609738c103.45136106 67.00707449 230.37620306 84.03891476 353.88767588 35.88414367 171.08859567-66.72700305 269.62120322-239.23346045 250.17374789-413.6829126L792.71795273 473.2801337z","p-id":"1742"})])],-1),L0={key:0},x0=e("div",{class:"auto"},null,-1),B0={class:"btn"},b0={href:"/cgi-bin/luci/admin/logout",class:"dropdown-menu_item"},A0=e("div",{class:"icons"},[e("svg",{t:"1663664454777",class:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"1770",width:"128",height:"128"},[e("path",{d:"M713.78169987 245.58612675c-3.34486519 0.15820313-4.20368182 0.11300245-7.50334556 0.58761107a57.69892296 57.69892296 0 0 0-41.72041273 28.47655477 56.20729383 56.20729383 0 0 0-4.97209635 42.98603697c2.05663985 7.11913831 5.55970816 13.80886868 10.23799936 19.59458098 2.10184131 2.5764499 2.71205269 3.11886105 5.03989813 5.49190716l2.80245403 2.48604856c12.43024201 10.3284007 23.91126526 21.62862127 34.2170664 34.03626216a252.98932537 252.98932537 0 0 1 51.80020821 103.8942231 252.67291912 252.67291912 0 0 1-29.2449693 186.49882996 255.56577528 255.56577528 0 0 1-48.74914893 58.85154628 259.90505988 259.90505988 0 0 1-62.15121003 41.22320226 259.49825151 259.49825151 0 0 1-78.01671856 22.69084171 264.13134203 264.13134203 0 0 1-92.54880184-4.63309053 259.79205743 259.79205743 0 0 1-88.25471793-38.60155091 258.25522762 258.25522762 0 0 1-71.68859588-74.19724478 250.59367816 250.59367816 0 0 1-36.61271207-98.7187214 252.06270696 252.06270696 0 0 1 81.99439625-224.17376402c3.54826899-3.09625995 7.11913831-6.10211855 10.62220661-9.19837927 2.32784543-2.37304611 2.93805682-2.89285615 5.01729779-5.46930682a55.77788589 55.77788589 0 0 0-3.81947457-74.4232489 58.24133411 58.24133411 0 0 0-72.32140836-8.11355774c-4.70089153 3.0058586-8.85937268 6.73493106-13.01785306 10.37360216a367.41535298 367.41535298 0 0 0-76.34428597 92.1419935 363.12126904 363.12126904 0 0 0-23.95646671 316.58696308 366.55653557 366.55653557 0 0 0 58.87414585 98.92212598 371.91283994 371.91283994 0 0 0 199.01947486 123.89561168 381.49542647 381.49542647 0 0 0 146.65425515 6.4411259c45.17827961-6.82533317 88.97793253-21.92242642 128.59650322-44.36466363a374.26328571 374.26328571 0 0 0 97.95030691-80.02815852 365.58471726 365.58471726 0 0 0 56.38809728-87.53150408 365.44911447 365.44911447 0 0 0 29.80998078-198.45446336c-5.24330192-40.00277871-17.24413599-79.10154009-35.39228929-115.26224391a367.64135711 367.64135711 0 0 0-85.65566768-110.96815996c-2.96065793-2.5764499-5.98911687-5.13030024-8.9949747-7.66154946-2.59905024-2.03403952-3.2092624-2.62165134-6.03431754-4.40708563a58.53513926 58.53513926 0 0 0-17.15373388-7.29994176 70.92018059 70.92018059 0 0 0-11.11941633-1.62723192c-1.265625 0-2.48604855 0-3.75167355-0.04520068m-144.32640974 322.96028721c0 14.98409157-6.05691787 29.35797175-16.81472728 39.95757803a57.85712608 57.85712608 0 0 1-40.56778942 16.54352172 57.78932508 57.78932508 0 0 1-40.56778943-16.54352172 56.09429214 56.09429214 0 0 1-16.81472806-39.95757802V172.99351358c0-15.0066919 6.05691787-29.35797175 16.81472806-39.98017838A57.76672474 57.76672474 0 0 1 512.07277344 116.49241384c15.21009648 0 29.80998001 5.94391543 40.56778942 16.52092136 10.75780941 10.62220662 16.81472729 24.97348646 16.81472728 40.00277871v395.53030006z",fill:"#000000","p-id":"1771"})])],-1),D0=e("span",null,"\u6CE8\u9500",-1),S0=e("div",{class:"auto"},null,-1),M0={class:"btn"},I0=F({__name:"setting",setup(i){const u=D(),t=$(!1),s=$(!1);(()=>b(this,null,function*(){try{const o=yield M.System.CheckUpdate.GET(),{result:n}=o.data;n&&(s.value=n.needUpdate)}catch(o){console.log(o)}}))();const h=o=>{if(o&&(o==null?void 0:o.target)){const l=o.target.files;if(l){const g=l[0];p(g)}}},p=o=>{const n=new FormData;n.append("file",o),M.Upload.BG.POST(n).then(l=>{if(l.data.result){const g=l.data.result;if(g!=null&&g.filename!=""){G.Success("\u4E0A\u4F20\u6210\u529F,\u8BF7\u5237\u65B0\u7F13\u5B58\u67E5\u770B"),u.incr();return}G.Warning("\u4E0A\u4F20\u5931\u8D25")}})};return(o,n)=>{const l=m("icon-right"),g=m("router-link");return a(),d("div",a0,[e("button",{onClick:n[0]||(n[0]=v=>t.value=!t.value)},[o0,s.value?(a(),d("em",i0)):E("",!0)]),t.value?(a(),d("div",{key:0,class:"dropdown-bg",onClick:n[1]||(n[1]=v=>t.value=!t.value)})):E("",!0),c(R,{name:"fade"},{default:r(()=>[t.value?(a(),d("div",l0,[c0,e("div",u0,[d0,_0,r0,e("label",p0,[e("input",{type:"file",accept:"image/jpeg, image/jpg, image/png, image/gif",hidden:"",onChange:h},null,32),v0])]),c(g,{to:"/wizard",class:"dropdown-menu_item"},{default:r(()=>[h0,m0,g0,e("div",f0,[c(l)])]),_:1}),e("a",C0,[$0,w0,F0,e("div",k0,[c(l)])]),e("a",y0,[E0,e("span",null,[o1(" \u66F4\u65B0 "),s.value?(a(),d("em",L0)):E("",!0)]),x0,e("div",B0,[c(l)])]),e("a",b0,[A0,D0,S0,e("div",M0,[c(l)])])])):E("",!0)]),_:1})])}}});const z0={class:"f"},V0={class:"hostname"},P0={class:"r"},H0=F({__name:"index",setup(i){D(),$(!1);const u=$(!1);return(()=>b(this,null,function*(){try{const s=yield M.System.CheckUpdate.GET(),{result:_}=s.data;_&&(u.value=_.needUpdate)}catch(s){console.log(s)}}))(),(s,_)=>(a(),d("header",null,[e("div",z0,[e("div",V0,C(L(i1).HostName),1)]),e("div",P0,[c(n0),c(I0)])]))}});var O0=y(H0,[["__scopeId","data-v-6eeee710"]]);const Z0={},G0={class:"main-container"};function U0(i,u){return a(),d("div",G0,[l1(i.$slots,"default")])}var N0=y(Z0,[["render",U0]]);const T0={id:"page"},j0={class:"body"},W0={class:"f"},q0={class:"r"},R0=F({__name:"index",setup(i){const u=D(),t=x(()=>({"background-image":`url(/luci-static/istorex/image/bg.gif?t=${u.keys})`})),s=$(0),_=x(()=>({transform:`translateX(${s.value*-100}%)`}));return(h,p)=>(a(),d("div",T0,[e("div",{class:"bg",style:T(t.value)},null,4),c(O0),(a(),d("div",{id:"main",key:L(u).reloadCount,style:T(_.value),ref:"el"},[c(N0,null,{default:r(()=>[e("div",j0,[e("div",W0,[c(Z2)]),e("div",q0,[c(i2),c(W1),c(y1)])])]),_:1})],4))]))}});var J0=y(R0,[["__scopeId","data-v-763fd268"]]);export{J0 as default}; ================================================ FILE: luci-app-istorex/htdocs/luci-static/istorex/chunk.b7ccb4ed.js ================================================ var p=(o,u,s)=>new Promise((h,c)=>{var f=r=>{try{t(s.next(r))}catch(l){c(l)}},x=r=>{try{t(s.throw(r))}catch(l){c(l)}},t=r=>r.done?h(r.value):Promise.resolve(r.value).then(f,x);t((s=s.apply(o,u)).next())});import{_ as v,d as w,j as B,v as m,k as g,o as a,c as i,a as e,F as k,E as y,z as _,l as n,p as A,q as C,C as M}from"./index.js?v=5b4be379";const d=o=>(A("data-v-16a9b49b"),o=o(),C(),o),D={class:"page-table"},F=d(()=>e("colgroup",null,[e("col"),e("col"),e("col"),e("col"),e("col"),e("col")],-1)),E=d(()=>e("thead",null,[e("tr",null,[e("th",null," \u72B6\u6001 "),e("th",null," \u63A5\u53E3 "),e("th",null," \u7C7B\u578B "),e("th",null," mac "),e("th",null," \u63A5\u6536 "),e("th",null," \u53D1\u9001 ")])],-1)),b={class:"flex-icon"},z=d(()=>e("svg",{xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink","xmlns:v":"https://vecta.io/nano",width:"48",height:"38",viewBox:"0 0 12.7 10.05"},[e("defs",null,[e("filter",{id:"A","color-interpolation-filters":"sRGB"},[e("feColorMatrix",{result:"A",values:"2 -0.5 -0.5 0 0 -0.5 2 -0.5 0 0 -0.5 -0.5 2 0 0 0 0 0 1 0 "}),e("feColorMatrix",{values:"0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"}),e("feColorMatrix",{in:"A",values:"2 -0.5 -0.5 0 0 -0.5 2 -0.5 0 0 -0.5 -0.5 2 0 0 0 0 0 1 0 "})]),e("path",{id:"B",d:"M80.56 75.75h3.91v22.79h-3.91z"})]),e("g",{transform:"translate(0 -286.95)"},[e("rect",{x:".21",y:"287.25",width:"12.33",height:"9.5",ry:".57",fill:"#e6e6e6",stroke:"#e6e6e6","stroke-linejoin":"round","stroke-width":".37","paint-order":"normal"}),e("path",{transform:"matrix(.105 0 0 .0989 -6.0834 280.6)",d:"M73.96 75.66h89.41c2.31 0 4.17 1.86 4.17 4.17v52.65h-21.74v9.41h-8.69v12.59h-36.87v-12.59h-8.69v-9.41H69.79V79.83c0-2.31 1.86-4.17 4.17-4.17z",fill:"#999",filter:"url(#A)",stroke:"#999","stroke-width":"2.5"}),e("g",{transform:"matrix(.1048 0 0 .1048 -6.0999 280.7)",fill:"#fff",filter:"url(#A)",stroke:"#fff"},[e("use",{"xlink:href":"#B"}),e("use",{"xlink:href":"#B",x:"73.04"}),e("use",{"xlink:href":"#B",x:"52.17"}),e("use",{"xlink:href":"#B",x:"41.74"}),e("use",{"xlink:href":"#B",x:"31.3"}),e("use",{"xlink:href":"#B",x:"20.87"}),e("use",{"xlink:href":"#B",x:"10.43"}),e("use",{"xlink:href":"#B",x:"62.61"})]),e("rect",{x:"1.24",y:"294.55",width:"1.6",height:"1.38",ry:".11",fill:"#ccc",stroke:"#ccc","stroke-width":".22","paint-order":"normal"})])],-1)),N=d(()=>e("svg",{xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",width:"48",height:"38",viewBox:"0 0 12.7 10.05","xmlns:v":"https://vecta.io/nano"},[e("defs",null,[e("filter",{id:"A","color-interpolation-filters":"sRGB"},[e("feColorMatrix",{result:"A",values:"2 -0.5 -0.5 0 0 -0.5 2 -0.5 0 0 -0.5 -0.5 2 0 0 0 0 0 1 0 "}),e("feColorMatrix",{values:"0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"}),e("feColorMatrix",{in:"A",values:"2 -0.5 -0.5 0 0 -0.5 2 -0.5 0 0 -0.5 -0.5 2 0 0 0 0 0 1 0 "})]),e("path",{id:"B",d:"M80.56 75.75h3.91v22.79h-3.91z"})]),e("g",{transform:"translate(-.03 -287.07)"},[e("rect",{x:".24",y:"287.36",width:"12.33",height:"9.5",ry:".57",fill:"#e6e6e6",stroke:"#e6e6e6","stroke-linejoin":"round","stroke-width":".37","paint-order":"normal"}),e("path",{transform:"matrix(.105 0 0 .0989 -6.0532 280.72)",d:"M73.96 75.66h89.41c2.31 0 4.17 1.86 4.17 4.17v52.65h-21.74v9.41h-8.69v12.59h-36.87v-12.59h-8.69v-9.41H69.79V79.83c0-2.31 1.86-4.17 4.17-4.17z",fill:"#4d4d4d",filter:"url(#A)",stroke:"#4d4d4d","stroke-width":"2.5"}),e("g",{transform:"matrix(.1048 0 0 .1048 -6.0697 280.81)",fill:"#fff",filter:"url(#A)",stroke:"#fff"},[e("use",{"xlink:href":"#B"}),e("use",{"xlink:href":"#B",x:"73.04"}),e("use",{"xlink:href":"#B",x:"52.17"}),e("use",{"xlink:href":"#B",x:"41.74"}),e("use",{"xlink:href":"#B",x:"31.3"}),e("use",{"xlink:href":"#B",x:"20.87"}),e("use",{"xlink:href":"#B",x:"10.43"}),e("use",{"xlink:href":"#B",x:"62.61"})]),e("rect",{x:"1.27",y:"294.67",width:"1.6",height:"1.38",ry:".11",fill:"#55d400",stroke:"#55d400","stroke-width":".22","paint-order":"normal"})])],-1)),S=w({__name:"index",setup(o){return p(this,null,function*(){let u,s;const h=B({ports:[]}),c=t=>{switch(t){case"full":return"\u5168\u53CC\u5DE5";case"half":return"\u534A\u53CC\u5DE5"}};let f=!1;const x=()=>p(this,null,function*(){try{const t=yield M.Network.PortList.GET();if(t!=null&&t.data){const{result:r}=t==null?void 0:t.data;r&&(h.ports=r.ports||[])}}catch(t){console.log(t)}setTimeout(()=>{f||x()},1e4)});return[u,s]=m(()=>x()),yield u,s(),g(()=>{f=!0}),(t,r)=>(a(),i("table",D,[F,E,e("tbody",null,[(a(!0),i(k,null,y(h.ports,l=>(a(),i("tr",null,[e("th",b,[l.linkState=="DOWN"?(a(),i(k,{key:0},[z,_("\u672A\u8FDE\u63A5 ")],64)):(a(),i(k,{key:1},[N,_(" \u5DF2\u8FDE\u63A5 ")],64))]),e("th",null,n(l.name)+"\uFF08"+n(l.interfaceNames.join(",").toLocaleUpperCase())+"\uFF09 ",1),e("th",null,n(c(l.duplex)),1),e("th",null,n(l.macAddress||"--"),1),e("th",null,n(l.rx_packets||"--"),1),e("th",null,n(l.tx_packets||"--"),1)]))),256))])]))})}});var L=v(S,[["__scopeId","data-v-16a9b49b"]]);export{L as default}; ================================================ FILE: luci-app-istorex/htdocs/luci-static/istorex/chunk.d9ea7f57.js ================================================ import{_ as u,d as l,u as p,r as t,o as e,c as i,a as m,b as o,w as a,e as s,f as v,S as f,t as x,g as y}from"./index.js?v=5b4be379";const h={class:"body"},k=l({__name:"index",setup(C){const n=p();return(w,B)=>{const _=t("layout-header"),r=t("router-view");return e(),i("div",{id:"main",key:y(n).reloadCount},[m("div",h,[o(_),o(r,null,{default:a(({Component:c,route:d})=>[(e(),s(f,null,{default:a(()=>[(e(),s(v(c),{key:d.path}))]),_:2},1024))]),_:1}),o(x)])])}}});var S=u(k,[["__scopeId","data-v-5f4eb506"]]);export{S as default}; ================================================ FILE: luci-app-istorex/htdocs/luci-static/istorex/chunk.de33ea3e.js ================================================ import{_ as k,d as C,h,u as I,i as l,j as S,k as P,o,c,a as t,l as e,g as r,m as y,n as w,p as A,q as b}from"./index.js?v=5b4be379";const s=u=>(A("data-v-a9949144"),u=u(),b(),u),N={id:"page",class:"page-container"},U={class:"text-container"},V={class:"text-container_item"},j=s(()=>t("div",{class:"text-container_item_title"},[t("span",null,"\u8054\u7F51\u72B6\u6001:")],-1)),H={class:"text-container_item_value"},q={key:0},L={key:1},$={key:2},z={key:4},G={class:"text-container_item"},J=s(()=>t("div",{class:"text-container_item_title"},[t("span",null,"\u8FDE\u63A5\u65B9\u5F0F:")],-1)),K={class:"text-container_item_value"},M={class:"text-container_item"},O=s(()=>t("div",{class:"text-container_item_title"},[t("span",null,"\u5728\u7EBF\u8BBE\u5907:")],-1)),Q={class:"text-container_item_value"},R={class:"text-container_item"},T=s(()=>t("div",{class:"text-container_item_title"},[t("span",null,"IPv4\u5730\u5740:")],-1)),W={class:"text-container_item_value"},X={key:0,class:"text-container_item"},Y=s(()=>t("div",{class:"text-container_item_title"},[t("span",null,"IPv6\u5730\u5740:")],-1)),Z={class:"text-container_item_value"},tt={class:"text-container_item"},et=s(()=>t("div",{class:"text-container_item_title"},[t("span",null,"DNS:")],-1)),st={class:"text-container_item_value"},nt={class:"text-container"},at={class:"text-container_item"},it=s(()=>t("div",{class:"text-container_item_title"},[t("span",null,"\u7CFB\u7EDF\u540D\u79F0:")],-1)),ot={class:"text-container_item_value"},ct={class:"text-container_item"},_t=s(()=>t("div",{class:"text-container_item_title"},[t("span",null,"\u56FA\u4EF6\u7248\u672C:")],-1)),ut={class:"text-container_item_value"},lt={class:"text-container_item"},rt=s(()=>t("div",{class:"text-container_item_title"},[t("span",null,"\u5185\u6838\u7248\u672C:")],-1)),dt={class:"text-container_item_value"},vt={class:"text-container_item"},pt=s(()=>t("div",{class:"text-container_item_title"},[t("span",null,"\u5DF2\u542F\u52A8:")],-1)),mt={class:"text-container_item_value"},ht={class:"text-container_item"},xt=s(()=>t("div",{class:"text-container_item_title"},[t("span",null,"\u7CFB\u7EDF\u65F6\u95F4:")],-1)),Ft={class:"text-container_item_value"},gt={class:"text-container"},Et={class:"text-container_item"},Bt={class:"text-container_item_title"},Dt={class:"text-container_item_value"},ft={class:"progress-container"},kt={class:"text-container_item"},Ct=s(()=>t("div",{class:"text-container_item_title"},[t("span",null,"CPU:")],-1)),It={class:"text-container_item_value"},St={class:"progress-container"},Pt=["value"],yt={class:"text-container_item"},wt=s(()=>t("div",{class:"text-container_item_title"},[t("span",null,"\u5185\u5B58:")],-1)),At={class:"text-container_item_value"},bt={class:"progress-container"},Nt=["value"],Ut=C({__name:"index",setup(u){const x=h.stampForm,F=h.stampForm,_=I(),n=l(()=>_.network),g=l(()=>_.device),i=S({cpuusage:0,temperature:0,menavailablePercentage:0,menusage:0}),d=l(()=>_.version),v=l(()=>_.time),E=a=>{switch(a){case"pppoe":return"\u62E8\u53F7\u4E0A\u7F51";case"static":return"\u9759\u6001\u7F51\u7EDC";case"dhcp":return"DHCP"}},B=a=>{switch(a){case"manual":return"\u624B\u52A8\u914D\u7F6E";case"auto":return"\u81EA\u52A8\u83B7\u53D6";default:return""}},D=a=>a.toUpperCase(),p=()=>{_.getSystemData().then(a=>{i.cpuusage=a.cpu.usage,i.temperature=a.cpu.temperature,i.menavailablePercentage=a.memery.availablePercentage||100,i.menusage=100-i.menavailablePercentage})};p();const f=setInterval(()=>{p()},5e3);return P(()=>{clearInterval(f)}),(a,Vt)=>{var m;return o(),c("div",N,[t("div",U,[t("div",V,[j,t("div",H,[n.value.networkInfo=="netSuccess"?(o(),c("span",q," \u5DF2\u8054\u7F51 ("+e(r(x)(n.value.uptimeStamp))+") ",1)):n.value.networkInfo=="dnsFailed"?(o(),c("span",L," DNS\u9519\u8BEF ")):n.value.networkInfo=="softSourceFailed"?(o(),c("span",$," \u8F6F\u4EF6\u6E90\u89E3\u6790\u9519\u8BEF ")):(o(),c("span",z," \u68C0\u6D4B\u4E2D "))])]),t("div",G,[J,t("div",K,e(D(n.value.defaultInterface||"")),1)]),t("div",M,[O,t("div",Q,e(g.value.devices.length),1)]),t("div",R,[T,t("div",W,e(n.value.ipv4addr)+"\uFF08"+e(E(n.value.proto||""))+"\uFF09 ",1)]),n.value.ipv6addr?(o(),c("div",X,[Y,t("div",Z,e(n.value.ipv6addr),1)])):y("",!0),t("div",tt,[et,t("div",st,[t("p",null,e(B(n.value.dnsProto)),1),t("p",null,e((m=n.value.dnsList)==null?void 0:m.join(", ")),1)])])]),t("div",nt,[t("div",at,[it,t("div",ot,[t("span",null,e(r(w).HostName),1)])]),t("div",ct,[_t,t("div",ut,[t("span",null,e(d.value.firmwareVersion),1)])]),t("div",lt,[rt,t("div",dt,[t("span",null,e(d.value.kernelVersion),1)])]),t("div",vt,[pt,t("div",mt,[t("span",null,e(r(F)(v.value.uptime)),1)])]),t("div",ht,[xt,t("div",Ft,[t("span",null,e(v.value.localtime),1)])])]),t("div",gt,[t("div",Et,[t("div",Bt,[t("span",null,e(a.$t("\u6E29\u5EA6"))+":",1)]),t("div",Dt,[t("div",ft,[t("span",null,e(i.temperature||"--")+"\u2103",1)])])]),t("div",kt,[Ct,t("div",It,[t("div",St,[t("progress",{value:i.cpuusage||0,max:"100"},null,8,Pt),t("span",null,e(i.cpuusage)+"%",1)])])]),t("div",yt,[wt,t("div",At,[t("div",bt,[t("progress",{value:i.menusage||0,max:"100"},null,8,Nt),t("span",null,e(i.menusage)+"% ",1)])])])])])}}});var Ht=k(Ut,[["__scopeId","data-v-a9949144"]]);export{Ht as default}; ================================================ FILE: luci-app-istorex/htdocs/luci-static/istorex/chunk.ead1f974.js ================================================ import{d as a,r as e,o as u,e as r,w as s,b as p}from"./index.js?v=5b4be379";const m=a({__name:"index",setup(i){const t=[{name:"setting-index",title:"\u529F\u80FD\u4FE1\u606F",path:"/router/setting"},{name:"opkg",title:"\u8F6F\u4EF6\u6E90\u914D\u7F6E",path:"/router/setting/opkg"},{name:"opkg",title:"\u5411\u5BFC\u6A21\u5F0F",path:"/wizard"}];return(_,c)=>{const o=e("router-loading"),n=e("layout-page");return u(),r(n,{menus:t},{default:s(()=>[p(o)]),_:1})}}});export{m as default}; ================================================ FILE: luci-app-istorex/htdocs/luci-static/istorex/chunk.f2b02e0d.js ================================================ import{d as c,u,i as r,s as d,o as l,c as e,a as t,F as _,E as i,l as s}from"./index.js?v=5b4be379";const h={class:"ul-container"},p={class:"ul-container_body"},m={class:"page-table"},v=t("colgroup",null,[t("col"),t("col"),t("col"),t("col")],-1),f=t("thead",null,[t("tr",null,[t("th",null,"Mac"),t("th",null,"IPv4"),t("th",null,"IPv6"),t("th")])],-1),b=t("th",null,null,-1),g=t("th",null,null,-1),E=c({__name:"index",setup(x){const o=u(),a=r(()=>o.device.devices);return d(),(y,B)=>(l(),e("main",null,[t("ul",h,[t("div",p,[t("table",m,[v,f,t("tbody",null,[(l(!0),e(_,null,i(a.value,n=>(l(),e("tr",null,[t("th",null,s(n.mac),1),t("th",null,s(n.ipv4addr),1),b,g]))),256))])])])])]))}});export{E as default}; ================================================ FILE: luci-app-istorex/htdocs/luci-static/istorex/chunk.fb51d2b2.js ================================================ var m=(v,c,d)=>new Promise((l,e)=>{var u=o=>{try{r(d.next(o))}catch(a){e(a)}},i=o=>{try{r(d.throw(o))}catch(a){e(a)}},r=o=>o.done?l(o.value):Promise.resolve(o.value).then(u,i);r((d=d.apply(v,c)).next())});import{d as S,s as h,j as F,v as N,o as p,c as D,a as n,x as _,D as P,F as B,A as I,m as g,l as x,B as k,C as y,T as w}from"./index.js?v=5b4be379";const C=["onSubmit"],E=n("div",{class:"label-name"},[n("span",null,"DNS\u9009\u9879")],-1),A={class:"label-value"},T=n("option",{value:"auto"},"\u4F7F\u7528\u8FD0\u8425\u5546\u63D0\u4F9B\u7684DNS",-1),V=n("option",{value:"manual"},"\u81EA\u5B9A\u4E49DNS",-1),G=[T,V],M=n("div",{class:"label-name"},[n("span",null,"DNS\u670D\u52A1\u5668\u5730\u5740")],-1),U={class:"label-value"},q=n("div",{class:"label-name"}," \u5907\u7528DNS\u670D\u52A1\u5668\u5730\u5740 ",-1),j={class:"label-value"},L={class:"label-btns"},O=["disabled"],z={key:1,class:"label-msg"},K=S({__name:"index",setup(v){return m(this,null,function*(){let c,d;const l=h(""),e=F({interfaceName:"",dnsProto:"auto",manualDnsIp:[]}),u=F({dns1:"",dns2:""}),i=h(!1),r=()=>m(this,null,function*(){i.value=!0;try{const a=yield y.Guide.DnsConfig.GET();if(a!=null&&a.data){const{result:t}=a.data;if(t){e.dnsProto=t.dnsProto,e.manualDnsIp=t.manualDnsIp||[];for(let s=0;sr()),yield c,d();const o=()=>m(this,null,function*(){let a={};switch(e.dnsProto){case"auto":break;case"manual":a.manualDnsIp=[],e.manualDnsIp!=null&&e.manualDnsIp.length>0?a.manualDnsIp=e.manualDnsIp:(a.manualDnsIp.push(u.dns1),u.dns2&&a.manualDnsIp.push(u.dns2));break}a.dnsProto=e.dnsProto,a.interfaceName=e.interfaceName;const t=w.Loading("\u914D\u7F6E\u4E2D...");try{const s=yield y.Guide.DnsConfig.POST(a);if(s!=null&&s.data){const{success:f,error:b}=s==null?void 0:s.data;b&&(l.value=b),(f==null||f==0)&&(l.value="\u914D\u7F6E\u6210\u529F")}}catch(s){l.value=s}t.Close()});return(a,t)=>(p(),D("form",{class:"form-container",onSubmit:k(o,["prevent"])},[E,n("div",A,[_(n("select",{"onUpdate:modelValue":t[0]||(t[0]=s=>e.dnsProto=s)},G,512),[[P,e.dnsProto]])]),e.dnsProto=="manual"?(p(),D(B,{key:0},[M,n("div",U,[_(n("input",{type:"text",placeholder:"\u8BF7\u8F93\u5165 dns \u5730\u5740","onUpdate:modelValue":t[1]||(t[1]=s=>u.dns1=s),required:""},null,512),[[I,u.dns1,void 0,{trim:!0}]])]),q,n("div",j,[_(n("input",{type:"text",placeholder:"\u8BF7\u8F93\u5165\u5907\u7528 dns \u5730\u5740","onUpdate:modelValue":t[2]||(t[2]=s=>u.dns2=s)},null,512),[[I,u.dns2,void 0,{trim:!0}]])])],64)):g("",!0),n("div",L,[n("button",{class:"sumbit",disabled:i.value},"\u4FDD\u5B58",8,O)]),l.value?(p(),D("div",z,[n("span",null,x(l.value),1)])):g("",!0)],40,C))})}});export{K as default}; ================================================ FILE: luci-app-istorex/htdocs/luci-static/istorex/chunk.fdf02bc2.js ================================================ var qe=Object.defineProperty,Ue=Object.defineProperties;var He=Object.getOwnPropertyDescriptors;var he=Object.getOwnPropertySymbols;var Re=Object.prototype.hasOwnProperty,We=Object.prototype.propertyIsEnumerable;var Fe=(e,u,n)=>u in e?qe(e,u,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[u]=n,vt=(e,u)=>{for(var n in u||(u={}))Re.call(u,n)&&Fe(e,n,u[n]);if(he)for(var n of he(u))We.call(u,n)&&Fe(e,n,u[n]);return e},ht=(e,u)=>Ue(e,He(u));var T=(e,u,n)=>new Promise((a,d)=>{var F=s=>{try{r(n.next(s))}catch(i){d(i)}},p=s=>{try{r(n.throw(s))}catch(i){d(i)}},r=s=>s.done?a(s.value):Promise.resolve(s.value).then(F,p);r((n=n.apply(e,u)).next())});import{d as V,M as Ge,s as C,r as jt,o,c,a as t,x as L,a0 as ke,F as N,E as K,g as R,m as $,b as x,w as M,l as m,N as Lt,_ as S,C as P,T as A,Y as Ze,p as q,q as U,a4 as ct,$ as tt,Z as bt,X as et,a5 as Bt,e as z,i as W,a2 as Be,A as Y,B as lt,a6 as st,a7 as je,D as Et,z as Z,G as Xt,Q as we,j as mt,h as Nt,U as Qt,u as Ae,P as at,a8 as xe,a9 as Xe,aa as me,I as Qe,O as Ye,ab as Ke,ac as Je,y as it,ad as tu,V as Se,W as eu,k as uu}from"./index.js?v=5b4be379";import{c as nu,i as Ft}from"./chunk.6d3585bb.js";import{u as su,i as ou,b as au,c as iu,d as lu,e as cu,f as du,g as ru,G as Ht,F as _u,a as pu}from"./chunk.ffd7724b.js";var vu="/luci-static/istorex/logo.png?v=d233e332",hu="/luci-static/istorex/task.svg?v=f6a42032",Fu="/luci-static/istorex/safari.svg?v=1bf8526f",mu="/luci-static/istorex/setup.svg?v=69c7a200",fu="/luci-static/istorex/logout.svg?v=e9e539f8",Eu="/luci-static/istorex/icon_language_auto.png?v=45447541",Cu="/luci-static/istorex/icon_language_cantonese.png?v=77010a8d",gu="/luci-static/istorex/icon_language_cn.png?v=9b80c184",$u="/luci-static/istorex/icon_language_en.png?v=ea39cc2b",Zt={exports:{}};(function(e,u){(function(n,a){var d={};n.PubSub?(d=n.PubSub,console.warn("PubSub already loaded, using existing version")):(n.PubSub=d,a(d)),e!==void 0&&e.exports&&(u=e.exports=d),u.PubSub=d,e.exports=u=d})(typeof window=="object"&&window||nu,function(n){var a={},d=-1,F="*";function p(l){var E;for(E in l)if(Object.prototype.hasOwnProperty.call(l,E))return!0;return!1}function r(l){return function(){throw l}}function s(l,E,h){try{l(E,h)}catch(k){setTimeout(r(k),0)}}function i(l,E,h){l(E,h)}function _(l,E,h,k){var w=a[E],y=k?i:s,g;if(!!Object.prototype.hasOwnProperty.call(a,E))for(g in w)Object.prototype.hasOwnProperty.call(w,g)&&y(w[g],l,h)}function f(l,E,h){return function(){var w=String(l),y=w.lastIndexOf(".");for(_(l,l,E,h);y!==-1;)w=w.substr(0,y),y=w.lastIndexOf("."),_(l,w,E,h);_(l,F,E,h)}}function b(l){var E=String(l),h=Boolean(Object.prototype.hasOwnProperty.call(a,E)&&p(a[E]));return h}function D(l){for(var E=String(l),h=b(E)||b(F),k=E.lastIndexOf(".");!h&&k!==-1;)E=E.substr(0,k),k=E.lastIndexOf("."),h=b(E);return h}function v(l,E,h,k){l=typeof l=="symbol"?l.toString():l;var w=f(l,E,k),y=D(l);return y?(h===!0?w():setTimeout(w,0),!0):!1}n.publish=function(l,E){return v(l,E,!1,n.immediateExceptions)},n.publishSync=function(l,E){return v(l,E,!0,n.immediateExceptions)},n.subscribe=function(l,E){if(typeof E!="function")return!1;l=typeof l=="symbol"?l.toString():l,Object.prototype.hasOwnProperty.call(a,l)||(a[l]={});var h="uid_"+String(++d);return a[l][h]=E,h},n.subscribeAll=function(l){return n.subscribe(F,l)},n.subscribeOnce=function(l,E){var h=n.subscribe(l,function(){n.unsubscribe(h),E.apply(this,arguments)});return n},n.clearAllSubscriptions=function(){a={}},n.clearSubscriptions=function(E){var h;for(h in a)Object.prototype.hasOwnProperty.call(a,h)&&h.indexOf(E)===0&&delete a[h]},n.countSubscriptions=function(E){var h,k,w=0;for(h in a)if(Object.prototype.hasOwnProperty.call(a,h)&&h.indexOf(E)===0){for(k in a[h])w++;break}return w},n.getSubscriptions=function(E){var h,k=[];for(h in a)Object.prototype.hasOwnProperty.call(a,h)&&h.indexOf(E)===0&&k.push(h);return k},n.unsubscribe=function(l){var E=function(I){var O;for(O in a)if(Object.prototype.hasOwnProperty.call(a,O)&&O.indexOf(I)===0)return!0;return!1},h=typeof l=="string"&&(Object.prototype.hasOwnProperty.call(a,l)||E(l)),k=!h&&typeof l=="string",w=typeof l=="function",y=!1,g,B,H;if(h){n.clearSubscriptions(l);return}for(g in a)if(Object.prototype.hasOwnProperty.call(a,g)){if(B=a[g],k&&B[l]){delete B[l],y=l;break}if(w)for(H in B)Object.prototype.hasOwnProperty.call(B,H)&&B[H]===l&&(delete B[H],y=!0)}return y}})})(Zt,Zt.exports);var Ie=Zt.exports;const Ct=e=>(q("data-v-019a9ac0"),e=e(),U(),e),bu={class:"header"},yu=Ct(()=>t("img",{src:vu,alt:"logo"},null,-1)),Du={class:"menu"},ku={class:"language"},Bu={class:"actions"},wu=["onClick"],Au=["src"],xu=["src"],Su=["src"],Iu=["src"],Pu={class:"task"},Vu={key:0,class:"dropdown-container"},Mu={class:"title"},Tu=Ct(()=>t("span",null,"\u5B89\u88C5\u4EFB\u52A1",-1)),Lu=Ct(()=>t("div",{class:"auto"},null,-1)),zu={class:"dropdown-container_menus"},Ou={class:"dropdown-menu_item"},Nu=Ct(()=>t("div",{class:"auto"},null,-1)),qu={class:"status"},Uu={key:0},Hu={key:1},Ru={class:"btn"},Wu=Ct(()=>t("span",null," \u5B89\u88C5\u4E2D ",-1)),Gu={class:"wizard"},Zu={key:0,class:"dropdown-container",style:{width:"140px"}},ju=Ct(()=>t("h2",{class:"title"},"\u5207\u6362\u5411\u5BFC\u6A21\u5F0F",-1)),Xu=Ct(()=>t("a",{href:"/cgi-bin/luci/admin/quickstart/"},[t("img",{width:"28",height:"28",title:"\u5207\u6362\u81F3\u666E\u901A\u7248\u672C",src:mu,alt:"setup"})],-1)),Qu=Ct(()=>t("a",{href:"/cgi-bin/luci/admin/logout"},[t("img",{width:"28",height:"28",title:"\u6CE8\u9500",src:fu,alt:"logout"})],-1)),Yu=V({__name:"index",setup(e){const u=Ge(),n=C(!1),a=C(localStorage.getItem("i18n")),d=()=>{n.value=!n.value},F=g=>b.value.indexOf(g)!=-1,p=g=>D.value.indexOf(g)!=-1,r=g=>{let B="";g===0&&(B="auto"),g===1&&(B="zh-CN"),g===2&&(B="zh-TW"),g===3&&(B="en"),a.value=B,localStorage.setItem("i18n",B),B==="auto"?ct.global.locale=navigator.language:ct.global.locale=B,Ie.publish("changeLocale",B)},s=C(!1),i=C(!1),_=C(!1),f=C([]),b=C([]),D=C([]),v=()=>T(this,null,function*(){try{const g=yield P.Quickstart.SetupResult.GET();if(g.data){const{result:B,error:H}=g.data;g.data.success==0&&B&&(f.value=B.packages||[],b.value=B.success||[],D.value=B.failed||[])}}catch(g){console.log(g)}});let l=!1;setTimeout(()=>T(this,null,function*(){yield v(),localStorage.getItem("nas_guide_init")&&(l=!0,s.value=!0)}),1e3);const E=()=>T(this,null,function*(){_.value||(yield k("router"))}),h=()=>T(this,null,function*(){_.value||(yield k("next-nas"))}),k=g=>T(this,null,function*(){_.value=!0;try{const B=yield P.Istorex.Updata.POST({model:g});if(A.Success("\u64CD\u4F5C\u6210\u529F"),B.data){const{success:H,error:I}=B.data;if(I)throw I;H===0&&u.push({path:`/${g}`})}}catch(B){A.Error(`${B}`)}finally{_.value=!1}}),w=()=>{s.value=!1,l&&localStorage.removeItem("nas_guide_init")},y=()=>{Ze.autoSetup.Open()};return(g,B)=>{const H=jt("icon-loading");return o(),c("div",bu,[yu,t("div",Du,[t("span",ku,[L(t("div",Bu,[t("div",{class:"menu_background",onClick:d}),t("ul",null,[(o(),c(N,null,K(["Auto","\u7B80\u4F53\u4E2D\u6587","\u7E41\u4F53\u4E2D\u6587","\u82F1\u6587"],(I,O)=>t("li",{onClick:nt=>r(O)},m(I),9,wu)),64))])],512),[[ke,n.value]]),a.value==="auto"?(o(),c("img",{key:0,width:"28",height:"28",src:R(Eu),onClick:d},null,8,Au)):$("",!0),a.value==="zh-CN"?(o(),c("img",{key:1,width:"28",height:"28",src:R(gu),onClick:d},null,8,xu)):$("",!0),a.value==="zh-TW"?(o(),c("img",{key:2,width:"28",height:"28",src:R(Cu),onClick:d},null,8,Su)):$("",!0),a.value==="en"?(o(),c("img",{key:3,width:"28",height:"28",src:R($u),onClick:d},null,8,Iu)):$("",!0)]),t("div",Pu,[t("img",{onClick:B[0]||(B[0]=I=>s.value=!s.value),width:"28",height:"28",title:"\u5B89\u88C5\u4EFB\u52A1\u8FDB\u5EA6",src:hu,alt:"logo"}),s.value?(o(),c("div",{key:0,class:"dropdown-bg",onClick:w})):$("",!0),x(Lt,null,{default:M(()=>[s.value?(o(),c("div",Vu,[t("h2",Mu,[Tu,t("span",null,"("+m(b.value.length+D.value.length+"/"+f.value.length)+")",1),Lu,t("a",{onClick:y},"\u67E5\u770B\u65E5\u5FD7")]),t("div",zu,[(o(!0),c(N,null,K(f.value,I=>(o(),c("div",Ou,[t("span",null,m(I),1),Nu,t("div",qu,[F(I)?(o(),c("span",Uu," \u6210\u529F ")):p(I)?(o(),c("span",Hu," \u5931\u8D25 ")):(o(),c(N,{key:2},[t("div",Ru,[x(H)]),Wu],64))])]))),256))])])):$("",!0)]),_:1})]),t("div",Gu,[t("img",{onClick:B[1]||(B[1]=I=>i.value=!i.value),width:"28",height:"28",title:"\u5411\u5BFC\u6A21\u5F0F",src:Fu,alt:"safari"}),i.value?(o(),c("div",{key:0,class:"dropdown-bg",onClick:B[2]||(B[2]=I=>i.value=!1)})):$("",!0),x(Lt,{name:"fade"},{default:M(()=>[i.value?(o(),c("div",Zu,[ju,t("div",{class:"dropdown-menu_item",style:{"margin-bottom":"8px"},onClick:E}," \u8DEF\u7531\u6A21\u5F0F "),t("div",{class:"dropdown-menu_item",onClick:h},"NAS\u6A21\u5F0F")])):$("",!0)]),_:1})]),Xu,Qu])])}}});var Ku=S(Yu,[["__scopeId","data-v-019a9ac0"]]);const Ju={},tn={class:"SearchBar"},en=["placeholder"];function un(e,u){return o(),c("div",tn,[t("input",{placeholder:e.$t("\u5E94\u7528\u641C\u7D22")},null,8,en)])}var nn=S(Ju,[["render",un],["__scopeId","data-v-a531abbc"]]);const sn={class:"widget"},on={key:0,class:"title"},an=V({__name:"index",props:{title:{},height:{},maxHeight:{},contentStyle:{}},setup(e){const u=e;return(n,a)=>(o(),c("div",sn,[t("div",{style:tt(`height: ${u.height};max-height:${u.maxHeight}`)},[u.title?(o(),c("span",on,m(u.title),1)):$("",!0),t("div",{style:tt(u.contentStyle)},[bt(n.$slots,"default",{},void 0,!0)],4)],4)]))}});var ft=S(an,[["__scopeId","data-v-261e10c6"]]);const ln={},cn={t:"1640746738262",class:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"1216",width:"128",height:"128"},dn=t("path",{d:"M511.232 438.8352L112.9984 40.6016A51.2 51.2 0 0 0 40.6016 112.9984L438.784 511.232 40.6016 909.4656a51.2 51.2 0 1 0 72.3968 72.448l398.2336-398.2848 398.2336 398.2848a51.2 51.2 0 1 0 72.448-72.448l-398.2848-398.2336 398.2848-398.2336A51.2 51.2 0 0 0 909.4656 40.6016L511.232 438.784z","p-id":"1217"},null,-1),rn=[dn];function _n(e,u){return o(),c("svg",cn,rn)}var pn=S(ln,[["render",_n]]);const vn=e=>(q("data-v-664f08dd"),e=e(),U(),e),hn={id:"actioner"},Fn={key:0,class:"action-container"},mn={class:"action-container_header"},fn=vn(()=>t("div",null,null,-1)),En={class:"title"},Cn={class:"action-container_body"},gn=V({__name:"index",props:{Close:{type:Function},type:{type:Number},title:String},setup(e){const u=e,n=C(!1);et(()=>{n.value=!0,document.body.setAttribute("lock-scroll","true")}),Bt(()=>{document.body.removeAttribute("lock-scroll")});const a=()=>{u.Close&&(n.value=!1,setTimeout(()=>{u.Close&&u.Close()},300))};return(d,F)=>(o(),c("div",hn,[t("div",{class:"bg",onClick:a}),e.type!=null?bt(d.$slots,"default",{key:0},void 0,!0):(o(),c(N,{key:1},[n.value?(o(),c("div",Fn,[t("div",mn,[fn,t("div",En,m(e.title),1),t("button",{class:"close",title:"\u5173\u95ED",onClick:a},[x(pn)])]),t("div",Cn,[bt(d.$slots,"default",{},void 0,!0)])])):$("",!0)],64))]))}});var $n=S(gn,[["__scopeId","data-v-664f08dd"]]);const ot=V({__name:"modal",props:{Close:{type:Function},type:{type:Number},title:String},setup(e){return(u,n)=>(o(),z($n,{Close:e.Close,type:e.type,title:e.title},{default:M(()=>[bt(u.$slots,"default")]),_:3},8,["Close","type","title"]))}}),bn={},yn={t:"1649907260906",viewBox:"-8 248 1042 530",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"2793","xmlns:xlink":"http://www.w3.org/1999/xlink"},Dn=t("path",{d:"M764.904497 251.418146 259.086289 251.418146c-143.076626 0-259.065314 115.989711-259.065314 259.065314 0 143.077649 115.988688 259.063267 259.065314 259.063267l505.818207 0c143.074579 0 259.063267-115.985618 259.063267-259.063267C1023.967764 367.407857 907.980099 251.418146 764.904497 251.418146zM764.904497 747.164974c-130.507356 0-236.682537-106.175181-236.682537-236.682537S634.397141 273.798876 764.904497 273.798876s236.683561 106.176205 236.683561 236.683561S895.411853 747.164974 764.904497 747.164974z","p-id":"2794",fill:"#52C41A"},null,-1),kn=[Dn];function Bn(e,u){return o(),c("svg",yn,kn)}var wn=S(bn,[["render",Bn]]);const An={},xn={t:"1649907515643",viewBox:"-8 248 1042 530",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"2971","xmlns:xlink":"http://www.w3.org/1999/xlink"},Sn=t("path",{d:"M764.867148 249.793136 259.0735 249.793136c-143.070486 0-259.052011 115.984594-259.052011 259.052011 0 143.07151 115.982548 259.050987 259.052011 259.050987l505.793648 0c143.067416 0 259.050987-115.979478 259.050987-259.050987C1023.917112 365.778754 907.933541 249.793136 764.867148 249.793136zM259.0735 745.516428c-130.501216 0-236.671281-106.172111-236.671281-236.671281 0-130.501216 106.170065-236.671281 236.671281-236.671281S495.744781 378.344954 495.744781 508.84617C495.744781 639.34534 389.574716 745.516428 259.0735 745.516428z","p-id":"2972",fill:"#999"},null,-1),In=[Sn];function Pn(e,u){return o(),c("svg",xn,In)}var Vn=S(An,[["render",Pn]]);const Mn={class:"checkbox_switch_on"},Tn={class:"checkbox_switch_off"},Ln=V({__name:"index",props:{modelValue:{type:Boolean,required:!0},height:{type:String,default:"100%"}},emits:["update:modelValue"],setup(e,{emit:u}){const n=e,a=W({get:()=>n.modelValue.valueOf(),set:d=>u("update:modelValue",d)});return(d,F)=>(o(),c("label",{class:"checkbox_switch",style:tt({height:e.height})},[L(t("input",{type:"checkbox","onUpdate:modelValue":F[0]||(F[0]=p=>a.value=p)},null,512),[[Be,a.value]]),t("span",Mn,[x(wn)]),t("span",Tn,[x(Vn)]),bt(d.$slots,"default",{},void 0,!0)],4))}});var zn=S(Ln,[["__scopeId","data-v-1b6cddbc"]]);const J=e=>(q("data-v-76799e09"),e=e(),U(),e),On=["onSubmit"],Nn=J(()=>t("div",{class:"actioner-dns_header"},[t("span",null,"\u5185\u7F51\u914D\u7F6E")],-1)),qn={class:"actioner-dns_body"},Un={class:"label-item"},Hn=J(()=>t("div",{class:"label-item_key"},[t("span",null,"IPv4\u5730\u5740")],-1)),Rn={class:"label-item_value"},Wn={class:"label-item"},Gn=J(()=>t("div",{class:"label-item_key"},[t("span",null,"IPv4\u5B50\u7F51\u63A9\u7801")],-1)),Zn={class:"label-item_value"},jn={key:0,class:"chose_dhcp"},Xn={key:0,class:"dhcp_info"},Qn={key:1,class:"dhcp_info"},Yn={class:"label-item"},Kn=J(()=>t("div",{class:"label-item_key"},[t("span",null,"IP\u6C60\u8D77\u59CB\u5730\u5740")],-1)),Jn={class:"label-item_value"},ts={class:"label-item"},es=J(()=>t("div",{class:"label-item_key"},[t("span",null,"IP\u6C60\u7ED3\u675F\u5730\u5740")],-1)),us={class:"label-item_value"},ns={class:"actioner-dns_footer"},ss=["disabled"],os={key:1,class:"actioner-dns"},as=J(()=>t("div",{class:"actioner-dns_header"},[t("span",null,"\u66F4\u6362\u914D\u7F6E")],-1)),is={class:"actioner-dns_body"},ls={key:0,class:"setting_status"},cs=J(()=>t("div",{class:"success_icon"},[t("svg",{t:"1642063181211",class:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"5062",width:"128",height:"128"},[t("path",{d:"M512 85.333333c235.648 0 426.666667 191.018667 426.666667 426.666667s-191.018667 426.666667-426.666667 426.666667S85.333333 747.648 85.333333 512 276.352 85.333333 512 85.333333z m-74.965333 550.4L346.453333 545.152a42.666667 42.666667 0 1 0-60.330666 60.330667l120.704 120.704a42.666667 42.666667 0 0 0 60.330666 0l301.653334-301.696a42.666667 42.666667 0 1 0-60.288-60.330667l-271.530667 271.488z",fill:"#52C41A","p-id":"5063"})])],-1)),ds=J(()=>t("div",{class:"config-message"},"\u914D\u7F6E\u6210\u529F",-1)),rs=["href"],_s={key:1,class:"setting_status"},ps=J(()=>t("div",{class:"success_icon"},[t("svg",{t:"1642063200324",class:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"5898",width:"128",height:"128"},[t("path",{d:"M549.044706 512l166.189176-166.249412a26.383059 26.383059 0 0 0 0-36.98447 26.383059 26.383059 0 0 0-37.044706 0L512 475.015529l-166.249412-166.249411a26.383059 26.383059 0 0 0-36.98447 0 26.383059 26.383059 0 0 0 0 37.044706L475.015529 512l-166.249411 166.249412a26.383059 26.383059 0 0 0 0 36.98447 26.383059 26.383059 0 0 0 37.044706 0L512 548.984471l166.249412 166.249411a26.383059 26.383059 0 0 0 36.98447 0 26.383059 26.383059 0 0 0 0-37.044706L548.984471 512zM512 1024a512 512 0 1 1 0-1024 512 512 0 0 1 0 1024z",fill:"#E84335","p-id":"5899"})])],-1)),vs=J(()=>t("div",{class:"config-message"},"\u914D\u7F6E\u5931\u8D25",-1)),hs=J(()=>t("p",null,"\u8BF7\u5C1D\u8BD5\u91CD\u65B0\u914D\u7F6E",-1)),Fs={key:2,class:"setting_status"},ms=J(()=>t("div",{class:"success_icon"},[t("svg",{width:"128px",height:"128px",viewBox:"0 0 128 128",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"},[t("g",{id:"icon_yellow",stroke:"none","stroke-width":"1",fill:"none","fill-rule":"evenodd"},[t("g",{id:"Icon/Warning"},[t("rect",{id:"\u77E9\u5F62",fill:"#000000","fill-rule":"nonzero",opacity:"0",x:"0",y:"0",width:"128",height:"128"}),t("path",{d:"M64,8 C33.075,8 8,33.075 8,64 C8,94.925 33.075,120 64,120 C94.925,120 120,94.925 120,64 C120,33.075 94.925,8 64,8 Z M60,37 C60,36.45 60.45,36 61,36 L67,36 C67.55,36 68,36.45 68,37 L68,71 C68,71.55 67.55,72 67,72 L61,72 C60.45,72 60,71.55 60,71 L60,37 Z M64,92 C60.6875,92 58,89.3125 58,86 C58,82.6875 60.6875,80 64,80 C67.3125,80 70,82.6875 70,86 C70,89.3125 67.3125,92 64,92 Z",id:"\u5F62\u72B6",fill:"#FAAD14"})])])])],-1)),fs=J(()=>t("div",{class:"config-message"},"\u914D\u7F6E\u8D85\u65F6",-1)),Es=J(()=>t("p",null," \u8DEF\u7531\u5668 IP \u53EF\u80FD\u5DF2\u7ECF\u4FEE\u6539\u6210\u529F\u3002\u82E5\u5237\u65B0\u9875\u9762\u5931\u8D25\uFF0C\u8BF7\u91CD\u65B0\u8FDE\u63A5\u8DEF\u7531\u5668\uFF0C\u5426\u5219\u8BF7\u5C1D\u8BD5\u91CD\u65B0\u914D\u7F6E\u3002 ",-1)),Cs=V({__name:"index",props:{Close:{type:Function,required:!0}},setup(e){const u=e,n=C(0),a=C({lanIp:"",netMask:"255.255.255.0",enableDhcp:!1,dhcpStart:"",dhcpEnd:""});C("");const d=C(!1);C(!0),C(!1);const F=C(""),p=C(2),r=C(!1),s=C("timeout");let i=!0;(()=>{P.Guide.GetLan.GET().then(l=>{l.data.result&&(r.value=l.data.result.enableDhcp||!1,l.data.result.enableDhcp=!1,a.value=l.data.result,l.data.result.lanIp!==location.hostname&&(i=!1))})})();const f=()=>{const l=a.value;if(!Ft.isValidIPv4(l.lanIp)){A.Warning("IPv4\u5730\u5740\u683C\u5F0F\u9519\u8BEF");return}if(!Ft.isValidMask(l.netMask)){A.Warning("IPv4\u5B50\u7F51\u63A9\u7801\u683C\u5F0F\u9519\u8BEF");return}const E=Ft.calcMaskRange(l.lanIp,l.netMask);l.dhcpStart=E[0],l.dhcpEnd=E[1],a.value=l},b=()=>{const l=a.value;if(!Ft.isValidIPv4(l.lanIp)){A.Warning("IPv4\u5730\u5740\u683C\u5F0F\u9519\u8BEF");return}if(!Ft.isValidMask(l.netMask)){A.Warning("IPv4\u5B50\u7F51\u63A9\u7801\u683C\u5F0F\u9519\u8BEF");return}if(l.enableDhcp&&!(Ft.isValidIPv4(l.dhcpStart)&&Ft.isValidIPv4(l.dhcpEnd)&&Ft.isValidMaskRange(l.lanIp,l.netMask,l.dhcpStart,l.dhcpEnd))){A.Warning("DHCP\u7684IP\u6C60\u683C\u5F0F\u9519\u8BEF\u6216\u8D85\u51FA\u5B50\u7F51\u8303\u56F4");return}const E=A.Loading("\u6B63\u5728\u914D\u7F6E\u2026\u8BF7\u7A0D\u7B49",30);let h=0;const k=y=>{s.value=y,n.value=1,h=1,E.Close()},w=()=>{const y=new Date().getTime()+3e4,g=i?location.protocol+"//"+l.lanIp+(location.port?":"+location.port:""):location.origin,B=g+"/luci-static/resources/icons/loading.gif",H=()=>{h==0&&(new Date().getTime()>y?k("timeout"):window.setTimeout(O,2e3))},I=()=>{h==0&&(F.value=g+location.pathname,k("success"),window.setTimeout(()=>{p.value=1},1e3),window.setTimeout(()=>{location.href=F.value},2e3))},O=()=>{if(h!=0)return;console.log("check online ",B);const nt=new Image;nt.onload=I,nt.onerror=H,nt.src=B};window.setTimeout(O,5e3)};P.Guide.LanIp.POST(l).then(y=>{var g;if(y!=null&&y.data){if((y.data.success||0)==0)return;if((g=y.data)!=null&&g.error)throw y.data.error}throw"\u672A\u77E5\u9519\u8BEF"}).catch(y=>{h==0&&(k("fail"),A.Error(y))}),w(),window.setTimeout(()=>{h==0&&k("timeout")},3e4)},D=l=>{l.preventDefault(),u.Close&&u.Close()},v=l=>{location.reload()};return(l,E)=>(o(),z(ot,{Close:e.Close,type:1},{default:M(()=>[n.value==0?(o(),c("form",{key:0,class:"actioner-dns",onSubmit:lt(b,["prevent"])},[Nn,t("div",qn,[t("div",Un,[Hn,t("div",Rn,[L(t("input",{type:"text",placeholder:"192.168.100.1",required:"","onUpdate:modelValue":E[0]||(E[0]=h=>a.value.lanIp=h),onChange:f},null,544),[[Y,a.value.lanIp,void 0,{trim:!0}]])])]),t("div",Wn,[Gn,t("div",Zn,[L(t("input",{type:"text",placeholder:"255.255.255.0",required:"","onUpdate:modelValue":E[1]||(E[1]=h=>a.value.netMask=h),onChange:f},null,544),[[Y,a.value.netMask,void 0,{trim:!0}]])])]),r.value?(o(),c("div",jn,[x(zn,{modelValue:a.value.enableDhcp,"onUpdate:modelValue":E[2]||(E[2]=h=>a.value.enableDhcp=h)},{default:M(()=>[a.value.enableDhcp?(o(),c("span",Xn,"\u4FEE\u6539DHCP\u670D\u52A1")):(o(),c("span",Qn,"\u4FDD\u6301DHCP\u670D\u52A1\u8BBE\u7F6E"))]),_:1},8,["modelValue"])])):$("",!0),a.value.enableDhcp?(o(),c(N,{key:1},[t("div",Yn,[Kn,t("div",Jn,[L(t("input",{type:"text",placeholder:"192.168.100.100",required:"","onUpdate:modelValue":E[3]||(E[3]=h=>a.value.dhcpStart=h)},null,512),[[Y,a.value.dhcpStart,void 0,{trim:!0}]])])]),t("div",ts,[es,t("div",us,[L(t("input",{type:"text",placeholder:"192.168.100.100",required:"","onUpdate:modelValue":E[4]||(E[4]=h=>a.value.dhcpEnd=h)},null,512),[[Y,a.value.dhcpEnd,void 0,{trim:!0}]])])])],64)):$("",!0)]),t("div",ns,[t("button",{class:"cbi-button cbi-button-apply app-btn",disabled:d.value}," \u786E\u8BA4 ",8,ss),t("button",{class:"cbi-button cbi-button-remove app-btn app-back",onClick:D}," \u53D6\u6D88 ")])],40,On)):n.value==1?(o(),c("div",os,[as,t("div",is,[s.value=="success"?(o(),c("div",ls,[cs,ds,t("a",{href:F.value,class:"NewAdress"},m(p.value)+"s\u540E \u8DF3\u8F6C\u65B0\u5730\u5740",9,rs)])):s.value=="fail"?(o(),c("div",_s,[ps,vs,hs,t("button",{class:"cbi-button cbi-button-apply app-btn",onClick:v}," \u6211\u77E5\u9053\u4E86 ")])):s.value=="timeout"?(o(),c("div",Fs,[ms,fs,Es,t("button",{class:"cbi-button cbi-button-apply app-btn",onClick:v}," \u5237\u65B0\u9875\u9762 ")])):$("",!0)])])):$("",!0)]),_:1},8,["Close"]))}});var gs=S(Cs,[["__scopeId","data-v-76799e09"]]);const fe=()=>{const e=document.createElement("div");document.body.appendChild(e);const u=st(gs,{Close:()=>{n()}});u.mount(e);const n=()=>{u.unmount(),e.remove()};return{Close:n}};const yt=e=>(q("data-v-95c09170"),e=e(),U(),e),$s=["onSubmit"],bs=yt(()=>t("div",{class:"actioner-dns_header"},[t("span",null,"DNS\u914D\u7F6E")],-1)),ys={class:"actioner-dns_body"},Ds={class:"label-item"},ks=yt(()=>t("div",{class:"label-item_key"},[t("span",null,"DNS\u9009\u9879")],-1)),Bs={class:"label-item_value"},ws=["disabled"],As=yt(()=>t("option",{value:"manual"},"\u81EA\u5B9A\u4E49DNS",-1)),xs={class:"label-item"},Ss=yt(()=>t("div",{class:"label-item_key"},[t("span",null,"DNS\u670D\u52A1\u5668\u5730\u5740")],-1)),Is={class:"label-item_value"},Ps=["onUpdate:modelValue"],Vs=yt(()=>t("div",{class:"label-item_key"},"\u5907\u7528DNS\u670D\u52A1\u5668\u5730\u5740",-1)),Ms={class:"label-item_value"},Ts=["onUpdate:modelValue"],Ls={key:1,class:"label-message"},zs={class:"actioner-dns_footer"},Os=["disabled"],Ns={key:1,class:"actioner-dns"},qs=yt(()=>t("div",{class:"actioner-dns_header"},[t("span",null,"DNS\u914D\u7F6E")],-1)),Us=yt(()=>t("div",{class:"actioner-dns_body"},[t("div",{class:"config-message"},"DNS\u914D\u7F6E\u5DF2\u4FDD\u5B58")],-1)),Hs=V({__name:"index",props:{Close:{type:Function,required:!0}},setup(e){const u=e,n=C(0),a=je(),d=a.status,F=W(()=>a.status.proto!="static"),p=()=>{let D=d.dnsList||[];for(D=D.filter(v=>v);D.length<2;)D.push("");return D},r=C({interfaceName:d.defaultInterface||"",dnsProto:d.dnsProto||"manual",manualDnsIp:p()}),s=C(""),i=C(!1),_=()=>T(this,null,function*(){s.value="";let D={};switch(r.value.dnsProto){case"auto":break;case"manual":if(D.manualDnsIp=[],!r.value.manualDnsIp[0]){A.Error("\u81F3\u5C11\u9700\u8981\u586B\u5199\u4E00\u4E2ADNS");return}D.manualDnsIp=r.value.manualDnsIp.filter(l=>l);break}D.dnsProto=r.value.dnsProto,D.interfaceName=r.value.interfaceName;const v=A.Loading("\u914D\u7F6E\u4E2D...");try{const l=yield P.Guide.DnsConfig.POST(D);if(l!=null&&l.data){const{success:E,error:h}=l==null?void 0:l.data;h&&(s.value=h),(E==null||E==0)&&(A.Success("\u914D\u7F6E\u6210\u529F"),n.value=1)}}catch(l){s.value=l}v.Close()}),f=D=>{D.preventDefault(),u.Close&&u.Close()},b=D=>{location.reload()};return(D,v)=>(o(),z(ot,{Close:e.Close,type:1},{default:M(()=>[n.value==0?(o(),c("form",{key:0,class:"actioner-dns",onSubmit:lt(_,["prevent"])},[bs,t("div",ys,[t("div",Ds,[ks,t("div",Bs,[L(t("select",{"onUpdate:modelValue":v[0]||(v[0]=l=>r.value.dnsProto=l)},[t("option",{value:"auto",disabled:!F.value}," \u81EA\u52A8\u83B7\u53D6DNS ",8,ws),As],512),[[Et,r.value.dnsProto]])])]),r.value.dnsProto=="manual"?(o(!0),c(N,{key:0},K(r.value.manualDnsIp,(l,E)=>(o(),c("div",xs,[E==0?(o(),c(N,{key:0},[Ss,t("div",Is,[L(t("input",{type:"text",placeholder:"\u8BF7\u8F93\u5165DNS\u5730\u5740",required:"","onUpdate:modelValue":h=>r.value.manualDnsIp[E]=h},null,8,Ps),[[Y,r.value.manualDnsIp[E],void 0,{trim:!0}]])])],64)):(o(),c(N,{key:1},[Vs,t("div",Ms,[L(t("input",{type:"text",placeholder:"\u5907\u7528DNS\u5730\u5740","onUpdate:modelValue":h=>r.value.manualDnsIp[E]=h},null,8,Ts),[[Y,r.value.manualDnsIp[E],void 0,{trim:!0}]])])],64))]))),256)):$("",!0),s.value?(o(),c("div",Ls,m(s.value),1)):$("",!0)]),t("div",zs,[t("button",{class:"cbi-button cbi-button-apply app-btn",disabled:i.value}," \u786E\u8BA4 ",8,Os),t("button",{class:"cbi-button cbi-button-remove app-btn app-back",onClick:f}," \u53D6\u6D88 ")])],40,$s)):n.value==1?(o(),c("div",Ns,[qs,Us,t("div",{class:"actioner-dns_footer"},[t("button",{class:"cbi-button cbi-button-remove app-btn app-back",onClick:b}," \u5B8C\u6210 ")])])):$("",!0)]),_:1},8,["Close"]))}});var Rs=S(Hs,[["__scopeId","data-v-95c09170"]]);const Ee=()=>{const e=document.createElement("div");document.body.appendChild(e);const u=st(Rs,{Close:()=>{n()}});u.mount(e);const n=()=>{u.unmount(),e.remove()};return{Close:n}},Ws={},Gs={width:"14px",height:"14px",viewBox:"0 0 14 14",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"},Zs=t("g",{id:"icon_alert",stroke:"none","stroke-width":"1",fill:"none","fill-rule":"evenodd"},[t("g",{id:"Icon/Warning"},[t("rect",{id:"\u77E9\u5F62",fill:"#000000","fill-rule":"nonzero",opacity:"0",x:"0",y:"0",width:"14",height:"14"}),t("path",{d:"M7,0.875 C3.61757813,0.875 0.875,3.61757813 0.875,7 C0.875,10.3824219 3.61757813,13.125 7,13.125 C10.3824219,13.125 13.125,10.3824219 13.125,7 C13.125,3.61757813 10.3824219,0.875 7,0.875 Z M6.5625,4.046875 C6.5625,3.98671875 6.61171875,3.9375 6.671875,3.9375 L7.328125,3.9375 C7.38828125,3.9375 7.4375,3.98671875 7.4375,4.046875 L7.4375,7.765625 C7.4375,7.82578125 7.38828125,7.875 7.328125,7.875 L6.671875,7.875 C6.61171875,7.875 6.5625,7.82578125 6.5625,7.765625 L6.5625,4.046875 Z M7,10.0625 C6.63769531,10.0625 6.34375,9.76855469 6.34375,9.40625 C6.34375,9.04394531 6.63769531,8.75 7,8.75 C7.36230469,8.75 7.65625,9.04394531 7.65625,9.40625 C7.65625,9.76855469 7.36230469,10.0625 7,10.0625 Z",id:"\u5F62\u72B6",fill:"#FAAD14"})])],-1),js=[Zs];function Xs(e,u){return o(),c("svg",Gs,js)}var dt=S(Ws,[["render",Xs]]);const ut=e=>(q("data-v-5141058a"),e=e(),U(),e),Qs={key:0,class:"actioner-dns"},Ys=ut(()=>t("div",{class:"actioner-dns_header"},[t("span",null,"\u6C99\u7BB1\u6A21\u5F0F\u914D\u7F6E\u5411\u5BFC")],-1)),Ks={class:"actioner-dns_body"},Js=ut(()=>t("p",{class:"sandbox_info"}," \u4E00\u4E2A\u7B80\u6613\u6C99\u7BB1\uFF0C\u65B9\u4FBF\u7528\u6765\u5B9E\u9A8C\u7CFB\u7EDF\u914D\u7F6E\u548C\u7A0B\u5E8F\uFF0C\u65B9\u4FBF\u5F00\u53D1\u672A\u5B8C\u6210\u7684\u8F6F\u4EF6\uFF0C\u4F46\u4E0D\u4FDD\u62A4Docker\u548C\u786C\u76D8\u7684\u6570\u636E ",-1)),to={key:0,class:"disk_loading_icon"},eo=ut(()=>t("span",{class:"disk_loading_info"},"\u6B63\u5728\u52A0\u8F7D\u4E2D...",-1)),uo={key:1,class:"disk_tips"},no=ut(()=>t("span",null,"\u68C0\u6D4B\u4E0D\u5230\u6302\u8F7D\u7684\u78C1\u76D8\u4FE1\u606F\uFF0C\u8BF7\u5148\u63D2\u4E0A\u78C1\u76D8\uFF0C\u5EFA\u8BAE\u4F7F\u7528U\u76D8\u6216\u8005\u79FB\u52A8\u786C\u76D8\uFF0C\u65B9\u4FBF\u88C5\u5378",-1)),so={class:"label-item"},oo=ut(()=>t("div",{class:"label-item_key"},[t("span",null,"\u76EE\u6807\u78C1\u76D8\uFF08\u5EFA\u8BAE\u9009\u62E9U\u76D8\u6216\u8005\u79FB\u52A8\u786C\u76D8\uFF0C\u65B9\u4FBF\u88C5\u5378\uFF09")],-1)),ao={class:"label-item_value"},io=ut(()=>t("option",{value:""},"\u8BF7\u9009\u62E9\u76EE\u6807\u78C1\u76D8",-1)),lo=["value"],co={class:"label-item"},ro=ut(()=>t("div",{class:"label-item_key"},[t("span",null,"\u76EE\u6807\u5206\u533A\uFF08\u5206\u533A\u5927\u5C0F\u987B\u5927\u4E8E2G\uFF0C\u5C06\u6B64\u5206\u533A\u4F5C\u4E3A\u5916\u90E8 overlay \u4F7F\u7528\uFF09")],-1)),_o={class:"label-item_value"},po=ut(()=>t("option",{selected:"true",value:""},"\u8BF7\u9009\u62E9\u76EE\u6807\u5206\u533A",-1)),vo=["value","disabled"],ho={class:"sandbox_tips"},Fo=ut(()=>t("span",null,"\u6B64\u64CD\u4F5C\u4F1A\u5C06\u4F1A\u5220\u9664\u8BE5\u5206\u533A\u5168\u90E8\u6570\u636E",-1)),mo={class:"sandbox_info timeout"},fo=ut(()=>t("p",{class:"sandbox_roboot_tips"},[Z(" \u7B49\u5F85\u8BBE\u5907\u91CD\u542F\uFF0C\u91CD\u542F\u5B8C\u6210\u540E"),t("span",{class:"sandbox_roboot_refresh"},"\u8BF7\u5237\u65B0\u754C\u9762")],-1)),Eo={key:0,class:"actioner-dns_footer"},Co=["disabled"],go={key:1,class:"actioner-tips"},$o=ut(()=>t("div",{class:"actioner-tips_header"},[t("span",null,"\u6E29\u99A8\u63D0\u793A")],-1)),bo=ut(()=>t("div",{class:"actioner-tips_body"},[t("p",{class:"sandbox_info"}," \u6B64\u64CD\u4F5C\u4F1A\u5C06\u4F1A\u5220\u9664\u8BE5\u5206\u533A\u5168\u90E8\u6570\u636E\uFF0C\u5E76\u683C\u5F0F\u5316\u6210EXT4\uFF0C\u968F\u540E\u81EA\u52A8\u91CD\u542F\u8FDB\u5165\u6C99\u7BB1\u6A21\u5F0F\uFF0C\u662F\u5426\u7EE7\u7EED\uFF1F ")],-1)),yo={key:2,class:"actioner-tips"},Do=ut(()=>t("div",{class:"actioner-tips_header"},[t("span",null,"\u9519\u8BEF")],-1)),ko={class:"actioner-tips_body"},Bo={class:"sandbox_info"},wo=V({__name:"index",props:{Close:{type:Function,required:!0}},setup(e){const u=e,n=C(0);C("disk");const a=C(""),d=C(3),F=C(""),p=C([]),r=C(""),s=C(null);(()=>{P.Nas.SandboxDisks.GET().then(h=>{var k;if(h!=null&&h.data&&(k=h.data)!=null&&k.result){s.value=h.data.result;return}throw"\u52A0\u8F7D\u78C1\u76D8\u4FE1\u606F\u5931\u8D25"}).catch(h=>{a.value=h,n.value=3})})();const _=()=>request.System.Reboot.POST({name:F.value,path:r.value}).then(h=>{var k;if(!(h!=null&&h.data&&(((k=h==null?void 0:h.data)==null?void 0:k.success)||0)==0))throw"\u672A\u77E5\u9519\u8BEF"}),f=h=>{var k,w;r.value="",p.value=F.value&&((w=(k=s.value)==null?void 0:k.disks.find(y=>y.path==F.value))==null?void 0:w.childrens)||[]},b=()=>{d.value>0&&(d.value-=1,window.setTimeout(b,1e3))},D=h=>{h.preventDefault(),u.Close&&u.Close()},v=()=>{new Promise((h,k)=>{const w="/luci-static/resources/icons/loading.gif",y=()=>{window.setTimeout(g,2e3)},g=()=>{const B=new Image;B.onload=h,B.onerror=y,B.src=w};window.setTimeout(g,1e4)}).then(()=>{window.setTimeout(()=>{location.reload()},2e3)})},l=h=>{const k=A.Loading("\u914D\u7F6E\u6C99\u7BB1\u91CD\u542F\u4E2D...");request.Nas.Sandbox.POST({path:r.value}).then(w=>{var y;if(w!=null&&w.data){if((w.data.success||0)==0)return n.value=2,window.setTimeout(b,1e3),_();if((y=w.data)!=null&&y.error)throw w.data.error}throw"\u672A\u77E5\u9519\u8BEF"}).then(v).catch(w=>A.Warning(w)).finally(()=>k.Close())},E=()=>{n.value=0};return(h,k)=>{const w=jt("icon-loading");return o(),z(ot,{Close:e.Close,type:1},{default:M(()=>[n.value==0||n.value==2?(o(),c("div",Qs,[Ys,t("div",Ks,[Js,n.value==0?(o(),c(N,{key:0},[s.value?$("",!0):(o(),c("div",to,[x(w,{size:38,color:"currentColor"}),eo])),s.value&&s.value.disks.length==0?(o(),c("div",uo,[x(dt),no])):$("",!0),s.value&&s.value.disks.length>0?(o(),c(N,{key:2},[t("div",so,[oo,t("div",ao,[L(t("select",{name:"",id:"",onChange:f,"onUpdate:modelValue":k[0]||(k[0]=y=>F.value=y)},[io,(o(!0),c(N,null,K(s.value.disks,(y,g)=>(o(),c("option",{value:y.path,key:g},m(y.venderModel)+"\uFF08"+m(y.size)+"\uFF09 ",9,lo))),128))],544),[[Et,F.value]])])]),t("div",co,[ro,t("div",_o,[L(t("select",{name:"",id:"","onUpdate:modelValue":k[1]||(k[1]=y=>r.value=y)},[po,(o(!0),c(N,null,K(p.value,(y,g)=>(o(),c("option",{value:y.path,key:g,disabled:y.sizeInt<(1<<30)*1||y.isSystemRoot},m(y.name)+"\uFF08"+m(y.filesystem||"\u672A\u683C\u5F0F\u5316")+"\uFF09"+m(y.total),9,vo))),128))],512),[[Et,r.value]])])]),t("div",ho,[x(dt),Fo])],64)):$("",!0)],64)):$("",!0),n.value==2?(o(),c(N,{key:1},[t("p",mo,[Z(" \u5373\u5C06\u91CD\u542F\u8BBE\u5907 "),t("span",null,"\uFF08"+m(d.value)+"s\uFF09",1)]),fo],64)):$("",!0)]),n.value==0?(o(),c("div",Eo,[t("button",{class:"cbi-button cbi-button-apply app-btn",disabled:!r.value,onClick:k[2]||(k[2]=y=>n.value=1)}," \u5F00\u542F\u6C99\u7BB1 ",8,Co),t("button",{class:"cbi-button cbi-button-remove app-btn app-back",onClick:D}," \u53D6\u6D88 ")])):$("",!0)])):$("",!0),n.value==1?(o(),c("div",go,[$o,bo,t("div",{class:"actioner-tips_footer"},[t("button",{class:"cbi-button cbi-button-apply app-btn",onClick:l}," \u7EE7\u7EED "),t("button",{class:"cbi-button cbi-button-remove app-btn app-back",onClick:E}," \u53D6\u6D88 ")])])):$("",!0),n.value==3?(o(),c("div",yo,[Do,t("div",ko,[t("p",Bo,m(a.value),1)]),t("div",{class:"actioner-tips_footer"},[t("button",{class:"cbi-button cbi-button-remove app-btn app-back",onClick:E}," \u53D6\u6D88 ")])])):$("",!0)]),_:1},8,["Close"])}}});var Ao=S(wo,[["__scopeId","data-v-5141058a"]]);const xo=()=>{const e=document.createElement("div");document.body.appendChild(e);const u=st(Ao,{Close:()=>{n()}});u.mount(e);const n=()=>{u.unmount(),e.remove()};return{Close:n}},So={},Io={width:"82px",height:"82px",viewBox:"0 0 82 82",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"},Po=Xt('icon_finished',2),Vo=[Po];function Mo(e,u){return o(),c("svg",Io,Vo)}var Yt=S(So,[["render",Mo]]);const wt=e=>(q("data-v-5cf1870c"),e=e(),U(),e),To=["onSubmit"],Lo=wt(()=>t("div",{class:"actioner-dns_header"},[t("span",null,"\u8F6F\u4EF6\u6E90\u914D\u7F6E")],-1)),zo={class:"actioner-dns_body"},Oo={class:"label-item"},No=wt(()=>t("div",{class:"label-item_key"},[t("span",null,"\u5F53\u524D\u8F6F\u4EF6\u6E90")],-1)),qo={class:"label-item_value"},Uo={class:"item_info"},Ho={class:"label-item"},Ro=wt(()=>t("div",{class:"label-item_key"},[t("span",null,"\u5207\u6362\u8F6F\u4EF6\u6E90")],-1)),Wo={class:"label-item_value"},Go=wt(()=>t("option",{selected:"true",value:""},"\u8BF7\u9009\u62E9\u8F6F\u4EF6\u6E90",-1)),Zo=["value"],jo={class:"actioner-dns_footer"},Xo=["disabled"],Qo={key:1,class:"actioner-dns"},Yo=wt(()=>t("div",{class:"actioner-dns_header"},[t("span",{class:"softsource_tit"},"\u8F6F\u4EF6\u6E90\u914D\u7F6E")],-1)),Ko={class:"actioner-dns_body"},Jo={class:"finished"},ta=wt(()=>t("p",{class:"successed"},"\u914D\u7F6E\u6210\u529F\uFF01",-1)),ea=V({__name:"index",props:{Close:{type:Function,required:!0}},setup(e){const u=e,n=C(0),a=C(""),d=C(),F=C();(()=>{P.Guide.SoftSourceList.GET().then(_=>{var f,b;if((f=_==null?void 0:_.data)!=null&&f.result){const D=(b=_==null?void 0:_.data)==null?void 0:b.result;F.value=D}}).then(()=>P.Guide.GetSoftSource.GET()).then(_=>{var f,b;if((f=_==null?void 0:_.data)!=null&&f.result){const D=_.data.result;d.value=D.softSource,(b=F.value)!=null&&b.softSourceList.find(v=>v.identity==D.softSource.identity)&&(a.value=D.softSource.identity)}})})();const r=_=>{_.preventDefault(),u.Close&&u.Close()},s=_=>{const f=A.Loading("\u6B63\u5728\u5207\u6362\u4E2D...");request.Guide.SoftSource.POST({softSourceIdentity:a.value}).then(b=>{if(b!=null&&b.data){if((b.data.success||0)==0){n.value=1;return}else if(b.data.error)throw b.data.error}throw"\u672A\u77E5\u9519\u8BEF"}).catch(b=>{A.Error(b)}).finally(()=>f.Close())},i=_=>{_.preventDefault(),location.reload()};return(_,f)=>(o(),z(ot,{Close:e.Close,type:1},{default:M(()=>{var b,D;return[n.value==0?(o(),c("form",{key:0,class:"actioner-dns",onSubmit:lt(s,["prevent"])},[Lo,t("div",zo,[t("div",Oo,[No,t("div",qo,[t("p",Uo,m((b=d.value)==null?void 0:b.name),1)])]),t("div",Ho,[Ro,t("div",Wo,[L(t("select",{name:"",id:"","onUpdate:modelValue":f[0]||(f[0]=v=>a.value=v)},[Go,(o(!0),c(N,null,K((D=F.value)==null?void 0:D.softSourceList,(v,l)=>(o(),c("option",{value:v.identity,key:l},m(v.name),9,Zo))),128))],512),[[Et,a.value,void 0,{trim:!0}]])])])]),t("div",jo,[t("button",{class:"cbi-button cbi-button-apply app-btn",disabled:a.value==""}," \u786E\u8BA4 ",8,Xo),t("button",{class:"cbi-button cbi-button-remove app-btn app-back",onClick:r}," \u53D6\u6D88 ")])],40,To)):$("",!0),n.value==1?(o(),c("form",Qo,[Yo,t("div",Ko,[t("div",Jo,[x(Yt)]),ta,t("div",{class:"btns"},[t("button",{class:"cbi-button cbi-button-apply softsource_successed",onClick:i}," \u786E\u5B9A ")])])])):$("",!0)]}),_:1},8,["Close"]))}});var ua=S(ea,[["__scopeId","data-v-5cf1870c"]]);const Ce=()=>{const e=document.createElement("div");document.body.appendChild(e);const u=st(ua,{Close:()=>{n()}});u.mount(e);const n=()=>{u.unmount(),e.remove()};return{Close:n}};const na={class:"utilities"},sa=V({__name:"index",setup(e){const u=C(!1),n=C(),a=()=>{window.location.href="/cgi-bin/luci/admin/system/ota"},d=()=>{n.value.status=="unsupport"&&alert("\u8BE5\u56FA\u4EF6\u4E0D\u652F\u6301\u6C99\u7BB1\u6A21\u5F0F"),n.value.status=="stopped"&&xo()},F=()=>T(this,null,function*(){try{if((yield P.Quickstart.Guide.GlobalFolders.GET()).status!==200)return}catch(i){console.log(i);return}u.value=!0;try{const i=yield P.Storage.Get.POST({key:"nas_guide_init"});if(i.data){const{success:_,error:f,result:b}=i.data;if(b&&b.key=="nas_guide_init")return}}catch(i){return}p()}),p=()=>{if(!u.value){A.Warning("\u8BF7\u5148\u66F4\u65B0\u7CFB\u7EDF\u5230\u6700\u65B0\u7248\u672C");return}we.OpenGuideWindow()},r=()=>{var i,_,f,b;window.open(`${(_=(i=window.quickstart_configs)==null?void 0:i.ttyd)!=null&&_.ssl?"https":"http"}://${window.location.hostname}:${((b=(f=window.quickstart_configs)==null?void 0:f.ttyd)==null?void 0:b.port)||7681}/`,"_blank")};return(()=>{P.Nas.GetSandbox.GET().then(i=>{var _;console.log("getSandBox",i),(_=i==null?void 0:i.data)!=null&&_.result&&(n.value=i.data.result)}).catch(i=>A.Warning(i))})(),F(),(i,_)=>(o(),z(ft,{title:i.$t("\u5E38\u7528\u5DE5\u5177")},{default:M(()=>{var f;return[t("div",na,[t("div",{onClick:r},[t("span",null,"\u300B"+m(i.$t("\u7EC8\u7AEF")),1)]),t("div",{onClick:a},[t("span",null,m(i.$t("\u56FA\u4EF6\u66F4\u65B0")),1)]),t("div",{onClick:_[0]||(_[0]=(...b)=>R(fe)&&R(fe)(...b))},[t("span",null,m(i.$t("\u5185\u7F51\u914D\u7F6E")),1)]),t("div",{onClick:_[1]||(_[1]=(...b)=>R(Ee)&&R(Ee)(...b))},[t("span",null,m(i.$t("DNS\u914D\u7F6E")),1)]),t("div",{onClick:_[2]||(_[2]=(...b)=>R(Ce)&&R(Ce)(...b))},[t("span",null,m(i.$t("\u8F6F\u4EF6\u6E90\u914D\u7F6E")),1)]),t("div",{onClick:d},[t("span",null,m(((f=n.value)==null?void 0:f.status)=="running"?i.$t("\u6C99\u7BB1\u5DF2\u5F00\u542F"):i.$t("\u5F00\u542F\u6C99\u7BB1")),1)])])]}),_:1},8,["title"]))}});var oa=S(sa,[["__scopeId","data-v-47b0529a"]]),aa="/luci-static/istorex/network.svg?v=3025665f",ia="/luci-static/istorex/device.svg?v=9068551e";const la={},ca={xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none"},da=t("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M3.375 12C3.375 12.4973 3.57254 12.9742 3.92417 13.3258C4.27581 13.6775 4.75272 13.875 5.25 13.875C5.74728 13.875 6.22419 13.6775 6.57583 13.3258C6.92746 12.9742 7.125 12.4973 7.125 12C7.125 11.5027 6.92746 11.0258 6.57583 10.6742C6.22419 10.3225 5.74728 10.125 5.25 10.125C4.75272 10.125 4.27581 10.3225 3.92417 10.6742C3.57254 11.0258 3.375 11.5027 3.375 12ZM10.125 12C10.125 12.4973 10.3225 12.9742 10.6742 13.3258C11.0258 13.6775 11.5027 13.875 12 13.875C12.4973 13.875 12.9742 13.6775 13.3258 13.3258C13.6775 12.9742 13.875 12.4973 13.875 12C13.875 11.5027 13.6775 11.0258 13.3258 10.6742C12.9742 10.3225 12.4973 10.125 12 10.125C11.5027 10.125 11.0258 10.3225 10.6742 10.6742C10.3225 11.0258 10.125 11.5027 10.125 12ZM17.4242 13.3258C17.0725 12.9742 16.875 12.4973 16.875 12C16.875 11.5027 17.0725 11.0258 17.4242 10.6742C17.7758 10.3225 18.2527 10.125 18.75 10.125C19.2473 10.125 19.7242 10.3225 20.0758 10.6742C20.4275 11.0258 20.625 11.5027 20.625 12C20.625 12.4973 20.4275 12.9742 20.0758 13.3258C19.7242 13.6775 19.2473 13.875 18.75 13.875C18.2527 13.875 17.7758 13.6775 17.4242 13.3258Z",fill:"black","fill-opacity":"0.8"},null,-1),ra=[da];function _a(e,u){return o(),c("svg",ca,ra)}var pa=S(la,[["render",_a]]);const va=e=>(q("data-v-21e54302"),e=e(),U(),e),ha={key:0,class:"title"},Fa=["href"],ma=va(()=>t("svg",{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",viewBox:"0 0 14 14",fill:"none"},[t("path",{d:"M7 14C3.1338 14 0 10.8662 0 7C0 3.1338 3.1338 0 7 0C10.8662 0 14 3.1338 14 7C14 10.8662 10.8662 14 7 14ZM7 10.9375C7.25944 10.9375 7.46988 10.8535 7.63175 10.6859C7.79362 10.5179 7.875 10.3101 7.875 10.0625C7.875 9.81487 7.79407 9.61099 7.63175 9.45131C7.46987 9.29119 7.25944 9.20368 7 9.1875C6.65962 9.20369 6.4085 9.3555 6.24663 9.64292C6.08475 9.93081 6.08475 10.2182 6.24663 10.5061C6.4085 10.7936 6.65962 10.9375 7 10.9375ZM7.67025 8.07931C7.67025 8.02901 7.65275 7.88463 7.65493 7.90519C7.637 7.72319 7.66107 7.56131 7.76081 7.40513C7.83344 7.29094 7.94588 7.18375 8.11388 7.08444C9.10175 6.50081 9.46312 5.85068 9.44256 5.17431C9.41195 4.16106 8.66556 3.16663 7.04682 3.15218C5.69361 3.1395 4.80418 3.79312 4.59376 5.02031C4.56892 5.18979 4.61132 5.36226 4.71192 5.50089C4.81251 5.63952 4.96332 5.73333 5.13214 5.76229C5.30096 5.79124 5.47441 5.75305 5.61545 5.65586C5.75649 5.55867 5.85394 5.41019 5.88699 5.24212C5.98282 4.6865 6.29388 4.4577 7.03456 4.46425C7.84699 4.47169 8.11956 4.83481 8.13094 5.21325C8.13376 5.27833 8.11633 5.34268 8.08106 5.39744C7.9905 5.56018 7.79405 5.7492 7.44669 5.95438C7.10324 6.15694 6.83899 6.40894 6.6535 6.70032C6.36518 7.15313 6.3022 7.60113 6.35119 8.05656C6.35862 8.12525 6.35776 8.1165 6.35776 8.07932C6.35734 8.16577 6.374 8.25145 6.4068 8.33143C6.43959 8.41142 6.48786 8.48414 6.54884 8.54542C6.60982 8.60669 6.6823 8.65532 6.76213 8.68849C6.84196 8.72167 6.92756 8.73875 7.014 8.73875C7.10045 8.73875 7.18605 8.72167 7.26587 8.68849C7.3457 8.65532 7.41819 8.60669 7.47917 8.54542C7.54015 8.48414 7.58842 8.41142 7.62121 8.33143C7.654 8.25145 7.67067 8.16575 7.67025 8.07931Z",fill:"#E1B8B2"})],-1)),fa=[ma],Ea={class:"toolbar"},Ca={key:1,class:"more-icon"},ga={class:"actions"},$a=["onClick"],ba=V({__name:"index",props:{span:{},height:{},title:{},padding:{},helpLink:{},moreActions:{},action:{}},setup(e){const u=e,n=C(!1),a=()=>{n.value=!n.value},d=mt({width:`calc(${u.span*100/24}% - 10px)`,height:u.height+"px"});return(F,p)=>{var r,s,i;return o(),c("div",{class:"card",style:tt(d)},[t("div",null,[u.title?(o(),c("div",ha,[t("span",null,m(u.title),1),u.helpLink?(o(),c("a",{key:0,href:u.helpLink,target:"_blank"},fa,8,Fa)):$("",!0),t("div",Ea,[u.action&&u.action.show!==!1?(o(),c("div",{key:0,class:"action",onClick:p[0]||(p[0]=(..._)=>{var f,b;return((f=u.action)==null?void 0:f.onClick)&&((b=u.action)==null?void 0:b.onClick(..._))})},m((r=u.action)==null?void 0:r.text),1)):$("",!0),(i=(s=u.moreActions)==null?void 0:s.filter(({show:_})=>_!==!1))!=null&&i.length?(o(),c("span",Ca,[x(pa,{onClick:a})])):$("",!0),L(t("div",ga,[t("div",{class:"menu_background",onClick:a}),t("ul",null,[(o(!0),c(N,null,K(u.moreActions,_=>(o(),c("li",{onClick:_.onClick},m(_.text),9,$a))),256))])],512),[[ke,n.value]])])])):$("",!0),t("div",{class:"card-body",style:tt(`padding:${u.padding}`)},[bt(F.$slots,"default",{},void 0,!0)],4)])],4)}}});var j=S(ba,[["__scopeId","data-v-21e54302"]]);const ya={class:"flow"},Da={class:"flow-data"},ka={key:0},Ba={key:1},wa=V({__name:"flow-chart",setup(e){su([ou,au,iu,lu,cu,du]);const u=C(),n=D=>{var l;const v=(l=u.value)==null?void 0:l[D];return!v||v.startTime==0?"":s(v.startTime*1e3)+"-"+s(v.endTime*1e3)},a=W(()=>{var v;let D=[];return(v=u.value)==null||v.forEach(l=>{D.push({value:l.uploadSpeed})}),D}),d=W(()=>{var v;let D=[];return(v=u.value)==null||v.forEach(l=>{D.push({value:l.downloadSpeed})}),D}),F=W(()=>{var v;let D="";if(u.value){let l=((v=u.value)==null?void 0:v.length)||0;if(l>0){let E=u.value[l-1];D=i(E.uploadSpeed)+"/s"}}return D}),p=W(()=>{var v;let D="";if(u.value){let l=((v=u.value)==null?void 0:v.length)||0;if(l>0){let E=u.value[l-1];D=i(E.downloadSpeed)+"/s"}}return D});W(()=>{var v;let D=[];return(v=u.value)==null||v.forEach(l=>{D.push({value:l.downloadSpeed+l.uploadSpeed})}),D});const r=()=>T(this,null,function*(){var D;try{const v=yield P.Network.Statistics.GET();if(v.data&&(D=v.data.result)!=null&&D.items){const l=v.data.result.slots||10;if(v.data.result.items.lengthl?u.value=v.data.result.items.slice(l-v.data.result.items.length):u.value=v.data.result.items}}catch(v){console.log(v)}}),s=Nt.dateForm,i=Nt.byteToSize,_=C();let f=null;const b=D=>(f=ru(D,"dark"),f.setOption({animation:!1,backgroundColor:"transparent",color:["transparent","transparent"],tooltip:{trigger:"axis",formatter:v=>{if(Array.isArray(v)){let l="";v.length>0&&(l=n(v[0].axisValue));for(let E=0;E${v[E].seriesName}: ${i(v[E].value)}/s`;return l.toString()}else{const l=v;return`${n(l.axisValue)}
    ${l.seriesName}: ${i(l.value)}/s`}}},xAxis:{type:"category",boundaryGap:!1,splitLine:{lineStyle:{color:["#999"]},show:!1},name:"",show:!1,nameGap:0,nameTextStyle:{height:0,lineHeight:0,padding:0}},yAxis:{type:"value",name:"",minInterval:1e4,interval:1e3,axisLabel:{formatter:function(v,l){return`${i(v)}/s`},color:"#fff",show:!1},nameTextStyle:{color:"#fff"},splitLine:{lineStyle:{color:["#999"]},show:!1}},series:[{name:"\u4E0B\u8F7D",data:d.value,type:"line",smooth:!0,areaStyle:{color:{type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:"rgba(32, 199, 247, 1)"},{offset:1,color:"rgba(32, 199, 247, 0.1)"}],global:!1}}},{name:"\u4E0A\u4F20",data:a.value,type:"line",smooth:!0,areaStyle:{color:{type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:"rgba(85, 58, 254, 1)"},{offset:1,color:"rgba(85, 58, 254, 0.1)"}],global:!1}}}],grid:{left:"0%",right:"0%",bottom:"0%",top:"0w",containLabel:!0}}),f);return et(()=>{setTimeout(()=>T(this,null,function*(){if(_.value){yield r();const D=b(_.value),v=_.value;D.resize({width:v.clientWidth,height:v.clientHeight}),window.addEventListener("resize",()=>{D.resize({width:v.clientWidth,height:v.clientHeight})});const l=()=>T(this,null,function*(){f!=null&&(yield r(),f!=null&&(D.setOption({series:[{name:"\u4E0B\u8F7D",data:d.value,type:"line",areaStyle:{},smooth:!0},{name:"\u4E0A\u4F20",data:a.value,type:"line",areaStyle:{},smooth:!0}]}),setTimeout(l,5e3)))});setTimeout(l,5e3)}}),900)}),Bt(()=>{f!=null&&(f.dispose(),f=null)}),(D,v)=>(o(),c("div",ya,[t("div",{ref_key:"el",ref:_,class:"echart"},null,512),t("div",Da,[F.value?(o(),c("span",ka,m(D.$t("\u4E0A\u4F20"))+": "+m(F.value),1)):$("",!0),p.value?(o(),c("span",Ba,m(D.$t("\u4E0B\u8F7D"))+": "+m(p.value),1)):$("",!0)])]))}});var Aa=S(wa,[["__scopeId","data-v-475e377c"]]);const Pe=e=>(q("data-v-39628bee"),e=e(),U(),e),xa={class:"width-45 responsive"},Sa={class:"width-55 responsive"},Ia={class:"network"},Pa=Pe(()=>t("img",{src:aa,alt:"network"},null,-1)),Va={class:"device"},Ma=Pe(()=>t("img",{src:ia,alt:"device"},null,-1)),Ta={class:"ip-dns"},La={class:"title"},za={class:"ip"},Oa={class:"title"},Na={class:"dns"},qa=V({__name:"index",setup(e){const u=Nt.stampForm,n=s=>{switch(s){case"pppoe":return ct.global.t("\u62E8\u53F7\u4E0A\u7F51");case"static":return ct.global.t("\u9759\u6001\u7F51\u7EDC");case"dhcp":return"DHCP"}return s&&s.toUpperCase()},a=s=>{switch(s){case"manual":return ct.global.t("\u624B\u52A8\u914D\u7F6E");case"auto":return ct.global.t("\u81EA\u52A8\u83B7\u53D6");default:return""}},d=mt({ipv4addr:"",ipv6addr:"",internetConnected:!1,proto:"",dnsProto:"",dnsList:[],uptimeStamp:0}),F=C({devices:[]}),p=()=>T(this,null,function*(){P.Network.Status.GET().then(s=>{if(s!=null&&s.data){const{result:i}=s==null?void 0:s.data;i&&(d.ipv4addr=i.ipv4addr,d.proto=i.proto,d.dnsProto=i.dnsProto,d.ipv6addr=i.ipv6addr,d.dnsList=i.dnsList,d.uptimeStamp=i.uptimeStamp,window.setInterval(()=>{d.uptimeStamp&&(d.uptimeStamp=d.uptimeStamp+1)},1e3))}})}),r=()=>T(this,null,function*(){P.Network.Device.List.GET().then(s=>{if(s!=null&&s.data){const{result:i}=s==null?void 0:s.data;F.value={devices:(i==null?void 0:i.devices)||[]}}})});return p(),r(),(s,i)=>(o(),z(ft,null,{default:M(()=>[t("div",xa,[x(j,{title:s.$t("\u6D41\u91CF\u7EDF\u8BA1"),span:24,padding:"0 8px"},{default:M(()=>[x(Aa)]),_:1},8,["title"])]),t("div",Sa,[x(j,{span:12},{default:M(()=>[t("div",Ia,[Pa,t("div",null,[t("span",null,m(s.$t("\u5DF2\u8FDE\u63A5\u4E92\u8054\u7F51")),1),t("span",null,m(R(u)(d.uptimeStamp)),1)])])]),_:1}),x(j,{span:12},{default:M(()=>{var _;return[t("div",Va,[Ma,t("div",null,[t("span",null,m(s.$t("\u5DF2\u8FDE\u63A5\u8BBE\u5907")),1),t("span",null,m(`${(_=F.value.devices)==null?void 0:_.length}${s.$t("\u53F0")}`),1)])])]}),_:1}),x(j,{span:24},{default:M(()=>[t("div",Ta,[t("span",La,m(s.$t("IP\u5730\u5740")),1),t("div",za,[t("span",null,m(`IPv4\uFF1A${d.ipv4addr}\uFF08${n(d.proto||"")}\uFF09`),1),t("span",null,m(`IPv6\uFF1A${d.ipv6addr||"-"}`),1)]),t("span",Oa,m(`DNS\uFF08${a(d.dnsProto||"")}\uFF09`),1),t("div",Na,[(o(!0),c(N,null,K(d.dnsList,_=>(o(),c("span",null,m(_),1))),256))])])]),_:1})])]),_:1}))}});var Ua=S(qa,[["__scopeId","data-v-39628bee"]]),Ha="/luci-static/istorex/open.svg?v=84274947",Ra="/luci-static/istorex/info.svg?v=7035c5f2";const gt=e=>(q("data-v-bd2acf72"),e=e(),U(),e),Wa=["onSubmit"],Ga=gt(()=>t("div",{class:"action-header"},[t("div",{class:"action-header_title"},"\u786C\u76D8\u914D\u7F6E")],-1)),Za={class:"action-body"},ja={class:"disk-info"},Xa=gt(()=>t("div",{class:"disk-info_icon"},[t("svg",{t:"1642589762094",class:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"11301",width:"128",height:"128"},[t("path",{d:"M899.892468 123.889088c0-44.342099-36.286708-80.620486-80.624646-80.620486H204.728017C160.385918 43.268602 124.107532 79.546988 124.107532 123.889088v802.847056c0 44.342099 36.278386 80.620486 80.620485 80.620486h614.539805c44.337938 0 80.624646-36.278386 80.624646-80.620486V123.889088z",fill:"#D0D0DB","p-id":"11302"}),t("path",{d:"M169.8768 977.7772V174.930143c0-44.342099 36.278386-80.620486 80.620486-80.620485h614.539804c9.936092 0 19.426974 1.905666 28.239639 5.23434-11.525534-30.507298-40.996782-52.389169-75.398629-52.389169H203.342457c-44.342099 0-80.620486 36.278386-80.620486 80.620486v802.851217c0 34.410168 21.881871 63.873094 52.385008 75.381985A79.730065 79.730065 0 0 1 169.8768 977.7772z",fill:"#FFFFFF","p-id":"11303"}),t("path",{d:"M820.657543 40.497481H206.117739c-44.342099 0-80.620486 36.278386-80.620486 80.620485v802.847057c0 44.342099 36.278386 80.620486 80.620486 80.620486h614.539804c44.337938 0 80.624646-36.278386 80.624647-80.620486V121.117966c0-44.342099-36.286708-80.620486-80.624647-80.620485z m19.60173 828.785749c0 40.846992-33.43237 74.279362-74.287684 74.279361H199.780776c-40.855313 0-74.279362-33.424048-74.279362-74.279361V129.593603c0-40.855313 33.424048-74.279362 74.279362-74.279362h566.203296c40.842831 0 74.283522 33.424048 74.283522 74.279362l-0.008321 739.689627z",fill:"#6E6E96","p-id":"11304"}),t("path",{d:"M815.106979 1024H200.567175C146.933914 1024 103.303319 980.369405 103.303319 926.736144V123.889088C103.303319 70.255827 146.933914 26.625232 200.567175 26.625232h614.539804c53.633261 0 97.268017 43.630595 97.268017 97.263856v802.847056c0 53.633261-43.634756 97.263856-97.268017 97.263856zM200.567175 59.911972C165.287391 59.911972 136.590059 88.609303 136.590059 123.889088v802.847056c0 35.279784 28.697331 63.977115 63.977116 63.977115h614.539804c35.279784 0 63.981276-28.697331 63.981276-63.977115V123.889088c0-35.279784-28.701492-63.977115-63.981276-63.977116H200.567175z",fill:"#6E6E96","p-id":"11305"}),t("path",{d:"M301.946104 941.515457h429.985632v65.841173H301.946104z",fill:"#8A8AA1","p-id":"11306"}),t("path",{d:"M731.931736 1024H301.946104a16.64337 16.64337 0 0 1-16.64337-16.64337V941.515457a16.64337 16.64337 0 0 1 16.64337-16.64337h429.985632a16.64337 16.64337 0 0 1 16.64337 16.64337v65.841173a16.64337 16.64337 0 0 1-16.64337 16.64337z m-413.342262-33.286741h396.698892v-32.554432H318.589474v32.554432z",fill:"#6E6E96","p-id":"11307"}),t("path",{d:"M337.230049 960.318304h20.804213v47.038326h-20.804213zM386.565159 960.318304h20.804213v47.038326h-20.804213zM435.891948 960.318304h20.804213v47.038326h-20.804213zM485.231219 960.318304h20.804213v47.038326h-20.804213zM534.558008 960.318304h20.804213v47.038326h-20.804213zM583.897279 960.318304h20.804213v47.038326h-20.804213zM633.224068 960.318304h20.804213v47.038326h-20.804213zM682.563339 960.318304h20.804213v47.038326h-20.804213z",fill:"#FFE599","p-id":"11308"}),t("path",{d:"M219.153659 140.794591m-26.874883 0a26.874882 26.874882 0 1 0 53.749765 0 26.874882 26.874882 0 1 0-53.749765 0Z",fill:"#ADADD1","p-id":"11309"}),t("path",{d:"M219.153659 184.312843c-23.995579 0-43.518252-19.522673-43.518253-43.518252s19.522673-43.518252 43.518253-43.518253 43.518252 19.522673 43.518252 43.518253-19.522673 43.518252-43.518252 43.518252z m0-53.749764c-5.642103 0-10.231512 4.589409-10.231512 10.231512s4.589409 10.231512 10.231512 10.231512 10.231512-4.589409 10.231511-10.231512-4.589409-10.231512-10.231511-10.231512z",fill:"#6E6E96","p-id":"11310"}),t("path",{d:"M801.28466 140.794591m-26.870721 0a26.870721 26.870721 0 1 0 53.741442 0 26.870721 26.870721 0 1 0-53.741442 0Z",fill:"#ADADD1","p-id":"11311"}),t("path",{d:"M801.28466 184.308683c-23.995579 0-43.514092-19.518512-43.514091-43.514092s19.518512-43.514092 43.514091-43.514092 43.514092 19.518512 43.514092 43.514092-19.518512 43.514092-43.514092 43.514092z m0-53.741443c-5.637942 0-10.227351 4.589409-10.227351 10.227351s4.589409 10.227351 10.227351 10.227351 10.227351-4.589409 10.227351-10.227351-4.589409-10.227351-10.227351-10.227351z",fill:"#6E6E96","p-id":"11312"}),t("path",{d:"M801.280499 905.23291m-26.870721 0a26.870721 26.870721 0 1 0 53.741443 0 26.870721 26.870721 0 1 0-53.741443 0Z",fill:"#ADADD1","p-id":"11313"}),t("path",{d:"M801.280499 948.747001c-23.995579 0-43.514092-19.518512-43.514091-43.514091s19.518512-43.514092 43.514091-43.514092 43.514092 19.518512 43.514092 43.514092-19.518512 43.514092-43.514092 43.514091z m0-53.741442c-5.637942 0-10.227351 4.589409-10.227351 10.227351s4.589409 10.227351 10.227351 10.227351 10.227351-4.589409 10.227351-10.227351-4.589409-10.227351-10.227351-10.227351z",fill:"#6E6E96","p-id":"11314"}),t("path",{d:"M219.153659 905.23291m-26.870722 0a26.870721 26.870721 0 1 0 53.741443 0 26.870721 26.870721 0 1 0-53.741443 0Z",fill:"#ADADD1","p-id":"11315"}),t("path",{d:"M219.153659 948.747001c-23.995579 0-43.514092-19.518512-43.514092-43.514091s19.518512-43.514092 43.514092-43.514092 43.514092 19.518512 43.514091 43.514092-19.522673 43.514092-43.514091 43.514091z m0-53.741442c-5.637942 0-10.227351 4.589409-10.227351 10.227351s4.589409 10.227351 10.227351 10.227351 10.227351-4.589409 10.227351-10.227351-4.589409-10.227351-10.227351-10.227351z",fill:"#6E6E96","p-id":"11316"}),t("path",{d:"M520.972857 777.43263c-142.542145 0-258.508988-115.971004-258.508988-258.52147a16.64337 16.64337 0 0 1 33.28674 0c0 124.19699 101.033579 225.23473 225.222248 225.23473s225.222248-101.03774 225.222248-225.23473c0-124.188668-101.033579-225.218087-225.222248-225.218087a16.64337 16.64337 0 0 1 0-33.286741c142.542145 0 258.508988 115.966843 258.508988 258.504828 0 142.550466-115.966843 258.521471-258.508988 258.52147z",fill:"#6E6E96","p-id":"11317"}),t("path",{d:"M520.968696 518.919481m-83.312551 0a83.312551 83.312551 0 1 0 166.625102 0 83.312551 83.312551 0 1 0-166.625102 0Z",fill:"#A9A9BA","p-id":"11318"}),t("path",{d:"M520.968696 618.875402c-55.114521 0-99.955921-44.83724-99.955921-99.95176 0-55.118682 44.8414-99.955921 99.955921-99.955921s99.95176 44.8414 99.95176 99.955921c0 55.11036-44.83724 99.95176-99.95176 99.95176z m0-166.625101c-36.761044 0-66.669181 29.908136-66.66918 66.66918s29.908136 66.66502 66.66918 66.66502 66.66502-29.908136 66.66502-66.66502c0-36.761044-29.903976-66.669181-66.66502-66.66918z",fill:"#6E6E96","p-id":"11319"}),t("path",{d:"M301.946104 941.515457h429.985632v36.977408H301.946104z",fill:"#6E6E96","p-id":"11320"})])],-1)),Qa={key:0,class:"disk-info_mount-name"},Ya={key:1,class:"disk-info_mount-name"},Ka={key:0,class:"label-item"},Ja=gt(()=>t("div",{class:"label-item_key"},[t("span",null,"\u76EE\u6807\u5206\u533A")],-1)),ti={class:"label-item_path"},ei={class:"label-item"},ui=gt(()=>t("div",{class:"label-item_key"},[t("span",null,"\u683C\u5F0F\u5316\u9009\u9879")],-1)),ni={class:"label-item_value"},si=["disabled"],oi={key:0,value:""},ai=gt(()=>t("option",{value:"format"},"\u683C\u5F0F\u5316",-1)),ii={key:1,value:"default"},li={class:"label-item_value"},ci={key:0,class:"msg"},di={key:1,class:"msg"},ri={class:"action-footer"},_i=gt(()=>t("div",{class:"auto"},null,-1)),pi=["disabled"],vi=["disabled"],hi={key:1,class:"action result"},Fi={class:"action-body"},mi=gt(()=>t("div",{class:"action-body_icon"},[t("svg",{t:"1642063181211",class:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"5062",width:"128",height:"128","data-v-cda444e0":""},[t("path",{d:"M512 85.333333c235.648 0 426.666667 191.018667 426.666667 426.666667s-191.018667 426.666667-426.666667 426.666667S85.333333 747.648 85.333333 512 276.352 85.333333 512 85.333333z m-74.965333 550.4L346.453333 545.152a42.666667 42.666667 0 1 0-60.330666 60.330667l120.704 120.704a42.666667 42.666667 0 0 0 60.330666 0l301.653334-301.696a42.666667 42.666667 0 1 0-60.288-60.330667l-271.530667 271.488z",fill:"#52C41A","p-id":"5063","data-v-cda444e0":""})])],-1)),fi=gt(()=>t("div",{class:"action-body_msg"},"\u683C\u5F0F\u5316\u6210\u529F",-1)),Ei={key:0,class:"action-body_info"},Ci={key:1,class:"action-body_info"},gi={class:"btns"},$i=V({__name:"index",props:{action:String,disk:{type:Object,required:!0},mount:{type:Object},Close:{type:Function},Cancel:{type:Function},Next:{type:Function}},setup(e){const u=e,n=()=>{u.Close&&u.Close()},a=h=>{h.preventDefault(),u.Cancel&&u.Cancel(),n()},d=h=>{u.Next&&u.Next(h),n()},F=C(!1),p=C(0),r=h=>{p.value=h},s=C(u.action=="nas"?"":"format"),i=C(),_=C(),f=()=>{switch(s.value){case"format":D();return;case"default":b();return;default:A.Warning("\u8BF7\u9009\u62E9\u9009\u7EBF");return}},b=()=>{let h="";const k=u.mount;if(k!=null&&k.mountPoint!=null&&(h=k.mountPoint),h!=""){d(h);return}A.Warning("\u65E0\u6CD5\u8BC6\u522B\u8DEF\u5F84")},D=()=>{const h=u.disk,k=u.mount;if(k){const w=k.mountPoint||k.path;if(!confirm(`\u8B66\u544A\uFF1A\u683C\u5F0F\u5316\u4F1A\u6E05\u7A7A ${w} \u5206\u533A\u6570\u636E\uFF0C\u8BF7\u4F60\u8C28\u614E\u64CD\u4F5C`)||!confirm(`\u662F\u5426\u786E\u5B9A\u683C\u5F0F\u5316 ${w}?`))return;l(k);return}if(h){if(!confirm(`\u8B66\u544A\uFF1A\u8BE5\u64CD\u4F5C\u5C06\u521D\u59CB\u5316 ${h.venderModel} \u786C\u76D8\u5E76\u521B\u5EFA\u5206\u533A\uFF0C\u8BF7\u4F60\u8C28\u614E\u64CD\u4F5C`)||!confirm("\u662F\u5426\u786E\u5B9A\u521D\u59CB\u5316?"))return;v(h);return}A.Warning("\u65E0\u6CD5\u8BC6\u522B\u6570\u636E")},v=h=>T(this,null,function*(){if(h.name==null||h.path==""){A.Warning("\u83B7\u53D6\u4E0D\u5230\u8BBE\u5907\u540D\u79F0");return}if(h.path==null||h.path==""){A.Warning("\u83B7\u53D6\u4E0D\u5230\u8BBE\u5907\u8DEF\u5F84");return}F.value=!0;const k=A.Loading("\u521D\u59CB\u5316\u4E2D...");try{const w=yield P.Nas.Disk.Init.POST({name:h.name,path:h.path});if(w!=null&&w.data){const{result:y,error:g}=w==null?void 0:w.data;g&&A.Warning(g),y&&(y.errorInfo?A.Warning(y.errorInfo):(A.Success("\u521D\u59CB\u5316\u6210\u529F"),y.childrens&&y.childrens.length>0&&(_.value=y.childrens[0]),i.value=y,r(1)))}}catch(w){A.Error(w)}k.Close(),F.value=!1}),l=h=>T(this,null,function*(){if(h.path==null||h.path==""){A.Warning("\u83B7\u53D6\u4E0D\u5230\u5206\u533A\u8DEF\u5F84");return}F.value=!0;const k=A.Loading("\u683C\u5F0F\u5316\u4E2D...");try{const w=yield P.Nas.Disk.Partition.Format.POST({path:h.path,uuid:h.uuid,mountPoint:h.mountPoint});if(w!=null&&w.data){const{result:y,error:g}=w==null?void 0:w.data;g&&A.Warning(g),y&&(A.Success("\u683C\u5F0F\u5316\u6210\u529F"),_.value=y,r(1))}}catch(w){A.Error(w)}k.Close(),F.value=!1}),E=()=>{if(_.value&&_.value.mountPoint){d(_.value.mountPoint);return}A.Warning("\u8BFB\u53D6\u7ED3\u679C\u5931\u8D25")};return(h,k)=>(o(),z(ot,{type:1},{default:M(()=>[x(Lt,{name:"rotate",mode:"out-in"},{default:M(()=>{var w;return[p.value==0?(o(),c("form",{key:0,class:"action format",onSubmit:lt(f,["prevent"])},[Ga,t("div",Za,[t("div",ja,[Xa,e.mount?(o(),c("div",Qa,[t("span",null,"\u3010"+m(e.mount.total)+"\u3011",1),t("span",null,m(e.mount.mountPoint||e.mount.path),1)])):e.disk?(o(),c("div",Ya,[t("span",null,"\u3010"+m(e.disk.size)+"\u3011",1),t("span",null,m(e.disk.venderModel),1)])):$("",!0)]),e.mount?(o(),c("div",Ka,[Ja,t("div",ti,m(e.mount.mountPoint||e.mount.path)+"\uFF08"+m(e.mount.total)+"\uFF09 ",1)])):$("",!0),t("div",ei,[ui,t("div",ni,[L(t("select",{"onUpdate:modelValue":k[0]||(k[0]=y=>s.value=y),required:"",disabled:e.action=="disk"},[e.mount!=null?(o(),c("option",oi,"\u8BF7\u9009\u62E9\u9009\u9879")):$("",!0),ai,e.mount!=null?(o(),c("option",ii," \u4E0D\u683C\u5F0F\u5316,\u4F7F\u7528\u539F\u6587\u4EF6\u7CFB\u7EDF ")):$("",!0)],8,si),[[Et,s.value]])]),t("div",li,[s.value=="format"?(o(),c("p",ci," \u683C\u5F0F\u5316\u4E3AEXT4\u6587\u4EF6\u7CFB\u7EDF\uFF0C\u4F20\u8F93\u901F\u5EA6\u66F4\u5FEB ")):s.value=="default"?(o(),c("p",di)):$("",!0)])])]),t("div",ri,[_i,t("button",{class:"cbi-button cbi-button-remove app-btn app-back",onClick:a,type:"button",disabled:F.value}," \u8FD4\u56DE ",8,pi),t("button",{class:"cbi-button cbi-button-apply app-btn app-next",disabled:F.value}," \u4E0B\u4E00\u6B65 ",8,vi)])],40,Wa)):p.value==1?(o(),c("div",hi,[t("div",Fi,[mi,fi,i.value?(o(),c("div",Ei,[Z(" \u5DF2\u7ECF\u6210\u529F\u683C\u5F0F\u5316\u78C1\u76D8 "+m(i.value.venderModel)+" \u5E76\u6302\u8F7D\u5230 ",1),t("a",null,m((w=_.value)==null?void 0:w.mountPoint),1)])):$("",!0),_.value?(o(),c("div",Ci,[Z(" \u5DF2\u7ECF\u6210\u529F\u521D\u59CB\u5316\u5206\u533A "),t("a",null,m(_.value.mountPoint),1)])):$("",!0),t("div",gi,[t("button",{class:"cbi-button cbi-button-apply app-btn app-next",type:"button",onClick:E},m(e.action=="nas"?"\u4E0B\u4E00\u6B65":"\u5B8C\u6210"),1)])])])):$("",!0)]}),_:1})]),_:1}))}});var bi=S($i,[["__scopeId","data-v-bd2acf72"]]),Ve=e=>{const u=document.createElement("div");document.body.appendChild(u);const n=st(bi,ht(vt({},e),{Close:()=>{a()}}));n.mount(u);const a=()=>{n.unmount(),u.remove()};return{Close:a}};const Dt=e=>(q("data-v-3a7479d2"),e=e(),U(),e),yi=["onSubmit"],Di=Dt(()=>t("div",{class:"action-header"},[t("div",{class:"action-header_title"})],-1)),ki={class:"action-body"},Bi={class:"disk-info"},wi=Dt(()=>t("div",{class:"disk-info_icon"},[t("svg",{t:"1642589762094",class:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"11301",width:"128",height:"128"},[t("path",{d:"M899.892468 123.889088c0-44.342099-36.286708-80.620486-80.624646-80.620486H204.728017C160.385918 43.268602 124.107532 79.546988 124.107532 123.889088v802.847056c0 44.342099 36.278386 80.620486 80.620485 80.620486h614.539805c44.337938 0 80.624646-36.278386 80.624646-80.620486V123.889088z",fill:"#D0D0DB","p-id":"11302"}),t("path",{d:"M169.8768 977.7772V174.930143c0-44.342099 36.278386-80.620486 80.620486-80.620485h614.539804c9.936092 0 19.426974 1.905666 28.239639 5.23434-11.525534-30.507298-40.996782-52.389169-75.398629-52.389169H203.342457c-44.342099 0-80.620486 36.278386-80.620486 80.620486v802.851217c0 34.410168 21.881871 63.873094 52.385008 75.381985A79.730065 79.730065 0 0 1 169.8768 977.7772z",fill:"#FFFFFF","p-id":"11303"}),t("path",{d:"M820.657543 40.497481H206.117739c-44.342099 0-80.620486 36.278386-80.620486 80.620485v802.847057c0 44.342099 36.278386 80.620486 80.620486 80.620486h614.539804c44.337938 0 80.624646-36.278386 80.624647-80.620486V121.117966c0-44.342099-36.286708-80.620486-80.624647-80.620485z m19.60173 828.785749c0 40.846992-33.43237 74.279362-74.287684 74.279361H199.780776c-40.855313 0-74.279362-33.424048-74.279362-74.279361V129.593603c0-40.855313 33.424048-74.279362 74.279362-74.279362h566.203296c40.842831 0 74.283522 33.424048 74.283522 74.279362l-0.008321 739.689627z",fill:"#6E6E96","p-id":"11304"}),t("path",{d:"M815.106979 1024H200.567175C146.933914 1024 103.303319 980.369405 103.303319 926.736144V123.889088C103.303319 70.255827 146.933914 26.625232 200.567175 26.625232h614.539804c53.633261 0 97.268017 43.630595 97.268017 97.263856v802.847056c0 53.633261-43.634756 97.263856-97.268017 97.263856zM200.567175 59.911972C165.287391 59.911972 136.590059 88.609303 136.590059 123.889088v802.847056c0 35.279784 28.697331 63.977115 63.977116 63.977115h614.539804c35.279784 0 63.981276-28.697331 63.981276-63.977115V123.889088c0-35.279784-28.701492-63.977115-63.981276-63.977116H200.567175z",fill:"#6E6E96","p-id":"11305"}),t("path",{d:"M301.946104 941.515457h429.985632v65.841173H301.946104z",fill:"#8A8AA1","p-id":"11306"}),t("path",{d:"M731.931736 1024H301.946104a16.64337 16.64337 0 0 1-16.64337-16.64337V941.515457a16.64337 16.64337 0 0 1 16.64337-16.64337h429.985632a16.64337 16.64337 0 0 1 16.64337 16.64337v65.841173a16.64337 16.64337 0 0 1-16.64337 16.64337z m-413.342262-33.286741h396.698892v-32.554432H318.589474v32.554432z",fill:"#6E6E96","p-id":"11307"}),t("path",{d:"M337.230049 960.318304h20.804213v47.038326h-20.804213zM386.565159 960.318304h20.804213v47.038326h-20.804213zM435.891948 960.318304h20.804213v47.038326h-20.804213zM485.231219 960.318304h20.804213v47.038326h-20.804213zM534.558008 960.318304h20.804213v47.038326h-20.804213zM583.897279 960.318304h20.804213v47.038326h-20.804213zM633.224068 960.318304h20.804213v47.038326h-20.804213zM682.563339 960.318304h20.804213v47.038326h-20.804213z",fill:"#FFE599","p-id":"11308"}),t("path",{d:"M219.153659 140.794591m-26.874883 0a26.874882 26.874882 0 1 0 53.749765 0 26.874882 26.874882 0 1 0-53.749765 0Z",fill:"#ADADD1","p-id":"11309"}),t("path",{d:"M219.153659 184.312843c-23.995579 0-43.518252-19.522673-43.518253-43.518252s19.522673-43.518252 43.518253-43.518253 43.518252 19.522673 43.518252 43.518253-19.522673 43.518252-43.518252 43.518252z m0-53.749764c-5.642103 0-10.231512 4.589409-10.231512 10.231512s4.589409 10.231512 10.231512 10.231512 10.231512-4.589409 10.231511-10.231512-4.589409-10.231512-10.231511-10.231512z",fill:"#6E6E96","p-id":"11310"}),t("path",{d:"M801.28466 140.794591m-26.870721 0a26.870721 26.870721 0 1 0 53.741442 0 26.870721 26.870721 0 1 0-53.741442 0Z",fill:"#ADADD1","p-id":"11311"}),t("path",{d:"M801.28466 184.308683c-23.995579 0-43.514092-19.518512-43.514091-43.514092s19.518512-43.514092 43.514091-43.514092 43.514092 19.518512 43.514092 43.514092-19.518512 43.514092-43.514092 43.514092z m0-53.741443c-5.637942 0-10.227351 4.589409-10.227351 10.227351s4.589409 10.227351 10.227351 10.227351 10.227351-4.589409 10.227351-10.227351-4.589409-10.227351-10.227351-10.227351z",fill:"#6E6E96","p-id":"11312"}),t("path",{d:"M801.280499 905.23291m-26.870721 0a26.870721 26.870721 0 1 0 53.741443 0 26.870721 26.870721 0 1 0-53.741443 0Z",fill:"#ADADD1","p-id":"11313"}),t("path",{d:"M801.280499 948.747001c-23.995579 0-43.514092-19.518512-43.514091-43.514091s19.518512-43.514092 43.514091-43.514092 43.514092 19.518512 43.514092 43.514092-19.518512 43.514092-43.514092 43.514091z m0-53.741442c-5.637942 0-10.227351 4.589409-10.227351 10.227351s4.589409 10.227351 10.227351 10.227351 10.227351-4.589409 10.227351-10.227351-4.589409-10.227351-10.227351-10.227351z",fill:"#6E6E96","p-id":"11314"}),t("path",{d:"M219.153659 905.23291m-26.870722 0a26.870721 26.870721 0 1 0 53.741443 0 26.870721 26.870721 0 1 0-53.741443 0Z",fill:"#ADADD1","p-id":"11315"}),t("path",{d:"M219.153659 948.747001c-23.995579 0-43.514092-19.518512-43.514092-43.514091s19.518512-43.514092 43.514092-43.514092 43.514092 19.518512 43.514091 43.514092-19.522673 43.514092-43.514091 43.514091z m0-53.741442c-5.637942 0-10.227351 4.589409-10.227351 10.227351s4.589409 10.227351 10.227351 10.227351 10.227351-4.589409 10.227351-10.227351-4.589409-10.227351-10.227351-10.227351z",fill:"#6E6E96","p-id":"11316"}),t("path",{d:"M520.972857 777.43263c-142.542145 0-258.508988-115.971004-258.508988-258.52147a16.64337 16.64337 0 0 1 33.28674 0c0 124.19699 101.033579 225.23473 225.222248 225.23473s225.222248-101.03774 225.222248-225.23473c0-124.188668-101.033579-225.218087-225.222248-225.218087a16.64337 16.64337 0 0 1 0-33.286741c142.542145 0 258.508988 115.966843 258.508988 258.504828 0 142.550466-115.966843 258.521471-258.508988 258.52147z",fill:"#6E6E96","p-id":"11317"}),t("path",{d:"M520.968696 518.919481m-83.312551 0a83.312551 83.312551 0 1 0 166.625102 0 83.312551 83.312551 0 1 0-166.625102 0Z",fill:"#A9A9BA","p-id":"11318"}),t("path",{d:"M520.968696 618.875402c-55.114521 0-99.955921-44.83724-99.955921-99.95176 0-55.118682 44.8414-99.955921 99.955921-99.955921s99.95176 44.8414 99.95176 99.955921c0 55.11036-44.83724 99.95176-99.95176 99.95176z m0-166.625101c-36.761044 0-66.669181 29.908136-66.66918 66.66918s29.908136 66.66502 66.66918 66.66502 66.66502-29.908136 66.66502-66.66502c0-36.761044-29.903976-66.669181-66.66502-66.66918z",fill:"#6E6E96","p-id":"11319"}),t("path",{d:"M301.946104 941.515457h429.985632v36.977408H301.946104z",fill:"#6E6E96","p-id":"11320"})])],-1)),Ai={key:0,class:"disk-info_mount-name"},xi={key:1,class:"disk-info_mount-name"},Si={key:0,class:"label-item"},Ii=Dt(()=>t("div",{class:"label-item_key"},[t("span",null,"\u76EE\u6807\u5206\u533A")],-1)),Pi={class:"label-item_path"},Vi={class:"label-item"},Mi=Dt(()=>t("div",{class:"label-item_key"},[t("span",null,"\u6302\u8F7D\u70B9")],-1)),Ti={class:"label-item_value"},Li={class:"action-footer"},zi=Dt(()=>t("div",{class:"auto"},null,-1)),Oi=["disabled"],Ni=["disabled"],qi={key:1,class:"action result"},Ui={class:"action-body"},Hi=Dt(()=>t("div",{class:"action-body_icon"},[t("svg",{t:"1642063181211",class:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"5062",width:"128",height:"128","data-v-cda444e0":""},[t("path",{d:"M512 85.333333c235.648 0 426.666667 191.018667 426.666667 426.666667s-191.018667 426.666667-426.666667 426.666667S85.333333 747.648 85.333333 512 276.352 85.333333 512 85.333333z m-74.965333 550.4L346.453333 545.152a42.666667 42.666667 0 1 0-60.330666 60.330667l120.704 120.704a42.666667 42.666667 0 0 0 60.330666 0l301.653334-301.696a42.666667 42.666667 0 1 0-60.288-60.330667l-271.530667 271.488z",fill:"#52C41A","p-id":"5063","data-v-cda444e0":""})])],-1)),Ri=Dt(()=>t("div",{class:"action-body_msg"},"\u6302\u8F7D\u6210\u529F",-1)),Wi={key:0,class:"action-body_info"},Gi={class:"btns"},Zi=V({__name:"index",props:{action:String,disk:{type:Object,required:!0},mount:{type:Object},Close:{type:Function},Cancel:{type:Function},Next:{type:Function}},setup(e){var D;const u=e,n=()=>{u.Close&&u.Close()},a=v=>{v.preventDefault(),u.Cancel&&u.Cancel(),n()},d=v=>{u.Next&&u.Next(v),n()},F=C(!1),p=C(0),r=C("/mnt/data_"+((D=u==null?void 0:u.mount)==null?void 0:D.name)),s=v=>{p.value=v};C(u.mount?"":"format"),C();const i=C(),_=()=>T(this,null,function*(){const v=u.mount;if(v==null){A.Warning("\u83B7\u53D6\u4E0D\u5230\u5206\u533A");return}if(v.path==null||v.path==""){A.Warning("\u83B7\u53D6\u4E0D\u5230\u5206\u533A\u8DEF\u5F84");return}if(v.uuid==null||v.uuid==""){A.Warning("\u83B7\u53D6\u4E0D\u5230\u5206\u533AID");return}F.value=!0;const l=A.Loading("\u6302\u8F7D\u4E2D...");try{const E=yield P.Nas.Disk.Partition.Mount.POST({path:v.path,uuid:v.uuid,mountPoint:r.value});if(E!=null&&E.data){const{result:h,error:k}=E==null?void 0:E.data;k&&A.Warning(k),h&&(A.Success("\u6302\u8F7D\u6210\u529F"),i.value=h,s(1))}}catch(E){A.Error(E)}l.Close(),F.value=!1}),f=()=>{if(i.value&&i.value.mountPoint){d(i.value.mountPoint);return}A.Warning("\u8BFB\u53D6\u7ED3\u679C\u5931\u8D25")},b=()=>{};return(v,l)=>(o(),z(ot,{type:1},{default:M(()=>[x(Lt,{name:"rotate",mode:"out-in"},{default:M(()=>{var E,h;return[p.value==0?(o(),c("form",{key:0,class:"action format",onSubmit:lt(b,["prevent"])},[Di,t("div",ki,[t("div",Bi,[wi,e.mount?(o(),c("div",Ai,[t("span",null,"\u3010"+m(e.mount.total)+"\u3011",1),t("span",null,m(e.mount.mountPoint),1)])):e.disk?(o(),c("div",xi,[t("span",null,"\u3010"+m(e.disk.size)+"\u3011",1),t("span",null,m(e.disk.venderModel),1)])):$("",!0)]),e.mount?(o(),c("div",Si,[Ii,t("div",Pi,m(e.mount.path)+"\uFF08"+m(e.mount.total)+"\uFF0C"+m((h=(E=e.mount)==null?void 0:E.filesystem)==null?void 0:h.toUpperCase())+"\uFF09 ",1)])):$("",!0),t("div",Vi,[Mi,t("div",Ti,[L(t("input",{type:"text","onUpdate:modelValue":l[0]||(l[0]=k=>r.value=k)},null,512),[[Y,r.value,void 0,{trim:!0}]])])])]),t("div",Li,[zi,t("button",{class:"cbi-button cbi-button-apply app-btn app-next",disabled:F.value,onClick:_}," \u786E\u5B9A ",8,Oi),t("button",{class:"cbi-button cbi-button-remove app-btn app-back",onClick:a,type:"button",disabled:F.value}," \u8FD4\u56DE ",8,Ni)])],40,yi)):p.value==1?(o(),c("div",qi,[t("div",Ui,[Hi,Ri,i.value?(o(),c("div",Wi,[Z(" \u5DF2\u6210\u529F\u5C06\u5206\u533A "+m(i.value.path)+" \u6302\u8F7D\u5230 ",1),t("a",null,m(i.value.mountPoint),1)])):$("",!0),t("div",Gi,[t("button",{class:"cbi-button cbi-button-apply app-btn app-next",type:"button",onClick:f},m(e.action=="nas"?"\u5B8C\u6210":"\u4E0B\u4E00\u6B65"),1)])])])):$("",!0)]}),_:1})]),_:1}))}});var ji=S(Zi,[["__scopeId","data-v-3a7479d2"]]),Me=e=>{const u=document.createElement("div");document.body.appendChild(u);const n=st(ji,ht(vt({},e),{Close:()=>{a()}}));n.mount(u);const a=()=>{n.unmount(),u.remove()};return{Close:a}};const Xi={class:"progress"},Qi=V({__name:"index",props:{value:{type:Number,required:!0},text:{type:String}},setup(e){const u=e,n=W(()=>u.value>=80?"#e45e5e":u.value>=70?"#ff9800":u.value>=60?"#297ff3":u.value>0?"#53c31b":"");return(a,d)=>(o(),c("div",Xi,[t("div",{class:Qt(["progress-value",`${e.value>50}`]),style:tt({width:`${e.value}%`,backgroundColor:n.value})},[t("span",null,m(e.text),1)],6),bt(a.$slots,"default",{},void 0,!0)]))}});var Yi=S(Qi,[["__scopeId","data-v-733828e1"]]);const Te=e=>(q("data-v-4b3c5909"),e=e(),U(),e),Ki={class:"disk-content"},Ji={class:"disk-item"},tl={class:"disk-item_name"},el={key:0},ul={key:1},nl={key:2},sl={class:"disk_value"},ol={key:0,class:"disk-item_value"},al={class:"value-data"},il={key:1,class:"disk-item_value"},ll={key:0,class:"disk-item"},cl={class:"disk-item_name"},dl=["href"],rl={class:"disk_status"},_l={class:"disk_status_item"},pl={key:0,class:"tooltip-trigger disk_tip"},vl=Te(()=>t("div",{class:"tooltip-text tooltip-top"},[t("div",{class:"disk_dir_tip"}," \u5F53\u524D\u78C1\u76D8\u4E3A\u53EA\u8BFB\u72B6\u6001\uFF0C\u53EF\u80FD\u5BFC\u81F4\u65E0\u6CD5\u5199\u5165\u6570\u636E ")],-1)),hl={class:"disk_status_item"},Fl={key:0,class:"tooltip-trigger disk_tip"},ml=Te(()=>t("div",{class:"tooltip-text tooltip-top"},[t("span",{class:"disk_dir_tip"},"\u5F53\u524D\u78C1\u76D8\u786C\u76D8\u683C\u5F0F\u4E3ANTFS\uFF0C\u53EF\u80FD\u5BFC\u81F4\u786C\u76D8\u51FA\u73B0\u517C\u5BB9\u6027\u95EE\u9898\uFF0C\u5EFA\u8BAE\u683C\u5F0F\u5316\u6210EXT4\u6587\u4EF6\u7CFB\u7EDF")],-1)),fl=V({__name:"item",props:{part:{type:Object,required:!0},disk:{type:Object,required:!0}},setup(e){const u=e,n=W(()=>u.part.filesystem=="No FileSystem"),a=W(()=>n.value||!u.part.isSystemRoot&&u.part.mountPoint&&(u.part.isReadOnly||u.part.filesystem=="ntfs")),d=function(){Ve({action:"disk",disk:u.disk,mount:u.part,Cancel:()=>{},Next:i=>{location.reload()}})},F=()=>{Me({action:"nas",disk:u.disk,mount:u.part,Cancel:()=>{},Next:()=>{location.reload()}})},p=()=>T(this,null,function*(){const i=A.Loading("\u5904\u7406\u4E2D...");try{const _=yield P.Nas.Disk.InitRest.POST({name:u.disk.name,path:u.disk.path});if(_!=null&&_.data){const{result:f,error:b}=_==null?void 0:_.data;b&&A.Warning(b),f&&(A.Success("\u6302\u8F7D\u6210\u529F"),location.reload())}}catch(_){A.Error(_)}i.Close()}),r=W(()=>u.part.filesystem=="Free Space"),s=W(()=>{const i=u.part.mountPoint?u.part.mountPoint:"";return i.indexOf("/mnt/")==0?"/cgi-bin/luci/admin/services/linkease/file/?path=/"+i.substring(5):"/cgi-bin/luci/admin/services/linkease/file/?path=/root"+i});return(i,_)=>{var b;const f=jt("progress-item");return o(),c("div",Ki,[t("li",Ji,[t("div",tl,[r.value?(o(),c("span",el,"\u672A\u5206\u533A")):(o(),c("span",ul,m(e.part.name)+m(e.part.mountPoint?"":n.value?"\uFF08\u672A\u683C\u5F0F\u5316\uFF09":"\uFF08\u672A\u6302\u8F7D\uFF09"),1)),e.part.isSystemRoot?(o(),c("span",nl,"\uFF08\u7CFB\u7EDF\u5206\u533A\uFF09")):$("",!0)]),t("div",sl,[e.part.mountPoint||r.value?(o(),c("div",ol,[t("div",al,[x(f,{value:r.value||!e.part.usage?0:e.part.usage,text:r.value?"\u672A\u5206\u533A\uFF08"+e.part.total+"\uFF09":e.part.used+"/"+e.part.total,style:{backgroundColor:"#767676"}},null,8,["value","text"])])])):n.value?$("",!0):(o(),c("div",il,[t("div",{class:"value-data buttondiv",onClick:F},"\u624B\u52A8\u6302\u8F7D")])),r.value?(o(),c("button",{key:2,class:"cbi-button cbi-button-apply",onClick:p}," \u5206\u533A\u5E76\u683C\u5F0F\u5316 ")):a.value?(o(),c("button",{key:3,class:"cbi-button cbi-button-apply",onClick:d}," \u683C\u5F0F\u5316\u5206\u533A ")):$("",!0)])]),e.part.mountPoint?(o(),c("li",ll,[t("span",cl,[t("a",{href:s.value,target:"_blank"},m(e.part.mountPoint),9,dl)]),t("div",rl,[t("div",_l,[t("div",null,"\u78C1\u76D8\u8BFB\u5199\u72B6\u6001\uFF1A"+m(e.part.isReadOnly?"\u53EA\u8BFB":"\u8BFB\u5199"),1),!e.part.isSystemRoot&&e.part.isReadOnly?(o(),c("div",pl,[x(dt),vl])):$("",!0)]),t("div",hl,[t("div",null,"\u78C1\u76D8\u683C\u5F0F\uFF1A"+m((b=e.part.filesystem)==null?void 0:b.toUpperCase()),1),e.part.filesystem=="ntfs"?(o(),c("div",Fl,[x(dt),ml])):$("",!0)])])])):$("",!0)])}}});var El=S(fl,[["__scopeId","data-v-4b3c5909"]]);const Le=e=>(q("data-v-5f29973e"),e=e(),U(),e),Cl={key:0,class:"action"},gl={class:"title"},$l=Le(()=>t("div",{class:"app-container_info"},[t("span",null,"\u5206\u533A / \u6302\u8F7D\u70B9"),t("span",null,"\u5BB9\u91CF")],-1)),bl={class:"app-container_body"},yl=Le(()=>t("div",{class:"auto"},null,-1)),Dl=V({__name:"index",props:{disk:{type:Object,required:!0},Close:{type:Function},Cancel:{type:Function},Next:{type:Function}},setup(e){const u=e,n=C(0),a=()=>{u.Close&&u.Close()},d=F=>{F.preventDefault(),u.Cancel&&u.Cancel(),a()};return(F,p)=>(o(),z(ot,{Close:e.Close,type:1},{default:M(()=>[x(Lt,{name:"rotate",mode:"out-in"},{default:M(()=>[n.value==0?(o(),c("div",Cl,[t("h2",gl," \u5206\u533A\u4FE1\u606F - "+m((e.disk.name||"?")+(e.disk.isSystemRoot?"\uFF08\u7CFB\u7EDF\u76D8\uFF09":"")),1),t("ul",null,[t("li",null,[$l,t("div",bl,[(o(!0),c(N,null,K(e.disk.childrens,(r,s)=>(o(),z(El,{key:s,part:r,disk:e.disk},null,8,["part","disk"]))),128))])])]),t("div",{class:"action-footer"},[yl,t("button",{class:"cbi-button cbi-button-remove app-btn app-back",onClick:d,type:"button"}," \u8FD4\u56DE ")])])):$("",!0)]),_:1})]),_:1},8,["Close"]))}});var kl=S(Dl,[["__scopeId","data-v-5f29973e"]]),Bl=e=>{const u=document.createElement("div");document.body.appendChild(u);const n=st(kl,ht(vt({},e),{Close:()=>{a()}}));n.component("progress-item",Yi),n.mount(u);const a=()=>{n.unmount(),u.remove()};return{Close:a}},wl="/luci-static/istorex/warning.svg?v=69d55c8f";const qt=e=>(q("data-v-e039a994"),e=e(),U(),e),Al={class:"disk"},xl={key:0,class:"title"},Sl={class:"not-progress"},Il={key:0},Pl={class:"progress"},Vl={class:"button"},Ml=["src"],Tl=qt(()=>t("span",null,"S.M.A.R.T\u5F02\u5E38",-1)),Ll={key:1},zl={class:"progress"},Ol={class:"button"},Nl={key:0,class:"tooltip-trigger"},ql={class:"disk_tip"},Ul=qt(()=>t("div",null,[t("div",{class:"tooltip-text tooltip-top"},[t("span",{class:"disk_dir_tip"},"\u60A8\u7684\u7CFB\u7EDF\u7A7A\u95F4\u5DF2\u4E0D\u8DB3\uFF0C\u68C0\u6D4B\u5230\u60A8\u7684Docker\u6839\u76EE\u5F55\u4F4D\u4E8E\u7CFB\u7EDF\u6839\u76EE\u5F55\u4E0A\uFF0C\u53EF\u80FD\u4F1A\u5F71\u54CD\u7CFB\u7EDF\u7684\u6B63\u5E38\u8FD0\u884C\uFF0C\u5EFA\u8BAE\u4F7F\u7528Docker\u8FC1\u79FB\u5411\u5BFC\u5C06Docker\u6839\u76EE\u5F55\u8FC1\u79FB\u5230\u5916\u7F6E\u786C\u76D8\u4E0A\u3002")])],-1)),Hl={key:1,class:"tooltip-trigger"},Rl={class:"disk_tip"},Wl=qt(()=>t("div",null,[t("div",{class:"tooltip-text tooltip-top"},[t("span",{class:"disk_dir_tip"},"\u5206\u533A\u5B58\u5728\u5F02\u5E38\uFF0C\u70B9\u51FB\u5206\u533A\u5217\u8868\u67E5\u770B\u9519\u8BEF")])],-1)),Gl={key:2,class:"tooltip-trigger"},Zl={class:"disk_tip"},jl=qt(()=>t("div",null,[t("div",{class:"tooltip-text tooltip-top"},[t("span",{class:"disk_dir_tip"},"\u60A8\u7684\u7CFB\u7EDF\u7A7A\u95F4\u5DF2\u4E0D\u8DB3\uFF0C\u70B9\u51FB\u5206\u533A\u5217\u8868\u67E5\u770B\u9519\u8BEF")])],-1)),Xl=["onClick"],Ql=["onClick"],Yl={class:"progress"},Kl={class:"button"},Jl=["onClick"],t1={key:0},e1={class:"progress"},u1={class:"button"},n1=["onClick"],s1={key:1},o1={class:"progress"},a1={class:"button"},i1=["onClick"],l1=V({__name:"disk",props:{title:String,type:String,smartWarning:Boolean},setup(e){const u=e,n=Ae(),a=W(()=>{var f,b,D,v;if(u.type==="systemRoot")return((b=(f=n==null?void 0:n.disk)==null?void 0:f.disks)==null?void 0:b.filter(l=>l.isSystemRoot))||[];if(u.type==="notSystemRoot")return[...(D=n==null?void 0:n.disk)==null?void 0:D.disks].filter(l=>!l.isSystemRoot)||[];if(u.type==="raid")return[...(v=n==null?void 0:n.raid)==null?void 0:v.disks]}),d=f=>f.usage>80?"linear-gradient(91deg, #e7ab67 0.27%, #fa5b29 99.46%)":"linear-gradient(91deg, #4BCAE7 0.27%, #8ADE86 99.46%)",F=()=>{at({title:"S.M.A.R.T.",src:"/cgi-bin/luci/admin/nas/smart"})},p=f=>{Ve({action:"disk",disk:f,Cancel:()=>{},Next:()=>{location.reload()}})},r=f=>{Bl({action:"disk",disk:f,Cancel:()=>{},Next:()=>{location.reload()}})},s=f=>{const b=f.childrens||[];Me({action:"nas",disk:f,mount:b[0],Cancel:()=>{},Next:()=>{location.reload()}})},i=f=>f.errorInfo?"error":f.childrens==null||f.childrens.length==0||f.childrens.length==1&&f.childrens[0].filesystem=="No FileSystem"?"load":f.childrens.filter(b=>b.mountPoint).length===0?"unmounted":"success",_=f=>{let b=f.name;return f.size&&(b+=`\u3010${f.size}\u3011`),f.venderModel&&(b+=`(${f.venderModel})`),b};return(f,b)=>{var D;return o(),c("div",Al,[(D=a.value)!=null&&D.length?(o(),c("span",xl,m(u.title),1)):$("",!0),(o(!0),c(N,null,K(a.value,(v,l)=>{var E,h,k,w,y;return o(),c("div",{class:"item",key:l},[i(v)==="error"?(o(),c(N,{key:0},[t("span",null,m(_(v)),1),t("div",Sl,[t("span",null,m(v.errorInfo),1)])],64)):i(v)=="success"?(o(),c(N,{key:1},[t("span",null,m(_(v)),1),v.smartWarning&&e.smartWarning?(o(),c("div",Il,[t("div",Pl,[t("div",{style:tt({background:d(v),width:`${v.usage||0}%`})},null,4),t("span",null,m(`${v.used}/${v.total}`),1)]),t("div",Vl,[t("span",{class:"btn",onClick:b[0]||(b[0]=g=>F())},[t("img",{src:R(wl)},null,8,Ml),Tl])])])):(o(),c("div",Ll,[t("div",zl,[t("div",{style:tt({background:d(v),width:`${v.usage||0}%`})},null,4),t("span",null,m(`${v.used}/${v.total}`),1)]),t("div",Ol,[v.isDockerRoot&&v.isSystemRoot&&v.usage&&v.usage>=90?(o(),c("span",Nl,[t("span",ql,[x(dt)]),Ul])):$("",!0),!v.isSystemRoot&&(((E=v.childrens)==null?void 0:E.filter(g=>g.isReadOnly||g.filesystem=="ntfs").length)||0)>0?(o(),c("span",Hl,[t("span",Rl,[x(dt)]),Wl])):$("",!0),(h=v.childrens)!=null&&h.filter(g=>g.isSystemRoot&&g.usage&&g.usage>80).length?(o(),c("span",Gl,[t("span",Zl,[x(dt)]),jl])):$("",!0),!v.isSystemRoot&&(((k=v.childrens)==null?void 0:k.filter(g=>g.isReadOnly||g.filesystem=="ntfs").length)||0)>0?(o(),c("img",{key:3,src:Ha,onClick:g=>p(v),alt:""},null,8,Xl)):$("",!0),t("img",{onClick:g=>r(v),src:Ra,alt:""},null,8,Ql)])]))],64)):i(v)==="load"?(o(),c(N,{key:2},[t("span",null,m(_(v)),1),t("div",Yl,[t("div",{style:tt({width:`${v.usage||0}%`})},null,4),t("span",null,m(`${v.used}/${v.total}`),1)]),t("div",Kl,[t("span",{class:"btn",onClick:g=>p(v)},"\u683C\u5F0F\u5316\u5E76\u6302\u8F7D",8,Jl)])],64)):i(v)==="unmounted"?(o(),c(N,{key:3},[t("span",null,m(_(v)),1),((w=v.childrens)==null?void 0:w.length)==1?(o(),c("div",t1,[t("div",e1,[t("div",{style:tt({background:d(v),width:`${v.usage||0}%`})},null,4),t("span",null,m(`${v.used}/${v.total}`),1)]),t("div",u1,[t("span",{class:"btn",onClick:g=>s(v)},"\u624B\u52A8\u6302\u8F7D",8,n1)])])):$("",!0),(((y=v.childrens)==null?void 0:y.length)||0)>1?(o(),c("div",s1,[t("div",o1,[t("div",{style:tt({background:d(v),width:`${v.usage||0}%`})},null,4),t("span",null,m(`${v.used}/${v.total}`),1)]),t("div",a1,[t("span",{class:"btn",onClick:g=>r(v)},"\u624B\u52A8\u6302\u8F7D",8,i1)])])):$("",!0)],64)):$("",!0)])}),128))])}}});var Rt=S(l1,[["__scopeId","data-v-e039a994"]]),ge="/luci-static/istorex/right.svg?v=173d63f8";const c1=Xt('
    ',1),d1={class:"app-container_status-label_text"},r1={class:"text_status"},_1={class:"text_info"},p1=Xt('
    ',1),v1={class:"app-container_status-label_text"},h1={class:"text_info"},F1=V({__name:"item",props:{item:{type:Object,required:!0},transform:{type:Number,default:0}},setup(e){const u=e,n=xe(),a=C(null),d=p=>{const r=p.target,{left:s,top:i}=r.getBoundingClientRect();n.portitemStyle.show=!0,n.portitemStyle.left=s,n.portitemStyle.top=i,n.portitemStyle.portitem=u.item},F=p=>{n.portitemStyle.show=!1};return(p,r)=>(o(),c("div",{class:"app-container_status-label_bg",style:tt(`transform: translateX(${e.transform}px);`),ref_key:"el",ref:a,onMouseenter:d,onMouseleave:F},[e.item.linkState=="DOWN"?(o(),c(N,{key:0},[c1,t("div",d1,[t("div",r1,m(p.$t("\u5DF2\u65AD\u5F00")),1),t("div",_1,m(e.item.name)+" "+m(e.item.interfaceNames?`(${e.item.interfaceNames.join(",").toLocaleUpperCase()})`:""),1)])],64)):(o(),c(N,{key:1},[p1,t("div",v1,[t("div",null,m(e.item.linkSpeed),1),t("div",h1,m(e.item.name)+" "+m(e.item.interfaceNames?`(${e.item.interfaceNames.join(",").toLocaleUpperCase()})`:""),1)])],64))],36))}});var m1=S(F1,[["__scopeId","data-v-580b5628"]]);const f1=V({__name:"index",props:{portList:{type:Array,required:!0}},setup(e){const u=C(),n=C(0),a=C(0),d=C(0),F=C(!1),p=()=>{if(d.value>=0){d.value=0;return}d.value+=100},r=()=>{if(d.value<=0-n.value+a.value){d.value=0-n.value+a.value;return}d.value-=100};return et(()=>{Xe(()=>{u.value&&(n.value=u.value.scrollWidth,a.value=u.value.clientWidth,F.value=n.value>a.value)})}),(s,i)=>(o(),c("div",{class:"app-interfaces",ref_key:"el",ref:u},[F.value?(o(),c(N,{key:0},[t("img",{src:ge,class:"btn-f",alt:"",onClick:p}),t("img",{src:ge,class:"btn-r",alt:"",onClick:r})],64)):$("",!0),(o(!0),c(N,null,K(e.portList,(_,f)=>(o(),z(m1,{item:_,transform:d.value},null,8,["item","transform"]))),256))],512))}});var E1=S(f1,[["__scopeId","data-v-92f8fb6c"]]);const C1={class:"status-card"},g1=V({__name:"interfacer-status",setup(e){const u=mt({portList:[],load:!1});return(()=>{P.Network.PortList.GET().then(a=>{if(a!=null&&a.data){const{result:d}=a==null?void 0:a.data;d&&(u.portList=d.ports||[])}}).finally(()=>{u.load=!0})})(),(a,d)=>(o(),c("div",C1,[u.load?(o(),z(E1,{key:0,portList:u.portList},null,8,["portList"])):$("",!0)]))}});var $1=S(g1,[["__scopeId","data-v-2244abae"]]);const rt={installApp:(e,u)=>new Promise((n,a)=>{let d=0;P.App.Install.POST({name:e}).then(()=>{const F=setTimeout(()=>{d==0&&(d=1,n(!1))},(u||60)*1e3),p=()=>{d==0&&P.App.Check.POST({name:e}).then(r=>{if(d==0&&r!=null&&r.data){const{result:s}=r.data;if((s==null?void 0:s.status)=="installed"){clearTimeout(F),d=1,n(!0);return}}}).catch(r=>{}).finally(()=>{d==0&&setTimeout(p,3e3)})};setTimeout(p,3e3)}).catch(F=>{d==0&&(d=1,a("\u5B89\u88C5\u5931\u8D25\uFF0C"+F))})}),checkAndInstallApp:(e,u,n)=>T(void 0,null,function*(){let a=A.Loading("\u68C0\u67E5\u4E2D...");try{const d=yield P.App.Check.POST({name:e});if(a.Close(),d!=null&&d.data){const{result:F,error:p}=d.data;if(p)A.Warning(p);else if(F){if(F.status=="installed")return!0;if(confirm(`\u68C0\u6D4B\u5230\u4F60\u5C1A\u672A\u5B89\u88C5 ${u} \u63D2\u4EF6,\u662F\u5426\u5B89\u88C5\uFF1F`)){a=A.Loading("\u6B63\u5728\u5B89\u88C5\u4E2D...");const r=yield rt.installApp(n||e);if(a.Close(),r)return!0;A.Error("\u5B89\u88C5\u5931\u8D25\u6216\u8D85\u65F6\uFF0C\u8BF7\u68C0\u67E5\u8F6F\u4EF6\u6E90\u6216\u7A0D\u5019\u91CD\u8BD5")}}else A.Warning("\u68C0\u67E5\u63D2\u4EF6\u72B6\u6001\u5931\u8D25")}return!1}catch(d){return a.Close(),A.Warning(d),!1}}),installAndGo:(e,u,n,a)=>T(void 0,null,function*(){(yield rt.checkAndInstallApp(e,u,a))&&(location.href=n)})};const b1={class:"width-50 responsive"},y1={class:"chart"},D1={class:"info"},k1={class:"width-50 responsive"},B1=V({__name:"index",setup(e){const u=Nt.stampForm,n=mt({cpuUsage:0,cpuTemperature:0,memAvailablePercentage:0,uptime:0,localtime:""}),a=mt({firmwareVersion:"",kernelVersion:"",model:""});mt({root:[],loaded:[]});const d={interfaceconfig:[{text:"\u7F51\u53E3\u914D\u7F6E",onClick:()=>{at({title:"\u7F51\u53E3\u914D\u7F6E",src:"/cgi-bin/luci/admin/quickstart/interfaceconfig"})}}],system:[{text:"\u7CFB\u7EDF\u76D1\u63A7",onClick:()=>{rt.installAndGo("app-meta-netdata","NetData","/cgi-bin/luci/admin/status/netdata")}},{text:"\u5907\u4EFD\u5347\u7EA7",onClick:()=>{at({title:"\u5907\u4EFD\u5347\u7EA7",src:"/cgi-bin/luci/admin/system/flash"})}},{text:"\u63D2\u4EF6\u5907\u4EFD",onClick:()=>{at({title:"\u63D2\u4EF6\u5907\u4EFD",src:"/cgi-bin/luci/admin/store/pages/maintance"})}}],disk:[{text:"RAID\u7BA1\u7406",onClick:()=>{at({title:"RAID\u7BA1\u7406",src:"/cgi-bin/luci/admin/nas/raid"})}},{text:"S.M.A.R.T.",onClick:()=>{at({title:"S.M.A.R.T.",src:"/cgi-bin/luci/admin/nas/smart"})}},{text:"\u78C1\u76D8\u7BA1\u7406",onClick:()=>{at({title:"\u78C1\u76D8\u7BA1\u7406",src:"/cgi-bin/luci/admin/system/diskman"})}},{text:"\u6302\u8F7D\u70B9",onClick:()=>{at({title:"\u6302\u8F7D\u70B9",src:"/cgi-bin/luci/admin/system/mounts"})}}]},F=()=>T(this,null,function*(){var b,D,v,l,E;const f=yield P.System.Status.GET();console.log("getSystemStatus",f.data.result),f.data.result&&(n.uptime=(b=f.data.result)==null?void 0:b.uptime,n.localtime=(D=f.data.result)==null?void 0:D.localtime,n.cpuUsage=((v=f.data.result)==null?void 0:v.cpuUsage)||0,n.memAvailablePercentage=100-((l=f.data.result)==null?void 0:l.memAvailablePercentage)||0,n.cpuTemperature=(E=f.data.result)==null?void 0:E.cpuTemperature,_.cpu&&_.cpu.setValue(n.cpuUsage),_.men&&_.men.setValue(n.memAvailablePercentage),_.temperature&&_.temperature.setValue(n.cpuTemperature),window.setInterval(()=>{n.uptime&&(n.uptime=n.uptime+1),n.localtime&&(n.localtime=String(me(me(n.localtime).unix()*1e3+1e3).format("YYYY-MM-DD HH:mm:ss")))},1e3))}),p=()=>T(this,null,function*(){var b,D,v;const f=yield P.System.Version.GET();console.log("getSystemVersion",f),f.data.result&&(a.firmwareVersion=(b=f.data.result)==null?void 0:b.firmwareVersion,a.kernelVersion=(D=f.data.result)==null?void 0:D.kernelVersion,a.model=(v=f.data.result)==null?void 0:v.model)});Ae();const r=C(null),s=C(null),i=C(null),_={cpu:null,men:null,temperature:null};return et(()=>{r.value&&s.value&&i.value&&(_.cpu=Ht({el:r.value,value:n.cpuUsage,name:ct.global.t("CPU\u4F7F\u7528\u7387"),labelColor:"rgba(0, 0, 0, 0.80)",numberColor:"#32CFA4",labelFontSize:10,numberFontSize:14,radius:"100%",progressBackgroundColor:"rgba(0, 0, 0, 0.04)",progressColor:{type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:"#8ADE86"},{offset:1,color:"#4BCAE7"}],global:!1}}),_.men=Ht({el:s.value,value:n.memAvailablePercentage,name:ct.global.t("\u5185\u5B58\u4F7F\u7528\u7387"),labelColor:"rgba(0, 0, 0, 0.80)",numberColor:"#F66631",labelFontSize:10,numberFontSize:14,radius:"100%",progressBackgroundColor:"rgba(0, 0, 0, 0.04)",progressColor:{type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:"#E5B56E"},{offset:1,color:"#FD4812E5"}],global:!1}}),_.temperature=Ht({el:i.value,value:n.cpuTemperature,name:ct.global.t("CPU\u6E29\u5EA6"),labelColor:"rgba(0, 0, 0, 0.80)",numberColor:"#32CFA4",labelFontSize:10,numberFontSize:14,radius:"100%",progressBackgroundColor:"rgba(0, 0, 0, 0.04)",unit:"\xB0C",progressColor:{type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:"#8ADE86"},{offset:1,color:"#4BCAE7"}],global:!1}}))}),F(),p(),(f,b)=>(o(),z(ft,null,{default:M(()=>[t("div",b1,[x(j,{title:f.$t("\u7F51\u7EDC\u63A5\u53E3\u72B6\u6001"),span:24,"more-actions":d.interfaceconfig,padding:"0 10px 8px 10px"},{default:M(()=>[x($1)]),_:1},8,["title","more-actions"]),x(j,{title:f.$t("\u7CFB\u7EDF\u4FE1\u606F"),padding:"0 10px 8px 10px",span:24,"more-actions":d.system},{default:M(()=>[t("div",y1,[t("div",{class:"gauge",ref_key:"temperature",ref:i},null,512),t("div",{class:"gauge",ref_key:"cpu",ref:r},null,512),t("div",{class:"gauge",ref_key:"men",ref:s},null,512)]),t("div",D1,[t("div",null,[t("span",null,m(f.$t("\u8BBE\u5907\u578B\u53F7"))+"\uFF1A",1),t("span",null,m(a.model),1)]),t("div",null,[t("span",null,m(f.$t("\u56FA\u4EF6\u7248\u672C"))+"\uFF1A",1),t("span",null,m(a.firmwareVersion),1)]),t("div",null,[t("span",null,m(f.$t("\u5185\u6838\u7248\u672C"))+"\uFF1A",1),t("span",null,m(a.kernelVersion),1)]),t("div",null,[t("span",null,m(f.$t("\u5DF2\u542F\u52A8"))+"\uFF1A",1),t("span",null,m(R(u)(n.uptime)),1)]),t("div",null,[t("span",null,m(f.$t("\u7CFB\u7EDF\u65F6\u95F4"))+"\uFF1A",1),t("span",null,m(n.localtime),1)])])]),_:1},8,["title","more-actions"])]),t("div",k1,[x(j,{title:f.$t("\u78C1\u76D8\u4FE1\u606F"),padding:"0 10px 8px 10px",helpLink:"https://www.linkease.com/rd/8myYAEVA/",span:24,"more-actions":d.disk},{default:M(()=>[x(Rt,{title:f.$t("\u7CFB\u7EDF\u6839\u76EE\u5F55"),type:"systemRoot"},null,8,["title"]),x(Rt,{title:f.$t("\u5DF2\u6302\u8F7D\u78C1\u76D8"),smartWarning:!0,type:"notSystemRoot"},null,8,["title"]),x(Rt,{title:f.$t("RAID\u8BBE\u5907"),type:"raid"},null,8,["title"])]),_:1},8,["title","more-actions"])])]),_:1}))}});var w1=S(B1,[["__scopeId","data-v-3f470552"]]),A1="/luci-static/istorex/setting.svg?v=9ffe8a9b";const x1={class:"app"},S1={class:"setting"},I1=["src"],P1=["src"],V1=V({__name:"app",props:{title:{},title_en:{},name:{},isWebUrl:{type:Function},openApp:{type:Function},openWebUrl:{type:Function}},setup(e){const u=e,n=C(localStorage.getItem("i18n")),a=d=>P.ApiStore.getStoreAppIcon(`/static-icon/openwrt-app-meta/app-meta-${d}/logo.png`);return et(()=>{Ie.subscribe("changeLocale",(d,F)=>{F==="auto"?n.value=navigator.language:n.value=F})}),(d,F)=>(o(),c("div",x1,[u.isWebUrl()?(o(),c("div",{key:0,onClick:F[1]||(F[1]=p=>u.openWebUrl())},[t("span",S1,[t("img",{src:A1,alt:"",onClick:F[0]||(F[0]=p=>{p.stopPropagation(),u.openApp()})})]),t("div",null,[t("img",{class:"app-icon",src:a(u.name),alt:"\u56FE\u6807\u51FA\u8D70\u5566"},null,8,I1),t("span",null,m(n.value==="en"&&u.title_en||u.title),1)])])):(o(),c("div",{key:1,onClick:F[2]||(F[2]=p=>u.openApp())},[t("div",null,[t("img",{class:"app-icon",src:a(u.name),alt:"\u56FE\u6807\u51FA\u8D70\u5566"},null,8,P1),t("span",null,m(n.value==="en"&&u.title_en||u.title),1)])]))]))}});var M1=S(V1,[["__scopeId","data-v-61b6e601"]]);const T1=e=>(q("data-v-283b2956"),e=e(),U(),e),L1={class:"app-store"},z1=T1(()=>t("span",null,"APP Store",-1)),O1=V({__name:"index",setup(e){const u=Qe(),n=W(()=>u.localApps.filter(d=>d.name!="istorex"));return(()=>T(this,null,function*(){yield u.getApp()}))(),(d,F)=>(o(),z(ft,{title:d.$t("\u5E94\u7528\u4E2D\u5FC3")},{default:M(()=>[t("div",L1,[t("div",{class:"store",onClick:F[0]||(F[0]=p=>R(Ye).Open())},[t("div",null,[t("div",null,[t("span",null,m(d.$t("\u5E94\u7528\u5546\u5E97")),1),z1])])]),(o(!0),c(N,null,K(n.value,p=>(o(),z(M1,Ke(Je(p)),null,16))),256))])]),_:1},8,["title"]))}});var N1=S(O1,[["__scopeId","data-v-283b2956"]]),q1="/luci-static/istorex/copy.png?v=7ec874a7";const _t=e=>(q("data-v-43beecef"),e=e(),U(),e),U1={class:"actioner-container"},H1=_t(()=>t("div",{class:"actioner-container_header"},[t("span",null,"\u57DF\u540D\u914D\u7F6E\u5411\u5BFC")],-1)),R1={class:"actioner-container_body"},W1={class:"label-item"},G1=_t(()=>t("span",null,"DDNSTO",-1)),Z1=_t(()=>t("p",{class:"label_info"},"DDNSTO \u662F\u4E00\u4E2A\u4E0D\u9700\u8981\u516C\u7F51IP\u4E5F\u53EF\u4EE5\u5728\u5916\u7F51\u8BBF\u95EE\u7684\u7A7F\u900F\u57DF\u540D\u670D\u52A1\uFF0C\u4E00\u4E2A\u6D4F\u89C8\u5668\u641E\u5B9A\u5185\u7F51\u7A7F\u900F\uFF0C\u8FDC\u7A0B\u8BBF\u95EEOpenwrt\u3001\u8FDC\u7A0B\u7EC8\u7AEF\u3001\u8FDC\u7A0B\u684C\u9762...",-1)),j1={class:"label-item"},X1=_t(()=>t("span",null,"\u963F\u91CC\u4E91",-1)),Q1=_t(()=>t("p",{class:"label_info"}," \u4E3A\u62E5\u6709\u52A8\u6001IP\u7684\u4E3B\u673A\u914D\u7F6E\u4E00\u4E2A\u56FA\u5B9A\u7684\u53EF\u8BBF\u95EE\u57DF\u540D ",-1)),Y1={class:"label-item"},K1=_t(()=>t("span",null,"Dnspod",-1)),J1=_t(()=>t("p",{class:"label_info"}," \u4E3A\u62E5\u6709\u52A8\u6001IP\u7684\u4E3B\u673A\u914D\u7F6E\u4E00\u4E2A\u56FA\u5B9A\u7684\u53EF\u8BBF\u95EE\u57DF\u540D ",-1)),tc={class:"label-item"},ec=_t(()=>t("span",null,"\u82B1\u751F\u58F3",-1)),uc=_t(()=>t("p",{class:"label_info"}," \u4E3A\u62E5\u6709\u52A8\u6001IP\u7684\u4E3B\u673A\u914D\u7F6E\u4E00\u4E2A\u56FA\u5B9A\u7684\u53EF\u8BBF\u95EE\u57DF\u540D ",-1)),nc=V({__name:"setup-index",props:{onSetup:{type:Function,required:!0},active:{type:String,default:"ddnsto"}},emits:["update:active"],setup(e,{emit:u}){const n=e,a=()=>{n.onSetup()},d=C(n.active),F=()=>{switch(u("update:active",d.value),d.value){case"ddnsto":n.onSetup("ddnsto");break;case"ali":n.onSetup("ddns-ali");break;case"dnspod":n.onSetup("ddns-dnspod");break;case"oray":n.onSetup("ddns-oray");break}};return(p,r)=>(o(),c("div",U1,[H1,t("div",R1,[t("div",W1,[t("label",null,[L(t("input",{type:"radio","onUpdate:modelValue":r[0]||(r[0]=s=>d.value=s),value:"ddnsto"},null,512),[[it,d.value]]),G1]),Z1]),t("div",j1,[t("label",null,[L(t("input",{type:"radio","onUpdate:modelValue":r[1]||(r[1]=s=>d.value=s),value:"ali"},null,512),[[it,d.value]]),X1]),Q1]),t("div",Y1,[t("label",null,[L(t("input",{type:"radio","onUpdate:modelValue":r[2]||(r[2]=s=>d.value=s),value:"dnspod"},null,512),[[it,d.value]]),K1]),J1]),t("div",tc,[t("label",null,[L(t("input",{type:"radio","onUpdate:modelValue":r[3]||(r[3]=s=>d.value=s),value:"oray"},null,512),[[it,d.value]]),ec]),uc])]),t("div",{class:"actioner-container_footer"},[t("div",{class:"close",onClick:a},"\u53D6\u6D88"),t("div",{class:"next",onClick:F},"\u4E0B\u4E00\u6B65")])]))}});var sc=S(nc,[["__scopeId","data-v-43beecef"]]);const zt=e=>(q("data-v-43dd65a2"),e=e(),U(),e),oc={class:"actioner-container"},ac={class:"actioner-container_body"},ic=zt(()=>t("svg",{t:"1642063181211",class:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"5062",width:"128",height:"128","data-v-cda444e0":""},[t("path",{d:"M512 85.333333c235.648 0 426.666667 191.018667 426.666667 426.666667s-191.018667 426.666667-426.666667 426.666667S85.333333 747.648 85.333333 512 276.352 85.333333 512 85.333333z m-74.965333 550.4L346.453333 545.152a42.666667 42.666667 0 1 0-60.330666 60.330667l120.704 120.704a42.666667 42.666667 0 0 0 60.330666 0l301.653334-301.696a42.666667 42.666667 0 1 0-60.288-60.330667l-271.530667 271.488z",fill:"#52C41A","p-id":"5063","data-v-cda444e0":""})],-1)),lc=zt(()=>t("div",{class:"body-title"},"\u6DFB\u52A0\u6210\u529F",-1)),cc=zt(()=>t("p",{class:"body-tips"},"\u8BF7\u7A0D\u7B491\u5206\u949F\u751F\u6548\u540E\u518D\u4F7F\u7528\u3002",-1)),dc={class:"body-info"},rc=zt(()=>t("span",null,"\u8BBF\u95EE\u5730\u5740\uFF1A",-1)),_c=["href"],pc=zt(()=>t("div",null,[t("span",null,"\u53EF\u524D\u5F80"),t("a",{href:"/cgi-bin/luci/admin/services/ddns",target:"_blank"},"\u670D\u52A1-\u52A8\u6001DNS"),t("span",null,"\u67E5\u770B\u66F4\u591A\u8BE6\u60C5")],-1)),vc=V({__name:"setup-ddns-success",props:{target:{type:String,required:!0},onSetup:{type:Function,required:!0}},setup(e){const u=()=>{location.reload()};return(n,a)=>(o(),c("div",oc,[t("div",ac,[ic,lc,cc,t("div",dc,[rc,t("a",{href:e.target,target:"_blank",rel:"noopener noreferrer"},m(e.target),9,_c)]),pc]),t("div",{class:"actioner-container_footer"},[t("div",{class:"close",onClick:u},"\u5173\u95ED")])]))}});var hc=S(vc,[["__scopeId","data-v-43dd65a2"]]);const ze=e=>(q("data-v-7790f1da"),e=e(),U(),e),Fc={class:"actioner-container"},mc=ze(()=>t("div",{class:"actioner-container_header"},[t("span",null,"\u57DF\u540D\u914D\u7F6E\u5411\u5BFC")],-1)),fc=ze(()=>t("div",{class:"actioner-container_body ddnsto-login"},[t("iframe",{src:"https://www.kooldns.cn/bind/#/auth?send=1&source=openwrt&callback=*"})],-1)),Ec=V({__name:"setup-ddnsto-login",props:{onSetup:{type:Function,required:!0},onDdnstoConfig:{type:Function,required:!0}},setup(e){const u=e,n=()=>{u.onSetup()},a=d=>{if(d.data.auth=="ddnsto"){const F=d.data.sign,p=d.data.token;F&&p&&(removeEventListener("message",a),u.onDdnstoConfig(F,p),u.onSetup("ddnsto-run"))}};return et(()=>{window.addEventListener("message",a)}),Bt(()=>{removeEventListener("message",a)}),(d,F)=>(o(),c("div",Fc,[mc,fc,t("div",{class:"actioner-container_footer"},[t("div",{class:"close",onClick:n},"\u53D6\u6D88")])]))}});var Cc=S(Ec,[["__scopeId","data-v-7790f1da"]]);const gc=e=>(q("data-v-5baf4b05"),e=e(),U(),e),$c={class:"actioner-container"},bc=gc(()=>t("div",{class:"actioner-container_header"},[t("span",null,"\u57DF\u540D\u914D\u7F6E\u5411\u5BFC")],-1)),yc={class:"actioner-container_body ddnsto-bind"},Dc=["src"],kc=V({__name:"setup-ddnsto-bind",props:{onSetup:{type:Function,required:!0},config:{type:Object,required:!0},domain:{type:String,required:!0}},emits:["update:domain"],setup(e,{emit:u}){const n=e,a=W(()=>{const{domain:p,token:r,sign:s,routerId:i,netaddr:_}=n.config,f=encodeURIComponent(p),b=encodeURIComponent(_);return`https://www.kooldns.cn/bind/#/domain?domain=${f}&sign=${s}&token=${r}&routerId=${i}&netaddr=${b}`}),d=p=>{if(p.data){const{auth:r,url:s}=p.data;r==="ddnsto"&&s&&F(s)}},F=p=>T(this,null,function*(){var r;try{const s=yield P.Guide.DdnstoAddress.POST({address:p});s!=null&&s.data&&(((r=s==null?void 0:s.data)==null?void 0:r.success)||0)==0&&(u("update:domain",p),n.onSetup("ddnsto-save"))}catch(s){}});return et(()=>{window.addEventListener("message",d)}),Bt(()=>{removeEventListener("message",d)}),(p,r)=>(o(),c("div",$c,[bc,t("div",yc,[t("iframe",{src:a.value},null,8,Dc)])]))}});var Bc=S(kc,[["__scopeId","data-v-5baf4b05"]]);const Ot=e=>(q("data-v-02a6c9d8"),e=e(),U(),e),wc={class:"actioner-container"},Ac={class:"actioner-container_body"},xc=Ot(()=>t("svg",{t:"1642063181211",class:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"5062",width:"128",height:"128","data-v-cda444e0":""},[t("path",{d:"M512 85.333333c235.648 0 426.666667 191.018667 426.666667 426.666667s-191.018667 426.666667-426.666667 426.666667S85.333333 747.648 85.333333 512 276.352 85.333333 512 85.333333z m-74.965333 550.4L346.453333 545.152a42.666667 42.666667 0 1 0-60.330666 60.330667l120.704 120.704a42.666667 42.666667 0 0 0 60.330666 0l301.653334-301.696a42.666667 42.666667 0 1 0-60.288-60.330667l-271.530667 271.488z",fill:"#52C41A","p-id":"5063","data-v-cda444e0":""})],-1)),Sc=Ot(()=>t("div",{class:"body-title"},"\u6DFB\u52A0\u6210\u529F",-1)),Ic=Ot(()=>t("p",{class:"body-tips"},"\u8BF7\u7A0D\u7B491\u5206\u949F\u751F\u6548\u540E\u518D\u4F7F\u7528\u3002",-1)),Pc={class:"body-info"},Vc=Ot(()=>t("span",null,"\u8BBF\u95EE\u5730\u5740\uFF1A",-1)),Mc=["href"],Tc=Ot(()=>t("div",null,[t("span",null,"\u53EF\u524D\u5F80"),t("a",{href:"https://www.ddnsto.com/app/#/devices",target:"_blank"},"DDNSTO\u63A7\u5236\u53F0"),t("span",null,"\u67E5\u770B\u66F4\u591A\u8BE6\u60C5")],-1)),Lc=V({__name:"setup-ddnsto-save",props:{onSetup:{type:Function,required:!0},target:{type:String,required:!0}},setup(e){const u=()=>{location.reload()};return(n,a)=>(o(),c("div",wc,[t("div",Ac,[xc,Sc,Ic,t("div",Pc,[Vc,t("a",{href:e.target,target:"_blank",rel:"noopener noreferrer"},m(e.target),9,Mc)]),Tc]),t("div",{class:"actioner-container_footer"},[t("div",{class:"close",onClick:u},"\u5173\u95ED")])]))}});var zc=S(Lc,[["__scopeId","data-v-02a6c9d8"]]);const Oc=e=>(q("data-v-4f87c1d1"),e=e(),U(),e),Nc={class:"actioner-container"},qc=Oc(()=>t("div",{class:"actioner-container_header"},[t("span",null,"\u57DF\u540D\u914D\u7F6E\u5411\u5BFC")],-1)),Uc={class:"actioner-container_body"},Hc={class:"actioner-container_footer"},Rc=V({__name:"setup-ddnsto-install",props:{onSetup:{type:Function,required:!0}},setup(e){const u=e,n=()=>{u.onSetup()},a=()=>T(this,null,function*(){if(p.value)return;p.value=!0;const s=A.Loading("\u5B89\u88C5\u4E2D...");try{if(yield rt.installApp("app-meta-ddnsto",30)){u.onSetup("ddnsto-login");return}else d.value="\u5B89\u88C5\u5931\u8D25"}catch(i){d.value=i}finally{s.Close()}p.value=!1}),d=C("\u6B63\u5728\u68C0\u6D4B\u4E2D..."),F=C(!1),p=C(!1);return(()=>T(this,null,function*(){try{const s=yield P.App.Check.POST({name:"ddnsto"});if(s!=null&&s.data){const{result:i,error:_}=s.data;if(_){d.value=_;return}if(i){if(i.status=="installed"){u.onSetup("ddnsto-login");return}i.status=="uninstalled"&&(d.value="\u9700\u8981\u5B89\u88C5DDNSTO\u63D2\u4EF6\uFF0C\u70B9\u51FB\u201C\u786E\u5B9A\u201D\u5F00\u59CB\u5B89\u88C5")}}}catch(s){d.value=s}F.value=!0}))(),(s,i)=>(o(),c("div",Nc,[qc,t("div",Uc,[t("span",null,m(d.value),1)]),t("div",Hc,[F.value?(o(),c(N,{key:0},[t("div",{class:"close",onClick:n},"\u53D6\u6D88"),t("div",{class:"next",onClick:a},"\u786E\u5B9A")],64)):$("",!0)])]))}});var Wc=S(Rc,[["__scopeId","data-v-4f87c1d1"]]);const Gc=e=>(q("data-v-06c9d91d"),e=e(),U(),e),Zc={class:"actioner-container"},jc=Gc(()=>t("div",{class:"actioner-container_header"},[t("span",null,"\u57DF\u540D\u914D\u7F6E\u5411\u5BFC")],-1)),Xc={class:"actioner-container_body"},Qc=V({__name:"setup-ddnsto-run",props:{onSetup:{type:Function,required:!0},token:{type:String,required:!0},onDdnstoLocalConfig:{type:Function,required:!0}},setup(e){const u=e,n=C("\u6B63\u5728\u68C0\u6D4B\u63D2\u4EF6\u662F\u5426\u5DF2\u542F\u52A8...");(s=>T(this,null,function*(){var i;try{const _=yield P.Guide.Ddnsto.POST({token:u.token});_!=null&&_.data&&(_.data.error&&(n.value=_.data.error),(((i=_==null?void 0:_.data)==null?void 0:i.success)||0)==0&&F())}catch(_){n.value=_}}))(u.token);const d=C(),F=()=>{const s=()=>T(this,null,function*(){if((yield p())===!0){r();return}d.value=window.setTimeout(s,2e3)});s()},p=()=>T(this,null,function*(){try{const s=yield P.App.Check.POST({name:"ddnsto",checkRunning:!0});if(s!=null&&s.data){s.data.error&&(n.value=s.data.error);const i=s.data.result;if((i==null?void 0:i.status)=="running")return!0}}catch(s){n.value=s}return!1});Bt(()=>{d.value&&clearInterval(d.value)});const r=()=>T(this,null,function*(){var s;try{const i=yield P.Guide.DdntoConfig.GET();if(i!=null&&i.data&&(i.data.error&&(n.value=i.data.error),(((s=i==null?void 0:i.data)==null?void 0:s.success)||0)==0&&i.data.result)){const _=i.data.result;u.onDdnstoLocalConfig(_.netAddr,_.deviceId),u.onSetup("ddnsto-bind")}}catch(i){n.value=i}});return(s,i)=>(o(),c("div",Zc,[jc,t("div",Xc,m(n.value),1)]))}});var Yc=S(Qc,[["__scopeId","data-v-06c9d91d"]]);const Kc={class:"action-main"},Jc=V({__name:"index",props:{Close:{type:Function,required:!0},url:{type:String,required:!0}},setup(e){const u=e,n=C("ddnsto-install"),a=s=>{s!=null?n.value=s:d()},d=()=>{u.Close&&u.Close()},F=mt({sign:"",token:"",domain:u.url,netaddr:"",routerId:""}),p=(s,i)=>{F.sign=s,F.token=i},r=(s,i)=>{F.netaddr=s,F.routerId=i};return(s,i)=>(o(),z(ot,{type:1},{default:M(()=>[t("div",Kc,[n.value=="ddnsto-install"?(o(),z(Wc,{key:0,onSetup:a})):n.value=="ddnsto-login"?(o(),z(Cc,{key:1,onSetup:a,onDdnstoConfig:p})):n.value=="ddnsto-run"?(o(),z(Yc,{key:2,onSetup:a,token:F.token,onDdnstoLocalConfig:r},null,8,["token"])):n.value=="ddnsto-bind"?(o(),z(Bc,{key:3,onSetup:a,config:{token:F.token,sign:F.sign,domain:F.domain,netaddr:F.netaddr,routerId:F.routerId},domain:F.domain,"onUpdate:domain":i[0]||(i[0]=_=>F.domain=_)},null,8,["config","domain"])):n.value=="ddnsto-save"?(o(),z(zc,{key:4,onSetup:a,target:F.domain},null,8,["target"])):$("",!0)])]),_:1}))}});var td=S(Jc,[["__scopeId","data-v-2b767e18"]]);const ed=e=>{const u=document.createElement("div");document.body.appendChild(u);const n=st(td,ht(vt({},e),{Close:()=>{a()}}));n.mount(u);const a=()=>{n.unmount(),u.remove()};return{Close:a}};const ud={class:"action"},nd={class:"action-header"},sd=["innerHTML"],od={class:"action-footer"},ad=V({__name:"index",props:{Close:Function,next:{type:Function},clear:{type:Function},continuer:{type:Function},nextTitle:{type:String,default:"\u786E\u5B9A"},clearTitle:{type:String,default:"\u8FD4\u56DE"},continuerTitle:{type:String,default:"\u7EE7\u7EED\u4FDD\u5B58"},title:{type:String,default:"\u63D0\u793A"},content:{type:String}},setup(e){const u=e,n=()=>{u.next&&u.next(),u.Close&&u.Close()},a=()=>{u.clear&&u.clear(),u.Close&&u.Close()},d=()=>{u.continuer&&u.continuer(),u.Close&&u.Close()};return(F,p)=>(o(),z(ot,{Close:e.Close,type:1},{default:M(()=>[t("div",ud,[t("div",nd,m(e.title),1),t("div",{class:"action-body",innerHTML:e.content},null,8,sd),t("div",od,[e.clear?(o(),c("div",{key:0,class:"clear",onClick:a},m(e.clearTitle),1)):$("",!0),t("div",{class:"next",onClick:n},m(e.nextTitle),1),e.continuer?(o(),c("div",{key:1,class:"next",onClick:d},m(e.continuerTitle),1)):$("",!0)])])]),_:1},8,["Close"]))}});var id=S(ad,[["__scopeId","data-v-4283f74c"]]);const $e=e=>{const u=document.createElement("div");document.body.appendChild(u);const n=st(id,ht(vt({},e),{Close:()=>{a()}}));n.mount(u);const a=()=>{n.unmount(),u.remove()};return{Close:a}};const X=e=>(q("data-v-b1e12544"),e=e(),U(),e),ld={class:"actioner-container"},cd=["onSubmit"],dd=X(()=>t("div",{class:"actioner-container_header"},[t("span",null,"\u57DF\u540D\u914D\u7F6E\u5411\u5BFC")],-1)),rd={key:0,class:"title_info"},_d=X(()=>t("p",null,"\u963F\u91CC\u4E91",-1)),pd=X(()=>t("span",null," \u4E3A\u62E5\u6709\u52A8\u6001IP\u7684\u4E3B\u673A\u914D\u7F6E\u4E00\u4E2A\u56FA\u5B9A\u7684\u53EF\u8BBF\u95EE\u57DF\u540D ",-1)),vd=X(()=>t("a",{href:"https://doc.linkease.com/zh/guide/istoreos/basic/domain.html#%E9%98%BF%E9%87%8C%E4%BA%91",target:"_blank"},"\u67E5\u770B\u6559\u7A0B>>",-1)),hd=[_d,pd,vd],Fd={key:1,class:"title_info"},md=X(()=>t("p",null,"dnspod",-1)),fd=X(()=>t("span",null," \u4E3A\u62E5\u6709\u52A8\u6001IP\u7684\u4E3B\u673A\u914D\u7F6E\u4E00\u4E2A\u56FA\u5B9A\u7684\u53EF\u8BBF\u95EE\u57DF\u540D ",-1)),Ed=X(()=>t("a",{href:"https://doc.linkease.com/zh/guide/istoreos/basic/domain.html#dnspod",target:"_blank"},"\u67E5\u770B\u6559\u7A0B>>",-1)),Cd=[md,fd,Ed],gd={key:2,class:"title_info"},$d=X(()=>t("p",null,"\u82B1\u751F\u58F3",-1)),bd=X(()=>t("span",null," \u4E3A\u62E5\u6709\u52A8\u6001IP\u7684\u4E3B\u673A\u914D\u7F6E\u4E00\u4E2A\u56FA\u5B9A\u7684\u53EF\u8BBF\u95EE\u57DF\u540D ",-1)),yd=X(()=>t("a",{href:"https://doc.linkease.com/zh/guide/istoreos/basic/domain.html#%E8%8A%B1%E7%94%9F%E5%A3%B3",target:"_blank"},"\u67E5\u770B\u6559\u7A0B>>",-1)),Dd=[$d,bd,yd],kd={class:"label-item"},Bd=X(()=>t("div",{class:"label-item_key"},[t("span",null,"IP\u5730\u5740\u7248\u672C\uFF1A")],-1)),wd={class:"label-item_value"},Ad=X(()=>t("option",{value:"ipv4"},"IPv4\u5730\u5740",-1)),xd=X(()=>t("option",{value:"ipv6"},"IPv6\u5730\u5740",-1)),Sd=[Ad,xd],Id=X(()=>t("div",{class:"label_tips"},[t("svg",{width:"14px",height:"14px",viewBox:"0 0 14 14",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"},[t("g",{id:"icon_alert",stroke:"none","stroke-width":"1",fill:"none","fill-rule":"evenodd"},[t("g",{id:"Icon/Warning"},[t("rect",{id:"\u77E9\u5F62",fill:"#000000","fill-rule":"nonzero",opacity:"0",x:"0",y:"0",width:"14",height:"14"}),t("path",{d:"M7,0.875 C3.61757813,0.875 0.875,3.61757813 0.875,7 C0.875,10.3824219 3.61757813,13.125 7,13.125 C10.3824219,13.125 13.125,10.3824219 13.125,7 C13.125,3.61757813 10.3824219,0.875 7,0.875 Z M6.5625,4.046875 C6.5625,3.98671875 6.61171875,3.9375 6.671875,3.9375 L7.328125,3.9375 C7.38828125,3.9375 7.4375,3.98671875 7.4375,4.046875 L7.4375,7.765625 C7.4375,7.82578125 7.38828125,7.875 7.328125,7.875 L6.671875,7.875 C6.61171875,7.875 6.5625,7.82578125 6.5625,7.765625 L6.5625,4.046875 Z M7,10.0625 C6.63769531,10.0625 6.34375,9.76855469 6.34375,9.40625 C6.34375,9.04394531 6.63769531,8.75 7,8.75 C7.36230469,8.75 7.65625,9.04394531 7.65625,9.40625 C7.65625,9.76855469 7.36230469,10.0625 7,10.0625 Z",id:"\u5F62\u72B6",fill:"#FAAD14"})])])]),t("span",{class:"info"},"\u8BBE\u5B9A\u54EA\u4E00\u4E2A IP \u5730\u5740\uFF08IPv4 \u6216 IPv6\uFF09\u4F1A\u88AB\u53D1\u9001\u7ED9 DDNS \u63D0\u4F9B\u5546")],-1)),Pd={class:"label-item"},Vd=X(()=>t("div",{class:"label-item_key"},[t("span",null,"\u57DF\u540D\uFF1A")],-1)),Md={class:"label-item_value"},Td={class:"label-item"},Ld=X(()=>t("div",{class:"label-item_key"},[t("span",null,"\u7528\u6237\u540D\uFF1A")],-1)),zd={class:"label-item_value"},Od={class:"label-item"},Nd=X(()=>t("div",{class:"label-item_key"},[t("span",null,"\u5BC6\u7801\uFF1A")],-1)),qd={class:"label-item_value"},Ud={class:"actioner-container_footer"},Hd=["disabled"],Rd=V({__name:"setup-ddns",props:{name:{type:String,default:"ali"},onSetup:{type:Function,required:!0},target:{type:String,required:!0}},emits:["update:target"],setup(e,{emit:u}){const n=e,a=C("ipv4"),d=C(n.name),F=C(""),p=C(""),r=C(""),s=C(!1),i=()=>{n.onSetup("index")},_=()=>{s.value=!0;const v=A.Loading("\u68C0\u6D4B\u4E2D...");P.Network.CheckPublickNet.POST({ipVersion:a.value}).then(l=>{var E,h;if(l!=null&&l.data){if((E=l==null?void 0:l.data)!=null&&E.error){A.Warning(l==null?void 0:l.data.error);return}if((((h=l==null?void 0:l.data)==null?void 0:h.success)||0)==0){const k=l.data.result;k&&k.address?D():f();return}}throw"\u672A\u77E5\u9519\u8BEF"}).catch(l=>{A.Error(l)}).finally(()=>{v.Close(),s.value=!1})},f=()=>{$e({title:"\u6E29\u99A8\u63D0\u793A",nextTitle:"\u4F7F\u7528DDNSTO",continuerTitle:"\u7EE7\u7EED\u4FDD\u5B58",content:"\u68C0\u6D4B\u5230\u60A8\u7684wan\u53E3\u6CA1\u6709\u516C\u7F51IP\u6216\u8005IPv6\u5730\u5740\uFF0C\u53EF\u4EE5\u4F7F\u7528DDNSTO\u914D\u7F6E\u8FDC\u7A0B\u57DF\u540D\u8BBF\u95EE",next(){b()},continuer(){D()},clear(){}})},b=()=>{n.onSetup("ddnsto")},D=()=>{s.value=!0;const v=A.Loading("\u914D\u7F6E\u4E2D...");P.Guide.PostDdns.POST({ipVersion:a.value,serviceName:d.value,domain:F.value,userName:p.value,password:r.value}).then(l=>{if(l!=null&&l.data){const{error:E,scope:h,success:k}=l.data;if(E=="-100"&&h=="guide.ddns"){$e({title:"\u6E29\u99A8\u63D0\u793A",content:"\u68C0\u6D4B\u5230\u4F60\u6709\u672A\u4FDD\u5B58\u7684\u914D\u7F6E\uFF0C\u53EF\u524D\u5F80\u9875\u9762\u53F3\u4E0A\u89D2\u70B9\u51FB\u67E5\u770B\uFF0C\u4FDD\u5B58\u5E76\u5E94\u7528\u6216\u8005\u6062\u590D\u914D\u7F6E\u540E\u7EE7\u7EED",next(){}});return}if(E){A.Warning(E);return}if((k||0)==0){u("update:target",F.value),n.onSetup("ddns-success");return}}throw"\u672A\u77E5\u9519\u8BEF"}).catch(l=>{A.Error(l)}).finally(()=>{v.Close(),s.value=!1})};return(v,l)=>(o(),c("div",ld,[t("form",{class:"actioner-dns",onSubmit:lt(_,["prevent"])},[dd,t("div",{class:Qt(["actioner-container_body",e.name])},[e.name=="ali"?(o(),c("div",rd,hd)):e.name=="dnspod"?(o(),c("div",Fd,Cd)):e.name=="oray"?(o(),c("div",gd,Dd)):$("",!0),t("div",kd,[Bd,t("div",wd,[L(t("select",{name:"",id:"","onUpdate:modelValue":l[0]||(l[0]=E=>a.value=E)},Sd,512),[[Et,a.value]])]),Id]),t("div",Pd,[Vd,t("div",Md,[L(t("input",{type:"text",placeholder:"myhost.example.com","onUpdate:modelValue":l[1]||(l[1]=E=>F.value=E),required:""},null,512),[[Y,F.value,void 0,{trim:!0}]])])]),t("div",Td,[Ld,t("div",zd,[L(t("input",{type:"text","onUpdate:modelValue":l[2]||(l[2]=E=>p.value=E),placeholder:"\u8BF7\u8F93\u5165\u7528\u6237\u540D",required:""},null,512),[[Y,p.value,void 0,{trim:!0}]])])]),t("div",Od,[Nd,t("div",qd,[L(t("input",{type:"password","onUpdate:modelValue":l[3]||(l[3]=E=>r.value=E),placeholder:"\u8BF7\u8F93\u5165\u5BC6\u7801",required:""},null,512),[[Y,r.value,void 0,{trim:!0}]])])])],2),t("div",Ud,[t("div",{class:"close",onClick:i,type:"button"},"\u8FD4\u56DE"),t("button",{class:"next save",type:"submit",disabled:s.value}," \u4FDD\u5B58 ",8,Hd)])],40,cd)]))}});var Wt=S(Rd,[["__scopeId","data-v-b1e12544"]]);const Wd={class:"action-main"},Gd=V({__name:"index",props:{Close:{type:Function,required:!0},url:{type:String,required:!0}},setup(e){const u=e,n=C(""),a=C("index"),d=s=>{if(s!=null){if(s=="ddnsto"){F();return}a.value=s}else p()},F=()=>{p(),ed({url:u.url})},p=()=>{u.Close&&u.Close()},r=C("ddnsto");return(s,i)=>(o(),z(ot,{Close:e.Close,type:1},{default:M(()=>[t("div",Wd,[a.value=="index"?(o(),z(sc,{key:0,onSetup:d,active:r.value,"onUpdate:active":i[0]||(i[0]=_=>r.value=_)},null,8,["active"])):a.value=="ddns-ali"?(o(),z(Wt,{key:1,onSetup:d,target:n.value,"onUpdate:target":i[1]||(i[1]=_=>n.value=_),name:"ali"},null,8,["target"])):a.value=="ddns-dnspod"?(o(),z(Wt,{key:2,onSetup:d,target:n.value,"onUpdate:target":i[2]||(i[2]=_=>n.value=_),name:"dnspod"},null,8,["target"])):a.value=="ddns-oray"?(o(),z(Wt,{key:3,onSetup:d,target:n.value,"onUpdate:target":i[3]||(i[3]=_=>n.value=_),name:"oray"},null,8,["target"])):a.value=="ddns-success"?(o(),z(hc,{key:4,onSetup:d,target:n.value},null,8,["target"])):$("",!0)])]),_:1},8,["Close"]))}});var Zd=S(Gd,[["__scopeId","data-v-5d97cabd"]]);const Gt=e=>{const u=document.createElement("div");document.body.appendChild(u);const n=st(Zd,ht(vt({},e),{Close:()=>{a()}}));n.mount(u);const a=()=>{n.unmount(),u.remove()};return{Close:a}};var jd=function(){var e=document.getSelection();if(!e.rangeCount)return function(){};for(var u=document.activeElement,n=[],a=0;a(q("data-v-2f910f70"),e=e(),U(),e),tr={class:"button",style:{"margin-bottom":"8px"}},er={href:"https://www.kooldns.cn/app/#/devices",target:"_blank"},ur={class:"row"},nr={class:"text"},sr=Kt(()=>t("span",null,"DDNSTO\uFF1A",-1)),or={key:0},ar=["href","title"],ir={key:0,class:"row"},lr={class:"text"},cr=Kt(()=>t("span",null,"muddns_ipv4\uFF1A",-1)),dr={key:0,class:"configure"},rr=["href"],_r={key:0,class:"button"},pr={key:1,class:"row"},vr={class:"text"},hr=Kt(()=>t("span",null,"muddns_ipv6\uFF1A",-1)),Fr={key:0,class:"configure"},mr=["href"],fr={key:0,class:"button"},Er=V({__name:"ddns",setup(e){const u=C({});let n=!1,a;const d=s=>{Jd(s),A.Message("\u590D\u5236\u6210\u529F")};et(()=>{n=!0,a=window.setTimeout(r,1100)}),Bt(()=>{a!==void 0&&window.clearTimeout(a),n=!1});const F=W(()=>{const s=u.value.ipv4Domain;return!s||s=="Stopped"||s=="Disabled"?s:`http://${s}`}),p=W(()=>{const s=u.value.ipv6Domain;return!s||s=="Stopped"||s=="Disabled"?s:`http://${s}`}),r=function(){!n||P.Guide.Ddns.GET().then(s=>{var i;s!=null&&s.data&&(((i=s==null?void 0:s.data)==null?void 0:i.success)||0)==0&&s.data.result&&(u.value=s.data.result)}).then(()=>{})};return(s,i)=>(o(),z(j,{title:s.$t("\u8FDC\u7A0B\u57DF\u540D"),padding:"0 10px 8px 10px",helpLink:"https://www.linkease.com/rd/3yFiX5-X/",span:24,action:{text:s.$t("\u5FEB\u901F\u914D\u7F6E"),onClick:()=>{R(Gt)({url:u.value.ddnstoDomain})}}},{default:M(()=>{var _,f,b,D,v;return[t("div",tr,[t("a",er,m(s.$t("\u524D\u5F80\u63A7\u5236\u53F0")),1)]),t("div",ur,[t("div",nr,[sr,(_=u.value)!=null&&_.ddnstoDomain?(o(),c("span",or,[t("a",{class:"configure",href:(f=u.value)==null?void 0:f.ddnstoDomain,target:"_blank",rel:"noopener noreferrer",title:(b=u.value)==null?void 0:b.ddnstoDomain},m((D=u.value)==null?void 0:D.ddnstoDomain),9,ar),t("img",{src:q1,onClick:i[0]||(i[0]=l=>{var E;return d((E=u.value)==null?void 0:E.ddnstoDomain)})})])):(o(),c("span",{key:1,onClick:i[1]||(i[1]=l=>R(Gt)({url:u.value.ddnstoDomain})),style:{color:"#06f",cursor:"pointer"},class:"configure"},m(s.$t("\u7ACB\u5373\u914D\u7F6E\uFF0C\u83B7\u5F97\u514D\u8D39\u5916\u7F51\u57DF\u540D")),1))]),(v=u.value)!=null&&v.ddnstoDomain?(o(),c("span",{key:0,onClick:i[2]||(i[2]=l=>R(Gt)({url:u.value.ddnstoDomain})),style:{color:"#06f",cursor:"pointer","font-size":"12px"}},"\u8BBF\u95EE\u5931\u8D25\uFF1F\u91CD\u65B0\u914D\u7F6E")):$("",!0)]),F.value?(o(),c("div",ir,[t("div",lr,[cr,F.value==="Stopped"||F.value==="Disabled"?(o(),c("span",dr,m(F.value),1)):(o(),c("a",{key:1,target:"_blank",rel:"noopener noreferrer",href:F.value,class:"configure"},m(F.value),9,rr))]),F.value?(o(),c("div",_r,[t("span",{onClick:i[3]||(i[3]=l=>R(at)({title:"muddns_ipv4",src:"/cgi-bin/luci/admin/services/ddns"}))},m(s.$t("\u7F16\u8F91")),1)])):$("",!0)])):$("",!0),p.value?(o(),c("div",pr,[t("div",vr,[hr,p.value==="Stopped"||p.value==="Disabled"?(o(),c("span",Fr,m(p.value),1)):(o(),c("a",{key:1,target:"_blank",rel:"noopener noreferrer",href:p.value,class:"configure"},m(p.value),9,mr))]),p.value?(o(),c("div",fr,[t("span",{onClick:i[4]||(i[4]=l=>R(at)({title:"muddns_ipv4",src:"/cgi-bin/luci/admin/services/ddns"}))},m(s.$t("\u7F16\u8F91")),1)])):$("",!0)])):$("",!0)]}),_:1},8,["title","action"]))}});var Cr=S(Er,[["__scopeId","data-v-2f910f70"]]);const gr={},$r={width:"128px",height:"128px",viewBox:"0 0 128 128",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"},br=t("g",{id:"icon_yellow",stroke:"none","stroke-width":"1",fill:"none","fill-rule":"evenodd"},[t("g",{id:"Icon/Warning"},[t("rect",{id:"\u77E9\u5F62",fill:"#000000","fill-rule":"nonzero",opacity:"0",x:"0",y:"0",width:"128",height:"128"}),t("path",{d:"M64,8 C33.075,8 8,33.075 8,64 C8,94.925 33.075,120 64,120 C94.925,120 120,94.925 120,64 C120,33.075 94.925,8 64,8 Z M60,37 C60,36.45 60.45,36 61,36 L67,36 C67.55,36 68,36.45 68,37 L68,71 C68,71.55 67.55,72 67,72 L61,72 C60.45,72 60,71.55 60,71 L60,37 Z M64,92 C60.6875,92 58,89.3125 58,86 C58,82.6875 60.6875,80 64,80 C67.3125,80 70,82.6875 70,86 C70,89.3125 67.3125,92 64,92 Z",id:"\u5F62\u72B6",fill:"#FAAD14"})])],-1),yr=[br];function Dr(e,u){return o(),c("svg",$r,yr)}var kr=S(gr,[["render",Dr]]);const Q=e=>(q("data-v-097a32fc"),e=e(),U(),e),Br={key:0,class:"action"},wr=Q(()=>t("h2",{class:"title"},"Docker\u8FC1\u79FB\u5411\u5BFC",-1)),Ar=Q(()=>t("p",{class:"desc"}," \u5F53\u7CFB\u7EDF\u6839\u76EE\u5F55\u7A7A\u95F4\u4E0D\u8DB3\u65F6\uFF0C\u53EF\u5C06docker\u6839\u76EE\u5F55\u8FC1\u79FB\u5230\u5916\u7F6E\u786C\u76D8\uFF0C\u4EE5\u4FDD\u8BC1\u7CFB\u7EDF\u7684\u6B63\u5E38\u8FD0\u884C: ",-1)),xr={key:1,class:"action"},Sr=Q(()=>t("h2",{class:"title"},"Docker\u8FC1\u79FB\u5411\u5BFC",-1)),Ir=Q(()=>t("p",{class:"desc"}," \u5F53\u7CFB\u7EDF\u6839\u76EE\u5F55\u7A7A\u95F4\u4E0D\u8DB3\u65F6\uFF0C\u53EF\u5C06docker\u6839\u76EE\u5F55\u8FC1\u79FB\u5230\u5916\u7F6E\u786C\u76D8\uFF0C\u4EE5\u4FDD\u8BC1\u7CFB\u7EDF\u7684\u6B63\u5E38\u8FD0\u884C: ",-1)),Pr={class:"roots"},Vr=Q(()=>t("span",{class:"roots_tit"},"Docker\u6839\u76EE\u5F55\uFF1A",-1)),Mr={class:"root"},Tr={class:"move"},Lr=Q(()=>t("span",{class:"roots_tit"},"\u8FC1\u79FB\u5230\uFF1A",-1)),zr={key:0},Or=["onSubmit"],Nr={class:"select-editable"},qr=Q(()=>t("option",{selected:"",value:null},"\u8BF7\u9009\u62E9\u8FC1\u79FB\u5730\u5740",-1)),Ur=["value"],Hr=Q(()=>t("option",{value:"useInput"},"- -\u81EA\u5B9A\u4E49- -",-1)),Rr={key:1,class:"tips"},Wr={class:"tips_content"},Gr=Q(()=>t("span",{class:"tip"},"\u68C0\u6D4B\u5230\u60A8\u8FD8\u6CA1\u6709\u6302\u8F7D\u5916\u7F6E\u786C\u76D8\u6216\u5206\u533A\u5C0F\u4E8E8GB\uFF0C\u9700\u8981\u60A8\u63A5\u4E0A\u786C\u76D8\u5E76\u683C\u5F0F\u5316\u6216\u624B\u52A8\u6302\u8F7D\u786C\u76D8\u540E\uFF0C\u518D\u6267\u884CDocker\u8FC1\u79FB\u5411\u5BFC\uFF0C\u5C06Docker\u8FC1\u79FB\u5230\u76EE\u6807\u786C\u76D8\u3002",-1)),Zr={key:0,class:"btns"},jr={key:1,class:"btns"},Xr={key:2,class:"action docker_success"},Qr=Q(()=>t("h2",{class:"title"},"Docker\u8FC1\u79FB\u5411\u5BFC",-1)),Yr={class:"finished"},Kr=Q(()=>t("p",{class:"successed"},"\u8FC1\u79FB\u6210\u529F\uFF01",-1)),Jr={key:3,class:"action docker_download"},t5=Q(()=>t("h2",{class:"title"},"Docker\u8FC1\u79FB\u5411\u5BFC",-1)),e5={class:"finished"},u5=Q(()=>t("p",{class:"successed"},"\u8BE5\u76EE\u6807\u8DEF\u5F84\u4E0D\u4E3A\u7A7A",-1)),n5={class:"docker_moves"},s5={class:"moves change"},o5=Q(()=>t("label",{for:"move"},"\u66F4\u6362\u76EE\u5F55\uFF08\u4E0D\u8986\u76D6\u76EE\u6807\u8DEF\u5F84\uFF0C\u4EC5\u5C06docker\u76EE\u5F55\u4FEE\u6539\u4E3A\u76EE\u6807\u8DEF\u5F84\uFF09",-1)),a5={class:"moves"},i5=Q(()=>t("label",{for:"cover"},"\u8986\u76D6\u8FC1\u79FB\uFF08\u8986\u76D6\u76EE\u6807\u8DEF\u5F84\uFF0C\u7EE7\u7EED\u8FC1\u79FB\u4F1A\u6E05\u7A7A\u8BE5\u76EE\u6807\u8DEF\u5F84\u4E0B\u7684\u6587\u4EF6\uFF09",-1)),l5={class:"btns"},c5=V({__name:"index",props:{rootPath:{type:String,required:!0},Close:Function},setup(e){const u=e,n=C(),a=C(),d=C(0),F=C("null"),p=C(""),r=C(),s=C(!1),i=C("");(()=>{P.Nas.Disk.Status.GET().then(h=>{h!=null&&h.data.result&&(r.value=h==null?void 0:h.data.result)}),P.Guide.DockerStatus.GET().then(h=>{var k;if((k=h==null?void 0:h.data)!=null&&k.result){const w=h.data.result;n.value=w}}),P.Guide.DockerPartitionList.GET().then(h=>{var k;if((k=h==null?void 0:h.data)!=null&&k.result){const w=h.data.result;a.value=w}})})();const f=h=>{let k=F.value;if(k=="useInput"&&(k=p.value),k==null||k=="null"||k=="")return;const w=A.Loading("\u6B63\u5728\u8FC1\u79FB\u4E2D...");P.Guide.DockerTransfer.POST({path:k,force:h,overwriteDir:!!i.value}).then(y=>{var g;if(y!=null&&y.data){if((y.data.success||0)==0){if((g=y.data.result)!=null&&g.emptyPathWarning){s.value=!0,d.value=2;return}d.value=1;return}else if(y.data.error)throw y.data.error}throw"\u672A\u77E5\u9519\u8BEF"}).catch(y=>{A.Error(y)}).finally(()=>w.Close())},b=()=>{s.value=!1,f(!1)},D=h=>{h.preventDefault(),u.Close&&u.Close()},v=h=>{h.preventDefault(),location.reload()},l=h=>{h.preventDefault(),d.value=0},E=h=>{h.preventDefault(),f(!0)};return(h,k)=>(o(),z(ot,{Close:e.Close,type:1},{default:M(()=>{var w,y,g,B,H,I;return[d.value==-1?(o(),c("div",Br,[wr,Ar,t("div",{class:"btns"},[t("button",{class:"cbi-button cbi-button-remove app-btn app-back",type:"button",onClick:D}," \u53D6\u6D88 ")])])):d.value==0?(o(),c("div",xr,[Sr,Ir,t("div",Pr,[Vr,t("span",Mr,m((w=n.value)==null?void 0:w.path),1)]),t("div",Tr,[Lr,(g=(y=a.value)==null?void 0:y.partitionList)!=null&&g.length?(o(),c("div",zr,[t("form",{onSubmit:lt(b,["prevent"])},[t("label",null,[t("div",Nr,[L(t("select",{"onUpdate:modelValue":k[0]||(k[0]=O=>F.value=O)},[qr,(o(!0),c(N,null,K((B=a.value)==null?void 0:B.partitionList,(O,nt)=>(o(),c("option",{value:O,key:nt},m(O),9,Ur))),128)),Hr],512),[[Et,F.value,void 0,{trim:!0}]]),F.value=="useInput"?L((o(),c("input",{key:0,type:"text","onUpdate:modelValue":k[1]||(k[1]=O=>p.value=O),required:"",placeholder:"\u8BF7\u8F93\u5165\u8FC1\u79FB\u5730\u5740"},null,512)),[[Y,p.value,void 0,{trim:!0}]]):$("",!0)])])],40,Or)])):a.value?(o(),c("div",Rr,[t("div",Wr,[x(dt),Gr])])):$("",!0)]),(I=(H=a.value)==null?void 0:H.partitionList)!=null&&I.length?(o(),c("div",Zr,[t("button",{class:"cbi-button cbi-button-apply",onClick:b}," \u786E\u5B9A "),t("button",{class:"cbi-button cbi-button-remove app-btn app-back",type:"button",onClick:D}," \u53D6\u6D88 ")])):(o(),c("div",jr,[t("button",{class:"cbi-button cbi-button-apply",onClick:D}," \u786E\u5B9A ")]))])):d.value==1?(o(),c("div",Xr,[Qr,t("div",Yr,[x(Yt)]),Kr,t("div",{class:"btns"},[t("button",{class:"cbi-button cbi-button-apply",onClick:v}," \u786E\u5B9A ")])])):d.value==2?(o(),c("div",Jr,[t5,t("div",e5,[x(kr)]),u5,t("div",n5,[t("div",s5,[L(t("input",{type:"radio",id:"move",name:"moves","onUpdate:modelValue":k[2]||(k[2]=O=>i.value=O),value:""},null,512),[[it,i.value]]),o5]),t("div",a5,[L(t("input",{type:"radio",id:"cover",name:"moves","onUpdate:modelValue":k[3]||(k[3]=O=>i.value=O),value:"true"},null,512),[[it,i.value]]),i5])]),t("div",l5,[s.value?(o(),c("button",{key:0,class:"cbi-button cbi-button-apply",onClick:E}," \u786E\u5B9A ")):$("",!0),t("button",{class:"cbi-button cbi-button-apply",onClick:l}," \u8FD4\u56DE "),s.value?$("",!0):(o(),c("button",{key:1,class:"cbi-button cbi-button-remove app-btn app-back",type:"button",onClick:v}," \u53D6\u6D88 "))])])):$("",!0)]}),_:1},8,["Close"]))}});var d5=S(c5,[["__scopeId","data-v-097a32fc"]]);const ye=()=>{const e=document.createElement("div");document.body.appendChild(e);const u=st(d5,{Close:()=>{n()}});u.mount(e);const n=()=>{u.unmount(),e.remove()};return{Close:n}};const r5=e=>(q("data-v-750b6b3e"),e=e(),U(),e),_5={class:"button"},p5={class:"row"},v5={class:"text"},h5={key:0,class:"docker-item-value"},F5={class:"configure"},m5={key:1,class:"docker-item-value"},f5={class:"input-switch"},E5=["value","disabled"],C5=r5(()=>t("em",null,null,-1)),g5=[C5],$5={key:0,class:"row"},b5={class:"text"},y5={style:{width:"100%"}},D5={class:"configure"},k5={key:0},B5={class:"tooltip-trigger"},w5={class:"docker_tip"},A5={class:"tooltip-text tooltip-top"},x5={class:"docker_dir_tip"},S5=V({__name:"docker",setup(e){const u=C(!1),n=C(),a=mt({enable:!1,disabled:!1}),d=()=>T(this,null,function*(){const s=A.Loading(a.enable?"Docker\u5F00\u542F\u4E2D...":"Docker\u5173\u95ED\u4E2D...");a.disabled=!0;try{const i=yield P.Guide.DockerSwitch.POST({enable:a.enable});if(i!=null&&i.data){const{success:_,error:f}=i.data;if(f)throw a.enable=!a.enable,f;(_||0)==0&&r()}}catch(i){A.Warning(`${i}`)}finally{a.disabled=!1}s.Close()}),F=()=>{window.open("/cgi-bin/luci/admin/docker/overview","_blank")},p=()=>{ye()},r=()=>{P.Guide.DockerStatus.GET().then(s=>{var i;if((i=s==null?void 0:s.data)!=null&&i.result){const _=s.data.result;n.value=_,_.status==="running"&&(a.enable=!0)}}).finally(()=>{u.value=!0})};return setTimeout(r,1100),(s,i)=>{var _;return o(),z(j,{title:"Docker",padding:"0 10px 8px 10px",helpLink:"https://www.linkease.com/rd/2Q28MDtf/",moreActions:[{show:((_=n.value)==null?void 0:_.status)==="running",text:"\u67E5\u770BDocker\u4FE1\u606F",onClick:p}],span:24},{default:M(()=>{var f,b,D,v;return[t("div",_5,[t("span",{onClick:i[0]||(i[0]=l=>R(ye)({setup:0}))},m(s.$t("\u8FC1\u79FB\u5411\u5BFC")),1),t("span",{onClick:F},m(s.$t("\u9AD8\u7EA7\u914D\u7F6E")),1)]),t("div",p5,[t("div",v5,[t("span",null,m(s.$t("\u5F53\u524D\u72B6\u6001")),1)]),(f=n.value)!=null&&f.status?(o(),c(N,{key:0},[((b=n.value)==null?void 0:b.status)==="not installed"?(o(),c("div",h5,[t("span",F5,m(s.$t("\u672A\u5B89\u88C5")),1)])):(o(),c("div",m5,[t("label",f5,[L(t("input",{type:"checkbox",hidden:"",value:!a.enable,"onUpdate:modelValue":i[1]||(i[1]=l=>a.enable=l),disabled:a.disabled,onChange:d},null,40,E5),[[Be,a.enable]]),t("span",{class:Qt(a.enable?"enable":"close")},g5,2)])]))],64)):$("",!0)]),a.enable?(o(),c("div",$5,[t("div",b5,[t("span",null,"Docker "+m(s.$t("\u6839\u76EE\u5F55"))+"\uFF1A",1),t("div",y5,[t("span",D5,m((D=n.value)==null?void 0:D.path),1),(v=n.value)!=null&&v.errorInfo?(o(),c("span",k5,[t("span",B5,[t("span",w5,[x(dt)]),t("div",null,[t("div",A5,[t("span",x5,m(n.value.errorInfo),1)])])])])):$("",!0)])])])):$("",!0)]}),_:1},8,["moreActions"])}}});var I5=S(S5,[["__scopeId","data-v-750b6b3e"]]);const P5=e=>(q("data-v-68b4579e"),e=e(),U(),e),V5={class:"select-editable"},M5=["value"],T5=P5(()=>t("option",{value:"useInput"},"- -\u81EA\u5B9A\u4E49- -",-1)),L5=["placeholder"],z5=V({__name:"index",props:{modelValue:{type:String,required:!0},title:{type:String,default:""},options:{type:Array,default:[]}},emits:["update:modelValue"],setup(e,{emit:u}){const n=e,a=C(""),d=C(""),F=W({get:()=>n.modelValue.valueOf(),set:i=>u("update:modelValue",i)}),p=i=>{if(i===a.value||a.value==="useInput"&&i===d.value){F.value=n.options[0].key;return}i===""||n.options.some(_=>_.key===i)?a.value=i:(d.value=i,a.value="useInput")};tu(()=>n.modelValue,i=>{p(i)}),et(()=>{const i=F.value;p(i)});const r=i=>{a.value==="useInput"?F.value=d.value:F.value=a.value},s=i=>{F.value=d.value};return(i,_)=>(o(),c("label",null,[t("div",V5,[L(t("select",{"onUpdate:modelValue":_[0]||(_[0]=f=>a.value=f),autocomplete:"off",onChange:r},[(o(!0),c(N,null,K(e.options,(f,b)=>(o(),c("option",{value:f.key,key:b},m(f.value||f.key),9,M5))),128)),T5],544),[[Et,a.value,void 0,{trim:!0}]]),a.value=="useInput"?L((o(),c("input",{key:0,type:"text","onUpdate:modelValue":_[1]||(_[1]=f=>d.value=f),required:"",placeholder:"\u8BF7\u8F93\u5165"+e.title,onChange:s},null,40,L5)),[[Y,d.value,void 0,{trim:!0}]]):$("",!0)])]))}});var kt=S(z5,[["__scopeId","data-v-68b4579e"]]);const O5={},N5={width:"14px",height:"14px",viewBox:"0 0 14 14",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"},q5=t("path",{d:"M7,0.875 C3.61757813,0.875 0.875,3.61757813 0.875,7 C0.875,10.3824219 3.61757813,13.125 7,13.125 C10.3824219,13.125 13.125,10.3824219 13.125,7 C13.125,3.61757813 10.3824219,0.875 7,0.875 Z M6.5625,4.046875 C6.5625,3.98671875 6.61171875,3.9375 6.671875,3.9375 L7.328125,3.9375 C7.38828125,3.9375 7.4375,3.98671875 7.4375,4.046875 L7.4375,7.765625 C7.4375,7.82578125 7.38828125,7.875 7.328125,7.875 L6.671875,7.875 C6.61171875,7.875 6.5625,7.82578125 6.5625,7.765625 L6.5625,4.046875 Z M7,10.0625 C6.63769531,10.0625 6.34375,9.76855469 6.34375,9.40625 C6.34375,9.04394531 6.63769531,8.75 7,8.75 C7.36230469,8.75 7.65625,9.04394531 7.65625,9.40625 C7.65625,9.76855469 7.36230469,10.0625 7,10.0625 Z",id:"\u5F62\u72B6","fill-opacity":"0.65"},null,-1),U5=[q5];function H5(e,u){return o(),c("svg",N5,U5)}var $t=S(O5,[["render",H5]]);const G=e=>(q("data-v-f4c41bf2"),e=e(),U(),e),R5={key:0,class:"action"},W5=G(()=>t("h2",{class:"title"},"\u4E0B\u8F7D\u670D\u52A1\u914D\u7F6E\u5411\u5BFC",-1)),G5={class:"load_service input_row"},Z5=G(()=>t("div",{class:"left"},[t("span",null,"\u4E0B\u8F7D\u670D\u52A1\uFF1A")],-1)),j5={class:"radios"},X5=G(()=>t("label",{for:"Aria2"},"Aria2",-1)),Q5={class:"radios"},Y5=G(()=>t("label",{for:"qB"},"qBittorrent",-1)),K5={class:"radios"},J5=G(()=>t("label",{for:"Tr"},"Transmission",-1)),t6=["onSubmit"],e6={class:"input_row"},u6={class:"left"},n6={class:"tooltip-trigger"},s6=G(()=>t("div",null,[t("div",{class:"tooltip-text tooltip-top"},[t("span",{class:"dowload_dir_tip"},"\u7528\u4E8E\u653E\u7F6E\u914D\u7F6E\u6587\u4EF6\u7684\u76EE\u5F55\u3002\u4F8B\u5982\uFF1A/mnt/sda1/Configs/aria2\uFF1B\u8BF7\u52FF\u4F7F\u7528 /tmp \u6216 /var \uFF0C\u4EE5\u514D\u91CD\u542F\u4EE5\u540E\u4EFB\u52A1\u4E22\u5931")])],-1)),o6=G(()=>t("span",null,"\u914D\u7F6E\u76EE\u5F55\uFF1A",-1)),a6={class:"myinput_wrap"},i6={class:"input_row"},l6={class:"left"},c6={class:"tooltip-trigger"},d6=G(()=>t("div",null,[t("div",{class:"tooltip-text tooltip-top"},[t("span",{class:"dowload_dir_tip"},"\u7528\u4E8E\u653E\u7F6E\u4E0B\u8F7D\u6587\u4EF6\u7684\u76EE\u5F55\u3002\u4F8B\u5982\uFF1A/mnt/sda1/download")])],-1)),r6=G(()=>t("span",null,"\u4E0B\u8F7D\u76EE\u5F55\uFF1A",-1)),_6={class:"myinput_wrap"},p6={class:"input_row"},v6={class:"left"},h6={class:"tooltip-trigger"},F6=G(()=>t("div",null,[t("div",{class:"tooltip-text tooltip-bottom"},[t("span",{class:"dowload_rpc_tip"},"\u7528\u4E8E\u8FDC\u7A0B\u8BBF\u95EE\u7684\u4EE4\u724C\u3002")])],-1)),m6=G(()=>t("span",null,"RPC \u4EE4\u724C\uFF1A",-1)),f6={class:"input_row"},E6=G(()=>t("div",{class:""},[t("span",null,"\u9644\u52A0\u7684 BT Tracker\uFF1A")],-1)),C6={class:"radios"},g6=G(()=>t("label",{for:"default"},"\u9ED8\u8BA4",-1)),$6={class:"radios"},b6=G(()=>t("label",{for:"add"},"\u81EA\u5DF1\u6DFB\u52A0",-1)),y6={class:"input_row"},D6=G(()=>t("div",{class:"left"},null,-1)),k6={class:"myinput_wrap Tracker_input"},B6=["onSubmit"],w6={class:"input_row"},A6={class:"left"},x6={class:"tooltip-trigger"},S6=G(()=>t("div",null,[t("div",{class:"tooltip-text tooltip-top"},[t("span",{class:"dowload_dir_tip"},"\u7528\u4E8E\u653E\u7F6E\u914D\u7F6E\u6587\u4EF6\u7684\u76EE\u5F55\u3002\u4F8B\u5982\uFF1A/mnt/sda1/Configs/qb\uFF1B\u8BF7\u52FF\u4F7F\u7528 /tmp \u6216 /var \uFF0C\u4EE5\u514D\u91CD\u542F\u4EE5\u540E\u4EFB\u52A1\u4E22\u5931")])],-1)),I6=G(()=>t("span",null,"\u914D\u7F6E\u76EE\u5F55\uFF1A",-1)),P6={class:"myinput_wrap"},V6={class:"input_row"},M6={class:"left"},T6={class:"tooltip-trigger"},L6=G(()=>t("div",null,[t("div",{class:"tooltip-text tooltip-top"},[t("span",{class:"dowload_dir_tip"},"\u7528\u4E8E\u653E\u7F6E\u4E0B\u8F7D\u6587\u4EF6\u7684\u76EE\u5F55\u3002\u4F8B\u5982\uFF1A/mnt/sda1/download")])],-1)),z6=G(()=>t("span",null,"\u4E0B\u8F7D\u76EE\u5F55\uFF1A",-1)),O6={class:"myinput_wrap"},N6=["onSubmit"],q6={class:"input_row"},U6={class:"left"},H6={class:"tooltip-trigger"},R6=G(()=>t("div",null,[t("div",{class:"tooltip-text tooltip-top"},[t("span",{class:"dowload_dir_tip"},"\u7528\u4E8E\u653E\u7F6E\u914D\u7F6E\u6587\u4EF6\u7684\u76EE\u5F55\u3002\u4F8B\u5982\uFF1A/mnt/sda1/Configs/tr\uFF1B\u8BF7\u52FF\u4F7F\u7528 /tmp \u6216 /var \uFF0C\u4EE5\u514D\u91CD\u542F\u4EE5\u540E\u4EFB\u52A1\u4E22\u5931")])],-1)),W6=G(()=>t("span",null,"\u914D\u7F6E\u76EE\u5F55\uFF1A",-1)),G6={class:"myinput_wrap"},Z6={class:"input_row"},j6={class:"left"},X6={class:"tooltip-trigger"},Q6=G(()=>t("div",null,[t("div",{class:"tooltip-text tooltip-top"},[t("span",{class:"dowload_dir_tip"},"\u7528\u4E8E\u653E\u7F6E\u4E0B\u8F7D\u6587\u4EF6\u7684\u76EE\u5F55\u3002\u4F8B\u5982\uFF1A/mnt/sda1/download")])],-1)),Y6=G(()=>t("span",null,"\u4E0B\u8F7D\u76EE\u5F55\uFF1A",-1)),K6={class:"myinput_wrap"},J6={class:"btns"},t0={key:1,class:"action"},e0={class:"title"},u0={class:"finished"},n0=G(()=>t("p",{class:"successed"},"\u914D\u7F6E\u6210\u529F\uFF01",-1)),s0=V({__name:"index",props:{services:{type:Object,required:!0},partitionList:{type:Array,required:!0},defaultTab:{type:String,required:!1},Close:Function},setup(e){const u=e,n=C(""),a=C(""),d=C(""),F=C(""),p=C("default"),r=C("Aria2"),s=C(""),i=C(""),_=C(""),f=C(""),b=C([]),D=C([]),v=C(0);et(()=>{var I,O,nt,xt,St,It,Pt,Vt,Mt,Tt;switch(u.defaultTab){case"aria2":r.value="Aria2";break;case"qbittorrent":r.value="qBittorrent";break;case"transmission":r.value="Transmission";break}b.value=u.partitionList.map(pt=>({key:pt})),D.value=u.partitionList.filter(pt=>pt.startsWith("/mnt/")).map(pt=>pt.replace(/(\/mnt\/[^/]+).*/,"$1")),d.value=((I=u.services.aria2)==null?void 0:I.configPath)||"";const y=((O=u.services.aria2)==null?void 0:O.downloadPath)||((nt=u.services.qbittorrent)==null?void 0:nt.downloadPath)||((xt=u.services.transmission)==null?void 0:xt.downloadPath);y&&(F.value=y);const g=(St=u.services.aria2)==null?void 0:St.rpcToken;g&&(n.value=g),s.value=((It=u.services.qbittorrent)==null?void 0:It.configPath)||"";const B=((Pt=u.services.qbittorrent)==null?void 0:Pt.downloadPath)||y||((Vt=u.services.transmission)==null?void 0:Vt.downloadPath);B&&(i.value=B),_.value=((Mt=u.services.transmission)==null?void 0:Mt.configPath)||"";const H=((Tt=u.services.transmission)==null?void 0:Tt.downloadPath)||y||B;H&&(f.value=H)});const l=()=>{let y=d.value,g=F.value;y==null||y==""||g==null||g==""||T(this,null,function*(){if(yield rt.checkAndInstallApp("app-meta-aria2","Aria2")){const H=A.Loading("\u914D\u7F6E\u4E2D...");P.Guide.Aria2Init.POST({configPath:y,downloadPath:g,rpcToken:n.value,btTracker:p.value=="add"?a.value:""}).then(I=>{var O;if(I!=null&&I.data){if((I.data.success||0)==0){v.value=1;return}else if((O=I.data)!=null&&O.error)throw I.data.error}throw"\u672A\u77E5\u9519\u8BEF"}).catch(I=>A.Error(I)).finally(()=>H.Close())}})},E=()=>{let y=s.value,g=i.value;y==null||y==""||g==null||g==""||T(this,null,function*(){if(yield rt.checkAndInstallApp("app-meta-qbittorrent","qBittorrent")){const H=A.Loading("\u914D\u7F6E\u4E2D...");P.Guide.qbitorrentInit.POST({configPath:y,downloadPath:g}).then(I=>{var O;if(I!=null&&I.data){if((I.data.success||0)==0){v.value=1;return}else if((O=I.data)!=null&&O.error)throw I.data.error}throw"\u672A\u77E5\u9519\u8BEF"}).catch(I=>A.Error(I)).finally(()=>H.Close())}})},h=()=>{let y=_.value,g=f.value;y==null||y==""||g==null||g==""||T(this,null,function*(){if(yield rt.checkAndInstallApp("app-meta-transmission","Transmission")){const H=A.Loading("\u914D\u7F6E\u4E2D...");P.Guide.transmissionInit.POST({configPath:y,downloadPath:g}).then(I=>{var O;if(I!=null&&I.data){if((I.data.success||0)==0){v.value=1;return}else if((O=I.data)!=null&&O.error)throw I.data.error}throw"\u672A\u77E5\u9519\u8BEF"}).catch(I=>A.Error(I)).finally(()=>H.Close())}})},k=y=>{y.preventDefault(),u.Close&&u.Close()},w=y=>{y.preventDefault(),location.reload()};return(y,g)=>(o(),z(ot,{Close:e.Close,type:1},{default:M(()=>[v.value==0?(o(),c("div",R5,[W5,t("ul",null,[t("li",null,[t("div",G5,[Z5,t("div",j5,[L(t("input",{type:"radio",value:"Aria2","onUpdate:modelValue":g[0]||(g[0]=B=>r.value=B),name:"download",id:"Aria2"},null,512),[[it,r.value]]),X5]),t("div",Q5,[L(t("input",{type:"radio",value:"qBittorrent","onUpdate:modelValue":g[1]||(g[1]=B=>r.value=B),name:"download",id:"qB"},null,512),[[it,r.value]]),Y5]),t("div",K5,[L(t("input",{type:"radio",value:"Transmission","onUpdate:modelValue":g[2]||(g[2]=B=>r.value=B),name:"download",id:"Tr"},null,512),[[it,r.value]]),J5])])])]),r.value=="Aria2"?(o(),c("form",{key:0,onSubmit:lt(l,["prevent"])},[t("ul",null,[t("li",null,[t("div",e6,[t("div",u6,[t("span",n6,[x($t),s6]),o6]),t("div",a6,[x(kt,{modelValue:d.value,"onUpdate:modelValue":g[3]||(g[3]=B=>d.value=B),modelModifiers:{trim:!0},title:"\u914D\u7F6E\u76EE\u5F55",options:D.value.concat("/root").map(B=>({key:B+"/Configs/aria2"}))},null,8,["modelValue","options"])])])]),t("li",null,[t("div",i6,[t("div",l6,[t("span",c6,[x($t),d6]),r6]),t("div",_6,[x(kt,{modelValue:F.value,"onUpdate:modelValue":g[4]||(g[4]=B=>F.value=B),modelModifiers:{trim:!0},title:"\u4E0B\u8F7D\u76EE\u5F55",options:b.value},null,8,["modelValue","options"])])])]),t("li",null,[t("div",p6,[t("div",v6,[t("span",h6,[x($t),F6]),m6]),L(t("input",{type:"text",class:"RPC_input",placeholder:"\u8BF7\u8F93\u5165RPC\u4EE4\u724C","onUpdate:modelValue":g[5]||(g[5]=B=>n.value=B)},null,512),[[Y,n.value,void 0,{trim:!0}]])])]),t("li",null,[t("div",f6,[E6,t("div",C6,[L(t("input",{type:"radio",value:"default",name:"BT",id:"default","onUpdate:modelValue":g[6]||(g[6]=B=>p.value=B)},null,512),[[it,p.value]]),g6]),t("div",$6,[L(t("input",{type:"radio",value:"add",name:"BT",id:"add","onUpdate:modelValue":g[7]||(g[7]=B=>p.value=B)},null,512),[[it,p.value]]),b6])])]),t("li",null,[t("div",y6,[D6,t("div",k6,[p.value=="add"?L((o(),c("textarea",{key:0,"onUpdate:modelValue":g[8]||(g[8]=B=>a.value=B),rows:"4",placeholder:"\u8BF7\u8F93\u5165BT Tracker\u670D\u52A1\u5668\u5730\u5740\uFF0C\u591A\u4E2A\u5730\u5740\u4F7F\u7528\u6362\u884C\u6216\u8005\u82F1\u6587\u9017\u53F7\u5206\u9694"},null,512)),[[Y,a.value,void 0,{trim:!0}]]):$("",!0)])])])])],40,t6)):$("",!0),r.value=="qBittorrent"?(o(),c("form",{key:1,onSubmit:lt(E,["prevent"])},[t("ul",null,[t("li",null,[t("div",w6,[t("div",A6,[t("span",x6,[x($t),S6]),I6]),t("div",P6,[x(kt,{modelValue:s.value,"onUpdate:modelValue":g[9]||(g[9]=B=>s.value=B),modelModifiers:{trim:!0},title:"\u914D\u7F6E\u76EE\u5F55",options:D.value.concat("/root").map(B=>({key:B+"/Configs/qb"}))},null,8,["modelValue","options"])])])]),t("li",null,[t("div",V6,[t("div",M6,[t("span",T6,[x($t),L6]),z6]),t("div",O6,[x(kt,{modelValue:i.value,"onUpdate:modelValue":g[10]||(g[10]=B=>i.value=B),modelModifiers:{trim:!0},title:"\u4E0B\u8F7D\u76EE\u5F55",options:b.value},null,8,["modelValue","options"])])])])])],40,B6)):$("",!0),r.value=="Transmission"?(o(),c("form",{key:2,onSubmit:lt(h,["prevent"])},[t("ul",null,[t("li",null,[t("div",q6,[t("div",U6,[t("span",H6,[x($t),R6]),W6]),t("div",G6,[x(kt,{modelValue:_.value,"onUpdate:modelValue":g[11]||(g[11]=B=>_.value=B),modelModifiers:{trim:!0},title:"\u914D\u7F6E\u76EE\u5F55",options:D.value.concat("/root").map(B=>({key:B+"/Configs/transmission"}))},null,8,["modelValue","options"])])])]),t("li",null,[t("div",Z6,[t("div",j6,[t("span",X6,[x($t),Q6]),Y6]),t("div",K6,[x(kt,{modelValue:f.value,"onUpdate:modelValue":g[12]||(g[12]=B=>f.value=B),modelModifiers:{trim:!0},title:"\u4E0B\u8F7D\u76EE\u5F55",options:b.value},null,8,["modelValue","options"])])])])])],40,N6)):$("",!0),t("div",J6,[r.value=="Aria2"?(o(),c("button",{key:0,class:"cbi-button cbi-button-apply",onClick:l}," \u542F\u7528 ")):$("",!0),r.value=="qBittorrent"?(o(),c("button",{key:1,class:"cbi-button cbi-button-apply",onClick:E}," \u542F\u7528 ")):$("",!0),r.value=="Transmission"?(o(),c("button",{key:2,class:"cbi-button cbi-button-apply",onClick:h}," \u542F\u7528 ")):$("",!0),t("button",{class:"cbi-button cbi-button-remove app-btn app-back",onClick:k}," \u53D6\u6D88 ")])])):v.value==1?(o(),c("div",t0,[t("h2",e0,m(r.value)+"\u4E0B\u8F7D\u670D\u52A1\u914D\u7F6E\u5411\u5BFC",1),t("div",u0,[x(Yt)]),n0,t("div",{class:"btns"},[t("button",{class:"cbi-button cbi-button-apply",onClick:w}," \u786E\u5B9A ")])])):$("",!0)]),_:1},8,["Close"]))}});var o0=S(s0,[["__scopeId","data-v-f4c41bf2"]]);const a0=e=>{const u=document.createElement("div");document.body.appendChild(u);const n=st(o0,ht(vt({},e),{Close:()=>{a()}}));n.mount(u);const a=()=>{n.unmount(),u.remove()};return{Close:a}};const Ut=e=>(q("data-v-63fbd04d"),e=e(),U(),e),i0={class:"service-item"},l0={class:"name"},c0=Ut(()=>t("span",null,"Aria2",-1)),d0={class:"button"},r0={class:"info"},_0=["href"],p0=["href"],v0=Ut(()=>t("span",null,[Z("\u4F7F\u7528"),t("a",{href:"https://doc.linkease.com/zh/guide/linkease_app/tutorial.html#%E8%BF%9C%E7%A8%8B%E4%B8%8B%E8%BD%BD",target:"_blank"},"\u6613\u6709\u4E91APP"),Z("\uFF0C\u968F\u65F6\u968F\u5730\u8FDC\u7A0B\u4E0B\u8F7D")],-1)),h0={key:0},F0=["href"],m0={class:"service-item"},f0={class:"name"},E0=Ut(()=>t("span",null,"qBittorrent",-1)),C0={key:0,class:"button"},g0={class:"info"},$0=["href"],b0=["href"],y0={class:"service-item"},D0={class:"name"},k0=Ut(()=>t("span",null,"Transmission",-1)),B0={key:0,class:"button"},w0={class:"info"},A0=["href"],x0=V({__name:"download",setup(e){const u=C(),n=C("aria2"),a=C(window.location),d=()=>{P.Guide.DownloadPartition.List.GET().then(s=>{var _,f;let i=[];(f=(_=s==null?void 0:s.data)==null?void 0:_.result)!=null&&f.partitionList&&(i=s.data.result.partitionList),a0({services:u.value,partitionList:i,defaultTab:n.value})})},F=()=>{P.Guide.DownloadService.Status.GET().then(s=>{var i;if((i=s==null?void 0:s.data)!=null&&i.result){const _=s.data.result;u.value=_}})},p=W(()=>{var s,i,_;if(u){let f=(s=u==null?void 0:u.aria2)==null?void 0:s.rpcToken;f&&(f=encodeURIComponent(btoa(f)));const b=encodeURIComponent(window.location.hostname);return`${window.location.origin}${(i=u==null?void 0:u.aria2)==null?void 0:i.webPath}/#!/settings/rpc/set/http/${b}/${(_=u==null?void 0:u.aria2)==null?void 0:_.rpcPort}/jsonrpc/${f}`}}),r=(s,i,_)=>T(this,null,function*(){window.open(_,"_blank")});return setTimeout(F,800),(s,i)=>(o(),z(j,{title:s.$t("\u4E0B\u8F7D\u670D\u52A1"),padding:"0 10px 8px 10px",helpLink:"https://www.linkease.com/rd/2Q28MDtf/",span:24,action:{text:s.$t("\u5FEB\u901F\u914D\u7F6E"),onClick:d}},{default:M(()=>{var _,f,b,D,v,l,E,h,k,w,y,g,B,H,I,O,nt,xt,St,It,Pt,Vt,Mt,Tt,pt,Jt,te,ee,ue,ne,se,oe,ae,ie,le,ce,de,re,_e,pe;return[t("div",i0,[t("div",l0,[t("span",null,[c0,t("span",null,m(s.$t("\u6682\u65E0\u4E0B\u8F7D")),1)]),t("div",d0,[t("span",{onClick:i[0]||(i[0]=ve=>r("app-meta-aria2","Aria2","/cgi-bin/luci/admin/services/aria2"))},m(s.$t("\u9AD8\u7EA7\u914D\u7F6E")),1)])]),t("div",r0,[t("span",null,m(s.$t("\u5F53\u524D\u72B6\u6001"))+"\uFF1A"+m(`${((f=(_=u.value)==null?void 0:_.aria2)==null?void 0:f.status)==="running"?s.$t("\u5DF2\u542F\u52A8"):s.$t("\u672A\u542F\u52A8")}`),1),((D=(b=u.value)==null?void 0:b.aria2)==null?void 0:D.status)=="running"?(o(),c(N,{key:0},[t("span",null,[Z(m(s.$t("\u4E0B\u8F7D\u76EE\u5F55"))+"\uFF1A ",1),t("a",{target:"_blank",href:"/cgi-bin/luci/admin/services/linkease/file/?path=/root"+((l=(v=u.value)==null?void 0:v.aria2)==null?void 0:l.downloadPath)},m((h=(E=u.value)==null?void 0:E.aria2)==null?void 0:h.downloadPath),9,_0)]),t("span",null,[Z(m(s.$t("\u7F51\u7EDC\u5730\u5740"))+"\uFF1A ",1),t("a",{href:`http://${a.value.hostname}${(w=(k=u.value)==null?void 0:k.aria2)==null?void 0:w.webPath}`,target:"_blank",rel:"noopener noreferrer"},m(`http://${a.value.hostname}${(g=(y=u.value)==null?void 0:y.aria2)==null?void 0:g.webPath}`),9,p0)])],64)):$("",!0),t("div",null,[v0,((H=(B=u.value)==null?void 0:B.aria2)==null?void 0:H.status)==="running"?(o(),c("span",h0,[Z(m(s.$t("\u8BA4\u8BC1\u5931\u8D25"))+"\uFF1F ",1),t("a",{href:p.value,target:"_blank",rel:"noopener noreferrer"}," \u70B9\u6B64\u81EA\u52A8\u586B\u5145\u5BC6\u94A5 ",8,F0)])):$("",!0)])])]),t("div",m0,[t("div",f0,[t("span",null,[E0,t("span",null,m(s.$t("\u6682\u65E0\u4E0B\u8F7D")),1)]),((O=(I=u.value)==null?void 0:I.qbittorrent)==null?void 0:O.status)==="running"?(o(),c("div",C0,[t("span",{onClick:i[1]||(i[1]=ve=>r("app-meta-qbittorrent","qBittorrent","/cgi-bin/luci/admin/nas/qBittorrent"))},m(s.$t("\u9AD8\u7EA7\u914D\u7F6E")),1)])):$("",!0)]),t("div",g0,[t("span",null,m(`${s.$t("\u5F53\u524D\u72B6\u6001")}\uFF1A${((xt=(nt=u.value)==null?void 0:nt.qbittorrent)==null?void 0:xt.status)==="running"?s.$t("\u5DF2\u542F\u52A8"):s.$t("\u672A\u542F\u52A8")}`),1),((It=(St=u.value)==null?void 0:St.qbittorrent)==null?void 0:It.status)=="running"?(o(),c(N,{key:0},[t("span",null,[Z(m(s.$t("\u4E0B\u8F7D\u76EE\u5F55"))+"\uFF1A ",1),t("a",{target:"_blank",href:"/cgi-bin/luci/admin/services/linkease/file/?path=/root"+((Vt=(Pt=u.value)==null?void 0:Pt.qbittorrent)==null?void 0:Vt.downloadPath)},m((Tt=(Mt=u.value)==null?void 0:Mt.qbittorrent)==null?void 0:Tt.downloadPath),9,$0)]),t("span",null,[Z(m(s.$t("\u7F51\u7EDC\u5730\u5740"))+"\uFF1A ",1),t("a",{href:`http://${a.value.hostname}${(Jt=(pt=u.value)==null?void 0:pt.qbittorrent)==null?void 0:Jt.webPath}`,target:"_blank",rel:"noopener noreferrer"},m(`http://${a.value.hostname}${(ee=(te=u.value)==null?void 0:te.qbittorrent)==null?void 0:ee.webPath}`),9,b0)])],64)):$("",!0)])]),t("div",y0,[t("div",D0,[t("span",null,[k0,t("span",null,m(s.$t("\u6682\u65E0\u4E0B\u8F7D")),1)]),((ne=(ue=u.value)==null?void 0:ue.transmission)==null?void 0:ne.status)==="running"?(o(),c("div",B0,[t("span",{onClick:i[2]||(i[2]=ve=>r("app-meta-transmission","Transmission","/cgi-bin/luci/admin/services/transmission"))},m(s.$t("\u9AD8\u7EA7\u914D\u7F6E")),1)])):$("",!0)]),t("div",w0,[t("span",null,m(`${s.$t("\u5F53\u524D\u72B6\u6001")}\uFF1A${((oe=(se=u.value)==null?void 0:se.transmission)==null?void 0:oe.status)==="running"?s.$t("\u5DF2\u542F\u52A8"):s.$t("\u672A\u542F\u52A8")}`),1),((ie=(ae=u.value)==null?void 0:ae.transmission)==null?void 0:ie.status)=="running"?(o(),c(N,{key:0},[t("span",null,m(s.$t("\u4E0B\u8F7D\u76EE\u5F55"))+"\uFF1A "+m("/cgi-bin/luci/admin/services/linkease/file/?path=/root"+((ce=(le=u.value)==null?void 0:le.transmission)==null?void 0:ce.downloadPath)),1),t("span",null,[Z(m(s.$t("\u7F51\u7EDC\u5730\u5740"))+"\uFF1Ahttp ",1),t("a",{href:`http://${a.value.hostname}${(re=(de=u.value)==null?void 0:de.transmission)==null?void 0:re.webPath}`,target:"_blank",rel:"noopener noreferrer"},m(`http://${a.value.hostname}${(pe=(_e=u.value)==null?void 0:_e.transmission)==null?void 0:pe.webPath}`),9,A0)])],64)):$("",!0)])])]}),_:1},8,["title","action"]))}});var S0=S(x0,[["__scopeId","data-v-63fbd04d"]]);const I0=V({__name:"index",setup(e){return(u,n)=>(o(),z(ft,{title:u.$t("\u670D\u52A1\u72B6\u6001"),contentStyle:"flex-flow: column"},{default:M(()=>[x(Cr),x(I5),x(S0)]),_:1},8,["title"]))}});var P0="/luci-static/istorex/file.png?v=055a0ac9",V0="/luci-static/istorex/user.png?v=fa675eea",M0="/luci-static/istorex/setting.png?v=bf214b33",T0="/luci-static/istorex/file-manage.png?v=3297497e",L0="/luci-static/istorex/sync.png?v=8384453e",z0="/luci-static/istorex/photo.png?v=3178eb60",O0="/luci-static/istorex/network.png?v=3314b340",N0="/luci-static/istorex/nas.png?v=902703f1";const Oe=e=>(q("data-v-a711c820"),e=e(),U(),e),q0={class:"container"},U0={key:0,class:"desc"},H0=Oe(()=>t("a",{href:"https://www.linkease.com/",target:"_blank"},"\u6613\u6709\u4E91\u2122 \uFE0F",-1)),R0={key:1,class:"desc"},W0=Oe(()=>t("span",null,[Z(" \u76F8\u518C\u5907\u4EFD\u529F\u80FD\u7531 "),t("a",{href:"https://www.linkease.com/",target:"_blank"},"\u6613\u6709\u4E91\u2122 \uFE0F"),Z(" \u63D0\u4F9B ")],-1)),G0=["href"],Z0=V({__name:"install-photobackup",setup(e){const u=C(""),n=C(""),a=()=>T(this,null,function*(){const p=A.Loading("\u5B89\u88C5\u4E2D...");try{if(yield rt.installApp("app-meta-ddnsto",30)){n.value="installed",A.Success("\u5B89\u88C5\u6210\u529F"),F();return}else A.Success("\u5B89\u88C5\u5931\u8D25")}finally{p.Close()}}),d=W(()=>`http://${location.hostname}:${u.value}`),F=()=>{P.Nas.Linkease.Enable.POST().then(p=>{var r,s;(r=p==null?void 0:p.data)!=null&&r.result&&(u.value=((s=p.data.result)==null?void 0:s.port)||"")})};return et(()=>T(this,null,function*(){const p=yield P.App.Check.POST({name:"linkease"});if(p!=null&&p.data){const{result:r,error:s}=p.data;r!=null&&r.status&&(n.value=r==null?void 0:r.status,r.status==="installed"&&F())}})),(p,r)=>(o(),z(Se,{title:"\u63D0\u793A",width:"572px"},{default:M(()=>[t("div",q0,[n.value==="uninstalled"?(o(),c("p",U0,[Z(" \u76F8\u518C\u5907\u4EFD\u529F\u80FD\u7531 "),H0,Z(" \u63D0\u4F9B\uFF0C\u53EF\u4EE5\u5C06\u624B\u673A\u76F8\u518C\u5907\u4EFD\u81F3\u672C\u8BBE\u5907\u4F7F\u7528\u524D\u9700\u8981\u5B89\u88C5\u6613\u6709\u4E91 ")])):$("",!0),n.value==="installed"?(o(),c("p",R0,[W0,t("span",null,"\u8BBF\u95EE\u94FE\u63A5\uFF1A"+m(d.value),1)])):$("",!0),n.value==="uninstalled"?(o(),c("button",{key:2,class:"btn",onClick:a}," \u7ACB\u5373\u5B89\u88C5 ")):$("",!0),n.value==="installed"?(o(),c("a",{key:3,class:"btn",target:"_blank",href:d.value},"\u7ACB\u5373\u8BBF\u95EE",8,G0)):$("",!0)])]),_:1}))}});var j0=S(Z0,[["__scopeId","data-v-a711c820"]]);const Ne=e=>(q("data-v-7c1d7115"),e=e(),U(),e),X0={class:"container"},Q0={key:0,class:"desc"},Y0=Ne(()=>t("a",{href:"https://www.linkease.com/",target:"_blank"},"\u6613\u6709\u4E91\u2122 \uFE0F",-1)),K0={key:1,class:"desc"},J0=Ne(()=>t("span",null,[Z(" \u6587\u4EF6\u540C\u6B65\u529F\u80FD\u7531 "),t("a",{href:"https://www.linkease.com/",target:"_blank"},"\u6613\u6709\u4E91\u2122 \uFE0F"),Z(" \u63D0\u4F9B ")],-1)),t2=["href"],e2=V({__name:"file-sync",setup(e){const u=C(""),n=C(""),a=()=>T(this,null,function*(){const p=A.Loading("\u5B89\u88C5\u4E2D...");try{if(yield rt.installApp("app-meta-ddnsto",30)){n.value="installed",A.Success("\u5B89\u88C5\u6210\u529F"),F();return}else A.Success("\u5B89\u88C5\u5931\u8D25")}finally{p.Close()}}),d=W(()=>`http://${location.hostname}:${u.value}`),F=()=>{P.Nas.Linkease.Enable.POST().then(p=>{var r,s;(r=p==null?void 0:p.data)!=null&&r.result&&(u.value=((s=p.data.result)==null?void 0:s.port)||"")})};return et(()=>T(this,null,function*(){const p=yield P.App.Check.POST({name:"linkease"});if(p!=null&&p.data){const{result:r,error:s}=p.data;r!=null&&r.status&&(n.value=r==null?void 0:r.status,r.status==="installed"&&F())}})),(p,r)=>(o(),z(Se,{title:"\u63D0\u793A",width:"572px"},{default:M(()=>[t("div",X0,[n.value==="uninstalled"?(o(),c("p",Q0,[Z(" \u6587\u4EF6\u540C\u6B65\u529F\u80FD\u7531 "),Y0,Z(" \u63D0\u4F9B\uFF0C\u53EF\u4EE5\u540C\u65F6\u76F8\u4E92\u5907\u4EFD\u591A\u53F0\u8BBE\u5907\u6587\u4EF6\u4F7F\u7528\u524D\u9700\u8981\u5B89\u88C5\u6613\u6709\u4E91 ")])):$("",!0),n.value==="installed"?(o(),c("p",K0,[J0,t("span",null,"\u8BBF\u95EE\u94FE\u63A5\uFF1A"+m(d.value),1)])):$("",!0),n.value==="uninstalled"?(o(),c("button",{key:2,class:"btn",onClick:a}," \u7ACB\u5373\u5B89\u88C5 ")):$("",!0),n.value==="installed"?(o(),c("a",{key:3,class:"btn",target:"_blank",href:d.value},"\u7ACB\u5373\u8BBF\u95EE",8,t2)):$("",!0)])]),_:1}))}});var u2=S(e2,[["__scopeId","data-v-7c1d7115"]]);class n2 extends eu{Open(u){u==="sync"&&this.openWindow(u2),u==="backup"&&this.openWindow(j0)}}const De=new n2;const At=e=>(q("data-v-719851d0"),e=e(),U(),e),s2={class:"width-60 responsive"},o2={class:"card-content"},a2=At(()=>t("div",null,[t("img",{src:P0,alt:"\u5171\u4EAB\u6587\u4EF6"})],-1)),i2=At(()=>t("div",null,[t("img",{src:V0,alt:"\u5171\u4EAB\u7528\u6237"})],-1)),l2={class:"card-content"},c2=At(()=>t("div",null,[t("img",{src:M0,alt:"\u5171\u4EAB\u8BBE\u7F6E"})],-1)),d2={class:"card-content"},r2=At(()=>t("div",null,[t("img",{src:T0,alt:"\u6587\u4EF6\u7BA1\u7406"})],-1)),_2=At(()=>t("div",null,[t("img",{src:L0,alt:"\u6587\u4EF6\u540C\u6B65"})],-1)),p2=At(()=>t("div",null,[t("img",{src:z0,alt:"\u76F8\u518C\u5907\u4EFD"})],-1)),v2={class:"width-40 responsive"},h2={class:"card-content"},F2=["alt"],m2={class:"card-content"},f2=["alt"],E2=V({__name:"index",setup(e){const u=()=>{we.OpenGuideWindow()},n=C(window.innerWidth<668),a=()=>{window.open("/cgi-bin/luci/admin/services/linkease/file","_blank")},d=()=>{n.value=window.innerWidth<668};et(()=>{window.addEventListener("resize",d)}),uu(()=>{window.removeEventListener("resize",d)});const F=()=>{A.Message("\u6682\u672A\u5F00\u653E")};return(p,r)=>(o(),c("div",null,[t("div",s2,[x(ft,{title:p.$t("\u5171\u4EAB\u529F\u80FD"),height:"140px"},{default:M(()=>[x(j,{span:8,onClick:r[0]||(r[0]=s=>R(_u).Open())},{default:M(()=>[t("div",o2,[a2,t("span",null,m(p.$t("\u5171\u4EAB\u6587\u4EF6")),1)])]),_:1}),x(j,{span:8},{default:M(()=>[t("div",{class:"card-content",onClick:r[1]||(r[1]=s=>R(pu).Open())},[i2,t("span",null,m(p.$t("\u5171\u4EAB\u7528\u6237")),1)])]),_:1}),x(j,{span:8,onClick:r[2]||(r[2]=s=>F())},{default:M(()=>[t("div",l2,[c2,t("span",null,m(p.$t("\u5171\u4EAB\u8BBE\u7F6E")),1)])]),_:1})]),_:1},8,["title"]),x(ft,{title:p.$t("\u5176\u4ED6\u529F\u80FD"),height:"140px"},{default:M(()=>[x(j,{span:8,onClick:a},{default:M(()=>[t("div",d2,[r2,t("span",null,m(p.$t("\u6587\u4EF6\u7BA1\u7406")),1)])]),_:1}),x(j,{span:8},{default:M(()=>[t("div",{class:"card-content",onClick:r[3]||(r[3]=s=>R(De).Open("sync"))},[_2,t("span",null,m(p.$t("\u6587\u4EF6\u540C\u6B65")),1)])]),_:1}),x(j,{span:8},{default:M(()=>[t("div",{class:"card-content",onClick:r[4]||(r[4]=s=>R(De).Open("backup"))},[p2,t("span",null,m(p.$t("\u76F8\u518C\u5907\u4EFD")),1)])]),_:1})]),_:1},8,["title"])]),t("div",v2,[x(ft,{height:n.value?"":"288px",title:p.$t("\u5411\u5BFC\u529F\u80FD")},{default:M(()=>[x(j,{span:12,onClick:r[5]||(r[5]=s=>R(at)({title:p.$t("\u7F51\u7EDC\u5411\u5BFC"),src:"/cgi-bin/luci/admin/quickstart/network"}))},{default:M(()=>[t("div",h2,[t("div",null,[t("img",{src:O0,alt:p.$t("\u7F51\u7EDC\u5411\u5BFC")},null,8,F2)]),t("span",null,m(p.$t("\u7F51\u7EDC\u5411\u5BFC")),1)])]),_:1}),x(j,{span:12,onClick:r[6]||(r[6]=s=>u())},{default:M(()=>[t("div",m2,[t("div",null,[t("img",{src:N0,alt:p.$t("NAS\u5411\u5BFC")},null,8,f2)]),t("span",null,m(p.$t("NAS\u5411\u5BFC")),1)])]),_:1})]),_:1},8,["height","title"])])]))}});var C2=S(E2,[["__scopeId","data-v-719851d0"]]);const g2=V({__name:"index",setup(e){const u=xe(),n=W(()=>u.portitemStyle.portitem),a=W(()=>u.portitemStyle.show),d=W(()=>({bottom:`calc(100% - ${u.portitemStyle.top}px)`,left:`${u.portitemStyle.left}px`})),F=s=>{switch(s){case"full":return"\u5168\u53CC\u5DE5";case"half":return"\u534A\u53CC\u5DE5"}},p=s=>{u.portitemStyle.show=!0},r=s=>{u.portitemStyle.show=!1};return(s,i)=>a.value?(o(),c("div",{key:0,class:"disk-item-tooltip",style:tt(d.value),onMouseenter:p,onMouseleave:r},[t("div",null,m(F(n.value.duplex)),1),t("div",null,"\u540D\u79F0\uFF1A"+m(n.value.name||"--"),1),t("div",null,"MAC\uFF1A"+m(n.value.macAddress||"--"),1),t("div",null,"\u63A5\u6536\uFF1A"+m(n.value.rx_packets||"--"),1),t("div",null,"\u53D1\u9001\uFF1A"+m(n.value.tx_packets||"--"),1)],36)):$("",!0)}});var $2=S(g2,[["__scopeId","data-v-4955cc3f"]]);const b2={class:"next-main",style:{}},y2={class:"content"},D2=V({__name:"index",setup(e){return(u,n)=>(o(),c("div",b2,[x(Ku),t("div",y2,[t("div",null,[x(nn),x(oa),x(Ua),x(w1)]),t("div",null,[x(C2),x(N1),x(I0)])]),x($2)]))}});var x2=S(D2,[["__scopeId","data-v-cbe9b60a"]]);export{x2 as default}; ================================================ FILE: luci-app-istorex/htdocs/luci-static/istorex/chunk.ff94f9f2.js ================================================ var m=(_,v,l)=>new Promise((n,r)=>{var F=i=>{try{c(l.next(i))}catch(u){r(u)}},h=i=>{try{c(l.throw(i))}catch(u){r(u)}},c=i=>i.done?n(i.value):Promise.resolve(i.value).then(F,h);c((l=l.apply(_,v)).next())});import{_ as g,d as y,j as k,v as E,i as x,o,c as a,a as e,l as d,F as A,K as S,L as B,p as b,q as N,C as w}from"./index.js?v=5b4be379";const D=_=>(b("data-v-613b66e3"),_=_(),N(),_),$={id:"page",class:"page-container"},I=D(()=>e("div",{class:"notice_info"},[e("li",null," \u52A8\u6001 DNS \uFF08DDNS\uFF09\u8BA9\u60A8\u5373\u4F7F\u5728\u6CA1\u6709\u9759\u6001 IP \u5730\u5740\u7684\u60C5\u51B5\u4E0B\uFF0C\u4ECD\u53EF\u5C06\u670D\u52A1\u5668\u8FDE\u540C\u7ED1\u5B9A\u7684\u57DF\u540D\u6620\u5C04\u81F3\u516C\u7F51\u4E0A\u3002 "),e("li",null," \u5982\u679C\u60A8\u6CA1\u6709\u516C\u7F51 IP \u8BF7\u4F7F\u7528 DDNSTO \uFF0C\u521D\u6B21\u4F7F\u7528 DDNSTO \u9700\u8981\u521D\u59CB\u5316\u914D\u7F6E ")],-1)),P={class:"text-container"},T={class:"text-container_item"},O=D(()=>e("div",{class:"text-container_item_title"},[e("span",null,"DDNSTO\uFF1A")],-1)),q={class:"text-container_item_flex"},G={class:"text-container_item_block"},j=["href"],K={key:0,class:"domain"},L={key:1,class:"domain"},V={class:"text-container_item"},z=D(()=>e("div",{class:"text-container_item_title"},[e("span",null,"myddns_ipv4\uFF1A")],-1)),H={class:"text-container_item_flex"},J={class:"text-container_item_block"},M=["href"],Q={key:1,class:"domain"},R={class:"text-container_item"},U=D(()=>e("div",{class:"text-container_item_title"},[e("span",null,"myddns_ipv6\uFF1A")],-1)),W={class:"text-container_item_flex"},X={class:"text-container_item_block"},Y=["href"],Z={key:1,class:"domain"},tt=y({__name:"index",setup(_){return m(this,null,function*(){let v,l;k({ipv4:"",ipv6:""});const n=k({ddnstoDomain:"",ipv4Domain:"",ipv6Domain:""}),r=k({install:!0,error:null}),F=()=>m(this,null,function*(){yield Promise.all([h()])}),h=()=>m(this,null,function*(){try{const t=yield w.Guide.Ddns.GET(),{result:s,error:p}=t.data;if(p)throw p;s&&(n.ddnstoDomain=s.ddnstoDomain,n.ipv4Domain=s.ipv4Domain,n.ipv6Domain=s.ipv6Domain)}catch(t){console.log(t)}});[v,l]=E(()=>F()),yield v,l();const c=x(()=>n.ddnstoDomain),i=x(()=>{const t=n.ipv4Domain;return t!=null&&t!=""&&t!="Stopped"?{url:`http://${t}`,title:t,ok:!0}:{url:`http://${t}`,title:"\u672A\u914D\u7F6E",ok:!1}}),u=x(()=>{const t=n.ipv6Domain;return t!=null&&t!=""&&t!="Stopped"?{url:`http://${t}`,title:t,ok:!0}:{url:`http://${t}`,title:"\u672A\u914D\u7F6E",ok:!1}}),C=()=>{S({domain:c.value,callback:t=>{}})},f=t=>{B({setup:t,callback:s=>{switch(t){case"ipv4":n.ipv4Domain=s.domain;break;case"ipv6":n.ipv6Domain=s.domain;break}}})};return(t,s)=>(o(),a("div",$,[I,e("div",P,[e("div",T,[O,e("div",q,[e("div",G,[r.install?(o(),a("a",{key:0,href:c.value,target:"_blank",class:"domain"},d(c.value),9,j)):(o(),a(A,{key:1},[r.error?(o(),a("a",K,d(r.error),1)):(o(),a("a",L,"\u672A\u5B89\u88C5"))],64)),e("a",{class:"setting",onClick:s[0]||(s[0]=p=>C())},"\u5FEB\u901F\u914D\u7F6E")])])]),e("div",V,[z,e("div",H,[e("div",J,[i.value.ok?(o(),a("a",{key:0,href:i.value.url,target:"_blank",class:"domain"},d(i.value.title),9,M)):(o(),a("a",Q,d(i.value.title),1)),e("a",{class:"setting",onClick:s[1]||(s[1]=p=>f("ipv4"))},"\u5FEB\u901F\u914D\u7F6E")])])]),e("div",R,[U,e("div",W,[e("div",X,[u.value.ok?(o(),a("a",{key:0,href:u.value.url,target:"_blank",class:"domain"},d(u.value.title),9,Y)):(o(),a("a",Z,d(u.value.title),1)),e("a",{class:"setting",onClick:s[2]||(s[2]=p=>f("ipv6"))},"\u5FEB\u901F\u914D\u7F6E")])])])])]))})}});var it=g(tt,[["__scopeId","data-v-613b66e3"]]);export{it as default}; ================================================ FILE: luci-app-istorex/htdocs/luci-static/istorex/chunk.ffd7724b.js ================================================ var JL=Object.defineProperty,QL=Object.defineProperties;var jL=Object.getOwnPropertyDescriptors;var Am=Object.getOwnPropertySymbols;var tI=Object.prototype.hasOwnProperty,eI=Object.prototype.propertyIsEnumerable;var Dm=(r,e,t)=>e in r?JL(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Mm=(r,e)=>{for(var t in e||(e={}))tI.call(e,t)&&Dm(r,t,e[t]);if(Am)for(var t of Am(e))eI.call(e,t)&&Dm(r,t,e[t]);return r},Lm=(r,e)=>QL(r,jL(e));var ra=(r,e,t)=>new Promise((a,n)=>{var i=l=>{try{s(t.next(l))}catch(u){n(u)}},o=l=>{try{s(t.throw(l))}catch(u){n(u)}},s=l=>l.done?a(l.value):Promise.resolve(l.value).then(i,o);s((t=t.apply(r,e)).next())});import{d as fn,r as rI,o as _t,c as It,E as pa,F as lr,a as N,g as df,l as Xt,$ as wd,e as zr,m as Ee,_ as hn,p as Si,q as xi,x as Uu,a0 as aI,a1 as nI,j as Gs,s as Ob,w as hg,V as vg,T as ar,C as Fr,W as cg,A as iI,a2 as Im,z as bd,a3 as Cd}from"./index.js?v=5b4be379";var oI="/luci-static/istorex/disk.png?v=14325490",sI="/luci-static/istorex/partition.png?v=d1e1a8fb",lI="/luci-static/istorex/folder.png?v=38e4700a";const Bb=r=>(Si("data-v-8009221e"),r=r(),xi(),r),uI=["onClick"],fI={key:0,width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},hI=Bb(()=>N("path",{d:"M14.4 4.80005L8.00002 11.2L1.60002 4.80005",stroke:"black","stroke-opacity":"0.83","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)),vI=[hI],cI={key:1,width:"10",height:"16",viewBox:"0 0 10 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},dI=Bb(()=>N("path",{d:"M1.80005 1.59998L8.20005 7.99998L1.80005 14.4",stroke:"black","stroke-opacity":"0.83","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)),pI=[dI],gI=["src"],yI={key:1,class:"empty"},mI=fn({__name:"folder-tree",props:{currPath:{type:Object,required:!0},folders:{type:Array,required:!0},onDisk:{type:Function,required:!0},context:{type:Object,required:!0}},setup(r){const e=r,t=(a,n)=>{a.folder&&(a.folder.openChildren=!a.folder.openChildren),e.onDisk(a,n)};return(a,n)=>{const i=rI("folder-tree",!0);return r.folders.length?(_t(!0),It(lr,{key:0},pa(r.folders,(o,s)=>(_t(),It("div",{key:s,class:"folder-body"},[N("div",{class:"content",onClick:l=>t({disk:r.context.disk,mount:r.context.mount,folder:o},"folder"),style:wd(o.rootPath&&r.currPath.join().includes(o.rootPath)?"background-color:#ecf5ff;":"")},[o.openChildren?(_t(),It("svg",fI,vI)):(_t(),It("svg",cI,pI)),N("img",{src:df(lI)},null,8,gI),N("span",null,Xt(o.name),1)],12,uI),o.openChildren?(_t(),It(lr,{key:0},[o.childrens?(_t(),zr(i,{key:0,currPath:r.currPath,"on-disk":r.onDisk,folders:o.childrens,context:{disk:r.context.disk,mount:r.context.mount}},null,8,["currPath","on-disk","folders","context"])):Ee("",!0)],64)):Ee("",!0)]))),128)):(_t(),It("div",yI,"\u7A7A\u76EE\u5F55"))}}});var _I=hn(mI,[["__scopeId","data-v-8009221e"]]);const yl=r=>(Si("data-v-2ec06138"),r=r(),xi(),r),SI={class:"disk-item"},xI={key:0,width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},wI=yl(()=>N("path",{d:"M14.4 4.80005L8.00002 11.2L1.60002 4.80005",stroke:"black","stroke-opacity":"0.83","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)),bI=[wI],CI={key:1,width:"10",height:"16",viewBox:"0 0 10 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},TI=yl(()=>N("path",{d:"M1.80005 1.59998L8.20005 7.99998L1.80005 14.4",stroke:"black","stroke-opacity":"0.83","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)),AI=[TI],DI={class:"disk-item_icon"},MI=["src"],LI={class:"disk-item_f"},II={class:"disk-item_venderModel"},PI={class:"disk-item_used"},RI={key:0,class:"tag",style:{color:"#3a9a50",background:"rgba(97, 216, 4, 0.2)"}},EI=yl(()=>N("div",{class:"auto"},null,-1)),kI={class:"disk-item-r"},OI={class:"disk-children"},BI=["onClick"],NI={key:0,width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},VI=yl(()=>N("path",{d:"M14.4 4.80005L8.00002 11.2L1.60002 4.80005",stroke:"black","stroke-opacity":"0.83","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)),zI=[VI],FI={key:1,width:"10",height:"16",viewBox:"0 0 10 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},GI=yl(()=>N("path",{d:"M1.80005 1.59998L8.20005 7.99998L1.80005 14.4",stroke:"black","stroke-opacity":"0.83","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)),HI=[GI],WI={class:"disk-item_icon"},$I=["src"],UI={class:"disk-children-item_f"},YI=["onClick"],ZI=fn({__name:"disk-item",props:{currPath:{type:Object,required:!0},disk:{type:Object,required:!0},onRefresh:{type:Function,required:!0},onDisk:{type:Function,required:!0}},setup(r){const e=r,t=(i,o)=>{o==="disk"&&i.disk&&(i.disk.openChildren=!i.disk.openChildren),o==="mount"&&i.mount&&(i.mount.openChildren=!i.mount.openChildren),e.onDisk({disk:i.disk,mount:i.mount,folder:null},o)},a=i=>{nI({step:"format",data:{path:i.path},callback:()=>{e.onRefresh()}})},n=()=>{};return(i,o)=>(_t(),It("ul",SI,[N("li",{class:"disk-info",onClick:o[0]||(o[0]=s=>t({disk:r.disk,mount:null},"disk")),style:wd(r.disk.path&&r.currPath.includes(r.disk.path)?"background-color:#ecf5ff;":"")},[r.disk.openChildren?(_t(),It("svg",xI,bI)):(_t(),It("svg",CI,AI)),N("div",DI,[N("img",{src:df(oI)},null,8,MI)]),N("div",LI,[N("div",null,[N("div",II,Xt(r.disk.venderModel),1),N("div",PI,Xt(r.disk.used)+"/"+Xt(r.disk.size),1)]),r.disk.isSystemRoot?(_t(),It("span",RI,"Root\u76D8")):Ee("",!0)]),EI,N("div",kI,Xt(r.disk.path),1)],4),Uu(N("div",OI,[(_t(!0),It(lr,null,pa(r.disk.childrens,s=>(_t(),It("div",null,[N("li",{class:"disk-children-item",onClick:l=>t({disk:r.disk,mount:s},"mount"),style:wd(s.mountPoint&&r.currPath.includes(s.mountPoint)?"background-color:#ecf5ff;":"")},[s.openChildren?(_t(),It("svg",NI,zI)):(_t(),It("svg",FI,HI)),N("div",WI,[N("img",{src:df(sI)},null,8,$I)]),N("div",UI,[N("div",null,[N("span",null,Xt(s.name)+"\u3010"+Xt(s.filesystem)+"\u3011"+Xt(s.mountPoint),1),N("div",null,Xt(r.disk.used)+"/"+Xt(r.disk.size),1)]),s.filesystem!=="No FileSystem"&&!s.mountPoint?(_t(),It("span",{key:0,onClick:n,class:"tag",style:{color:"#4b6fed",background:"#e3eaff"}}," \u9700\u8981\u6302\u8F7D ")):Ee("",!0),s.filesystem==="No FileSystem"&&!s.mountPoint?(_t(),It("span",{key:1,onClick:()=>a(s),class:"tag",style:{color:"#df493f",background:"#ffe3e2"}}," \u9700\u8981\u683C\u5F0F\u5316 ",8,YI)):Ee("",!0)])],12,BI),s.openChildren?(_t(),zr(_I,{key:0,currPath:r.currPath,context:{disk:r.disk,mount:s},folders:s.childrens?s.childrens:[],"on-disk":r.onDisk},null,8,["currPath","context","folders","on-disk"])):Ee("",!0)]))),256))],512),[[aI,r.disk.openChildren]])]))}});var Pm=hn(ZI,[["__scopeId","data-v-2ec06138"]]);const XI={class:"content"},qI={class:"header"},KI={class:"disk-list"},JI=fn({__name:"index",props:{close:Function,onOk:Function},setup(r){const e=r,t=()=>{e.close&&e.close()},a=()=>{e.onOk&&e.onOk(o.value),e.close&&e.close()},n=Gs({disks:[],raids:[]}),i=Gs([]),o=Ob(""),s=(u,f)=>ra(this,null,function*(){var c,d,p,g,y,m,_,S,w,x,b,C,T;const h={path:"",order:"date",orderBy:"asc",filter:"dir"};console.log("locationType",f),f==="mount"&&((c=u.mount)==null?void 0:c.mountPoint)&&(h.path="/local/root"+((d=u.mount)==null?void 0:d.mountPoint),o.value=(p=u.mount)==null?void 0:p.mountPoint,i[2]=""),f==="folder"&&((g=u.folder)==null?void 0:g.rootPath)&&(h.path="/local"+u.folder.rootPath,o.value=u.folder.rootPath),(y=u.disk)!=null&&y.path&&(i[0]=(m=u.disk)==null?void 0:m.path),(_=u.mount)!=null&&_.mountPoint&&(i[1]=(S=u.mount)==null?void 0:S.mountPoint),(w=u.folder)!=null&&w.rootPath&&(i[2]=(x=u.folder)==null?void 0:x.rootPath);const v=yield Fr.Linkease.File.List.POST(h);(b=v.data.result)!=null&&b.entries&&(f==="mount"&&u.mount&&(u.mount.childrens=(C=v.data.result)==null?void 0:C.entries),f==="folder"&&u.folder&&(u.folder.childrens=(T=v.data.result)==null?void 0:T.entries))}),l=()=>ra(this,null,function*(){const u=ar.Loading("\u52A0\u8F7D\u4E2D..."),f=yield Promise.all([Fr.Nas.Disk.Status.GET(),Fr.Raid.List.GET()]);u.Close();try{if(f[0]){const h=f[0];h!=null&&h.data.result&&(n.disks=(h==null?void 0:h.data.result.disks)||[])}if(f[1]){const h=f[1];h.data.result&&(n.raids=h.data.result.disks||[])}}catch(h){ar.Warning(h)}});return l(),(u,f)=>(_t(),zr(vg,{onHandleClose:t,title:"\u9009\u62E9\u4F4D\u7F6E",width:"572px"},{default:hg(()=>[N("div",XI,[N("div",qI,[N("div",null,[N("span",null,Xt(`\u76EE\u7684\u5730\uFF1A${o.value?o.value:"\u8BF7\u9009\u62E9"}`),1)]),N("div",{onClick:l},"\u5237\u65B0\u76EE\u5F55")]),N("div",KI,[(_t(!0),It(lr,null,pa(n.disks,h=>(_t(),zr(Pm,{currPath:i,disk:h,onDisk:s,onRefresh:l},null,8,["currPath","disk"]))),256)),(_t(!0),It(lr,null,pa(n.raids,h=>(_t(),zr(Pm,{currPath:i,disk:h,onDisk:s,onRefresh:l},null,8,["currPath","disk"]))),256))])]),N("div",{class:"dialog-footer"},[N("div",null,[N("button",{onClick:t},"\u53D6\u6D88"),N("button",{onClick:a},"\u786E\u5B9A")])])]),_:1}))}});var QI=hn(JI,[["__scopeId","data-v-0763aef7"]]);class jI extends cg{Open(e){this.openWindow(QI,e)}}const tP=new jI;const dg=r=>(Si("data-v-e79621ae"),r=r(),xi(),r),eP={class:"content"},rP={class:"form-container1"},aP=dg(()=>N("div",{class:"label-name"},[N("span",null,"\u9009\u62E9\u4F4D\u7F6E")],-1)),nP={class:"label-value"},iP=["value"],oP=dg(()=>N("div",{class:"label-name"},[N("span",null,"\u5171\u4EAB\u540D\u79F0 ")],-1)),sP={class:"label-value"},lP=dg(()=>N("div",{class:"label-name"},[N("span",null,"\u5171\u4EAB\u65B9\u5F0F")],-1)),uP={class:"label-value"},fP={class:"label-flex"},hP={class:"label-radio"},vP={class:"label-radio"},cP={class:"dialog-footer"},dP=fn({__name:"main-form",props:{context:{type:Object,required:!0}},emits:["onNext"],setup(r,{emit:e}){const t=r;console.log("form",t.context);const a=()=>{if(!t.context.path)return ar.Message("\u8BF7\u9009\u62E9\u4F4D\u7F6E");if(!t.context.name)return ar.Message("\u8BF7\u8F93\u5165\u5171\u4EAB\u540D\u79F0");if(!t.context.samba&&!t.context.webdav)return ar.Message("\u8BF7\u9009\u62E9\u5171\u4EAB\u65B9\u5F0F");e("onNext")};return(n,i)=>(_t(),It("div",eP,[N("form",rP,[N("div",null,[aP,N("div",nP,[N("input",{value:t.context.path,type:"text"},null,8,iP),N("span",{class:"button",onClick:i[0]||(i[0]=o=>n.$emit("openDisk",!0))},"\u6D4F\u89C8")])]),N("div",null,[oP,N("div",sP,[Uu(N("input",{"onUpdate:modelValue":i[1]||(i[1]=o=>t.context.name=o),type:"text"},null,512),[[iI,t.context.name,void 0,{trim:!0}]])])]),N("div",null,[lP,N("div",uP,[N("div",fP,[N("label",hP,[Uu(N("input",{type:"checkbox","onUpdate:modelValue":i[2]||(i[2]=o=>t.context.samba=o)},null,512),[[Im,t.context.samba]]),bd("Samba ")]),N("label",vP,[Uu(N("input",{type:"checkbox","onUpdate:modelValue":i[3]||(i[3]=o=>t.context.webdav=o)},null,512),[[Im,t.context.webdav]]),bd("WebDav ")])])])])]),N("div",cP,[N("div",null,[N("button",{onClick:i[4]||(i[4]=o=>n.$emit("onCancel",!1))},"\u53D6\u6D88"),N("button",{onClick:a},"\u4E0B\u4E00\u6B65")])])]))}});var pP=hn(dP,[["__scopeId","data-v-e79621ae"]]);const ml=r=>(Si("data-v-6363551b"),r=r(),xi(),r),gP=ml(()=>N("span",{class:"title"},"\u786E\u8BA4\u4FE1\u606F",-1)),yP={class:"detail"},mP=ml(()=>N("span",null,"\u5171\u4EAB\u540D\u79F0:",-1)),_P=ml(()=>N("span",null,"\u5171\u4EAB\u4F4D\u7F6E:",-1)),SP=ml(()=>N("span",null,"\u5171\u4EAB\u65B9\u5F0F:",-1)),xP=ml(()=>N("span",null,"\u5171\u4EAB\u7528\u6237:",-1)),wP={class:"dialog-footer"},bP=fn({__name:"form-confirm",props:{context:{type:Object,required:!0},mode:{type:String,required:!0}},setup(r){const e=r;return(t,a)=>(_t(),It(lr,null,[N("div",null,[N("div",null,[gP,N("div",yP,[N("div",null,[mP,N("span",null,Xt(r.context.name),1)]),N("div",null,[_P,N("span",null,Xt(r.context.path),1)]),N("div",null,[SP,N("span",null,Xt(`${r.context.samba?"Samba":""} ${r.context.webdav?"WebDav":""}`),1)]),N("div",null,[xP,(_t(!0),It(lr,null,pa(r.context.users,(n,i)=>(_t(),It("span",{key:i},Xt(`${n.userName}(${n.ro?"\u53EA\u8BFB":"\u8BFB\u5199"})${r.context.users.length-1===i?"":"\u3001"}`),1))),128))])])])]),N("div",wP,[N("div",null,[N("button",{onClick:a[0]||(a[0]=n=>t.$emit("onCancel"))},"\u4E0A\u4E00\u6B65"),N("button",{onClick:a[1]||(a[1]=n=>t.$emit("onOk"))},Xt(e.mode==="edit"?"\u7F16\u8F91":"\u521B\u5EFA"),1)])])],64))}});var CP=hn(bP,[["__scopeId","data-v-6363551b"]]);const TP=r=>(Si("data-v-26847234"),r=r(),xi(),r),AP={class:"ul-container"},DP={class:"ul-container_body"},MP={class:"page-table"},LP=TP(()=>N("thead",null,[N("tr",null,[N("th",null,"\u7528\u6237"),N("th",null,"\u8BFB\u5199"),N("th",null,"\u53EA\u8BFB"),N("th",null,"\u65E0\u6743\u9650")])],-1)),IP=["checked","onChange"],PP=["checked","onChange"],RP=["checked","onChange"],EP={class:"dialog-footer"},kP=fn({__name:"user-table",props:{context:{type:Object,required:!0}},setup(r){const e=r,t=Gs({users:e.context.users}),a=()=>ra(this,null,function*(){try{const o=yield Fr.Share.User.GET();if(o!=null&&o.data){const{result:s}=o.data;s&&(t.users=s.users.map(l=>Lm(Mm({},l),{ro:!1,rw:!0})))}}catch(o){console.log(o)}}),n=(o,s)=>{s?s==="ro"?(o.ro=!0,o.rw=!1):(o.ro=!1,o.rw=!0):(o.rw=!1,o.ro=!1)};e.context.users.length||a();function i(){Cd({callback:o=>{t.users=[...t.users,o]}})}return(o,s)=>(_t(),It(lr,null,[N("button",{class:"add-user",onClick:i},"\u65B0\u589E"),N("ul",AP,[N("div",DP,[N("table",MP,[LP,N("tbody",null,[(_t(!0),It(lr,null,pa(t.users,l=>(_t(),It("tr",null,[N("th",null,Xt(l.userName),1),N("th",null,[N("input",{type:"radio",checked:l.rw,onChange:u=>n(l,"rw")},null,40,IP)]),N("th",null,[N("input",{type:"radio",checked:l.ro,onChange:u=>n(l,"ro")},null,40,PP)]),N("th",null,[N("input",{type:"radio",checked:!l.ro&&!l.rw,onChange:u=>n(l)},null,40,RP)])]))),256))])])])]),N("div",EP,[N("div",null,[N("button",{onClick:s[0]||(s[0]=l=>o.$emit("onCancel",!1))},"\u4E0A\u4E00\u6B65"),N("button",{onClick:s[1]||(s[1]=l=>o.$emit("onOk",t.users))},"\u4E0B\u4E00\u6B65")])])],64))}});var OP=hn(kP,[["__scopeId","data-v-26847234"]]);const hh=r=>(Si("data-v-9c961df4"),r=r(),xi(),r),BP={key:0},NP={key:0,class:"no-data"},VP=hh(()=>N("span",null,"\u6682\u65F6\u8FD8\u6CA1\u6709\u4EFB\u4F55\u5171\u4EAB\u6587\u4EF6",-1)),zP={key:1,class:"list"},FP=hh(()=>N("div",{class:"img"},[N("svg",{width:"71",height:"63",viewBox:"0 0 71 63",fill:"none",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"},[N("rect",{width:"71",height:"63",fill:"url(#pattern0)"}),N("defs",null,[N("pattern",{id:"pattern0",patternContentUnits:"objectBoundingBox",width:"1",height:"1"},[N("use",{"xlink:href":"#image0_57_1478",transform:"matrix(0.00892857 0 0 0.0100624 0 -0.00311791)"})]),N("image",{id:"image0_57_1478",width:"112",height:"100","xlink:href":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHAAAABkCAYAAABep7TGAAAMP2lDQ1BJQ0MgUHJvZmlsZQAASImVVwdYU8kWnltSIbQAAlJCb4JIDSAlhBZAehFshCRAKDEGgogdXVRw7WIBG7oqotgBsSN2FsXeF0RUlHWxYEPlTQrouq98b75v7vz3nzP/OXPuzL13AFA/xRWLc1ANAHJF+ZLYkADG2OQUBukZIAMToAJwgHF5eWJWdHQEgGWw/Xt5fwsgsva6g0zrn/3/tWjyBXk8AJBoiNP4ebxciA8BgFfyxJJ8AIgy3nxqvliGYQXaEhggxAtlOEOBK2U4TYH3yW3iY9kQNwNAVuVyJRkAqF2FPKOAlwE11HohdhLxhSIA1BkQ++bmTuZDnAqxDbQRQyzTZ6b9oJPxN820IU0uN2MIK+YiL+RAYZ44hzvt/0zH/y65OdJBH1awqmZKQmNlc4Z5u5M9OVyGVSHuEaVFRkGsBfFHIV9uDzFKzZSGJijsUUNeHhvmDOhC7MTnBoZDbAhxsCgnMkLJp6ULgzkQwxWCFgrzOfEQ60G8UJAXFKe02SyZHKv0hdalS9gsJX+BK5H7lfl6JM1OYCn132QKOEp9TK0oMz4JYirEFgXCxEiI1SB2zMuOC1fajC7KZEcO2kiksbL4LSCOFYhCAhT6WEG6JDhWaV+amzc4X2xzppATqcQH8jPjQxX5wZp5XHn8cC7YVYGIlTCoI8gbGzE4F74gMEgxd+y5QJQQp9T5KM4PiFWMxaninGilPW4myAmR8WYQu+YVxCnH4on5cEEq9PF0cX50vCJOvCiLGxatiAdfBiIAGwQCBpDCmgYmgywgbO2p74F3ip5gwAUSkAEEwEHJDI5IkveI4DUOFIE/IRKAvKFxAfJeASiA/NchVnF1AOny3gL5iGzwFOJcEA5y4L1UPko05C0RPIGM8B/eubDyYLw5sMr6/z0/yH5nWJCJUDLSQY8M9UFLYhAxkBhKDCba4ga4L+6NR8CrP6zOOBP3HJzHd3vCU0Ib4THhJqGdcHeSsFjyU5RjQDvUD1bmIu3HXOBWUNMND8B9oDpUxnVxA+CAu0I/LNwPenaDLFsZtywrjJ+0/zaDH56G0o7iREEpwyj+FJufR6rZqbkNqchy/WN+FLGmDeWbPdTzs3/2D9nnwzb8Z0tsIXYQO4+dxi5ix7B6wMBOYg1YC3ZchodW1xP56hr0FiuPJxvqCP/hb/DJyjKZ51Tj1O30RdGXLyiUvaMBe7J4mkSYkZnPYMEvgoDBEfEcRzCcnZxdAJB9XxSvr7cx8u8GotvynZv3BwA+JwcGBo5+58JOArDfA27/I985Gyb8dKgAcOEITyopUHC47EKAbwl1uNP0gTEwBzZwPs7AHXgDfxAEwkAUiAfJYCKMPhOucwmYCmaAuaAElIFlYDVYDzaBrWAn2AMOgHpwDJwG58BlcBXcBPfh6ukCL0EveA/6EQQhITSEjugjJoglYo84I0zEFwlCIpBYJBlJRTIQESJFZiDzkDJkBbIe2YJUI/uRI8hp5CLShtxFOpBu5A3yGcVQVVQbNUKt0JEoE2Wh4Wg8OgHNQKegReh8dAm6Fq1Cd6N16Gn0MnoTbUdfon0YwFQwXcwUc8CYGBuLwlKwdEyCzcJKsXKsCqvFGuFzvo61Yz3YJ5yI03EG7gBXcCiegPPwKfgsfDG+Ht+J1+HN+HW8A+/FvxFoBEOCPcGLwCGMJWQQphJKCOWE7YTDhLNwL3UR3hOJRF2iNdED7sVkYhZxOnExcQNxL/EUsY3YSewjkUj6JHuSDymKxCXlk0pI60i7SSdJ10hdpI9kFbIJ2ZkcTE4hi8jF5HLyLvIJ8jXyM3I/RYNiSfGiRFH4lGmUpZRtlEbKFUoXpZ+qSbWm+lDjqVnUudS11FrqWeoD6lsVFRUzFU+VGBWhyhyVtSr7VC6odKh8UtVStVNlq45XlaouUd2hekr1rupbGo1mRfOnpdDyaUto1bQztEe0j2p0NUc1jhpfbbZahVqd2jW1V+oUdUt1lvpE9SL1cvWD6lfUezQoGlYabA2uxiyNCo0jGrc1+jTpmqM0ozRzNRdr7tK8qPlci6RlpRWkxdear7VV64xWJx2jm9PZdB59Hn0b/Sy9S5uoba3N0c7SLtPeo92q3aujpeOqk6hTqFOhc1ynXRfTtdLl6OboLtU9oHtL9/Mwo2GsYYJhi4bVDrs27IPecD1/PYFeqd5evZt6n/UZ+kH62frL9ev1HxrgBnYGMQZTDTYanDXoGa493Hs4b3jp8APD7xmihnaGsYbTDbcathj2GRkbhRiJjdYZnTHqMdY19jfOMl5lfMK424Ru4msiNFllctLkBUOHwWLkMNYymhm9poamoaZS0y2mrab9ZtZmCWbFZnvNHppTzZnm6earzJvMey1MLMZYzLCosbhnSbFkWmZarrE8b/nBytoqyWqBVb3Vc2s9a451kXWN9QMbmo2fzRSbKpsbtkRbpm227Qbbq3aonZtdpl2F3RV71N7dXmi/wb5tBGGE5wjRiKoRtx1UHVgOBQ41Dh2Ouo4RjsWO9Y6vRlqMTBm5fOT5kd+c3JxynLY53R+lNSpsVPGoxlFvnO2cec4VzjdcaC7BLrNdGlxeu9q7Clw3ut5xo7uNcVvg1uT21d3DXeJe697tYeGR6lHpcZupzYxmLmZe8CR4BnjO9jzm+cnL3Svf64DXX94O3tneu7yfj7YeLRi9bXSnj5kP12eLT7svwzfVd7Nvu5+pH9evyu+xv7k/33+7/zOWLSuLtZv1KsApQBJwOOAD24s9k30qEAsMCSwNbA3SCkoIWh/0KNgsOCO4Jrg3xC1kesipUEJoeOjy0NscIw6PU83pDfMImxnWHK4aHhe+PvxxhF2EJKJxDDombMzKMQ8iLSNFkfVRIIoTtTLqYbR19JToozHEmOiYipinsaNiZ8Sej6PHTYrbFfc+PiB+afz9BJsEaUJTonri+MTqxA9JgUkrktrHjhw7c+zlZINkYXJDCiklMWV7St+4oHGrx3WNdxtfMv7WBOsJhRMuTjSYmDPx+CT1SdxJB1MJqUmpu1K/cKO4Vdy+NE5aZVovj81bw3vJ9+ev4ncLfAQrBM/SfdJXpD/P8MlYmdGd6ZdZntkjZAvXC19nhWZtyvqQHZW9I3sgJylnby45NzX3iEhLlC1qnmw8uXBym9heXCJun+I1ZfWUXkm4ZHsekjchryFfG/7It0htpL9IOwp8CyoKPk5NnHqwULNQVNgyzW7aomnPioKLfpuOT+dNb5phOmPujI6ZrJlbZiGz0mY1zTafPX9215yQOTvnUudmz/292Kl4RfG7eUnzGucbzZ8zv/OXkF9qStRKJCW3F3gv2LQQXyhc2LrIZdG6Rd9K+aWXypzKysu+LOYtvvTrqF/X/jqwJH1J61L3pRuXEZeJlt1a7rd85wrNFUUrOleOWVm3irGqdNW71ZNWXyx3Ld+0hrpGuqZ9bcTahnUW65at+7I+c/3NioCKvZWGlYsqP2zgb7i20X9j7SajTWWbPm8Wbr6zJWRLXZVVVflW4taCrU+3JW47/xvzt+rtBtvLtn/dIdrRvjN2Z3O1R3X1LsNdS2vQGmlN9+7xu6/uCdzTUOtQu2Wv7t6yfWCfdN+L/an7bx0IP9B0kHmw9pDlocrD9MOldUjdtLre+sz69obkhrYjYUeaGr0bDx91PLrjmOmxiuM6x5eeoJ6Yf2LgZNHJvlPiUz2nM053Nk1qun9m7JkbzTHNrWfDz144F3zuzHnW+ZMXfC4cu+h18cgl5qX6y+6X61rcWg7/7vb74Vb31rorHlcarnpebWwb3Xbimt+109cDr5+7wblx+WbkzbZbCbfu3B5/u/0O/87zuzl3X98ruNd/f84DwoPShxoPyx8ZPqr6w/aPve3u7cc7AjtaHsc9vt/J63z5JO/Jl675T2lPy5+ZPKt+7vz8WHdw99UX4150vRS/7O8p+VPzz8pXNq8O/eX/V0vv2N6u15LXA28Wv9V/u+Od67umvui+R+9z3/d/KP2o/3HnJ+an85+TPj/rn/qF9GXtV9uvjd/Cvz0YyB0YEHMlXPmvAAYrmp4OwJsdANCSAaDD8xl1nOL8Jy+I4swqR+A/YcUZUV7cAaiF/+8xPfDv5jYA+7bB4xfUVx8PQDQNgHhPgLq4DNXBs5r8XCkrRHgO2Bz5NS03Dfybojhz/hD3zy2QqbqCn9t/Ae5cfEE5Hk+sAAAAbGVYSWZNTQAqAAAACAAEARoABQAAAAEAAAA+ARsABQAAAAEAAABGASgAAwAAAAEAAgAAh2kABAAAAAEAAABOAAAAAAAAAJAAAAABAAAAkAAAAAEAAqACAAQAAAABAAAAcKADAAQAAAABAAAAZAAAAAAhyIn1AAAACXBIWXMAABYlAAAWJQFJUiTwAAADjUlEQVR4Ae2czWoTURTHz51JQmxJrSDFnYgi+ARufQafwGfwZQR34kZB8AncCS50I7gptVZE/OgiVPuVzMcd762Q6MKY0PxPcm7+A4G0Mznnf3+/nExmkXFN2ISbWQKZ2eQMfkaAAo2/ESiQAo0TMB6fE0iBxgkYj88JpEDjBIzH5wRSoHECxuNzAinQOAHj8TmBFGicgPH4nEAKNE7AeHxOoHGBLWR+f/JVys/Ppfz+Upr6FNlqVDvrbErn6l1pbd0R1+6N/p/qE+gEVv1XqvKiJF8cyHD3sVT91yL1MFVvo3VBBTblodrkjVYUnjS+lGLvqdSHO/GvP3cl9xwqcJG0/GBfik/PJL6JUt6SFRilVf23Un57ET5KB8k6TFpgtFbsPZHq53Y4OVZJSkxeYOMLKXYeih/uB4HpnQ+TFxjHrj75IoPtB+KPPgaHdfxXMhv0OnCZKNUH7+T4zX1xzk2I9fc+52Z9f/9+fda7Jp3r9yTfuDWh13x2zZpwPl0XWCX+kuDfDx/2jR8+nDdne5Th+FKqH+9l+OGRyipXTqAKVfHiT+M5F79RIJ4xtAMFQvHii1MgnjG0AwVC8eKLYy8jzr6yZ//56o5f5EI6TLxcmV8iqEDX6kje25S8uyYy8zXV/BapXampCvF1rtIWKjDrrK2cvGjNtdph3RsqArHnwDh1KzR5Y2MunDZ0JhArcLwiPgMRoEAQWK2yFKhFGtSHAkFgtcpSoBZpUB8KBIHVKkuBWqRBfSgQBFarLAVqkQb1oUAQWK2yFKhFGtSHAkFgtcpSoBZpUB8KBIHVKkuBWqRBfSgQBFarLAVqkQb1oUAQWK2yFKhFGtSHAkFgtcpSoBZpUB8KBIHVKkuBWqRBfSgQBFarLAVqkQb1oUAQWK2yFKhFGtSHAkFgtcpSoBZpUB8KBIHVKkuBWqRBfSgQBFarLAVqkQb1oUAQWK2yYIHxJ/g6PzXWAjZdn3DTO9eZ7tBzHgUVmHW3xHWvhIirJdG11iVbv3FONdO9HHqXCnfhpuSXa2mOd8N9OovpEqVwVPuS5Bdvq6zEhVsvpncbWxV0y9EE+hG6HEtMOwUFGvdLgRRonIDx+JxACjROwHh8TiAFGidgPD4nkAKNEzAenxNIgcYJGI/PCaRA4wSMx+cEUqBxAsbjcwIp0DgB4/E5gRRonIDx+JxACjROwHh8TiAFGidgPD4n0LjAX3BSxpPyLY/MAAAAAElFTkSuQmCC"})])])],-1)),GP={class:"name"},HP={class:"action"},WP=["onClick"],$P=hh(()=>N("svg",{width:"34",height:"34",viewBox:"0 0 34 34",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[N("path",{d:"M18.9763 4.54325C19.1776 4.35138 19.4462 4.24614 19.7243 4.25011C20.0025 4.25408 20.2679 4.36696 20.4637 4.5645L26.2544 10.4051C26.3566 10.5081 26.4367 10.6309 26.4897 10.7661C26.5426 10.9012 26.5673 11.0458 26.5622 11.1908C26.5571 11.3359 26.5224 11.4783 26.4601 11.6095C26.3979 11.7406 26.3094 11.8575 26.2002 11.9531L12.2474 24.174C12.048 24.349 11.7902 24.443 11.5249 24.4375L6.35269 24.327C6.07478 24.3212 5.81023 24.2066 5.61577 24.008C5.42131 23.8094 5.31244 23.5425 5.3125 23.2645V18.0115C5.31247 17.8677 5.34165 17.7253 5.39827 17.5931C5.45489 17.4609 5.53776 17.3415 5.64187 17.2423L18.9763 4.54325ZM20.3862 21.6261L28.3496 21.7812C28.4892 21.784 28.6268 21.8141 28.7547 21.8701C28.8825 21.926 28.9981 22.0065 29.0949 22.1071C29.1916 22.2077 29.2676 22.3263 29.3185 22.4563C29.3693 22.5862 29.3941 22.7249 29.3914 22.8645C29.3887 23.004 29.3585 23.1416 29.3026 23.2695C29.2467 23.3974 29.1661 23.513 29.0656 23.6097C28.965 23.7064 28.8463 23.7824 28.7164 23.8333C28.5864 23.8842 28.4477 23.909 28.3082 23.9062L20.3448 23.7511C20.2052 23.7483 20.0676 23.7181 19.9398 23.6621C19.8119 23.6061 19.6964 23.5255 19.5997 23.4249C19.503 23.3243 19.4271 23.2056 19.3762 23.0756C19.3254 22.9456 19.3007 22.8069 19.3035 22.6674C19.3063 22.5278 19.3365 22.3902 19.3925 22.2624C19.4485 22.1346 19.5291 22.019 19.6297 21.9223C19.7304 21.8256 19.8491 21.7497 19.979 21.6989C20.109 21.6481 20.2477 21.6233 20.3872 21.6261H20.3862ZM19.6881 6.8L7.4375 18.4662V22.2243L11.1562 22.304L23.9498 11.0989L19.6881 6.8ZM28.2976 26.9386C28.5794 26.9365 28.8504 27.0464 29.0512 27.2442C29.2519 27.442 29.3659 27.7114 29.368 27.9932C29.3701 28.275 29.2602 28.546 29.0625 28.7468C28.8647 28.9475 28.5953 29.0615 28.3135 29.0636L7.446 29.2188C7.16421 29.2209 6.89312 29.1109 6.69237 28.9132C6.49161 28.7154 6.37764 28.446 6.37553 28.1642C6.37342 27.8824 6.48333 27.6113 6.6811 27.4106C6.87886 27.2098 7.14827 27.0959 7.43006 27.0938L28.2976 26.9386Z",fill:"black","fill-opacity":"0.8"})],-1)),UP=[$P],YP=["onClick"],ZP=hh(()=>N("svg",{width:"34",height:"34",viewBox:"0 0 34 34",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[N("path",{d:"M12.7331 30.5258C11.8785 30.5264 11.0527 30.2169 10.4091 29.6546C9.76556 29.0923 9.34796 28.3155 9.2339 27.4686L6.27084 10.719C6.24075 10.5628 6.24576 10.4019 6.28552 10.248C6.32529 10.094 6.3988 9.95078 6.50075 9.82873C6.60269 9.70667 6.7305 9.60882 6.87493 9.54227C7.01936 9.47571 7.17679 9.44212 7.3358 9.44392H26.9326C27.0917 9.44369 27.2489 9.47864 27.3929 9.54627C27.5369 9.61391 27.6642 9.71254 27.7657 9.83513C27.8688 9.9554 27.9437 10.0971 27.9851 10.25C28.0264 10.4029 28.0331 10.5631 28.0048 10.719L25.1069 27.512C24.9898 28.3532 24.5727 29.1237 23.9323 29.6815C23.2919 30.2394 22.4715 30.5469 21.6222 30.5476L12.7331 30.5258ZM8.63259 11.6101L11.3783 27.1208C11.4153 27.4559 11.5734 27.766 11.8229 27.9927C12.0723 28.2195 12.396 28.3474 12.7331 28.3524H21.5788C21.9155 28.3488 22.2391 28.2212 22.4877 27.994C22.7363 27.7668 22.8924 27.4559 22.9263 27.1208L25.672 11.5956L8.63259 11.6101Z",fill:"black","fill-opacity":"0.8"}),N("path",{d:"M14.1239 26.2153C13.8356 26.2153 13.5592 26.1008 13.3554 25.897C13.1517 25.6932 13.0372 25.4168 13.0372 25.1286C13.0372 24.8404 13.1517 24.564 13.3554 24.3602C13.5592 24.1564 13.8356 24.0419 14.1239 24.0419H19.9196C20.2078 24.0419 20.4842 24.1564 20.688 24.3602C20.8918 24.564 21.0063 24.8404 21.0063 25.1286C21.0063 25.4168 20.8918 25.6932 20.688 25.897C20.4842 26.1008 20.2078 26.2153 19.9196 26.2153H14.1239ZM6.70535 8.12542C6.41714 8.12542 6.14073 8.01093 5.93694 7.80714C5.73314 7.60334 5.61865 7.32694 5.61865 7.03873C5.61865 6.75052 5.73314 6.47411 5.93694 6.27032C6.14073 6.06652 6.41714 5.95203 6.70535 5.95203H27.2656C27.5538 5.95203 27.8303 6.06652 28.034 6.27032C28.2378 6.47411 28.3523 6.75052 28.3523 7.03873C28.3523 7.32694 28.2378 7.60334 28.034 7.80714C27.8303 8.01093 27.5538 8.12542 27.2656 8.12542H6.6981H6.70535ZM15.7539 5.64776C15.4657 5.64776 15.1893 5.53327 14.9855 5.32947C14.7817 5.12568 14.6672 4.84927 14.6672 4.56106C14.6672 4.27285 14.7817 3.99645 14.9855 3.79265C15.1893 3.58886 15.4657 3.47437 15.7539 3.47437H17.652C17.9402 3.47437 18.2166 3.58886 18.4204 3.79265C18.6242 3.99645 18.7387 4.27285 18.7387 4.56106C18.7387 4.84927 18.6242 5.12568 18.4204 5.32947C18.2166 5.53327 17.9402 5.64776 17.652 5.64776H15.7539Z",fill:"black","fill-opacity":"0.8"})],-1)),XP=[ZP],qP=fn({__name:"index",props:{close:Function},setup(r){const e=r,t=Ob(!1),n=Gs({title:"\u5171\u4EAB\u6587\u4EF6",services:[],step:0,mode:"edit",users:[],shareServiceCreateRequestParams:{name:"",path:"",webdav:!1,samba:!0,users:[]}}),i=()=>{e.close&&e.close()},o=()=>{n.step=1,n.mode="create"},s=g=>ra(this,null,function*(){confirm("\u786E\u5B9A\u5220\u9664\uFF1F")&&(yield Fr.Share.Service.DELETE(g)).data.success===0&&d()}),l=()=>{tP.Open({onOk:g=>{console.log("arr1111",g);const y=g.split("/");n.shareServiceCreateRequestParams.path=g,console.log("arr",y),n.shareServiceCreateRequestParams.name=y[y.length-1]}})},u=()=>{n.step=2,n.title="\u786E\u8BA4\u7528\u6237\u6743\u9650"},f=g=>{if(n.shareServiceCreateRequestParams.users=g,n.shareServiceCreateRequestParams.users.length===0)return ar.Message("\u8BF7\u9009\u62E9\u5171\u4EAB\u7528\u6237");n.step=3,n.title=void 0},h=()=>ra(this,null,function*(){var m,_;const g=ar.Loading("\u4FDD\u5B58\u4E2D...");n.users.forEach(S=>{(S.ro||S.rw)&&n.shareServiceCreateRequestParams.users.push(S)});let y;n.mode==="create"?y=yield Fr.Share.Service.ADD(n.shareServiceCreateRequestParams):y=yield Fr.Share.Service.UPDATE(n.shareServiceCreateRequestParams),y.data.success===0?(g.Close(),ar.Message("\u4FDD\u5B58\u6210\u529F"),c()):((m=y.data)!=null&&m.error&&ar.Message((_=y.data)==null?void 0:_.error),g.Close())}),v=()=>{n.step=n.step-1,n.title="\u5171\u4EAB\u6587\u4EF6",n.step===0&&c()},c=()=>{n.step=0,n.title="\u5171\u4EAB\u6587\u4EF6",n.shareServiceCreateRequestParams.path="",n.shareServiceCreateRequestParams.name="",n.shareServiceCreateRequestParams.samba=!1,n.shareServiceCreateRequestParams.webdav=!1,n.shareServiceCreateRequestParams.users=[],d()},d=()=>ra(this,null,function*(){try{t.value=!0;const g=ar.Loading("\u52A0\u8F7D\u4E2D..."),y=yield Fr.Share.Service.GET();if(y!=null&&y.data){const{result:m,error:_}=y.data;if(_)throw _;m&&(n.services=m.services)}g.Close(),t.value=!1}catch(g){console.log(g)}}),p=g=>{n.step=1,n.mode="edit",console.log("serviceservice",g),n.shareServiceCreateRequestParams.name=g.name,n.shareServiceCreateRequestParams.path=g.path,n.shareServiceCreateRequestParams.samba=g.samba,n.shareServiceCreateRequestParams.webdav=g.webdav,n.shareServiceCreateRequestParams.users=g.users};return d(),(g,y)=>(_t(),zr(vg,{onHandleClose:i,title:n.title,width:"572px"},{default:hg(()=>[n.step===0?(_t(),It("div",BP,[n.services.length===0&&t.value===!1?(_t(),It("div",NP,[N("div",null,[VP,N("div",{class:"btns"},[N("span",{onClick:o},"\u7ACB\u5373\u6DFB\u52A0")])])])):Ee("",!0),n.services.length!==0?(_t(),It("div",zP,[N("button",{onClick:o},"\u65B0\u589E"),(_t(!0),It(lr,null,pa(n.services,(m,_)=>(_t(),It("div",{key:_},[N("div",null,[FP,N("div",GP,[N("span",null,Xt(m.name),1),N("span",null,Xt(m.path),1),N("div",null,[N("span",null,"\u5171\u4EAB\u65B9\u5F0F: "+Xt(`${m.samba?"Samba":""} ${m.webdav?"WebDav":""}`),1),N("span",null,[bd("\u5171\u4EAB\u7528\u6237:"),(_t(!0),It(lr,null,pa(m.users.filter(S=>S.ro||S.rw),(S,w)=>(_t(),It("span",{key:w},Xt(`${S.userName}(${S.ro?"\u53EA\u8BFB":"\u8BFB\u5199"}) `),1))),128))])])]),N("div",HP,[N("span",{onClick:S=>p(m)},UP,8,WP),N("span",{onClick:S=>s({name:m.name})},XP,8,YP)])])]))),128))])):Ee("",!0)])):Ee("",!0),n.step===1?(_t(),zr(pP,{key:1,onOnNext:u,onOnCancel:v,onOpenDisk:l,context:n.shareServiceCreateRequestParams},null,8,["context"])):Ee("",!0),n.step===2?(_t(),zr(OP,{key:2,context:n.shareServiceCreateRequestParams,onOnCancel:v,onOnOk:f},null,8,["context"])):Ee("",!0),n.step===3?(_t(),zr(CP,{key:3,mode:n.mode,context:n.shareServiceCreateRequestParams,onOnCancel:v,onOnOk:h},null,8,["mode","context"])):Ee("",!0)]),_:1},8,["title"]))}});var KP=hn(qP,[["__scopeId","data-v-9c961df4"]]);class JP extends cg{Open(){this.openWindow(KP)}}const PK=new JP;const _l=r=>(Si("data-v-4a2e9fae"),r=r(),xi(),r),QP={key:0,class:"no-data"},jP=_l(()=>N("span",null,"\u6682\u65F6\u8FD8\u6CA1\u6709\u4EFB\u4F55\u5171\u4EAB\u7528\u6237",-1)),tR={class:"btns"},eR={key:1,class:"list"},rR={class:"page-table"},aR=_l(()=>N("thead",null,[N("tr",null,[N("th",null,"\u59D3\u540D"),N("th",null,"\u5BC6\u7801"),N("th",null,"\u64CD\u4F5C")])],-1)),nR=_l(()=>N("th",null,"******",-1)),iR={class:"action"},oR=["onClick"],sR=["onClick"],lR=_l(()=>N("svg",{width:"34",height:"34",viewBox:"0 0 34 34",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[N("path",{d:"M18.9763 4.54325C19.1776 4.35138 19.4462 4.24614 19.7243 4.25011C20.0025 4.25408 20.2679 4.36696 20.4637 4.5645L26.2544 10.4051C26.3566 10.5081 26.4367 10.6309 26.4897 10.7661C26.5426 10.9012 26.5673 11.0458 26.5622 11.1908C26.5571 11.3359 26.5224 11.4783 26.4601 11.6095C26.3979 11.7406 26.3094 11.8575 26.2002 11.9531L12.2474 24.174C12.048 24.349 11.7902 24.443 11.5249 24.4375L6.35269 24.327C6.07478 24.3212 5.81023 24.2066 5.61577 24.008C5.42131 23.8094 5.31244 23.5425 5.3125 23.2645V18.0115C5.31247 17.8677 5.34165 17.7253 5.39827 17.5931C5.45489 17.4609 5.53776 17.3415 5.64187 17.2423L18.9763 4.54325ZM20.3862 21.6261L28.3496 21.7812C28.4892 21.784 28.6268 21.8141 28.7547 21.8701C28.8825 21.926 28.9981 22.0065 29.0949 22.1071C29.1916 22.2077 29.2676 22.3263 29.3185 22.4563C29.3693 22.5862 29.3941 22.7249 29.3914 22.8645C29.3887 23.004 29.3585 23.1416 29.3026 23.2695C29.2467 23.3974 29.1661 23.513 29.0656 23.6097C28.965 23.7064 28.8463 23.7824 28.7164 23.8333C28.5864 23.8842 28.4477 23.909 28.3082 23.9062L20.3448 23.7511C20.2052 23.7483 20.0676 23.7181 19.9398 23.6621C19.8119 23.6061 19.6964 23.5255 19.5997 23.4249C19.503 23.3243 19.4271 23.2056 19.3762 23.0756C19.3254 22.9456 19.3007 22.8069 19.3035 22.6674C19.3063 22.5278 19.3365 22.3902 19.3925 22.2624C19.4485 22.1346 19.5291 22.019 19.6297 21.9223C19.7304 21.8256 19.8491 21.7497 19.979 21.6989C20.109 21.6481 20.2477 21.6233 20.3872 21.6261H20.3862ZM19.6881 6.8L7.4375 18.4662V22.2243L11.1562 22.304L23.9498 11.0989L19.6881 6.8ZM28.2976 26.9386C28.5794 26.9365 28.8504 27.0464 29.0512 27.2442C29.2519 27.442 29.3659 27.7114 29.368 27.9932C29.3701 28.275 29.2602 28.546 29.0625 28.7468C28.8647 28.9475 28.5953 29.0615 28.3135 29.0636L7.446 29.2188C7.16421 29.2209 6.89312 29.1109 6.69237 28.9132C6.49161 28.7154 6.37764 28.446 6.37553 28.1642C6.37342 27.8824 6.48333 27.6113 6.6811 27.4106C6.87886 27.2098 7.14827 27.0959 7.43006 27.0938L28.2976 26.9386Z",fill:"black","fill-opacity":"0.8"})],-1)),uR=[lR],fR=["onClick"],hR=_l(()=>N("svg",{width:"34",height:"34",viewBox:"0 0 34 34",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[N("path",{d:"M12.7331 30.5258C11.8785 30.5264 11.0527 30.2169 10.4091 29.6546C9.76556 29.0923 9.34796 28.3155 9.2339 27.4686L6.27084 10.719C6.24075 10.5628 6.24576 10.4019 6.28552 10.248C6.32529 10.094 6.3988 9.95078 6.50075 9.82873C6.60269 9.70667 6.7305 9.60882 6.87493 9.54227C7.01936 9.47571 7.17679 9.44212 7.3358 9.44392H26.9326C27.0917 9.44369 27.2489 9.47864 27.3929 9.54627C27.5369 9.61391 27.6642 9.71254 27.7657 9.83513C27.8688 9.9554 27.9437 10.0971 27.9851 10.25C28.0264 10.4029 28.0331 10.5631 28.0048 10.719L25.1069 27.512C24.9898 28.3532 24.5727 29.1237 23.9323 29.6815C23.2919 30.2394 22.4715 30.5469 21.6222 30.5476L12.7331 30.5258ZM8.63259 11.6101L11.3783 27.1208C11.4153 27.4559 11.5734 27.766 11.8229 27.9927C12.0723 28.2195 12.396 28.3474 12.7331 28.3524H21.5788C21.9155 28.3488 22.2391 28.2212 22.4877 27.994C22.7363 27.7668 22.8924 27.4559 22.9263 27.1208L25.672 11.5956L8.63259 11.6101Z",fill:"black","fill-opacity":"0.8"}),N("path",{d:"M14.1239 26.2153C13.8356 26.2153 13.5592 26.1008 13.3554 25.897C13.1517 25.6932 13.0372 25.4168 13.0372 25.1286C13.0372 24.8404 13.1517 24.564 13.3554 24.3602C13.5592 24.1564 13.8356 24.0419 14.1239 24.0419H19.9196C20.2078 24.0419 20.4842 24.1564 20.688 24.3602C20.8918 24.564 21.0063 24.8404 21.0063 25.1286C21.0063 25.4168 20.8918 25.6932 20.688 25.897C20.4842 26.1008 20.2078 26.2153 19.9196 26.2153H14.1239ZM6.70535 8.12542C6.41714 8.12542 6.14073 8.01093 5.93694 7.80714C5.73314 7.60334 5.61865 7.32694 5.61865 7.03873C5.61865 6.75052 5.73314 6.47411 5.93694 6.27032C6.14073 6.06652 6.41714 5.95203 6.70535 5.95203H27.2656C27.5538 5.95203 27.8303 6.06652 28.034 6.27032C28.2378 6.47411 28.3523 6.75052 28.3523 7.03873C28.3523 7.32694 28.2378 7.60334 28.034 7.80714C27.8303 8.01093 27.5538 8.12542 27.2656 8.12542H6.6981H6.70535ZM15.7539 5.64776C15.4657 5.64776 15.1893 5.53327 14.9855 5.32947C14.7817 5.12568 14.6672 4.84927 14.6672 4.56106C14.6672 4.27285 14.7817 3.99645 14.9855 3.79265C15.1893 3.58886 15.4657 3.47437 15.7539 3.47437H17.652C17.9402 3.47437 18.2166 3.58886 18.4204 3.79265C18.6242 3.99645 18.7387 4.27285 18.7387 4.56106C18.7387 4.84927 18.6242 5.12568 18.4204 5.32947C18.2166 5.53327 17.9402 5.64776 17.652 5.64776H15.7539Z",fill:"black","fill-opacity":"0.8"})],-1)),vR=[hR],cR=fn({__name:"index",props:{close:Function},setup(r){const e=r,t=Gs({loading:!1,users:[]}),a=()=>{e.close&&e.close()};function n(l=!0){Cd({callback:()=>{i()}})}const i=()=>ra(this,null,function*(){t.loading=!0;const l=ar.Loading("\u52A0\u8F7D\u4E2D...");try{const u=yield Fr.Share.User.GET();if(u!=null&&u.data){const{result:f}=u.data;f&&(t.users=f.users)}}catch(u){console.log(u)}t.loading=!1,l.Close()}),o=l=>{console.log("editUser",l),Cd({user:l,callback:()=>{i()}})},s=l=>ra(this,null,function*(){confirm("\u786E\u5B9A\u5220\u9664\uFF1F")&&(yield Fr.Share.User.DELETE(l)).data.success===0&&i()});return i(),(l,u)=>(_t(),zr(vg,{onHandleClose:a,title:"\u5171\u4EAB\u7528\u6237",width:"612px"},{default:hg(()=>[t.loading===!1&&t.users.length===0?(_t(),It("div",QP,[N("div",null,[jP,N("div",tR,[N("span",{onClick:u[0]||(u[0]=()=>n())},"\u7ACB\u5373\u6DFB\u52A0")])])])):Ee("",!0),t.loading===!1&&t.users.length!==0?(_t(),It("div",eR,[N("button",{onClick:u[1]||(u[1]=()=>n())},"\u65B0\u589E"),N("table",rR,[aR,N("tbody",null,[(_t(!0),It(lr,null,pa(t.users,f=>(_t(),It("tr",null,[N("th",null,Xt(f.userName),1),nR,N("th",iR,[N("span",{onClick:h=>df(ar).Message(f.password)},"\u67E5\u770B\u5BC6\u7801",8,oR),N("span",{onClick:h=>o(f)},uR,8,sR),N("span",{onClick:h=>s(f)},vR,8,fR)])]))),256))])])])):Ee("",!0)]),_:1}))}});var dR=hn(cR,[["__scopeId","data-v-4a2e9fae"]]);class pR extends cg{Open(){this.openWindow(dR)}}const RK=new pR;/*! ***************************************************************************** Copyright (c) Microsoft Corporation. Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ***************************************************************************** */var Td=function(r,e){return Td=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,a){t.__proto__=a}||function(t,a){for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(t[n]=a[n])},Td(r,e)};function k(r,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");Td(r,e);function t(){this.constructor=r}r.prototype=e===null?Object.create(e):(t.prototype=e.prototype,new t)}var gR=function(){function r(){this.firefox=!1,this.ie=!1,this.edge=!1,this.newEdge=!1,this.weChat=!1}return r}(),yR=function(){function r(){this.browser=new gR,this.node=!1,this.wxa=!1,this.worker=!1,this.svgSupported=!1,this.touchEventsSupported=!1,this.pointerEventsSupported=!1,this.domSupported=!1,this.transformSupported=!1,this.transform3dSupported=!1,this.hasGlobalWindow=typeof window!="undefined"}return r}(),Vn=new yR;typeof wx=="object"&&typeof wx.getSystemInfoSync=="function"?(Vn.wxa=!0,Vn.touchEventsSupported=!0):typeof document=="undefined"&&typeof self!="undefined"?Vn.worker=!0:typeof navigator=="undefined"?(Vn.node=!0,Vn.svgSupported=!0):mR(navigator.userAgent,Vn);function mR(r,e){var t=e.browser,a=r.match(/Firefox\/([\d.]+)/),n=r.match(/MSIE\s([\d.]+)/)||r.match(/Trident\/.+?rv:(([\d.]+))/),i=r.match(/Edge?\/([\d.]+)/),o=/micromessenger/i.test(r);a&&(t.firefox=!0,t.version=a[1]),n&&(t.ie=!0,t.version=n[1]),i&&(t.edge=!0,t.version=i[1],t.newEdge=+i[1].split(".")[0]>18),o&&(t.weChat=!0),e.svgSupported=typeof SVGRect!="undefined",e.touchEventsSupported="ontouchstart"in window&&!t.ie&&!t.edge,e.pointerEventsSupported="onpointerdown"in window&&(t.edge||t.ie&&+t.version>=11),e.domSupported=typeof document!="undefined";var s=document.documentElement.style;e.transform3dSupported=(t.ie&&"transition"in s||t.edge||"WebKitCSSMatrix"in window&&"m11"in new WebKitCSSMatrix||"MozPerspective"in s)&&!("OTransition"in s),e.transformSupported=e.transform3dSupported||t.ie&&+t.version>=9}var At=Vn,pg=12,Nb="sans-serif",tn=pg+"px "+Nb,_R=20,SR=100,xR="007LLmW'55;N0500LLLLLLLLLL00NNNLzWW\\\\WQb\\0FWLg\\bWb\\WQ\\WrWWQ000CL5LLFLL0LL**F*gLLLL5F0LF\\FFF5.5N";function wR(r){var e={};if(typeof JSON=="undefined")return e;for(var t=0;t=0)s=o*t.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",a[l]+":0",n[u]+":0",a[1-l]+":auto",n[1-u]+":auto",""].join("!important;"),r.appendChild(o),t.push(o)}return t}function UR(r,e,t){for(var a=t?"invTrans":"trans",n=e[a],i=e.srcCoords,o=[],s=[],l=!0,u=0;u<4;u++){var f=r[u].getBoundingClientRect(),h=2*u,v=f.left,c=f.top;o.push(v,c),l=l&&i&&v===i[h]&&c===i[h+1],s.push(r[u].offsetLeft,r[u].offsetTop)}return l&&n?n:(e.srcCoords=o,e[a]=t?Om(s,o):Om(o,s))}function $b(r){return r.nodeName.toUpperCase()==="CANVAS"}var YR=/([&<>"'])/g,ZR={"&":"&","<":"<",">":">",'"':""","'":"'"};function ke(r){return r==null?"":(r+"").replace(YR,function(e,t){return ZR[t]})}var XR=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,tv=[],qR=At.browser.firefox&&+At.browser.version.split(".")[0]<39;function Rd(r,e,t,a){return t=t||{},a?Nm(r,e,t):qR&&e.layerX!=null&&e.layerX!==e.offsetX?(t.zrX=e.layerX,t.zrY=e.layerY):e.offsetX!=null?(t.zrX=e.offsetX,t.zrY=e.offsetY):Nm(r,e,t),t}function Nm(r,e,t){if(At.domSupported&&r.getBoundingClientRect){var a=e.clientX,n=e.clientY;if($b(r)){var i=r.getBoundingClientRect();t.zrX=a-i.left,t.zrY=n-i.top;return}else if(Pd(tv,r,a,n)){t.zrX=tv[0],t.zrY=tv[1];return}}t.zrX=t.zrY=0}function wg(r){return r||window.event}function Je(r,e,t){if(e=wg(e),e.zrX!=null)return e;var a=e.type,n=a&&a.indexOf("touch")>=0;if(n){var o=a!=="touchend"?e.targetTouches[0]:e.changedTouches[0];o&&Rd(r,o,e,t)}else{Rd(r,e,e,t);var i=KR(e);e.zrDelta=i?i/120:-(e.detail||0)/3}var s=e.button;return e.which==null&&s!==void 0&&XR.test(e.type)&&(e.which=s&1?1:s&2?3:s&4?2:0),e}function KR(r){var e=r.wheelDelta;if(e)return e;var t=r.deltaX,a=r.deltaY;if(t==null||a==null)return e;var n=Math.abs(a!==0?a:t),i=a>0?-1:a<0?1:t>0?-1:1;return 3*n*i}function Ed(r,e,t,a){r.addEventListener(e,t,a)}function JR(r,e,t,a){r.removeEventListener(e,t,a)}var ya=function(r){r.preventDefault(),r.stopPropagation(),r.cancelBubble=!0};function Vm(r){return r.which===2||r.which===3}var QR=function(){function r(){this._track=[]}return r.prototype.recognize=function(e,t,a){return this._doTrack(e,t,a),this._recognize(e)},r.prototype.clear=function(){return this._track.length=0,this},r.prototype._doTrack=function(e,t,a){var n=e.touches;if(!!n){for(var i={points:[],touches:[],target:t,event:e},o=0,s=n.length;o1&&a&&a.length>1){var i=zm(a)/zm(n);!isFinite(i)&&(i=1),e.pinchScale=i;var o=jR(a);return e.pinchX=o[0],e.pinchY=o[1],{type:"pinch",target:r[0].target,event:e}}}}};function ur(){return[1,0,0,1,0,0]}function ph(r){return r[0]=1,r[1]=0,r[2]=0,r[3]=1,r[4]=0,r[5]=0,r}function bg(r,e){return r[0]=e[0],r[1]=e[1],r[2]=e[2],r[3]=e[3],r[4]=e[4],r[5]=e[5],r}function ha(r,e,t){var a=e[0]*t[0]+e[2]*t[1],n=e[1]*t[0]+e[3]*t[1],i=e[0]*t[2]+e[2]*t[3],o=e[1]*t[2]+e[3]*t[3],s=e[0]*t[4]+e[2]*t[5]+e[4],l=e[1]*t[4]+e[3]*t[5]+e[5];return r[0]=a,r[1]=n,r[2]=i,r[3]=o,r[4]=s,r[5]=l,r}function Xr(r,e,t){return r[0]=e[0],r[1]=e[1],r[2]=e[2],r[3]=e[3],r[4]=e[4]+t[0],r[5]=e[5]+t[1],r}function bi(r,e,t){var a=e[0],n=e[2],i=e[4],o=e[1],s=e[3],l=e[5],u=Math.sin(t),f=Math.cos(t);return r[0]=a*f+o*u,r[1]=-a*u+o*f,r[2]=n*f+s*u,r[3]=-n*u+f*s,r[4]=f*i+u*l,r[5]=f*l-u*i,r}function Cg(r,e,t){var a=t[0],n=t[1];return r[0]=e[0]*a,r[1]=e[1]*n,r[2]=e[2]*a,r[3]=e[3]*n,r[4]=e[4]*a,r[5]=e[5]*n,r}function bo(r,e){var t=e[0],a=e[2],n=e[4],i=e[1],o=e[3],s=e[5],l=t*o-i*a;return l?(l=1/l,r[0]=o*l,r[1]=-i*l,r[2]=-a*l,r[3]=t*l,r[4]=(a*s-o*n)*l,r[5]=(i*n-t*s)*l,r):null}function tE(r){var e=ur();return bg(e,r),e}var eE=function(){function r(e,t){this.x=e||0,this.y=t||0}return r.prototype.copy=function(e){return this.x=e.x,this.y=e.y,this},r.prototype.clone=function(){return new r(this.x,this.y)},r.prototype.set=function(e,t){return this.x=e,this.y=t,this},r.prototype.equal=function(e){return e.x===this.x&&e.y===this.y},r.prototype.add=function(e){return this.x+=e.x,this.y+=e.y,this},r.prototype.scale=function(e){this.x*=e,this.y*=e},r.prototype.scaleAndAdd=function(e,t){this.x+=e.x*t,this.y+=e.y*t},r.prototype.sub=function(e){return this.x-=e.x,this.y-=e.y,this},r.prototype.dot=function(e){return this.x*e.x+this.y*e.y},r.prototype.len=function(){return Math.sqrt(this.x*this.x+this.y*this.y)},r.prototype.lenSquare=function(){return this.x*this.x+this.y*this.y},r.prototype.normalize=function(){var e=this.len();return this.x/=e,this.y/=e,this},r.prototype.distance=function(e){var t=this.x-e.x,a=this.y-e.y;return Math.sqrt(t*t+a*a)},r.prototype.distanceSquare=function(e){var t=this.x-e.x,a=this.y-e.y;return t*t+a*a},r.prototype.negate=function(){return this.x=-this.x,this.y=-this.y,this},r.prototype.transform=function(e){if(!!e){var t=this.x,a=this.y;return this.x=e[0]*t+e[2]*a+e[4],this.y=e[1]*t+e[3]*a+e[5],this}},r.prototype.toArray=function(e){return e[0]=this.x,e[1]=this.y,e},r.prototype.fromArray=function(e){this.x=e[0],this.y=e[1]},r.set=function(e,t,a){e.x=t,e.y=a},r.copy=function(e,t){e.x=t.x,e.y=t.y},r.len=function(e){return Math.sqrt(e.x*e.x+e.y*e.y)},r.lenSquare=function(e){return e.x*e.x+e.y*e.y},r.dot=function(e,t){return e.x*t.x+e.y*t.y},r.add=function(e,t,a){e.x=t.x+a.x,e.y=t.y+a.y},r.sub=function(e,t,a){e.x=t.x-a.x,e.y=t.y-a.y},r.scale=function(e,t,a){e.x=t.x*a,e.y=t.y*a},r.scaleAndAdd=function(e,t,a,n){e.x=t.x+a.x*n,e.y=t.y+a.y*n},r.lerp=function(e,t,a,n){var i=1-n;e.x=i*t.x+n*a.x,e.y=i*t.y+n*a.y},r}(),ut=eE,Wl=Math.min,$l=Math.max,dn=new ut,pn=new ut,gn=new ut,yn=new ut,Vo=new ut,zo=new ut,rE=function(){function r(e,t,a,n){a<0&&(e=e+a,a=-a),n<0&&(t=t+n,n=-n),this.x=e,this.y=t,this.width=a,this.height=n}return r.prototype.union=function(e){var t=Wl(e.x,this.x),a=Wl(e.y,this.y);isFinite(this.x)&&isFinite(this.width)?this.width=$l(e.x+e.width,this.x+this.width)-t:this.width=e.width,isFinite(this.y)&&isFinite(this.height)?this.height=$l(e.y+e.height,this.y+this.height)-a:this.height=e.height,this.x=t,this.y=a},r.prototype.applyTransform=function(e){r.applyTransform(this,this,e)},r.prototype.calculateTransform=function(e){var t=this,a=e.width/t.width,n=e.height/t.height,i=ur();return Xr(i,i,[-t.x,-t.y]),Cg(i,i,[a,n]),Xr(i,i,[e.x,e.y]),i},r.prototype.intersect=function(e,t){if(!e)return!1;e instanceof r||(e=r.create(e));var a=this,n=a.x,i=a.x+a.width,o=a.y,s=a.y+a.height,l=e.x,u=e.x+e.width,f=e.y,h=e.y+e.height,v=!(id&&(d=_,pd&&(d=S,y=a.x&&e<=a.x+a.width&&t>=a.y&&t<=a.y+a.height},r.prototype.clone=function(){return new r(this.x,this.y,this.width,this.height)},r.prototype.copy=function(e){r.copy(this,e)},r.prototype.plain=function(){return{x:this.x,y:this.y,width:this.width,height:this.height}},r.prototype.isFinite=function(){return isFinite(this.x)&&isFinite(this.y)&&isFinite(this.width)&&isFinite(this.height)},r.prototype.isZero=function(){return this.width===0||this.height===0},r.create=function(e){return new r(e.x,e.y,e.width,e.height)},r.copy=function(e,t){e.x=t.x,e.y=t.y,e.width=t.width,e.height=t.height},r.applyTransform=function(e,t,a){if(!a){e!==t&&r.copy(e,t);return}if(a[1]<1e-5&&a[1]>-1e-5&&a[2]<1e-5&&a[2]>-1e-5){var n=a[0],i=a[3],o=a[4],s=a[5];e.x=t.x*n+o,e.y=t.y*i+s,e.width=t.width*n,e.height=t.height*i,e.width<0&&(e.x+=e.width,e.width=-e.width),e.height<0&&(e.y+=e.height,e.height=-e.height);return}dn.x=gn.x=t.x,dn.y=yn.y=t.y,pn.x=yn.x=t.x+t.width,pn.y=gn.y=t.y+t.height,dn.transform(a),yn.transform(a),pn.transform(a),gn.transform(a),e.x=Wl(dn.x,pn.x,gn.x,yn.x),e.y=Wl(dn.y,pn.y,gn.y,yn.y);var l=$l(dn.x,pn.x,gn.x,yn.x),u=$l(dn.y,pn.y,gn.y,yn.y);e.width=l-e.x,e.height=u-e.y},r}(),vt=rE,Ub="silent";function aE(r,e,t){return{type:r,event:t,target:e.target,topTarget:e.topTarget,cancelBubble:!1,offsetX:t.zrX,offsetY:t.zrY,gestureEvent:t.gestureEvent,pinchX:t.pinchX,pinchY:t.pinchY,pinchScale:t.pinchScale,wheelDelta:t.zrDelta,zrByTouch:t.zrByTouch,which:t.which,stop:nE}}function nE(){ya(this.event)}var iE=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.handler=null,t}return e.prototype.dispose=function(){},e.prototype.setCursor=function(){},e}(hr),Fo=function(){function r(e,t){this.x=e,this.y=t}return r}(),oE=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],rv=new vt(0,0,0,0),Yb=function(r){k(e,r);function e(t,a,n,i,o){var s=r.call(this)||this;return s._hovered=new Fo(0,0),s.storage=t,s.painter=a,s.painterRoot=i,s._pointerSize=o,n=n||new iE,s.proxy=null,s.setHandlerProxy(n),s._draggingMgr=new FR(s),s}return e.prototype.setHandlerProxy=function(t){this.proxy&&this.proxy.dispose(),t&&(A(oE,function(a){t.on&&t.on(a,this[a],this)},this),t.handler=this),this.proxy=t},e.prototype.mousemove=function(t){var a=t.zrX,n=t.zrY,i=Zb(this,a,n),o=this._hovered,s=o.target;s&&!s.__zr&&(o=this.findHover(o.x,o.y),s=o.target);var l=this._hovered=i?new Fo(a,n):this.findHover(a,n),u=l.target,f=this.proxy;f.setCursor&&f.setCursor(u?u.cursor:"default"),s&&u!==s&&this.dispatchToElement(o,"mouseout",t),this.dispatchToElement(l,"mousemove",t),u&&u!==s&&this.dispatchToElement(l,"mouseover",t)},e.prototype.mouseout=function(t){var a=t.zrEventControl;a!=="only_globalout"&&this.dispatchToElement(this._hovered,"mouseout",t),a!=="no_globalout"&&this.trigger("globalout",{type:"globalout",event:t})},e.prototype.resize=function(){this._hovered=new Fo(0,0)},e.prototype.dispatch=function(t,a){var n=this[t];n&&n.call(this,a)},e.prototype.dispose=function(){this.proxy.dispose(),this.storage=null,this.proxy=null,this.painter=null},e.prototype.setCursorStyle=function(t){var a=this.proxy;a.setCursor&&a.setCursor(t)},e.prototype.dispatchToElement=function(t,a,n){t=t||{};var i=t.target;if(!(i&&i.silent)){for(var o="on"+a,s=aE(a,t,n);i&&(i[o]&&(s.cancelBubble=!!i[o].call(i,s)),i.trigger(a,s),i=i.__hostTarget?i.__hostTarget:i.parent,!s.cancelBubble););s.cancelBubble||(this.trigger(a,s),this.painter&&this.painter.eachOtherLayer&&this.painter.eachOtherLayer(function(l){typeof l[o]=="function"&&l[o].call(l,s),l.trigger&&l.trigger(a,s)}))}},e.prototype.findHover=function(t,a,n){var i=this.storage.getDisplayList(),o=new Fo(t,a);if(Fm(i,o,t,a,n),this._pointerSize&&!o.target){for(var s=[],l=this._pointerSize,u=l/2,f=new vt(t-u,a-u,l,l),h=i.length-1;h>=0;h--){var v=i[h];v!==n&&!v.ignore&&!v.ignoreCoarsePointer&&(!v.parent||!v.parent.ignoreCoarsePointer)&&(rv.copy(v.getBoundingRect()),v.transform&&rv.applyTransform(v.transform),rv.intersect(f)&&s.push(v))}if(s.length)for(var c=4,d=Math.PI/12,p=Math.PI*2,g=0;g4)return;this._downPoint=null}this.dispatchToElement(i,r,e)}});function sE(r,e,t){if(r[r.rectHover?"rectContain":"contain"](e,t)){for(var a=r,n=void 0,i=!1;a;){if(a.ignoreClip&&(i=!0),!i){var o=a.getClipPath();if(o&&!o.contain(e,t))return!1;a.silent&&(n=!0)}var s=a.__hostTarget;a=s||a.parent}return n?Ub:!0}return!1}function Fm(r,e,t,a,n){for(var i=r.length-1;i>=0;i--){var o=r[i],s=void 0;if(o!==n&&!o.ignore&&(s=sE(o,t,a))&&(!e.topTarget&&(e.topTarget=o),s!==Ub)){e.target=o;break}}}function Zb(r,e,t){var a=r.painter;return e<0||e>a.getWidth()||t<0||t>a.getHeight()}var lE=Yb,Xb=32,Go=7;function uE(r){for(var e=0;r>=Xb;)e|=r&1,r>>=1;return r+e}function Gm(r,e,t,a){var n=e+1;if(n===t)return 1;if(a(r[n++],r[e])<0){for(;n=0;)n++;return n-e}function fE(r,e,t){for(t--;e>>1,n(i,r[l])<0?s=l:o=l+1;var u=a-o;switch(u){case 3:r[o+3]=r[o+2];case 2:r[o+2]=r[o+1];case 1:r[o+1]=r[o];break;default:for(;u>0;)r[o+u]=r[o+u-1],u--}r[o]=i}}function av(r,e,t,a,n,i){var o=0,s=0,l=1;if(i(r,e[t+n])>0){for(s=a-n;l0;)o=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s),o+=n,l+=n}else{for(s=n+1;ls&&(l=s);var u=o;o=n-l,l=n-u}for(o++;o>>1);i(r,e[t+f])>0?o=f+1:l=f}return l}function nv(r,e,t,a,n,i){var o=0,s=0,l=1;if(i(r,e[t+n])<0){for(s=n+1;ls&&(l=s);var u=o;o=n-l,l=n-u}else{for(s=a-n;l=0;)o=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s),o+=n,l+=n}for(o++;o>>1);i(r,e[t+f])<0?l=f:o=f+1}return l}function hE(r,e){var t=Go,a,n,i=0;r.length;var o=[];a=[],n=[];function s(c,d){a[i]=c,n[i]=d,i+=1}function l(){for(;i>1;){var c=i-2;if(c>=1&&n[c-1]<=n[c]+n[c+1]||c>=2&&n[c-2]<=n[c]+n[c-1])n[c-1]n[c+1])break;f(c)}}function u(){for(;i>1;){var c=i-2;c>0&&n[c-1]=Go||b>=Go);if(C)break;w<0&&(w=0),w+=2}if(t=w,t<1&&(t=1),d===1){for(y=0;y=0;y--)r[x+y]=r[w+y];r[S]=o[_];return}for(var b=t;;){var C=0,T=0,D=!1;do if(e(o[_],r[m])<0){if(r[S--]=r[m--],C++,T=0,--d===0){D=!0;break}}else if(r[S--]=o[_--],T++,C=0,--g===1){D=!0;break}while((C|T)=0;y--)r[x+y]=r[w+y];if(d===0){D=!0;break}}if(r[S--]=o[_--],--g===1){D=!0;break}if(T=g-av(r[m],o,0,g,g-1,e),T!==0){for(S-=T,_-=T,g-=T,x=S+1,w=_+1,y=0;y=Go||T>=Go);if(D)break;b<0&&(b=0),b+=2}if(t=b,t<1&&(t=1),g===1){for(S-=d,m-=d,x=S+1,w=m+1,y=d-1;y>=0;y--)r[x+y]=r[w+y];r[S]=o[_]}else{if(g===0)throw new Error;for(w=S-(g-1),y=0;ys&&(l=s),Hm(r,t,t+l,t+i,e),i=l}o.pushRun(t,i),o.mergeRuns(),n-=i,t+=i}while(n!==0);o.forceMergeRuns()}}var He=1,cs=2,Ji=4,Wm=!1;function iv(){Wm||(Wm=!0,console.warn("z / z2 / zlevel of displayable is invalid, which may cause unexpected errors"))}function $m(r,e){return r.zlevel===e.zlevel?r.z===e.z?r.z2-e.z2:r.z-e.z:r.zlevel-e.zlevel}var vE=function(){function r(){this._roots=[],this._displayList=[],this._displayListLen=0,this.displayableSortFunc=$m}return r.prototype.traverse=function(e,t){for(var a=0;a0&&(f.__clipPaths=[]),isNaN(f.z)&&(iv(),f.z=0),isNaN(f.z2)&&(iv(),f.z2=0),isNaN(f.zlevel)&&(iv(),f.zlevel=0),this._displayList[this._displayListLen++]=f}var h=e.getDecalElement&&e.getDecalElement();h&&this._updateAndAddDisplayable(h,t,a);var v=e.getTextGuideLine();v&&this._updateAndAddDisplayable(v,t,a);var c=e.getTextContent();c&&this._updateAndAddDisplayable(c,t,a)}},r.prototype.addRoot=function(e){e.__zr&&e.__zr.storage===this||this._roots.push(e)},r.prototype.delRoot=function(e){if(e instanceof Array){for(var t=0,a=e.length;t=0&&this._roots.splice(n,1)},r.prototype.delAllRoots=function(){this._roots=[],this._displayList=[],this._displayListLen=0},r.prototype.getRoots=function(){return this._roots},r.prototype.dispose=function(){this._displayList=null,this._roots=null},r}(),cE=vE,qb;qb=At.hasGlobalWindow&&(window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.msRequestAnimationFrame&&window.msRequestAnimationFrame.bind(window)||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame)||function(r){return setTimeout(r,16)};var kd=qb,Ku={linear:function(r){return r},quadraticIn:function(r){return r*r},quadraticOut:function(r){return r*(2-r)},quadraticInOut:function(r){return(r*=2)<1?.5*r*r:-.5*(--r*(r-2)-1)},cubicIn:function(r){return r*r*r},cubicOut:function(r){return--r*r*r+1},cubicInOut:function(r){return(r*=2)<1?.5*r*r*r:.5*((r-=2)*r*r+2)},quarticIn:function(r){return r*r*r*r},quarticOut:function(r){return 1- --r*r*r*r},quarticInOut:function(r){return(r*=2)<1?.5*r*r*r*r:-.5*((r-=2)*r*r*r-2)},quinticIn:function(r){return r*r*r*r*r},quinticOut:function(r){return--r*r*r*r*r+1},quinticInOut:function(r){return(r*=2)<1?.5*r*r*r*r*r:.5*((r-=2)*r*r*r*r+2)},sinusoidalIn:function(r){return 1-Math.cos(r*Math.PI/2)},sinusoidalOut:function(r){return Math.sin(r*Math.PI/2)},sinusoidalInOut:function(r){return .5*(1-Math.cos(Math.PI*r))},exponentialIn:function(r){return r===0?0:Math.pow(1024,r-1)},exponentialOut:function(r){return r===1?1:1-Math.pow(2,-10*r)},exponentialInOut:function(r){return r===0?0:r===1?1:(r*=2)<1?.5*Math.pow(1024,r-1):.5*(-Math.pow(2,-10*(r-1))+2)},circularIn:function(r){return 1-Math.sqrt(1-r*r)},circularOut:function(r){return Math.sqrt(1- --r*r)},circularInOut:function(r){return(r*=2)<1?-.5*(Math.sqrt(1-r*r)-1):.5*(Math.sqrt(1-(r-=2)*r)+1)},elasticIn:function(r){var e,t=.1,a=.4;return r===0?0:r===1?1:(!t||t<1?(t=1,e=a/4):e=a*Math.asin(1/t)/(2*Math.PI),-(t*Math.pow(2,10*(r-=1))*Math.sin((r-e)*(2*Math.PI)/a)))},elasticOut:function(r){var e,t=.1,a=.4;return r===0?0:r===1?1:(!t||t<1?(t=1,e=a/4):e=a*Math.asin(1/t)/(2*Math.PI),t*Math.pow(2,-10*r)*Math.sin((r-e)*(2*Math.PI)/a)+1)},elasticInOut:function(r){var e,t=.1,a=.4;return r===0?0:r===1?1:(!t||t<1?(t=1,e=a/4):e=a*Math.asin(1/t)/(2*Math.PI),(r*=2)<1?-.5*(t*Math.pow(2,10*(r-=1))*Math.sin((r-e)*(2*Math.PI)/a)):t*Math.pow(2,-10*(r-=1))*Math.sin((r-e)*(2*Math.PI)/a)*.5+1)},backIn:function(r){var e=1.70158;return r*r*((e+1)*r-e)},backOut:function(r){var e=1.70158;return--r*r*((e+1)*r+e)+1},backInOut:function(r){var e=2.5949095;return(r*=2)<1?.5*(r*r*((e+1)*r-e)):.5*((r-=2)*r*((e+1)*r+e)+2)},bounceIn:function(r){return 1-Ku.bounceOut(1-r)},bounceOut:function(r){return r<1/2.75?7.5625*r*r:r<2/2.75?7.5625*(r-=1.5/2.75)*r+.75:r<2.5/2.75?7.5625*(r-=2.25/2.75)*r+.9375:7.5625*(r-=2.625/2.75)*r+.984375},bounceInOut:function(r){return r<.5?Ku.bounceIn(r*2)*.5:Ku.bounceOut(r*2-1)*.5+.5}},Kb=Ku,Ul=Math.pow,Ka=Math.sqrt,yf=1e-8,Jb=1e-4,Um=Ka(3),Yl=1/3,Nr=wi(),er=wi(),oo=wi();function $a(r){return r>-yf&&ryf||r<-yf}function ae(r,e,t,a,n){var i=1-n;return i*i*(i*r+3*n*e)+n*n*(n*a+3*i*t)}function Ym(r,e,t,a,n){var i=1-n;return 3*(((e-r)*i+2*(t-e)*n)*i+(a-t)*n*n)}function mf(r,e,t,a,n,i){var o=a+3*(e-t)-r,s=3*(t-e*2+r),l=3*(e-r),u=r-n,f=s*s-3*o*l,h=s*l-9*o*u,v=l*l-3*s*u,c=0;if($a(f)&&$a(h))if($a(s))i[0]=0;else{var d=-l/s;d>=0&&d<=1&&(i[c++]=d)}else{var p=h*h-4*f*v;if($a(p)){var g=h/f,d=-s/o+g,y=-g/2;d>=0&&d<=1&&(i[c++]=d),y>=0&&y<=1&&(i[c++]=y)}else if(p>0){var m=Ka(p),_=f*s+1.5*o*(-h+m),S=f*s+1.5*o*(-h-m);_<0?_=-Ul(-_,Yl):_=Ul(_,Yl),S<0?S=-Ul(-S,Yl):S=Ul(S,Yl);var d=(-s-(_+S))/(3*o);d>=0&&d<=1&&(i[c++]=d)}else{var w=(2*f*s-3*o*h)/(2*Ka(f*f*f)),x=Math.acos(w)/3,b=Ka(f),C=Math.cos(x),d=(-s-2*b*C)/(3*o),y=(-s+b*(C+Um*Math.sin(x)))/(3*o),T=(-s+b*(C-Um*Math.sin(x)))/(3*o);d>=0&&d<=1&&(i[c++]=d),y>=0&&y<=1&&(i[c++]=y),T>=0&&T<=1&&(i[c++]=T)}}return c}function jb(r,e,t,a,n){var i=6*t-12*e+6*r,o=9*e+3*a-3*r-9*t,s=3*e-3*r,l=0;if($a(o)){if(Qb(i)){var u=-s/i;u>=0&&u<=1&&(n[l++]=u)}}else{var f=i*i-4*o*s;if($a(f))n[0]=-i/(2*o);else if(f>0){var h=Ka(f),u=(-i+h)/(2*o),v=(-i-h)/(2*o);u>=0&&u<=1&&(n[l++]=u),v>=0&&v<=1&&(n[l++]=v)}}return l}function en(r,e,t,a,n,i){var o=(e-r)*n+r,s=(t-e)*n+e,l=(a-t)*n+t,u=(s-o)*n+o,f=(l-s)*n+s,h=(f-u)*n+u;i[0]=r,i[1]=o,i[2]=u,i[3]=h,i[4]=h,i[5]=f,i[6]=l,i[7]=a}function t2(r,e,t,a,n,i,o,s,l,u,f){var h,v=.005,c=1/0,d,p,g,y;Nr[0]=l,Nr[1]=u;for(var m=0;m<1;m+=.05)er[0]=ae(r,t,n,o,m),er[1]=ae(e,a,i,s,m),g=ai(Nr,er),g=0&&g=0&&u<=1&&(n[l++]=u)}}else{var f=o*o-4*i*s;if($a(f)){var u=-o/(2*i);u>=0&&u<=1&&(n[l++]=u)}else if(f>0){var h=Ka(f),u=(-o+h)/(2*i),v=(-o-h)/(2*i);u>=0&&u<=1&&(n[l++]=u),v>=0&&v<=1&&(n[l++]=v)}}return l}function e2(r,e,t){var a=r+t-2*e;return a===0?.5:(r-e)/a}function $s(r,e,t,a,n){var i=(e-r)*a+r,o=(t-e)*a+e,s=(o-i)*a+i;n[0]=r,n[1]=i,n[2]=s,n[3]=s,n[4]=o,n[5]=t}function r2(r,e,t,a,n,i,o,s,l){var u,f=.005,h=1/0;Nr[0]=o,Nr[1]=s;for(var v=0;v<1;v+=.05){er[0]=se(r,t,n,v),er[1]=se(e,a,i,v);var c=ai(Nr,er);c=0&&c=1?1:mf(0,a,i,1,l,s)&&ae(0,n,o,1,s[0])}}}var mE=function(){function r(e){this._inited=!1,this._startTime=0,this._pausedTime=0,this._paused=!1,this._life=e.life||1e3,this._delay=e.delay||0,this.loop=e.loop||!1,this.onframe=e.onframe||Kt,this.ondestroy=e.ondestroy||Kt,this.onrestart=e.onrestart||Kt,e.easing&&this.setEasing(e.easing)}return r.prototype.step=function(e,t){if(this._inited||(this._startTime=e+this._delay,this._inited=!0),this._paused){this._pausedTime+=t;return}var a=this._life,n=e-this._startTime-this._pausedTime,i=n/a;i<0&&(i=0),i=Math.min(i,1);var o=this.easingFunc,s=o?o(i):i;if(this.onframe(s),i===1)if(this.loop){var l=n%a;this._startTime=e-l,this._pausedTime=0,this.onrestart()}else return!0;return!1},r.prototype.pause=function(){this._paused=!0},r.prototype.resume=function(){this._paused=!1},r.prototype.setEasing=function(e){this.easing=e,this.easingFunc=J(e)?e:Kb[e]||Tg(e)},r}(),_E=mE,a2=function(){function r(e){this.value=e}return r}(),SE=function(){function r(){this._len=0}return r.prototype.insert=function(e){var t=new a2(e);return this.insertEntry(t),t},r.prototype.insertEntry=function(e){this.head?(this.tail.next=e,e.prev=this.tail,e.next=null,this.tail=e):this.head=this.tail=e,this._len++},r.prototype.remove=function(e){var t=e.prev,a=e.next;t?t.next=a:this.head=a,a?a.prev=t:this.tail=t,e.next=e.prev=null,this._len--},r.prototype.len=function(){return this._len},r.prototype.clear=function(){this.head=this.tail=null,this._len=0},r}(),xE=function(){function r(e){this._list=new SE,this._maxSize=10,this._map={},this._maxSize=e}return r.prototype.put=function(e,t){var a=this._list,n=this._map,i=null;if(n[e]==null){var o=a.len(),s=this._lastRemovedEntry;if(o>=this._maxSize&&o>0){var l=a.head;a.remove(l),delete n[l.key],i=l.value,this._lastRemovedEntry=l}s?s.value=t:s=new a2(t),s.key=e,a.insertEntry(s),n[e]=s}return i},r.prototype.get=function(e){var t=this._map[e],a=this._list;if(t!=null)return t!==a.tail&&(a.remove(t),a.insertEntry(t)),t.value},r.prototype.clear=function(){this._list.clear(),this._map={}},r.prototype.len=function(){return this._list.len()},r}(),Sl=xE,Zm={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 br(r){return r=Math.round(r),r<0?0:r>255?255:r}function wE(r){return r=Math.round(r),r<0?0:r>360?360:r}function Us(r){return r<0?0:r>1?1:r}function ov(r){var e=r;return e.length&&e.charAt(e.length-1)==="%"?br(parseFloat(e)/100*255):br(parseInt(e,10))}function ni(r){var e=r;return e.length&&e.charAt(e.length-1)==="%"?Us(parseFloat(e)/100):Us(parseFloat(e))}function sv(r,e,t){return t<0?t+=1:t>1&&(t-=1),t*6<1?r+(e-r)*t*6:t*2<1?e:t*3<2?r+(e-r)*(2/3-t)*6:r}function Ua(r,e,t){return r+(e-r)*t}function Ke(r,e,t,a,n){return r[0]=e,r[1]=t,r[2]=a,r[3]=n,r}function Bd(r,e){return r[0]=e[0],r[1]=e[1],r[2]=e[2],r[3]=e[3],r}var n2=new Sl(20),Zl=null;function Pi(r,e){Zl&&Bd(Zl,e),Zl=n2.put(r,Zl||e.slice())}function We(r,e){if(!!r){e=e||[];var t=n2.get(r);if(t)return Bd(e,t);r=r+"";var a=r.replace(/ /g,"").toLowerCase();if(a in Zm)return Bd(e,Zm[a]),Pi(r,e),e;var n=a.length;if(a.charAt(0)==="#"){if(n===4||n===5){var i=parseInt(a.slice(1,4),16);if(!(i>=0&&i<=4095)){Ke(e,0,0,0,1);return}return Ke(e,(i&3840)>>4|(i&3840)>>8,i&240|(i&240)>>4,i&15|(i&15)<<4,n===5?parseInt(a.slice(4),16)/15:1),Pi(r,e),e}else if(n===7||n===9){var i=parseInt(a.slice(1,7),16);if(!(i>=0&&i<=16777215)){Ke(e,0,0,0,1);return}return Ke(e,(i&16711680)>>16,(i&65280)>>8,i&255,n===9?parseInt(a.slice(7),16)/255:1),Pi(r,e),e}return}var o=a.indexOf("("),s=a.indexOf(")");if(o!==-1&&s+1===n){var l=a.substr(0,o),u=a.substr(o+1,s-(o+1)).split(","),f=1;switch(l){case"rgba":if(u.length!==4)return u.length===3?Ke(e,+u[0],+u[1],+u[2],1):Ke(e,0,0,0,1);f=ni(u.pop());case"rgb":if(u.length>=3)return Ke(e,ov(u[0]),ov(u[1]),ov(u[2]),u.length===3?f:ni(u[3])),Pi(r,e),e;Ke(e,0,0,0,1);return;case"hsla":if(u.length!==4){Ke(e,0,0,0,1);return}return u[3]=ni(u[3]),Nd(u,e),Pi(r,e),e;case"hsl":if(u.length!==3){Ke(e,0,0,0,1);return}return Nd(u,e),Pi(r,e),e;default:return}}Ke(e,0,0,0,1)}}function Nd(r,e){var t=(parseFloat(r[0])%360+360)%360/360,a=ni(r[1]),n=ni(r[2]),i=n<=.5?n*(a+1):n+a-n*a,o=n*2-i;return e=e||[],Ke(e,br(sv(o,i,t+1/3)*255),br(sv(o,i,t)*255),br(sv(o,i,t-1/3)*255),1),r.length===4&&(e[3]=r[3]),e}function bE(r){if(!!r){var e=r[0]/255,t=r[1]/255,a=r[2]/255,n=Math.min(e,t,a),i=Math.max(e,t,a),o=i-n,s=(i+n)/2,l,u;if(o===0)l=0,u=0;else{s<.5?u=o/(i+n):u=o/(2-i-n);var f=((i-e)/6+o/2)/o,h=((i-t)/6+o/2)/o,v=((i-a)/6+o/2)/o;e===i?l=v-h:t===i?l=1/3+f-v:a===i&&(l=2/3+h-f),l<0&&(l+=1),l>1&&(l-=1)}var c=[l*360,u,s];return r[3]!=null&&c.push(r[3]),c}}function Vd(r,e){var t=We(r);if(t){for(var a=0;a<3;a++)e<0?t[a]=t[a]*(1-e)|0:t[a]=(255-t[a])*e+t[a]|0,t[a]>255?t[a]=255:t[a]<0&&(t[a]=0);return va(t,t.length===4?"rgba":"rgb")}}function lv(r,e,t){if(!(!(e&&e.length)||!(r>=0&&r<=1))){t=t||[];var a=r*(e.length-1),n=Math.floor(a),i=Math.ceil(a),o=e[n],s=e[i],l=a-n;return t[0]=br(Ua(o[0],s[0],l)),t[1]=br(Ua(o[1],s[1],l)),t[2]=br(Ua(o[2],s[2],l)),t[3]=Us(Ua(o[3],s[3],l)),t}}function CE(r,e,t){if(!(!(e&&e.length)||!(r>=0&&r<=1))){var a=r*(e.length-1),n=Math.floor(a),i=Math.ceil(a),o=We(e[n]),s=We(e[i]),l=a-n,u=va([br(Ua(o[0],s[0],l)),br(Ua(o[1],s[1],l)),br(Ua(o[2],s[2],l)),Us(Ua(o[3],s[3],l))],"rgba");return t?{color:u,leftIndex:n,rightIndex:i,value:a}:u}}function As(r,e,t,a){var n=We(r);if(r)return n=bE(n),e!=null&&(n[0]=wE(e)),t!=null&&(n[1]=ni(t)),a!=null&&(n[2]=ni(a)),va(Nd(n),"rgba")}function _f(r,e){var t=We(r);if(t&&e!=null)return t[3]=Us(e),va(t,"rgba")}function va(r,e){if(!(!r||!r.length)){var t=r[0]+","+r[1]+","+r[2];return(e==="rgba"||e==="hsva"||e==="hsla")&&(t+=","+r[3]),e+"("+t+")"}}function Sf(r,e){var t=We(r);return t?(.299*t[0]+.587*t[1]+.114*t[2])*t[3]/255+(1-t[3])*e:0}var xf=Math.round;function Ys(r){var e;if(!r||r==="transparent")r="none";else if(typeof r=="string"&&r.indexOf("rgba")>-1){var t=We(r);t&&(r="rgb("+t[0]+","+t[1]+","+t[2]+")",e=t[3])}return{color:r,opacity:e==null?1:e}}var Xm=1e-4;function Ya(r){return r-Xm}function Xl(r){return xf(r*1e3)/1e3}function zd(r){return xf(r*1e4)/1e4}function TE(r){return"matrix("+Xl(r[0])+","+Xl(r[1])+","+Xl(r[2])+","+Xl(r[3])+","+zd(r[4])+","+zd(r[5])+")"}var AE={left:"start",right:"end",center:"middle",middle:"middle"};function DE(r,e,t){return t==="top"?r+=e/2:t==="bottom"&&(r-=e/2),r}function ME(r){return r&&(r.shadowBlur||r.shadowOffsetX||r.shadowOffsetY)}function LE(r){var e=r.style,t=r.getGlobalScale();return[e.shadowColor,(e.shadowBlur||0).toFixed(2),(e.shadowOffsetX||0).toFixed(2),(e.shadowOffsetY||0).toFixed(2),t[0],t[1]].join(",")}function i2(r){return r&&!!r.image}function IE(r){return r&&!!r.svgElement}function Ag(r){return i2(r)||IE(r)}function o2(r){return r.type==="linear"}function s2(r){return r.type==="radial"}function l2(r){return r&&(r.type==="linear"||r.type==="radial")}function gh(r){return"url(#"+r+")"}function u2(r){var e=r.getGlobalScale(),t=Math.max(e[0],e[1]);return Math.max(Math.ceil(Math.log(t)/Math.log(10)),1)}function f2(r){var e=r.x||0,t=r.y||0,a=(r.rotation||0)*Yu,n=ft(r.scaleX,1),i=ft(r.scaleY,1),o=r.skewX||0,s=r.skewY||0,l=[];return(e||t)&&l.push("translate("+e+"px,"+t+"px)"),a&&l.push("rotate("+a+")"),(n!==1||i!==1)&&l.push("scale("+n+","+i+")"),(o||s)&&l.push("skew("+xf(o*Yu)+"deg, "+xf(s*Yu)+"deg)"),l.join(" ")}var PE=function(){return At.hasGlobalWindow&&J(window.btoa)?function(r){return window.btoa(unescape(encodeURIComponent(r)))}:typeof Buffer!="undefined"?function(r){return Buffer.from(r).toString("base64")}:function(r){return null}}(),Fd=Array.prototype.slice;function oa(r,e,t){return(e-r)*t+r}function uv(r,e,t,a){for(var n=e.length,i=0;ia?e:r,i=Math.min(t,a),o=n[i-1]||{color:[0,0,0,0],offset:0},s=i;so;if(s)a.length=o;else for(var l=i;l=1},r.prototype.getAdditiveTrack=function(){return this._additiveTrack},r.prototype.addKeyframe=function(e,t,a){this._needsSort=!0;var n=this.keyframes,i=n.length,o=!1,s=Km,l=t;if(Se(t)){var u=OE(t);s=u,(u===1&&!Mt(t[0])||u===2&&!Mt(t[0][0]))&&(o=!0)}else if(Mt(t)&&!Ws(t))s=Kl;else if(U(t))if(!isNaN(+t))s=Kl;else{var f=We(t);f&&(l=f,s=ds)}else if(ch(t)){var h=V({},l);h.colorStops=G(t.colorStops,function(c){return{offset:c.offset,color:We(c.color)}}),o2(t)?s=Gd:s2(t)&&(s=Hd),l=h}i===0?this.valType=s:(s!==this.valType||s===Km)&&(o=!0),this.discrete=this.discrete||o;var v={time:e,value:l,rawValue:t,percent:0};return a&&(v.easing=a,v.easingFunc=J(a)?a:Kb[a]||Tg(a)),n.push(v),v},r.prototype.prepare=function(e,t){var a=this.keyframes;this._needsSort&&a.sort(function(p,g){return p.time-g.time});for(var n=this.valType,i=a.length,o=a[i-1],s=this.discrete,l=Jl(n),u=Jm(n),f=0;f=0&&!(o[f].percent<=t);f--);f=v(f,s-2)}else{for(f=h;ft);f++);f=v(f-1,s-2)}d=o[f+1],c=o[f]}if(!!(c&&d)){this._lastFr=f,this._lastFrP=t;var g=d.percent-c.percent,y=g===0?1:v((t-c.percent)/g,1);d.easingFunc&&(y=d.easingFunc(y));var m=a?this._additiveValue:u?Ho:e[l];if((Jl(i)||u)&&!m&&(m=this._additiveValue=[]),this.discrete)e[l]=y<1?c.rawValue:d.rawValue;else if(Jl(i))i===Qu?uv(m,c[n],d[n],y):RE(m,c[n],d[n],y);else if(Jm(i)){var _=c[n],S=d[n],w=i===Gd;e[l]={type:w?"linear":"radial",x:oa(_.x,S.x,y),y:oa(_.y,S.y,y),colorStops:G(_.colorStops,function(b,C){var T=S.colorStops[C];return{offset:oa(b.offset,T.offset,y),color:Ju(uv([],b.color,T.color,y))}}),global:S.global},w?(e[l].x2=oa(_.x2,S.x2,y),e[l].y2=oa(_.y2,S.y2,y)):e[l].r=oa(_.r,S.r,y)}else if(u)uv(m,c[n],d[n],y),a||(e[l]=Ju(m));else{var x=oa(c[n],d[n],y);a?this._additiveValue=x:e[l]=x}a&&this._addToTarget(e)}}},r.prototype._addToTarget=function(e){var t=this.valType,a=this.propName,n=this._additiveValue;t===Kl?e[a]=e[a]+n:t===ds?(We(e[a],Ho),ql(Ho,Ho,n,1),e[a]=Ju(Ho)):t===Qu?ql(e[a],e[a],n,1):t===h2&&qm(e[a],e[a],n,1)},r}(),Dg=function(){function r(e,t,a,n){if(this._tracks={},this._trackKeys=[],this._maxTime=0,this._started=0,this._clip=null,this._target=e,this._loop=t,t&&n){mg("Can' use additive animation on looped animation.");return}this._additiveAnimators=n,this._allowDiscrete=a}return r.prototype.getMaxTime=function(){return this._maxTime},r.prototype.getDelay=function(){return this._delay},r.prototype.getLoop=function(){return this._loop},r.prototype.getTarget=function(){return this._target},r.prototype.changeTarget=function(e){this._target=e},r.prototype.when=function(e,t,a){return this.whenWithKeys(e,t,St(t),a)},r.prototype.whenWithKeys=function(e,t,a,n){for(var i=this._tracks,o=0;o0&&l.addKeyframe(0,Ds(u),n),this._trackKeys.push(s)}l.addKeyframe(e,Ds(t[s]),n)}return this._maxTime=Math.max(this._maxTime,e),this},r.prototype.pause=function(){this._clip.pause(),this._paused=!0},r.prototype.resume=function(){this._clip.resume(),this._paused=!1},r.prototype.isPaused=function(){return!!this._paused},r.prototype.duration=function(e){return this._maxTime=e,this._force=!0,this},r.prototype._doneCallback=function(){this._setTracksFinished(),this._clip=null;var e=this._doneCbs;if(e)for(var t=e.length,a=0;a0)){this._started=1;for(var t=this,a=[],n=this._maxTime||0,i=0;i1){var s=o.pop();i.addKeyframe(s.time,e[n]),i.prepare(this._maxTime,i.getAdditiveTrack())}}}},r}();function ro(){return new Date().getTime()}var NE=function(r){k(e,r);function e(t){var a=r.call(this)||this;return a._running=!1,a._time=0,a._pausedTime=0,a._pauseStart=0,a._paused=!1,t=t||{},a.stage=t.stage||{},a}return e.prototype.addClip=function(t){t.animation&&this.removeClip(t),this._head?(this._tail.next=t,t.prev=this._tail,t.next=null,this._tail=t):this._head=this._tail=t,t.animation=this},e.prototype.addAnimator=function(t){t.animation=this;var a=t.getClip();a&&this.addClip(a)},e.prototype.removeClip=function(t){if(!!t.animation){var a=t.prev,n=t.next;a?a.next=n:this._head=n,n?n.prev=a:this._tail=a,t.next=t.prev=t.animation=null}},e.prototype.removeAnimator=function(t){var a=t.getClip();a&&this.removeClip(a),t.animation=null},e.prototype.update=function(t){for(var a=ro()-this._pausedTime,n=a-this._time,i=this._head;i;){var o=i.next,s=i.step(a,n);s&&(i.ondestroy(),this.removeClip(i)),i=o}this._time=a,t||(this.trigger("frame",n),this.stage.update&&this.stage.update())},e.prototype._startLoop=function(){var t=this;this._running=!0;function a(){t._running&&(kd(a),!t._paused&&t.update())}kd(a)},e.prototype.start=function(){this._running||(this._time=ro(),this._pausedTime=0,this._startLoop())},e.prototype.stop=function(){this._running=!1},e.prototype.pause=function(){this._paused||(this._pauseStart=ro(),this._paused=!0)},e.prototype.resume=function(){this._paused&&(this._pausedTime+=ro()-this._pauseStart,this._paused=!1)},e.prototype.clear=function(){for(var t=this._head;t;){var a=t.next;t.prev=t.next=t.animation=null,t=a}this._head=this._tail=null},e.prototype.isFinished=function(){return this._head==null},e.prototype.animate=function(t,a){a=a||{},this.start();var n=new Dg(t,a.loop);return this.addAnimator(n),n},e}(hr),VE=NE,zE=300,fv=At.domSupported,hv=function(){var r=["click","dblclick","mousewheel","wheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],e=["touchstart","touchend","touchmove"],t={pointerdown:1,pointerup:1,pointermove:1,pointerout:1},a=G(r,function(n){var i=n.replace("mouse","pointer");return t.hasOwnProperty(i)?i:n});return{mouse:r,touch:e,pointer:a}}(),Qm={mouse:["mousemove","mouseup"],pointer:["pointermove","pointerup"]},jm=!1;function Wd(r){var e=r.pointerType;return e==="pen"||e==="touch"}function FE(r){r.touching=!0,r.touchTimer!=null&&(clearTimeout(r.touchTimer),r.touchTimer=null),r.touchTimer=setTimeout(function(){r.touching=!1,r.touchTimer=null},700)}function vv(r){r&&(r.zrByTouch=!0)}function GE(r,e){return Je(r.dom,new HE(r,e),!0)}function v2(r,e){for(var t=e,a=!1;t&&t.nodeType!==9&&!(a=t.domBelongToZr||t!==e&&t===r.painterRoot);)t=t.parentNode;return a}var HE=function(){function r(e,t){this.stopPropagation=Kt,this.stopImmediatePropagation=Kt,this.preventDefault=Kt,this.type=t.type,this.target=this.currentTarget=e.dom,this.pointerType=t.pointerType,this.clientX=t.clientX,this.clientY=t.clientY}return r}(),yr={mousedown:function(r){r=Je(this.dom,r),this.__mayPointerCapture=[r.zrX,r.zrY],this.trigger("mousedown",r)},mousemove:function(r){r=Je(this.dom,r);var e=this.__mayPointerCapture;e&&(r.zrX!==e[0]||r.zrY!==e[1])&&this.__togglePointerCapture(!0),this.trigger("mousemove",r)},mouseup:function(r){r=Je(this.dom,r),this.__togglePointerCapture(!1),this.trigger("mouseup",r)},mouseout:function(r){r=Je(this.dom,r);var e=r.toElement||r.relatedTarget;v2(this,e)||(this.__pointerCapturing&&(r.zrEventControl="no_globalout"),this.trigger("mouseout",r))},wheel:function(r){jm=!0,r=Je(this.dom,r),this.trigger("mousewheel",r)},mousewheel:function(r){jm||(r=Je(this.dom,r),this.trigger("mousewheel",r))},touchstart:function(r){r=Je(this.dom,r),vv(r),this.__lastTouchMoment=new Date,this.handler.processGesture(r,"start"),yr.mousemove.call(this,r),yr.mousedown.call(this,r)},touchmove:function(r){r=Je(this.dom,r),vv(r),this.handler.processGesture(r,"change"),yr.mousemove.call(this,r)},touchend:function(r){r=Je(this.dom,r),vv(r),this.handler.processGesture(r,"end"),yr.mouseup.call(this,r),+new Date-+this.__lastTouchMomentr0||r<-r0}var _n=[],Ri=[],dv=ur(),pv=Math.abs,XE=function(){function r(){}return r.prototype.getLocalTransform=function(e){return r.getLocalTransform(this,e)},r.prototype.setPosition=function(e){this.x=e[0],this.y=e[1]},r.prototype.setScale=function(e){this.scaleX=e[0],this.scaleY=e[1]},r.prototype.setSkew=function(e){this.skewX=e[0],this.skewY=e[1]},r.prototype.setOrigin=function(e){this.originX=e[0],this.originY=e[1]},r.prototype.needLocalTransform=function(){return mn(this.rotation)||mn(this.x)||mn(this.y)||mn(this.scaleX-1)||mn(this.scaleY-1)||mn(this.skewX)||mn(this.skewY)},r.prototype.updateTransform=function(){var e=this.parent&&this.parent.transform,t=this.needLocalTransform(),a=this.transform;if(!(t||e)){a&&(e0(a),this.invTransform=null);return}a=a||ur(),t?this.getLocalTransform(a):e0(a),e&&(t?ha(a,e,a):bg(a,e)),this.transform=a,this._resolveGlobalScaleRatio(a)},r.prototype._resolveGlobalScaleRatio=function(e){var t=this.globalScaleRatio;if(t!=null&&t!==1){this.getGlobalScale(_n);var a=_n[0]<0?-1:1,n=_n[1]<0?-1:1,i=((_n[0]-a)*t+a)/_n[0]||0,o=((_n[1]-n)*t+n)/_n[1]||0;e[0]*=i,e[1]*=i,e[2]*=o,e[3]*=o}this.invTransform=this.invTransform||ur(),bo(this.invTransform,e)},r.prototype.getComputedTransform=function(){for(var e=this,t=[];e;)t.push(e),e=e.parent;for(;e=t.pop();)e.updateTransform();return this.transform},r.prototype.setLocalTransform=function(e){if(!!e){var t=e[0]*e[0]+e[1]*e[1],a=e[2]*e[2]+e[3]*e[3],n=Math.atan2(e[1],e[0]),i=Math.PI/2+n-Math.atan2(e[3],e[2]);a=Math.sqrt(a)*Math.cos(i),t=Math.sqrt(t),this.skewX=i,this.skewY=0,this.rotation=-n,this.x=+e[4],this.y=+e[5],this.scaleX=t,this.scaleY=a,this.originX=0,this.originY=0}},r.prototype.decomposeTransform=function(){if(!!this.transform){var e=this.parent,t=this.transform;e&&e.transform&&(ha(Ri,e.invTransform,t),t=Ri);var a=this.originX,n=this.originY;(a||n)&&(dv[4]=a,dv[5]=n,ha(Ri,t,dv),Ri[4]-=a,Ri[5]-=n,t=Ri),this.setLocalTransform(t)}},r.prototype.getGlobalScale=function(e){var t=this.transform;return e=e||[],t?(e[0]=Math.sqrt(t[0]*t[0]+t[1]*t[1]),e[1]=Math.sqrt(t[2]*t[2]+t[3]*t[3]),t[0]<0&&(e[0]=-e[0]),t[3]<0&&(e[1]=-e[1]),e):(e[0]=1,e[1]=1,e)},r.prototype.transformCoordToLocal=function(e,t){var a=[e,t],n=this.invTransform;return n&&he(a,a,n),a},r.prototype.transformCoordToGlobal=function(e,t){var a=[e,t],n=this.transform;return n&&he(a,a,n),a},r.prototype.getLineScale=function(){var e=this.transform;return e&&pv(e[0]-1)>1e-10&&pv(e[3]-1)>1e-10?Math.sqrt(pv(e[0]*e[3]-e[2]*e[1])):1},r.prototype.copyTransform=function(e){d2(this,e)},r.getLocalTransform=function(e,t){t=t||[];var a=e.originX||0,n=e.originY||0,i=e.scaleX,o=e.scaleY,s=e.anchorX,l=e.anchorY,u=e.rotation||0,f=e.x,h=e.y,v=e.skewX?Math.tan(e.skewX):0,c=e.skewY?Math.tan(-e.skewY):0;if(a||n||s||l){var d=a+s,p=n+l;t[4]=-d*i-v*p*o,t[5]=-p*o-c*d*i}else t[4]=t[5]=0;return t[0]=i,t[3]=o,t[1]=c*i,t[2]=v*o,u&&bi(t,t,u),t[4]+=a+f,t[5]+=n+h,t},r.initDefaultProps=function(){var e=r.prototype;e.scaleX=e.scaleY=e.globalScaleRatio=1,e.x=e.y=e.originX=e.originY=e.skewX=e.skewY=e.rotation=e.anchorX=e.anchorY=0}(),r}(),qr=["x","y","originX","originY","anchorX","anchorY","rotation","scaleX","scaleY","skewX","skewY"];function d2(r,e){for(var t=0;t=0?parseFloat(r)/100*e:parseFloat(r):r}function bf(r,e,t){var a=e.position||"inside",n=e.distance!=null?e.distance:5,i=t.height,o=t.width,s=i/2,l=t.x,u=t.y,f="left",h="top";if(a instanceof Array)l+=Tr(a[0],t.width),u+=Tr(a[1],t.height),f=null,h=null;else switch(a){case"left":l-=n,u+=s,f="right",h="middle";break;case"right":l+=n+o,u+=s,h="middle";break;case"top":l+=o/2,u-=n,f="center",h="bottom";break;case"bottom":l+=o/2,u+=i+n,f="center";break;case"inside":l+=o/2,u+=s,f="center",h="middle";break;case"insideLeft":l+=n,u+=s,h="middle";break;case"insideRight":l+=o-n,u+=s,f="right",h="middle";break;case"insideTop":l+=o/2,u+=n,f="center";break;case"insideBottom":l+=o/2,u+=i-n,f="center",h="bottom";break;case"insideTopLeft":l+=n,u+=n;break;case"insideTopRight":l+=o-n,u+=n,f="right";break;case"insideBottomLeft":l+=n,u+=i-n,h="bottom";break;case"insideBottomRight":l+=o-n,u+=i-n,f="right",h="bottom";break}return r=r||{},r.x=l,r.y=u,r.align=f,r.verticalAlign=h,r}var gv="__zr_normal__",yv=qr.concat(["ignore"]),qE=Zr(qr,function(r,e){return r[e]=!0,r},{ignore:!1}),Ei={},KE=new vt(0,0,0,0),Mg=function(){function r(e){this.id=Fb(),this.animators=[],this.currentStates=[],this.states={},this._init(e)}return r.prototype._init=function(e){this.attr(e)},r.prototype.drift=function(e,t,a){switch(this.draggable){case"horizontal":t=0;break;case"vertical":e=0;break}var n=this.transform;n||(n=this.transform=[1,0,0,1,0,0]),n[4]+=e,n[5]+=t,this.decomposeTransform(),this.markRedraw()},r.prototype.beforeUpdate=function(){},r.prototype.afterUpdate=function(){},r.prototype.update=function(){this.updateTransform(),this.__dirty&&this.updateInnerText()},r.prototype.updateInnerText=function(e){var t=this._textContent;if(t&&(!t.ignore||e)){this.textConfig||(this.textConfig={});var a=this.textConfig,n=a.local,i=t.innerTransformable,o=void 0,s=void 0,l=!1;i.parent=n?this:null;var u=!1;if(i.copyTransform(t),a.position!=null){var f=KE;a.layoutRect?f.copy(a.layoutRect):f.copy(this.getBoundingRect()),n||f.applyTransform(this.transform),this.calculateTextPosition?this.calculateTextPosition(Ei,a,f):bf(Ei,a,f),i.x=Ei.x,i.y=Ei.y,o=Ei.align,s=Ei.verticalAlign;var h=a.origin;if(h&&a.rotation!=null){var v=void 0,c=void 0;h==="center"?(v=f.width*.5,c=f.height*.5):(v=Tr(h[0],f.width),c=Tr(h[1],f.height)),u=!0,i.originX=-i.x+v+(n?0:f.x),i.originY=-i.y+c+(n?0:f.y)}}a.rotation!=null&&(i.rotation=a.rotation);var d=a.offset;d&&(i.x+=d[0],i.y+=d[1],u||(i.originX=-d[0],i.originY=-d[1]));var p=a.inside==null?typeof a.position=="string"&&a.position.indexOf("inside")>=0:a.inside,g=this._innerTextDefaultStyle||(this._innerTextDefaultStyle={}),y=void 0,m=void 0,_=void 0;p&&this.canBeInsideText()?(y=a.insideFill,m=a.insideStroke,(y==null||y==="auto")&&(y=this.getInsideTextFill()),(m==null||m==="auto")&&(m=this.getInsideTextStroke(y),_=!0)):(y=a.outsideFill,m=a.outsideStroke,(y==null||y==="auto")&&(y=this.getOutsideFill()),(m==null||m==="auto")&&(m=this.getOutsideStroke(y),_=!0)),y=y||"#000",(y!==g.fill||m!==g.stroke||_!==g.autoStroke||o!==g.align||s!==g.verticalAlign)&&(l=!0,g.fill=y,g.stroke=m,g.autoStroke=_,g.align=o,g.verticalAlign=s,t.setDefaultTextStyle(g)),t.__dirty|=He,l&&t.dirtyStyle(!0)}},r.prototype.canBeInsideText=function(){return!0},r.prototype.getInsideTextFill=function(){return"#fff"},r.prototype.getInsideTextStroke=function(e){return"#000"},r.prototype.getOutsideFill=function(){return this.__zr&&this.__zr.isDarkMode()?Zd:Yd},r.prototype.getOutsideStroke=function(e){var t=this.__zr&&this.__zr.getBackgroundColor(),a=typeof t=="string"&&We(t);a||(a=[255,255,255,1]);for(var n=a[3],i=this.__zr.isDarkMode(),o=0;o<3;o++)a[o]=a[o]*n+(i?0:255)*(1-n);return a[3]=1,va(a,"rgba")},r.prototype.traverse=function(e,t){},r.prototype.attrKV=function(e,t){e==="textConfig"?this.setTextConfig(t):e==="textContent"?this.setTextContent(t):e==="clipPath"?this.setClipPath(t):e==="extra"?(this.extra=this.extra||{},V(this.extra,t)):this[e]=t},r.prototype.hide=function(){this.ignore=!0,this.markRedraw()},r.prototype.show=function(){this.ignore=!1,this.markRedraw()},r.prototype.attr=function(e,t){if(typeof e=="string")this.attrKV(e,t);else if(et(e))for(var a=e,n=St(a),i=0;i0},r.prototype.getState=function(e){return this.states[e]},r.prototype.ensureState=function(e){var t=this.states;return t[e]||(t[e]={}),t[e]},r.prototype.clearStates=function(e){this.useState(gv,!1,e)},r.prototype.useState=function(e,t,a,n){var i=e===gv,o=this.hasState();if(!(!o&&i)){var s=this.currentStates,l=this.stateTransition;if(!(dt(s,e)>=0&&(t||s.length===1))){var u;if(this.stateProxy&&!i&&(u=this.stateProxy(e)),u||(u=this.states&&this.states[e]),!u&&!i){mg("State "+e+" not exists.");return}i||this.saveCurrentToNormalState(u);var f=!!(u&&u.hoverLayer||n);f&&this._toggleHoverLayerFlag(!0),this._applyStateObj(e,u,this._normalState,t,!a&&!this.__inHover&&l&&l.duration>0,l);var h=this._textContent,v=this._textGuide;return h&&h.useState(e,t,a,f),v&&v.useState(e,t,a,f),i?(this.currentStates=[],this._normalState={}):t?this.currentStates.push(e):this.currentStates=[e],this._updateAnimationTargets(),this.markRedraw(),!f&&this.__inHover&&(this._toggleHoverLayerFlag(!1),this.__dirty&=~He),u}}},r.prototype.useStates=function(e,t,a){if(!e.length)this.clearStates();else{var n=[],i=this.currentStates,o=e.length,s=o===i.length;if(s){for(var l=0;l0,d);var p=this._textContent,g=this._textGuide;p&&p.useStates(e,t,v),g&&g.useStates(e,t,v),this._updateAnimationTargets(),this.currentStates=e.slice(),this.markRedraw(),!v&&this.__inHover&&(this._toggleHoverLayerFlag(!1),this.__dirty&=~He)}},r.prototype._updateAnimationTargets=function(){for(var e=0;e=0){var a=this.currentStates.slice();a.splice(t,1),this.useStates(a)}},r.prototype.replaceState=function(e,t,a){var n=this.currentStates.slice(),i=dt(n,e),o=dt(n,t)>=0;i>=0?o?n.splice(i,1):n[i]=t:a&&!o&&n.push(t),this.useStates(n)},r.prototype.toggleState=function(e,t){t?this.useState(e,!0):this.removeState(e)},r.prototype._mergeStates=function(e){for(var t={},a,n=0;n=0&&i.splice(o,1)}),this.animators.push(e),a&&a.animation.addAnimator(e),a&&a.wakeUp()},r.prototype.updateDuringAnimation=function(e){this.markRedraw()},r.prototype.stopAnimation=function(e,t){for(var a=this.animators,n=a.length,i=[],o=0;o0&&t.during&&i[0].during(function(d,p){t.during(p)});for(var v=0;v0||n.force&&!o.length){var C=void 0,T=void 0,D=void 0;if(s){T={},v&&(C={});for(var S=0;S<_;S++){var y=p[S];T[y]=t[y],v?C[y]=a[y]:t[y]=a[y]}}else if(v){D={};for(var S=0;S<_;S++){var y=p[S];D[y]=Ds(t[y]),QE(t,a,y)}}var w=new Dg(t,!1,!1,h?Et(d,function(L){return L.targetName===e}):null);w.targetName=e,n.scope&&(w.scope=n.scope),v&&C&&w.whenWithKeys(0,C,p),D&&w.whenWithKeys(0,D,p),w.whenWithKeys(u==null?500:u,s?T:a,p).delay(f||0),r.addAnimator(w,e),o.push(w)}}var g2=Mg,y2=function(r){k(e,r);function e(t){var a=r.call(this)||this;return a.isGroup=!0,a._children=[],a.attr(t),a}return e.prototype.childrenRef=function(){return this._children},e.prototype.children=function(){return this._children.slice()},e.prototype.childAt=function(t){return this._children[t]},e.prototype.childOfName=function(t){for(var a=this._children,n=0;n=0&&(n.splice(i,0,t),this._doAdd(t))}return this},e.prototype.replace=function(t,a){var n=dt(this._children,t);return n>=0&&this.replaceAt(a,n),this},e.prototype.replaceAt=function(t,a){var n=this._children,i=n[a];if(t&&t!==this&&t.parent!==this&&t!==i){n[a]=t,i.parent=null;var o=this.__zr;o&&i.removeSelfFromZr(o),this._doAdd(t)}return this},e.prototype._doAdd=function(t){t.parent&&t.parent.remove(t),t.parent=this;var a=this.__zr;a&&a!==t.__zr&&t.addSelfToZr(a),a&&a.refresh()},e.prototype.remove=function(t){var a=this.__zr,n=this._children,i=dt(n,t);return i<0?this:(n.splice(i,1),t.parent=null,a&&t.removeSelfFromZr(a),a&&a.refresh(),this)},e.prototype.removeAll=function(){for(var t=this._children,a=this.__zr,n=0;n0&&(this._stillFrameAccum++,this._stillFrameAccum>this._sleepAfterStill&&this.animation.stop())},r.prototype.setSleepAfterStill=function(e){this._sleepAfterStill=e},r.prototype.wakeUp=function(){this.animation.start(),this._stillFrameAccum=0},r.prototype.refreshHover=function(){this._needsRefreshHover=!0},r.prototype.refreshHoverImmediately=function(){this._needsRefreshHover=!1,this.painter.refreshHover&&this.painter.getType()==="canvas"&&this.painter.refreshHover()},r.prototype.resize=function(e){e=e||{},this.painter.resize(e.width,e.height),this.handler.resize()},r.prototype.clearAnimation=function(){this.animation.clear()},r.prototype.getWidth=function(){return this.painter.getWidth()},r.prototype.getHeight=function(){return this.painter.getHeight()},r.prototype.setCursorStyle=function(e){this.handler.setCursorStyle(e)},r.prototype.findHover=function(e,t){return this.handler.findHover(e,t)},r.prototype.on=function(e,t,a){return this.handler.on(e,t,a),this},r.prototype.off=function(e,t){this.handler.off(e,t)},r.prototype.trigger=function(e,t){this.handler.trigger(e,t)},r.prototype.clear=function(){for(var e=this.storage.getRoots(),t=0;t0){if(r<=n)return o;if(r>=i)return s}else{if(r>=n)return o;if(r<=i)return s}else{if(r===n)return o;if(r===i)return s}return(r-n)/l*u+o}function W(r,e){switch(r){case"center":case"middle":r="50%";break;case"left":case"top":r="0%";break;case"right":case"bottom":r="100%";break}return U(r)?ik(r).match(/%$/)?parseFloat(r)/100*e:parseFloat(r):r==null?NaN:+r}function Zt(r,e,t){return e==null&&(e=10),e=Math.min(Math.max(0,e),_2),r=(+r).toFixed(e),t?r:+r}function or(r){return r.sort(function(e,t){return e-t}),r}function Gr(r){if(r=+r,isNaN(r))return 0;if(r>1e-14){for(var e=1,t=0;t<15;t++,e*=10)if(Math.round(r*e)/e===r)return t}return ok(r)}function ok(r){var e=r.toString().toLowerCase(),t=e.indexOf("e"),a=t>0?+e.slice(t+1):0,n=t>0?t:e.length,i=e.indexOf("."),o=i<0?0:n-1-i;return Math.max(0,o-a)}function S2(r,e){var t=Math.log,a=Math.LN10,n=Math.floor(t(r[1]-r[0])/a),i=Math.round(t(Math.abs(e[1]-e[0]))/a),o=Math.min(Math.max(-n+i,0),20);return isFinite(o)?o:20}function sk(r,e){var t=Zr(r,function(c,d){return c+(isNaN(d)?0:d)},0);if(t===0)return[];for(var a=Math.pow(10,e),n=G(r,function(c){return(isNaN(c)?0:c)/t*a*100}),i=a*100,o=G(n,function(c){return Math.floor(c)}),s=Zr(o,function(c,d){return c+d},0),l=G(n,function(c,d){return c-o[d]});su&&(u=l[h],f=h);++o[f],l[f]=0,++s}return G(o,function(c){return c/a})}function lk(r,e){var t=Math.max(Gr(r),Gr(e)),a=r+e;return t>_2?a:Zt(a,t)}var s0=9007199254740991;function x2(r){var e=Math.PI*2;return(r%e+e)%e}function Cf(r){return r>-o0&&r=10&&e++,e}function w2(r,e){var t=Lg(r),a=Math.pow(10,t),n=r/a,i;return e?n<1.5?i=1:n<2.5?i=2:n<4?i=3:n<7?i=5:i=10:n<1?i=1:n<2?i=2:n<3?i=3:n<5?i=5:i=10,r=i*a,t>=-20?+r.toFixed(t<0?-t:0):r}function Sv(r,e){var t=(r.length-1)*e+1,a=Math.floor(t),n=+r[a-1],i=t-a;return i?n+i*(r[a]-n):n}function l0(r){r.sort(function(l,u){return s(l,u,0)?-1:1});for(var e=-1/0,t=1,a=0;a=0||i&&dt(i,l)<0)){var u=a.getShallow(l,e);u!=null&&(o[r[s][0]]=u)}}return o}}var kk=[["fill","color"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["opacity"],["shadowColor"]],Ok=pi(kk),Bk=function(){function r(){}return r.prototype.getAreaStyle=function(e,t){return Ok(this,e,t)},r}(),qd=new Sl(50);function Nk(r){if(typeof r=="string"){var e=qd.get(r);return e&&e.image}else return r}function Eg(r,e,t,a,n){if(r)if(typeof r=="string"){if(e&&e.__zrImageSrc===r||!t)return e;var i=qd.get(r),o={hostEl:t,cb:a,cbPayload:n};return i?(e=i.image,!_h(e)&&i.pending.push(o)):(e=ga.loadImage(r,v0,v0),e.__zrImageSrc=r,qd.put(r,e.__cachedImgObj={image:e,pending:[o]})),e}else return r;else return e}function v0(){var r=this.__cachedImgObj;this.onload=this.onerror=this.__cachedImgObj=null;for(var e=0;e=o;l++)s-=o;var u=$e(t,e);return u>s&&(t="",u=0),s=r-u,n.ellipsis=t,n.ellipsisWidth=u,n.contentWidth=s,n.containerWidth=r,n}function O2(r,e){var t=e.containerWidth,a=e.font,n=e.contentWidth;if(!t)return"";var i=$e(r,a);if(i<=t)return r;for(var o=0;;o++){if(i<=n||o>=e.maxIterations){r+=e.ellipsis;break}var s=o===0?zk(r,n,e.ascCharWidth,e.cnCharWidth):i>0?Math.floor(r.length*n/i):0;r=r.substr(0,s),i=$e(r,a)}return r===""&&(r=e.placeholder),r}function zk(r,e,t,a){for(var n=0,i=0,o=r.length;ic&&u){var d=Math.floor(c/s);h=h.slice(0,d)}if(r&&i&&f!=null)for(var p=k2(f,n,e.ellipsis,{minChar:e.truncateMinChar,placeholder:e.placeholder}),g=0;gs&&wv(t,r.substring(s,u),e,o),wv(t,l[2],e,o,l[1]),s=xv.lastIndex}sn){w>0?(m.tokens=m.tokens.slice(0,w),g(m,S,_),t.lines=t.lines.slice(0,y+1)):t.lines=t.lines.slice(0,y);break t}var L=b.width,I=L==null||L==="auto";if(typeof L=="string"&&L.charAt(L.length-1)==="%")x.percentWidth=L,f.push(x),x.contentWidth=$e(x.text,D);else{if(I){var P=b.backgroundColor,R=P&&P.image;R&&(R=Nk(R),_h(R)&&(x.width=Math.max(x.width,R.width*M/R.height)))}var E=d&&a!=null?a-S:null;E!=null&&E0&&d+a.accumWidth>a.width&&(f=e.split(` `),u=!0),a.accumWidth=d}else{var p=B2(e,l,a.width,a.breakAll,a.accumWidth);a.accumWidth=p.accumWidth+c,h=p.linesWidths,f=p.lines}}else f=e.split(` `);for(var g=0;g=32&&e<=591||e>=880&&e<=4351||e>=4608&&e<=5119||e>=7680&&e<=8303}var Uk=Zr(",&?/;] ".split(""),function(r,e){return r[e]=!0,r},{});function Yk(r){return $k(r)?!!Uk[r]:!0}function B2(r,e,t,a,n){for(var i=[],o=[],s="",l="",u=0,f=0,h=0;ht:n+f+c>t){f?(s||l)&&(d?(s||(s=l,l="",u=0,f=u),i.push(s),o.push(f-u),l+=v,u+=c,s="",f=u):(l&&(s+=l,l="",u=0),i.push(s),o.push(f),s=v,f=c)):d?(i.push(l),o.push(u),l=v,u=c):(i.push(v),o.push(c));continue}f+=c,d?(l+=v,u+=c):(l&&(s+=l,l="",u=0),s+=v)}return!i.length&&!s&&(s=r,l="",u=0),l&&(s+=l),s&&(i.push(s),o.push(f)),i.length===1&&(f+=n),{accumWidth:f,lines:i,linesWidths:o}}var Kd="__zr_style_"+Math.round(Math.random()*10),ii={shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,shadowColor:"#000",opacity:1,blend:"source-over"},Sh={style:{shadowBlur:!0,shadowOffsetX:!0,shadowOffsetY:!0,shadowColor:!0,opacity:!0}};ii[Kd]=!0;var d0=["z","z2","invisible"],Zk=["invisible"],Xk=function(r){k(e,r);function e(t){return r.call(this,t)||this}return e.prototype._init=function(t){for(var a=St(t),n=0;n1e-4){s[0]=r-t,s[1]=e-a,l[0]=r+t,l[1]=e+a;return}if(Ql[0]=Av(n)*t+r,Ql[1]=Tv(n)*a+e,jl[0]=Av(i)*t+r,jl[1]=Tv(i)*a+e,u(s,Ql,jl),f(l,Ql,jl),n=n%xn,n<0&&(n=n+xn),i=i%xn,i<0&&(i=i+xn),n>i&&!o?i+=xn:nn&&(tu[0]=Av(c)*t+r,tu[1]=Tv(c)*a+e,u(s,tu,s),f(l,tu,l))}var Ot={M:1,L:2,C:3,Q:4,A:5,Z:6,R:7},wn=[],bn=[],Lr=[],Ma=[],Ir=[],Pr=[],Dv=Math.min,Mv=Math.max,Cn=Math.cos,Tn=Math.sin,aa=Math.abs,Jd=Math.PI,Na=Jd*2,Lv=typeof Float32Array!="undefined",Wo=[];function Iv(r){var e=Math.round(r/Jd*1e8)/1e8;return e%2*Jd}function N2(r,e){var t=Iv(r[0]);t<0&&(t+=Na);var a=t-r[0],n=r[1];n+=a,!e&&n-t>=Na?n=t+Na:e&&t-n>=Na?n=t-Na:!e&&t>n?n=t+(Na-Iv(t-n)):e&&t0&&(this._ux=aa(a/wf/e)||0,this._uy=aa(a/wf/t)||0)},r.prototype.setDPR=function(e){this.dpr=e},r.prototype.setContext=function(e){this._ctx=e},r.prototype.getContext=function(){return this._ctx},r.prototype.beginPath=function(){return this._ctx&&this._ctx.beginPath(),this.reset(),this},r.prototype.reset=function(){this._saveData&&(this._len=0),this._pathSegLen&&(this._pathSegLen=null,this._pathLen=0),this._version++},r.prototype.moveTo=function(e,t){return this._drawPendingPt(),this.addData(Ot.M,e,t),this._ctx&&this._ctx.moveTo(e,t),this._x0=e,this._y0=t,this._xi=e,this._yi=t,this},r.prototype.lineTo=function(e,t){var a=aa(e-this._xi),n=aa(t-this._yi),i=a>this._ux||n>this._uy;if(this.addData(Ot.L,e,t),this._ctx&&i&&this._ctx.lineTo(e,t),i)this._xi=e,this._yi=t,this._pendingPtDist=0;else{var o=a*a+n*n;o>this._pendingPtDist&&(this._pendingPtX=e,this._pendingPtY=t,this._pendingPtDist=o)}return this},r.prototype.bezierCurveTo=function(e,t,a,n,i,o){return this._drawPendingPt(),this.addData(Ot.C,e,t,a,n,i,o),this._ctx&&this._ctx.bezierCurveTo(e,t,a,n,i,o),this._xi=i,this._yi=o,this},r.prototype.quadraticCurveTo=function(e,t,a,n){return this._drawPendingPt(),this.addData(Ot.Q,e,t,a,n),this._ctx&&this._ctx.quadraticCurveTo(e,t,a,n),this._xi=a,this._yi=n,this},r.prototype.arc=function(e,t,a,n,i,o){this._drawPendingPt(),Wo[0]=n,Wo[1]=i,N2(Wo,o),n=Wo[0],i=Wo[1];var s=i-n;return this.addData(Ot.A,e,t,a,a,n,s,0,o?0:1),this._ctx&&this._ctx.arc(e,t,a,n,i,o),this._xi=Cn(i)*a+e,this._yi=Tn(i)*a+t,this},r.prototype.arcTo=function(e,t,a,n,i){return this._drawPendingPt(),this._ctx&&this._ctx.arcTo(e,t,a,n,i),this},r.prototype.rect=function(e,t,a,n){return this._drawPendingPt(),this._ctx&&this._ctx.rect(e,t,a,n),this.addData(Ot.R,e,t,a,n),this},r.prototype.closePath=function(){this._drawPendingPt(),this.addData(Ot.Z);var e=this._ctx,t=this._x0,a=this._y0;return e&&e.closePath(),this._xi=t,this._yi=a,this},r.prototype.fill=function(e){e&&e.fill(),this.toStatic()},r.prototype.stroke=function(e){e&&e.stroke(),this.toStatic()},r.prototype.len=function(){return this._len},r.prototype.setData=function(e){var t=e.length;!(this.data&&this.data.length===t)&&Lv&&(this.data=new Float32Array(t));for(var a=0;af.length&&(this._expandData(),f=this.data);for(var h=0;h0&&(this._ctx&&this._ctx.lineTo(this._pendingPtX,this._pendingPtY),this._pendingPtDist=0)},r.prototype._expandData=function(){if(!(this.data instanceof Array)){for(var e=[],t=0;t11&&(this.data=new Float32Array(e)))}},r.prototype.getBoundingRect=function(){Lr[0]=Lr[1]=Ir[0]=Ir[1]=Number.MAX_VALUE,Ma[0]=Ma[1]=Pr[0]=Pr[1]=-Number.MAX_VALUE;var e=this.data,t=0,a=0,n=0,i=0,o;for(o=0;oa||aa(_)>n||v===t-1)&&(p=Math.sqrt(m*m+_*_),i=g,o=y);break}case Ot.C:{var S=e[v++],w=e[v++],g=e[v++],y=e[v++],x=e[v++],b=e[v++];p=dE(i,o,S,w,g,y,x,b,10),i=x,o=b;break}case Ot.Q:{var S=e[v++],w=e[v++],g=e[v++],y=e[v++];p=gE(i,o,S,w,g,y,10),i=g,o=y;break}case Ot.A:var C=e[v++],T=e[v++],D=e[v++],M=e[v++],L=e[v++],I=e[v++],P=I+L;v+=1,e[v++],d&&(s=Cn(L)*D+C,l=Tn(L)*M+T),p=Mv(D,M)*Dv(Na,Math.abs(I)),i=Cn(P)*D+C,o=Tn(P)*M+T;break;case Ot.R:{s=i=e[v++],l=o=e[v++];var R=e[v++],E=e[v++];p=R*2+E*2;break}case Ot.Z:{var m=s-i,_=l-o;p=Math.sqrt(m*m+_*_),i=s,o=l;break}}p>=0&&(u[h++]=p,f+=p)}return this._pathLen=f,f},r.prototype.rebuildPath=function(e,t){var a=this.data,n=this._ux,i=this._uy,o=this._len,s,l,u,f,h,v,c=t<1,d,p,g=0,y=0,m,_=0,S,w;if(c&&(this._pathSegLen||this._calculateLength(),d=this._pathSegLen,p=this._pathLen,m=t*p,!m))return;t:for(var x=0;x0&&(e.lineTo(S,w),_=0),b){case Ot.M:s=u=a[x++],l=f=a[x++],e.moveTo(u,f);break;case Ot.L:{h=a[x++],v=a[x++];var T=aa(h-u),D=aa(v-f);if(T>n||D>i){if(c){var M=d[y++];if(g+M>m){var L=(m-g)/M;e.lineTo(u*(1-L)+h*L,f*(1-L)+v*L);break t}g+=M}e.lineTo(h,v),u=h,f=v,_=0}else{var I=T*T+D*D;I>_&&(S=h,w=v,_=I)}break}case Ot.C:{var P=a[x++],R=a[x++],E=a[x++],B=a[x++],O=a[x++],z=a[x++];if(c){var M=d[y++];if(g+M>m){var L=(m-g)/M;en(u,P,E,O,L,wn),en(f,R,B,z,L,bn),e.bezierCurveTo(wn[1],bn[1],wn[2],bn[2],wn[3],bn[3]);break t}g+=M}e.bezierCurveTo(P,R,E,B,O,z),u=O,f=z;break}case Ot.Q:{var P=a[x++],R=a[x++],E=a[x++],B=a[x++];if(c){var M=d[y++];if(g+M>m){var L=(m-g)/M;$s(u,P,E,L,wn),$s(f,R,B,L,bn),e.quadraticCurveTo(wn[1],bn[1],wn[2],bn[2]);break t}g+=M}e.quadraticCurveTo(P,R,E,B),u=E,f=B;break}case Ot.A:var H=a[x++],$=a[x++],X=a[x++],Q=a[x++],j=a[x++],pt=a[x++],xt=a[x++],gt=!a[x++],rt=X>Q?X:Q,yt=aa(X-Q)>.001,st=j+pt,K=!1;if(c){var M=d[y++];g+M>m&&(st=j+pt*(m-g)/M,K=!0),g+=M}if(yt&&e.ellipse?e.ellipse(H,$,X,Q,xt,j,st,gt):e.arc(H,$,rt,j,st,gt),K)break t;C&&(s=Cn(j)*X+H,l=Tn(j)*Q+$),u=Cn(st)*X+H,f=Tn(st)*Q+$;break;case Ot.R:s=u=a[x],l=f=a[x+1],h=a[x++],v=a[x++];var lt=a[x++],Gt=a[x++];if(c){var M=d[y++];if(g+M>m){var wt=m-g;e.moveTo(h,v),e.lineTo(h+Dv(wt,lt),v),wt-=lt,wt>0&&e.lineTo(h+lt,v+Dv(wt,Gt)),wt-=Gt,wt>0&&e.lineTo(h+Mv(lt-wt,0),v+Gt),wt-=lt,wt>0&&e.lineTo(h,v+Mv(Gt-wt,0));break t}g+=M}e.rect(h,v,lt,Gt);break;case Ot.Z:if(c){var M=d[y++];if(g+M>m){var L=(m-g)/M;e.lineTo(u*(1-L)+s*L,f*(1-L)+l*L);break t}g+=M}e.closePath(),u=s,f=l}}},r.prototype.clone=function(){var e=new r,t=this.data;return e.data=t.slice?t.slice():Array.prototype.slice.call(t),e._len=this._len,e},r.CMD=Ot,r.initDefaultProps=function(){var e=r.prototype;e._saveData=!0,e._ux=0,e._uy=0,e._pendingPtDist=0,e._version=0}(),r}();function za(r,e,t,a,n,i,o){if(n===0)return!1;var s=n,l=0,u=r;if(o>e+s&&o>a+s||or+s&&i>t+s||ie+h&&f>a+h&&f>i+h&&f>s+h||fr+h&&u>t+h&&u>n+h&&u>o+h||ue+u&&l>a+u&&l>i+u||lr+u&&s>t+u&&s>n+u||st||f+un&&(n+=$o);var v=Math.atan2(l,s);return v<0&&(v+=$o),v>=a&&v<=n||v+$o>=a&&v+$o<=n}function sa(r,e,t,a,n,i){if(i>e&&i>a||in?s:0}var La=Jr.CMD,An=Math.PI*2,e5=1e-4;function r5(r,e){return Math.abs(r-e)e&&u>a&&u>i&&u>s||u1&&a5(),c=ae(e,a,i,s,je[0]),v>1&&(d=ae(e,a,i,s,je[1]))),v===2?ge&&s>a&&s>i||s=0&&u<=1){for(var f=0,h=se(e,a,i,u),v=0;vt||s<-t)return 0;var l=Math.sqrt(t*t-s*s);Te[0]=-l,Te[1]=l;var u=Math.abs(a-n);if(u<1e-4)return 0;if(u>=An-1e-4){a=0,n=An;var f=i?1:-1;return o>=Te[0]+r&&o<=Te[1]+r?f:0}if(a>n){var h=a;a=n,n=h}a<0&&(a+=An,n+=An);for(var v=0,c=0;c<2;c++){var d=Te[c];if(d+r>o){var p=Math.atan2(s,d),f=i?1:-1;p<0&&(p=An+p),(p>=a&&p<=n||p+An>=a&&p+An<=n)&&(p>Math.PI/2&&p1&&(t||(s+=sa(l,u,f,h,a,n))),g&&(l=i[d],u=i[d+1],f=l,h=u),p){case La.M:f=i[d++],h=i[d++],l=f,u=h;break;case La.L:if(t){if(za(l,u,i[d],i[d+1],e,a,n))return!0}else s+=sa(l,u,i[d],i[d+1],a,n)||0;l=i[d++],u=i[d++];break;case La.C:if(t){if(jk(l,u,i[d++],i[d++],i[d++],i[d++],i[d],i[d+1],e,a,n))return!0}else s+=n5(l,u,i[d++],i[d++],i[d++],i[d++],i[d],i[d+1],a,n)||0;l=i[d++],u=i[d++];break;case La.Q:if(t){if(V2(l,u,i[d++],i[d++],i[d],i[d+1],e,a,n))return!0}else s+=i5(l,u,i[d++],i[d++],i[d],i[d+1],a,n)||0;l=i[d++],u=i[d++];break;case La.A:var y=i[d++],m=i[d++],_=i[d++],S=i[d++],w=i[d++],x=i[d++];d+=1;var b=!!(1-i[d++]);v=Math.cos(w)*_+y,c=Math.sin(w)*S+m,g?(f=v,h=c):s+=sa(l,u,v,c,a,n);var C=(a-y)*S/_+y;if(t){if(t5(y,m,S,w,w+x,b,e,C,n))return!0}else s+=o5(y,m,S,w,w+x,b,C,n);l=Math.cos(w+x)*_+y,u=Math.sin(w+x)*S+m;break;case La.R:f=l=i[d++],h=u=i[d++];var T=i[d++],D=i[d++];if(v=f+T,c=h+D,t){if(za(f,h,v,h,e,a,n)||za(v,h,v,c,e,a,n)||za(v,c,f,c,e,a,n)||za(f,c,f,h,e,a,n))return!0}else s+=sa(v,h,v,c,a,n),s+=sa(f,c,f,h,a,n);break;case La.Z:if(t){if(za(l,u,f,h,e,a,n))return!0}else s+=sa(l,u,f,h,a,n);l=f,u=h;break}}return!t&&!r5(u,h)&&(s+=sa(l,u,f,h,a,n)||0),s!==0}function s5(r,e,t){return z2(r,0,!1,e,t)}function l5(r,e,t,a){return z2(r,e,!0,t,a)}var Tf=tt({fill:"#000",stroke:null,strokePercent:1,fillOpacity:1,strokeOpacity:1,lineDashOffset:0,lineWidth:1,lineCap:"butt",miterLimit:10,strokeNoScale:!1,strokeFirst:!1},ii),u5={style:tt({fill:!0,stroke:!0,strokePercent:!0,fillOpacity:!0,strokeOpacity:!0,lineDashOffset:!0,lineWidth:!0,miterLimit:!0},Sh.style)},Pv=qr.concat(["invisible","culling","z","z2","zlevel","parent"]),f5=function(r){k(e,r);function e(t){return r.call(this,t)||this}return e.prototype.update=function(){var t=this;r.prototype.update.call(this);var a=this.style;if(a.decal){var n=this._decalEl=this._decalEl||new e;n.buildPath===e.prototype.buildPath&&(n.buildPath=function(l){t.buildPath(l,t.shape)}),n.silent=!0;var i=n.style;for(var o in a)i[o]!==a[o]&&(i[o]=a[o]);i.fill=a.fill?a.decal:null,i.decal=null,i.shadowColor=null,a.strokeFirst&&(i.stroke=null);for(var s=0;s.5?Yd:a>.2?ZE:Zd}else if(t)return Zd}return Yd},e.prototype.getInsideTextStroke=function(t){var a=this.style.fill;if(U(a)){var n=this.__zr,i=!!(n&&n.isDarkMode()),o=Sf(t,0)0))},e.prototype.hasFill=function(){var t=this.style,a=t.fill;return a!=null&&a!=="none"},e.prototype.getBoundingRect=function(){var t=this._rect,a=this.style,n=!t;if(n){var i=!1;this.path||(i=!0,this.createPathProxy());var o=this.path;(i||this.__dirty&Ji)&&(o.beginPath(),this.buildPath(o,this.shape,!1),this.pathUpdated()),t=o.getBoundingRect()}if(this._rect=t,this.hasStroke()&&this.path&&this.path.len()>0){var s=this._rectStroke||(this._rectStroke=t.clone());if(this.__dirty||n){s.copy(t);var l=a.strokeNoScale?this.getLineScale():1,u=a.lineWidth;if(!this.hasFill()){var f=this.strokeContainThreshold;u=Math.max(u,f==null?4:f)}l>1e-10&&(s.width+=u/l,s.height+=u/l,s.x-=u/l/2,s.y-=u/l/2)}return s}return t},e.prototype.contain=function(t,a){var n=this.transformCoordToLocal(t,a),i=this.getBoundingRect(),o=this.style;if(t=n[0],a=n[1],i.contain(t,a)){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)),l5(s,l/u,t,a)))return!0}if(this.hasFill())return s5(s,t,a)}return!1},e.prototype.dirtyShape=function(){this.__dirty|=Ji,this._rect&&(this._rect=null),this._decalEl&&this._decalEl.dirtyShape(),this.markRedraw()},e.prototype.dirty=function(){this.dirtyStyle(),this.dirtyShape()},e.prototype.animateShape=function(t){return this.animate("shape",t)},e.prototype.updateDuringAnimation=function(t){t==="style"?this.dirtyStyle():t==="shape"?this.dirtyShape():this.markRedraw()},e.prototype.attrKV=function(t,a){t==="shape"?this.setShape(a):r.prototype.attrKV.call(this,t,a)},e.prototype.setShape=function(t,a){var n=this.shape;return n||(n=this.shape={}),typeof t=="string"?n[t]=a:V(n,t),this.dirtyShape(),this},e.prototype.shapeChanged=function(){return!!(this.__dirty&Ji)},e.prototype.createStyle=function(t){return dh(Tf,t)},e.prototype._innerSaveToNormal=function(t){r.prototype._innerSaveToNormal.call(this,t);var a=this._normalState;t.shape&&!a.shape&&(a.shape=V({},this.shape))},e.prototype._applyStateObj=function(t,a,n,i,o,s){r.prototype._applyStateObj.call(this,t,a,n,i,o,s);var l=!(a&&i),u;if(a&&a.shape?o?i?u=a.shape:(u=V({},n.shape),V(u,a.shape)):(u=V({},i?this.shape:n.shape),V(u,a.shape)):l&&(u=n.shape),u)if(o){this.shape=V({},this.shape);for(var f={},h=St(u),v=0;v0},e.prototype.hasFill=function(){var t=this.style,a=t.fill;return a!=null&&a!=="none"},e.prototype.createStyle=function(t){return dh(h5,t)},e.prototype.setBoundingRect=function(t){this._rect=t},e.prototype.getBoundingRect=function(){var t=this.style;if(!this._rect){var a=t.text;a!=null?a+="":a="";var n=xl(a,t.font,t.textAlign,t.textBaseline);if(n.x+=t.x||0,n.y+=t.y||0,this.hasStroke()){var i=t.lineWidth;n.x-=i/2,n.y-=i/2,n.width+=i,n.height+=i}this._rect=n}return this._rect},e.initDefaultProps=function(){var t=e.prototype;t.dirtyRectTolerance=10}(),e}(fr);F2.prototype.type="tspan";var Xs=F2,v5=tt({x:0,y:0},ii),c5={style:tt({x:!0,y:!0,width:!0,height:!0,sx:!0,sy:!0,sWidth:!0,sHeight:!0},Sh.style)};function d5(r){return!!(r&&typeof r!="string"&&r.width&&r.height)}var G2=function(r){k(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.createStyle=function(t){return dh(v5,t)},e.prototype._getSize=function(t){var a=this.style,n=a[t];if(n!=null)return n;var i=d5(a.image)?a.image:this.__image;if(!i)return 0;var o=t==="width"?"height":"width",s=a[o];return s==null?i[t]:i[t]/i[o]*s},e.prototype.getWidth=function(){return this._getSize("width")},e.prototype.getHeight=function(){return this._getSize("height")},e.prototype.getAnimationStyleProps=function(){return c5},e.prototype.getBoundingRect=function(){var t=this.style;return this._rect||(this._rect=new vt(t.x||0,t.y||0,this.getWidth(),this.getHeight())),this._rect},e}(fr);G2.prototype.type="image";var pe=G2;function p5(r,e){var t=e.x,a=e.y,n=e.width,i=e.height,o=e.r,s,l,u,f;n<0&&(t=t+n,n=-n),i<0&&(a=a+i,i=-i),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 h;s+l>n&&(h=s+l,s*=n/h,l*=n/h),u+f>n&&(h=u+f,u*=n/h,f*=n/h),l+u>i&&(h=l+u,l*=i/h,u*=i/h),s+f>i&&(h=s+f,s*=i/h,f*=i/h),r.moveTo(t+s,a),r.lineTo(t+n-l,a),l!==0&&r.arc(t+n-l,a+l,l,-Math.PI/2,0),r.lineTo(t+n,a+i-u),u!==0&&r.arc(t+n-u,a+i-u,u,0,Math.PI/2),r.lineTo(t+f,a+i),f!==0&&r.arc(t+f,a+i-f,f,Math.PI/2,Math.PI),r.lineTo(t,a+s),s!==0&&r.arc(t+s,a+s,s,Math.PI,Math.PI*1.5)}var ao=Math.round;function H2(r,e,t){if(!!e){var a=e.x1,n=e.x2,i=e.y1,o=e.y2;r.x1=a,r.x2=n,r.y1=i,r.y2=o;var s=t&&t.lineWidth;return s&&(ao(a*2)===ao(n*2)&&(r.x1=r.x2=Kn(a,s,!0)),ao(i*2)===ao(o*2)&&(r.y1=r.y2=Kn(i,s,!0))),r}}function W2(r,e,t){if(!!e){var a=e.x,n=e.y,i=e.width,o=e.height;r.x=a,r.y=n,r.width=i,r.height=o;var s=t&&t.lineWidth;return s&&(r.x=Kn(a,s,!0),r.y=Kn(n,s,!0),r.width=Math.max(Kn(a+i,s,!1)-r.x,i===0?0:1),r.height=Math.max(Kn(n+o,s,!1)-r.y,o===0?0:1)),r}}function Kn(r,e,t){if(!e)return r;var a=ao(r*2);return(a+ao(e))%2===0?a/2:(a+(t?1:-1))/2}var g5=function(){function r(){this.x=0,this.y=0,this.width=0,this.height=0}return r}(),y5={},$2=function(r){k(e,r);function e(t){return r.call(this,t)||this}return e.prototype.getDefaultShape=function(){return new g5},e.prototype.buildPath=function(t,a){var n,i,o,s;if(this.subPixelOptimize){var l=W2(y5,a,this.style);n=l.x,i=l.y,o=l.width,s=l.height,l.r=a.r,a=l}else n=a.x,i=a.y,o=a.width,s=a.height;a.r?p5(t,a):t.rect(n,i,o,s)},e.prototype.isZeroArea=function(){return!this.shape.width||!this.shape.height},e}(mt);$2.prototype.type="rect";var bt=$2,_0={fill:"#000"},S0=2,m5={style:tt({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},Sh.style)},U2=function(r){k(e,r);function e(t){var a=r.call(this)||this;return a.type="text",a._children=[],a._defaultStyle=_0,a.attr(t),a}return e.prototype.childrenRef=function(){return this._children},e.prototype.update=function(){r.prototype.update.call(this),this.styleChanged()&&this._updateSubTexts();for(var t=0;t0,L=t.width!=null&&(t.overflow==="truncate"||t.overflow==="break"||t.overflow==="breakAll"),I=o.calculatedLineHeight,P=0;P=0&&(P=x[I],P.align==="right");)this._placeToken(P,t,C,y,L,"right",_),T-=P.width,L-=P.width,I--;for(M+=(i-(M-g)-(m-L)-T)/2;D<=I;)P=x[D],this._placeToken(P,t,C,y,M+P.width/2,"center",_),M+=P.width,D++;y+=C}},e.prototype._placeToken=function(t,a,n,i,o,s,l){var u=a.rich[t.styleName]||{};u.text=t.text;var f=t.verticalAlign,h=i+n/2;f==="top"?h=i+t.height/2:f==="bottom"&&(h=i+n-t.height/2);var v=!t.isLineHolder&&Rv(u);v&&this._renderBackground(u,a,s==="right"?o-t.width:s==="center"?o-t.width/2:o,h-t.height/2,t.width,t.height);var c=!!u.backgroundColor,d=t.textPadding;d&&(o=A0(o,s,d),h-=t.height/2-d[0]-t.innerHeight/2);var p=this._getOrCreateChild(Xs),g=p.createStyle();p.useStyle(g);var y=this._defaultStyle,m=!1,_=0,S=T0("fill"in u?u.fill:"fill"in a?a.fill:(m=!0,y.fill)),w=C0("stroke"in u?u.stroke:"stroke"in a?a.stroke:!c&&!l&&(!y.autoStroke||m)?(_=S0,y.stroke):null),x=u.textShadowBlur>0||a.textShadowBlur>0;g.text=t.text,g.x=o,g.y=h,x&&(g.shadowBlur=u.textShadowBlur||a.textShadowBlur||0,g.shadowColor=u.textShadowColor||a.textShadowColor||"transparent",g.shadowOffsetX=u.textShadowOffsetX||a.textShadowOffsetX||0,g.shadowOffsetY=u.textShadowOffsetY||a.textShadowOffsetY||0),g.textAlign=s,g.textBaseline="middle",g.font=t.font||tn,g.opacity=Ur(u.opacity,a.opacity,1),w0(g,u),w&&(g.lineWidth=Ur(u.lineWidth,a.lineWidth,_),g.lineDash=ft(u.lineDash,a.lineDash),g.lineDashOffset=a.lineDashOffset||0,g.stroke=w),S&&(g.fill=S);var b=t.contentWidth,C=t.contentHeight;p.setBoundingRect(new vt(ps(g.x,b,g.textAlign),Qi(g.y,C,g.textBaseline),b,C))},e.prototype._renderBackground=function(t,a,n,i,o,s){var l=t.backgroundColor,u=t.borderWidth,f=t.borderColor,h=l&&l.image,v=l&&!h,c=t.borderRadius,d=this,p,g;if(v||t.lineHeight||u&&f){p=this._getOrCreateChild(bt),p.useStyle(p.createStyle()),p.style.fill=null;var y=p.shape;y.x=n,y.y=i,y.width=o,y.height=s,y.r=c,p.dirtyShape()}if(v){var m=p.style;m.fill=l||null,m.fillOpacity=ft(t.fillOpacity,1)}else if(h){g=this._getOrCreateChild(pe),g.onload=function(){d.dirtyStyle()};var _=g.style;_.image=l.image,_.x=n,_.y=i,_.width=o,_.height=s}if(u&&f){var m=p.style;m.lineWidth=u,m.stroke=f,m.strokeOpacity=ft(t.strokeOpacity,1),m.lineDash=t.borderDash,m.lineDashOffset=t.borderDashOffset||0,p.strokeContainThreshold=0,p.hasFill()&&p.hasStroke()&&(m.strokeFirst=!0,m.lineWidth*=2)}var S=(p||g).style;S.shadowBlur=t.shadowBlur||0,S.shadowColor=t.shadowColor||"transparent",S.shadowOffsetX=t.shadowOffsetX||0,S.shadowOffsetY=t.shadowOffsetY||0,S.opacity=Ur(t.opacity,a.opacity,1)},e.makeFont=function(t){var a="";return Z2(t)&&(a=[t.fontStyle,t.fontWeight,Y2(t.fontSize),t.fontFamily||"sans-serif"].join(" ")),a&&Sr(a)||t.textFont||t.font},e}(fr),_5={left:!0,right:1,center:1},S5={top:1,bottom:1,middle:1},x0=["fontStyle","fontWeight","fontSize","fontFamily"];function Y2(r){return typeof r=="string"&&(r.indexOf("px")!==-1||r.indexOf("rem")!==-1||r.indexOf("em")!==-1)?r:isNaN(+r)?pg+"px":r+"px"}function w0(r,e){for(var t=0;t=0,i=!1;if(r instanceof mt){var o=X2(r),s=n&&o.selectFill||o.normalFill,l=n&&o.selectStroke||o.normalStroke;if(ki(s)||ki(l)){a=a||{};var u=a.style||{};u.fill==="inherit"?(i=!0,a=V({},a),u=V({},u),u.fill=s):!ki(u.fill)&&ki(s)?(i=!0,a=V({},a),u=V({},u),u.fill=P0(s)):!ki(u.stroke)&&ki(l)&&(i||(a=V({},a),u=V({},u)),u.stroke=P0(l)),a.style=u}}if(a&&a.z2==null){i||(a=V({},a));var f=r.z2EmphasisLift;a.z2=r.z2+(f!=null?f:To)}return a}function D5(r,e,t){if(t&&t.z2==null){t=V({},t);var a=r.z2SelectLift;t.z2=r.z2+(a!=null?a:w5)}return t}function M5(r,e,t){var a=dt(r.currentStates,e)>=0,n=r.style.opacity,i=a?null:T5(r,["opacity"],e,{opacity:1});t=t||{};var o=t.style||{};return o.opacity==null&&(t=V({},t),o=V({opacity:a?n:i.opacity*.1},o),t.style=o),t}function Ev(r,e){var t=this.states[r];if(this.style){if(r==="emphasis")return A5(this,r,e,t);if(r==="blur")return M5(this,r,t);if(r==="select")return D5(this,r,t)}return t}function gi(r){r.stateProxy=Ev;var e=r.getTextContent(),t=r.getTextGuideLine();e&&(e.stateProxy=Ev),t&&(t.stateProxy=Ev)}function E0(r,e){!eC(r,e)&&!r.__highByOuter&&Ca(r,q2)}function k0(r,e){!eC(r,e)&&!r.__highByOuter&&Ca(r,K2)}function _a(r,e){r.__highByOuter|=1<<(e||0),Ca(r,q2)}function Sa(r,e){!(r.__highByOuter&=~(1<<(e||0)))&&Ca(r,K2)}function Q2(r){Ca(r,Bg)}function Ng(r){Ca(r,J2)}function j2(r){Ca(r,b5)}function tC(r){Ca(r,C5)}function eC(r,e){return r.__highDownSilentOnTouch&&e.zrByTouch}function rC(r){var e=r.getModel(),t=[],a=[];e.eachComponent(function(n,i){var o=kg(i),s=n==="series",l=s?r.getViewOfSeriesModel(i):r.getViewOfComponentModel(i);!s&&a.push(l),o.isBlured&&(l.group.traverse(function(u){J2(u)}),s&&t.push(i)),o.isBlured=!1}),A(a,function(n){n&&n.toggleBlurSeries&&n.toggleBlurSeries(t,!1,e)})}function jd(r,e,t,a){var n=a.getModel();t=t||"coordinateSystem";function i(u,f){for(var h=0;h0){var s={dataIndex:o,seriesIndex:t.seriesIndex};i!=null&&(s.dataType=i),e.push(s)}})}),e}function si(r,e,t){Jn(r,!0),Ca(r,gi),ep(r,e,t)}function k5(r){Jn(r,!1)}function $t(r,e,t,a){a?k5(r):si(r,e,t)}function ep(r,e,t){var a=it(r);e!=null?(a.focus=e,a.blurScope=t):a.focus&&(a.focus=null)}var B0=["emphasis","blur","select"],O5={itemStyle:"getItemStyle",lineStyle:"getLineStyle",areaStyle:"getAreaStyle"};function ce(r,e,t,a){t=t||"itemStyle";for(var n=0;n1&&(o*=kv(d),s*=kv(d));var p=(n===i?-1:1)*kv((o*o*(s*s)-o*o*(c*c)-s*s*(v*v))/(o*o*(c*c)+s*s*(v*v)))||0,g=p*o*c/s,y=p*-s*v/o,m=(r+t)/2+ru(h)*g-eu(h)*y,_=(e+a)/2+eu(h)*g+ru(h)*y,S=F0([1,0],[(v-g)/o,(c-y)/s]),w=[(v-g)/o,(c-y)/s],x=[(-1*v-g)/o,(-1*c-y)/s],b=F0(w,x);if(ap(w,x)<=-1&&(b=Uo),ap(w,x)>=1&&(b=0),b<0){var C=Math.round(b/Uo*1e6)/1e6;b=Uo*2+C%2*Uo}f.addData(u,m,_,o,s,S,b,h,i)}var G5=/([mlvhzcqtsa])([^mlvhzcqtsa]*)/ig,H5=/-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g;function W5(r){var e=new Jr;if(!r)return e;var t=0,a=0,n=t,i=a,o,s=Jr.CMD,l=r.match(G5);if(!l)return e;for(var u=0;uP*P+R*R&&(C=D,T=M),{cx:C,cy:T,x0:-f,y0:-h,x1:C*(n/w-1),y1:T*(n/w-1)}}function K5(r){var e;if(F(r)){var t=r.length;if(!t)return r;t===1?e=[r[0],r[0],0,0]:t===2?e=[r[0],r[0],r[1],r[1]]:t===3?e=r.concat(r[2]):e=r}else e=[r,r,r,r];return e}function J5(r,e){var t,a=gs(e.r,0),n=gs(e.r0||0,0),i=a>0,o=n>0;if(!(!i&&!o)){if(i||(a=n,n=0),n>a){var s=a;a=n,n=s}var l=e.startAngle,u=e.endAngle;if(!(isNaN(l)||isNaN(u))){var f=e.cx,h=e.cy,v=!!e.clockwise,c=H0(u-l),d=c>Ov&&c%Ov;if(d>gr&&(c=d),!(a>gr))r.moveTo(f,h);else if(c>Ov-gr)r.moveTo(f+a*Bi(l),h+a*Dn(l)),r.arc(f,h,a,l,u,!v),n>gr&&(r.moveTo(f+n*Bi(u),h+n*Dn(u)),r.arc(f,h,n,u,l,v));else{var p=void 0,g=void 0,y=void 0,m=void 0,_=void 0,S=void 0,w=void 0,x=void 0,b=void 0,C=void 0,T=void 0,D=void 0,M=void 0,L=void 0,I=void 0,P=void 0,R=a*Bi(l),E=a*Dn(l),B=n*Bi(u),O=n*Dn(u),z=c>gr;if(z){var H=e.cornerRadius;H&&(t=K5(H),p=t[0],g=t[1],y=t[2],m=t[3]);var $=H0(a-n)/2;if(_=Rr($,y),S=Rr($,m),w=Rr($,p),x=Rr($,g),T=b=gs(_,S),D=C=gs(w,x),(b>gr||C>gr)&&(M=a*Bi(u),L=a*Dn(u),I=n*Bi(l),P=n*Dn(l),cgr){var yt=Rr(y,T),st=Rr(m,T),K=au(I,P,R,E,a,yt,v),lt=au(M,L,B,O,a,st,v);r.moveTo(f+K.cx+K.x0,h+K.cy+K.y0),T0&&r.arc(f+K.cx,h+K.cy,yt,ye(K.y0,K.x0),ye(K.y1,K.x1),!v),r.arc(f,h,a,ye(K.cy+K.y1,K.cx+K.x1),ye(lt.cy+lt.y1,lt.cx+lt.x1),!v),st>0&&r.arc(f+lt.cx,h+lt.cy,st,ye(lt.y1,lt.x1),ye(lt.y0,lt.x0),!v))}else r.moveTo(f+R,h+E),r.arc(f,h,a,l,u,!v);if(!(n>gr)||!z)r.lineTo(f+B,h+O);else if(D>gr){var yt=Rr(p,D),st=Rr(g,D),K=au(B,O,M,L,n,-st,v),lt=au(R,E,I,P,n,-yt,v);r.lineTo(f+K.cx+K.x0,h+K.cy+K.y0),D0&&r.arc(f+K.cx,h+K.cy,st,ye(K.y0,K.x0),ye(K.y1,K.x1),!v),r.arc(f,h,n,ye(K.cy+K.y1,K.cx+K.x1),ye(lt.cy+lt.y1,lt.cx+lt.x1),v),yt>0&&r.arc(f+lt.cx,h+lt.cy,yt,ye(lt.y1,lt.x1),ye(lt.y0,lt.x0),!v))}else r.lineTo(f+B,h+O),r.arc(f,h,n,u,l,v)}r.closePath()}}}var Q5=function(){function r(){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 r}(),hC=function(r){k(e,r);function e(t){return r.call(this,t)||this}return e.prototype.getDefaultShape=function(){return new Q5},e.prototype.buildPath=function(t,a){J5(t,a)},e.prototype.isZeroArea=function(){return this.shape.startAngle===this.shape.endAngle||this.shape.r===this.shape.r0},e}(mt);hC.prototype.type="sector";var Ve=hC,j5=function(){function r(){this.cx=0,this.cy=0,this.r=0,this.r0=0}return r}(),vC=function(r){k(e,r);function e(t){return r.call(this,t)||this}return e.prototype.getDefaultShape=function(){return new j5},e.prototype.buildPath=function(t,a){var n=a.cx,i=a.cy,o=Math.PI*2;t.moveTo(n+a.r,i),t.arc(n,i,a.r,0,o,!1),t.moveTo(n+a.r0,i),t.arc(n,i,a.r0,0,o,!0)},e}(mt);vC.prototype.type="ring";var Ch=vC;function t3(r,e,t,a){var n=[],i=[],o=[],s=[],l,u,f,h;if(a){f=[1/0,1/0],h=[-1/0,-1/0];for(var v=0,c=r.length;v=2){if(a){var i=t3(n,a,t,e.smoothConstraint);r.moveTo(n[0][0],n[0][1]);for(var o=n.length,s=0;s<(t?o:o-1);s++){var l=i[s*2],u=i[s*2+1],f=n[(s+1)%o];r.bezierCurveTo(l[0],l[1],u[0],u[1],f[0],f[1])}}else{r.moveTo(n[0][0],n[0][1]);for(var s=1,h=n.length;sLn[1]){if(s=!1,i)return s;var f=Math.abs(Ln[0]-Mn[1]),h=Math.abs(Mn[0]-Ln[1]);Math.min(f,h)>n.len()&&(f0){var h=f.duration,v=f.delay,c=f.easing,d={duration:h,delay:v||0,easing:c,done:i,force:!!i||!!o,setToFinal:!u,scope:r,during:o};s?e.animateFrom(t,d):e.animateTo(t,d)}else e.stopAnimation(),!s&&e.attr(t),o&&o(1),i&&i()}function Lt(r,e,t,a,n,i){Wg("update",r,e,t,a,n,i)}function Ft(r,e,t,a,n,i){Wg("enter",r,e,t,a,n,i)}function so(r){if(!r.__zr)return!0;for(var e=0;eMath.abs(i[1])?i[0]>0?"right":"left":i[1]>0?"bottom":"top"}function U0(r){return!r.isGroup}function S3(r){return r.shape!=null}function Tl(r,e,t){if(!r||!e)return;function a(o){var s={};return o.traverse(function(l){U0(l)&&l.anid&&(s[l.anid]=l)}),s}function n(o){var s={x:o.x,y:o.y,rotation:o.rotation};return S3(o)&&(s.shape=V({},o.shape)),s}var i=a(r);e.traverse(function(o){if(U0(o)&&o.anid){var s=i[o.anid];if(s){var l=n(o);o.attr(n(s)),Lt(o,l,t,it(o).dataIndex)}}})}function TC(r,e){return G(r,function(t){var a=t[0];a=Mf(a,e.x),a=Lf(a,e.x+e.width);var n=t[1];return n=Mf(n,e.y),n=Lf(n,e.y+e.height),[a,n]})}function x3(r,e){var t=Mf(r.x,e.x),a=Lf(r.x+r.width,e.x+e.width),n=Mf(r.y,e.y),i=Lf(r.y+r.height,e.y+e.height);if(a>=t&&i>=n)return{x:t,y:n,width:a-t,height:i-n}}function Al(r,e,t){var a=V({rectHover:!0},e),n=a.style={strokeNoScale:!0};if(t=t||{x:-1,y:-1,width:2,height:2},r)return r.indexOf("image://")===0?(n.image=r.slice(8),tt(n,t),new pe(a)):Ah(r.replace("path://",""),a,t,"center")}function ys(r,e,t,a,n){for(var i=0,o=n[n.length-1];i1)return!1;var g=Bv(c,d,f,h)/v;return!(g<0||g>1)}function Bv(r,e,t,a){return r*a-t*e}function w3(r){return r<=1e-6&&r>=-1e-6}function Do(r){var e=r.itemTooltipOption,t=r.componentModel,a=r.itemName,n=U(e)?{formatter:e}:e,i=t.mainType,o=t.componentIndex,s={componentType:i,name:a,$vars:["name"]};s[i+"Index"]=o;var l=r.formatterParamsExtra;l&&A(St(l),function(f){Z(s,f)||(s[f]=l[f],s.$vars.push(f))});var u=it(r.el);u.componentMainType=i,u.componentIndex=o,u.tooltipConfig={name:a,option:tt({content:a,formatterParams:s},n)}}function Y0(r,e){var t;r.isGroup&&(t=e(r)),t||r.traverse(e)}function vn(r,e){if(r)if(F(r))for(var t=0;t=0&&s.push(l)}),s}}function cn(r,e){return ht(ht({},r,!0),e,!0)}var O3={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:". "}}}},B3={time:{month:["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"],monthAbbr:["1\u6708","2\u6708","3\u6708","4\u6708","5\u6708","6\u6708","7\u6708","8\u6708","9\u6708","10\u6708","11\u6708","12\u6708"],dayOfWeek:["\u661F\u671F\u65E5","\u661F\u671F\u4E00","\u661F\u671F\u4E8C","\u661F\u671F\u4E09","\u661F\u671F\u56DB","\u661F\u671F\u4E94","\u661F\u671F\u516D"],dayOfWeekAbbr:["\u65E5","\u4E00","\u4E8C","\u4E09","\u56DB","\u4E94","\u516D"]},legend:{selector:{all:"\u5168\u9009",inverse:"\u53CD\u9009"}},toolbox:{brush:{title:{rect:"\u77E9\u5F62\u9009\u62E9",polygon:"\u5708\u9009",lineX:"\u6A2A\u5411\u9009\u62E9",lineY:"\u7EB5\u5411\u9009\u62E9",keep:"\u4FDD\u6301\u9009\u62E9",clear:"\u6E05\u9664\u9009\u62E9"}},dataView:{title:"\u6570\u636E\u89C6\u56FE",lang:["\u6570\u636E\u89C6\u56FE","\u5173\u95ED","\u5237\u65B0"]},dataZoom:{title:{zoom:"\u533A\u57DF\u7F29\u653E",back:"\u533A\u57DF\u7F29\u653E\u8FD8\u539F"}},magicType:{title:{line:"\u5207\u6362\u4E3A\u6298\u7EBF\u56FE",bar:"\u5207\u6362\u4E3A\u67F1\u72B6\u56FE",stack:"\u5207\u6362\u4E3A\u5806\u53E0",tiled:"\u5207\u6362\u4E3A\u5E73\u94FA"}},restore:{title:"\u8FD8\u539F"},saveAsImage:{title:"\u4FDD\u5B58\u4E3A\u56FE\u7247",lang:["\u53F3\u952E\u53E6\u5B58\u4E3A\u56FE\u7247"]}},series:{typeNames:{pie:"\u997C\u56FE",bar:"\u67F1\u72B6\u56FE",line:"\u6298\u7EBF\u56FE",scatter:"\u6563\u70B9\u56FE",effectScatter:"\u6D9F\u6F2A\u6563\u70B9\u56FE",radar:"\u96F7\u8FBE\u56FE",tree:"\u6811\u56FE",treemap:"\u77E9\u5F62\u6811\u56FE",boxplot:"\u7BB1\u578B\u56FE",candlestick:"K\u7EBF\u56FE",k:"K\u7EBF\u56FE",heatmap:"\u70ED\u529B\u56FE",map:"\u5730\u56FE",parallel:"\u5E73\u884C\u5750\u6807\u56FE",lines:"\u7EBF\u56FE",graph:"\u5173\u7CFB\u56FE",sankey:"\u6851\u57FA\u56FE",funnel:"\u6F0F\u6597\u56FE",gauge:"\u4EEA\u8868\u76D8\u56FE",pictorialBar:"\u8C61\u5F62\u67F1\u56FE",themeRiver:"\u4E3B\u9898\u6CB3\u6D41\u56FE",sunburst:"\u65ED\u65E5\u56FE"}},aria:{general:{withTitle:"\u8FD9\u662F\u4E00\u4E2A\u5173\u4E8E\u201C{title}\u201D\u7684\u56FE\u8868\u3002",withoutTitle:"\u8FD9\u662F\u4E00\u4E2A\u56FE\u8868\uFF0C"},series:{single:{prefix:"",withName:"\u56FE\u8868\u7C7B\u578B\u662F{seriesType}\uFF0C\u8868\u793A{seriesName}\u3002",withoutName:"\u56FE\u8868\u7C7B\u578B\u662F{seriesType}\u3002"},multiple:{prefix:"\u5B83\u7531{seriesCount}\u4E2A\u56FE\u8868\u7CFB\u5217\u7EC4\u6210\u3002",withName:"\u7B2C{seriesId}\u4E2A\u7CFB\u5217\u662F\u4E00\u4E2A\u8868\u793A{seriesName}\u7684{seriesType}\uFF0C",withoutName:"\u7B2C{seriesId}\u4E2A\u7CFB\u5217\u662F\u4E00\u4E2A{seriesType}\uFF0C",separator:{middle:"\uFF1B",end:"\u3002"}}},data:{allData:"\u5176\u6570\u636E\u662F\u2014\u2014",partialData:"\u5176\u4E2D\uFF0C\u524D{displayCnt}\u9879\u662F\u2014\u2014",withName:"{name}\u7684\u6570\u636E\u662F{value}",withoutName:"{value}",separator:{middle:"\uFF0C",end:""}}}},Pf="ZH",Ug="EN",Qs=Ug,nf={},Yg={},EC=At.domSupported?function(){var r=(document.documentElement.lang||navigator.language||navigator.browserLanguage).toUpperCase();return r.indexOf(Pf)>-1?Pf:Qs}():Qs;function kC(r,e){r=r.toUpperCase(),Yg[r]=new Vt(e),nf[r]=e}function N3(r){if(U(r)){var e=nf[r.toUpperCase()]||{};return r===Pf||r===Ug?at(e):ht(at(e),at(nf[Qs]),!1)}else return ht(at(r),at(nf[Qs]),!1)}function op(r){return Yg[r]}function V3(){return Yg[Qs]}kC(Ug,O3);kC(Pf,B3);var Zg=1e3,Xg=Zg*60,Es=Xg*60,ir=Es*24,J0=ir*365,ms={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}"},ou="{yyyy}-{MM}-{dd}",Q0={year:"{yyyy}",month:"{yyyy}-{MM}",day:ou,hour:ou+" "+ms.hour,minute:ou+" "+ms.minute,second:ou+" "+ms.second,millisecond:ms.none},zv=["year","month","day","hour","minute","second","millisecond"],OC=["year","half-year","quarter","month","week","half-week","day","half-day","quarter-day","hour","minute","second","millisecond"];function Ia(r,e){return r+="","0000".substr(0,e-r.length)+r}function lo(r){switch(r){case"half-year":case"quarter":return"month";case"week":case"half-week":return"day";case"half-day":case"quarter-day":return"hour";default:return r}}function z3(r){return r===lo(r)}function F3(r){switch(r){case"year":case"month":return"day";case"millisecond":return"millisecond";default:return"second"}}function Lh(r,e,t,a){var n=Kr(r),i=n[qg(t)](),o=n[uo(t)]()+1,s=Math.floor((o-1)/3)+1,l=n[Ih(t)](),u=n["get"+(t?"UTC":"")+"Day"](),f=n[js(t)](),h=(f-1)%12+1,v=n[Ph(t)](),c=n[Rh(t)](),d=n[Eh(t)](),p=a instanceof Vt?a:op(a||EC)||V3(),g=p.getModel("time"),y=g.get("month"),m=g.get("monthAbbr"),_=g.get("dayOfWeek"),S=g.get("dayOfWeekAbbr");return(e||"").replace(/{yyyy}/g,i+"").replace(/{yy}/g,Ia(i%100+"",2)).replace(/{Q}/g,s+"").replace(/{MMMM}/g,y[o-1]).replace(/{MMM}/g,m[o-1]).replace(/{MM}/g,Ia(o,2)).replace(/{M}/g,o+"").replace(/{dd}/g,Ia(l,2)).replace(/{d}/g,l+"").replace(/{eeee}/g,_[u]).replace(/{ee}/g,S[u]).replace(/{e}/g,u+"").replace(/{HH}/g,Ia(f,2)).replace(/{H}/g,f+"").replace(/{hh}/g,Ia(h+"",2)).replace(/{h}/g,h+"").replace(/{mm}/g,Ia(v,2)).replace(/{m}/g,v+"").replace(/{ss}/g,Ia(c,2)).replace(/{s}/g,c+"").replace(/{SSS}/g,Ia(d,3)).replace(/{S}/g,d+"")}function G3(r,e,t,a,n){var i=null;if(U(t))i=t;else if(J(t))i=t(r.value,e,{level:r.level});else{var o=V({},ms);if(r.level>0)for(var s=0;s=0;--s)if(l[u]){i=l[u];break}i=i||o.none}if(F(i)){var h=r.level==null?0:r.level>=0?r.level:i.length+r.level;h=Math.min(h,i.length-1),i=i[h]}}return Lh(new Date(r.value),i,n,a)}function BC(r,e){var t=Kr(r),a=t[uo(e)]()+1,n=t[Ih(e)](),i=t[js(e)](),o=t[Ph(e)](),s=t[Rh(e)](),l=t[Eh(e)](),u=l===0,f=u&&s===0,h=f&&o===0,v=h&&i===0,c=v&&n===1,d=c&&a===1;return d?"year":c?"month":v?"day":h?"hour":f?"minute":u?"second":"millisecond"}function j0(r,e,t){var a=Mt(r)?Kr(r):r;switch(e=e||BC(r,t),e){case"year":return a[qg(t)]();case"half-year":return a[uo(t)]()>=6?1:0;case"quarter":return Math.floor((a[uo(t)]()+1)/4);case"month":return a[uo(t)]();case"day":return a[Ih(t)]();case"half-day":return a[js(t)]()/24;case"hour":return a[js(t)]();case"minute":return a[Ph(t)]();case"second":return a[Rh(t)]();case"millisecond":return a[Eh(t)]()}}function qg(r){return r?"getUTCFullYear":"getFullYear"}function uo(r){return r?"getUTCMonth":"getMonth"}function Ih(r){return r?"getUTCDate":"getDate"}function js(r){return r?"getUTCHours":"getHours"}function Ph(r){return r?"getUTCMinutes":"getMinutes"}function Rh(r){return r?"getUTCSeconds":"getSeconds"}function Eh(r){return r?"getUTCMilliseconds":"getMilliseconds"}function H3(r){return r?"setUTCFullYear":"setFullYear"}function NC(r){return r?"setUTCMonth":"setMonth"}function VC(r){return r?"setUTCDate":"setDate"}function zC(r){return r?"setUTCHours":"setHours"}function FC(r){return r?"setUTCMinutes":"setMinutes"}function GC(r){return r?"setUTCSeconds":"setSeconds"}function HC(r){return r?"setUTCMilliseconds":"setMilliseconds"}function WC(r){if(!b2(r))return U(r)?r:"-";var e=(r+"").split(".");return e[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g,"$1,")+(e.length>1?"."+e[1]:"")}function $C(r,e){return r=(r||"").toLowerCase().replace(/-(.)/g,function(t,a){return a.toUpperCase()}),e&&r&&(r=r.charAt(0).toUpperCase()+r.slice(1)),r}var Io=xg;function sp(r,e,t){var a="{yyyy}-{MM}-{dd} {HH}:{mm}:{ss}";function n(f){return f&&Sr(f)?f:"-"}function i(f){return!!(f!=null&&!isNaN(f)&&isFinite(f))}var o=e==="time",s=r instanceof Date;if(o||s){var l=o?Kr(r):r;if(isNaN(+l)){if(s)return"-"}else return Lh(l,a,t)}if(e==="ordinal")return Ad(r)?n(r):Mt(r)&&i(r)?r+"":"-";var u=ma(r);return i(u)?WC(u):Ad(r)?n(r):typeof r=="boolean"?r+"":"-"}var t1=["a","b","c","d","e","f","g"],Fv=function(r,e){return"{"+r+(e==null?"":e)+"}"};function UC(r,e,t){F(e)||(e=[e]);var a=e.length;if(!a)return"";for(var n=e[0].$vars||[],i=0;i':'';var o=t.markerId||"markerX";return{renderMode:i,content:"{"+o+"|} ",style:n==="subItem"?{width:4,height:4,borderRadius:2,backgroundColor:a}:{width:10,height:10,borderRadius:5,backgroundColor:a}}}function yi(r,e){return e=e||"transparent",U(r)?r:et(r)&&r.colorStops&&(r.colorStops[0]||{}).color||e}function Rf(r,e){if(e==="_blank"||e==="blank"){var t=window.open();t.opener=null,t.location.href=r}else window.open(r,e)}var of=A,YC=["left","right","top","bottom","width","height"],Qn=[["width","left","right"],["height","top","bottom"]];function Kg(r,e,t,a,n){var i=0,o=0;a==null&&(a=1/0),n==null&&(n=1/0);var s=0;e.eachChild(function(l,u){var f=l.getBoundingRect(),h=e.childAt(u+1),v=h&&h.getBoundingRect(),c,d;if(r==="horizontal"){var p=f.width+(v?-v.x+f.x:0);c=i+p,c>a||l.newline?(i=0,c=p,o+=s+t,s=f.height):s=Math.max(s,f.height)}else{var g=f.height+(v?-v.y+f.y:0);d=o+g,d>n||l.newline?(i+=s+t,o=0,d=g,s=f.width):s=Math.max(s,f.width)}l.newline||(l.x=i,l.y=o,l.markRedraw(),r==="horizontal"?i=c+t:o=d+t)})}var ui=Kg;ot(Kg,"vertical");ot(Kg,"horizontal");function U3(r,e,t){var a=e.width,n=e.height,i=W(r.left,a),o=W(r.top,n),s=W(r.right,a),l=W(r.bottom,n);return(isNaN(i)||isNaN(parseFloat(r.left)))&&(i=0),(isNaN(s)||isNaN(parseFloat(r.right)))&&(s=a),(isNaN(o)||isNaN(parseFloat(r.top)))&&(o=0),(isNaN(l)||isNaN(parseFloat(r.bottom)))&&(l=n),t=Io(t||0),{width:Math.max(s-i-t[1]-t[3],0),height:Math.max(l-o-t[0]-t[2],0)}}function re(r,e,t){t=Io(t||0);var a=e.width,n=e.height,i=W(r.left,a),o=W(r.top,n),s=W(r.right,a),l=W(r.bottom,n),u=W(r.width,a),f=W(r.height,n),h=t[2]+t[0],v=t[1]+t[3],c=r.aspect;switch(isNaN(u)&&(u=a-s-v-i),isNaN(f)&&(f=n-l-h-o),c!=null&&(isNaN(u)&&isNaN(f)&&(c>a/n?u=a*.8:f=n*.8),isNaN(u)&&(u=c*f),isNaN(f)&&(f=u/c)),isNaN(i)&&(i=a-s-u-v),isNaN(o)&&(o=n-l-f-h),r.left||r.right){case"center":i=a/2-u/2-t[3];break;case"right":i=a-u-v;break}switch(r.top||r.bottom){case"middle":case"center":o=n/2-f/2-t[0];break;case"bottom":o=n-f-h;break}i=i||0,o=o||0,isNaN(u)&&(u=a-v-i-(s||0)),isNaN(f)&&(f=n-h-o-(l||0));var d=new vt(i+t[3],o+t[0],u,f);return d.margin=t,d}function kh(r,e,t,a,n,i){var o=!n||!n.hv||n.hv[0],s=!n||!n.hv||n.hv[1],l=n&&n.boundingMode||"all";if(i=i||r,i.x=r.x,i.y=r.y,!o&&!s)return!1;var u;if(l==="raw")u=r.type==="group"?new vt(0,0,+e.width||0,+e.height||0):r.getBoundingRect();else if(u=r.getBoundingRect(),r.needLocalTransform()){var f=r.getLocalTransform();u=u.clone(),u.applyTransform(f)}var h=re(tt({width:u.width,height:u.height},e),t,a),v=o?h.x-u.x:0,c=s?h.y-u.y:0;return l==="raw"?(i.x=v,i.y=c):(i.x+=v,i.y+=c),i===r&&r.markRedraw(),!0}function Y3(r,e){return r[Qn[e][0]]!=null||r[Qn[e][1]]!=null&&r[Qn[e][2]]!=null}function tl(r){var e=r.layoutMode||r.constructor.layoutMode;return et(e)?e:e?{type:e}:null}function an(r,e,t){var a=t&&t.ignoreSize;!F(a)&&(a=[a,a]);var n=o(Qn[0],0),i=o(Qn[1],1);u(Qn[0],r,n),u(Qn[1],r,i);function o(f,h){var v={},c=0,d={},p=0,g=2;if(of(f,function(_){d[_]=r[_]}),of(f,function(_){s(e,_)&&(v[_]=d[_]=e[_]),l(v,_)&&c++,l(d,_)&&p++}),a[h])return l(e,f[1])?d[f[2]]=null:l(e,f[2])&&(d[f[1]]=null),d;if(p===g||!c)return d;if(c>=g)return v;for(var y=0;y=0;l--)s=ht(s,n[l],!0);a.defaultOption=s}return a.defaultOption},e.prototype.getReferringComponents=function(t,a){var n=t+"Index",i=t+"Id";return wl(this.ecModel,t,{index:this.get(n,!0),id:this.get(i,!0)},a)},e.prototype.getBoxLayoutParams=function(){var t=this;return{left:t.get("left"),top:t.get("top"),right:t.get("right"),bottom:t.get("bottom"),width:t.get("width"),height:t.get("height")}},e.prototype.getZLevelKey=function(){return""},e.prototype.setZLevel=function(t){this.option.zlevel=t},e.protoInitialize=function(){var t=e.prototype;t.type="component",t.id="",t.name="",t.mainType="",t.subType="",t.componentIndex=0}(),e}(Vt);E2(Ro,Vt);mh(Ro);E3(Ro);k3(Ro,X3);function X3(r){var e=[];return A(Ro.getClassesByMainType(r),function(t){e=e.concat(t.dependencies||t.prototype.dependencies||[])}),e=G(e,function(t){return Hr(t).main}),r!=="dataset"&&dt(e,"dataset")<=0&&e.unshift("dataset"),e}var Tt=Ro,XC="";typeof navigator!="undefined"&&(XC=navigator.platform||"");var Ni="rgba(0, 0, 0, 0.2)",q3={darkMode:"auto",colorBy:"series",color:["#5470c6","#91cc75","#fac858","#ee6666","#73c0de","#3ba272","#fc8452","#9a60b4","#ea7ccc"],gradientColor:["#f6efa6","#d88273","#bf444c"],aria:{decal:{decals:[{color:Ni,dashArrayX:[1,0],dashArrayY:[2,5],symbolSize:1,rotation:Math.PI/6},{color:Ni,symbol:"circle",dashArrayX:[[8,8],[0,8,8,0]],dashArrayY:[6,0],symbolSize:.8},{color:Ni,dashArrayX:[1,0],dashArrayY:[4,3],rotation:-Math.PI/4},{color:Ni,dashArrayX:[[6,6],[0,6,6,0]],dashArrayY:[6,0]},{color:Ni,dashArrayX:[[1,0],[1,6]],dashArrayY:[1,0,6,0],rotation:Math.PI/4},{color:Ni,symbol:"triangle",dashArrayX:[[9,9],[0,9,9,0]],dashArrayY:[7,2],symbolSize:.75}]}},textStyle:{fontFamily:XC.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},qC=q(["tooltip","label","itemName","itemId","itemGroupId","seriesName"]),vr="original",xe="arrayRows",cr="objectRows",jr="keyedColumns",Ja="typedArray",KC="unknown",Yr="column",Eo="row",fe={Must:1,Might:2,Not:3},JC=Ct();function K3(r){JC(r).datasetMap=q()}function QC(r,e,t){var a={},n=Qg(e);if(!n||!r)return a;var i=[],o=[],s=e.ecModel,l=JC(s).datasetMap,u=n.uid+"_"+t.seriesLayoutBy,f,h;r=r.slice(),A(r,function(p,g){var y=et(p)?p:r[g]={name:p};y.type==="ordinal"&&f==null&&(f=g,h=d(y)),a[y.name]=[]});var v=l.get(u)||l.set(u,{categoryWayDim:h,valueWayDim:0});A(r,function(p,g){var y=p.name,m=d(p);if(f==null){var _=v.valueWayDim;c(a[y],_,m),c(o,_,m),v.valueWayDim+=m}else if(f===g)c(a[y],0,m),c(i,0,m);else{var _=v.categoryWayDim;c(a[y],_,m),c(o,_,m),v.categoryWayDim+=m}});function c(p,g,y){for(var m=0;me)return r[a];return r[t-1]}function eT(r,e,t,a,n,i,o){i=i||r;var s=e(i),l=s.paletteIdx||0,u=s.paletteNameMap=s.paletteNameMap||{};if(u.hasOwnProperty(n))return u[n];var f=o==null||!a?t:eO(a,o);if(f=f||t,!(!f||!f.length)){var h=f[l];return n&&(u[n]=h),s.paletteIdx=(l+1)%f.length,h}}function rO(r,e){e(r).paletteIdx=0,e(r).paletteNameMap={}}var su,Yo,r1,a1="\0_ec_inner",aO=1,rT=function(r){k(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.init=function(t,a,n,i,o,s){i=i||{},this.option=null,this._theme=new Vt(i),this._locale=new Vt(o),this._optionManager=s},e.prototype.setOption=function(t,a,n){var i=o1(a);this._optionManager.setOption(t,n,i),this._resetOption(null,i)},e.prototype.resetOption=function(t,a){return this._resetOption(t,o1(a))},e.prototype._resetOption=function(t,a){var n=!1,i=this._optionManager;if(!t||t==="recreate"){var o=i.mountOption(t==="recreate");!this.option||t==="recreate"?r1(this,o):(this.restoreData(),this._mergeOption(o,a)),n=!0}if((t==="timeline"||t==="media")&&this.restoreData(),!t||t==="recreate"||t==="timeline"){var s=i.getTimelineOption(this);s&&(n=!0,this._mergeOption(s,a))}if(!t||t==="recreate"||t==="media"){var l=i.getMediaOption(this);l.length&&A(l,function(u){n=!0,this._mergeOption(u,a)},this)}return n},e.prototype.mergeOption=function(t){this._mergeOption(t,null)},e.prototype._mergeOption=function(t,a){var n=this.option,i=this._componentsMap,o=this._componentsCount,s=[],l=q(),u=a&&a.replaceMergeMainTypeMap;K3(this),A(t,function(h,v){h!=null&&(Tt.hasClass(v)?v&&(s.push(v),l.set(v,!0)):n[v]=n[v]==null?at(h):ht(n[v],h,!0))}),u&&u.each(function(h,v){Tt.hasClass(v)&&!l.get(v)&&(s.push(v),l.set(v,!0))}),Tt.topologicalTravel(s,Tt.getAllClassMainTypes(),f,this);function f(h){var v=j3(this,h,kt(t[h])),c=i.get(h),d=c?u&&u.get(h)?"replaceMerge":"normalMerge":"replaceAll",p=M2(c,v,d);_k(p,h,Tt),n[h]=null,i.set(h,null),o.set(h,0);var g=[],y=[],m=0,_;A(p,function(S,w){var x=S.existing,b=S.newOption;if(!b)x&&(x.mergeOption({},this),x.optionUpdated({},!1));else{var C=h==="series",T=Tt.getClass(h,S.keyInfo.subType,!C);if(!T)return;if(h==="tooltip"){if(_)return;_=!0}if(x&&x.constructor===T)x.name=S.keyInfo.name,x.mergeOption(b,this),x.optionUpdated(b,!1);else{var D=V({componentIndex:w},S.keyInfo);x=new T(b,this,this,D),V(x,D),S.brandNew&&(x.__requireNewView=!0),x.init(b,this,this),x.optionUpdated(null,!0)}}x?(g.push(x.option),y.push(x),m++):(g.push(void 0),y.push(void 0))},this),n[h]=g,i.set(h,y),o.set(h,m),h==="series"&&su(this)}this._seriesIndices||su(this)},e.prototype.getOption=function(){var t=at(this.option);return A(t,function(a,n){if(Tt.hasClass(n)){for(var i=kt(a),o=i.length,s=!1,l=o-1;l>=0;l--)i[l]&&!Zs(i[l])?s=!0:(i[l]=null,!s&&o--);i.length=o,t[n]=i}}),delete t[a1],t},e.prototype.getTheme=function(){return this._theme},e.prototype.getLocaleModel=function(){return this._locale},e.prototype.setUpdatePayload=function(t){this._payload=t},e.prototype.getUpdatePayload=function(){return this._payload},e.prototype.getComponent=function(t,a){var n=this._componentsMap.get(t);if(n){var i=n[a||0];if(i)return i;if(a==null){for(var o=0;o=e:t==="max"?r<=e:r===e}function dO(r,e){return r.join(",")===e.join(",")}var pO=fO,dr=A,el=et,s1=["areaStyle","lineStyle","nodeStyle","linkStyle","chordStyle","label","labelLine"];function Hv(r){var e=r&&r.itemStyle;if(!!e)for(var t=0,a=s1.length;t=0;g--){var y=r[g];if(s||(d=y.data.rawIndexOf(y.stackedByDimension,c)),d>=0){var m=y.data.getByRawIndex(y.stackResultDimension,d);if(l==="all"||l==="positive"&&m>0||l==="negative"&&m<0||l==="samesign"&&v>=0&&m>0||l==="samesign"&&v<=0&&m<0){v=lk(v,m),p=m;break}}}return a[0]=v,a[1]=p,a})})}var Oh=function(){function r(e){this.data=e.data||(e.sourceFormat===jr?{}:[]),this.sourceFormat=e.sourceFormat||KC,this.seriesLayoutBy=e.seriesLayoutBy||Yr,this.startIndex=e.startIndex||0,this.dimensionsDetectedCount=e.dimensionsDetectedCount,this.metaRawOption=e.metaRawOption;var t=this.dimensionsDefine=e.dimensionsDefine;if(t)for(var a=0;ap&&(p=_)}c[0]=d,c[1]=p}},n=function(){return this._data?this._data.length/this._dimSize:0};d1=(e={},e[xe+"_"+Yr]={pure:!0,appendData:i},e[xe+"_"+Eo]={pure:!0,appendData:function(){throw new Error('Do not support appendData when set seriesLayoutBy: "row".')}},e[cr]={pure:!0,appendData:i},e[jr]={pure:!0,appendData:function(o){var s=this._data;A(o,function(l,u){for(var f=s[u]||(s[u]=[]),h=0;h<(l||[]).length;h++)f.push(l[h])})}},e[vr]={appendData:i},e[Ja]={persistent:!1,pure:!0,appendData:function(o){this._data=o},clean:function(){this._offset+=this.count(),this._data=null}},e);function i(o){for(var s=0;s=0&&(p=o.interpolatedValue[g])}return p!=null?p+"":""})}},r.prototype.getRawValue=function(e,t){return vo(this.getData(t),e)},r.prototype.formatTooltip=function(e,t,a){},r}();function m1(r){var e,t;return et(r)?r.type&&(t=r):e=r,{text:e,frag:t}}function ks(r){return new RO(r)}var RO=function(){function r(e){e=e||{},this._reset=e.reset,this._plan=e.plan,this._count=e.count,this._onDirty=e.onDirty,this._dirty=!0}return r.prototype.perform=function(e){var t=this._upstream,a=e&&e.skip;if(this._dirty&&t){var n=this.context;n.data=n.outputData=t.context.outputData}this.__pipeline&&(this.__pipeline.currentTask=this);var i;this._plan&&!a&&(i=this._plan(this.context));var o=f(this._modBy),s=this._modDataCount||0,l=f(e&&e.modBy),u=e&&e.modDataCount||0;(o!==l||s!==u)&&(i="reset");function f(m){return!(m>=1)&&(m=1),m}var h;(this._dirty||i==="reset")&&(this._dirty=!1,h=this._doReset(a)),this._modBy=l,this._modDataCount=u;var v=e&&e.step;if(t?this._dueEnd=t._outputDueEnd:this._dueEnd=this._count?this._count(this.context):1/0,this._progress){var c=this._dueIndex,d=Math.min(v!=null?this._dueIndex+v:1/0,this._dueEnd);if(!a&&(h||c1&&a>0?s:o}};return i;function o(){return e=r?null:le},gte:function(r,e){return r>=e}},kO=function(){function r(e,t){if(!Mt(t)){var a="";Pt(a)}this._opFn=dT[e],this._rvalFloat=ma(t)}return r.prototype.evaluate=function(e){return Mt(e)?this._opFn(e,this._rvalFloat):this._opFn(ma(e),this._rvalFloat)},r}(),pT=function(){function r(e,t){var a=e==="desc";this._resultLT=a?1:-1,t==null&&(t=a?"min":"max"),this._incomparable=t==="min"?-1/0:1/0}return r.prototype.evaluate=function(e,t){var a=Mt(e)?e:ma(e),n=Mt(t)?t:ma(t),i=isNaN(a),o=isNaN(n);if(i&&(a=this._incomparable),o&&(n=this._incomparable),i&&o){var s=U(e),l=U(t);s&&(a=l?e:0),l&&(n=s?t:0)}return an?-this._resultLT:0},r}(),OO=function(){function r(e,t){this._rval=t,this._isEQ=e,this._rvalTypeof=typeof t,this._rvalFloat=ma(t)}return r.prototype.evaluate=function(e){var t=e===this._rval;if(!t){var a=typeof e;a!==this._rvalTypeof&&(a==="number"||this._rvalTypeof==="number")&&(t=ma(e)===this._rvalFloat)}return this._isEQ?t:!t},r}();function BO(r,e){return r==="eq"||r==="ne"?new OO(r==="eq",e):Z(dT,r)?new kO(r,e):null}var NO=function(){function r(){}return r.prototype.getRawData=function(){throw new Error("not supported")},r.prototype.getRawDataItem=function(e){throw new Error("not supported")},r.prototype.cloneRawData=function(){},r.prototype.getDimensionInfo=function(e){},r.prototype.cloneAllDimensionInfo=function(){},r.prototype.count=function(){},r.prototype.retrieveValue=function(e,t){},r.prototype.retrieveValueFromItem=function(e,t){},r.prototype.convertValue=function(e,t){return Qa(e,t)},r}();function VO(r,e){var t=new NO,a=r.data,n=t.sourceFormat=r.sourceFormat,i=r.startIndex,o="";r.seriesLayoutBy!==Yr&&Pt(o);var s=[],l={},u=r.dimensionsDefine;if(u)A(u,function(p,g){var y=p.name,m={index:g,name:y,displayName:p.displayName};if(s.push(m),y!=null){var _="";Z(l,y)&&Pt(_),l[y]=m}});else for(var f=0;f65535?YO:ZO}function Vi(){return[1/0,-1/0]}function XO(r){var e=r.constructor;return e===Array?r.slice():new e(r)}function x1(r,e,t,a,n){var i=mT[t||"float"];if(n){var o=r[e],s=o&&o.length;if(s!==a){for(var l=new i(a),u=0;ug[1]&&(g[1]=p)}return this._rawCount=this._count=l,{start:s,end:l}},r.prototype._initDataFromProvider=function(e,t,a){for(var n=this._provider,i=this._chunks,o=this._dimensions,s=o.length,l=this._rawExtent,u=G(o,function(m){return m.property}),f=0;fy[1]&&(y[1]=g)}}!n.persistent&&n.clean&&n.clean(),this._rawCount=this._count=t,this._extent=[]},r.prototype.count=function(){return this._count},r.prototype.get=function(e,t){if(!(t>=0&&t=0&&t=this._rawCount||e<0)return-1;if(!this._indices)return e;var t=this._indices,a=t[e];if(a!=null&&ae)i=o-1;else return o}return-1},r.prototype.indicesOfNearest=function(e,t,a){var n=this._chunks,i=n[e],o=[];if(!i)return o;a==null&&(a=1/0);for(var s=1/0,l=-1,u=0,f=0,h=this.count();f=0&&l<0)&&(s=d,l=c,u=0),c===l&&(o[u++]=f))}return o.length=u,o},r.prototype.getIndices=function(){var e,t=this._indices;if(t){var a=t.constructor,n=this._count;if(a===Array){e=new a(n);for(var i=0;i=h&&m<=v||isNaN(m))&&(l[u++]=p),p++}d=!0}else if(i===2){for(var g=c[n[0]],_=c[n[1]],S=e[n[1]][0],w=e[n[1]][1],y=0;y=h&&m<=v||isNaN(m))&&(x>=S&&x<=w||isNaN(x))&&(l[u++]=p),p++}d=!0}}if(!d)if(i===1)for(var y=0;y=h&&m<=v||isNaN(m))&&(l[u++]=b)}else for(var y=0;ye[D][1])&&(C=!1)}C&&(l[u++]=t.getRawIndex(y))}return uy[1]&&(y[1]=g)}}}},r.prototype.lttbDownSample=function(e,t){var a=this.clone([e],!0),n=a._chunks,i=n[e],o=this.count(),s=0,l=Math.floor(1/t),u=this.getRawIndex(0),f,h,v,c=new(Xo(this._rawCount))(Math.min((Math.ceil(o/l)+2)*2,o));c[s++]=u;for(var d=1;df&&(f=h,v=S)}M>0&&Mf-d&&(l=f-d,s.length=l);for(var p=0;ph[1]&&(h[1]=y),v[c++]=m}return i._count=c,i._indices=v,i._updateGetRawIdx(),i},r.prototype.each=function(e,t){if(!!this._count)for(var a=e.length,n=this._chunks,i=0,o=this.count();il&&(l=h)}return o=[s,l],this._extent[e]=o,o},r.prototype.getRawDataItem=function(e){var t=this.getRawIndex(e);if(this._provider.persistent)return this._provider.getItem(t);for(var a=[],n=this._chunks,i=0;i=0?this._indices[e]:-1},r.prototype._updateGetRawIdx=function(){this.getRawIndex=this._indices?this._getRawIdx:this._getRawIdxIdentity},r.internalField=function(){function e(t,a,n,i){return Qa(t[i],this._dimensions[i])}Uv={arrayRows:e,objectRows:function(t,a,n,i){return Qa(t[a],this._dimensions[i])},keyedColumns:e,original:function(t,a,n,i){var o=t&&(t.value==null?t:t.value);return Qa(o instanceof Array?o[i]:o,this._dimensions[i])},typedArray:function(t,a,n,i){return t[i]}}}(),r}(),_T=function(){function r(e){this._sourceList=[],this._storeList=[],this._upstreamSignList=[],this._versionSignBase=0,this._dirty=!0,this._sourceHost=e}return r.prototype.dirty=function(){this._setLocalSource([],[]),this._storeList=[],this._dirty=!0},r.prototype._setLocalSource=function(e,t){this._sourceList=e,this._upstreamSignList=t,this._versionSignBase++,this._versionSignBase>9e10&&(this._versionSignBase=0)},r.prototype._getVersionSign=function(){return this._sourceHost.uid+"_"+this._versionSignBase},r.prototype.prepareSource=function(){this._isDirty()&&(this._createSource(),this._dirty=!1)},r.prototype._createSource=function(){this._setLocalSource([],[]);var e=this._sourceHost,t=this._getUpstreamSourceManagers(),a=!!t.length,n,i;if(lu(e)){var o=e,s=void 0,l=void 0,u=void 0;if(a){var f=t[0];f.prepareSource(),u=f.getSource(),s=u.data,l=u.sourceFormat,i=[f._getVersionSign()]}else s=o.get("data",!0),l=Ue(s)?Ja:vr,i=[];var h=this._getSourceMetaRawOption()||{},v=u&&u.metaRawOption||{},c=ft(h.seriesLayoutBy,v.seriesLayoutBy)||null,d=ft(h.sourceHeader,v.sourceHeader),p=ft(h.dimensions,v.dimensions),g=c!==v.seriesLayoutBy||!!d!=!!v.sourceHeader||p;n=g?[fp(s,{seriesLayoutBy:c,sourceHeader:d,dimensions:p},l)]:[]}else{var y=e;if(a){var m=this._applyTransform(t);n=m.sourceList,i=m.upstreamSignList}else{var _=y.get("source",!0);n=[fp(_,this._getSourceMetaRawOption(),null)],i=[]}}this._setLocalSource(n,i)},r.prototype._applyTransform=function(e){var t=this._sourceHost,a=t.get("transform",!0),n=t.get("fromTransformResult",!0);if(n!=null){var i="";e.length!==1&&b1(i)}var o,s=[],l=[];return A(e,function(u){u.prepareSource();var f=u.getSource(n||0),h="";n!=null&&!f&&b1(h),s.push(f),l.push(u._getVersionSign())}),a?o=$O(a,s,{datasetIndex:t.componentIndex}):n!=null&&(o=[TO(s[0])]),{sourceList:o,upstreamSignList:l}},r.prototype._isDirty=function(){if(this._dirty)return!0;for(var e=this._getUpstreamSourceManagers(),t=0;t1||t>0&&!r.noHeader;return A(r.blocks,function(n){var i=bT(n);i>=e&&(e=i+ +(a&&(!i||vp(n)&&!n.noHeader)))}),e}return 0}function JO(r,e,t,a){var n=e.noHeader,i=jO(bT(e)),o=[],s=e.blocks||[];Me(!s||F(s)),s=s||[];var l=r.orderMode;if(e.sortBlocks&&l){s=s.slice();var u={valueAsc:"asc",valueDesc:"desc"};if(Z(u,l)){var f=new pT(u[l],null);s.sort(function(d,p){return f.evaluate(d.sortParam,p.sortParam)})}else l==="seriesDesc"&&s.reverse()}A(s,function(d,p){var g=e.valueFormatter,y=wT(d)(g?V(V({},r),{valueFormatter:g}):r,d,p>0?i.html:0,a);y!=null&&o.push(y)});var h=r.renderMode==="richText"?o.join(i.richText):cp(o.join(""),n?t:i.html);if(n)return h;var v=sp(e.header,"ordinal",r.useUTC),c=xT(a,r.renderMode).nameStyle;return r.renderMode==="richText"?CT(r,v,c)+i.richText+h:cp('
    '+ke(v)+"
    "+h,t)}function QO(r,e,t,a){var n=r.renderMode,i=e.noName,o=e.noValue,s=!e.markerType,l=e.name,u=r.useUTC,f=e.valueFormatter||r.valueFormatter||function(S){return S=F(S)?S:[S],G(S,function(w,x){return sp(w,F(c)?c[x]:c,u)})};if(!(i&&o)){var h=s?"":r.markupStyleCreator.makeTooltipMarker(e.markerType,e.markerColor||"#333",n),v=i?"":sp(l,"ordinal",u),c=e.valueType,d=o?[]:f(e.value),p=!s||!i,g=!s&&i,y=xT(a,n),m=y.nameStyle,_=y.valueStyle;return n==="richText"?(s?"":h)+(i?"":CT(r,v,m))+(o?"":r4(r,d,p,g,_)):cp((s?"":h)+(i?"":t4(v,!s,m))+(o?"":e4(d,p,g,_)),t)}}function C1(r,e,t,a,n,i){if(!!r){var o=wT(r),s={useUTC:n,renderMode:t,orderMode:a,markupStyleCreator:e,valueFormatter:r.valueFormatter};return o(s,r,0,i)}}function jO(r){return{html:qO[r],richText:KO[r]}}function cp(r,e){var t='
    ',a="margin: "+e+"px 0 0";return'
    '+r+t+"
    "}function t4(r,e,t){var a=e?"margin-left:2px":"";return''+ke(r)+""}function e4(r,e,t,a){var n=t?"10px":"20px",i=e?"float:right;margin-left:"+n:"";return r=F(r)?r:[r],''+G(r,function(o){return ke(o)}).join("  ")+""}function CT(r,e,t){return r.markupStyleCreator.wrapRichTextStyle(e,t)}function r4(r,e,t,a,n){var i=[n],o=a?10:20;return t&&i.push({padding:[0,0,0,o],align:"right"}),r.markupStyleCreator.wrapRichTextStyle(F(e)?e.join(" "):e,i)}function TT(r,e){var t=r.getData().getItemVisual(e,"style"),a=t[r.visualDrawType];return yi(a)}function AT(r,e){var t=r.get("padding");return t!=null?t:e==="richText"?[8,10]:10}var Yv=function(){function r(){this.richTextStyles={},this._nextStyleNameId=C2()}return r.prototype._generateStyleName=function(){return"__EC_aUTo_"+this._nextStyleNameId++},r.prototype.makeTooltipMarker=function(e,t,a){var n=a==="richText"?this._generateStyleName():null,i=$3({color:t,type:e,renderMode:a,markerId:n});return U(i)?i:(this.richTextStyles[n]=i.style,i.content)},r.prototype.wrapRichTextStyle=function(e,t){var a={};F(t)?A(t,function(i){return V(a,i)}):V(a,t);var n=this._generateStyleName();return this.richTextStyles[n]=a,"{"+n+"|"+e+"}"},r}();function DT(r){var e=r.series,t=r.dataIndex,a=r.multipleSeries,n=e.getData(),i=n.mapDimensionsAll("defaultedTooltip"),o=i.length,s=e.getRawValue(t),l=F(s),u=TT(e,t),f,h,v,c;if(o>1||l&&!o){var d=a4(s,e,t,i,u);f=d.inlineValues,h=d.inlineValueTypes,v=d.blocks,c=d.inlineValues[0]}else if(o){var p=n.getDimensionInfo(i[0]);c=f=vo(n,t,i[0]),h=p.type}else c=f=l?s[0]:s;var g=Ig(e),y=g&&e.name||"",m=n.getName(t),_=a?y:m;return oe("section",{header:y,noHeader:a||!g,sortParam:c,blocks:[oe("nameValue",{markerType:"item",markerColor:u,name:_,noName:!Sr(_),value:f,valueType:h})].concat(v||[])})}function a4(r,e,t,a,n){var i=e.getData(),o=Zr(r,function(h,v,c){var d=i.getDimensionInfo(c);return h=h||d&&d.tooltip!==!1&&d.displayName!=null},!1),s=[],l=[],u=[];a.length?A(a,function(h){f(vo(i,t,h),h)}):A(r,f);function f(h,v){var c=i.getDimensionInfo(v);!c||c.otherDims.tooltip===!1||(o?u.push(oe("nameValue",{markerType:"subItem",markerColor:n,name:c.displayName,value:h,valueType:c.type})):(s.push(h),l.push(c.type)))}return{inlineValues:s,inlineValueTypes:l,blocks:u}}var Pa=Ct();function uu(r,e){return r.getName(e)||r.getId(e)}var sf="__universalTransitionEnabled",Nh=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t._selectedDataIndicesMap={},t}return e.prototype.init=function(t,a,n){this.seriesIndex=this.componentIndex,this.dataTask=ks({count:i4,reset:o4}),this.dataTask.context={model:this},this.mergeDefaultAndTheme(t,n);var i=Pa(this).sourceManager=new _T(this);i.prepareSource();var o=this.getInitialData(t,n);A1(o,this),this.dataTask.context.data=o,Pa(this).dataBeforeProcessed=o,T1(this),this._initSelectedMapFromData(o)},e.prototype.mergeDefaultAndTheme=function(t,a){var n=tl(this),i=n?Po(t):{},o=this.subType;Tt.hasClass(o)&&(o+="Series"),ht(t,a.getTheme().get(this.subType)),ht(t,this.getDefaultOption()),ci(t,"label",["show"]),this.fillDataTextStyle(t.data),n&&an(t,i,n)},e.prototype.mergeOption=function(t,a){t=ht(this.option,t,!0),this.fillDataTextStyle(t.data);var n=tl(this);n&&an(this.option,t,n);var i=Pa(this).sourceManager;i.dirty(),i.prepareSource();var o=this.getInitialData(t,a);A1(o,this),this.dataTask.dirty(),this.dataTask.context.data=o,Pa(this).dataBeforeProcessed=o,T1(this),this._initSelectedMapFromData(o)},e.prototype.fillDataTextStyle=function(t){if(t&&!Ue(t))for(var a=["show"],n=0;nthis.getShallow("animationThreshold")&&(a=!1),!!a},e.prototype.restoreData=function(){this.dataTask.dirty()},e.prototype.getColorFromPalette=function(t,a,n){var i=this.ecModel,o=jg.prototype.getColorFromPalette.call(this,t,a,n);return o||(o=i.getColorFromPalette(t,a,n)),o},e.prototype.coordDimToDataDim=function(t){return this.getRawData().mapDimensionsAll(t)},e.prototype.getProgressive=function(){return this.get("progressive")},e.prototype.getProgressiveThreshold=function(){return this.get("progressiveThreshold")},e.prototype.select=function(t,a){this._innerSelect(this.getData(a),t)},e.prototype.unselect=function(t,a){var n=this.option.selectedMap;if(!!n){var i=this.option.selectedMode,o=this.getData(a);if(i==="series"||n==="all"){this.option.selectedMap={},this._selectedDataIndicesMap={};return}for(var s=0;s=0&&n.push(o)}return n},e.prototype.isSelected=function(t,a){var n=this.option.selectedMap;if(!n)return!1;var i=this.getData(a);return(n==="all"||n[uu(i,t)])&&!i.getItemModel(t).get(["select","disabled"])},e.prototype.isUniversalTransitionEnabled=function(){if(this[sf])return!0;var t=this.option.universalTransition;return t?t===!0?!0:t&&t.enabled:!1},e.prototype._innerSelect=function(t,a){var n,i,o=this.option,s=o.selectedMode,l=a.length;if(!(!s||!l)){if(s==="series")o.selectedMap="all";else if(s==="multiple"){et(o.selectedMap)||(o.selectedMap={});for(var u=o.selectedMap,f=0;f0&&this._innerSelect(t,a)}},e.registerClass=function(t){return Tt.registerClass(t)},e.protoInitialize=function(){var t=e.prototype;t.type="series.__base__",t.seriesIndex=0,t.ignoreStyleOnData=!1,t.hasSymbolVisual=!1,t.defaultSymbol="circle",t.visualStyleAccessPath="itemStyle",t.visualDrawType="fill"}(),e}(Tt);te(Nh,ay);te(Nh,jg);E2(Nh,Tt);function T1(r){var e=r.name;Ig(r)||(r.name=n4(r)||e)}function n4(r){var e=r.getRawData(),t=e.mapDimensionsAll("seriesName"),a=[];return A(t,function(n){var i=e.getDimensionInfo(n);i.displayName&&a.push(i.displayName)}),a.join(" ")}function i4(r){return r.model.getRawData().count()}function o4(r){var e=r.model;return e.setData(e.getRawData().cloneShallow()),s4}function s4(r,e){e.outputData&&r.end>e.outputData.count()&&e.model.getRawData().cloneShallow(e.outputData)}function A1(r,e){A(gf(r.CHANGABLE_METHODS,r.DOWNSAMPLE_METHODS),function(t){r.wrapMethod(t,ot(l4,e))})}function l4(r,e){var t=dp(r);return t&&t.setOutputEnd((e||this).count()),e}function dp(r){var e=(r.ecModel||{}).scheduler,t=e&&e.getPipeline(r.uid);if(t){var a=t.currentTask;if(a){var n=a.agentStubMap;n&&(a=n.get(r.uid))}return a}}var Ht=Nh,iy=function(){function r(){this.group=new nt,this.uid=Lo("viewComponent")}return r.prototype.init=function(e,t){},r.prototype.render=function(e,t,a,n){},r.prototype.dispose=function(e,t){},r.prototype.updateView=function(e,t,a,n){},r.prototype.updateLayout=function(e,t,a,n){},r.prototype.updateVisual=function(e,t,a,n){},r.prototype.toggleBlurSeries=function(e,t,a){},r.prototype.eachRendered=function(e){var t=this.group;t&&t.traverse(e)},r}();Rg(iy);mh(iy);var Ut=iy;function ko(){var r=Ct();return function(e){var t=r(e),a=e.pipelineContext,n=!!t.large,i=!!t.progressiveRender,o=t.large=!!(a&&a.large),s=t.progressiveRender=!!(a&&a.progressiveRender);return(n!==o||i!==s)&&"reset"}}var MT=Ct(),u4=ko(),oy=function(){function r(){this.group=new nt,this.uid=Lo("viewChart"),this.renderTask=ks({plan:f4,reset:h4}),this.renderTask.context={view:this}}return r.prototype.init=function(e,t){},r.prototype.render=function(e,t,a,n){},r.prototype.highlight=function(e,t,a,n){var i=e.getData(n&&n.dataType);!i||M1(i,n,"emphasis")},r.prototype.downplay=function(e,t,a,n){var i=e.getData(n&&n.dataType);!i||M1(i,n,"normal")},r.prototype.remove=function(e,t){this.group.removeAll()},r.prototype.dispose=function(e,t){},r.prototype.updateView=function(e,t,a,n){this.render(e,t,a,n)},r.prototype.updateLayout=function(e,t,a,n){this.render(e,t,a,n)},r.prototype.updateVisual=function(e,t,a,n){this.render(e,t,a,n)},r.prototype.eachRendered=function(e){vn(this.group,e)},r.markUpdateMethod=function(e,t){MT(e).updateMethod=t},r.protoInitialize=function(){var e=r.prototype;e.type="chart"}(),r}();function D1(r,e,t){r&&Ks(r)&&(e==="emphasis"?_a:Sa)(r,t)}function M1(r,e,t){var a=di(r,e),n=e&&e.highlightKey!=null?N5(e.highlightKey):null;a!=null?A(kt(a),function(i){D1(r.getItemGraphicEl(i),t,n)}):r.eachItemGraphicEl(function(i){D1(i,t,n)})}Rg(oy);mh(oy);function f4(r){return u4(r.model)}function h4(r){var e=r.model,t=r.ecModel,a=r.api,n=r.payload,i=e.pipelineContext.progressiveRender,o=r.view,s=n&&MT(n).updateMethod,l=i?"incrementalPrepareRender":s&&o[s]?s:"render";return l!=="render"&&o[l](e,t,a,n),v4[l]}var v4={incrementalPrepareRender:{progress:function(r,e){e.view.incrementalRender(r,e.model,e.ecModel,e.api,e.payload)}},render:{forceFirstProgress:!0,progress:function(r,e){e.view.render(e.model,e.ecModel,e.api,e.payload)}}},zt=oy,Ef="\0__throttleOriginMethod",L1="\0__throttleRate",I1="\0__throttleType";function sy(r,e,t){var a,n=0,i=0,o=null,s,l,u,f;e=e||0;function h(){i=new Date().getTime(),o=null,r.apply(l,u||[])}var v=function(){for(var c=[],d=0;d=0?h():o=setTimeout(h,-s),n=a};return v.clear=function(){o&&(clearTimeout(o),o=null)},v.debounceNextCall=function(c){f=c},v}function Oo(r,e,t,a){var n=r[e];if(!!n){var i=n[Ef]||n,o=n[I1],s=n[L1];if(s!==t||o!==a){if(t==null||!a)return r[e]=i;n=r[e]=sy(i,t,a==="debounce"),n[Ef]=i,n[I1]=a,n[L1]=t}return n}}function rl(r,e){var t=r[e];t&&t[Ef]&&(t.clear&&t.clear(),r[e]=t[Ef])}var P1=Ct(),R1={itemStyle:pi(RC,!0),lineStyle:pi(PC,!0)},c4={lineStyle:"stroke",itemStyle:"fill"};function LT(r,e){var t=r.visualStyleMapper||R1[e];return t||(console.warn("Unknown style type '"+e+"'."),R1.itemStyle)}function IT(r,e){var t=r.visualDrawType||c4[e];return t||(console.warn("Unknown style type '"+e+"'."),"fill")}var d4={createOnAllSeries:!0,performRawSeries:!0,reset:function(r,e){var t=r.getData(),a=r.visualStyleAccessPath||"itemStyle",n=r.getModel(a),i=LT(r,a),o=i(n),s=n.getShallow("decal");s&&(t.setVisual("decal",s),s.dirty=!0);var l=IT(r,a),u=o[l],f=J(u)?u:null,h=o.fill==="auto"||o.stroke==="auto";if(!o[l]||f||h){var v=r.getColorFromPalette(r.name,null,e.getSeriesCount());o[l]||(o[l]=v,t.setVisual("colorFromPalette",!0)),o.fill=o.fill==="auto"||J(o.fill)?v:o.fill,o.stroke=o.stroke==="auto"||J(o.stroke)?v:o.stroke}if(t.setVisual("style",o),t.setVisual("drawType",l),!e.isSeriesFiltered(r)&&f)return t.setVisual("colorFromPalette",!1),{dataEach:function(c,d){var p=r.getDataParams(d),g=V({},o);g[l]=f(p),c.setItemVisual(d,"style",g)}}}},qo=new Vt,p4={createOnAllSeries:!0,performRawSeries:!0,reset:function(r,e){if(!(r.ignoreStyleOnData||e.isSeriesFiltered(r))){var t=r.getData(),a=r.visualStyleAccessPath||"itemStyle",n=LT(r,a),i=t.getVisual("drawType");return{dataEach:t.hasItemOption?function(o,s){var l=o.getRawDataItem(s);if(l&&l[a]){qo.option=l[a];var u=n(qo),f=o.ensureUniqueItemVisual(s,"style");V(f,u),qo.option.decal&&(o.setItemVisual(s,"decal",qo.option.decal),qo.option.decal.dirty=!0),i in u&&o.setItemVisual(s,"colorFromPalette",!1)}}:null}}}},g4={performRawSeries:!0,overallReset:function(r){var e=q();r.eachSeries(function(t){var a=t.getColorBy();if(!t.isColorBySeries()){var n=t.type+"-"+a,i=e.get(n);i||(i={},e.set(n,i)),P1(t).scope=i}}),r.eachSeries(function(t){if(!(t.isColorBySeries()||r.isSeriesFiltered(t))){var a=t.getRawData(),n={},i=t.getData(),o=P1(t).scope,s=t.visualStyleAccessPath||"itemStyle",l=IT(t,s);i.each(function(u){var f=i.getRawIndex(u);n[f]=u}),a.each(function(u){var f=n[u],h=i.getItemVisual(f,"colorFromPalette");if(h){var v=i.ensureUniqueItemVisual(f,"style"),c=a.getName(u)||u+"",d=a.count();v[l]=t.getColorFromPalette(c,o,d)}})}})}},fu=Math.PI;function y4(r,e){e=e||{},tt(e,{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 t=new nt,a=new bt({style:{fill:e.maskColor},zlevel:e.zlevel,z:1e4});t.add(a);var n=new Dt({style:{text:e.text,fill:e.textColor,fontSize:e.fontSize,fontWeight:e.fontWeight,fontStyle:e.fontStyle,fontFamily:e.fontFamily},zlevel:e.zlevel,z:10001}),i=new bt({style:{fill:"none"},textContent:n,textConfig:{position:"right",distance:10},zlevel:e.zlevel,z:10001});t.add(i);var o;return e.showSpinner&&(o=new Gg({shape:{startAngle:-fu/2,endAngle:-fu/2+.1,r:e.spinnerRadius},style:{stroke:e.color,lineCap:"round",lineWidth:e.lineWidth},zlevel:e.zlevel,z:10001}),o.animateShape(!0).when(1e3,{endAngle:fu*3/2}).start("circularInOut"),o.animateShape(!0).when(1e3,{startAngle:fu*3/2}).delay(300).start("circularInOut"),t.add(o)),t.resize=function(){var s=n.getBoundingRect().width,l=e.showSpinner?e.spinnerRadius:0,u=(r.getWidth()-l*2-(e.showSpinner&&s?10:0)-s)/2-(e.showSpinner&&s?0:5+s/2)+(e.showSpinner?0:s/2)+(s?0:l),f=r.getHeight()/2;e.showSpinner&&o.setShape({cx:u,cy:f}),i.setShape({x:u-l,y:f-l,width:l*2,height:l*2}),a.setShape({x:0,y:0,width:r.getWidth(),height:r.getHeight()})},t.resize(),t}var m4=function(){function r(e,t,a,n){this._stageTaskMap=q(),this.ecInstance=e,this.api=t,a=this._dataProcessorHandlers=a.slice(),n=this._visualHandlers=n.slice(),this._allHandlers=a.concat(n)}return r.prototype.restoreData=function(e,t){e.restoreData(t),this._stageTaskMap.each(function(a){var n=a.overallTask;n&&n.dirty()})},r.prototype.getPerformArgs=function(e,t){if(!!e.__pipeline){var a=this._pipelineMap.get(e.__pipeline.id),n=a.context,i=!t&&a.progressiveEnabled&&(!n||n.progressiveRender)&&e.__idxInPipeline>a.blockIndex,o=i?a.step:null,s=n&&n.modDataCount,l=s!=null?Math.ceil(s/o):null;return{step:o,modBy:l,modDataCount:s}}},r.prototype.getPipeline=function(e){return this._pipelineMap.get(e)},r.prototype.updateStreamModes=function(e,t){var a=this._pipelineMap.get(e.uid),n=e.getData(),i=n.count(),o=a.progressiveEnabled&&t.incrementalPrepareRender&&i>=a.threshold,s=e.get("large")&&i>=e.get("largeThreshold"),l=e.get("progressiveChunkMode")==="mod"?i:null;e.pipelineContext=a.context={progressiveRender:o,modDataCount:l,large:s}},r.prototype.restorePipelines=function(e){var t=this,a=t._pipelineMap=q();e.eachSeries(function(n){var i=n.getProgressive(),o=n.uid;a.set(o,{id:o,head:null,tail:null,threshold:n.getProgressiveThreshold(),progressiveEnabled:i&&!(n.preventIncremental&&n.preventIncremental()),blockIndex:-1,step:Math.round(i||700),count:0}),t._pipe(n,n.dataTask)})},r.prototype.prepareStageTasks=function(){var e=this._stageTaskMap,t=this.api.getModel(),a=this.api;A(this._allHandlers,function(n){var i=e.get(n.uid)||e.set(n.uid,{}),o="";Me(!(n.reset&&n.overallReset),o),n.reset&&this._createSeriesStageTask(n,i,t,a),n.overallReset&&this._createOverallStageTask(n,i,t,a)},this)},r.prototype.prepareView=function(e,t,a,n){var i=e.renderTask,o=i.context;o.model=t,o.ecModel=a,o.api=n,i.__block=!e.incrementalPrepareRender,this._pipe(t,i)},r.prototype.performDataProcessorTasks=function(e,t){this._performStageTasks(this._dataProcessorHandlers,e,t,{block:!0})},r.prototype.performVisualTasks=function(e,t,a){this._performStageTasks(this._visualHandlers,e,t,a)},r.prototype._performStageTasks=function(e,t,a,n){n=n||{};var i=!1,o=this;A(e,function(l,u){if(!(n.visualType&&n.visualType!==l.visualType)){var f=o._stageTaskMap.get(l.uid),h=f.seriesTaskMap,v=f.overallTask;if(v){var c,d=v.agentStubMap;d.each(function(g){s(n,g)&&(g.dirty(),c=!0)}),c&&v.dirty(),o.updatePayload(v,a);var p=o.getPerformArgs(v,n.block);d.each(function(g){g.perform(p)}),v.perform(p)&&(i=!0)}else h&&h.each(function(g,y){s(n,g)&&g.dirty();var m=o.getPerformArgs(g,n.block);m.skip=!l.performRawSeries&&t.isSeriesFiltered(g.context.model),o.updatePayload(g,a),g.perform(m)&&(i=!0)})}});function s(l,u){return l.setDirty&&(!l.dirtyMap||l.dirtyMap.get(u.__pipeline.id))}this.unfinished=i||this.unfinished},r.prototype.performSeriesTasks=function(e){var t;e.eachSeries(function(a){t=a.dataTask.perform()||t}),this.unfinished=t||this.unfinished},r.prototype.plan=function(){this._pipelineMap.each(function(e){var t=e.tail;do{if(t.__block){e.blockIndex=t.__idxInPipeline;break}t=t.getUpstream()}while(t)})},r.prototype.updatePayload=function(e,t){t!=="remain"&&(e.context.payload=t)},r.prototype._createSeriesStageTask=function(e,t,a,n){var i=this,o=t.seriesTaskMap,s=t.seriesTaskMap=q(),l=e.seriesType,u=e.getTargetSeries;e.createOnAllSeries?a.eachRawSeries(f):l?a.eachRawSeriesByType(l,f):u&&u(a,n).each(f);function f(h){var v=h.uid,c=s.set(v,o&&o.get(v)||ks({plan:b4,reset:C4,count:A4}));c.context={model:h,ecModel:a,api:n,useClearVisual:e.isVisual&&!e.isLayout,plan:e.plan,reset:e.reset,scheduler:i},i._pipe(h,c)}},r.prototype._createOverallStageTask=function(e,t,a,n){var i=this,o=t.overallTask=t.overallTask||ks({reset:_4});o.context={ecModel:a,api:n,overallReset:e.overallReset,scheduler:i};var s=o.agentStubMap,l=o.agentStubMap=q(),u=e.seriesType,f=e.getTargetSeries,h=!0,v=!1,c="";Me(!e.createOnAllSeries,c),u?a.eachRawSeriesByType(u,d):f?f(a,n).each(d):(h=!1,A(a.getSeries(),d));function d(p){var g=p.uid,y=l.set(g,s&&s.get(g)||(v=!0,ks({reset:S4,onDirty:w4})));y.context={model:p,overallProgress:h},y.agent=o,y.__block=h,i._pipe(p,y)}v&&o.dirty()},r.prototype._pipe=function(e,t){var a=e.uid,n=this._pipelineMap.get(a);!n.head&&(n.head=t),n.tail&&n.tail.pipe(t),n.tail=t,t.__idxInPipeline=n.count++,t.__pipeline=n},r.wrapStageHandler=function(e,t){return J(e)&&(e={overallReset:e,seriesType:D4(e)}),e.uid=Lo("stageHandler"),t&&(e.visualType=t),e},r}();function _4(r){r.overallReset(r.ecModel,r.api,r.payload)}function S4(r){return r.overallProgress&&x4}function x4(){this.agent.dirty(),this.getDownstream().dirty()}function w4(){this.agent&&this.agent.dirty()}function b4(r){return r.plan?r.plan(r.model,r.ecModel,r.api,r.payload):null}function C4(r){r.useClearVisual&&r.data.clearAllVisual();var e=r.resetDefines=kt(r.reset(r.model,r.ecModel,r.api,r.payload));return e.length>1?G(e,function(t,a){return PT(a)}):T4}var T4=PT(0);function PT(r){return function(e,t){var a=t.data,n=t.resetDefines[r];if(n&&n.dataEach)for(var i=e.start;i0&&c===u.length-v.length){var d=u.slice(0,c);d!=="data"&&(t.mainType=d,t[v.toLowerCase()]=l,f=!0)}}s.hasOwnProperty(u)&&(a[u]=l,f=!0),f||(n[u]=l)})}return{cptQuery:t,dataQuery:a,otherQuery:n}},r.prototype.filter=function(e,t){var a=this.eventInfo;if(!a)return!0;var n=a.targetEl,i=a.packedEvent,o=a.model,s=a.view;if(!o||!s)return!0;var l=t.cptQuery,u=t.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,i,"name")&&f(u,i,"dataIndex")&&f(u,i,"dataType")&&(!s.filterForExposedEvent||s.filterForExposedEvent(e,t.otherQuery,n,i));function f(h,v,c,d){return h[c]==null||v[d||c]===h[c]}},r.prototype.afterTrigger=function(){this.eventInfo=null},r}(),pp=["symbol","symbolSize","symbolRotate","symbolOffset"],B1=pp.concat(["symbolKeepAspect"]),P4={createOnAllSeries:!0,performRawSeries:!0,reset:function(r,e){var t=r.getData();if(r.legendIcon&&t.setVisual("legendIcon",r.legendIcon),!r.hasSymbolVisual)return;for(var a={},n={},i=!1,o=0;o=0&&ti(l)?l:.5;var u=r.createRadialGradient(o,s,0,o,s,l);return u}function gp(r,e,t){for(var a=e.type==="radial"?Z4(r,e,t):Y4(r,e,t),n=e.colorStops,i=0;i0)?null:r==="dashed"?[4*e,2*e]:r==="dotted"?[e]:Mt(r)?[r]:F(r)?r:null}function uy(r){var e=r.style,t=e.lineDash&&e.lineWidth>0&&q4(e.lineDash,e.lineWidth),a=e.lineDashOffset;if(t){var n=e.strokeNoScale&&r.getLineScale?r.getLineScale():1;n&&n!==1&&(t=G(t,function(i){return i/n}),a/=n)}return[t,a]}var K4=new Jr(!0);function Bf(r){var e=r.stroke;return!(e==null||e==="none"||!(r.lineWidth>0))}function N1(r){return typeof r=="string"&&r!=="none"}function Nf(r){var e=r.fill;return e!=null&&e!=="none"}function V1(r,e){if(e.fillOpacity!=null&&e.fillOpacity!==1){var t=r.globalAlpha;r.globalAlpha=e.fillOpacity*e.opacity,r.fill(),r.globalAlpha=t}else r.fill()}function z1(r,e){if(e.strokeOpacity!=null&&e.strokeOpacity!==1){var t=r.globalAlpha;r.globalAlpha=e.strokeOpacity*e.opacity,r.stroke(),r.globalAlpha=t}else r.stroke()}function yp(r,e,t){var a=Eg(e.image,e.__image,t);if(_h(a)){var n=r.createPattern(a,e.repeat||"repeat");if(typeof DOMMatrix=="function"&&n&&n.setTransform){var i=new DOMMatrix;i.translateSelf(e.x||0,e.y||0),i.rotateSelf(0,0,(e.rotation||0)*Yu),i.scaleSelf(e.scaleX||1,e.scaleY||1),n.setTransform(i)}return n}}function J4(r,e,t,a){var n,i=Bf(t),o=Nf(t),s=t.strokePercent,l=s<1,u=!e.path;(!e.silent||l)&&u&&e.createPathProxy();var f=e.path||K4,h=e.__dirty;if(!a){var v=t.fill,c=t.stroke,d=o&&!!v.colorStops,p=i&&!!c.colorStops,g=o&&!!v.image,y=i&&!!c.image,m=void 0,_=void 0,S=void 0,w=void 0,x=void 0;(d||p)&&(x=e.getBoundingRect()),d&&(m=h?gp(r,v,x):e.__canvasFillGradient,e.__canvasFillGradient=m),p&&(_=h?gp(r,c,x):e.__canvasStrokeGradient,e.__canvasStrokeGradient=_),g&&(S=h||!e.__canvasFillPattern?yp(r,v,e):e.__canvasFillPattern,e.__canvasFillPattern=S),y&&(w=h||!e.__canvasStrokePattern?yp(r,c,e):e.__canvasStrokePattern,e.__canvasStrokePattern=S),d?r.fillStyle=m:g&&(S?r.fillStyle=S:o=!1),p?r.strokeStyle=_:y&&(w?r.strokeStyle=w:i=!1)}var b=e.getGlobalScale();f.setScale(b[0],b[1],e.segmentIgnoreThreshold);var C,T;r.setLineDash&&t.lineDash&&(n=uy(e),C=n[0],T=n[1]);var D=!0;(u||h&Ji)&&(f.setDPR(r.dpr),l?f.setContext(null):(f.setContext(r),D=!1),f.reset(),e.buildPath(f,e.shape,a),f.toStatic(),e.pathUpdated()),D&&f.rebuildPath(r,l?s:1),C&&(r.setLineDash(C),r.lineDashOffset=T),a||(t.strokeFirst?(i&&z1(r,t),o&&V1(r,t)):(o&&V1(r,t),i&&z1(r,t))),C&&r.setLineDash([])}function Q4(r,e,t){var a=e.__image=Eg(t.image,e.__image,e,e.onload);if(!(!a||!_h(a))){var n=t.x||0,i=t.y||0,o=e.getWidth(),s=e.getHeight(),l=a.width/a.height;if(o==null&&s!=null?o=s*l:s==null&&o!=null?s=o/l:o==null&&s==null&&(o=a.width,s=a.height),t.sWidth&&t.sHeight){var u=t.sx||0,f=t.sy||0;r.drawImage(a,u,f,t.sWidth,t.sHeight,n,i,o,s)}else if(t.sx&&t.sy){var u=t.sx,f=t.sy,h=o-u,v=s-f;r.drawImage(a,u,f,h,v,n,i,o,s)}else r.drawImage(a,n,i,o,s)}}function j4(r,e,t){var a,n=t.text;if(n!=null&&(n+=""),n){r.font=t.font||tn,r.textAlign=t.textAlign,r.textBaseline=t.textBaseline;var i=void 0,o=void 0;r.setLineDash&&t.lineDash&&(a=uy(e),i=a[0],o=a[1]),i&&(r.setLineDash(i),r.lineDashOffset=o),t.strokeFirst?(Bf(t)&&r.strokeText(n,t.x,t.y),Nf(t)&&r.fillText(n,t.x,t.y)):(Nf(t)&&r.fillText(n,t.x,t.y),Bf(t)&&r.strokeText(n,t.x,t.y)),i&&r.setLineDash([])}}var F1=["shadowBlur","shadowOffsetX","shadowOffsetY"],G1=[["lineCap","butt"],["lineJoin","miter"],["miterLimit",10]];function VT(r,e,t,a,n){var i=!1;if(!a&&(t=t||{},e===t))return!1;if(a||e.opacity!==t.opacity){Ne(r,n),i=!0;var o=Math.max(Math.min(e.opacity,1),0);r.globalAlpha=isNaN(o)?ii.opacity:o}(a||e.blend!==t.blend)&&(i||(Ne(r,n),i=!0),r.globalCompositeOperation=e.blend||ii.blend);for(var s=0;s0&&t.unfinished);t.unfinished||this._zr.flush()}}},e.prototype.getDom=function(){return this._dom},e.prototype.getId=function(){return this.id},e.prototype.getZr=function(){return this._zr},e.prototype.isSSR=function(){return this._ssr},e.prototype.setOption=function(t,a,n){if(!this[me]){if(this._disposed){this.id;return}var i,o,s;if(et(a)&&(n=a.lazyUpdate,i=a.silent,o=a.replaceMerge,s=a.transition,a=a.notMerge),this[me]=!0,!this._model||a){var l=new pO(this._api),u=this._theme,f=this._model=new aT;f.scheduler=this._scheduler,f.ssr=this._ssr,f.init(null,null,null,u,this._locale,l)}this._model.setOption(t,{replaceMerge:o},_p);var h={seriesTransition:s,optionChanged:!0};if(n)this[Re]={silent:i,updateParams:h},this[me]=!1,this.getZr().wakeUp();else{try{Fi(this),Ra.update.call(this,null,h)}catch(v){throw this[Re]=null,this[me]=!1,v}this._ssr||this._zr.flush(),this[Re]=null,this[me]=!1,Ko.call(this,i),Jo.call(this,i)}}},e.prototype.setTheme=function(){},e.prototype.getModel=function(){return this._model},e.prototype.getOption=function(){return this._model&&this._model.getOption()},e.prototype.getWidth=function(){return this._zr.getWidth()},e.prototype.getHeight=function(){return this._zr.getHeight()},e.prototype.getDevicePixelRatio=function(){return this._zr.painter.dpr||At.hasGlobalWindow&&window.devicePixelRatio||1},e.prototype.getRenderedCanvas=function(t){return this.renderToCanvas(t)},e.prototype.renderToCanvas=function(t){t=t||{};var a=this._zr.painter;return a.getRenderedCanvas({backgroundColor:t.backgroundColor||this._model.get("backgroundColor"),pixelRatio:t.pixelRatio||this.getDevicePixelRatio()})},e.prototype.renderToSVGString=function(t){t=t||{};var a=this._zr.painter;return a.renderToString({useViewBox:t.useViewBox})},e.prototype.getSvgDataURL=function(){if(!!At.svgSupported){var t=this._zr,a=t.storage.getDisplayList();return A(a,function(n){n.stopAnimation(null,!0)}),t.painter.toDataURL()}},e.prototype.getDataURL=function(t){if(this._disposed){this.id;return}t=t||{};var a=t.excludeComponents,n=this._model,i=[],o=this;A(a,function(l){n.eachComponent({mainType:l},function(u){var f=o._componentsMap[u.__viewId];f.group.ignore||(i.push(f),f.group.ignore=!0)})});var s=this._zr.painter.getType()==="svg"?this.getSvgDataURL():this.renderToCanvas(t).toDataURL("image/"+(t&&t.type||"png"));return A(i,function(l){l.group.ignore=!1}),s},e.prototype.getConnectedDataURL=function(t){if(this._disposed){this.id;return}var a=t.type==="svg",n=this.group,i=Math.min,o=Math.max,s=1/0;if(r_[n]){var l=s,u=s,f=-s,h=-s,v=[],c=t&&t.pixelRatio||this.getDevicePixelRatio();A(Bs,function(_,S){if(_.group===n){var w=a?_.getZr().painter.getSvgDom().innerHTML:_.renderToCanvas(at(t)),x=_.getDom().getBoundingClientRect();l=i(x.left,l),u=i(x.top,u),f=o(x.right,f),h=o(x.bottom,h),v.push({dom:w,left:x.left,top:x.top})}}),l*=c,u*=c,f*=c,h*=c;var d=f-l,p=h-u,g=ga.createCanvas(),y=i0(g,{renderer:a?"svg":"canvas"});if(y.resize({width:d,height:p}),a){var m="";return A(v,function(_){var S=_.left-l,w=_.top-u;m+=''+_.dom+""}),y.painter.getSvgRoot().innerHTML=m,t.connectedBackgroundColor&&y.painter.setBackgroundColor(t.connectedBackgroundColor),y.refreshImmediately(),y.painter.toDataURL()}else return t.connectedBackgroundColor&&y.add(new bt({shape:{x:0,y:0,width:d,height:p},style:{fill:t.connectedBackgroundColor}})),A(v,function(_){var S=new pe({style:{x:_.left*c-l,y:_.top*c-u,image:_.dom}});y.add(S)}),y.refreshImmediately(),g.toDataURL("image/"+(t&&t.type||"png"))}else return this.getDataURL(t)},e.prototype.convertToPixel=function(t,a){return Jv(this,"convertToPixel",t,a)},e.prototype.convertFromPixel=function(t,a){return Jv(this,"convertFromPixel",t,a)},e.prototype.containPixel=function(t,a){if(this._disposed){this.id;return}var n=this._model,i,o=Ls(n,t);return A(o,function(s,l){l.indexOf("Models")>=0&&A(s,function(u){var f=u.coordinateSystem;if(f&&f.containPoint)i=i||!!f.containPoint(a);else if(l==="seriesModels"){var h=this._chartsMap[u.__viewId];h&&h.containPoint&&(i=i||h.containPoint(a,u))}},this)},this),!!i},e.prototype.getVisual=function(t,a){var n=this._model,i=Ls(n,t,{defaultMainType:"series"}),o=i.seriesModel,s=o.getData(),l=i.hasOwnProperty("dataIndexInside")?i.dataIndexInside:i.hasOwnProperty("dataIndex")?s.indexOfRawIndex(i.dataIndex):null;return l!=null?ly(s,l,a):Ll(s,a)},e.prototype.getViewOfComponentModel=function(t){return this._componentsMap[t.__viewId]},e.prototype.getViewOfSeriesModel=function(t){return this._chartsMap[t.__viewId]},e.prototype._initEvents=function(){var t=this;A(TB,function(a){var n=function(i){var o=t.getModel(),s=i.target,l,u=a==="globalout";if(u?l={}:s&&jn(s,function(d){var p=it(d);if(p&&p.dataIndex!=null){var g=p.dataModel||o.getSeriesByIndex(p.seriesIndex);return l=g&&g.getDataParams(p.dataIndex,p.dataType,s)||{},!0}else if(p.eventData)return l=V({},p.eventData),!0},!0),l){var f=l.componentType,h=l.componentIndex;(f==="markLine"||f==="markPoint"||f==="markArea")&&(f="series",h=l.seriesIndex);var v=f&&h!=null&&o.getComponent(f,h),c=v&&t[v.mainType==="series"?"_chartsMap":"_componentsMap"][v.__viewId];l.event=i,l.type=a,t._$eventProcessor.eventInfo={targetEl:s,packedEvent:l,model:v,view:c},t.trigger(a,l)}};n.zrEventfulCallAtLast=!0,t._zr.on(a,n,t)}),A(Os,function(a,n){t._messageCenter.on(n,function(i){this.trigger(n,i)},t)}),A(["selectchanged"],function(a){t._messageCenter.on(a,function(n){this.trigger(a,n)},t)}),E4(this._messageCenter,this,this._api)},e.prototype.isDisposed=function(){return this._disposed},e.prototype.clear=function(){if(this._disposed){this.id;return}this.setOption({series:[]},!0)},e.prototype.dispose=function(){if(this._disposed){this.id;return}this._disposed=!0;var t=this.getDom();t&&I2(this.getDom(),vy,"");var a=this,n=a._api,i=a._model;A(a._componentsViews,function(o){o.dispose(i,n)}),A(a._chartsViews,function(o){o.dispose(i,n)}),a._zr.dispose(),a._dom=a._model=a._chartsMap=a._componentsMap=a._chartsViews=a._componentsViews=a._scheduler=a._api=a._zr=a._throttledZrFlush=a._theme=a._coordSysMgr=a._messageCenter=null,delete Bs[a.id]},e.prototype.resize=function(t){if(!this[me]){if(this._disposed){this.id;return}this._zr.resize(t);var a=this._model;if(this._loadingFX&&this._loadingFX.resize(),!!a){var n=a.resetOption("media"),i=t&&t.silent;this[Re]&&(i==null&&(i=this[Re].silent),n=!0,this[Re]=null),this[me]=!0;try{n&&Fi(this),Ra.update.call(this,{type:"resize",animation:V({duration:0},t&&t.animation)})}catch(o){throw this[me]=!1,o}this[me]=!1,Ko.call(this,i),Jo.call(this,i)}}},e.prototype.showLoading=function(t,a){if(this._disposed){this.id;return}if(et(t)&&(a=t,t=""),t=t||"default",this.hideLoading(),!!Sp[t]){var n=Sp[t](this._api,a),i=this._zr;this._loadingFX=n,i.add(n)}},e.prototype.hideLoading=function(){if(this._disposed){this.id;return}this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null},e.prototype.makeActionFromEvent=function(t){var a=V({},t);return a.type=Os[t.type],a},e.prototype.dispatchAction=function(t,a){if(this._disposed){this.id;return}if(et(a)||(a={silent:!!a}),!!Vf[t.type]&&!!this._model){if(this[me]){this._pendingActions.push(t);return}var n=a.silent;jv.call(this,t,n);var i=a.flush;i?this._zr.flush():i!==!1&&At.browser.weChat&&this._throttledZrFlush(),Ko.call(this,n),Jo.call(this,n)}},e.prototype.updateLabelLayout=function(){mr.trigger("series:layoutlabels",this._model,this._api,{updatedSeries:[]})},e.prototype.appendData=function(t){if(this._disposed){this.id;return}var a=t.seriesIndex,n=this.getModel(),i=n.getSeriesByIndex(a);i.appendData(t),this._scheduler.unfinished=!0,this.getZr().wakeUp()},e.internalField=function(){Fi=function(h){var v=h._scheduler;v.restorePipelines(h._model),v.prepareStageTasks(),Kv(h,!0),Kv(h,!1),v.plan()},Kv=function(h,v){for(var c=h._model,d=h._scheduler,p=v?h._componentsViews:h._chartsViews,g=v?h._componentsMap:h._chartsMap,y=h._zr,m=h._api,_=0;_v.get("hoverLayerThreshold")&&!At.node&&!At.worker&&v.eachSeries(function(g){if(!g.preventUsingHoverLayer){var y=h._chartsMap[g.__viewId];y.__alive&&y.eachRendered(function(m){m.states.emphasis&&(m.states.emphasis.hoverLayer=!0)})}})}function o(h,v){var c=h.get("blendMode")||null;v.eachRendered(function(d){d.isGroup||(d.style.blend=c)})}function s(h,v){if(!h.preventAutoZ){var c=h.get("z")||0,d=h.get("zlevel")||0;v.eachRendered(function(p){return l(p,c,d,-1/0),!0})}}function l(h,v,c,d){var p=h.getTextContent(),g=h.getTextGuideLine(),y=h.isGroup;if(y)for(var m=h.childrenRef(),_=0;_0?{duration:p,delay:c.get("delay"),easing:c.get("easing")}:null;v.eachRendered(function(y){if(y.states&&y.states.emphasis){if(so(y))return;if(y instanceof mt&&V5(y),y.__dirty){var m=y.prevStates;m&&y.useStates(m)}if(d){y.stateTransition=g;var _=y.getTextContent(),S=y.getTextGuideLine();_&&(_.stateTransition=g),S&&(S.stateTransition=g)}y.__dirty&&n(y)}})}t_=function(h){return new(function(v){k(c,v);function c(){return v!==null&&v.apply(this,arguments)||this}return c.prototype.getCoordinateSystems=function(){return h._coordSysMgr.getCoordinateSystems()},c.prototype.getComponentByElement=function(d){for(;d;){var p=d.__ecComponentInfo;if(p!=null)return h._model.getComponent(p.mainType,p.index);d=d.parent}},c.prototype.enterEmphasis=function(d,p){_a(d,p),Ye(h)},c.prototype.leaveEmphasis=function(d,p){Sa(d,p),Ye(h)},c.prototype.enterBlur=function(d){Q2(d),Ye(h)},c.prototype.leaveBlur=function(d){Ng(d),Ye(h)},c.prototype.enterSelect=function(d){j2(d),Ye(h)},c.prototype.leaveSelect=function(d){tC(d),Ye(h)},c.prototype.getModel=function(){return h.getModel()},c.prototype.getViewOfComponentModel=function(d){return h.getViewOfComponentModel(d)},c.prototype.getViewOfSeriesModel=function(d){return h.getViewOfSeriesModel(d)},c}(nT))(h)},jT=function(h){function v(c,d){for(var p=0;p=0)){a_.push(t);var i=kT.wrapStageHandler(t,n);i.__prio=e,i.__raw=t,r.push(i)}}function iA(r,e){Sp[r]=e}function EB(r,e,t){var a=fB("registerMap");a&&a(r,e,t)}var kB=WO;Ai(fy,d4);Ai(Vh,p4);Ai(Vh,g4);Ai(fy,P4);Ai(Vh,R4);Ai(ZT,sB);aA(oT);nA(cB,bO);iA("default",y4);ta({type:oi,event:oi,update:oi},Kt);ta({type:ef,event:ef,update:ef},Kt);ta({type:Is,event:Is,update:Is},Kt);ta({type:rf,event:rf,update:rf},Kt);ta({type:Ps,event:Ps,update:Ps},Kt);rA("light",M4);rA("dark",L4);function Qo(r){return r==null?0:r.length||1}function n_(r){return r}var OB=function(){function r(e,t,a,n,i,o){this._old=e,this._new=t,this._oldKeyGetter=a||n_,this._newKeyGetter=n||n_,this.context=i,this._diffModeMultiple=o==="multiple"}return r.prototype.add=function(e){return this._add=e,this},r.prototype.update=function(e){return this._update=e,this},r.prototype.updateManyToOne=function(e){return this._updateManyToOne=e,this},r.prototype.updateOneToMany=function(e){return this._updateOneToMany=e,this},r.prototype.updateManyToMany=function(e){return this._updateManyToMany=e,this},r.prototype.remove=function(e){return this._remove=e,this},r.prototype.execute=function(){this[this._diffModeMultiple?"_executeMultiple":"_executeOneToOne"]()},r.prototype._executeOneToOne=function(){var e=this._old,t=this._new,a={},n=new Array(e.length),i=new Array(t.length);this._initIndexMap(e,null,n,"_oldKeyGetter"),this._initIndexMap(t,a,i,"_newKeyGetter");for(var o=0;o1){var f=l.shift();l.length===1&&(a[s]=l[0]),this._update&&this._update(f,o)}else u===1?(a[s]=null,this._update&&this._update(l,o)):this._remove&&this._remove(o)}this._performRestAdd(i,a)},r.prototype._executeMultiple=function(){var e=this._old,t=this._new,a={},n={},i=[],o=[];this._initIndexMap(e,a,i,"_oldKeyGetter"),this._initIndexMap(t,n,o,"_newKeyGetter");for(var s=0;s1&&v===1)this._updateManyToOne&&this._updateManyToOne(f,u),n[l]=null;else if(h===1&&v>1)this._updateOneToMany&&this._updateOneToMany(f,u),n[l]=null;else if(h===1&&v===1)this._update&&this._update(f,u),n[l]=null;else if(h>1&&v>1)this._updateManyToMany&&this._updateManyToMany(f,u),n[l]=null;else if(h>1)for(var c=0;c1)for(var s=0;s30}var jo=et,Ea=G,HB=typeof Int32Array=="undefined"?Array:Int32Array,WB="e\0\0",i_=-1,$B=["hasItemOption","_nameList","_idList","_invertedIndicesMap","_dimSummary","userOutput","_rawData","_dimValueGetter","_nameDimIdx","_idDimIdx","_nameRepeatCount"],UB=["_approximateExtent"],o_,pu,ts,es,rc,gu,ac,YB=function(){function r(e,t){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 a,n=!1;sA(e)?(a=e.dimensions,this._dimOmitted=e.isDimensionOmitted(),this._schema=e):(n=!0,a=e),a=a||["x","y"];for(var i={},o=[],s={},l=!1,u={},f=0;f=t)){var a=this._store,n=a.getProvider();this._updateOrdinalMeta();var i=this._nameList,o=this._idList,s=n.getSource().sourceFormat,l=s===vr;if(l&&!n.pure)for(var u=[],f=e;f0},r.prototype.ensureUniqueItemVisual=function(e,t){var a=this._itemVisuals,n=a[e];n||(n=a[e]={});var i=n[t];return i==null&&(i=this.getVisual(t),F(i)?i=i.slice():jo(i)&&(i=V({},i)),n[t]=i),i},r.prototype.setItemVisual=function(e,t,a){var n=this._itemVisuals[e]||{};this._itemVisuals[e]=n,jo(t)?V(n,t):n[t]=a},r.prototype.clearAllVisual=function(){this._visual={},this._itemVisuals=[]},r.prototype.setLayout=function(e,t){jo(e)?V(this._layout,e):this._layout[e]=t},r.prototype.getLayout=function(e){return this._layout[e]},r.prototype.getItemLayout=function(e){return this._itemLayouts[e]},r.prototype.setItemLayout=function(e,t,a){this._itemLayouts[e]=a?V(this._itemLayouts[e]||{},t):t},r.prototype.clearItemLayouts=function(){this._itemLayouts.length=0},r.prototype.setItemGraphicEl=function(e,t){var a=this.hostModel&&this.hostModel.seriesIndex;Qd(a,this.dataType,e,t),this._graphicEls[e]=t},r.prototype.getItemGraphicEl=function(e){return this._graphicEls[e]},r.prototype.eachItemGraphicEl=function(e,t){A(this._graphicEls,function(a,n){a&&e&&e.call(t,a,n)})},r.prototype.cloneShallow=function(e){return e||(e=new r(this._schema?this._schema:Ea(this.dimensions,this._getDimInfo,this),this.hostModel)),rc(e,this),e._store=this._store,e},r.prototype.wrapMethod=function(e,t){var a=this[e];!J(a)||(this.__wrappedMethods=this.__wrappedMethods||[],this.__wrappedMethods.push(e),this[e]=function(){var n=a.apply(this,arguments);return t.apply(this,[n].concat(Sg(arguments)))})},r.internalField=function(){o_=function(e){var t=e._invertedIndicesMap;A(t,function(a,n){var i=e._dimInfos[n],o=i.ordinalMeta,s=e._store;if(o){a=t[n]=new HB(o.categories.length);for(var l=0;l1&&(l+="__ec__"+f),n[t]=l}}}(),r}(),De=YB;function Il(r,e){ty(r)||(r=ey(r)),e=e||{};var t=e.coordDimensions||[],a=e.dimensionsDefine||r.dimensionsDefine||[],n=q(),i=[],o=XB(r,t,a,e.dimensionsCount),s=e.canOmitUnusedDimensions&&fA(o),l=a===r.dimensionsDefine,u=l?uA(r):lA(a),f=e.encodeDefine;!f&&e.encodeDefaulter&&(f=e.encodeDefaulter(r,o));for(var h=q(f),v=new yT(o),c=0;c0&&(a.name=n+(i-1)),i++,e.set(n,i)}}function XB(r,e,t,a){var n=Math.max(r.dimensionsDetectedCount||1,e.length,t.length,a||0);return A(e,function(i){var o;et(i)&&(o=i.dimsDef)&&(n=Math.max(n,o.length))}),n}function qB(r,e,t){if(t||e.hasKey(r)){for(var a=0;e.hasKey(r+a);)a++;r+=a}return e.set(r,!0),r}var KB=function(){function r(e){this.coordSysDims=[],this.axisMap=q(),this.categoryAxisMap=q(),this.coordSysName=e}return r}();function JB(r){var e=r.get("coordinateSystem"),t=new KB(e),a=QB[e];if(a)return a(r,t,t.axisMap,t.categoryAxisMap),t}var QB={cartesian2d:function(r,e,t,a){var n=r.getReferringComponents("xAxis",Qt).models[0],i=r.getReferringComponents("yAxis",Qt).models[0];e.coordSysDims=["x","y"],t.set("x",n),t.set("y",i),Gi(n)&&(a.set("x",n),e.firstCategoryDimIndex=0),Gi(i)&&(a.set("y",i),e.firstCategoryDimIndex==null&&(e.firstCategoryDimIndex=1))},singleAxis:function(r,e,t,a){var n=r.getReferringComponents("singleAxis",Qt).models[0];e.coordSysDims=["single"],t.set("single",n),Gi(n)&&(a.set("single",n),e.firstCategoryDimIndex=0)},polar:function(r,e,t,a){var n=r.getReferringComponents("polar",Qt).models[0],i=n.findAxisModel("radiusAxis"),o=n.findAxisModel("angleAxis");e.coordSysDims=["radius","angle"],t.set("radius",i),t.set("angle",o),Gi(i)&&(a.set("radius",i),e.firstCategoryDimIndex=0),Gi(o)&&(a.set("angle",o),e.firstCategoryDimIndex==null&&(e.firstCategoryDimIndex=1))},geo:function(r,e,t,a){e.coordSysDims=["lng","lat"]},parallel:function(r,e,t,a){var n=r.ecModel,i=n.getComponent("parallel",r.get("parallelIndex")),o=e.coordSysDims=i.dimensions.slice();A(i.parallelAxisIndex,function(s,l){var u=n.getComponent("parallelAxis",s),f=o[l];t.set(f,u),Gi(u)&&(a.set(f,u),e.firstCategoryDimIndex==null&&(e.firstCategoryDimIndex=l))})}};function Gi(r){return r.get("type")==="category"}function jB(r,e,t){t=t||{};var a=t.byIndex,n=t.stackedCoordDimension,i,o,s;tN(e)?i=e:(o=e.schema,i=o.dimensions,s=e.store);var l=!!(r&&r.get("stack")),u,f,h,v;if(A(i,function(m,_){U(m)&&(i[_]=m={name:m}),l&&!m.isExtraCoord&&(!a&&!u&&m.ordinalMeta&&(u=m),!f&&m.type!=="ordinal"&&m.type!=="time"&&(!n||n===m.coordDim)&&(f=m))}),f&&!a&&!u&&(a=!0),f){h="__\0ecstackresult_"+r.id,v="__\0ecstackedover_"+r.id,u&&(u.createInvertedIndices=!0);var c=f.coordDim,d=f.type,p=0;A(i,function(m){m.coordDim===c&&p++});var g={name:h,coordDim:c,coordDimIndex:p,type:d,isExtraCoord:!0,isCalculationCoord:!0,storeDimIndex:i.length},y={name:v,coordDim:v,coordDimIndex:p+1,type:d,isExtraCoord:!0,isCalculationCoord:!0,storeDimIndex:i.length+1};o?(s&&(g.storeDimIndex=s.ensureCalculationDimension(v,d),y.storeDimIndex=s.ensureCalculationDimension(h,d)),o.appendCalculationDimension(g),o.appendCalculationDimension(y)):(i.push(g),i.push(y))}return{stackedDimension:f&&f.name,stackedByDimension:u&&u.name,isStackedByIndex:a,stackedOverDimension:v,stackResultDimension:h}}function tN(r){return!sA(r.schema)}function nn(r,e){return!!e&&e===r.getCalculationInfo("stackedDimension")}function hA(r,e){return nn(r,e)?r.getCalculationInfo("stackResultDimension"):e}function eN(r,e){var t=r.get("coordinateSystem"),a=Ml.get(t),n;return e&&e.coordSysDims&&(n=G(e.coordSysDims,function(i){var o={name:i},s=e.axisMap.get(i);if(s){var l=s.get("type");o.type=Ff(l)}return o})),n||(n=a&&(a.getDimensionsInfo?a.getDimensionsInfo():a.dimensions.slice())||["x","y"]),n}function rN(r,e,t){var a,n;return t&&A(r,function(i,o){var s=i.coordDim,l=t.categoryAxisMap.get(s);l&&(a==null&&(a=o),i.ordinalMeta=l.getOrdinalMeta(),e&&(i.createInvertedIndices=!0)),i.otherDims.itemName!=null&&(n=!0)}),!n&&a!=null&&(r[a].otherDims.itemName=0),a}function Ta(r,e,t){t=t||{};var a=e.getSourceManager(),n,i=!1;r?(i=!0,n=ey(r)):(n=a.getSource(),i=n.sourceFormat===vr);var o=JB(e),s=eN(e,o),l=t.useEncodeDefaulter,u=J(l)?l:l?ot(QC,s,e):null,f={coordDimensions:s,generateCoord:t.generateCoord,encodeDefine:e.getEncode(),encodeDefaulter:u,canOmitUnusedDimensions:!i},h=Il(n,f),v=rN(h.dimensions,t.createInvertedIndices,o),c=i?null:a.getSharedDataStore(h),d=jB(e,{schema:h,store:c}),p=new De(h,e);p.setCalculationInfo(d);var g=v!=null&&aN(n)?function(y,m,_,S){return S===v?_:this.defaultDimValueGetter(y,m,_,S)}:null;return p.hasItemOption=!1,p.initData(i?n:c,null,g),p}function aN(r){if(r.sourceFormat===vr){var e=nN(r.data||[]);return!F(Co(e))}}function nN(r){for(var e=0;et[1]&&(t[1]=e[1])},r.prototype.unionExtentFromData=function(e,t){this.unionExtent(e.getApproximateExtent(t))},r.prototype.getExtent=function(){return this._extent.slice()},r.prototype.setExtent=function(e,t){var a=this._extent;isNaN(e)||(a[0]=e),isNaN(t)||(a[1]=t)},r.prototype.isInExtentRange=function(e){return this._extent[0]<=e&&this._extent[1]>=e},r.prototype.isBlank=function(){return this._isBlank},r.prototype.setBlank=function(e){this._isBlank=e},r}();mh(vA);var Aa=vA,iN=0,oN=function(){function r(e){this.categories=e.categories||[],this._needCollect=e.needCollect,this._deduplication=e.deduplication,this.uid=++iN}return r.createByAxisModel=function(e){var t=e.option,a=t.data,n=a&&G(a,sN);return new r({categories:n,needCollect:!n,deduplication:t.dedplication!==!1})},r.prototype.getOrdinal=function(e){return this._getOrCreateMap().get(e)},r.prototype.parseAndCollect=function(e){var t,a=this._needCollect;if(!U(e)&&!a)return e;if(a&&!this._deduplication)return t=this.categories.length,this.categories[t]=e,t;var n=this._getOrCreateMap();return t=n.get(e),t==null&&(a?(t=this.categories.length,this.categories[t]=e,n.set(e,t)):t=NaN),t},r.prototype._getOrCreateMap=function(){return this._map||(this._map=q(this.categories))},r}();function sN(r){return et(r)&&r.value!=null?r.value:r+""}var xp=oN;function wp(r){return r.type==="interval"||r.type==="log"}function lN(r,e,t,a){var n={},i=r[1]-r[0],o=n.interval=w2(i/e,!0);t!=null&&oa&&(o=n.interval=a);var s=n.intervalPrecision=cA(o),l=n.niceTickExtent=[Zt(Math.ceil(r[0]/o)*o,s),Zt(Math.floor(r[1]/o)*o,s)];return uN(l,r),n}function nc(r){var e=Math.pow(10,Lg(r)),t=r/e;return t?t===2?t=3:t===3?t=5:t*=2:t=1,Zt(t*e)}function cA(r){return Gr(r)+2}function s_(r,e,t){r[e]=Math.max(Math.min(r[e],t[1]),t[0])}function uN(r,e){!isFinite(r[0])&&(r[0]=e[0]),!isFinite(r[1])&&(r[1]=e[1]),s_(r,0,e),s_(r,1,e),r[0]>r[1]&&(r[0]=r[1])}function zh(r,e){return r>=e[0]&&r<=e[1]}function Fh(r,e){return e[1]===e[0]?.5:(r-e[0])/(e[1]-e[0])}function Gh(r,e){return r*(e[1]-e[0])+e[0]}var dA=function(r){k(e,r);function e(t){var a=r.call(this,t)||this;a.type="ordinal";var n=a.getSetting("ordinalMeta");return n||(n=new xp({})),F(n)&&(n=new xp({categories:G(n,function(i){return et(i)?i.value:i})})),a._ordinalMeta=n,a._extent=a.getSetting("extent")||[0,n.categories.length-1],a}return e.prototype.parse=function(t){return t==null?NaN:U(t)?this._ordinalMeta.getOrdinal(t):Math.round(t)},e.prototype.contain=function(t){return t=this.parse(t),zh(t,this._extent)&&this._ordinalMeta.categories[t]!=null},e.prototype.normalize=function(t){return t=this._getTickNumber(this.parse(t)),Fh(t,this._extent)},e.prototype.scale=function(t){return t=Math.round(Gh(t,this._extent)),this.getRawOrdinalNumber(t)},e.prototype.getTicks=function(){for(var t=[],a=this._extent,n=a[0];n<=a[1];)t.push({value:n}),n++;return t},e.prototype.getMinorTicks=function(t){},e.prototype.setSortInfo=function(t){if(t==null){this._ordinalNumbersByTick=this._ticksByOrdinalNumber=null;return}for(var a=t.ordinalNumbers,n=this._ordinalNumbersByTick=[],i=this._ticksByOrdinalNumber=[],o=0,s=this._ordinalMeta.categories.length,l=Math.min(s,a.length);o=0&&t=0&&t=t},e.prototype.getOrdinalMeta=function(){return this._ordinalMeta},e.prototype.calcNiceTicks=function(){},e.prototype.calcNiceExtent=function(){},e.type="ordinal",e}(Aa);Aa.registerClass(dA);var py=dA,En=Zt,pA=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type="interval",t._interval=0,t._intervalPrecision=2,t}return e.prototype.parse=function(t){return t},e.prototype.contain=function(t){return zh(t,this._extent)},e.prototype.normalize=function(t){return Fh(t,this._extent)},e.prototype.scale=function(t){return Gh(t,this._extent)},e.prototype.setExtent=function(t,a){var n=this._extent;isNaN(t)||(n[0]=parseFloat(t)),isNaN(a)||(n[1]=parseFloat(a))},e.prototype.unionExtent=function(t){var a=this._extent;t[0]a[1]&&(a[1]=t[1]),this.setExtent(a[0],a[1])},e.prototype.getInterval=function(){return this._interval},e.prototype.setInterval=function(t){this._interval=t,this._niceExtent=this._extent.slice(),this._intervalPrecision=cA(t)},e.prototype.getTicks=function(t){var a=this._interval,n=this._extent,i=this._niceExtent,o=this._intervalPrecision,s=[];if(!a)return s;var l=1e4;n[0]l)return[];var f=s.length?s[s.length-1].value:i[1];return n[1]>f&&(t?s.push({value:En(f+a,o)}):s.push({value:n[1]})),s},e.prototype.getMinorTicks=function(t){for(var a=this.getTicks(!0),n=[],i=this.getExtent(),o=1;oi[0]&&c0&&(i=i===null?s:Math.min(i,s))}t[a]=i}}return t}function mA(r){var e=vN(r),t=[];return A(r,function(a){var n=a.coordinateSystem,i=n.getBaseAxis(),o=i.getExtent(),s;if(i.type==="category")s=i.getBandWidth();else if(i.type==="value"||i.type==="time"){var l=i.dim+"_"+i.index,u=e[l],f=Math.abs(o[1]-o[0]),h=i.scale.getExtent(),v=Math.abs(h[1]-h[0]);s=u?f/v*u:f}else{var c=a.getData();s=Math.abs(o[1]-o[0])/c.count()}var d=W(a.get("barWidth"),s),p=W(a.get("barMaxWidth"),s),g=W(a.get("barMinWidth")||(bA(a)?.5:1),s),y=a.get("barGap"),m=a.get("barCategoryGap");t.push({bandWidth:s,barWidth:d,barMaxWidth:p,barMinWidth:g,barGap:y,barCategoryGap:m,axisKey:yy(i),stackId:gy(a)})}),_A(t)}function _A(r){var e={};A(r,function(a,n){var i=a.axisKey,o=a.bandWidth,s=e[i]||{bandWidth:o,remainedWidth:o,autoWidthCount:0,categoryGap:null,gap:"20%",stacks:{}},l=s.stacks;e[i]=s;var u=a.stackId;l[u]||s.autoWidthCount++,l[u]=l[u]||{width:0,maxWidth:0};var f=a.barWidth;f&&!l[u].width&&(l[u].width=f,f=Math.min(s.remainedWidth,f),s.remainedWidth-=f);var h=a.barMaxWidth;h&&(l[u].maxWidth=h);var v=a.barMinWidth;v&&(l[u].minWidth=v);var c=a.barGap;c!=null&&(s.gap=c);var d=a.barCategoryGap;d!=null&&(s.categoryGap=d)});var t={};return A(e,function(a,n){t[n]={};var i=a.stacks,o=a.bandWidth,s=a.categoryGap;if(s==null){var l=St(i).length;s=Math.max(35-l*4,15)+"%"}var u=W(s,o),f=W(a.gap,1),h=a.remainedWidth,v=a.autoWidthCount,c=(h-u)/(v+(v-1)*f);c=Math.max(c,0),A(i,function(y){var m=y.maxWidth,_=y.minWidth;if(y.width){var S=y.width;m&&(S=Math.min(S,m)),_&&(S=Math.max(S,_)),y.width=S,h-=S+f*S,v--}else{var S=c;m&&mS&&(S=_),S!==c&&(y.width=S,h-=S+f*S,v--)}}),c=(h-u)/(v+(v-1)*f),c=Math.max(c,0);var d=0,p;A(i,function(y,m){y.width||(y.width=c),p=y,d+=y.width*(1+f)}),p&&(d-=p.width*f);var g=-d/2;A(i,function(y,m){t[n][m]=t[n][m]||{bandWidth:o,offset:g,width:y.width},g+=y.width*(1+f)})}),t}function cN(r,e,t){if(r&&e){var a=r[yy(e)];return a!=null&&t!=null?a[gy(t)]:a}}function SA(r,e){var t=yA(r,e),a=mA(t);A(t,function(n){var i=n.getData(),o=n.coordinateSystem,s=o.getBaseAxis(),l=gy(n),u=a[yy(s)][l],f=u.offset,h=u.width;i.setLayout({bandWidth:u.bandWidth,offset:f,size:h})})}function xA(r){return{seriesType:r,plan:ko(),reset:function(e){if(!!wA(e)){var t=e.getData(),a=e.coordinateSystem,n=a.getBaseAxis(),i=a.getOtherAxis(n),o=t.getDimensionIndex(t.mapDimension(i.dim)),s=t.getDimensionIndex(t.mapDimension(n.dim)),l=e.get("showBackground",!0),u=t.mapDimension(i.dim),f=t.getCalculationInfo("stackResultDimension"),h=nn(t,u)&&!!t.getCalculationInfo("stackedOnSeries"),v=i.isHorizontal(),c=dN(n,i),d=bA(e),p=e.get("barMinHeight")||0,g=f&&t.getDimensionIndex(f),y=t.getLayout("size"),m=t.getLayout("offset");return{progress:function(_,S){for(var w=_.count,x=d&&Wr(w*3),b=d&&l&&Wr(w*3),C=d&&Wr(w),T=a.master.getRect(),D=v?T.width:T.height,M,L=S.getStore(),I=0;(M=_.next())!=null;){var P=L.get(h?g:o,M),R=L.get(s,M),E=c,B=void 0;h&&(B=+P-L.get(o,M));var O=void 0,z=void 0,H=void 0,$=void 0;if(v){var X=a.dataToPoint([P,R]);if(h){var Q=a.dataToPoint([B,R]);E=Q[0]}O=E,z=X[1]+m,H=X[0]-E,$=y,Math.abs(H)>>1;r[n][1]n&&(this._approxInterval=n);var s=yu.length,l=Math.min(pN(yu,this._approxInterval,0,s),s-1);this._interval=yu[l][1],this._minLevelUnit=yu[Math.max(l-1,0)][0]},e.prototype.parse=function(t){return Mt(t)?t:+Kr(t)},e.prototype.contain=function(t){return zh(this.parse(t),this._extent)},e.prototype.normalize=function(t){return Fh(this.parse(t),this._extent)},e.prototype.scale=function(t){return Gh(t,this._extent)},e.type="time",e}(on),yu=[["second",Zg],["minute",Xg],["hour",Es],["quarter-day",Es*6],["half-day",Es*12],["day",ir*1.2],["half-week",ir*3.5],["week",ir*7],["month",ir*31],["quarter",ir*95],["half-year",J0/2],["year",J0]];function gN(r,e,t,a){var n=Kr(e),i=Kr(t),o=function(d){return j0(n,d,a)===j0(i,d,a)},s=function(){return o("year")},l=function(){return s()&&o("month")},u=function(){return l()&&o("day")},f=function(){return u()&&o("hour")},h=function(){return f()&&o("minute")},v=function(){return h()&&o("second")},c=function(){return v()&&o("millisecond")};switch(r){case"year":return s();case"month":return l();case"day":return u();case"hour":return f();case"minute":return h();case"second":return v();case"millisecond":return c()}}function yN(r,e){return r/=ir,r>16?16:r>7.5?7:r>3.5?4:r>1.5?2:1}function mN(r){var e=30*ir;return r/=e,r>6?6:r>3?3:r>2?2:1}function _N(r){return r/=Es,r>12?12:r>6?6:r>3.5?4:r>2?2:1}function l_(r,e){return r/=e?Xg:Zg,r>30?30:r>20?20:r>15?15:r>10?10:r>5?5:r>2?2:1}function SN(r){return w2(r,!0)}function xN(r,e,t){var a=new Date(r);switch(lo(e)){case"year":case"month":a[NC(t)](0);case"day":a[VC(t)](1);case"hour":a[zC(t)](0);case"minute":a[FC(t)](0);case"second":a[GC(t)](0),a[HC(t)](0)}return a.getTime()}function wN(r,e,t,a){var n=1e4,i=OC,o=0;function s(D,M,L,I,P,R,E){for(var B=new Date(M),O=M,z=B[I]();O1&&R===0&&L.unshift({value:L[0].value-O})}}for(var R=0;R=a[0]&&m<=a[1]&&h++)}var _=(a[1]-a[0])/e;if(h>_*1.5&&v>_/1.5||(u.push(g),h>_||r===i[c]))break}f=[]}}}for(var S=Et(G(u,function(D){return Et(D,function(M){return M.value>=a[0]&&M.value<=a[1]&&!M.notAdd})}),function(D){return D.length>0}),w=[],x=S.length-1,c=0;c0;)i*=10;var s=[Zt(TN(a[0]/i)*i),Zt(CN(a[1]/i)*i)];this._interval=i,this._niceExtent=s}},e.prototype.calcNiceExtent=function(t){Ns.calcNiceExtent.call(this,t),this._fixMin=t.fixMin,this._fixMax=t.fixMax},e.prototype.parse=function(t){return t},e.prototype.contain=function(t){return t=pr(t)/pr(this.base),zh(t,this._extent)},e.prototype.normalize=function(t){return t=pr(t)/pr(this.base),Fh(t,this._extent)},e.prototype.scale=function(t){return t=Gh(t,this._extent),mu(this.base,t)},e.type="log",e}(Aa),AA=my.prototype;AA.getMinorTicks=Ns.getMinorTicks;AA.getLabel=Ns.getLabel;function _u(r,e){return bN(r,Gr(e))}Aa.registerClass(my);var AN=my,DN=function(){function r(e,t,a){this._prepareParams(e,t,a)}return r.prototype._prepareParams=function(e,t,a){a[1]0&&l>0&&!u&&(s=0),s<0&&l<0&&!f&&(l=0));var v=this._determinedMin,c=this._determinedMax;return v!=null&&(s=v,u=!0),c!=null&&(l=c,f=!0),{min:s,max:l,minFixed:u,maxFixed:f,isBlank:h}},r.prototype.modifyDataMinMax=function(e,t){this[LN[e]]=t},r.prototype.setDeterminedMinMax=function(e,t){var a=MN[e];this[a]=t},r.prototype.freeze=function(){this.frozen=!0},r}(),MN={min:"_determinedMin",max:"_determinedMax"},LN={min:"_dataMin",max:"_dataMax"};function DA(r,e,t){var a=r.rawExtentInfo;return a||(a=new DN(r,e,t),r.rawExtentInfo=a,a)}function Su(r,e){return e==null?null:Ws(e)?NaN:r.parse(e)}function MA(r,e){var t=r.type,a=DA(r,e,r.getExtent()).calculate();r.setBlank(a.isBlank);var n=a.min,i=a.max,o=e.ecModel;if(o&&t==="time"){var s=yA("bar",o),l=!1;if(A(s,function(h){l=l||h.getBaseAxis()===e.axis}),l){var u=mA(s),f=IN(n,i,e,u);n=f.min,i=f.max}}return{extent:[n,i],fixMin:a.minFixed,fixMax:a.maxFixed}}function IN(r,e,t,a){var n=t.axis.getExtent(),i=n[1]-n[0],o=cN(a,t.axis);if(o===void 0)return{min:r,max:e};var s=1/0;A(o,function(c){s=Math.min(c.offset,s)});var l=-1/0;A(o,function(c){l=Math.max(c.offset+c.width,l)}),s=Math.abs(s),l=Math.abs(l);var u=s+l,f=e-r,h=1-(s+l)/i,v=f/h-f;return e+=v*(l/u),r-=v*(s/u),{min:r,max:e}}function po(r,e){var t=e,a=MA(r,t),n=a.extent,i=t.get("splitNumber");r instanceof AN&&(r.base=t.get("logBase"));var o=r.type,s=t.get("interval"),l=o==="interval"||o==="time";r.setExtent(n[0],n[1]),r.calcNiceExtent({splitNumber:i,fixMin:a.fixMin,fixMax:a.fixMax,minInterval:l?t.get("minInterval"):null,maxInterval:l?t.get("maxInterval"):null}),s!=null&&r.setInterval&&r.setInterval(s)}function Hh(r,e){if(e=e||r.get("type"),e)switch(e){case"category":return new py({ordinalMeta:r.getOrdinalMeta?r.getOrdinalMeta():r.getCategories(),extent:[1/0,-1/0]});case"time":return new TA({locale:r.ecModel.getLocaleModel(),useUTC:r.ecModel.get("useUTC")});default:return new(Aa.getClass(e)||on)}}function PN(r){var e=r.scale.getExtent(),t=e[0],a=e[1];return!(t>0&&a>0||t<0&&a<0)}function Pl(r){var e=r.getLabelModel().get("formatter"),t=r.type==="category"?r.scale.getExtent()[0]:null;return r.scale.type==="time"?function(a){return function(n,i){return r.scale.getFormattedLabel(n,i,a)}}(e):U(e)?function(a){return function(n){var i=r.scale.getLabel(n),o=a.replace("{value}",i!=null?i:"");return o}}(e):J(e)?function(a){return function(n,i){return t!=null&&(i=n.value-t),a(_y(r,n),i,n.level!=null?{level:n.level}:null)}}(e):function(a){return r.scale.getLabel(a)}}function _y(r,e){return r.type==="category"?r.scale.getLabel(e):e.value}function RN(r){var e=r.model,t=r.scale;if(!(!e.get(["axisLabel","show"])||t.isBlank())){var a,n,i=t.getExtent();t instanceof py?n=t.count():(a=t.getTicks(),n=a.length);var o=r.getLabelModel(),s=Pl(r),l,u=1;n>40&&(u=Math.ceil(n/40));for(var f=0;fr[1]&&(r[1]=n[1])})}var Rl=function(){function r(){}return r.prototype.getNeedCrossZero=function(){var e=this.option;return!e.scale},r.prototype.getCoordSysModel=function(){},r}(),f_=[],ON={registerPreprocessor:aA,registerProcessor:nA,registerPostInit:LB,registerPostUpdate:IB,registerUpdateLifecycle:cy,registerAction:ta,registerCoordinateSystem:PB,registerLayout:RB,registerVisual:Ai,registerTransform:kB,registerLoading:iA,registerMap:EB,registerImpl:uB,PRIORITY:wB,ComponentModel:Tt,ComponentView:Ut,SeriesModel:Ht,ChartView:zt,registerComponentModel:function(r){Tt.registerClass(r)},registerComponentView:function(r){Ut.registerClass(r)},registerSeriesModel:function(r){Ht.registerClass(r)},registerChartView:function(r){zt.registerClass(r)},registerSubTypeDefaulter:function(r,e){Tt.registerSubTypeDefaulter(r,e)},registerPainter:function(r,e){nk(r,e)}};function ct(r){if(F(r)){A(r,function(e){ct(e)});return}dt(f_,r)>=0||(f_.push(r),J(r)&&(r={install:r}),r.install(ON))}var BN=1e-8;function h_(r,e){return Math.abs(r-e)n&&(a=o,n=l)}if(a)return VN(a.exterior);var u=this.getBoundingRect();return[u.x+u.width/2,u.y+u.height/2]},e.prototype.getBoundingRect=function(t){var a=this._rect;if(a&&!t)return a;var n=[1/0,1/0],i=[-1/0,-1/0],o=this.geometries;return A(o,function(s){s.type==="polygon"?v_(s.exterior,n,i,t):A(s.points,function(l){v_(l,n,i,t)})}),isFinite(n[0])&&isFinite(n[1])&&isFinite(i[0])&&isFinite(i[1])||(n[0]=n[1]=i[0]=i[1]=0),a=new vt(n[0],n[1],i[0]-n[0],i[1]-n[1]),t||(this._rect=a),a},e.prototype.contain=function(t){var a=this.getBoundingRect(),n=this.geometries;if(!a.contain(t[0],t[1]))return!1;t:for(var i=0,o=n.length;i>1^-(s&1),l=l>>1^-(l&1),s+=n,l+=i,n=s,i=l,a.push([s/t,l/t])}return a}function GN(r,e){return r=FN(r),G(Et(r.features,function(t){return t.geometry&&t.properties&&t.geometry.coordinates.length>0}),function(t){var a=t.properties,n=t.geometry,i=[];switch(n.type){case"Polygon":var o=n.coordinates;i.push(new c_(o[0],o.slice(1)));break;case"MultiPolygon":A(n.coordinates,function(l){l[0]&&i.push(new c_(l[0],l.slice(1)))});break;case"LineString":i.push(new d_([n.coordinates]));break;case"MultiLineString":i.push(new d_(n.coordinates))}var s=new PA(a[e||"name"],i,a.cp);return s.properties=a,s})}var il=Ct();function HN(r){return r.type==="category"?$N(r):YN(r)}function WN(r,e){return r.type==="category"?UN(r,e):{ticks:G(r.scale.getTicks(),function(t){return t.value})}}function $N(r){var e=r.getLabelModel(),t=EA(r,e);return!e.get("show")||r.scale.isBlank()?{labels:[],labelCategoryInterval:t.labelCategoryInterval}:t}function EA(r,e){var t=kA(r,"labels"),a=Sy(e),n=OA(t,a);if(n)return n;var i,o;return J(a)?i=VA(r,a):(o=a==="auto"?ZN(r):a,i=NA(r,o)),BA(t,a,{labels:i,labelCategoryInterval:o})}function UN(r,e){var t=kA(r,"ticks"),a=Sy(e),n=OA(t,a);if(n)return n;var i,o;if((!e.get("show")||r.scale.isBlank())&&(i=[]),J(a))i=VA(r,a,!0);else if(a==="auto"){var s=EA(r,r.getLabelModel());o=s.labelCategoryInterval,i=G(s.labels,function(l){return l.tickValue})}else o=a,i=NA(r,o,!0);return BA(t,a,{ticks:i,tickCategoryInterval:o})}function YN(r){var e=r.scale.getTicks(),t=Pl(r);return{labels:G(e,function(a,n){return{level:a.level,formattedLabel:t(a,n),rawLabel:r.scale.getLabel(a),tickValue:a.value}})}}function kA(r,e){return il(r)[e]||(il(r)[e]=[])}function OA(r,e){for(var t=0;t40&&(s=Math.max(1,Math.floor(o/40)));for(var l=i[0],u=r.dataToCoord(l+1)-r.dataToCoord(l),f=Math.abs(u*Math.cos(a)),h=Math.abs(u*Math.sin(a)),v=0,c=0;l<=i[1];l+=s){var d=0,p=0,g=xl(t({value:l}),e.font,"center","top");d=g.width*1.3,p=g.height*1.3,v=Math.max(v,d,7),c=Math.max(c,p,7)}var y=v/f,m=c/h;isNaN(y)&&(y=1/0),isNaN(m)&&(m=1/0);var _=Math.max(0,Math.floor(Math.min(y,m))),S=il(r.model),w=r.getExtent(),x=S.lastAutoInterval,b=S.lastTickCount;return x!=null&&b!=null&&Math.abs(x-_)<=1&&Math.abs(b-o)<=1&&x>_&&S.axisExtent0===w[0]&&S.axisExtent1===w[1]?_=x:(S.lastTickCount=o,S.lastAutoInterval=_,S.axisExtent0=w[0],S.axisExtent1=w[1]),_}function qN(r){var e=r.getLabelModel();return{axisRotate:r.getRotate?r.getRotate():r.isHorizontal&&!r.isHorizontal()?90:0,labelRotate:e.get("rotate")||0,font:e.getFont()}}function NA(r,e,t){var a=Pl(r),n=r.scale,i=n.getExtent(),o=r.getLabelModel(),s=[],l=Math.max((e||0)+1,1),u=i[0],f=n.count();u!==0&&l>1&&f/l>2&&(u=Math.round(Math.ceil(u/l)*l));var h=LA(r),v=o.get("showMinLabel")||h,c=o.get("showMaxLabel")||h;v&&u!==i[0]&&p(i[0]);for(var d=u;d<=i[1];d+=l)p(d);c&&d-l!==i[1]&&p(i[1]);function p(g){var y={value:g};s.push(t?g:{formattedLabel:a(y),rawLabel:n.getLabel(y),tickValue:g})}return s}function VA(r,e,t){var a=r.scale,n=Pl(r),i=[];return A(a.getTicks(),function(o){var s=a.getLabel(o),l=o.value;e(o.value,s)&&i.push(t?l:{formattedLabel:n(o),rawLabel:s,tickValue:l})}),i}var p_=[0,1],KN=function(){function r(e,t,a){this.onBand=!1,this.inverse=!1,this.dim=e,this.scale=t,this._extent=a||[0,0]}return r.prototype.contain=function(e){var t=this._extent,a=Math.min(t[0],t[1]),n=Math.max(t[0],t[1]);return e>=a&&e<=n},r.prototype.containData=function(e){return this.scale.contain(e)},r.prototype.getExtent=function(){return this._extent.slice()},r.prototype.getPixelPrecision=function(e){return S2(e||this.scale.getExtent(),this._extent)},r.prototype.setExtent=function(e,t){var a=this._extent;a[0]=e,a[1]=t},r.prototype.dataToCoord=function(e,t){var a=this._extent,n=this.scale;return e=n.normalize(e),this.onBand&&n.type==="ordinal"&&(a=a.slice(),g_(a,n.count())),Rt(e,p_,a,t)},r.prototype.coordToData=function(e,t){var a=this._extent,n=this.scale;this.onBand&&n.type==="ordinal"&&(a=a.slice(),g_(a,n.count()));var i=Rt(e,a,p_,t);return this.scale.scale(i)},r.prototype.pointToData=function(e,t){},r.prototype.getTicksCoords=function(e){e=e||{};var t=e.tickModel||this.getTickModel(),a=WN(this,t),n=a.ticks,i=G(n,function(s){return{coord:this.dataToCoord(this.scale.type==="ordinal"?this.scale.getRawOrdinalNumber(s):s),tickValue:s}},this),o=t.get("alignWithLabel");return JN(this,i,o,e.clamp),i},r.prototype.getMinorTicksCoords=function(){if(this.scale.type==="ordinal")return[];var e=this.model.getModel("minorTick"),t=e.get("splitNumber");t>0&&t<100||(t=5);var a=this.scale.getMinorTicks(t),n=G(a,function(i){return G(i,function(o){return{coord:this.dataToCoord(o),tickValue:o}},this)},this);return n},r.prototype.getViewLabels=function(){return HN(this).labels},r.prototype.getLabelModel=function(){return this.model.getModel("axisLabel")},r.prototype.getTickModel=function(){return this.model.getModel("axisTick")},r.prototype.getBandWidth=function(){var e=this._extent,t=this.scale.getExtent(),a=t[1]-t[0]+(this.onBand?1:0);a===0&&(a=1);var n=Math.abs(e[1]-e[0]);return Math.abs(n)/a},r.prototype.calculateCategoryInterval=function(){return XN(this)},r}();function g_(r,e){var t=r[1]-r[0],a=e,n=t/a/2;r[0]+=n,r[1]-=n}function JN(r,e,t,a){var n=e.length;if(!r.onBand||t||!n)return;var i=r.getExtent(),o,s;if(n===1)e[0].coord=i[0],o=e[1]={coord:i[1]};else{var l=e[n-1].tickValue-e[0].tickValue,u=(e[n-1].coord-e[0].coord)/l;A(e,function(c){c.coord-=u/2});var f=r.scale.getExtent();s=1+f[1]-e[n-1].tickValue,o={coord:e[n-1].coord+u*s},e.push(o)}var h=i[0]>i[1];v(e[0].coord,i[0])&&(a?e[0].coord=i[0]:e.shift()),a&&v(i[0],e[0].coord)&&e.unshift({coord:i[0]}),v(i[1],o.coord)&&(a?o.coord=i[1]:e.pop()),a&&v(o.coord,i[1])&&e.push({coord:i[1]});function v(c,d){return c=Zt(c),d=Zt(d),h?c>d:cn&&(n+=rs);var c=Math.atan2(s,o);if(c<0&&(c+=rs),c>=a&&c<=n||c+rs>=a&&c+rs<=n)return l[0]=f,l[1]=h,u-t;var d=t*Math.cos(a)+r,p=t*Math.sin(a)+e,g=t*Math.cos(n)+r,y=t*Math.sin(n)+e,m=(d-o)*(d-o)+(p-s)*(p-s),_=(g-o)*(g-o)+(y-s)*(y-s);return m<_?(l[0]=d,l[1]=p,Math.sqrt(m)):(l[0]=g,l[1]=y,Math.sqrt(_))}function Hf(r,e,t,a,n,i,o,s){var l=n-r,u=i-e,f=t-r,h=a-e,v=Math.sqrt(f*f+h*h);f/=v,h/=v;var c=l*f+u*h,d=c/v;s&&(d=Math.min(Math.max(d,0),1)),d*=v;var p=o[0]=r+d*f,g=o[1]=e+d*h;return Math.sqrt((p-n)*(p-n)+(g-i)*(g-i))}function zA(r,e,t,a,n,i,o){t<0&&(r=r+t,t=-t),a<0&&(e=e+a,a=-a);var s=r+t,l=e+a,u=o[0]=Math.min(Math.max(n,r),s),f=o[1]=Math.min(Math.max(i,e),l);return Math.sqrt((u-n)*(u-n)+(f-i)*(f-i))}var _r=[];function e6(r,e,t){var a=zA(e.x,e.y,e.width,e.height,r.x,r.y,_r);return t.set(_r[0],_r[1]),a}function r6(r,e,t){for(var a=0,n=0,i=0,o=0,s,l,u=1/0,f=e.data,h=r.x,v=r.y,c=0;c0){e=e/180*Math.PI,wr.fromArray(r[0]),Bt.fromArray(r[1]),qt.fromArray(r[2]),ut.sub($r,wr,Bt),ut.sub(Vr,qt,Bt);var t=$r.len(),a=Vr.len();if(!(t<.001||a<.001)){$r.scale(1/t),Vr.scale(1/a);var n=$r.dot(Vr),i=Math.cos(e);if(i1&&ut.copy(Ae,qt),Ae.toArray(r[1])}}}}function a6(r,e,t){if(t<=180&&t>0){t=t/180*Math.PI,wr.fromArray(r[0]),Bt.fromArray(r[1]),qt.fromArray(r[2]),ut.sub($r,Bt,wr),ut.sub(Vr,qt,Bt);var a=$r.len(),n=Vr.len();if(!(a<.001||n<.001)){$r.scale(1/a),Vr.scale(1/n);var i=$r.dot(e),o=Math.cos(t);if(i=l)ut.copy(Ae,qt);else{Ae.scaleAndAdd(Vr,s/Math.tan(Math.PI/2-f));var h=qt.x!==Bt.x?(Ae.x-Bt.x)/(qt.x-Bt.x):(Ae.y-Bt.y)/(qt.y-Bt.y);if(isNaN(h))return;h<0?ut.copy(Ae,Bt):h>1&&ut.copy(Ae,qt)}Ae.toArray(r[1])}}}}function m_(r,e,t,a){var n=t==="normal",i=n?r:r.ensureState(t);i.ignore=e;var o=a.get("smooth");o&&o===!0&&(o=.3),i.shape=i.shape||{},o>0&&(i.shape.smooth=o);var s=a.getModel("lineStyle").getLineStyle();n?r.useStyle(s):i.style=s}function n6(r,e){var t=e.smooth,a=e.points;if(!!a)if(r.moveTo(a[0][0],a[0][1]),t>0&&a.length>=3){var n=Ga(a[0],a[1]),i=Ga(a[1],a[2]);if(!n||!i){r.lineTo(a[1][0],a[1][1]),r.lineTo(a[2][0],a[2][1]);return}var o=Math.min(n,i)*t,s=Xu([],a[1],a[0],o/n),l=Xu([],a[1],a[2],o/i),u=Xu([],s,l,.5);r.bezierCurveTo(s[0],s[1],s[0],s[1],u[0],u[1]),r.bezierCurveTo(l[0],l[1],l[0],l[1],a[2][0],a[2][1])}else for(var f=1;f0&&i&&w(-f/o,0,o);var p=r[0],g=r[o-1],y,m;_(),y<0&&x(-y,.8),m<0&&x(m,.8),_(),S(y,m,1),S(m,y,-1),_(),y<0&&b(-y),m<0&&b(m);function _(){y=p.rect[e]-a,m=n-g.rect[e]-g.rect[t]}function S(C,T,D){if(C<0){var M=Math.min(T,-C);if(M>0){w(M*D,0,o);var L=M+C;L<0&&x(-L*D,1)}else x(-C*D,1)}}function w(C,T,D){C!==0&&(u=!0);for(var M=T;M0)for(var L=0;L0;L--){var E=D[L-1]*R;w(-E,L,o)}}}function b(C){var T=C<0?-1:1;C=Math.abs(C);for(var D=Math.ceil(C/(o-1)),M=0;M0?w(D,0,M+1):w(-D,o-M-1,o),C-=D,C<=0)return}return u}function i6(r,e,t,a){return HA(r,"x","width",e,t,a)}function WA(r,e,t,a){return HA(r,"y","height",e,t,a)}function $A(r){var e=[];r.sort(function(p,g){return g.priority-p.priority});var t=new vt(0,0,0,0);function a(p){if(!p.ignore){var g=p.ensureState("emphasis");g.ignore==null&&(g.ignore=!1)}p.ignore=!0}for(var n=0;n=0&&a.attr(i.oldLayoutSelect),dt(v,"emphasis")>=0&&a.attr(i.oldLayoutEmphasis)),Lt(a,u,t,l)}else if(a.attr(u),!Mo(a).valueAnimation){var h=ft(a.style.opacity,1);a.style.opacity=0,Ft(a,{style:{opacity:h}},t,l)}if(i.oldLayout=u,a.states.select){var c=i.oldLayoutSelect={};xu(c,u,wu),xu(c,a.states.select,wu)}if(a.states.emphasis){var d=i.oldLayoutEmphasis={};xu(d,u,wu),xu(d,a.states.emphasis,wu)}IC(a,l,f,t,t)}if(n&&!n.ignore&&!n.invisible){var i=l6(n),o=i.oldLayout,p={points:n.shape.points};o?(n.attr({shape:o}),Lt(n,{shape:p},t)):(n.setShape(p),n.style.strokePercent=0,Ft(n,{style:{strokePercent:1}},t)),i.oldLayout=p}},r}(),f6=u6,lc=Ct();function h6(r){r.registerUpdateLifecycle("series:beforeupdate",function(e,t,a){var n=lc(t).labelManager;n||(n=lc(t).labelManager=new f6),n.clearLabels()}),r.registerUpdateLifecycle("series:layoutlabels",function(e,t,a){var n=lc(t).labelManager;a.updatedSeries.forEach(function(i){n.addLabelsOfSeries(t.getViewOfSeriesModel(i))}),n.updateLayoutConfig(t),n.layout(t),n.processLabelsOverall()})}var v6=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t.hasSymbolVisual=!0,t}return e.prototype.getInitialData=function(t){return Ta(null,this,{useEncodeDefaulter:!0})},e.prototype.getLegendIcon=function(t){var a=new nt,n=jt("line",0,t.itemHeight/2,t.itemWidth,0,t.lineStyle.stroke,!1);a.add(n),n.setStyle(t.lineStyle);var i=this.getData().getVisual("symbol"),o=this.getData().getVisual("symbolRotate"),s=i==="none"?"circle":i,l=t.itemHeight*.8,u=jt(s,(t.itemWidth-l)/2,(t.itemHeight-l)/2,l,l,t.itemStyle.fill);a.add(u),u.setStyle(t.itemStyle);var f=t.iconRotate==="inherit"?o:t.iconRotate||0;return u.rotation=f*Math.PI/180,u.setOrigin([t.itemWidth/2,t.itemHeight/2]),s.indexOf("empty")>-1&&(u.style.stroke=u.style.fill,u.style.fill="#fff",u.style.lineWidth=2),a},e.type="series.line",e.dependencies=["grid","polar"],e.defaultOption={z:3,coordinateSystem:"cartesian2d",legendHoverLink:!0,clip:!0,label:{position:"top"},endLabel:{show:!1,valueAnimation:!0,distance:8},lineStyle:{width:2,type:"solid"},emphasis:{scale:!0},step:!1,smooth:!1,smoothMonotone:null,symbol:"emptyCircle",symbolSize:4,symbolRotate:null,showSymbol:!0,showAllSymbol:"auto",connectNulls:!1,sampling:"none",animationEasing:"linear",progressive:0,hoverLayerThreshold:1/0,universalTransition:{divideShape:"clone"},triggerLineEvent:!1},e}(Ht),c6=v6;function go(r,e){var t=r.mapDimensionsAll("defaultedLabel"),a=t.length;if(a===1){var n=vo(r,e,t[0]);return n!=null?n+"":null}else if(a){for(var i=[],o=0;o=0&&a.push(e[i])}return a.join(" ")}var d6=function(r){k(e,r);function e(t,a,n,i){var o=r.call(this)||this;return o.updateData(t,a,n,i),o}return e.prototype._createSymbol=function(t,a,n,i,o){this.removeAll();var s=jt(t,-1,-1,2,2,null,o);s.attr({z2:100,culling:!0,scaleX:i[0]/2,scaleY:i[1]/2}),s.drift=p6,this._symbolType=t,this.add(s)},e.prototype.stopSymbolAnimation=function(t){this.childAt(0).stopAnimation(null,t)},e.prototype.getSymbolType=function(){return this._symbolType},e.prototype.getSymbolPath=function(){return this.childAt(0)},e.prototype.highlight=function(){_a(this.childAt(0))},e.prototype.downplay=function(){Sa(this.childAt(0))},e.prototype.setZ=function(t,a){var n=this.childAt(0);n.zlevel=t,n.z=a},e.prototype.setDraggable=function(t,a){var n=this.childAt(0);n.draggable=t,n.cursor=!a&&t?"move":n.cursor},e.prototype.updateData=function(t,a,n,i){this.silent=!1;var o=t.getItemVisual(a,"symbol")||"circle",s=t.hostModel,l=e.getSymbolSize(t,a),u=o!==this._symbolType,f=i&&i.disableAnimation;if(u){var h=t.getItemVisual(a,"symbolKeepAspect");this._createSymbol(o,t,a,l,h)}else{var v=this.childAt(0);v.silent=!1;var c={scaleX:l[0]/2,scaleY:l[1]/2};f?v.attr(c):Lt(v,c,s,a),Ar(v)}if(this._updateCommon(t,a,l,n,i),u){var v=this.childAt(0);if(!f){var c={scaleX:this._sizeX,scaleY:this._sizeY,style:{opacity:v.style.opacity}};v.scaleX=v.scaleY=0,v.style.opacity=0,Ft(v,c,s,a)}}f&&this.childAt(0).stopAnimation("leave")},e.prototype._updateCommon=function(t,a,n,i,o){var s=this.childAt(0),l=t.hostModel,u,f,h,v,c,d,p,g,y;if(i&&(u=i.emphasisItemStyle,f=i.blurItemStyle,h=i.selectItemStyle,v=i.focus,c=i.blurScope,p=i.labelStatesModels,g=i.hoverScale,y=i.cursorStyle,d=i.emphasisDisabled),!i||t.hasItemOption){var m=i&&i.itemModel?i.itemModel:t.getItemModel(a),_=m.getModel("emphasis");u=_.getModel("itemStyle").getItemStyle(),h=m.getModel(["select","itemStyle"]).getItemStyle(),f=m.getModel(["blur","itemStyle"]).getItemStyle(),v=_.get("focus"),c=_.get("blurScope"),d=_.get("disabled"),p=ie(m),g=_.getShallow("scale"),y=m.getShallow("cursor")}var S=t.getItemVisual(a,"symbolRotate");s.attr("rotation",(S||0)*Math.PI/180||0);var w=Ti(t.getItemVisual(a,"symbolOffset"),n);w&&(s.x=w[0],s.y=w[1]),y&&s.attr("cursor",y);var x=t.getItemVisual(a,"style"),b=x.fill;if(s instanceof pe){var C=s.style;s.useStyle(V({image:C.image,x:C.x,y:C.y,width:C.width,height:C.height},x))}else s.__isEmptyBrush?s.useStyle(V({},x)):s.useStyle(x),s.style.decal=null,s.setColor(b,o&&o.symbolInnerColor),s.style.strokeNoScale=!0;var T=t.getItemVisual(a,"liftZ"),D=this._z2;T!=null?D==null&&(this._z2=s.z2,s.z2+=T):D!=null&&(s.z2=D,this._z2=null);var M=o&&o.useNameLabel;de(s,p,{labelFetcher:l,labelDataIndex:a,defaultText:L,inheritColor:b,defaultOpacity:x.opacity});function L(R){return M?t.getName(R):go(t,R)}this._sizeX=n[0]/2,this._sizeY=n[1]/2;var I=s.ensureState("emphasis");I.style=u,s.ensureState("select").style=h,s.ensureState("blur").style=f;var P=g==null||g===!0?Math.max(1.1,3/this._sizeY):isFinite(g)&&g>0?+g:1;I.scaleX=this._sizeX*P,I.scaleY=this._sizeY*P,this.setSymbolScale(1),$t(this,v,c,d)},e.prototype.setSymbolScale=function(t){this.scaleX=this.scaleY=t},e.prototype.fadeOut=function(t,a,n){var i=this.childAt(0),o=it(this).dataIndex,s=n&&n.animation;if(this.silent=i.silent=!0,n&&n.fadeLabel){var l=i.getTextContent();l&&rn(l,{style:{opacity:0}},a,{dataIndex:o,removeOpt:s,cb:function(){i.removeTextContent()}})}else i.removeTextContent();rn(i,{style:{opacity:0},scaleX:0,scaleY:0},a,{dataIndex:o,cb:t,removeOpt:s})},e.getSymbolSize=function(t,a){return Bo(t.getItemVisual(a,"symbolSize"))},e}(nt);function p6(r,e){this.parent.drift(r,e)}var El=d6;function uc(r,e,t,a){return e&&!isNaN(e[0])&&!isNaN(e[1])&&!(a.isIgnore&&a.isIgnore(t))&&!(a.clipShape&&!a.clipShape.contain(e[0],e[1]))&&r.getItemVisual(t,"symbol")!=="none"}function S_(r){return r!=null&&!et(r)&&(r={isIgnore:r}),r||{}}function x_(r){var e=r.hostModel,t=e.getModel("emphasis");return{emphasisItemStyle:t.getModel("itemStyle").getItemStyle(),blurItemStyle:e.getModel(["blur","itemStyle"]).getItemStyle(),selectItemStyle:e.getModel(["select","itemStyle"]).getItemStyle(),focus:t.get("focus"),blurScope:t.get("blurScope"),emphasisDisabled:t.get("disabled"),hoverScale:t.get("scale"),labelStatesModels:ie(e),cursorStyle:e.get("cursor")}}var g6=function(){function r(e){this.group=new nt,this._SymbolCtor=e||El}return r.prototype.updateData=function(e,t){this._progressiveEls=null,t=S_(t);var a=this.group,n=e.hostModel,i=this._data,o=this._SymbolCtor,s=t.disableAnimation,l=x_(e),u={disableAnimation:s},f=t.getSymbolPoint||function(h){return e.getItemLayout(h)};i||a.removeAll(),e.diff(i).add(function(h){var v=f(h);if(uc(e,v,h,t)){var c=new o(e,h,l,u);c.setPosition(v),e.setItemGraphicEl(h,c),a.add(c)}}).update(function(h,v){var c=i.getItemGraphicEl(v),d=f(h);if(!uc(e,d,h,t)){a.remove(c);return}var p=e.getItemVisual(h,"symbol")||"circle",g=c&&c.getSymbolType&&c.getSymbolType();if(!c||g&&g!==p)a.remove(c),c=new o(e,h,l,u),c.setPosition(d);else{c.updateData(e,h,l,u);var y={x:d[0],y:d[1]};s?c.attr(y):Lt(c,y,n)}a.add(c),e.setItemGraphicEl(h,c)}).remove(function(h){var v=i.getItemGraphicEl(h);v&&v.fadeOut(function(){a.remove(v)},n)}).execute(),this._getSymbolPoint=f,this._data=e},r.prototype.updateLayout=function(){var e=this,t=this._data;t&&t.eachItemGraphicEl(function(a,n){var i=e._getSymbolPoint(n);a.setPosition(i),a.markRedraw()})},r.prototype.incrementalPrepareUpdate=function(e){this._seriesScope=x_(e),this._data=null,this.group.removeAll()},r.prototype.incrementalUpdate=function(e,t,a){this._progressiveEls=[],a=S_(a);function n(l){l.isGroup||(l.incremental=!0,l.ensureState("emphasis").hoverLayer=!0)}for(var i=e.start;i0?t=a[0]:a[1]<0&&(t=a[1]),t}function ZA(r,e,t,a){var n=NaN;r.stacked&&(n=t.get(t.getCalculationInfo("stackedOverDimension"),a)),isNaN(n)&&(n=r.valueStart);var i=r.baseDataOffset,o=[];return o[i]=t.get(r.baseDim,a),o[1-i]=n,e.dataToPoint(o)}function m6(r,e){var t=[];return e.diff(r).add(function(a){t.push({cmd:"+",idx:a})}).update(function(a,n){t.push({cmd:"=",idx:n,idx1:a})}).remove(function(a){t.push({cmd:"-",idx:a})}).execute(),t}function _6(r,e,t,a,n,i,o,s){for(var l=m6(r,e),u=[],f=[],h=[],v=[],c=[],d=[],p=[],g=YA(n,e,o),y=r.getLayout("points")||[],m=e.getLayout("points")||[],_=0;_=n||p<0)break;if(fi(y,m)){if(l){p+=i;continue}break}if(p===t)r[i>0?"moveTo":"lineTo"](y,m),h=y,v=m;else{var _=y-u,S=m-f;if(_*_+S*S<.5){p+=i;continue}if(o>0){for(var w=p+i,x=e[w*2],b=e[w*2+1];x===y&&b===m&&g=a||fi(x,b))c=y,d=m;else{D=x-u,M=b-f;var P=y-u,R=x-y,E=m-f,B=b-m,O=void 0,z=void 0;if(s==="x"){O=Math.abs(P),z=Math.abs(R);var H=D>0?1:-1;c=y-H*O*o,d=m,L=y+H*z*o,I=m}else if(s==="y"){O=Math.abs(E),z=Math.abs(B);var $=M>0?1:-1;c=y,d=m-$*O*o,L=y,I=m+$*z*o}else O=Math.sqrt(P*P+E*E),z=Math.sqrt(R*R+B*B),T=z/(z+O),c=y-D*o*(1-T),d=m-M*o*(1-T),L=y+D*o*T,I=m+M*o*T,L=ka(L,Oa(x,y)),I=ka(I,Oa(b,m)),L=Oa(L,ka(x,y)),I=Oa(I,ka(b,m)),D=L-y,M=I-m,c=y-D*O/z,d=m-M*O/z,c=ka(c,Oa(u,y)),d=ka(d,Oa(f,m)),c=Oa(c,ka(u,y)),d=Oa(d,ka(f,m)),D=y-c,M=m-d,L=y+D*z/O,I=m+M*z/O}r.bezierCurveTo(h,v,c,d,y,m),h=L,v=I}else r.lineTo(y,m)}u=y,f=m,p+=i}return g}var XA=function(){function r(){this.smooth=0,this.smoothConstraint=!0}return r}(),S6=function(r){k(e,r);function e(t){var a=r.call(this,t)||this;return a.type="ec-polyline",a}return e.prototype.getDefaultStyle=function(){return{stroke:"#000",fill:null}},e.prototype.getDefaultShape=function(){return new XA},e.prototype.buildPath=function(t,a){var n=a.points,i=0,o=n.length/2;if(a.connectNulls){for(;o>0&&fi(n[o*2-2],n[o*2-1]);o--);for(;i=0){var S=u?(d-l)*_+l:(c-s)*_+s;return u?[t,S]:[S,t]}s=c,l=d;break;case o.C:c=i[h++],d=i[h++],p=i[h++],g=i[h++],y=i[h++],m=i[h++];var w=u?mf(s,c,p,y,t,f):mf(l,d,g,m,t,f);if(w>0)for(var x=0;x=0){var S=u?ae(l,d,g,m,b):ae(s,c,p,y,b);return u?[t,S]:[S,t]}}s=y,l=m;break}}},e}(mt),x6=function(r){k(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e}(XA),qA=function(r){k(e,r);function e(t){var a=r.call(this,t)||this;return a.type="ec-polygon",a}return e.prototype.getDefaultShape=function(){return new x6},e.prototype.buildPath=function(t,a){var n=a.points,i=a.stackedOnPoints,o=0,s=n.length/2,l=a.smoothMonotone;if(a.connectNulls){for(;s>0&&fi(n[s*2-2],n[s*2-1]);s--);for(;oe){i?t.push(o(i,l,e)):n&&t.push(o(n,l,0),o(n,l,e));break}else n&&(t.push(o(n,l,0)),n=null),t.push(l),i=l}return t}function C6(r,e,t){var a=r.getVisual("visualMeta");if(!(!a||!a.length||!r.count())&&e.type==="cartesian2d"){for(var n,i,o=a.length-1;o>=0;o--){var s=r.getDimensionInfo(a[o].dimension);if(n=s&&s.coordDim,n==="x"||n==="y"){i=a[o];break}}if(!!i){var l=e.getAxis(n),u=G(i.stops,function(_){return{coord:l.toGlobalCoord(l.dataToCoord(_.value)),color:_.color}}),f=u.length,h=i.outerColors.slice();f&&u[0].coord>u[f-1].coord&&(u.reverse(),h.reverse());var v=b6(u,n==="x"?t.getWidth():t.getHeight()),c=v.length;if(!c&&f)return u[0].coord<0?h[1]?h[1]:u[f-1].color:h[0]?h[0]:u[0].color;var d=10,p=v[0].coord-d,g=v[c-1].coord+d,y=g-p;if(y<.001)return"transparent";A(v,function(_){_.offset=(_.coord-p)/y}),v.push({offset:c?v[c-1].offset:.5,color:h[1]||"transparent"}),v.unshift({offset:c?v[0].offset:.5,color:h[0]||"transparent"});var m=new Cl(0,0,0,0,v,!0);return m[n]=p,m[n+"2"]=g,m}}}function T6(r,e,t){var a=r.get("showAllSymbol"),n=a==="auto";if(!(a&&!n)){var i=t.getAxesByScale("ordinal")[0];if(!!i&&!(n&&A6(i,e))){var o=e.mapDimension(i.dim),s={};return A(i.getViewLabels(),function(l){var u=i.scale.getRawOrdinalNumber(l.tickValue);s[u]=1}),function(l){return!s.hasOwnProperty(e.get(o,l))}}}}function A6(r,e){var t=r.getExtent(),a=Math.abs(t[1]-t[0])/r.scale.count();isNaN(a)&&(a=0);for(var n=e.count(),i=Math.max(1,Math.round(n/5)),o=0;oa)return!1;return!0}function D6(r,e){return isNaN(r)||isNaN(e)}function M6(r){for(var e=r.length/2;e>0&&D6(r[e*2-2],r[e*2-1]);e--);return e-1}function A_(r,e){return[r[e*2],r[e*2+1]]}function L6(r,e,t){for(var a=r.length/2,n=t==="x"?0:1,i,o,s=0,l=-1,u=0;u=e||i>=e&&o<=e){l=u;break}s=u,i=o}return{range:[s,l],t:(e-i)/(o-i)}}function QA(r){if(r.get(["endLabel","show"]))return!0;for(var e=0;e0&&t.get(["emphasis","lineStyle","width"])==="bolder"){var H=p.getState("emphasis").style;H.lineWidth=+p.style.lineWidth+1}it(p).seriesIndex=t.seriesIndex,$t(p,B,O,z);var $=T_(t.get("smooth")),X=t.get("smoothMonotone");if(p.setShape({smooth:$,smoothMonotone:X,connectNulls:C}),g){var Q=l.getCalculationInfo("stackedOnSeries"),j=0;g.useStyle(tt(f.getAreaStyle(),{fill:I,opacity:.7,lineJoin:"bevel",decal:l.getVisual("style").decal})),Q&&(j=T_(Q.get("smooth"))),g.setShape({smooth:$,stackedOnSmooth:j,smoothMonotone:X,connectNulls:C}),ce(g,t,"areaStyle"),it(g).seriesIndex=t.seriesIndex,$t(g,B,O,z)}var pt=function(xt){i._changePolyState(xt)};l.eachItemGraphicEl(function(xt){xt&&(xt.onHoverStateChange=pt)}),this._polyline.onHoverStateChange=pt,this._data=l,this._coordSys=o,this._stackedOnPoints=x,this._points=h,this._step=M,this._valueOrigin=S,t.get("triggerLineEvent")&&(this.packEventData(t,p),g&&this.packEventData(t,g))},e.prototype.packEventData=function(t,a){it(a).eventData={componentType:"series",componentSubType:"line",componentIndex:t.componentIndex,seriesIndex:t.seriesIndex,seriesName:t.name,seriesType:"line"}},e.prototype.highlight=function(t,a,n,i){var o=t.getData(),s=di(o,i);if(this._changePolyState("emphasis"),!(s instanceof Array)&&s!=null&&s>=0){var l=o.getLayout("points"),u=o.getItemGraphicEl(s);if(!u){var f=l[s*2],h=l[s*2+1];if(isNaN(f)||isNaN(h)||this._clipShapeForSymbol&&!this._clipShapeForSymbol.contain(f,h))return;var v=t.get("zlevel")||0,c=t.get("z")||0;u=new El(o,s),u.x=f,u.y=h,u.setZ(v,c);var d=u.getSymbolPath().getTextContent();d&&(d.zlevel=v,d.z=c,d.z2=this._polyline.z2+1),u.__temp=!0,o.setItemGraphicEl(s,u),u.stopSymbolAnimation(!0),this.group.add(u)}u.highlight()}else zt.prototype.highlight.call(this,t,a,n,i)},e.prototype.downplay=function(t,a,n,i){var o=t.getData(),s=di(o,i);if(this._changePolyState("normal"),s!=null&&s>=0){var l=o.getItemGraphicEl(s);l&&(l.__temp?(o.setItemGraphicEl(s,null),this.group.remove(l)):l.downplay())}else zt.prototype.downplay.call(this,t,a,n,i)},e.prototype._changePolyState=function(t){var a=this._polygon;Af(this._polyline,t),a&&Af(a,t)},e.prototype._newPolyline=function(t){var a=this._polyline;return a&&this._lineGroup.remove(a),a=new S6({shape:{points:t},segmentIgnoreThreshold:2,z2:10}),this._lineGroup.add(a),this._polyline=a,a},e.prototype._newPolygon=function(t,a){var n=this._polygon;return n&&this._lineGroup.remove(n),n=new qA({shape:{points:t,stackedOnPoints:a},segmentIgnoreThreshold:2}),this._lineGroup.add(n),this._polygon=n,n},e.prototype._initSymbolLabelAnimation=function(t,a,n){var i,o,s=a.getBaseAxis(),l=s.inverse;a.type==="cartesian2d"?(i=s.isHorizontal(),o=!1):a.type==="polar"&&(i=s.dim==="angle",o=!0);var u=t.hostModel,f=u.get("animationDuration");J(f)&&(f=f(null));var h=u.get("animationDelay")||0,v=J(h)?h(null):h;t.eachItemGraphicEl(function(c,d){var p=c;if(p){var g=[c.x,c.y],y=void 0,m=void 0,_=void 0;if(n)if(o){var S=n,w=a.pointToCoord(g);i?(y=S.startAngle,m=S.endAngle,_=-w[1]/180*Math.PI):(y=S.r0,m=S.r,_=w[0])}else{var x=n;i?(y=x.x,m=x.x+x.width,_=c.x):(y=x.y+x.height,m=x.y,_=c.y)}var b=m===y?0:(_-y)/(m-y);l&&(b=1-b);var C=J(h)?h(d):f*b+v,T=p.getSymbolPath(),D=T.getTextContent();p.attr({scaleX:0,scaleY:0}),p.animateTo({scaleX:1,scaleY:1},{duration:200,setToFinal:!0,delay:C}),D&&D.animateFrom({style:{opacity:0}},{duration:300,delay:C}),T.disableLabelAnimation=!0}})},e.prototype._initOrUpdateEndLabel=function(t,a,n){var i=t.getModel("endLabel");if(QA(t)){var o=t.getData(),s=this._polyline,l=o.getLayout("points");if(!l){s.removeTextContent(),this._endLabel=null;return}var u=this._endLabel;u||(u=this._endLabel=new Dt({z2:200}),u.ignoreClip=!0,s.setTextContent(this._endLabel),s.disableLabelAnimation=!0);var f=M6(l);f>=0&&(de(s,ie(t,"endLabel"),{inheritColor:n,labelFetcher:t,labelDataIndex:f,defaultText:function(h,v,c){return c!=null?UA(o,c):go(o,h)},enableTextSetter:!0},I6(i,a)),s.textConfig.position=null)}else this._endLabel&&(this._polyline.removeTextContent(),this._endLabel=null)},e.prototype._endLabelOnDuring=function(t,a,n,i,o,s,l){var u=this._endLabel,f=this._polyline;if(u){t<1&&i.originalX==null&&(i.originalX=u.x,i.originalY=u.y);var h=n.getLayout("points"),v=n.hostModel,c=v.get("connectNulls"),d=s.get("precision"),p=s.get("distance")||0,g=l.getBaseAxis(),y=g.isHorizontal(),m=g.inverse,_=a.shape,S=m?y?_.x:_.y+_.height:y?_.x+_.width:_.y,w=(y?p:0)*(m?-1:1),x=(y?0:-p)*(m?-1:1),b=y?"x":"y",C=L6(h,S,b),T=C.range,D=T[1]-T[0],M=void 0;if(D>=1){if(D>1&&!c){var L=A_(h,T[0]);u.attr({x:L[0]+w,y:L[1]+x}),o&&(M=v.getRawValue(T[0]))}else{var L=f.getPointOn(S,b);L&&u.attr({x:L[0]+w,y:L[1]+x});var I=v.getRawValue(T[0]),P=v.getRawValue(T[1]);o&&(M=P2(n,d,I,P,C.t))}i.lastFrameIndex=T[0]}else{var R=t===1||i.lastFrameIndex>0?T[0]:0,L=A_(h,R);o&&(M=v.getRawValue(R)),u.attr({x:L[0]+w,y:L[1]+x})}if(o){var E=Mo(u);typeof E.setLabelText=="function"&&E.setLabelText(M)}}},e.prototype._doUpdateAnimation=function(t,a,n,i,o,s,l){var u=this._polyline,f=this._polygon,h=t.hostModel,v=_6(this._data,t,this._stackedOnPoints,a,this._coordSys,n,this._valueOrigin),c=v.current,d=v.stackedOnCurrent,p=v.next,g=v.stackedOnNext;if(o&&(c=Ba(v.current,n,o,l),d=Ba(v.stackedOnCurrent,n,o,l),p=Ba(v.next,n,o,l),g=Ba(v.stackedOnNext,n,o,l)),C_(c,p)>3e3||f&&C_(d,g)>3e3){u.stopAnimation(),u.setShape({points:p}),f&&(f.stopAnimation(),f.setShape({points:p,stackedOnPoints:g}));return}u.shape.__points=v.current,u.shape.points=c;var y={shape:{points:p}};v.current!==c&&(y.shape.__points=v.next),u.stopAnimation(),Lt(u,y,h),f&&(f.setShape({points:c,stackedOnPoints:d}),f.stopAnimation(),Lt(f,{shape:{stackedOnPoints:g}},h),u.shape.points!==f.shape.points&&(f.shape.points=u.shape.points));for(var m=[],_=v.status,S=0;S<_.length;S++){var w=_[S].cmd;if(w==="="){var x=t.getItemGraphicEl(_[S].idx1);x&&m.push({el:x,ptIdx:S})}}u.animators&&u.animators.length&&u.animators[0].during(function(){f&&f.dirtyShape();for(var b=u.shape.__points,C=0;Ce&&(e=r[t]);return isFinite(e)?e:NaN},min:function(r){for(var e=1/0,t=0;t10&&o.type==="cartesian2d"&&i){var l=o.getBaseAxis(),u=o.getOtherAxis(l),f=l.getExtent(),h=a.getDevicePixelRatio(),v=Math.abs(f[1]-f[0])*(h||1),c=Math.round(s/v);if(isFinite(c)&&c>1){i==="lttb"&&e.setData(n.lttbDownSample(n.mapDimension(u.dim),1/c));var d=void 0;U(i)?d=E6[i]:J(i)&&(d=i),d&&e.setData(n.downSample(n.mapDimension(u.dim),1/c,d,k6))}}}}}function tD(r){r.registerChartView(R6),r.registerSeriesModel(c6),r.registerLayout(Ol("line",!0)),r.registerVisual({seriesType:"line",reset:function(e){var t=e.getData(),a=e.getModel("lineStyle").getLineStyle();a&&!a.stroke&&(a.stroke=t.getVisual("style").fill),t.setVisual("legendLineStyle",a)}}),r.registerProcessor(r.PRIORITY.PROCESSOR.STATISTIC,jA("line"))}var eD=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.getInitialData=function(t,a){return Ta(null,this,{useEncodeDefaulter:!0})},e.prototype.getMarkerPosition=function(t,a,n){var i=this.coordinateSystem;if(i&&i.clampData){var o=i.clampData(t),s=i.dataToPoint(o);if(n)A(i.getAxes(),function(v,c){if(v.type==="category"&&a!=null){var d=v.getTicksCoords(),p=o[c],g=a[c]==="x1"||a[c]==="y1";if(g&&(p+=1),d.length<2)return;if(d.length===2){s[c]=v.toGlobalCoord(v.getExtent()[g?1:0]);return}for(var y=void 0,m=void 0,_=1,S=0;Sp){m=(w+y)/2;break}S===1&&(_=x-d[0].tickValue)}m==null&&(y?y&&(m=d[d.length-1].coord):m=d[0].coord),s[c]=v.toGlobalCoord(m)}});else{var l=this.getData(),u=l.getLayout("offset"),f=l.getLayout("size"),h=i.getBaseAxis().isHorizontal()?0:1;s[h]+=u+f/2}return s}return[NaN,NaN]},e.type="series.__base_bar__",e.defaultOption={z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,barMinHeight:0,barMinAngle:0,large:!1,largeThreshold:400,progressive:3e3,progressiveChunkMode:"mod"},e}(Ht);Ht.registerClass(eD);var $f=eD,O6=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.getInitialData=function(){return Ta(null,this,{useEncodeDefaulter:!0,createInvertedIndices:!!this.get("realtimeSort",!0)||null})},e.prototype.getProgressive=function(){return this.get("large")?this.get("progressive"):!1},e.prototype.getProgressiveThreshold=function(){var t=this.get("progressiveThreshold"),a=this.get("largeThreshold");return a>t&&(t=a),t},e.prototype.brushSelector=function(t,a,n){return n.rect(a.getItemLayout(t))},e.type="series.bar",e.dependencies=["grid","polar"],e.defaultOption=cn($f.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}),e}($f),B6=O6,N6=function(){function r(){this.cx=0,this.cy=0,this.r0=0,this.r=0,this.startAngle=0,this.endAngle=Math.PI*2,this.clockwise=!0}return r}(),V6=function(r){k(e,r);function e(t){var a=r.call(this,t)||this;return a.type="sausage",a}return e.prototype.getDefaultShape=function(){return new N6},e.prototype.buildPath=function(t,a){var n=a.cx,i=a.cy,o=Math.max(a.r0||0,0),s=Math.max(a.r,0),l=(s-o)*.5,u=o+l,f=a.startAngle,h=a.endAngle,v=a.clockwise,c=Math.PI*2,d=v?h-fMath.PI/2&&fs)return!0;s=h}return!1},e.prototype._isOrderDifferentInView=function(t,a){for(var n=a.scale,i=n.getExtent(),o=Math.max(0,i[0]),s=Math.min(i[1],n.getOrdinalMeta().categories.length-1);o<=s;++o)if(t.ordinalNumbers[o]!==n.getRawOrdinalNumber(o))return!0},e.prototype._updateSortWithinSameData=function(t,a,n,i){if(!!this._isOrderChangedWithinSameData(t,a,n)){var o=this._dataSort(t,n,a);this._isOrderDifferentInView(o,n)&&(this._removeOnRenderedListener(i),i.dispatchAction({type:"changeAxisOrder",componentType:n.dim+"Axis",axisId:n.index,sortInfo:o}))}},e.prototype._dispatchInitSort=function(t,a,n){var i=a.baseAxis,o=this._dataSort(t,i,function(s){return t.get(t.mapDimension(a.otherAxis.dim),s)});n.dispatchAction({type:"changeAxisOrder",componentType:i.dim+"Axis",isInitSort:!0,axisId:i.index,sortInfo:o})},e.prototype.remove=function(t,a){this._clear(this._model),this._removeOnRenderedListener(a)},e.prototype.dispose=function(t,a){this._removeOnRenderedListener(a)},e.prototype._removeOnRenderedListener=function(t){this._onRendered&&(t.getZr().off("rendered",this._onRendered),this._onRendered=null)},e.prototype._clear=function(t){var a=this.group,n=this._data;t&&t.isAnimationEnabled()&&n&&!this._isLargeDraw?(this._removeBackground(),this._backgroundEls=[],n.eachItemGraphicEl(function(i){Js(i,t,it(i).dataIndex)})):a.removeAll(),this._data=null,this._isFirstFrame=!0},e.prototype._removeBackground=function(){this.group.remove(this._backgroundGroup),this._backgroundGroup=null},e.type="bar",e}(zt),D_={cartesian2d:function(r,e){var t=e.width<0?-1:1,a=e.height<0?-1:1;t<0&&(e.x+=e.width,e.width=-e.width),a<0&&(e.y+=e.height,e.height=-e.height);var n=r.x+r.width,i=r.y+r.height,o=hc(e.x,r.x),s=vc(e.x+e.width,n),l=hc(e.y,r.y),u=vc(e.y+e.height,i),f=sn?s:o,e.y=h&&l>i?u:l,e.width=f?0:s-o,e.height=h?0:u-l,t<0&&(e.x+=e.width,e.width=-e.width),a<0&&(e.y+=e.height,e.height=-e.height),f||h},polar:function(r,e){var t=e.r0<=e.r?1:-1;if(t<0){var a=e.r;e.r=e.r0,e.r0=a}var n=vc(e.r,r.r),i=hc(e.r0,r.r0);e.r=n,e.r0=i;var o=n-i<0;if(t<0){var a=e.r;e.r=e.r0,e.r0=a}return o}},M_={cartesian2d:function(r,e,t,a,n,i,o,s,l){var u=new bt({shape:V({},a),z2:1});if(u.__dataIndex=t,u.name="item",i){var f=u.shape,h=n?"height":"width";f[h]=0}return u},polar:function(r,e,t,a,n,i,o,s,l){var u=!n&&l?Uf:Ve,f=new u({shape:a,z2:1});f.name="item";var h=rD(n);if(f.calculateTextPosition=z6(h,{isRoundCap:u===Uf}),i){var v=f.shape,c=n?"r":"endAngle",d={};v[c]=n?a.r0:a.startAngle,d[c]=a[c],(s?Lt:Ft)(f,{shape:d},i)}return f}};function W6(r,e){var t=r.get("realtimeSort",!0),a=e.getBaseAxis();if(t&&a.type==="category"&&e.type==="cartesian2d")return{baseAxis:a,otherAxis:e.getOtherAxis(a)}}function L_(r,e,t,a,n,i,o,s){var l,u;i?(u={x:a.x,width:a.width},l={y:a.y,height:a.height}):(u={y:a.y,height:a.height},l={x:a.x,width:a.width}),s||(o?Lt:Ft)(t,{shape:l},e,n,null);var f=e?r.baseAxis.model:null;(o?Lt:Ft)(t,{shape:u},f,n)}function I_(r,e){for(var t=0;t0?1:-1,o=a.height>0?1:-1;return{x:a.x+i*n/2,y:a.y+o*n/2,width:a.width-i*n,height:a.height-o*n}},polar:function(r,e,t){var a=r.getItemLayout(e);return{cx:a.cx,cy:a.cy,r0:a.r0,r:a.r,startAngle:a.startAngle,endAngle:a.endAngle,clockwise:a.clockwise}}};function Y6(r){return r.startAngle!=null&&r.endAngle!=null&&r.startAngle===r.endAngle}function rD(r){return function(e){var t=e?"Arc":"Angle";return function(a){switch(a){case"start":case"insideStart":case"end":case"insideEnd":return a+t;default:return a}}}(r)}function R_(r,e,t,a,n,i,o,s){var l=e.getItemVisual(t,"style");if(s){if(!i.get("roundCap")){var f=r.shape,h=ri(a.getModel("itemStyle"),f,!0);V(f,h),r.setShape(f)}}else{var u=a.get(["itemStyle","borderRadius"])||0;r.setShape("r",u)}r.useStyle(l);var v=a.getShallow("cursor");v&&r.attr("cursor",v);var c=s?o?n.r>=n.r0?"endArc":"startArc":n.endAngle>=n.startAngle?"endAngle":"startAngle":o?n.height>=0?"bottom":"top":n.width>=0?"right":"left",d=ie(a);de(r,d,{labelFetcher:i,labelDataIndex:t,defaultText:go(i.getData(),t),inheritColor:l.fill,defaultOpacity:l.opacity,defaultOutsidePosition:c});var p=r.getTextContent();if(s&&p){var g=a.get(["label","position"]);r.textConfig.inside=g==="middle"?!0:null,F6(r,g==="outside"?c:g,rD(o),a.get(["label","rotate"]))}LC(p,d,i.getRawValue(t),function(m){return UA(e,m)});var y=a.getModel(["emphasis"]);$t(r,y.get("focus"),y.get("blurScope"),y.get("disabled")),ce(r,a),Y6(n)&&(r.style.fill="none",r.style.stroke="none",A(r.states,function(m){m.style&&(m.style.fill=m.style.stroke="none")}))}function Z6(r,e){var t=r.get(["itemStyle","borderColor"]);if(!t||t==="none")return 0;var a=r.get(["itemStyle","borderWidth"])||0,n=isNaN(e.width)?Number.MAX_VALUE:Math.abs(e.width),i=isNaN(e.height)?Number.MAX_VALUE:Math.abs(e.height);return Math.min(a,n,i)}var X6=function(){function r(){}return r}(),E_=function(r){k(e,r);function e(t){var a=r.call(this,t)||this;return a.type="largeBar",a}return e.prototype.getDefaultShape=function(){return new X6},e.prototype.buildPath=function(t,a){for(var n=a.points,i=this.baseDimIdx,o=1-this.baseDimIdx,s=[],l=[],u=this.barWidth,f=0;f=0?t:null},30,!1);function q6(r,e,t){for(var a=r.baseDimIdx,n=1-a,i=r.shape.points,o=r.largeDataIndices,s=[],l=[],u=r.barWidth,f=0,h=i.length/3;f=s[0]&&e<=s[0]+l[0]&&t>=s[1]&&t<=s[1]+l[1])return o[f]}return-1}function aD(r,e,t){if(Di(t,"cartesian2d")){var a=e,n=t.getArea();return{x:r?a.x:n.x,y:r?n.y:a.y,width:r?a.width:n.width,height:r?n.height:a.height}}else{var n=t.getArea(),i=e;return{cx:n.cx,cy:n.cy,r0:r?n.r0:i.r0,r:r?n.r:i.r,startAngle:r?i.startAngle:0,endAngle:r?i.endAngle:Math.PI*2}}}function K6(r,e,t){var a=r.type==="polar"?Ve:bt;return new a({shape:aD(e,t,r),silent:!0,z2:0})}var J6=H6;function Q6(r){r.registerChartView(J6),r.registerSeriesModel(B6),r.registerLayout(r.PRIORITY.VISUAL.LAYOUT,ot(SA,"bar")),r.registerLayout(r.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT,xA("bar")),r.registerProcessor(r.PRIORITY.PROCESSOR.STATISTIC,jA("bar")),r.registerAction({type:"changeAxisOrder",event:"changeAxisOrder",update:"update"},function(e,t){var a=e.componentType||"series";t.eachComponent({mainType:a,query:e},function(n){e.sortInfo&&n.axis.setCategorySortInfo(e.sortInfo)})})}var Au=Math.PI*2,B_=Math.PI/180;function nD(r,e){return re(r.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}function iD(r,e){var t=nD(r,e),a=r.get("center"),n=r.get("radius");F(n)||(n=[0,n]);var i=W(t.width,e.getWidth()),o=W(t.height,e.getHeight()),s=Math.min(i,o),l=W(n[0],s/2),u=W(n[1],s/2),f,h,v=r.coordinateSystem;if(v){var c=v.dataToPoint(a);f=c[0]||0,h=c[1]||0}else F(a)||(a=[a,a]),f=W(a[0],i)+t.x,h=W(a[1],o)+t.y;return{cx:f,cy:h,r0:l,r:u}}function j6(r,e,t){e.eachSeriesByType(r,function(a){var n=a.getData(),i=n.mapDimension("value"),o=nD(a,t),s=iD(a,t),l=s.cx,u=s.cy,f=s.r,h=s.r0,v=-a.get("startAngle")*B_,c=a.get("minAngle")*B_,d=0;n.each(i,function(D){!isNaN(D)&&d++});var p=n.getSum(i),g=Math.PI/(p||d)*2,y=a.get("clockwise"),m=a.get("roseType"),_=a.get("stillShowZeroSum"),S=n.getDataExtent(i);S[0]=0;var w=Au,x=0,b=v,C=y?1:-1;if(n.setLayout({viewRect:o,r:f}),n.each(i,function(D,M){var L;if(isNaN(D)){n.setItemLayout(M,{angle:NaN,startAngle:NaN,endAngle:NaN,clockwise:y,cx:l,cy:u,r0:h,r:m?NaN:f});return}m!=="area"?L=p===0&&_?g:D*g:L=Au/d,Lt?y:g,w=Math.abs(_.label.y-t);if(w>=S.maxY){var x=_.label.x-e-_.len2*n,b=a+_.len,C=Math.abs(x)r.unconstrainedWidth?null:c:null;a.setStyle("width",d)}var p=a.getBoundingRect();i.width=p.width;var g=(a.style.margin||0)+2.1;i.height=p.height+g,i.y-=(i.height-h)/2}}}function cc(r){return r.position==="center"}function rV(r){var e=r.getData(),t=[],a,n,i=!1,o=(r.get("minShowLabelAngle")||0)*tV,s=e.getLayout("viewRect"),l=e.getLayout("r"),u=s.width,f=s.x,h=s.y,v=s.height;function c(x){x.ignore=!0}function d(x){if(!x.ignore)return!0;for(var b in x.states)if(x.states[b].ignore===!1)return!0;return!1}e.each(function(x){var b=e.getItemGraphicEl(x),C=b.shape,T=b.getTextContent(),D=b.getTextGuideLine(),M=e.getItemModel(x),L=M.getModel("label"),I=L.get("position")||M.get(["emphasis","label","position"]),P=L.get("distanceToLabelLine"),R=L.get("alignTo"),E=W(L.get("edgeDistance"),u),B=L.get("bleedMargin"),O=M.getModel("labelLine"),z=O.get("length");z=W(z,u);var H=O.get("length2");if(H=W(H,u),Math.abs(C.endAngle-C.startAngle)0?"right":"left":X>0?"left":"right"}var Yt=Math.PI,Wt=0,ge=L.get("rotate");if(Mt(ge))Wt=ge*(Yt/180);else if(I==="center")Wt=0;else if(ge==="radial"||ge===!0){var ea=X<0?-$+Yt:-$;Wt=ea}else if(ge==="tangential"&&I!=="outside"&&I!=="outer"){var Ie=Math.atan2(X,Q);Ie<0&&(Ie=Yt*2+Ie);var Gl=Q>0;Gl&&(Ie=Yt+Ie),Wt=Ie-Yt}if(i=!!Wt,T.x=j,T.y=pt,T.rotation=Wt,T.setStyle({verticalAlign:"middle"}),rt){T.setStyle({align:gt});var Qh=T.states.select;Qh&&(Qh.x+=T.x,Qh.y+=T.y)}else{var Da=T.getBoundingRect().clone();Da.applyTransform(T.getComputedTransform());var Tm=(T.style.margin||0)+2.1;Da.y-=Tm/2,Da.height+=Tm,t.push({label:T,labelLine:D,position:I,len:z,len2:H,minTurnAngle:O.get("minTurnAngle"),maxSurfaceAngle:O.get("maxSurfaceAngle"),surfaceNormal:new ut(X,Q),linePoints:xt,textAlign:gt,labelDistance:P,labelAlignTo:R,edgeDistance:E,bleedMargin:B,rect:Da,unconstrainedWidth:Da.width,labelStyleWidth:T.style.width})}b.setTextConfig({inside:rt})}}),!i&&r.get("avoidLabelOverlap")&&eV(t,a,n,l,u,v,f,h);for(var p=0;p0){for(var f=o.getItemLayout(0),h=1;isNaN(f&&f.startAngle)&&h=i.r0}},e.type="pie",e}(zt),iV=nV;function No(r,e,t){e=F(e)&&{coordDimensions:e}||V({encodeDefine:r.getEncode()},e);var a=r.getSource(),n=Il(a,e).dimensions,i=new De(n,r);return i.initData(a,t),i}var oV=function(){function r(e,t){this._getDataWithEncodedVisual=e,this._getRawData=t}return r.prototype.getAllNames=function(){var e=this._getRawData();return e.mapArray(e.getName)},r.prototype.containName=function(e){var t=this._getRawData();return t.indexOfName(e)>=0},r.prototype.indexOfName=function(e){var t=this._getDataWithEncodedVisual();return t.indexOfName(e)},r.prototype.getItemVisual=function(e,t){var a=this._getDataWithEncodedVisual();return a.getItemVisual(e,t)},r}(),Nl=oV,sV=Ct(),lV=function(r){k(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.init=function(t){r.prototype.init.apply(this,arguments),this.legendVisualProvider=new Nl(Y(this.getData,this),Y(this.getRawData,this)),this._defaultLabelLine(t)},e.prototype.mergeOption=function(){r.prototype.mergeOption.apply(this,arguments)},e.prototype.getInitialData=function(){return No(this,{coordDimensions:["value"],encodeDefaulter:ot(Jg,this)})},e.prototype.getDataParams=function(t){var a=this.getData(),n=sV(a),i=n.seats;if(!i){var o=[];a.each(a.mapDimension("value"),function(l){o.push(l)}),i=n.seats=sk(o,a.hostModel.get("percentPrecision"))}var s=r.prototype.getDataParams.call(this,t);return s.percent=i[t]||0,s.$vars.push("percent"),s},e.prototype._defaultLabelLine=function(t){ci(t,"labelLine",["show"]);var a=t.labelLine,n=t.emphasis.labelLine;a.show=a.show&&t.label.show,n.show=n.show&&t.emphasis.label.show},e.type="series.pie",e.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"},e}(Ht),uV=lV;function fV(r){return{seriesType:r,reset:function(e,t){var a=e.getData();a.filterSelf(function(n){var i=a.mapDimension("value"),o=a.get(i,n);return!(Mt(o)&&!isNaN(o)&&o<0)})}}}function hV(r){r.registerChartView(iV),r.registerSeriesModel(uV),NT("pie",r.registerAction),r.registerLayout(ot(j6,"pie")),r.registerProcessor(Bl("pie")),r.registerProcessor(fV("pie"))}var vV=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t.hasSymbolVisual=!0,t}return e.prototype.getInitialData=function(t,a){return Ta(null,this,{useEncodeDefaulter:!0})},e.prototype.getProgressive=function(){var t=this.option.progressive;return t==null?this.option.large?5e3:this.get("progressive"):t},e.prototype.getProgressiveThreshold=function(){var t=this.option.progressiveThreshold;return t==null?this.option.large?1e4:this.get("progressiveThreshold"):t},e.prototype.brushSelector=function(t,a,n){return n.point(a.getItemLayout(t))},e.prototype.getZLevelKey=function(){return this.getData().count()>this.getProgressiveThreshold()?this.id:""},e.type="series.scatter",e.dependencies=["grid","polar","geo","singleAxis","calendar"],e.defaultOption={coordinateSystem:"cartesian2d",z:2,legendHoverLink:!0,symbolSize:10,large:!1,largeThreshold:2e3,itemStyle:{opacity:.8},emphasis:{scale:!0},clip:!0,select:{itemStyle:{borderColor:"#212121"}},universalTransition:{divideShape:"clone"}},e}(Ht),cV=vV,sD=4,dV=function(){function r(){}return r}(),pV=function(r){k(e,r);function e(t){var a=r.call(this,t)||this;return a._off=0,a.hoverDataIdx=-1,a}return e.prototype.getDefaultShape=function(){return new dV},e.prototype.reset=function(){this.notClear=!1,this._off=0},e.prototype.buildPath=function(t,a){var n=a.points,i=a.size,o=this.symbolProxy,s=o.shape,l=t.getContext?t.getContext():t,u=l&&i[0]=0;u--){var f=u*2,h=i[f]-s/2,v=i[f+1]-l/2;if(t>=h&&a>=v&&t<=h+s&&a<=v+l)return u}return-1},e.prototype.contain=function(t,a){var n=this.transformCoordToLocal(t,a),i=this.getBoundingRect();if(t=n[0],a=n[1],i.contain(t,a)){var o=this.hoverDataIdx=this.findDataIndex(t,a);return o>=0}return this.hoverDataIdx=-1,!1},e.prototype.getBoundingRect=function(){var t=this._rect;if(!t){for(var a=this.shape,n=a.points,i=a.size,o=i[0],s=i[1],l=1/0,u=1/0,f=-1/0,h=-1/0,v=0;v=0&&(u.dataIndex=h+(e.startIndex||0))})},r.prototype.remove=function(){this._clear()},r.prototype._clear=function(){this._newAdded=[],this.group.removeAll()},r}(),yV=gV,mV=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.render=function(t,a,n){var i=t.getData(),o=this._updateSymbolDraw(i,t);o.updateData(i,{clipShape:this._getClipShape(t)}),this._finished=!0},e.prototype.incrementalPrepareRender=function(t,a,n){var i=t.getData(),o=this._updateSymbolDraw(i,t);o.incrementalPrepareUpdate(i),this._finished=!1},e.prototype.incrementalRender=function(t,a,n){this._symbolDraw.incrementalUpdate(t,a.getData(),{clipShape:this._getClipShape(a)}),this._finished=t.end===a.getData().count()},e.prototype.updateTransform=function(t,a,n){var i=t.getData();if(this.group.dirty(),!this._finished||i.count()>1e4)return{update:!0};var o=Ol("").reset(t,a,n);o.progress&&o.progress({start:0,end:i.count(),count:i.count()},i),this._symbolDraw.updateLayout(i)},e.prototype.eachRendered=function(t){this._symbolDraw&&this._symbolDraw.eachRendered(t)},e.prototype._getClipShape=function(t){var a=t.coordinateSystem,n=a&&a.getArea&&a.getArea();return t.get("clip",!0)?n:null},e.prototype._updateSymbolDraw=function(t,a){var n=this._symbolDraw,i=a.pipelineContext,o=i.large;return(!n||o!==this._isLargeDraw)&&(n&&n.remove(),n=this._symbolDraw=o?new yV:new kl,this._isLargeDraw=o,this.group.removeAll()),this.group.add(n.group),n},e.prototype.remove=function(t,a){this._symbolDraw&&this._symbolDraw.remove(!0),this._symbolDraw=null},e.prototype.dispose=function(){},e.type="scatter",e}(zt),_V=mV,SV=function(r){k(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.type="grid",e.dependencies=["xAxis","yAxis"],e.layoutMode="box",e.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"},e}(Tt),xV=SV,Tp=function(r){k(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.getCoordSysModel=function(){return this.getReferringComponents("grid",Qt).models[0]},e.type="cartesian2dAxis",e}(Tt);te(Tp,Rl);var lD={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)"]}}},wV=ht({boundaryGap:!0,deduplication:null,splitLine:{show:!1},axisTick:{alignWithLabel:!1,interval:"auto"},axisLabel:{interval:"auto"}},lD),by=ht({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}}},lD),bV=ht({splitNumber:6,axisLabel:{showMinLabel:!1,showMaxLabel:!1,rich:{primary:{fontWeight:"bold"}}},splitLine:{show:!1}},by),CV=tt({logBase:10},by),uD={category:wV,value:by,time:bV,log:CV},TV={value:1,category:1,time:1,log:1};function yo(r,e,t,a){A(TV,function(n,i){var o=ht(ht({},uD[i],!0),a,!0),s=function(l){k(u,l);function u(){var f=l!==null&&l.apply(this,arguments)||this;return f.type=e+"Axis."+i,f}return u.prototype.mergeDefaultAndTheme=function(f,h){var v=tl(this),c=v?Po(f):{},d=h.getTheme();ht(f,d.get(i+"Axis")),ht(f,this.getDefaultOption()),f.type=V_(f),v&&an(f,c,v)},u.prototype.optionUpdated=function(){var f=this.option;f.type==="category"&&(this.__ordinalMeta=xp.createByAxisModel(this))},u.prototype.getCategories=function(f){var h=this.option;if(h.type==="category")return f?h.data:this.__ordinalMeta.categories},u.prototype.getOrdinalMeta=function(){return this.__ordinalMeta},u.type=e+"Axis."+i,u.defaultOption=o,u}(t);r.registerComponentModel(s)}),r.registerSubTypeDefaulter(e+"Axis",V_)}function V_(r){return r.type||(r.data?"category":"value")}var AV=function(){function r(e){this.type="cartesian",this._dimList=[],this._axes={},this.name=e||""}return r.prototype.getAxis=function(e){return this._axes[e]},r.prototype.getAxes=function(){return G(this._dimList,function(e){return this._axes[e]},this)},r.prototype.getAxesByScale=function(e){return e=e.toLowerCase(),Et(this.getAxes(),function(t){return t.scale.type===e})},r.prototype.addAxis=function(e){var t=e.dim;this._axes[t]=e,this._dimList.push(t)},r}(),DV=AV,Ap=["x","y"];function z_(r){return r.type==="interval"||r.type==="time"}var MV=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type="cartesian2d",t.dimensions=Ap,t}return e.prototype.calcAffineTransform=function(){this._transform=this._invTransform=null;var t=this.getAxis("x").scale,a=this.getAxis("y").scale;if(!(!z_(t)||!z_(a))){var n=t.getExtent(),i=a.getExtent(),o=this.dataToPoint([n[0],i[0]]),s=this.dataToPoint([n[1],i[1]]),l=n[1]-n[0],u=i[1]-i[0];if(!(!l||!u)){var f=(s[0]-o[0])/l,h=(s[1]-o[1])/u,v=o[0]-n[0]*f,c=o[1]-i[0]*h,d=this._transform=[f,0,0,h,v,c];this._invTransform=bo([],d)}}},e.prototype.getBaseAxis=function(){return this.getAxesByScale("ordinal")[0]||this.getAxesByScale("time")[0]||this.getAxis("x")},e.prototype.containPoint=function(t){var a=this.getAxis("x"),n=this.getAxis("y");return a.contain(a.toLocalCoord(t[0]))&&n.contain(n.toLocalCoord(t[1]))},e.prototype.containData=function(t){return this.getAxis("x").containData(t[0])&&this.getAxis("y").containData(t[1])},e.prototype.containZone=function(t,a){var n=this.dataToPoint(t),i=this.dataToPoint(a),o=this.getArea(),s=new vt(n[0],n[1],i[0]-n[0],i[1]-n[1]);return o.intersect(s)},e.prototype.dataToPoint=function(t,a,n){n=n||[];var i=t[0],o=t[1];if(this._transform&&i!=null&&isFinite(i)&&o!=null&&isFinite(o))return he(n,t,this._transform);var s=this.getAxis("x"),l=this.getAxis("y");return n[0]=s.toGlobalCoord(s.dataToCoord(i,a)),n[1]=l.toGlobalCoord(l.dataToCoord(o,a)),n},e.prototype.clampData=function(t,a){var n=this.getAxis("x").scale,i=this.getAxis("y").scale,o=n.getExtent(),s=i.getExtent(),l=n.parse(t[0]),u=i.parse(t[1]);return a=a||[],a[0]=Math.min(Math.max(Math.min(o[0],o[1]),l),Math.max(o[0],o[1])),a[1]=Math.min(Math.max(Math.min(s[0],s[1]),u),Math.max(s[0],s[1])),a},e.prototype.pointToData=function(t,a){var n=[];if(this._invTransform)return he(n,t,this._invTransform);var i=this.getAxis("x"),o=this.getAxis("y");return n[0]=i.coordToData(i.toLocalCoord(t[0]),a),n[1]=o.coordToData(o.toLocalCoord(t[1]),a),n},e.prototype.getOtherAxis=function(t){return this.getAxis(t.dim==="x"?"y":"x")},e.prototype.getArea=function(){var t=this.getAxis("x").getGlobalExtent(),a=this.getAxis("y").getGlobalExtent(),n=Math.min(t[0],t[1]),i=Math.min(a[0],a[1]),o=Math.max(t[0],t[1])-n,s=Math.max(a[0],a[1])-i;return new vt(n,i,o,s)},e}(DV),LV=function(r){k(e,r);function e(t,a,n,i,o){var s=r.call(this,t,a,n)||this;return s.index=0,s.type=i||"value",s.position=o||"bottom",s}return e.prototype.isHorizontal=function(){var t=this.position;return t==="top"||t==="bottom"},e.prototype.getGlobalExtent=function(t){var a=this.getExtent();return a[0]=this.toGlobalCoord(a[0]),a[1]=this.toGlobalCoord(a[1]),t&&a[0]>a[1]&&a.reverse(),a},e.prototype.pointToData=function(t,a){return this.coordToData(this.toLocalCoord(t[this.dim==="x"?0:1]),a)},e.prototype.setCategorySortInfo=function(t){if(this.type!=="category")return!1;this.model.option.categorySortInfo=t,this.scale.setSortInfo(t)},e}(Mr),IV=LV;function Dp(r,e,t){t=t||{};var a=r.coordinateSystem,n=e.axis,i={},o=n.getAxesOnZeroOf()[0],s=n.position,l=o?"onZero":s,u=n.dim,f=a.getRect(),h=[f.x,f.x+f.width,f.y,f.y+f.height],v={left:0,right:1,top:0,bottom:1,onZero:2},c=e.get("offset")||0,d=u==="x"?[h[2]-c,h[3]+c]:[h[0]-c,h[1]+c];if(o){var p=o.toGlobalCoord(o.dataToCoord(0));d[v.onZero]=Math.max(Math.min(p,d[1]),d[0])}i.position=[u==="y"?d[v[l]]:h[0],u==="x"?d[v[l]]:h[3]],i.rotation=Math.PI/2*(u==="x"?0:1);var g={top:-1,bottom:1,left:-1,right:1};i.labelDirection=i.tickDirection=i.nameDirection=g[s],i.labelOffset=o?d[v[s]]-d[v.onZero]:0,e.get(["axisTick","inside"])&&(i.tickDirection=-i.tickDirection),le(t.labelInside,e.get(["axisLabel","inside"]))&&(i.labelDirection=-i.labelDirection);var y=e.get(["axisLabel","rotate"]);return i.labelRotate=l==="top"?-y:y,i.z2=1,i}function F_(r){return r.get("coordinateSystem")==="cartesian2d"}function G_(r){var e={xAxisModel:null,yAxisModel:null};return A(e,function(t,a){var n=a.replace(/Model$/,""),i=r.getReferringComponents(n,Qt).models[0];e[a]=i}),e}var dc=Math.log;function fD(r,e,t){var a=on.prototype,n=a.getTicks.call(t),i=a.getTicks.call(t,!0),o=n.length-1,s=a.getInterval.call(t),l=MA(r,e),u=l.extent,f=l.fixMin,h=l.fixMax;if(r.type==="log"){var v=dc(r.base);u=[dc(u[0])/v,dc(u[1])/v]}r.setExtent(u[0],u[1]),r.calcNiceExtent({splitNumber:o,fixMin:f,fixMax:h});var c=a.getExtent.call(r);f&&(u[0]=c[0]),h&&(u[1]=c[1]);var d=a.getInterval.call(r),p=u[0],g=u[1];if(f&&h)d=(g-p)/o;else if(f)for(g=u[0]+d*o;gu[0]&&isFinite(p)&&isFinite(u[0]);)d=nc(d),p=u[1]-d*o;else{var y=r.getTicks().length-1;y>o&&(d=nc(d));var m=d*o;g=Math.ceil(u[1]/d)*d,p=Zt(g-m),p<0&&u[0]>=0?(p=0,g=Zt(m)):g>0&&u[1]<=0&&(g=0,p=-Zt(m))}var _=(n[0].value-i[0].value)/s,S=(n[o].value-i[o].value)/s;a.setExtent.call(r,p+d*_,g+d*S),a.setInterval.call(r,d),(_||S)&&a.setNiceExtent.call(r,p+d,g-d)}var PV=function(){function r(e,t,a){this.type="grid",this._coordsMap={},this._coordsList=[],this._axesMap={},this._axesList=[],this.axisPointerEnabled=!0,this.dimensions=Ap,this._initCartesian(e,t,a),this.model=e}return r.prototype.getRect=function(){return this._rect},r.prototype.update=function(e,t){var a=this._axesMap;this._updateScale(e,this.model);function n(o){var s,l=St(o),u=l.length;if(!!u){for(var f=[],h=u-1;h>=0;h--){var v=+l[h],c=o[v],d=c.model,p=c.scale;wp(p)&&d.get("alignTicks")&&d.get("interval")==null?f.push(c):(po(p,d),wp(p)&&(s=c))}f.length&&(s||(s=f.pop(),po(s.scale,s.model)),A(f,function(g){fD(g.scale,g.model,s.scale)}))}}n(a.x),n(a.y);var i={};A(a.x,function(o){H_(a,"y",o,i)}),A(a.y,function(o){H_(a,"x",o,i)}),this.resize(this.model,t)},r.prototype.resize=function(e,t,a){var n=e.getBoxLayoutParams(),i=!a&&e.get("containLabel"),o=re(n,{width:t.getWidth(),height:t.getHeight()});this._rect=o;var s=this._axesList;l(),i&&(A(s,function(u){if(!u.model.get(["axisLabel","inside"])){var f=RN(u);if(f){var h=u.isHorizontal()?"height":"width",v=u.model.get(["axisLabel","margin"]);o[h]-=f[h]+v,u.position==="top"?o.y+=f.height+v:u.position==="left"&&(o.x+=f.width+v)}}}),l()),A(this._coordsList,function(u){u.calcAffineTransform()});function l(){A(s,function(u){var f=u.isHorizontal(),h=f?[0,o.width]:[0,o.height],v=u.inverse?1:0;u.setExtent(h[v],h[1-v]),RV(u,f?o.x:o.y)})}},r.prototype.getAxis=function(e,t){var a=this._axesMap[e];if(a!=null)return a[t||0]},r.prototype.getAxes=function(){return this._axesList.slice()},r.prototype.getCartesian=function(e,t){if(e!=null&&t!=null){var a="x"+e+"y"+t;return this._coordsMap[a]}et(e)&&(t=e.yAxisIndex,e=e.xAxisIndex);for(var n=0,i=this._coordsList;n0?"top":"bottom",i="center"):Cf(n-Za)?(o=a>0?"bottom":"top",i="center"):(o="middle",n>0&&n0?"right":"left":i=a>0?"left":"right"),{rotation:n,textAlign:i,textVerticalAlign:o}},r.makeAxisEventDataBase=function(e){var t={componentType:e.mainType,componentIndex:e.componentIndex};return t[e.mainType+"Index"]=e.componentIndex,t},r.isLabelSilent=function(e){var t=e.get("tooltip");return e.get("silent")||!(e.get("triggerEvent")||t&&t.show)},r}(),$_={axisLine:function(r,e,t,a){var n=e.get(["axisLine","show"]);if(n==="auto"&&r.handleAutoShown&&(n=r.handleAutoShown("axisLine")),!!n){var i=e.axis.getExtent(),o=a.transform,s=[i[0],0],l=[i[1],0],u=s[0]>l[0];o&&(he(s,s,o),he(l,l,o));var f=V({lineCap:"round"},e.getModel(["axisLine","lineStyle"]).getLineStyle()),h=new ue({shape:{x1:s[0],y1:s[1],x2:l[0],y2:l[1]},style:f,strokeContainThreshold:r.strokeContainThreshold||5,silent:!0,z2:1});ho(h.shape,h.style.lineWidth),h.anid="line",t.add(h);var v=e.get(["axisLine","symbol"]);if(v!=null){var c=e.get(["axisLine","symbolSize"]);U(v)&&(v=[v,v]),(U(c)||Mt(c))&&(c=[c,c]);var d=Ti(e.get(["axisLine","symbolOffset"])||0,c),p=c[0],g=c[1];A([{rotate:r.rotation+Math.PI/2,offset:d[0],r:0},{rotate:r.rotation-Math.PI/2,offset:d[1],r:Math.sqrt((s[0]-l[0])*(s[0]-l[0])+(s[1]-l[1])*(s[1]-l[1]))}],function(y,m){if(v[m]!=="none"&&v[m]!=null){var _=jt(v[m],-p/2,-g/2,p,g,f.stroke,!0),S=y.r+y.offset,w=u?l:s;_.attr({rotation:y.rotate,x:w[0]+S*Math.cos(r.rotation),y:w[1]-S*Math.sin(r.rotation),silent:!0,z2:11}),t.add(_)}})}}},axisTickLabel:function(r,e,t,a){var n=BV(t,a,e,r),i=VV(t,a,e,r);if(OV(e,i,n),NV(t,a,e,r.tickDirection),e.get(["axisLabel","hideOverlap"])){var o=GA(G(i,function(s){return{label:s,priority:s.z2,defaultAttr:{ignore:s.ignore}}}));$A(o)}},axisName:function(r,e,t,a){var n=le(r.axisName,e.get("name"));if(!!n){var i=e.get("nameLocation"),o=r.nameDirection,s=e.getModel("nameTextStyle"),l=e.get("nameGap")||0,u=e.axis.getExtent(),f=u[0]>u[1]?-1:1,h=[i==="start"?u[0]-f*l:i==="end"?u[1]+f*l:(u[0]+u[1])/2,Y_(i)?r.labelOffset+o*l:0],v,c=e.get("nameRotate");c!=null&&(c=c*Za/180);var d;Y_(i)?v=hi.innerTextLayout(r.rotation,c!=null?c:r.rotation,o):(v=kV(r.rotation,i,c||0,u),d=r.axisNameAvailableWidth,d!=null&&(d=Math.abs(d/Math.sin(v.rotation)),!isFinite(d)&&(d=null)));var p=s.getFont(),g=e.get("nameTruncate",!0)||{},y=g.ellipsis,m=le(r.nameTruncateMaxWidth,g.maxWidth,d),_=new Dt({x:h[0],y:h[1],rotation:v.rotation,silent:hi.isLabelSilent(e),style:Nt(s,{text:n,font:p,overflow:"truncate",width:m,ellipsis:y,fill:s.getTextColor()||e.get(["axisLine","lineStyle","color"]),align:s.get("align")||v.textAlign,verticalAlign:s.get("verticalAlign")||v.textVerticalAlign}),z2:1});if(Do({el:_,componentModel:e,itemName:n}),_.__fullText=n,_.anid="name",e.get("triggerEvent")){var S=hi.makeAxisEventDataBase(e);S.targetType="axisName",S.name=n,it(_).eventData=S}a.add(_),_.updateTransform(),t.add(_),_.decomposeTransform()}}};function kV(r,e,t,a){var n=x2(t-r),i,o,s=a[0]>a[1],l=e==="start"&&!s||e!=="start"&&s;return Cf(n-Za/2)?(o=l?"bottom":"top",i="center"):Cf(n-Za*1.5)?(o=l?"top":"bottom",i="center"):(o="middle",nZa/2?i=l?"left":"right":i=l?"right":"left"),{rotation:n,textAlign:i,textVerticalAlign:o}}function OV(r,e,t){if(!LA(r.axis)){var a=r.get(["axisLabel","showMinLabel"]),n=r.get(["axisLabel","showMaxLabel"]);e=e||[],t=t||[];var i=e[0],o=e[1],s=e[e.length-1],l=e[e.length-2],u=t[0],f=t[1],h=t[t.length-1],v=t[t.length-2];a===!1?(Ze(i),Ze(u)):U_(i,o)&&(a?(Ze(o),Ze(f)):(Ze(i),Ze(u))),n===!1?(Ze(s),Ze(h)):U_(l,s)&&(n?(Ze(l),Ze(v)):(Ze(s),Ze(h)))}}function Ze(r){r&&(r.ignore=!0)}function U_(r,e){var t=r&&r.getBoundingRect().clone(),a=e&&e.getBoundingRect().clone();if(!(!t||!a)){var n=ph([]);return bi(n,n,-r.rotation),t.applyTransform(ha([],n,r.getLocalTransform())),a.applyTransform(ha([],n,e.getLocalTransform())),t.intersect(a)}}function Y_(r){return r==="middle"||r==="center"}function hD(r,e,t,a,n){for(var i=[],o=[],s=[],l=0;l=0||r===e}function $V(r){var e=Cy(r);if(!!e){var t=e.axisPointerModel,a=e.axis.scale,n=t.option,i=t.get("status"),o=t.get("value");o!=null&&(o=a.parse(o));var s=Mp(t);i==null&&(n.status=s?"show":"hide");var l=a.getExtent().slice();l[0]>l[1]&&l.reverse(),(o==null||o>l[1])&&(o=l[1]),o0&&!d.min?d.min=0:d.min!=null&&d.min<0&&!d.max&&(d.max=0);var p=l;d.color!=null&&(p=tt({color:d.color},l));var g=ht(at(d),{boundaryGap:t,splitNumber:a,scale:n,axisLine:i,axisTick:o,axisLabel:s,name:d.text,showName:u,nameLocation:"end",nameGap:h,nameTextStyle:p,triggerEvent:v},!1);if(U(f)){var y=g.name;g.name=f.replace("{value}",y!=null?y:"")}else J(f)&&(g.name=f(g.name,g));var m=new Vt(g,null,this.ecModel);return te(m,Rl.prototype),m.mainType="radar",m.componentIndex=this.componentIndex,m},this);this._indicatorModels=c},e.prototype.getIndicatorModels=function(){return this._indicatorModels},e.type="radar",e.defaultOption={z:0,center:["50%","50%"],radius:"75%",startAngle:90,axisName:{show:!0},boundaryGap:[0,0],splitNumber:5,axisNameGap:15,scale:!1,shape:"polygon",axisLine:ht({lineStyle:{color:"#bbb"}},as.axisLine),axisLabel:Du(as.axisLabel,!1),axisTick:Du(as.axisTick,!1),splitLine:Du(as.splitLine,!0),splitArea:Du(as.splitArea,!0),indicator:[]},e}(Tt),oz=iz,sz=["axisLine","axisTickLabel","axisName"],lz=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.render=function(t,a,n){var i=this.group;i.removeAll(),this._buildAxes(t),this._buildSplitLineAndArea(t)},e.prototype._buildAxes=function(t){var a=t.coordinateSystem,n=a.getIndicatorAxes(),i=G(n,function(o){var s=o.model.get("showName")?o.name:"",l=new wa(o.model,{axisName:s,position:[a.cx,a.cy],rotation:o.angle,labelDirection:-1,tickDirection:-1,nameDirection:1});return l});A(i,function(o){A(sz,o.add,o),this.group.add(o.getGroup())},this)},e.prototype._buildSplitLineAndArea=function(t){var a=t.coordinateSystem,n=a.getIndicatorAxes();if(!n.length)return;var i=t.get("shape"),o=t.getModel("splitLine"),s=t.getModel("splitArea"),l=o.getModel("lineStyle"),u=s.getModel("areaStyle"),f=o.get("show"),h=s.get("show"),v=l.get("color"),c=u.get("color"),d=F(v)?v:[v],p=F(c)?c:[c],g=[],y=[];function m(R,E,B){var O=B%E.length;return R[O]=R[O]||[],O}if(i==="circle")for(var _=n[0].getTicksCoords(),S=a.cx,w=a.cy,x=0;x<_.length;x++){if(f){var b=m(g,d,x);g[b].push(new Qr({shape:{cx:S,cy:w,r:_[x].coord}}))}if(h&&x<_.length-1){var b=m(y,p,x);y[b].push(new Ch({shape:{cx:S,cy:w,r0:_[x].coord,r:_[x+1].coord}}))}}else for(var C,T=G(n,function(R,E){var B=R.getTicksCoords();return C=C==null?B.length-1:Math.min(B.length-1,C),G(B,function(O){return a.coordToPoint(O.coord,E)})}),D=[],x=0;x<=C;x++){for(var M=[],L=0;L3?1.4:o>1?1.2:1.1,f=i>0?u:1/u;yc(this,"zoom","zoomOnMouseWheel",t,{scale:f,originX:s,originY:l,isAvailableBehavior:null})}if(n){var h=Math.abs(i),v=(i>0?1:-1)*(h>3?.4:h>1?.15:.05);yc(this,"scrollMove","moveOnMouseWheel",t,{scrollDelta:v,originX:s,originY:l,isAvailableBehavior:null})}}},e.prototype._pinchHandler=function(t){if(!Q_(this._zr,"globalPan")){var a=t.pinchScale>1?1.1:1/1.1;yc(this,"zoom",null,t,{scale:a,originX:t.pinchX,originY:t.pinchY,isAvailableBehavior:null})}},e}(hr);function yc(r,e,t,a,n){r.pointerChecker&&r.pointerChecker(a,n.originX,n.originY)&&(ya(a.event),yD(r,e,t,a,n))}function yD(r,e,t,a,n){n.isAvailableBehavior=Y(uf,null,t,a),r.trigger(e,n)}function uf(r,e,t){var a=t[r];return!r||a&&(!U(a)||e.event[a+"Key"])}var Vl=mz;function Ay(r,e,t){var a=r.target;a.x+=e,a.y+=t,a.dirty()}function Dy(r,e,t,a){var n=r.target,i=r.zoomLimit,o=r.zoom=r.zoom||1;if(o*=e,i){var s=i.min||0,l=i.max||1/0;o=Math.max(Math.min(l,o),s)}var u=o/r.zoom;r.zoom=o,n.x-=(t-n.x)*(u-1),n.y-=(a-n.y)*(u-1),n.scaleX*=u,n.scaleY*=u,n.dirty()}var _z={axisPointer:1,tooltip:1,brush:1};function $h(r,e,t){var a=e.getComponentByElement(r.topTarget),n=a&&a.coordinateSystem;return a&&a!==t&&!_z.hasOwnProperty(a.mainType)&&n&&n.model!==t}function mD(r){if(U(r)){var e=new DOMParser;r=e.parseFromString(r,"text/xml")}var t=r;for(t.nodeType===9&&(t=t.firstChild);t.nodeName.toLowerCase()!=="svg"||t.nodeType!==1;)t=t.nextSibling;return t}var mc,Yf={fill:"fill",stroke:"stroke","stroke-width":"lineWidth",opacity:"opacity","fill-opacity":"fillOpacity","stroke-opacity":"strokeOpacity","stroke-dasharray":"lineDash","stroke-dashoffset":"lineDashOffset","stroke-linecap":"lineCap","stroke-linejoin":"lineJoin","stroke-miterlimit":"miterLimit","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight","text-anchor":"textAlign",visibility:"visibility",display:"display"},j_=St(Yf),Zf={"alignment-baseline":"textBaseline","stop-color":"stopColor"},tS=St(Zf),Sz=function(){function r(){this._defs={},this._root=null}return r.prototype.parse=function(e,t){t=t||{};var a=mD(e);this._defsUsePending=[];var n=new nt;this._root=n;var i=[],o=a.getAttribute("viewBox")||"",s=parseFloat(a.getAttribute("width")||t.width),l=parseFloat(a.getAttribute("height")||t.height);isNaN(s)&&(s=null),isNaN(l)&&(l=null),Ge(a,n,null,!0,!1);for(var u=a.firstChild;u;)this._parseNode(u,n,i,null,!1,!1),u=u.nextSibling;bz(this._defs,this._defsUsePending),this._defsUsePending=[];var f,h;if(o){var v=Uh(o);v.length>=4&&(f={x:parseFloat(v[0]||0),y:parseFloat(v[1]||0),width:parseFloat(v[2]),height:parseFloat(v[3])})}if(f&&s!=null&&l!=null&&(h=SD(f,{x:0,y:0,width:s,height:l}),!t.ignoreViewBox)){var c=n;n=new nt,n.add(c),c.scaleX=c.scaleY=h.scale,c.x=h.x,c.y=h.y}return!t.ignoreRootClip&&s!=null&&l!=null&&n.setClipPath(new bt({shape:{x:0,y:0,width:s,height:l}})),{root:n,width:s,height:l,viewBoxRect:f,viewBoxTransform:h,named:i}},r.prototype._parseNode=function(e,t,a,n,i,o){var s=e.nodeName.toLowerCase(),l,u=n;if(s==="defs"&&(i=!0),s==="text"&&(o=!0),s==="defs"||s==="switch")l=t;else{if(!i){var f=mc[s];if(f&&Z(mc,s)){l=f.call(this,e,t);var h=e.getAttribute("name");if(h){var v={name:h,namedFrom:null,svgNodeTagLower:s,el:l};a.push(v),s==="g"&&(u=v)}else n&&a.push({name:n.name,namedFrom:n,svgNodeTagLower:s,el:l});t.add(l)}}var c=eS[s];if(c&&Z(eS,s)){var d=c.call(this,e),p=e.getAttribute("id");p&&(this._defs[p]=d)}}if(l&&l.isGroup)for(var g=e.firstChild;g;)g.nodeType===1?this._parseNode(g,l,a,u,i,o):g.nodeType===3&&o&&this._parseText(g,l),g=g.nextSibling},r.prototype._parseText=function(e,t){var a=new Xs({style:{text:e.textContent},silent:!0,x:this._textX||0,y:this._textY||0});Xe(t,a),Ge(e,a,this._defsUsePending,!1,!1),xz(a,t);var n=a.style,i=n.fontSize;i&&i<9&&(n.fontSize=9,a.scaleX*=i/9,a.scaleY*=i/9);var o=(n.fontSize||n.fontFamily)&&[n.fontStyle,n.fontWeight,(n.fontSize||12)+"px",n.fontFamily||"sans-serif"].join(" ");n.font=o;var s=a.getBoundingRect();return this._textX+=s.width,t.add(a),a},r.internalField=function(){mc={g:function(e,t){var a=new nt;return Xe(t,a),Ge(e,a,this._defsUsePending,!1,!1),a},rect:function(e,t){var a=new bt;return Xe(t,a),Ge(e,a,this._defsUsePending,!1,!1),a.setShape({x:parseFloat(e.getAttribute("x")||"0"),y:parseFloat(e.getAttribute("y")||"0"),width:parseFloat(e.getAttribute("width")||"0"),height:parseFloat(e.getAttribute("height")||"0")}),a.silent=!0,a},circle:function(e,t){var a=new Qr;return Xe(t,a),Ge(e,a,this._defsUsePending,!1,!1),a.setShape({cx:parseFloat(e.getAttribute("cx")||"0"),cy:parseFloat(e.getAttribute("cy")||"0"),r:parseFloat(e.getAttribute("r")||"0")}),a.silent=!0,a},line:function(e,t){var a=new ue;return Xe(t,a),Ge(e,a,this._defsUsePending,!1,!1),a.setShape({x1:parseFloat(e.getAttribute("x1")||"0"),y1:parseFloat(e.getAttribute("y1")||"0"),x2:parseFloat(e.getAttribute("x2")||"0"),y2:parseFloat(e.getAttribute("y2")||"0")}),a.silent=!0,a},ellipse:function(e,t){var a=new Fg;return Xe(t,a),Ge(e,a,this._defsUsePending,!1,!1),a.setShape({cx:parseFloat(e.getAttribute("cx")||"0"),cy:parseFloat(e.getAttribute("cy")||"0"),rx:parseFloat(e.getAttribute("rx")||"0"),ry:parseFloat(e.getAttribute("ry")||"0")}),a.silent=!0,a},polygon:function(e,t){var a=e.getAttribute("points"),n;a&&(n=nS(a));var i=new ze({shape:{points:n||[]},silent:!0});return Xe(t,i),Ge(e,i,this._defsUsePending,!1,!1),i},polyline:function(e,t){var a=e.getAttribute("points"),n;a&&(n=nS(a));var i=new Fe({shape:{points:n||[]},silent:!0});return Xe(t,i),Ge(e,i,this._defsUsePending,!1,!1),i},image:function(e,t){var a=new pe;return Xe(t,a),Ge(e,a,this._defsUsePending,!1,!1),a.setStyle({image:e.getAttribute("xlink:href")||e.getAttribute("href"),x:+e.getAttribute("x"),y:+e.getAttribute("y"),width:+e.getAttribute("width"),height:+e.getAttribute("height")}),a.silent=!0,a},text:function(e,t){var a=e.getAttribute("x")||"0",n=e.getAttribute("y")||"0",i=e.getAttribute("dx")||"0",o=e.getAttribute("dy")||"0";this._textX=parseFloat(a)+parseFloat(i),this._textY=parseFloat(n)+parseFloat(o);var s=new nt;return Xe(t,s),Ge(e,s,this._defsUsePending,!1,!0),s},tspan:function(e,t){var a=e.getAttribute("x"),n=e.getAttribute("y");a!=null&&(this._textX=parseFloat(a)),n!=null&&(this._textY=parseFloat(n));var i=e.getAttribute("dx")||"0",o=e.getAttribute("dy")||"0",s=new nt;return Xe(t,s),Ge(e,s,this._defsUsePending,!1,!0),this._textX+=parseFloat(i),this._textY+=parseFloat(o),s},path:function(e,t){var a=e.getAttribute("d")||"",n=sC(a);return Xe(t,n),Ge(e,n,this._defsUsePending,!1,!1),n.silent=!0,n}}}(),r}(),eS={lineargradient:function(r){var e=parseInt(r.getAttribute("x1")||"0",10),t=parseInt(r.getAttribute("y1")||"0",10),a=parseInt(r.getAttribute("x2")||"10",10),n=parseInt(r.getAttribute("y2")||"0",10),i=new Cl(e,t,a,n);return rS(r,i),aS(r,i),i},radialgradient:function(r){var e=parseInt(r.getAttribute("cx")||"0",10),t=parseInt(r.getAttribute("cy")||"0",10),a=parseInt(r.getAttribute("r")||"0",10),n=new SC(e,t,a);return rS(r,n),aS(r,n),n}};function rS(r,e){var t=r.getAttribute("gradientUnits");t==="userSpaceOnUse"&&(e.global=!0)}function aS(r,e){for(var t=r.firstChild;t;){if(t.nodeType===1&&t.nodeName.toLocaleLowerCase()==="stop"){var a=t.getAttribute("offset"),n=void 0;a&&a.indexOf("%")>0?n=parseInt(a,10)/100:a?n=parseFloat(a):n=0;var i={};_D(t,i,i);var o=i.stopColor||t.getAttribute("stop-color")||"#000000";e.colorStops.push({offset:n,color:o})}t=t.nextSibling}}function Xe(r,e){r&&r.__inheritedStyle&&(e.__inheritedStyle||(e.__inheritedStyle={}),tt(e.__inheritedStyle,r.__inheritedStyle))}function nS(r){for(var e=Uh(r),t=[],a=0;a0;i-=2){var o=a[i],s=a[i-1],l=Uh(o);switch(n=n||ur(),s){case"translate":Xr(n,n,[parseFloat(l[0]),parseFloat(l[1]||"0")]);break;case"scale":Cg(n,n,[parseFloat(l[0]),parseFloat(l[1]||l[0])]);break;case"rotate":bi(n,n,-parseFloat(l[0])*_c);break;case"skewX":var u=Math.tan(parseFloat(l[0])*_c);ha(n,[1,0,u,1,0,0],n);break;case"skewY":var f=Math.tan(parseFloat(l[0])*_c);ha(n,[1,f,0,1,0,0],n);break;case"matrix":n[0]=parseFloat(l[0]),n[1]=parseFloat(l[1]),n[2]=parseFloat(l[2]),n[3]=parseFloat(l[3]),n[4]=parseFloat(l[4]),n[5]=parseFloat(l[5]);break}}e.setLocalTransform(n)}}var oS=/([^\s:;]+)\s*:\s*([^:;]+)/g;function _D(r,e,t){var a=r.getAttribute("style");if(!!a){oS.lastIndex=0;for(var n;(n=oS.exec(a))!=null;){var i=n[1],o=Z(Yf,i)?Yf[i]:null;o&&(e[o]=n[2]);var s=Z(Zf,i)?Zf[i]:null;s&&(t[s]=n[2])}}}function Dz(r,e,t){for(var a=0;a0,g={api:a,geo:l,mapOrGeoModel:e,data:s,isVisualEncodedByVisualMap:p,isGeo:o,transformInfoRaw:v};l.resourceType==="geoJSON"?this._buildGeoJSON(g):l.resourceType==="geoSVG"&&this._buildSVG(g),this._updateController(e,t,a),this._updateMapSelectHandler(e,u,a,n)},r.prototype._buildGeoJSON=function(e){var t=this._regionsGroupByName=q(),a=q(),n=this._regionsGroup,i=e.transformInfoRaw,o=e.mapOrGeoModel,s=e.data,l=e.geo.projection,u=l&&l.stream;function f(c,d){return d&&(c=d(c)),c&&[c[0]*i.scaleX+i.x,c[1]*i.scaleY+i.y]}function h(c){for(var d=[],p=!u&&l&&l.project,g=0;g=0)&&(v=n);var c=o?{normal:{align:"center",verticalAlign:"middle"}}:null;de(e,ie(a),{labelFetcher:v,labelDataIndex:h,defaultText:t},c);var d=e.getTextContent();if(d&&(xD(d).ignore=d.ignore,e.textConfig&&o)){var p=e.getBoundingRect().clone();e.textConfig.layoutRect=p,e.textConfig.position=[(o[0]-p.x)/p.width*100+"%",(o[1]-p.y)/p.height*100+"%"]}e.disableLabelAnimation=!0}else e.removeTextContent(),e.removeTextConfig(),e.disableLabelAnimation=null}function hS(r,e,t,a,n,i){r.data?r.data.setItemGraphicEl(i,e):it(e).eventData={componentType:"geo",componentIndex:n.componentIndex,geoIndex:n.componentIndex,name:t,region:a&&a.option||{}}}function vS(r,e,t,a,n){r.data||Do({el:e,componentModel:n,itemName:t,itemTooltipOption:a.get("tooltip")})}function cS(r,e,t,a,n){e.highDownSilentOnTouch=!!n.get("selectedMode");var i=a.getModel("emphasis"),o=i.get("focus");return $t(e,o,i.get("blurScope"),i.get("disabled")),r.isGeo&&B5(e,n,t),o}function dS(r,e,t){var a=[],n;function i(){n=[]}function o(){n.length&&(a.push(n),n=[])}var s=e({polygonStart:i,polygonEnd:o,lineStart:i,lineEnd:o,point:function(l,u){isFinite(l)&&isFinite(u)&&n.push([l,u])},sphere:function(){}});return!t&&s.polygonStart(),A(r,function(l){s.lineStart();for(var u=0;u-1&&(n.style.stroke=n.style.fill,n.style.fill="#fff",n.style.lineWidth=2),n},e.type="series.map",e.dependencies=["geo"],e.layoutMode="box",e.defaultOption={z:2,coordinateSystem:"geo",map:"",left:"center",top:"center",aspectScale:null,showLegendSymbol:!0,boundingCoords:null,center:null,zoom:1,scaleLimit:null,selectedMode:!0,label:{show:!1,color:"#000"},itemStyle:{borderWidth:.5,borderColor:"#444",areaColor:"#eee"},emphasis:{label:{show:!0,color:"rgb(100,0,0)"},itemStyle:{areaColor:"rgba(255,215,0,0.8)"}},select:{label:{show:!0,color:"rgb(100,0,0)"},itemStyle:{color:"rgba(255,215,0,0.8)"}},nameProperty:"name"},e}(Ht),qz=Xz;function Kz(r,e){var t={};return A(r,function(a){a.each(a.mapDimension("value"),function(n,i){var o="ec-"+a.getName(i);t[o]=t[o]||[],isNaN(n)||t[o].push(n)})}),r[0].map(r[0].mapDimension("value"),function(a,n){for(var i="ec-"+r[0].getName(n),o=0,s=1/0,l=-1/0,u=t[i].length,f=0;f1?(S.width=_,S.height=_/g):(S.height=_,S.width=_*g),S.y=m[1]-S.height/2,S.x=m[0]-S.width/2;else{var w=r.getBoxLayoutParams();w.aspect=g,S=re(w,{width:d,height:p})}this.setViewRect(S.x,S.y,S.width,S.height),this.setCenter(r.get("center"),e),this.setZoom(r.get("zoom"))}function e7(r,e){A(e.get("geoCoord"),function(t,a){r.addGeoCoord(a,t)})}var r7=function(){function r(){this.dimensions=bD}return r.prototype.create=function(e,t){var a=[];function n(o){return{nameProperty:o.get("nameProperty"),aspectScale:o.get("aspectScale"),projection:o.get("projection")}}e.eachComponent("geo",function(o,s){var l=o.get("map"),u=new mS(l+s,l,V({nameMap:o.get("nameMap")},n(o)));u.zoomLimit=o.get("scaleLimit"),a.push(u),o.coordinateSystem=u,u.model=o,u.resize=_S,u.resize(o,t)}),e.eachSeries(function(o){var s=o.get("coordinateSystem");if(s==="geo"){var l=o.get("geoIndex")||0;o.coordinateSystem=a[l]}});var i={};return e.eachSeriesByType("map",function(o){if(!o.getHostGeoModel()){var s=o.getMapType();i[s]=i[s]||[],i[s].push(o)}}),A(i,function(o,s){var l=G(o,function(f){return f.get("nameMap")}),u=new mS(s,s,V({nameMap:_g(l)},n(o[0])));u.zoomLimit=le.apply(null,G(o,function(f){return f.get("scaleLimit")})),a.push(u),u.resize=_S,u.resize(o[0],t),A(o,function(f){f.coordinateSystem=u,e7(u,f)})}),a},r.prototype.getFilledRegions=function(e,t,a,n){for(var i=(e||[]).slice(),o=q(),s=0;s=0;o--){var s=n[o];s.hierNode={defaultAncestor:null,ancestor:s,prelim:0,modifier:0,change:0,shift:0,i:o,thread:null},t.push(s)}}function h7(r,e){var t=r.isExpand?r.children:[],a=r.parentNode.children,n=r.hierNode.i?a[r.hierNode.i-1]:null;if(t.length){d7(r);var i=(t[0].hierNode.prelim+t[t.length-1].hierNode.prelim)/2;n?(r.hierNode.prelim=n.hierNode.prelim+e(r,n),r.hierNode.modifier=r.hierNode.prelim-i):r.hierNode.prelim=i}else n&&(r.hierNode.prelim=n.hierNode.prelim+e(r,n));r.parentNode.hierNode.defaultAncestor=p7(r,n,r.parentNode.hierNode.defaultAncestor||a[0],e)}function v7(r){var e=r.hierNode.prelim+r.parentNode.hierNode.modifier;r.setLayout({x:e},!0),r.hierNode.modifier+=r.parentNode.hierNode.modifier}function xS(r){return arguments.length?r:m7}function Ss(r,e){return r-=Math.PI/2,{x:e*Math.cos(r),y:e*Math.sin(r)}}function c7(r,e){return re(r.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}function d7(r){for(var e=r.children,t=e.length,a=0,n=0;--t>=0;){var i=e[t];i.hierNode.prelim+=a,i.hierNode.modifier+=a,n+=i.hierNode.change,a+=i.hierNode.shift+n}}function p7(r,e,t,a){if(e){for(var n=r,i=r,o=i.parentNode.children[0],s=e,l=n.hierNode.modifier,u=i.hierNode.modifier,f=o.hierNode.modifier,h=s.hierNode.modifier;s=Sc(s),i=xc(i),s&&i;){n=Sc(n),o=xc(o),n.hierNode.ancestor=r;var v=s.hierNode.prelim+h-i.hierNode.prelim-u+a(s,i);v>0&&(y7(g7(s,r,t),r,v),u+=v,l+=v),h+=s.hierNode.modifier,u+=i.hierNode.modifier,l+=n.hierNode.modifier,f+=o.hierNode.modifier}s&&!Sc(n)&&(n.hierNode.thread=s,n.hierNode.modifier+=h-l),i&&!xc(o)&&(o.hierNode.thread=i,o.hierNode.modifier+=u-f,t=r)}return t}function Sc(r){var e=r.children;return e.length&&r.isExpand?e[e.length-1]:r.hierNode.thread}function xc(r){var e=r.children;return e.length&&r.isExpand?e[0]:r.hierNode.thread}function g7(r,e,t){return r.hierNode.ancestor.parentNode===e.parentNode?r.hierNode.ancestor:t}function y7(r,e,t){var a=t/(e.hierNode.i-r.hierNode.i);e.hierNode.change-=a,e.hierNode.shift+=t,e.hierNode.modifier+=t,e.hierNode.prelim+=t,r.hierNode.change+=a}function m7(r,e){return r.parentNode===e.parentNode?1:2}var _7=function(){function r(){this.parentPoint=[],this.childPoints=[]}return r}(),S7=function(r){k(e,r);function e(t){return r.call(this,t)||this}return e.prototype.getDefaultStyle=function(){return{stroke:"#000",fill:null}},e.prototype.getDefaultShape=function(){return new _7},e.prototype.buildPath=function(t,a){var n=a.childPoints,i=n.length,o=a.parentPoint,s=n[0],l=n[i-1];if(i===1){t.moveTo(o[0],o[1]),t.lineTo(s[0],s[1]);return}var u=a.orient,f=u==="TB"||u==="BT"?0:1,h=1-f,v=W(a.forkPosition,1),c=[];c[f]=o[f],c[h]=o[h]+(l[h]-o[h])*v,t.moveTo(o[0],o[1]),t.lineTo(c[0],c[1]),t.moveTo(s[0],s[1]),c[f]=s[f],t.lineTo(c[0],c[1]),c[f]=l[f],t.lineTo(c[0],c[1]),t.lineTo(l[0],l[1]);for(var d=1;dm.x,w||(S=S-Math.PI));var b=w?"left":"right",C=s.getModel("label"),T=C.get("rotate"),D=T*(Math.PI/180),M=g.getTextContent();M&&(g.setTextConfig({position:C.get("position")||b,rotation:T==null?-S:D,origin:"center"}),M.setStyle("verticalAlign","middle"))}var L=s.get(["emphasis","focus"]),I=L==="relative"?gf(o.getAncestorsIndices(),o.getDescendantIndices()):L==="ancestor"?o.getAncestorsIndices():L==="descendant"?o.getDescendantIndices():null;I&&(it(t).focus=I),w7(n,o,f,t,d,c,p,a),t.__edge&&(t.onHoverStateChange=function(P){if(P!=="blur"){var R=o.parentNode&&r.getItemGraphicEl(o.parentNode.dataIndex);R&&R.hoverState===bl||Af(t.__edge,P)}})}function w7(r,e,t,a,n,i,o,s){var l=e.getModel(),u=r.get("edgeShape"),f=r.get("layout"),h=r.getOrient(),v=r.get(["lineStyle","curveness"]),c=r.get("edgeForkPosition"),d=l.getModel("lineStyle").getLineStyle(),p=a.__edge;if(u==="curve")e.parentNode&&e.parentNode!==t&&(p||(p=a.__edge=new Th({shape:Pp(f,h,v,n,n)})),Lt(p,{shape:Pp(f,h,v,i,o)},r));else if(u==="polyline"&&f==="orthogonal"&&e!==t&&e.children&&e.children.length!==0&&e.isExpand===!0){for(var g=e.children,y=[],m=0;mt&&(t=n.height)}this.height=t+1},r.prototype.getNodeById=function(e){if(this.getId()===e)return this;for(var t=0,a=this.children,n=a.length;t=0&&this.hostTree.data.setItemLayout(this.dataIndex,e,t)},r.prototype.getLayout=function(){return this.hostTree.data.getItemLayout(this.dataIndex)},r.prototype.getModel=function(e){if(!(this.dataIndex<0)){var t=this.hostTree,a=t.data.getItemModel(this.dataIndex);return a.getModel(e)}},r.prototype.getLevelModel=function(){return(this.hostTree.levelModels||[])[this.depth]},r.prototype.setVisual=function(e,t){this.dataIndex>=0&&this.hostTree.data.setItemVisual(this.dataIndex,e,t)},r.prototype.getVisual=function(e){return this.hostTree.data.getItemVisual(this.dataIndex,e)},r.prototype.getRawIndex=function(){return this.hostTree.data.getRawIndex(this.dataIndex)},r.prototype.getId=function(){return this.hostTree.data.getId(this.dataIndex)},r.prototype.getChildIndex=function(){if(this.parentNode){for(var e=this.parentNode.children,t=0;t=0){var a=t.getData().tree.root,n=r.targetNode;if(U(n)&&(n=a.getNodeById(n)),n&&a.contains(n))return{node:n};var i=r.targetNodeId;if(i!=null&&(n=a.getNodeById(i)))return{node:n}}}function ID(r){for(var e=[];r;)r=r.parentNode,r&&e.push(r);return e.reverse()}function Ry(r,e){var t=ID(r);return dt(t,e)>=0}function Yh(r,e){for(var t=[];r;){var a=r.dataIndex;t.push({name:r.name,dataIndex:a,value:e.getRawValue(a)}),r=r.parentNode}return t.reverse(),t}var E7=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.hasSymbolVisual=!0,t.ignoreStyleOnData=!0,t}return e.prototype.getInitialData=function(t){var a={name:t.name,children:t.data},n=t.leaves||{},i=new Vt(n,this,this.ecModel),o=Py.createTree(a,this,s);function s(h){h.wrapMethod("getItemModel",function(v,c){var d=o.getNodeByDataIndex(c);return d&&d.children.length&&d.isExpand||(v.parentModel=i),v})}var l=0;o.eachNode("preorder",function(h){h.depth>l&&(l=h.depth)});var u=t.expandAndCollapse,f=u&&t.initialTreeDepth>=0?t.initialTreeDepth:l;return o.root.eachNode("preorder",function(h){var v=h.hostTree.data.getRawDataItem(h.dataIndex);h.isExpand=v&&v.collapsed!=null?!v.collapsed:h.depth<=f}),o.data},e.prototype.getOrient=function(){var t=this.get("orient");return t==="horizontal"?t="LR":t==="vertical"&&(t="TB"),t},e.prototype.setZoom=function(t){this.option.zoom=t},e.prototype.setCenter=function(t){this.option.center=t},e.prototype.formatTooltip=function(t,a,n){for(var i=this.getData().tree,o=i.root.children[0],s=i.getNodeByDataIndex(t),l=s.getValue(),u=s.name;s&&s!==o;)u=s.parentNode.name+"."+u,s=s.parentNode;return oe("nameValue",{name:u,value:l,noValue:isNaN(l)||l==null})},e.prototype.getDataParams=function(t){var a=r.prototype.getDataParams.apply(this,arguments),n=this.getData().tree.getNodeByDataIndex(t);return a.treeAncestors=Yh(n,this),a.collapsed=!n.isExpand,a},e.type="series.tree",e.layoutMode="box",e.defaultOption={z:2,coordinateSystem:"view",left:"12%",top:"12%",right:"12%",bottom:"12%",layout:"orthogonal",edgeShape:"curve",edgeForkPosition:"50%",roam:!1,nodeScaleRatio:.4,center:null,zoom:1,orient:"LR",symbol:"emptyCircle",symbolSize:7,expandAndCollapse:!0,initialTreeDepth:2,lineStyle:{color:"#ccc",width:1.5,curveness:.5},itemStyle:{color:"lightsteelblue",borderWidth:1.5},label:{show:!0},animationEasing:"linear",animationDuration:700,animationDurationUpdate:500},e}(Ht),k7=E7;function O7(r,e,t){for(var a=[r],n=[],i;i=a.pop();)if(n.push(i),i.isExpand){var o=i.children;if(o.length)for(var s=0;s=0;i--)t.push(n[i])}}function B7(r,e){r.eachSeriesByType("tree",function(t){N7(t,e)})}function N7(r,e){var t=c7(r,e);r.layoutInfo=t;var a=r.get("layout"),n=0,i=0,o=null;a==="radial"?(n=2*Math.PI,i=Math.min(t.height,t.width)/2,o=xS(function(_,S){return(_.parentNode===S.parentNode?1:2)/_.depth})):(n=t.width,i=t.height,o=xS());var s=r.getData().tree.root,l=s.children[0];if(l){f7(s),O7(l,h7,o),s.hierNode.modifier=-l.hierNode.prelim,is(l,v7);var u=l,f=l,h=l;is(l,function(_){var S=_.getLayout().x;Sf.getLayout().x&&(f=_),_.depth>h.depth&&(h=_)});var v=u===f?1:o(u,f)/2,c=v-u.getLayout().x,d=0,p=0,g=0,y=0;if(a==="radial")d=n/(f.getLayout().x+v+c),p=i/(h.depth-1||1),is(l,function(_){g=(_.getLayout().x+c)*d,y=(_.depth-1)*p;var S=Ss(g,y);_.setLayout({x:S.x,y:S.y,rawX:g,rawY:y},!0)});else{var m=r.getOrient();m==="RL"||m==="LR"?(p=i/(f.getLayout().x+v+c),d=n/(h.depth-1||1),is(l,function(_){y=(_.getLayout().x+c)*p,g=m==="LR"?(_.depth-1)*d:n-(_.depth-1)*d,_.setLayout({x:g,y},!0)})):(m==="TB"||m==="BT")&&(d=n/(f.getLayout().x+v+c),p=i/(h.depth-1||1),is(l,function(_){g=(_.getLayout().x+c)*d,y=m==="TB"?(_.depth-1)*p:i-(_.depth-1)*p,_.setLayout({x:g,y},!0)}))}}}function V7(r){r.eachSeriesByType("tree",function(e){var t=e.getData(),a=t.tree;a.eachNode(function(n){var i=n.getModel(),o=i.getModel("itemStyle").getItemStyle(),s=t.ensureUniqueItemVisual(n.dataIndex,"style");V(s,o)})})}function z7(r){r.registerAction({type:"treeExpandAndCollapse",event:"treeExpandAndCollapse",update:"update"},function(e,t){t.eachComponent({mainType:"series",subType:"tree",query:e},function(a){var n=e.dataIndex,i=a.getData().tree,o=i.getNodeByDataIndex(n);o.isExpand=!o.isExpand})}),r.registerAction({type:"treeRoam",event:"treeRoam",update:"none"},function(e,t,a){t.eachComponent({mainType:"series",subType:"tree",query:e},function(n){var i=n.coordinateSystem,o=Ly(i,e,void 0,a);n.setCenter&&n.setCenter(o.center),n.setZoom&&n.setZoom(o.zoom)})})}function F7(r){r.registerChartView(b7),r.registerSeriesModel(k7),r.registerLayout(B7),r.registerVisual(V7),z7(r)}var AS=["treemapZoomToNode","treemapRender","treemapMove"];function G7(r){for(var e=0;e1;)i=i.parentNode;var o=up(r.ecModel,i.name||i.dataIndex+"",a);n.setVisual("decal",o)})}var H7=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t.preventUsingHoverLayer=!0,t}return e.prototype.getInitialData=function(t,a){var n={name:t.name,children:t.data};RD(n);var i=t.levels||[],o=this.designatedVisualItemStyle={},s=new Vt({itemStyle:o},this,a);i=t.levels=W7(i,a);var l=G(i||[],function(h){return new Vt(h,s,a)},this),u=Py.createTree(n,this,f);function f(h){h.wrapMethod("getItemModel",function(v,c){var d=u.getNodeByDataIndex(c),p=d?l[d.depth]:null;return v.parentModel=p||s,v})}return u.data},e.prototype.optionUpdated=function(){this.resetViewRoot()},e.prototype.formatTooltip=function(t,a,n){var i=this.getData(),o=this.getRawValue(t),s=i.getName(t);return oe("nameValue",{name:s,value:o})},e.prototype.getDataParams=function(t){var a=r.prototype.getDataParams.apply(this,arguments),n=this.getData().tree.getNodeByDataIndex(t);return a.treeAncestors=Yh(n,this),a.treePathInfo=a.treeAncestors,a},e.prototype.setLayoutInfo=function(t){this.layoutInfo=this.layoutInfo||{},V(this.layoutInfo,t)},e.prototype.mapIdToIndex=function(t){var a=this._idIndexMap;a||(a=this._idIndexMap=q(),this._idIndexMapCount=0);var n=a.get(t);return n==null&&a.set(t,n=this._idIndexMapCount++),n},e.prototype.getViewRoot=function(){return this._viewRoot},e.prototype.resetViewRoot=function(t){t?this._viewRoot=t:t=this._viewRoot;var a=this.getRawData().tree.root;(!t||t!==a&&!a.contains(t))&&(this._viewRoot=a)},e.prototype.enableAriaDecal=function(){PD(this)},e.type="series.treemap",e.layoutMode="box",e.defaultOption={progressive:0,left:"center",top:"middle",width:"80%",height:"80%",sort:!0,clipWindow:"origin",squareRatio:.5*(1+Math.sqrt(5)),leafDepth:null,drillDownIcon:"\u25B6",zoomToNodeRatio:.32*.32,roam:!0,nodeClick:"zoomToNode",animation:!0,animationDurationUpdate:900,animationEasing:"quinticInOut",breadcrumb:{show:!0,height:22,left:"center",top:"bottom",emptyItemWidth:25,itemStyle:{color:"rgba(0,0,0,0.7)",textStyle:{color:"#fff"}},emphasis:{itemStyle:{color:"rgba(0,0,0,0.9)"}}},label:{show:!0,distance:0,padding:5,position:"inside",color:"#fff",overflow:"truncate"},upperLabel:{show:!1,position:[0,"50%"],height:20,overflow:"truncate",verticalAlign:"middle"},itemStyle:{color:null,colorAlpha:null,colorSaturation:null,borderWidth:0,gapWidth:0,borderColor:"#fff",borderColorSaturation:null},emphasis:{upperLabel:{show:!0,position:[0,"50%"],overflow:"truncate",verticalAlign:"middle"}},visualDimension:0,visualMin:null,visualMax:null,color:[],colorAlpha:null,colorSaturation:null,colorMappingBy:"index",visibleMin:10,childrenVisibleMin:null,levels:[]},e}(Ht);function RD(r){var e=0;A(r.children,function(a){RD(a);var n=a.value;F(n)&&(n=n[0]),e+=n});var t=r.value;F(t)&&(t=t[0]),(t==null||isNaN(t))&&(t=e),t<0&&(t=0),F(r.value)?r.value[0]=t:r.value=t}function W7(r,e){var t=kt(e.get("color")),a=kt(e.get(["aria","decal","decals"]));if(!!t){r=r||[];var n,i;A(r,function(s){var l=new Vt(s),u=l.get("color"),f=l.get("decal");(l.get(["itemStyle","color"])||u&&u!=="none")&&(n=!0),(l.get(["itemStyle","decal"])||f&&f!=="none")&&(i=!0)});var o=r[0]||(r[0]={});return n||(o.color=t.slice()),!i&&a&&(o.decal=a.slice()),r}}var $7=H7,U7=8,DS=8,wc=5,Y7=function(){function r(e){this.group=new nt,e.add(this.group)}return r.prototype.render=function(e,t,a,n){var i=e.getModel("breadcrumb"),o=this.group;if(o.removeAll(),!(!i.get("show")||!a)){var s=i.getModel("itemStyle"),l=i.getModel("emphasis"),u=s.getModel("textStyle"),f=l.getModel(["itemStyle","textStyle"]),h={pos:{left:i.get("left"),right:i.get("right"),top:i.get("top"),bottom:i.get("bottom")},box:{width:t.getWidth(),height:t.getHeight()},emptyItemWidth:i.get("emptyItemWidth"),totalWidth:0,renderList:[]};this._prepare(a,h,u),this._renderContent(e,h,s,l,u,f,n),kh(o,h.pos,h.box)}},r.prototype._prepare=function(e,t,a){for(var n=e;n;n=n.parentNode){var i=ee(n.getModel().get("name"),""),o=a.getTextRect(i),s=Math.max(o.width+U7*2,t.emptyItemWidth);t.totalWidth+=s+DS,t.renderList.push({node:n,text:i,width:s})}},r.prototype._renderContent=function(e,t,a,n,i,o,s){for(var l=0,u=t.emptyItemWidth,f=e.get(["breadcrumb","height"]),h=U3(t.pos,t.box),v=t.totalWidth,c=t.renderList,d=n.getModel("itemStyle").getItemStyle(),p=c.length-1;p>=0;p--){var g=c[p],y=g.node,m=g.width,_=g.text;v>h.width&&(v-=m-u,m=u,_=null);var S=new ze({shape:{points:Z7(l,0,m,f,p===c.length-1,p===0)},style:tt(a.getItemStyle(),{lineJoin:"bevel"}),textContent:new Dt({style:Nt(i,{text:_})}),textConfig:{position:"inside"},z2:To*1e4,onclick:ot(s,y)});S.disableLabelAnimation=!0,S.getTextContent().ensureState("emphasis").style=Nt(o,{text:_}),S.ensureState("emphasis").style=d,$t(S,n.get("focus"),n.get("blurScope"),n.get("disabled")),this.group.add(S),X7(S,e,y),l+=m+DS}},r.prototype.remove=function(){this.group.removeAll()},r}();function Z7(r,e,t,a,n,i){var o=[[n?r:r-wc,e],[r+t,e],[r+t,e+a],[n?r:r-wc,e+a]];return!i&&o.splice(2,0,[r+t+wc,e+a/2]),!n&&o.push([r,e+a/2]),o}function X7(r,e,t){it(r).eventData={componentType:"series",componentSubType:"treemap",componentIndex:e.componentIndex,seriesIndex:e.seriesIndex,seriesName:e.name,seriesType:"treemap",selfType:"breadcrumb",nodeData:{dataIndex:t&&t.dataIndex,name:t&&t.name},treePathInfo:t&&Yh(t,e)}}var q7=Y7,K7=function(){function r(){this._storage=[],this._elExistsMap={}}return r.prototype.add=function(e,t,a,n,i){return this._elExistsMap[e.id]?!1:(this._elExistsMap[e.id]=!0,this._storage.push({el:e,target:t,duration:a,delay:n,easing:i}),!0)},r.prototype.finished=function(e){return this._finishedCallback=e,this},r.prototype.start=function(){for(var e=this,t=this._storage.length,a=function(){t--,t<=0&&(e._storage.length=0,e._elExistsMap={},e._finishedCallback&&e._finishedCallback())},n=0,i=this._storage.length;nLS||Math.abs(t.dy)>LS)){var a=this.seriesModel.getData().tree.root;if(!a)return;var n=a.getLayout();if(!n)return;this.api.dispatchAction({type:"treemapMove",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:n.x+t.dx,y:n.y+t.dy,width:n.width,height:n.height}})}},e.prototype._onZoom=function(t){var a=t.originX,n=t.originY;if(this._state!=="animating"){var i=this.seriesModel.getData().tree.root;if(!i)return;var o=i.getLayout();if(!o)return;var s=new vt(o.x,o.y,o.width,o.height),l=this.seriesModel.layoutInfo;a-=l.x,n-=l.y;var u=ur();Xr(u,u,[-a,-n]),Cg(u,u,[t.scale,t.scale]),Xr(u,u,[a,n]),s.applyTransform(u),this.api.dispatchAction({type:"treemapRender",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:s.x,y:s.y,width:s.width,height:s.height}})}},e.prototype._initEvents=function(t){var a=this;t.on("click",function(n){if(a._state==="ready"){var i=a.seriesModel.get("nodeClick",!0);if(!!i){var o=a.findTarget(n.offsetX,n.offsetY);if(!!o){var s=o.node;if(s.getLayout().isLeafRoot)a._rootToNode(o);else if(i==="zoomToNode")a._zoomToNode(o);else if(i==="link"){var l=s.hostTree.data.getItemModel(s.dataIndex),u=l.get("link",!0),f=l.get("target",!0)||"blank";u&&Rf(u,f)}}}}},this)},e.prototype._renderBreadcrumb=function(t,a,n){var i=this;n||(n=t.get("leafDepth",!0)!=null?{node:t.getViewRoot()}:this.findTarget(a.getWidth()/2,a.getHeight()/2),n||(n={node:t.getData().tree.root})),(this._breadcrumb||(this._breadcrumb=new q7(this.group))).render(t,a,n.node,function(o){i._state!=="animating"&&(Ry(t.getViewRoot(),o)?i._rootToNode({node:o}):i._zoomToNode({node:o}))})},e.prototype.remove=function(){this._clearController(),this._containerGroup&&this._containerGroup.removeAll(),this._storage=os(),this._state="ready",this._breadcrumb&&this._breadcrumb.remove()},e.prototype.dispose=function(){this._clearController()},e.prototype._zoomToNode=function(t){this.api.dispatchAction({type:"treemapZoomToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t.node})},e.prototype._rootToNode=function(t){this.api.dispatchAction({type:"treemapRootToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t.node})},e.prototype.findTarget=function(t,a){var n,i=this.seriesModel.getViewRoot();return i.eachNode({attr:"viewChildren",order:"preorder"},function(o){var s=this._storage.background[o.getRawIndex()];if(s){var l=s.transformCoordToLocal(t,a),u=s.shape;if(u.x<=l[0]&&l[0]<=u.x+u.width&&u.y<=l[1]&&l[1]<=u.y+u.height)n={node:o,offsetX:l[0],offsetY:l[1]};else return!1}},this),n},e.type="treemap",e}(zt);function os(){return{nodeGroup:[],background:[],content:[]}}function r8(r,e,t,a,n,i,o,s,l,u){if(!o)return;var f=o.getLayout(),h=r.getData(),v=o.getModel();if(h.setItemGraphicEl(o.dataIndex,null),!f||!f.isInView)return;var c=f.width,d=f.height,p=f.borderWidth,g=f.invisible,y=o.getRawIndex(),m=s&&s.getRawIndex(),_=o.viewChildren,S=f.upperHeight,w=_&&_.length,x=v.getModel("itemStyle"),b=v.getModel(["emphasis","itemStyle"]),C=v.getModel(["blur","itemStyle"]),T=v.getModel(["select","itemStyle"]),D=x.get("borderRadius")||0,M=j("nodeGroup",Rp);if(!M)return;if(l.add(M),M.x=f.x||0,M.y=f.y||0,M.markRedraw(),Xf(M).nodeWidth=c,Xf(M).nodeHeight=d,f.isAboveViewRoot)return M;var L=j("background",MS,u,j7);L&&z(M,L,w&&f.upperLabelHeight);var I=v.getModel("emphasis"),P=I.get("focus"),R=I.get("blurScope"),E=I.get("disabled"),B=P==="ancestor"?o.getAncestorsIndices():P==="descendant"?o.getDescendantIndices():P;if(w)Ks(M)&&Jn(M,!1),L&&(Jn(L,!E),h.setItemGraphicEl(o.dataIndex,L),ep(L,B,R));else{var O=j("content",MS,u,t8);O&&H(M,O),L.disableMorphing=!0,L&&Ks(L)&&Jn(L,!1),Jn(M,!E),h.setItemGraphicEl(o.dataIndex,M),ep(M,B,R)}return M;function z(gt,rt,yt){var st=it(rt);if(st.dataIndex=o.dataIndex,st.seriesIndex=r.seriesIndex,rt.setShape({x:0,y:0,width:c,height:d,r:D}),g)$(rt);else{rt.invisible=!1;var K=o.getVisual("style"),lt=K.stroke,Gt=RS(x);Gt.fill=lt;var wt=Fn(b);wt.fill=b.get("borderColor");var Yt=Fn(C);Yt.fill=C.get("borderColor");var Wt=Fn(T);if(Wt.fill=T.get("borderColor"),yt){var ge=c-2*p;X(rt,lt,K.opacity,{x:p,y:0,width:ge,height:S})}else rt.removeTextContent();rt.setStyle(Gt),rt.ensureState("emphasis").style=wt,rt.ensureState("blur").style=Yt,rt.ensureState("select").style=Wt,gi(rt)}gt.add(rt)}function H(gt,rt){var yt=it(rt);yt.dataIndex=o.dataIndex,yt.seriesIndex=r.seriesIndex;var st=Math.max(c-2*p,0),K=Math.max(d-2*p,0);if(rt.culling=!0,rt.setShape({x:p,y:p,width:st,height:K,r:D}),g)$(rt);else{rt.invisible=!1;var lt=o.getVisual("style"),Gt=lt.fill,wt=RS(x);wt.fill=Gt,wt.decal=lt.decal;var Yt=Fn(b),Wt=Fn(C),ge=Fn(T);X(rt,Gt,lt.opacity,null),rt.setStyle(wt),rt.ensureState("emphasis").style=Yt,rt.ensureState("blur").style=Wt,rt.ensureState("select").style=ge,gi(rt)}gt.add(rt)}function $(gt){!gt.invisible&&i.push(gt)}function X(gt,rt,yt,st){var K=v.getModel(st?PS:IS),lt=ee(v.get("name"),null),Gt=K.getShallow("show");de(gt,ie(v,st?PS:IS),{defaultText:Gt?lt:null,inheritColor:rt,defaultOpacity:yt,labelFetcher:r,labelDataIndex:o.dataIndex});var wt=gt.getTextContent();if(!!wt){var Yt=wt.style,Wt=xg(Yt.padding||0);st&&(gt.setTextConfig({layoutRect:st}),wt.disableLabelLayout=!0),wt.beforeUpdate=function(){var ea=Math.max((st?st.width:gt.shape.width)-Wt[1]-Wt[3],0),Ie=Math.max((st?st.height:gt.shape.height)-Wt[0]-Wt[2],0);(Yt.width!==ea||Yt.height!==Ie)&&wt.setStyle({width:ea,height:Ie})},Yt.truncateMinChar=2,Yt.lineOverflow="truncate",Q(Yt,st,f);var ge=wt.getState("emphasis");Q(ge?ge.style:null,st,f)}}function Q(gt,rt,yt){var st=gt?gt.text:null;if(!rt&&yt.isLeafRoot&&st!=null){var K=r.get("drillDownIcon",!0);gt.text=K?K+" "+st:st}}function j(gt,rt,yt,st){var K=m!=null&&t[gt][m],lt=n[gt];return K?(t[gt][m]=null,pt(lt,K)):g||(K=new rt,K instanceof fr&&(K.z2=a8(yt,st)),xt(lt,K)),e[gt][y]=K}function pt(gt,rt){var yt=gt[y]={};rt instanceof Rp?(yt.oldX=rt.x,yt.oldY=rt.y):yt.oldShape=V({},rt.shape)}function xt(gt,rt){var yt=gt[y]={},st=o.parentNode,K=rt instanceof nt;if(st&&(!a||a.direction==="drillDown")){var lt=0,Gt=0,wt=n.background[st.getRawIndex()];!a&&wt&&wt.oldShape&&(lt=wt.oldShape.width,Gt=wt.oldShape.height),K?(yt.oldX=0,yt.oldY=Gt):yt.oldShape={x:lt,y:Gt,width:0,height:0}}yt.fadein=!K}}function a8(r,e){return r*Q7+e}var n8=e8,ll=A,i8=et,qf=-1,Ey=function(){function r(e){var t=e.mappingMethod,a=e.type,n=this.option=at(e);this.type=a,this.mappingMethod=t,this._normalizeData=l8[t];var i=r.visualHandlers[a];this.applyVisual=i.applyVisual,this.getColorMapper=i.getColorMapper,this._normalizedToVisual=i._normalizedToVisual[t],t==="piecewise"?(bc(n),o8(n)):t==="category"?n.categories?s8(n):bc(n,!0):(Me(t!=="linear"||n.dataExtent),bc(n))}return r.prototype.mapValueToVisual=function(e){var t=this._normalizeData(e);return this._normalizedToVisual(t,e)},r.prototype.getNormalizer=function(){return Y(this._normalizeData,this)},r.listVisualTypes=function(){return St(r.visualHandlers)},r.isValidType=function(e){return r.visualHandlers.hasOwnProperty(e)},r.eachVisual=function(e,t,a){et(e)?A(e,t,a):t.call(a,e)},r.mapVisual=function(e,t,a){var n,i=F(e)?[]:et(e)?{}:(n=!0,null);return r.eachVisual(e,function(o,s){var l=t.call(a,o,s);n?i=l:i[s]=l}),i},r.retrieveVisuals=function(e){var t={},a;return e&&ll(r.visualHandlers,function(n,i){e.hasOwnProperty(i)&&(t[i]=e[i],a=!0)}),a?t:null},r.prepareVisualTypes=function(e){if(F(e))e=e.slice();else if(i8(e)){var t=[];ll(e,function(a,n){t.push(n)}),e=t}else return[];return e.sort(function(a,n){return n==="color"&&a!=="color"&&a.indexOf("color")===0?1:-1}),e},r.dependsOn=function(e,t){return t==="color"?!!(e&&e.indexOf(t)===0):e===t},r.findPieceIndex=function(e,t,a){for(var n,i=1/0,o=0,s=t.length;o=0;i--)a[i]==null&&(delete t[e[i]],e.pop())}function bc(r,e){var t=r.visual,a=[];et(t)?ll(t,function(i){a.push(i)}):t!=null&&a.push(t);var n={color:1,symbol:1};!e&&a.length===1&&!n.hasOwnProperty(r.type)&&(a[1]=a[0]),ED(r,a)}function Lu(r){return{applyVisual:function(e,t,a){var n=this.mapValueToVisual(e);a("color",r(t("color"),n))},_normalizedToVisual:Ep([0,1])}}function ES(r){var e=this.option.visual;return e[Math.round(Rt(r,[0,1],[0,e.length-1],!0))]||{}}function ss(r){return function(e,t,a){a(r,this.mapValueToVisual(e))}}function xs(r){var e=this.option.visual;return e[this.option.loop&&r!==qf?r%e.length:r]}function Gn(){return this.option.visual[0]}function Ep(r){return{linear:function(e){return Rt(e,r,this.option.visual,!0)},category:xs,piecewise:function(e,t){var a=kp.call(this,t);return a==null&&(a=Rt(e,r,this.option.visual,!0)),a},fixed:Gn}}function kp(r){var e=this.option,t=e.pieceList;if(e.hasSpecialVisual){var a=Ey.findPieceIndex(r,t),n=t[a];if(n&&n.visual)return n.visual[this.type]}}function ED(r,e){return r.visual=e,r.type==="color"&&(r.parsedVisual=G(e,function(t){var a=We(t);return a||[0,0,0,1]})),e}var l8={linear:function(r){return Rt(r,this.option.dataExtent,[0,1],!0)},piecewise:function(r){var e=this.option.pieceList,t=Ey.findPieceIndex(r,e,!0);if(t!=null)return Rt(t,[0,e.length-1],[0,1],!0)},category:function(r){var e=this.option.categories?this.option.categoryMap[r]:r;return e==null?qf:e},fixed:Kt};function Iu(r,e,t){return r?e<=t:e=t.length||p===t[p.depth]){var y=d8(n,l,p,g,d,a);OD(p,y,t,a)}})}}}function h8(r,e,t){var a=V({},e),n=t.designatedVisualItemStyle;return A(["color","colorAlpha","colorSaturation"],function(i){n[i]=e[i];var o=r.get(i);n[i]=null,o!=null&&(a[i]=o)}),a}function kS(r){var e=Cc(r,"color");if(e){var t=Cc(r,"colorAlpha"),a=Cc(r,"colorSaturation");return a&&(e=As(e,null,null,a)),t&&(e=_f(e,t)),e}}function v8(r,e){return e!=null?As(e,null,null,r):null}function Cc(r,e){var t=r[e];if(t!=null&&t!=="none")return t}function c8(r,e,t,a,n,i){if(!(!i||!i.length)){var o=Tc(e,"color")||n.color!=null&&n.color!=="none"&&(Tc(e,"colorAlpha")||Tc(e,"colorSaturation"));if(!!o){var s=e.get("visualMin"),l=e.get("visualMax"),u=t.dataExtent.slice();s!=null&&su[1]&&(u[1]=l);var f=e.get("colorMappingBy"),h={type:o.name,dataExtent:u,visual:o.range};h.type==="color"&&(f==="index"||f==="id")?(h.mappingMethod="category",h.loop=!0):h.mappingMethod="linear";var v=new ve(h);return kD(v).drColorMappingBy=f,v}}}function Tc(r,e){var t=r.get(e);return F(t)&&t.length?{name:e,range:t}:null}function d8(r,e,t,a,n,i){var o=V({},e);if(n){var s=n.type,l=s==="color"&&kD(n).drColorMappingBy,u=l==="index"?a:l==="id"?i.mapIdToIndex(t.getId()):t.getValue(r.get("visualDimension"));o[s]=n.mapValueToVisual(u)}return o}var ul=Math.max,Kf=Math.min,OS=le,ky=A,BD=["itemStyle","borderWidth"],p8=["itemStyle","gapWidth"],g8=["upperLabel","show"],y8=["upperLabel","height"],m8={seriesType:"treemap",reset:function(r,e,t,a){var n=t.getWidth(),i=t.getHeight(),o=r.option,s=re(r.getBoxLayoutParams(),{width:t.getWidth(),height:t.getHeight()}),l=o.size||[],u=W(OS(s.width,l[0]),n),f=W(OS(s.height,l[1]),i),h=a&&a.type,v=["treemapZoomToNode","treemapRootToNode"],c=sl(a,v,r),d=h==="treemapRender"||h==="treemapMove"?a.rootRect:null,p=r.getViewRoot(),g=ID(p);if(h!=="treemapMove"){var y=h==="treemapZoomToNode"?C8(r,c,p,u,f):d?[d.width,d.height]:[u,f],m=o.sort;m&&m!=="asc"&&m!=="desc"&&(m="desc");var _={squareRatio:o.squareRatio,sort:m,leafDepth:o.leafDepth};p.hostTree.clearLayouts();var S={x:0,y:0,width:y[0],height:y[1],area:y[0]*y[1]};p.setLayout(S),ND(p,_,!1,0),S=p.getLayout(),ky(g,function(x,b){var C=(g[b+1]||p).getValue();x.setLayout(V({dataExtent:[C,C],borderWidth:0,upperHeight:0},S))})}var w=r.getData().tree.root;w.setLayout(T8(s,d,c),!0),r.setLayoutInfo(s),VD(w,new vt(-s.x,-s.y,n,i),g,p,0)}};function ND(r,e,t,a){var n,i;if(!r.isRemoved()){var o=r.getLayout();n=o.width,i=o.height;var s=r.getModel(),l=s.get(BD),u=s.get(p8)/2,f=zD(s),h=Math.max(l,f),v=l-u,c=h-u;r.setLayout({borderWidth:l,upperHeight:h,upperLabelHeight:f},!0),n=ul(n-2*v,0),i=ul(i-v-c,0);var d=n*i,p=_8(r,s,d,e,t,a);if(!!p.length){var g={x:v,y:c,width:n,height:i},y=Kf(n,i),m=1/0,_=[];_.area=0;for(var S=0,w=p.length;S=0;l--){var u=n[a==="asc"?o-l-1:l].getValue();u/t*es[1]&&(s[1]=u)})),{sum:a,dataExtent:s}}function b8(r,e,t){for(var a=0,n=1/0,i=0,o=void 0,s=r.length;ia&&(a=o));var l=r.area*r.area,u=e*e*t;return l?ul(u*a/l,l/(u*n)):1/0}function BS(r,e,t,a,n){var i=e===t.width?0:1,o=1-i,s=["x","y"],l=["width","height"],u=t[s[i]],f=e?r.area/e:0;(n||f>t[l[o]])&&(f=t[l[o]]);for(var h=0,v=r.length;hs0&&(u=s0),i=s}ua&&(a=e);var i=a%2?a+2:a+3;n=[];for(var o=0;o0&&(w[0]=-w[0],w[1]=-w[1]);var b=S[0]<0?-1:1;if(i.__position!=="start"&&i.__position!=="end"){var C=-Math.atan2(S[1],S[0]);h[0].8?"left":v[0]<-.8?"right":"center",p=v[1]>.8?"top":v[1]<-.8?"bottom":"middle";break;case"start":i.x=-v[0]*y+f[0],i.y=-v[1]*m+f[1],d=v[0]>.8?"right":v[0]<-.8?"left":"center",p=v[1]>.8?"bottom":v[1]<-.8?"top":"middle";break;case"insideStartTop":case"insideStart":case"insideStartBottom":i.x=y*b+f[0],i.y=f[1]+T,d=S[0]<0?"right":"left",i.originX=-y*b,i.originY=-T;break;case"insideMiddleTop":case"insideMiddle":case"insideMiddleBottom":case"middle":i.x=x[0],i.y=x[1]+T,d="center",i.originY=-T;break;case"insideEndTop":case"insideEnd":case"insideEndBottom":i.x=-y*b+h[0],i.y=h[1]+T,d=S[0]>=0?"right":"left",i.originX=y*b,i.originY=-T;break}i.scaleX=i.scaleY=o,i.setStyle({verticalAlign:i.__verticalAlign||p,align:i.__align||d})}},e}(nt),Vy=$8,U8=function(){function r(e){this.group=new nt,this._LineCtor=e||Vy}return r.prototype.updateData=function(e){var t=this;this._progressiveEls=null;var a=this,n=a.group,i=a._lineData;a._lineData=e,i||n.removeAll();var o=HS(e);e.diff(i).add(function(s){t._doAdd(e,s,o)}).update(function(s,l){t._doUpdate(i,e,l,s,o)}).remove(function(s){n.remove(i.getItemGraphicEl(s))}).execute()},r.prototype.updateLayout=function(){var e=this._lineData;!e||e.eachItemGraphicEl(function(t,a){t.updateLayout(e,a)},this)},r.prototype.incrementalPrepareUpdate=function(e){this._seriesScope=HS(e),this._lineData=null,this.group.removeAll()},r.prototype.incrementalUpdate=function(e,t){this._progressiveEls=[];function a(s){!s.isGroup&&!Y8(s)&&(s.incremental=!0,s.ensureState("emphasis").hoverLayer=!0)}for(var n=e.start;n0}function HS(r){var e=r.hostModel,t=e.getModel("emphasis");return{lineStyle:e.getModel("lineStyle").getLineStyle(),emphasisLineStyle:t.getModel(["lineStyle"]).getLineStyle(),blurLineStyle:e.getModel(["blur","lineStyle"]).getLineStyle(),selectLineStyle:e.getModel(["select","lineStyle"]).getLineStyle(),emphasisDisabled:t.get("disabled"),blurScope:t.get("blurScope"),focus:t.get("focus"),labelStatesModels:ie(e)}}function WS(r){return isNaN(r[0])||isNaN(r[1])}function Ic(r){return r&&!WS(r[0])&&!WS(r[1])}var zy=U8,Pc=[],Rc=[],Ec=[],$i=se,kc=ai,$S=Math.abs;function US(r,e,t){for(var a=r[0],n=r[1],i=r[2],o=1/0,s,l=t*t,u=.1,f=.1;f<=.9;f+=.1){Pc[0]=$i(a[0],n[0],i[0],f),Pc[1]=$i(a[1],n[1],i[1],f);var h=$S(kc(Pc,e)-l);h=0?s=s+u:s=s-u:d>=0?s=s-u:s=s+u}return s}function Oc(r,e){var t=[],a=$s,n=[[],[],[]],i=[[],[]],o=[];e/=2,r.eachEdge(function(s,l){var u=s.getLayout(),f=s.getVisual("fromSymbol"),h=s.getVisual("toSymbol");u.__original||(u.__original=[fa(u[0]),fa(u[1])],u[2]&&u.__original.push(fa(u[2])));var v=u.__original;if(u[2]!=null){if(Ce(n[0],v[0]),Ce(n[1],v[2]),Ce(n[2],v[1]),f&&f!=="none"){var c=bs(s.node1),d=US(n,v[0],c*e);a(n[0][0],n[1][0],n[2][0],d,t),n[0][0]=t[3],n[1][0]=t[4],a(n[0][1],n[1][1],n[2][1],d,t),n[0][1]=t[3],n[1][1]=t[4]}if(h&&h!=="none"){var c=bs(s.node2),d=US(n,v[1],c*e);a(n[0][0],n[1][0],n[2][0],d,t),n[1][0]=t[1],n[2][0]=t[2],a(n[0][1],n[1][1],n[2][1],d,t),n[1][1]=t[1],n[2][1]=t[2]}Ce(u[0],n[0]),Ce(u[1],n[2]),Ce(u[2],n[1])}else{if(Ce(i[0],v[0]),Ce(i[1],v[1]),qn(o,i[1],i[0]),wo(o,o),f&&f!=="none"){var c=bs(s.node1);Dd(i[0],i[0],o,c*e)}if(h&&h!=="none"){var c=bs(s.node2);Dd(i[1],i[1],o,-c*e)}Ce(u[0],i[0]),Ce(u[1],i[1])}})}function YS(r){return r.type==="view"}var Z8=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.init=function(t,a){var n=new kl,i=new zy,o=this.group;this._controller=new Vl(a.getZr()),this._controllerHost={target:o},o.add(n.group),o.add(i.group),this._symbolDraw=n,this._lineDraw=i,this._firstRender=!0},e.prototype.render=function(t,a,n){var i=this,o=t.coordinateSystem;this._model=t;var s=this._symbolDraw,l=this._lineDraw,u=this.group;if(YS(o)){var f={x:o.x,y:o.y,scaleX:o.scaleX,scaleY:o.scaleY};this._firstRender?u.attr(f):Lt(u,f,t)}Oc(t.getGraph(),ws(t));var h=t.getData();s.updateData(h);var v=t.getEdgeData();l.updateData(v),this._updateNodeAndLinkScale(),this._updateController(t,a,n),clearTimeout(this._layoutTimeout);var c=t.forceLayout,d=t.get(["force","layoutAnimation"]);c&&this._startForceLayoutIteration(c,d);var p=t.get("layout");h.graph.eachNode(function(_){var S=_.dataIndex,w=_.getGraphicEl(),x=_.getModel();if(!!w){w.off("drag").off("dragend");var b=x.get("draggable");b&&w.on("drag",function(T){switch(p){case"force":c.warmUp(),!i._layouting&&i._startForceLayoutIteration(c,d),c.setFixed(S),h.setItemLayout(S,[w.x,w.y]);break;case"circular":h.setItemLayout(S,[w.x,w.y]),_.setLayout({fixed:!0},!0),Ny(t,"symbolSize",_,[T.offsetX,T.offsetY]),i.updateLayout(t);break;case"none":default:h.setItemLayout(S,[w.x,w.y]),By(t.getGraph(),t),i.updateLayout(t);break}}).on("dragend",function(){c&&c.setUnfixed(S)}),w.setDraggable(b,!!x.get("cursor"));var C=x.get(["emphasis","focus"]);C==="adjacency"&&(it(w).focus=_.getAdjacentDataIndices())}}),h.graph.eachEdge(function(_){var S=_.getGraphicEl(),w=_.getModel().get(["emphasis","focus"]);!S||w==="adjacency"&&(it(S).focus={edge:[_.dataIndex],node:[_.node1.dataIndex,_.node2.dataIndex]})});var g=t.get("layout")==="circular"&&t.get(["circular","rotateLabel"]),y=h.getLayout("cx"),m=h.getLayout("cy");h.graph.eachNode(function(_){WD(_,g,y,m)}),this._firstRender=!1},e.prototype.dispose=function(){this._controller&&this._controller.dispose(),this._controllerHost=null},e.prototype._startForceLayoutIteration=function(t,a){var n=this;(function i(){t.step(function(o){n.updateLayout(n._model),(n._layouting=!o)&&(a?n._layoutTimeout=setTimeout(i,16):i())})})()},e.prototype._updateController=function(t,a,n){var i=this,o=this._controller,s=this._controllerHost,l=this.group;if(o.setPointerChecker(function(u,f,h){var v=l.getBoundingRect();return v.applyTransform(l.transform),v.contain(f,h)&&!$h(u,n,t)}),!YS(t.coordinateSystem)){o.disable();return}o.enable(t.get("roam")),s.zoomLimit=t.get("scaleLimit"),s.zoom=t.coordinateSystem.getZoom(),o.off("pan").off("zoom").on("pan",function(u){Ay(s,u.dx,u.dy),n.dispatchAction({seriesId:t.id,type:"graphRoam",dx:u.dx,dy:u.dy})}).on("zoom",function(u){Dy(s,u.scale,u.originX,u.originY),n.dispatchAction({seriesId:t.id,type:"graphRoam",zoom:u.scale,originX:u.originX,originY:u.originY}),i._updateNodeAndLinkScale(),Oc(t.getGraph(),ws(t)),i._lineDraw.updateLayout(),n.updateLabelLayout()})},e.prototype._updateNodeAndLinkScale=function(){var t=this._model,a=t.getData(),n=ws(t);a.eachItemGraphicEl(function(i,o){i&&i.setSymbolScale(n)})},e.prototype.updateLayout=function(t){Oc(t.getGraph(),ws(t)),this._symbolDraw.updateLayout(),this._lineDraw.updateLayout()},e.prototype.remove=function(t,a){this._symbolDraw&&this._symbolDraw.remove(),this._lineDraw&&this._lineDraw.remove()},e.type="graph",e}(zt),X8=Z8;function Ui(r){return"_EC_"+r}var q8=function(){function r(e){this.type="graph",this.nodes=[],this.edges=[],this._nodesMap={},this._edgesMap={},this._directed=e||!1}return r.prototype.isDirected=function(){return this._directed},r.prototype.addNode=function(e,t){e=e==null?""+t:""+e;var a=this._nodesMap;if(!a[Ui(e)]){var n=new Hn(e,t);return n.hostGraph=this,this.nodes.push(n),a[Ui(e)]=n,n}},r.prototype.getNodeByIndex=function(e){var t=this.data.getRawIndex(e);return this.nodes[t]},r.prototype.getNodeById=function(e){return this._nodesMap[Ui(e)]},r.prototype.addEdge=function(e,t,a){var n=this._nodesMap,i=this._edgesMap;if(Mt(e)&&(e=this.nodes[e]),Mt(t)&&(t=this.nodes[t]),e instanceof Hn||(e=n[Ui(e)]),t instanceof Hn||(t=n[Ui(t)]),!(!e||!t)){var o=e.id+"-"+t.id,s=new UD(e,t,a);return s.hostGraph=this,this._directed&&(e.outEdges.push(s),t.inEdges.push(s)),e.edges.push(s),e!==t&&t.edges.push(s),this.edges.push(s),i[o]=s,s}},r.prototype.getEdgeByIndex=function(e){var t=this.edgeData.getRawIndex(e);return this.edges[t]},r.prototype.getEdge=function(e,t){e instanceof Hn&&(e=e.id),t instanceof Hn&&(t=t.id);var a=this._edgesMap;return this._directed?a[e+"-"+t]:a[e+"-"+t]||a[t+"-"+e]},r.prototype.eachNode=function(e,t){for(var a=this.nodes,n=a.length,i=0;i=0&&e.call(t,a[i],i)},r.prototype.eachEdge=function(e,t){for(var a=this.edges,n=a.length,i=0;i=0&&a[i].node1.dataIndex>=0&&a[i].node2.dataIndex>=0&&e.call(t,a[i],i)},r.prototype.breadthFirstTraverse=function(e,t,a,n){if(t instanceof Hn||(t=this._nodesMap[Ui(t)]),!!t){for(var i=a==="out"?"outEdges":a==="in"?"inEdges":"edges",o=0;o=0&&l.node2.dataIndex>=0});for(var i=0,o=n.length;i=0&&this[r][e].setItemVisual(this.dataIndex,t,a)},getVisual:function(t){return this[r][e].getItemVisual(this.dataIndex,t)},setLayout:function(t,a){this.dataIndex>=0&&this[r][e].setItemLayout(this.dataIndex,t,a)},getLayout:function(){return this[r][e].getItemLayout(this.dataIndex)},getGraphicEl:function(){return this[r][e].getItemGraphicEl(this.dataIndex)},getRawIndex:function(){return this[r][e].getRawIndex(this.dataIndex)}}}te(Hn,YD("hostGraph","data"));te(UD,YD("hostGraph","edgeData"));var K8=q8;function ZD(r,e,t,a,n){for(var i=new K8(a),o=0;o "+v)),u++)}var c=t.get("coordinateSystem"),d;if(c==="cartesian2d"||c==="polar")d=Ta(r,t);else{var p=Ml.get(c),g=p?p.dimensions||[]:[];dt(g,"value")<0&&g.concat(["value"]);var y=Il(r,{coordDimensions:g,encodeDefine:t.getEncode()}).dimensions;d=new De(y,t),d.initData(r)}var m=new De(["value"],t);return m.initData(l,s),n&&n(d,m),MD({mainData:d,struct:i,structAttr:"graph",datas:{node:d,edge:m},datasAttr:{node:"data",edge:"edgeData"}}),i.update(),i}var J8=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t.hasSymbolVisual=!0,t}return e.prototype.init=function(t){r.prototype.init.apply(this,arguments);var a=this;function n(){return a._categoriesData}this.legendVisualProvider=new Nl(n,n),this.fillDataTextStyle(t.edges||t.links),this._updateCategoriesData()},e.prototype.mergeOption=function(t){r.prototype.mergeOption.apply(this,arguments),this.fillDataTextStyle(t.edges||t.links),this._updateCategoriesData()},e.prototype.mergeDefaultAndTheme=function(t){r.prototype.mergeDefaultAndTheme.apply(this,arguments),ci(t,"edgeLabel",["show"])},e.prototype.getInitialData=function(t,a){var n=t.edges||t.links||[],i=t.data||t.nodes||[],o=this;if(i&&n){R8(this);var s=ZD(i,n,this,!0,l);return A(s.edges,function(u){E8(u.node1,u.node2,this,u.dataIndex)},this),s.data}function l(u,f){u.wrapMethod("getItemModel",function(d){var p=o._categoriesModels,g=d.getShallow("category"),y=p[g];return y&&(y.parentModel=d.parentModel,d.parentModel=y),d});var h=Vt.prototype.getModel;function v(d,p){var g=h.call(this,d,p);return g.resolveParentPath=c,g}f.wrapMethod("getItemModel",function(d){return d.resolveParentPath=c,d.getModel=v,d});function c(d){if(d&&(d[0]==="label"||d[1]==="label")){var p=d.slice();return d[0]==="label"?p[0]="edgeLabel":d[1]==="label"&&(p[1]="edgeLabel"),p}return d}}},e.prototype.getGraph=function(){return this.getData().graph},e.prototype.getEdgeData=function(){return this.getGraph().edgeData},e.prototype.getCategoriesData=function(){return this._categoriesData},e.prototype.formatTooltip=function(t,a,n){if(n==="edge"){var i=this.getData(),o=this.getDataParams(t,n),s=i.graph.getEdgeByIndex(t),l=i.getName(s.node1.dataIndex),u=i.getName(s.node2.dataIndex),f=[];return l!=null&&f.push(l),u!=null&&f.push(u),oe("nameValue",{name:f.join(" > "),value:o.value,noValue:o.value==null})}var h=DT({series:this,dataIndex:t,multipleSeries:a});return h},e.prototype._updateCategoriesData=function(){var t=G(this.option.categories||[],function(n){return n.value!=null?n:V({value:0},n)}),a=new De(["value"],this);a.initData(t),this._categoriesData=a,this._categoriesModels=a.mapArray(function(n){return a.getItemModel(n)})},e.prototype.setZoom=function(t){this.option.zoom=t},e.prototype.setCenter=function(t){this.option.center=t},e.prototype.isAnimationEnabled=function(){return r.prototype.isAnimationEnabled.call(this)&&!(this.get("layout")==="force"&&this.get(["force","layoutAnimation"]))},e.type="series.graph",e.dependencies=["grid","polar","geo","singleAxis","calendar"],e.defaultOption={z:2,coordinateSystem:"view",legendHoverLink:!0,layout:null,circular:{rotateLabel:!1},force:{initLayout:null,repulsion:[0,50],gravity:.1,friction:.6,edgeLength:30,layoutAnimation:!0},left:"center",top:"center",symbol:"circle",symbolSize:10,edgeSymbol:["none","none"],edgeSymbolSize:10,edgeLabel:{position:"middle",distance:5},draggable:!1,roam:!1,center:null,zoom:1,nodeScaleRatio:.6,label:{show:!1,formatter:"{b}"},itemStyle:{},lineStyle:{color:"#aaa",width:1,opacity:.5},emphasis:{scale:!0,label:{show:!0}},select:{itemStyle:{borderColor:"#212121"}}},e}(Ht),Q8=J8,j8={type:"graphRoam",event:"graphRoam",update:"none"};function tF(r){r.registerChartView(X8),r.registerSeriesModel(Q8),r.registerProcessor(D8),r.registerVisual(M8),r.registerVisual(L8),r.registerLayout(k8),r.registerLayout(r.PRIORITY.VISUAL.POST_CHART_LAYOUT,B8),r.registerLayout(V8),r.registerCoordinateSystem("graphView",{dimensions:zl.dimensions,create:F8}),r.registerAction({type:"focusNodeAdjacency",event:"focusNodeAdjacency",update:"series:focusNodeAdjacency"},Kt),r.registerAction({type:"unfocusNodeAdjacency",event:"unfocusNodeAdjacency",update:"series:unfocusNodeAdjacency"},Kt),r.registerAction(j8,function(e,t,a){t.eachComponent({mainType:"series",query:e},function(n){var i=n.coordinateSystem,o=Ly(i,e,void 0,a);n.setCenter&&n.setCenter(o.center),n.setZoom&&n.setZoom(o.zoom)})})}var eF=function(){function r(){this.angle=0,this.width=10,this.r=10,this.x=0,this.y=0}return r}(),rF=function(r){k(e,r);function e(t){var a=r.call(this,t)||this;return a.type="pointer",a}return e.prototype.getDefaultShape=function(){return new eF},e.prototype.buildPath=function(t,a){var n=Math.cos,i=Math.sin,o=a.r,s=a.width,l=a.angle,u=a.x-n(l)*s*(s>=o/3?1:2),f=a.y-i(l)*s*(s>=o/3?1:2);l=a.angle-Math.PI/2,t.moveTo(u,f),t.lineTo(a.x+n(l)*s,a.y+i(l)*s),t.lineTo(a.x+n(a.angle)*o,a.y+i(a.angle)*o),t.lineTo(a.x-n(l)*s,a.y-i(l)*s),t.lineTo(u,f)},e}(mt),aF=rF;function nF(r,e){var t=r.get("center"),a=e.getWidth(),n=e.getHeight(),i=Math.min(a,n),o=W(t[0],e.getWidth()),s=W(t[1],e.getHeight()),l=W(r.get("radius"),i/2);return{cx:o,cy:s,r:l}}function Ru(r,e){var t=r==null?"":r+"";return e&&(U(e)?t=e.replace("{value}",t):J(e)&&(t=e(r))),t}var iF=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.render=function(t,a,n){this.group.removeAll();var i=t.get(["axisLine","lineStyle","color"]),o=nF(t,n);this._renderMain(t,a,n,i,o),this._data=t.getData()},e.prototype.dispose=function(){},e.prototype._renderMain=function(t,a,n,i,o){var s=this.group,l=t.get("clockwise"),u=-t.get("startAngle")/180*Math.PI,f=-t.get("endAngle")/180*Math.PI,h=t.getModel("axisLine"),v=h.get("roundCap"),c=v?Uf:Ve,d=h.get("show"),p=h.getModel("lineStyle"),g=p.get("width"),y=[u,f];N2(y,!l),u=y[0],f=y[1];for(var m=f-u,_=u,S=[],w=0;d&&w=T&&(D===0?0:i[D-1][0])Math.PI/2&&(j+=Math.PI)):Q==="tangential"?j=-C-Math.PI/2:Mt(Q)&&(j=Q*Math.PI/180),j===0?h.add(new Dt({style:Nt(_,{text:z,x:$,y:X,verticalAlign:R<-.8?"top":R>.8?"bottom":"middle",align:P<-.4?"left":P>.4?"right":"center"},{inheritColor:H}),silent:!0})):h.add(new Dt({style:Nt(_,{text:z,x:$,y:X,verticalAlign:"middle",align:"center"},{inheritColor:H}),silent:!0,originX:$,originY:X,rotation:j}))}if(m.get("show")&&E!==S){var B=m.get("distance");B=B?B+f:f;for(var pt=0;pt<=w;pt++){P=Math.cos(C),R=Math.sin(C);var xt=new ue({shape:{x1:P*(d-B)+v,y1:R*(d-B)+c,x2:P*(d-b-B)+v,y2:R*(d-b-B)+c},silent:!0,style:L});L.stroke==="auto"&&xt.setStyle({stroke:i((E+pt/w)/S)}),h.add(xt),C+=D}C-=D}else C+=T}},e.prototype._renderPointer=function(t,a,n,i,o,s,l,u,f){var h=this.group,v=this._data,c=this._progressEls,d=[],p=t.get(["pointer","show"]),g=t.getModel("progress"),y=g.get("show"),m=t.getData(),_=m.mapDimension("value"),S=+t.get("min"),w=+t.get("max"),x=[S,w],b=[s,l];function C(D,M){var L=m.getItemModel(D),I=L.getModel("pointer"),P=W(I.get("width"),o.r),R=W(I.get("length"),o.r),E=t.get(["pointer","icon"]),B=I.get("offsetCenter"),O=W(B[0],o.r),z=W(B[1],o.r),H=I.get("keepAspect"),$;return E?$=jt(E,O-P/2,z-R,P,R,null,H):$=new aF({shape:{angle:-Math.PI/2,width:P,r:R,x:O,y:z}}),$.rotation=-(M+Math.PI/2),$.x=o.cx,$.y=o.cy,$}function T(D,M){var L=g.get("roundCap"),I=L?Uf:Ve,P=g.get("overlap"),R=P?g.get("width"):f/m.count(),E=P?o.r-R:o.r-(D+1)*R,B=P?o.r:o.r-D*R,O=new I({shape:{startAngle:s,endAngle:M,cx:o.cx,cy:o.cy,clockwise:u,r0:E,r:B}});return P&&(O.z2=w-m.get(_,D)%w),O}(y||p)&&(m.diff(v).add(function(D){var M=m.get(_,D);if(p){var L=C(D,s);Ft(L,{rotation:-((isNaN(+M)?b[0]:Rt(M,x,b,!0))+Math.PI/2)},t),h.add(L),m.setItemGraphicEl(D,L)}if(y){var I=T(D,s),P=g.get("clip");Ft(I,{shape:{endAngle:Rt(M,x,b,P)}},t),h.add(I),Qd(t.seriesIndex,m.dataType,D,I),d[D]=I}}).update(function(D,M){var L=m.get(_,D);if(p){var I=v.getItemGraphicEl(M),P=I?I.rotation:s,R=C(D,P);R.rotation=P,Lt(R,{rotation:-((isNaN(+L)?b[0]:Rt(L,x,b,!0))+Math.PI/2)},t),h.add(R),m.setItemGraphicEl(D,R)}if(y){var E=c[M],B=E?E.shape.endAngle:s,O=T(D,B),z=g.get("clip");Lt(O,{shape:{endAngle:Rt(L,x,b,z)}},t),h.add(O),Qd(t.seriesIndex,m.dataType,D,O),d[D]=O}}).execute(),m.each(function(D){var M=m.getItemModel(D),L=M.getModel("emphasis"),I=L.get("focus"),P=L.get("blurScope"),R=L.get("disabled");if(p){var E=m.getItemGraphicEl(D),B=m.getItemVisual(D,"style"),O=B.fill;if(E instanceof pe){var z=E.style;E.useStyle(V({image:z.image,x:z.x,y:z.y,width:z.width,height:z.height},B))}else E.useStyle(B),E.type!=="pointer"&&E.setColor(O);E.setStyle(M.getModel(["pointer","itemStyle"]).getItemStyle()),E.style.fill==="auto"&&E.setStyle("fill",i(Rt(m.get(_,D),x,[0,1],!0))),E.z2EmphasisLift=0,ce(E,M),$t(E,I,P,R)}if(y){var H=d[D];H.useStyle(m.getItemVisual(D,"style")),H.setStyle(M.getModel(["progress","itemStyle"]).getItemStyle()),H.z2EmphasisLift=0,ce(H,M),$t(H,I,P,R)}}),this._progressEls=d)},e.prototype._renderAnchor=function(t,a){var n=t.getModel("anchor"),i=n.get("show");if(i){var o=n.get("size"),s=n.get("icon"),l=n.get("offsetCenter"),u=n.get("keepAspect"),f=jt(s,a.cx-o/2+W(l[0],a.r),a.cy-o/2+W(l[1],a.r),o,o,null,u);f.z2=n.get("showAbove")?1:0,f.setStyle(n.getModel("itemStyle").getItemStyle()),this.group.add(f)}},e.prototype._renderTitleAndDetail=function(t,a,n,i,o){var s=this,l=t.getData(),u=l.mapDimension("value"),f=+t.get("min"),h=+t.get("max"),v=new nt,c=[],d=[],p=t.isAnimationEnabled(),g=t.get(["pointer","showAbove"]);l.diff(this._data).add(function(y){c[y]=new Dt({silent:!0}),d[y]=new Dt({silent:!0})}).update(function(y,m){c[y]=s._titleEls[m],d[y]=s._detailEls[m]}).execute(),l.each(function(y){var m=l.getItemModel(y),_=l.get(u,y),S=new nt,w=i(Rt(_,[f,h],[0,1],!0)),x=m.getModel("title");if(x.get("show")){var b=x.get("offsetCenter"),C=o.cx+W(b[0],o.r),T=o.cy+W(b[1],o.r),D=c[y];D.attr({z2:g?0:2,style:Nt(x,{x:C,y:T,text:l.getName(y),align:"center",verticalAlign:"middle"},{inheritColor:w})}),S.add(D)}var M=m.getModel("detail");if(M.get("show")){var L=M.get("offsetCenter"),I=o.cx+W(L[0],o.r),P=o.cy+W(L[1],o.r),R=W(M.get("width"),o.r),E=W(M.get("height"),o.r),B=t.get(["progress","show"])?l.getItemVisual(y,"style").fill:w,D=d[y],O=M.get("formatter");D.attr({z2:g?0:2,style:Nt(M,{x:I,y:P,text:Ru(_,O),width:isNaN(R)?null:R,height:isNaN(E)?null:E,align:"center",verticalAlign:"middle"},{inheritColor:B})}),LC(D,{normal:M},_,function(H){return Ru(H,O)}),p&&IC(D,y,l,t,{getFormattedLabel:function(H,$,X,Q,j,pt){return Ru(pt?pt.interpolatedValue:_,O)}}),S.add(D)}v.add(S)}),this.group.add(v),this._titleEls=c,this._detailEls=d},e.type="gauge",e}(zt),oF=iF,sF=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t.visualStyleAccessPath="itemStyle",t}return e.prototype.getInitialData=function(t,a){return No(this,["value"])},e.type="series.gauge",e.defaultOption={z:2,colorBy:"data",center:["50%","50%"],legendHoverLink:!0,radius:"75%",startAngle:225,endAngle:-45,clockwise:!0,min:0,max:100,splitNumber:10,axisLine:{show:!0,roundCap:!1,lineStyle:{color:[[1,"#E6EBF8"]],width:10}},progress:{show:!1,overlap:!0,width:10,roundCap:!1,clip:!0},splitLine:{show:!0,length:10,distance:10,lineStyle:{color:"#63677A",width:3,type:"solid"}},axisTick:{show:!0,splitNumber:5,length:6,distance:10,lineStyle:{color:"#63677A",width:1,type:"solid"}},axisLabel:{show:!0,distance:15,color:"#464646",fontSize:12,rotate:0},pointer:{icon:null,offsetCenter:[0,0],show:!0,showAbove:!0,length:"60%",width:6,keepAspect:!1},anchor:{show:!1,showAbove:!1,size:6,icon:"circle",offsetCenter:[0,0],keepAspect:!1,itemStyle:{color:"#fff",borderWidth:0,borderColor:"#5470c6"}},title:{show:!0,offsetCenter:[0,"20%"],color:"#464646",fontSize:16,valueAnimation:!1},detail:{show:!0,backgroundColor:"rgba(0,0,0,0)",borderWidth:0,borderColor:"#ccc",width:100,height:null,padding:[5,10],offsetCenter:[0,"40%"],color:"#464646",fontSize:30,fontWeight:"bold",lineHeight:30,valueAnimation:!1}},e}(Ht),lF=sF;function XD(r){r.registerChartView(oF),r.registerSeriesModel(lF)}var uF=["itemStyle","opacity"],fF=function(r){k(e,r);function e(t,a){var n=r.call(this)||this,i=n,o=new Fe,s=new Dt;return i.setTextContent(s),n.setTextGuideLine(o),n.updateData(t,a,!0),n}return e.prototype.updateData=function(t,a,n){var i=this,o=t.hostModel,s=t.getItemModel(a),l=t.getItemLayout(a),u=s.getModel("emphasis"),f=s.get(uF);f=f==null?1:f,n||Ar(i),i.useStyle(t.getItemVisual(a,"style")),i.style.lineJoin="round",n?(i.setShape({points:l.points}),i.style.opacity=0,Ft(i,{style:{opacity:f}},o,a)):Lt(i,{style:{opacity:f},shape:{points:l.points}},o,a),ce(i,s),this._updateLabel(t,a),$t(this,u.get("focus"),u.get("blurScope"),u.get("disabled"))},e.prototype._updateLabel=function(t,a){var n=this,i=this.getTextGuideLine(),o=n.getTextContent(),s=t.hostModel,l=t.getItemModel(a),u=t.getItemLayout(a),f=u.label,h=t.getItemVisual(a,"style"),v=h.fill;de(o,ie(l),{labelFetcher:t.hostModel,labelDataIndex:a,defaultOpacity:h.opacity,defaultText:t.getName(a)},{normal:{align:f.textAlign,verticalAlign:f.verticalAlign}}),n.setTextConfig({local:!0,inside:!!f.inside,insideStroke:v,outsideFill:v});var c=f.linePoints;i.setShape({points:c}),n.textGuideLineConfig={anchor:c?new ut(c[0][0],c[0][1]):null},Lt(o,{style:{x:f.x,y:f.y}},s,a),o.attr({rotation:f.rotation,originX:f.x,originY:f.y,z2:10}),xy(n,wy(l),{stroke:v})},e}(ze),hF=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t.ignoreLabelLineUpdate=!0,t}return e.prototype.render=function(t,a,n){var i=t.getData(),o=this._data,s=this.group;i.diff(o).add(function(l){var u=new fF(i,l);i.setItemGraphicEl(l,u),s.add(u)}).update(function(l,u){var f=o.getItemGraphicEl(u);f.updateData(i,l),s.add(f),i.setItemGraphicEl(l,f)}).remove(function(l){var u=o.getItemGraphicEl(l);Js(u,t,l)}).execute(),this._data=i},e.prototype.remove=function(){this.group.removeAll(),this._data=null},e.prototype.dispose=function(){},e.type="funnel",e}(zt),vF=hF,cF=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.init=function(t){r.prototype.init.apply(this,arguments),this.legendVisualProvider=new Nl(Y(this.getData,this),Y(this.getRawData,this)),this._defaultLabelLine(t)},e.prototype.getInitialData=function(t,a){return No(this,{coordDimensions:["value"],encodeDefaulter:ot(Jg,this)})},e.prototype._defaultLabelLine=function(t){ci(t,"labelLine",["show"]);var a=t.labelLine,n=t.emphasis.labelLine;a.show=a.show&&t.label.show,n.show=n.show&&t.emphasis.label.show},e.prototype.getDataParams=function(t){var a=this.getData(),n=r.prototype.getDataParams.call(this,t),i=a.mapDimension("value"),o=a.getSum(i);return n.percent=o?+(a.get(i,t)/o*100).toFixed(2):0,n.$vars.push("percent"),n},e.type="series.funnel",e.defaultOption={z:2,legendHoverLink:!0,colorBy:"data",left:80,top:60,right:80,bottom:60,minSize:"0%",maxSize:"100%",sort:"descending",orient:"vertical",gap:0,funnelAlign:"center",label:{show:!0,position:"outer"},labelLine:{show:!0,length:20,lineStyle:{width:1}},itemStyle:{borderColor:"#fff",borderWidth:1},emphasis:{label:{show:!0}},select:{itemStyle:{borderColor:"#212121"}}},e}(Ht),dF=cF;function pF(r,e){return re(r.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}function gF(r,e){for(var t=r.mapDimension("value"),a=r.mapArray(t,function(l){return l}),n=[],i=e==="ascending",o=0,s=r.count();oOF)return;var n=this._model.coordinateSystem.getSlidedAxisExpandWindow([r.offsetX,r.offsetY]);n.behavior!=="none"&&this._dispatchExpand({axisExpandWindow:n.axisExpandWindow})}this._mouseDownPoint=null},mousemove:function(r){if(!(this._mouseDownPoint||!Nc(this,"mousemove"))){var e=this._model,t=e.coordinateSystem.getSlidedAxisExpandWindow([r.offsetX,r.offsetY]),a=t.behavior;a==="jump"&&this._throttledDispatchExpand.debounceNextCall(e.get("axisExpandDebounce")),this._throttledDispatchExpand(a==="none"?null:{axisExpandWindow:t.axisExpandWindow,animation:a==="jump"?null:{duration:0}})}}};function Nc(r,e){var t=r._model;return t.get("axisExpandable")&&t.get("axisExpandTriggerOn")===e}var VF=BF,zF=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.init=function(){r.prototype.init.apply(this,arguments),this.mergeOption({})},e.prototype.mergeOption=function(t){var a=this.option;t&&ht(a,t,!0),this._initDimensions()},e.prototype.contains=function(t,a){var n=t.get("parallelIndex");return n!=null&&a.getComponent("parallel",n)===this},e.prototype.setAxisExpand=function(t){A(["axisExpandable","axisExpandCenter","axisExpandCount","axisExpandWidth","axisExpandWindow"],function(a){t.hasOwnProperty(a)&&(this.option[a]=t[a])},this)},e.prototype._initDimensions=function(){var t=this.dimensions=[],a=this.parallelAxisIndex=[],n=Et(this.ecModel.queryComponents({mainType:"parallelAxis"}),function(i){return(i.get("parallelIndex")||0)===this.componentIndex},this);A(n,function(i){t.push("dim"+i.get("dim")),a.push(i.componentIndex)})},e.type="parallel",e.dependencies=["parallelAxis"],e.layoutMode="box",e.defaultOption={z:0,left:80,top:60,right:80,bottom:60,layout:"horizontal",axisExpandable:!1,axisExpandCenter:null,axisExpandCount:0,axisExpandWidth:50,axisExpandRate:17,axisExpandDebounce:50,axisExpandSlideTriggerArea:[-.15,.05,.4],axisExpandTriggerOn:"click",parallelAxisDefault:null},e}(Tt),FF=zF,GF=function(r){k(e,r);function e(t,a,n,i,o){var s=r.call(this,t,a,n)||this;return s.type=i||"value",s.axisIndex=o,s}return e.prototype.isHorizontal=function(){return this.coordinateSystem.getModel().get("layout")!=="horizontal"},e}(Mr),HF=GF;function Li(r,e,t,a,n,i){r=r||0;var o=t[1]-t[0];if(n!=null&&(n=Yi(n,[0,o])),i!=null&&(i=Math.max(i,n!=null?n:0)),a==="all"){var s=Math.abs(e[1]-e[0]);s=Yi(s,[0,o]),n=i=Yi(s,[n,i]),a=0}e[0]=Yi(e[0],t),e[1]=Yi(e[1],t);var l=Vc(e,a);e[a]+=r;var u=n||0,f=t.slice();l.sign<0?f[0]+=u:f[1]-=u,e[a]=Yi(e[a],f);var h;return h=Vc(e,a),n!=null&&(h.sign!==l.sign||h.spani&&(e[1-a]=e[a]+h.sign*i),e}function Vc(r,e){var t=r[e]-r[1-e];return{span:Math.abs(t),sign:t>0?-1:t<0?1:e?-1:1}}function Yi(r,e){return Math.min(e[1]!=null?e[1]:1/0,Math.max(e[0]!=null?e[0]:-1/0,r))}var zc=A,KD=Math.min,JD=Math.max,qS=Math.floor,WF=Math.ceil,KS=Zt,$F=Math.PI,UF=function(){function r(e,t,a){this.type="parallel",this._axesMap=q(),this._axesLayout={},this.dimensions=e.dimensions,this._model=e,this._init(e,t,a)}return r.prototype._init=function(e,t,a){var n=e.dimensions,i=e.parallelAxisIndex;zc(n,function(o,s){var l=i[s],u=t.getComponent("parallelAxis",l),f=this._axesMap.set(o,new HF(o,Hh(u),[0,0],u.get("type"),l)),h=f.type==="category";f.onBand=h&&u.get("boundaryGap"),f.inverse=u.get("inverse"),u.axis=f,f.model=u,f.coordinateSystem=u.coordinateSystem=this},this)},r.prototype.update=function(e,t){this._updateAxesFromSeries(this._model,e)},r.prototype.containPoint=function(e){var t=this._makeLayoutInfo(),a=t.axisBase,n=t.layoutBase,i=t.pixelDimIndex,o=e[1-i],s=e[i];return o>=a&&o<=a+t.axisLength&&s>=n&&s<=n+t.layoutLength},r.prototype.getModel=function(){return this._model},r.prototype._updateAxesFromSeries=function(e,t){t.eachSeries(function(a){if(!!e.contains(a,t)){var n=a.getData();zc(this.dimensions,function(i){var o=this._axesMap.get(i);o.scale.unionExtentFromData(n,n.mapDimension(i)),po(o.scale,o.model)},this)}},this)},r.prototype.resize=function(e,t){this._rect=re(e.getBoxLayoutParams(),{width:t.getWidth(),height:t.getHeight()}),this._layoutAxes()},r.prototype.getRect=function(){return this._rect},r.prototype._makeLayoutInfo=function(){var e=this._model,t=this._rect,a=["x","y"],n=["width","height"],i=e.get("layout"),o=i==="horizontal"?0:1,s=t[n[o]],l=[0,s],u=this.dimensions.length,f=Eu(e.get("axisExpandWidth"),l),h=Eu(e.get("axisExpandCount")||0,[0,u]),v=e.get("axisExpandable")&&u>3&&u>h&&h>1&&f>0&&s>0,c=e.get("axisExpandWindow"),d;if(c)d=Eu(c[1]-c[0],l),c[1]=c[0]+d;else{d=Eu(f*(h-1),l);var p=e.get("axisExpandCenter")||qS(u/2);c=[f*p-d/2],c[1]=c[0]+d}var g=(s-d)/(u-h);g<3&&(g=0);var y=[qS(KS(c[0]/f,1))+1,WF(KS(c[1]/f,1))-1],m=g/f*c[0];return{layout:i,pixelDimIndex:o,layoutBase:t[a[o]],layoutLength:s,axisBase:t[a[1-o]],axisLength:t[n[1-o]],axisExpandable:v,axisExpandWidth:f,axisCollapseWidth:g,axisExpandWindow:c,axisCount:u,winInnerIndices:y,axisExpandWindow0Pos:m}},r.prototype._layoutAxes=function(){var e=this._rect,t=this._axesMap,a=this.dimensions,n=this._makeLayoutInfo(),i=n.layout;t.each(function(o){var s=[0,n.axisLength],l=o.inverse?1:0;o.setExtent(s[l],s[1-l])}),zc(a,function(o,s){var l=(n.axisExpandable?ZF:YF)(s,n),u={horizontal:{x:l.position,y:n.axisLength},vertical:{x:0,y:l.position}},f={horizontal:$F/2,vertical:0},h=[u[i].x+e.x,u[i].y+e.y],v=f[i],c=ur();bi(c,c,v),Xr(c,c,h),this._axesLayout[o]={position:h,rotation:v,transform:c,axisNameAvailableWidth:l.axisNameAvailableWidth,axisLabelShow:l.axisLabelShow,nameTruncateMaxWidth:l.nameTruncateMaxWidth,tickDirection:1,labelDirection:1}},this)},r.prototype.getAxis=function(e){return this._axesMap.get(e)},r.prototype.dataToPoint=function(e,t){return this.axisCoordToPoint(this._axesMap.get(t).dataToCoord(e),t)},r.prototype.eachActiveState=function(e,t,a,n){a==null&&(a=0),n==null&&(n=e.count());var i=this._axesMap,o=this.dimensions,s=[],l=[];A(o,function(g){s.push(e.mapDimension(g)),l.push(i.get(g).model)});for(var u=this.hasAxisBrushed(),f=a;fi*(1-h[0])?(u="jump",l=s-i*(1-h[2])):(l=s-i*h[1])>=0&&(l=s-i*(1-h[1]))<=0&&(l=0),l*=t.axisExpandWidth/f,l?Li(l,n,o,"all"):u="none";else{var c=n[1]-n[0],d=o[1]*s/c;n=[JD(0,d-c/2)],n[1]=KD(o[1],n[0]+c),n[0]=n[1]-c}return{axisExpandWindow:n,behavior:u}},r}();function Eu(r,e){return KD(JD(r,e[0]),e[1])}function YF(r,e){var t=e.layoutLength/(e.axisCount-1);return{position:t*r,axisNameAvailableWidth:t,axisLabelShow:!0}}function ZF(r,e){var t=e.layoutLength,a=e.axisExpandWidth,n=e.axisCount,i=e.axisCollapseWidth,o=e.winInnerIndices,s,l=i,u=!1,f;return r=0;n--)or(a[n])},e.prototype.getActiveState=function(t){var a=this.activeIntervals;if(!a.length)return"normal";if(t==null||isNaN(+t))return"inactive";if(a.length===1){var n=a[0];if(n[0]<=t&&t<=n[1])return"active"}else for(var i=0,o=a.length;it9}function nM(r){var e=r.length-1;return e<0&&(e=0),[r[0],r[e]]}function iM(r,e,t,a){var n=new nt;return n.add(new bt({name:"main",style:Wy(t),silent:!0,draggable:!0,cursor:"move",drift:ot(tx,r,e,n,["n","s","w","e"]),ondragend:ot(_i,e,{isEnd:!0})})),A(a,function(i){n.add(new bt({name:i.join(""),style:{opacity:0},draggable:!0,silent:!0,invisible:!0,drift:ot(tx,r,e,n,i),ondragend:ot(_i,e,{isEnd:!0})}))}),n}function oM(r,e,t,a){var n=a.brushStyle.lineWidth||0,i=mo(n,e9),o=t[0][0],s=t[1][0],l=o-n/2,u=s-n/2,f=t[0][1],h=t[1][1],v=f-i+n/2,c=h-i+n/2,d=f-o,p=h-s,g=d+n,y=p+n;ia(r,e,"main",o,s,d,p),a.transformable&&(ia(r,e,"w",l,u,i,y),ia(r,e,"e",v,u,i,y),ia(r,e,"n",l,u,g,i),ia(r,e,"s",l,c,g,i),ia(r,e,"nw",l,u,i,i),ia(r,e,"ne",v,u,i,i),ia(r,e,"sw",l,c,i,i),ia(r,e,"se",v,c,i,i))}function zp(r,e){var t=e.__brushOption,a=t.transformable,n=e.childAt(0);n.useStyle(Wy(t)),n.attr({silent:!a,cursor:a?"move":"default"}),A([["w"],["e"],["n"],["s"],["s","e"],["s","w"],["n","e"],["n","w"]],function(i){var o=e.childOfName(i.join("")),s=i.length===1?Fp(r,i[0]):l9(r,i);o&&o.attr({silent:!a,invisible:!a,cursor:a?a9[s]+"-resize":null})})}function ia(r,e,t,a,n,i,o){var s=e.childOfName(t);s&&s.setShape(f9($y(r,e,[[a,n],[a+i,n+o]])))}function Wy(r){return tt({strokeNoScale:!0},r.brushStyle)}function sM(r,e,t,a){var n=[hl(r,t),hl(e,a)],i=[mo(r,t),mo(e,a)];return[[n[0],i[0]],[n[1],i[1]]]}function s9(r){return li(r.group)}function Fp(r,e){var t={w:"left",e:"right",n:"top",s:"bottom"},a={left:"w",right:"e",top:"n",bottom:"s"},n=Dh(t[e],s9(r));return a[n]}function l9(r,e){var t=[Fp(r,e[0]),Fp(r,e[1])];return(t[0]==="e"||t[0]==="w")&&t.reverse(),t.join("")}function tx(r,e,t,a,n,i){var o=t.__brushOption,s=r.toRectRange(o.range),l=lM(e,n,i);A(a,function(u){var f=r9[u];s[f[0]][f[1]]+=l[f[0]]}),o.range=r.fromRectRange(sM(s[0][0],s[1][0],s[0][1],s[1][1])),Fy(e,t),_i(e,{isEnd:!1})}function u9(r,e,t,a){var n=e.__brushOption.range,i=lM(r,t,a);A(n,function(o){o[0]+=i[0],o[1]+=i[1]}),Fy(r,e),_i(r,{isEnd:!1})}function lM(r,e,t){var a=r.group,n=a.transformCoordToLocal(e,t),i=a.transformCoordToLocal(0,0);return[n[0]-i[0],n[1]-i[1]]}function $y(r,e,t){var a=aM(r,e);return a&&a!==mi?a.clipPath(t,r._transform):at(t)}function f9(r){var e=hl(r[0][0],r[1][0]),t=hl(r[0][1],r[1][1]),a=mo(r[0][0],r[1][0]),n=mo(r[0][1],r[1][1]);return{x:e,y:t,width:a-e,height:n-t}}function h9(r,e,t){if(!(!r._brushType||c9(r,e.offsetX,e.offsetY))){var a=r._zr,n=r._covers,i=Hy(r,e,t);if(!r._dragging)for(var o=0;oa.getWidth()||t<0||t>a.getHeight()}var Xh={lineX:ax(0),lineY:ax(1),rect:{createCover:function(r,e){function t(a){return a}return iM({toRectRange:t,fromRectRange:t},r,e,[["w"],["e"],["n"],["s"],["s","e"],["s","w"],["n","e"],["n","w"]])},getCreatingRange:function(r){var e=nM(r);return sM(e[1][0],e[1][1],e[0][0],e[0][1])},updateCoverShape:function(r,e,t,a){oM(r,e,t,a)},updateCommon:zp,contain:Hp},polygon:{createCover:function(r,e){var t=new nt;return t.add(new Fe({name:"main",style:Wy(e),silent:!0})),t},getCreatingRange:function(r){return r},endCreating:function(r,e){e.remove(e.childAt(0)),e.add(new ze({name:"main",draggable:!0,drift:ot(u9,r,e),ondragend:ot(_i,r,{isEnd:!0})}))},updateCoverShape:function(r,e,t,a){e.childAt(0).setShape({points:$y(r,e,t)})},updateCommon:zp,contain:Hp}};function ax(r){return{createCover:function(e,t){return iM({toRectRange:function(a){var n=[a,[0,100]];return r&&n.reverse(),n},fromRectRange:function(a){return a[r]}},e,t,[[["w"],["e"]],[["n"],["s"]]][r])},getCreatingRange:function(e){var t=nM(e),a=hl(t[0][r],t[1][r]),n=mo(t[0][r],t[1][r]);return[a,n]},updateCoverShape:function(e,t,a,n){var i,o=aM(e,t);if(o!==mi&&o.getLinearBrushOtherExtent)i=o.getLinearBrushOtherExtent(r);else{var s=e._zr;i=[0,[s.getWidth(),s.getHeight()][1-r]]}var l=[a,i];r&&l.reverse(),oM(e,t,l,n)},updateCommon:zp,contain:Hp}}var Uy=i9;function fM(r){return r=Yy(r),function(e){return TC(e,r)}}function hM(r,e){return r=Yy(r),function(t){var a=e!=null?e:t,n=a?r.width:r.height,i=a?r.x:r.y;return[i,i+(n||0)]}}function vM(r,e,t){var a=Yy(r);return function(n,i){return a.contain(i[0],i[1])&&!$h(n,e,t)}}function Yy(r){return vt.create(r)}var d9=["axisLine","axisTickLabel","axisName"],p9=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.init=function(t,a){r.prototype.init.apply(this,arguments),(this._brushController=new Uy(a.getZr())).on("brush",Y(this._onBrush,this))},e.prototype.render=function(t,a,n,i){if(!g9(t,a,i)){this.axisModel=t,this.api=n,this.group.removeAll();var o=this._axisGroup;if(this._axisGroup=new nt,this.group.add(this._axisGroup),!!t.get("show")){var s=m9(t,a),l=s.coordinateSystem,u=t.getAreaSelectStyle(),f=u.width,h=t.axis.dim,v=l.getAxisLayout(h),c=V({strokeContainThreshold:f},v),d=new wa(t,c);A(d9,d.add,d),this._axisGroup.add(d.getGroup()),this._refreshBrushController(c,u,t,s,f,n),Tl(o,this._axisGroup,t)}}},e.prototype._refreshBrushController=function(t,a,n,i,o,s){var l=n.axis.getExtent(),u=l[1]-l[0],f=Math.min(30,Math.abs(u)*.1),h=vt.create({x:l[0],y:-o/2,width:u,height:o});h.x-=f,h.width+=2*f,this._brushController.mount({enableGlobalPan:!0,rotation:t.rotation,x:t.position[0],y:t.position[1]}).setPanels([{panelId:"pl",clipPath:fM(h),isTargetByCursor:vM(h,s,i),getLinearBrushOtherExtent:hM(h,0)}]).enableBrush({brushType:"lineX",brushStyle:a,removeOnClick:!0}).updateCovers(y9(n))},e.prototype._onBrush=function(t){var a=t.areas,n=this.axisModel,i=n.axis,o=G(a,function(s){return[i.coordToData(s.range[0],!0),i.coordToData(s.range[1],!0)]});(!n.option.realtime===t.isEnd||t.removeOnClick)&&this.api.dispatchAction({type:"axisAreaSelect",parallelAxisId:n.id,intervals:o})},e.prototype.dispose=function(){this._brushController.dispose()},e.type="parallelAxis",e}(Ut);function g9(r,e,t){return t&&t.type==="axisAreaSelect"&&e.findComponents({mainType:"parallelAxis",query:t})[0]===r}function y9(r){var e=r.axis;return G(r.activeIntervals,function(t){return{brushType:"lineX",panelId:"pl",range:[e.dataToCoord(t[0],!0),e.dataToCoord(t[1],!0)]}})}function m9(r,e){return e.getComponent("parallel",r.get("parallelIndex"))}var _9=p9,S9={type:"axisAreaSelect",event:"axisAreaSelected"};function x9(r){r.registerAction(S9,function(e,t){t.eachComponent({mainType:"parallelAxis",query:e},function(a){a.axis.model.setActiveIntervals(e.intervals)})}),r.registerAction("parallelAxisExpand",function(e,t){t.eachComponent({mainType:"parallel",query:e},function(a){a.setAxisExpand(e)})})}var w9={type:"value",areaSelectStyle:{width:20,borderWidth:1,borderColor:"rgba(160,197,232)",color:"rgba(160,197,232)",opacity:.3},realtime:!0,z:10};function cM(r){r.registerComponentView(VF),r.registerComponentModel(FF),r.registerCoordinateSystem("parallel",JF),r.registerPreprocessor(RF),r.registerComponentModel(JS),r.registerComponentView(_9),yo(r,"parallel",JS,w9),x9(r)}function b9(r){ct(cM),r.registerChartView(CF),r.registerSeriesModel(MF),r.registerVisual(r.PRIORITY.VISUAL.BRUSH,PF)}var C9=function(){function r(){this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.cpx1=0,this.cpy1=0,this.cpx2=0,this.cpy2=0,this.extent=0}return r}(),T9=function(r){k(e,r);function e(t){return r.call(this,t)||this}return e.prototype.getDefaultShape=function(){return new C9},e.prototype.buildPath=function(t,a){var n=a.extent;t.moveTo(a.x1,a.y1),t.bezierCurveTo(a.cpx1,a.cpy1,a.cpx2,a.cpy2,a.x2,a.y2),a.orient==="vertical"?(t.lineTo(a.x2+n,a.y2),t.bezierCurveTo(a.cpx2+n,a.cpy2,a.cpx1+n,a.cpy1,a.x1+n,a.y1)):(t.lineTo(a.x2,a.y2+n),t.bezierCurveTo(a.cpx2,a.cpy2+n,a.cpx1,a.cpy1+n,a.x1,a.y1+n)),t.closePath()},e.prototype.highlight=function(){_a(this)},e.prototype.downplay=function(){Sa(this)},e}(mt),A9=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t._focusAdjacencyDisabled=!1,t}return e.prototype.render=function(t,a,n){var i=this,o=t.getGraph(),s=this.group,l=t.layoutInfo,u=l.width,f=l.height,h=t.getData(),v=t.getData("edge"),c=t.get("orient");this._model=t,s.removeAll(),s.x=l.x,s.y=l.y,o.eachEdge(function(d){var p=new T9,g=it(p);g.dataIndex=d.dataIndex,g.seriesIndex=t.seriesIndex,g.dataType="edge";var y=d.getModel(),m=y.getModel("lineStyle"),_=m.get("curveness"),S=d.node1.getLayout(),w=d.node1.getModel(),x=w.get("localX"),b=w.get("localY"),C=d.node2.getLayout(),T=d.node2.getModel(),D=T.get("localX"),M=T.get("localY"),L=d.getLayout(),I,P,R,E,B,O,z,H;p.shape.extent=Math.max(1,L.dy),p.shape.orient=c,c==="vertical"?(I=(x!=null?x*u:S.x)+L.sy,P=(b!=null?b*f:S.y)+S.dy,R=(D!=null?D*u:C.x)+L.ty,E=M!=null?M*f:C.y,B=I,O=P*(1-_)+E*_,z=R,H=P*_+E*(1-_)):(I=(x!=null?x*u:S.x)+S.dx,P=(b!=null?b*f:S.y)+L.sy,R=D!=null?D*u:C.x,E=(M!=null?M*f:C.y)+L.ty,B=I*(1-_)+R*_,O=P,z=I*_+R*(1-_),H=E),p.setShape({x1:I,y1:P,x2:R,y2:E,cpx1:B,cpy1:O,cpx2:z,cpy2:H}),p.useStyle(m.getItemStyle()),nx(p.style,c,d);var $=""+y.get("value"),X=ie(y,"edgeLabel");de(p,X,{labelFetcher:{getFormattedLabel:function(pt,xt,gt,rt,yt,st){return t.getFormattedLabel(pt,xt,"edge",rt,Ur(yt,X.normal&&X.normal.get("formatter"),$),st)}},labelDataIndex:d.dataIndex,defaultText:$}),p.setTextConfig({position:"inside"});var Q=y.getModel("emphasis");ce(p,y,"lineStyle",function(pt){var xt=pt.getItemStyle();return nx(xt,c,d),xt}),s.add(p),v.setItemGraphicEl(d.dataIndex,p);var j=Q.get("focus");$t(p,j==="adjacency"?d.getAdjacentDataIndices():j==="trajectory"?d.getTrajectoryDataIndices():j,Q.get("blurScope"),Q.get("disabled"))}),o.eachNode(function(d){var p=d.getLayout(),g=d.getModel(),y=g.get("localX"),m=g.get("localY"),_=g.getModel("emphasis"),S=new bt({shape:{x:y!=null?y*u:p.x,y:m!=null?m*f:p.y,width:p.dx,height:p.dy},style:g.getModel("itemStyle").getItemStyle(),z2:10});de(S,ie(g),{labelFetcher:{getFormattedLabel:function(x,b){return t.getFormattedLabel(x,b,"node")}},labelDataIndex:d.dataIndex,defaultText:d.id}),S.disableLabelAnimation=!0,S.setStyle("fill",d.getVisual("color")),S.setStyle("decal",d.getVisual("style").decal),ce(S,g),s.add(S),h.setItemGraphicEl(d.dataIndex,S),it(S).dataType="node";var w=_.get("focus");$t(S,w==="adjacency"?d.getAdjacentDataIndices():w==="trajectory"?d.getTrajectoryDataIndices():w,_.get("blurScope"),_.get("disabled"))}),h.eachItemGraphicEl(function(d,p){var g=h.getItemModel(p);g.get("draggable")&&(d.drift=function(y,m){i._focusAdjacencyDisabled=!0,this.shape.x+=y,this.shape.y+=m,this.dirty(),n.dispatchAction({type:"dragNode",seriesId:t.id,dataIndex:h.getRawIndex(p),localX:this.shape.x/u,localY:this.shape.y/f})},d.ondragend=function(){i._focusAdjacencyDisabled=!1},d.draggable=!0,d.cursor="move")}),!this._data&&t.isAnimationEnabled()&&s.setClipPath(D9(s.getBoundingRect(),t,function(){s.removeClipPath()})),this._data=t.getData()},e.prototype.dispose=function(){},e.type="sankey",e}(zt);function nx(r,e,t){switch(r.fill){case"source":r.fill=t.node1.getVisual("color"),r.decal=t.node1.getVisual("style").decal;break;case"target":r.fill=t.node2.getVisual("color"),r.decal=t.node2.getVisual("style").decal;break;case"gradient":var a=t.node1.getVisual("color"),n=t.node2.getVisual("color");U(a)&&U(n)&&(r.fill=new Cl(0,0,+(e==="horizontal"),+(e==="vertical"),[{color:a,offset:0},{color:n,offset:1}]))}}function D9(r,e,t){var a=new bt({shape:{x:r.x-10,y:r.y-10,width:0,height:r.height+20}});return Ft(a,{shape:{width:r.width+20}},e,t),a}var M9=A9,L9=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.getInitialData=function(t,a){var n=t.edges||t.links,i=t.data||t.nodes,o=t.levels;this.levelModels=[];for(var s=this.levelModels,l=0;l=0&&(s[o[l].depth]=new Vt(o[l],this,a));if(i&&n){var u=ZD(i,n,this,!0,f);return u.data}function f(h,v){h.wrapMethod("getItemModel",function(c,d){var p=c.parentModel,g=p.getData().getItemLayout(d);if(g){var y=g.depth,m=p.levelModels[y];m&&(c.parentModel=m)}return c}),v.wrapMethod("getItemModel",function(c,d){var p=c.parentModel,g=p.getGraph().getEdgeByIndex(d),y=g.node1.getLayout();if(y){var m=y.depth,_=p.levelModels[m];_&&(c.parentModel=_)}return c})}},e.prototype.setNodePosition=function(t,a){var n=this.option.data||this.option.nodes,i=n[t];i.localX=a[0],i.localY=a[1]},e.prototype.getGraph=function(){return this.getData().graph},e.prototype.getEdgeData=function(){return this.getGraph().edgeData},e.prototype.formatTooltip=function(t,a,n){function i(c){return isNaN(c)||c==null}if(n==="edge"){var o=this.getDataParams(t,n),s=o.data,l=o.value,u=s.source+" -- "+s.target;return oe("nameValue",{name:u,value:l,noValue:i(l)})}else{var f=this.getGraph().getNodeByIndex(t),h=f.getLayout().value,v=this.getDataParams(t,n).data.name;return oe("nameValue",{name:v!=null?v+"":null,value:h,noValue:i(h)})}},e.prototype.optionUpdated=function(){},e.prototype.getDataParams=function(t,a){var n=r.prototype.getDataParams.call(this,t,a);if(n.value==null&&a==="node"){var i=this.getGraph().getNodeByIndex(t),o=i.getLayout().value;n.value=o}return n},e.type="series.sankey",e.defaultOption={z:2,coordinateSystem:"view",left:"5%",top:"5%",right:"20%",bottom:"5%",orient:"horizontal",nodeWidth:20,nodeGap:8,draggable:!0,layoutIterations:32,label:{show:!0,position:"right",fontSize:12},edgeLabel:{show:!1,fontSize:12},levels:[],nodeAlign:"justify",lineStyle:{color:"#314656",opacity:.2,curveness:.5},emphasis:{label:{show:!0},lineStyle:{opacity:.5}},select:{itemStyle:{borderColor:"#212121"}},animationEasing:"linear",animationDuration:1e3},e}(Ht),I9=L9;function P9(r,e){r.eachSeriesByType("sankey",function(t){var a=t.get("nodeWidth"),n=t.get("nodeGap"),i=R9(t,e);t.layoutInfo=i;var o=i.width,s=i.height,l=t.getGraph(),u=l.nodes,f=l.edges;k9(u);var h=Et(u,function(p){return p.getLayout().value===0}),v=h.length!==0?0:t.get("layoutIterations"),c=t.get("orient"),d=t.get("nodeAlign");E9(u,f,a,n,o,s,v,c,d)})}function R9(r,e){return re(r.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}function E9(r,e,t,a,n,i,o,s,l){O9(r,e,t,n,i,s,l),z9(r,e,i,n,a,o,s),X9(r,s)}function k9(r){A(r,function(e){var t=ja(e.outEdges,Jf),a=ja(e.inEdges,Jf),n=e.getValue()||0,i=Math.max(t,a,n);e.setLayout({value:i},!0)})}function O9(r,e,t,a,n,i,o){for(var s=[],l=[],u=[],f=[],h=0,v=0;v=0;y&&g.depth>c&&(c=g.depth),p.setLayout({depth:y?g.depth:h},!0),i==="vertical"?p.setLayout({dy:t},!0):p.setLayout({dx:t},!0);for(var m=0;mh-1?c:h-1;o&&o!=="left"&&B9(r,o,i,b);var C=i==="vertical"?(n-t)/b:(a-t)/b;V9(r,C,i)}function dM(r){var e=r.hostGraph.data.getRawDataItem(r.dataIndex);return e.depth!=null&&e.depth>=0}function B9(r,e,t,a){if(e==="right"){for(var n=[],i=r,o=0;i.length;){for(var s=0;s0;i--)l*=.99,H9(s,l,o),Fc(s,n,t,a,o),Z9(s,l,o),Fc(s,n,t,a,o)}function F9(r,e){var t=[],a=e==="vertical"?"y":"x",n=Xd(r,function(i){return i.getLayout()[a]});return n.keys.sort(function(i,o){return i-o}),A(n.keys,function(i){t.push(n.buckets.get(i))}),t}function G9(r,e,t,a,n,i){var o=1/0;A(r,function(s){var l=s.length,u=0;A(s,function(h){u+=h.getLayout().value});var f=i==="vertical"?(a-(l-1)*n)/u:(t-(l-1)*n)/u;f0&&(s=l.getLayout()[i]+u,n==="vertical"?l.setLayout({x:s},!0):l.setLayout({y:s},!0)),f=l.getLayout()[i]+l.getLayout()[v]+e;var d=n==="vertical"?a:t;if(u=f-e-d,u>0){s=l.getLayout()[i]-u,n==="vertical"?l.setLayout({x:s},!0):l.setLayout({y:s},!0),f=s;for(var c=h-2;c>=0;--c)l=o[c],u=l.getLayout()[i]+l.getLayout()[v]+e-f,u>0&&(s=l.getLayout()[i]-u,n==="vertical"?l.setLayout({x:s},!0):l.setLayout({y:s},!0)),f=l.getLayout()[i]}})}function H9(r,e,t){A(r.slice().reverse(),function(a){A(a,function(n){if(n.outEdges.length){var i=ja(n.outEdges,W9,t)/ja(n.outEdges,Jf);if(isNaN(i)){var o=n.outEdges.length;i=o?ja(n.outEdges,$9,t)/o:0}if(t==="vertical"){var s=n.getLayout().x+(i-sn(n,t))*e;n.setLayout({x:s},!0)}else{var l=n.getLayout().y+(i-sn(n,t))*e;n.setLayout({y:l},!0)}}})})}function W9(r,e){return sn(r.node2,e)*r.getValue()}function $9(r,e){return sn(r.node2,e)}function U9(r,e){return sn(r.node1,e)*r.getValue()}function Y9(r,e){return sn(r.node1,e)}function sn(r,e){return e==="vertical"?r.getLayout().x+r.getLayout().dx/2:r.getLayout().y+r.getLayout().dy/2}function Jf(r){return r.getValue()}function ja(r,e,t){for(var a=0,n=r.length,i=-1;++io&&(o=l)}),A(a,function(s){var l=new ve({type:"color",mappingMethod:"linear",dataExtent:[i,o],visual:e.get("color")}),u=l.mapValueToVisual(s.getLayout().value),f=s.getModel().get(["itemStyle","color"]);f!=null?(s.setVisual("color",f),s.setVisual("style",{fill:f})):(s.setVisual("color",u),s.setVisual("style",{fill:u}))})}n.length&&A(n,function(s){var l=s.getModel().get("lineStyle");s.setVisual("style",l)})})}function K9(r){r.registerChartView(M9),r.registerSeriesModel(I9),r.registerLayout(P9),r.registerVisual(q9),r.registerAction({type:"dragNode",event:"dragnode",update:"update"},function(e,t){t.eachComponent({mainType:"series",subType:"sankey",query:e},function(a){a.setNodePosition(e.dataIndex,[e.localX,e.localY])})})}var pM=function(){function r(){}return r.prototype.getInitialData=function(e,t){var a,n=t.getComponent("xAxis",this.get("xAxisIndex")),i=t.getComponent("yAxis",this.get("yAxisIndex")),o=n.get("type"),s=i.get("type"),l;o==="category"?(e.layout="horizontal",a=n.getOrdinalMeta(),l=!0):s==="category"?(e.layout="vertical",a=i.getOrdinalMeta(),l=!0):e.layout=e.layout||"horizontal";var u=["x","y"],f=e.layout==="horizontal"?0:1,h=this._baseAxisDim=u[f],v=u[1-f],c=[n,i],d=c[f].get("type"),p=c[1-f].get("type"),g=e.data;if(g&&l){var y=[];A(g,function(S,w){var x;F(S)?(x=S.slice(),S.unshift(w)):F(S.value)?(x=V({},S),x.value=x.value.slice(),S.value.unshift(w)):x=S,y.push(x)}),e.data=y}var m=this.defaultValueDimensions,_=[{name:h,type:Ff(d),ordinalMeta:a,otherDims:{tooltip:!1,itemName:0},dimsDef:["base"]},{name:v,type:Ff(p),dimsDef:m.slice()}];return No(this,{coordDimensions:_,dimensionsCount:m.length+1,encodeDefaulter:ot(QC,_,this)})},r.prototype.getBaseAxis=function(){var e=this._baseAxisDim;return this.ecModel.getComponent(e+"Axis",this.get(e+"AxisIndex")).axis},r}(),gM=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t.defaultValueDimensions=[{name:"min",defaultTooltip:!0},{name:"Q1",defaultTooltip:!0},{name:"median",defaultTooltip:!0},{name:"Q3",defaultTooltip:!0},{name:"max",defaultTooltip:!0}],t.visualDrawType="stroke",t}return e.type="series.boxplot",e.dependencies=["xAxis","yAxis","grid"],e.defaultOption={z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,layout:null,boxWidth:[7,50],itemStyle:{color:"#fff",borderWidth:1},emphasis:{scale:!0,itemStyle:{borderWidth:2,shadowBlur:5,shadowOffsetX:1,shadowOffsetY:1,shadowColor:"rgba(0,0,0,0.2)"}},animationDuration:800},e}(Ht);te(gM,pM,!0);var J9=gM,Q9=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.render=function(t,a,n){var i=t.getData(),o=this.group,s=this._data;this._data||o.removeAll();var l=t.get("layout")==="horizontal"?1:0;i.diff(s).add(function(u){if(i.hasValue(u)){var f=i.getItemLayout(u),h=ix(f,i,u,l,!0);i.setItemGraphicEl(u,h),o.add(h)}}).update(function(u,f){var h=s.getItemGraphicEl(f);if(!i.hasValue(u)){o.remove(h);return}var v=i.getItemLayout(u);h?(Ar(h),yM(v,h,i,u)):h=ix(v,i,u,l),o.add(h),i.setItemGraphicEl(u,h)}).remove(function(u){var f=s.getItemGraphicEl(u);f&&o.remove(f)}).execute(),this._data=i},e.prototype.remove=function(t){var a=this.group,n=this._data;this._data=null,n&&n.eachItemGraphicEl(function(i){i&&a.remove(i)})},e.type="boxplot",e}(zt),j9=function(){function r(){}return r}(),tG=function(r){k(e,r);function e(t){var a=r.call(this,t)||this;return a.type="boxplotBoxPath",a}return e.prototype.getDefaultShape=function(){return new j9},e.prototype.buildPath=function(t,a){var n=a.points,i=0;for(t.moveTo(n[i][0],n[i][1]),i++;i<4;i++)t.lineTo(n[i][0],n[i][1]);for(t.closePath();ip){var S=[y,_];a.push(S)}}}return{boxData:t,outliers:a}}var lG={type:"echarts:boxplot",transform:function(e){var t=e.upstream;if(t.sourceFormat!==xe){var a="";Pt(a)}var n=sG(t.getRawData(),e.config);return[{dimensions:["ItemName","Low","Q1","Q2","Q3","High"],data:n.boxData},{data:n.outliers}]}};function uG(r){r.registerSeriesModel(J9),r.registerChartView(rG),r.registerLayout(aG),r.registerTransform(lG)}var fG=["color","borderColor"],hG=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.render=function(t,a,n){this.group.removeClipPath(),this._progressiveEls=null,this._updateDrawMode(t),this._isLargeDraw?this._renderLarge(t):this._renderNormal(t)},e.prototype.incrementalPrepareRender=function(t,a,n){this._clear(),this._updateDrawMode(t)},e.prototype.incrementalRender=function(t,a,n,i){this._progressiveEls=[],this._isLargeDraw?this._incrementalRenderLarge(t,a):this._incrementalRenderNormal(t,a)},e.prototype.eachRendered=function(t){vn(this._progressiveEls||this.group,t)},e.prototype._updateDrawMode=function(t){var a=t.pipelineContext.large;(this._isLargeDraw==null||a!==this._isLargeDraw)&&(this._isLargeDraw=a,this._clear())},e.prototype._renderNormal=function(t){var a=t.getData(),n=this._data,i=this.group,o=a.getLayout("isSimpleBox"),s=t.get("clip",!0),l=t.coordinateSystem,u=l.getArea&&l.getArea();this._data||i.removeAll(),a.diff(n).add(function(f){if(a.hasValue(f)){var h=a.getItemLayout(f);if(s&&ox(u,h))return;var v=Gc(h,f,!0);Ft(v,{shape:{points:h.ends}},t,f),Hc(v,a,f,o),i.add(v),a.setItemGraphicEl(f,v)}}).update(function(f,h){var v=n.getItemGraphicEl(h);if(!a.hasValue(f)){i.remove(v);return}var c=a.getItemLayout(f);if(s&&ox(u,c)){i.remove(v);return}v?(Lt(v,{shape:{points:c.ends}},t,f),Ar(v)):v=Gc(c),Hc(v,a,f,o),i.add(v),a.setItemGraphicEl(f,v)}).remove(function(f){var h=n.getItemGraphicEl(f);h&&i.remove(h)}).execute(),this._data=a},e.prototype._renderLarge=function(t){this._clear(),sx(t,this.group);var a=t.get("clip",!0)?Wh(t.coordinateSystem,!1,t):null;a?this.group.setClipPath(a):this.group.removeClipPath()},e.prototype._incrementalRenderNormal=function(t,a){for(var n=a.getData(),i=n.getLayout("isSimpleBox"),o;(o=t.next())!=null;){var s=n.getItemLayout(o),l=Gc(s);Hc(l,n,o,i),l.incremental=!0,this.group.add(l),this._progressiveEls.push(l)}},e.prototype._incrementalRenderLarge=function(t,a){sx(a,this.group,this._progressiveEls,!0)},e.prototype.remove=function(t){this._clear()},e.prototype._clear=function(){this.group.removeAll(),this._data=null},e.type="candlestick",e}(zt),vG=function(){function r(){}return r}(),cG=function(r){k(e,r);function e(t){var a=r.call(this,t)||this;return a.type="normalCandlestickBox",a}return e.prototype.getDefaultShape=function(){return new vG},e.prototype.buildPath=function(t,a){var n=a.points;this.__simpleBox?(t.moveTo(n[4][0],n[4][1]),t.lineTo(n[6][0],n[6][1])):(t.moveTo(n[0][0],n[0][1]),t.lineTo(n[1][0],n[1][1]),t.lineTo(n[2][0],n[2][1]),t.lineTo(n[3][0],n[3][1]),t.closePath(),t.moveTo(n[4][0],n[4][1]),t.lineTo(n[5][0],n[5][1]),t.moveTo(n[6][0],n[6][1]),t.lineTo(n[7][0],n[7][1]))},e}(mt);function Gc(r,e,t){var a=r.ends;return new cG({shape:{points:t?dG(a,r):a},z2:100})}function ox(r,e){for(var t=!0,a=0;a0?"borderColor":"borderColor0"])||t.get(["itemStyle",r>0?"color":"color0"]);r===0&&(n=t.get(["itemStyle","borderColorDoji"]));var i=t.getModel("itemStyle").getItemStyle(fG);e.useStyle(i),e.style.fill=null,e.style.stroke=n}var gG=hG,mM=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t.defaultValueDimensions=[{name:"open",defaultTooltip:!0},{name:"close",defaultTooltip:!0},{name:"lowest",defaultTooltip:!0},{name:"highest",defaultTooltip:!0}],t}return e.prototype.getShadowDim=function(){return"open"},e.prototype.brushSelector=function(t,a,n){var i=a.getItemLayout(t);return i&&n.rect(i.brushRect)},e.type="series.candlestick",e.dependencies=["xAxis","yAxis","grid"],e.defaultOption={z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,layout:null,clip:!0,itemStyle:{color:"#eb5454",color0:"#47b262",borderColor:"#eb5454",borderColor0:"#47b262",borderColorDoji:null,borderWidth:1},emphasis:{scale:!0,itemStyle:{borderWidth:2}},barMaxWidth:null,barMinWidth:null,barWidth:null,large:!0,largeThreshold:600,progressive:3e3,progressiveThreshold:1e4,progressiveChunkMode:"mod",animationEasing:"linear",animationDuration:300},e}(Ht);te(mM,pM,!0);var yG=mM;function mG(r){!r||!F(r.series)||A(r.series,function(e){et(e)&&e.type==="k"&&(e.type="candlestick")})}var _G=["itemStyle","borderColor"],SG=["itemStyle","borderColor0"],xG=["itemStyle","borderColorDoji"],wG=["itemStyle","color"],bG=["itemStyle","color0"],CG={seriesType:"candlestick",plan:ko(),performRawSeries:!0,reset:function(r,e){function t(i,o){return o.get(i>0?wG:bG)}function a(i,o){return o.get(i===0?xG:i>0?_G:SG)}if(!e.isSeriesFiltered(r)){var n=r.pipelineContext.large;return!n&&{progress:function(i,o){for(var s;(s=i.next())!=null;){var l=o.getItemModel(s),u=o.getItemLayout(s).sign,f=l.getItemStyle();f.fill=t(u,l),f.stroke=a(u,l)||f.fill;var h=o.ensureUniqueItemVisual(s,"style");V(h,f)}}}}}},TG=CG,AG={seriesType:"candlestick",plan:ko(),reset:function(r){var e=r.coordinateSystem,t=r.getData(),a=DG(r,t),n=0,i=1,o=["x","y"],s=t.getDimensionIndex(t.mapDimension(o[n])),l=G(t.mapDimensionsAll(o[i]),t.getDimensionIndex,t),u=l[0],f=l[1],h=l[2],v=l[3];if(t.setLayout({candleWidth:a,isSimpleBox:a<=1.3}),s<0||l.length<4)return;return{progress:r.pipelineContext.large?d:c};function c(p,g){for(var y,m=g.getStore();(y=p.next())!=null;){var _=m.get(s,y),S=m.get(u,y),w=m.get(f,y),x=m.get(h,y),b=m.get(v,y),C=Math.min(S,w),T=Math.max(S,w),D=B(C,_),M=B(T,_),L=B(x,_),I=B(b,_),P=[];O(P,M,0),O(P,D,1),P.push(H(I),H(M),H(L),H(D));var R=g.getItemModel(y),E=!!R.get(["itemStyle","borderColorDoji"]);g.setItemLayout(y,{sign:lx(m,y,S,w,f,E),initBaseline:S>w?M[i]:D[i],ends:P,brushRect:z(x,b,_)})}function B($,X){var Q=[];return Q[n]=X,Q[i]=$,isNaN(X)||isNaN($)?[NaN,NaN]:e.dataToPoint(Q)}function O($,X,Q){var j=X.slice(),pt=X.slice();j[n]=af(j[n]+a/2,1,!1),pt[n]=af(pt[n]-a/2,1,!0),Q?$.push(j,pt):$.push(pt,j)}function z($,X,Q){var j=B($,Q),pt=B(X,Q);return j[n]-=a/2,pt[n]-=a/2,{x:j[0],y:j[1],width:a,height:pt[1]-j[1]}}function H($){return $[n]=af($[n],1),$}}function d(p,g){for(var y=Wr(p.count*4),m=0,_,S=[],w=[],x,b=g.getStore(),C=!!r.get(["itemStyle","borderColorDoji"]);(x=p.next())!=null;){var T=b.get(s,x),D=b.get(u,x),M=b.get(f,x),L=b.get(h,x),I=b.get(v,x);if(isNaN(T)||isNaN(L)||isNaN(I)){y[m++]=NaN,m+=3;continue}y[m++]=lx(b,x,D,M,f,C),S[n]=T,S[i]=L,_=e.dataToPoint(S,null,w),y[m++]=_?_[0]:NaN,y[m++]=_?_[1]:NaN,S[i]=I,_=e.dataToPoint(S,null,w),y[m++]=_?_[1]:NaN}g.setLayout("largePoints",y)}}};function lx(r,e,t,a,n,i){var o;return t>a?o=-1:t0?r.get(n,e-1)<=a?1:-1:1,o}function DG(r,e){var t=r.getBaseAxis(),a,n=t.type==="category"?t.getBandWidth():(a=t.getExtent(),Math.abs(a[1]-a[0])/e.count()),i=W(ft(r.get("barMaxWidth"),n),n),o=W(ft(r.get("barMinWidth"),1),n),s=r.get("barWidth");return s!=null?W(s,n):Math.max(Math.min(n/2,i),o)}var MG=AG;function LG(r){r.registerChartView(gG),r.registerSeriesModel(yG),r.registerPreprocessor(mG),r.registerVisual(TG),r.registerLayout(MG)}function ux(r,e){var t=e.rippleEffectColor||e.color;r.eachChild(function(a){a.attr({z:e.z,zlevel:e.zlevel,style:{stroke:e.brushType==="stroke"?t:null,fill:e.brushType==="fill"?t:null}})})}var IG=function(r){k(e,r);function e(t,a){var n=r.call(this)||this,i=new El(t,a),o=new nt;return n.add(i),n.add(o),n.updateData(t,a),n}return e.prototype.stopEffectAnimation=function(){this.childAt(1).removeAll()},e.prototype.startEffectAnimation=function(t){for(var a=t.symbolType,n=t.color,i=t.rippleNumber,o=this.childAt(1),s=0;s0&&(s=this._getLineLength(i)/f*1e3),s!==this._period||l!==this._loop||u!==this._roundTrip){i.stopAnimation();var v=void 0;J(h)?v=h(n):v=h,i.__t>0&&(v=-s*i.__t),this._animateSymbol(i,s,v,l,u)}this._period=s,this._loop=l,this._roundTrip=u}},e.prototype._animateSymbol=function(t,a,n,i,o){if(a>0){t.__t=0;var s=this,l=t.animate("",i).when(o?a*2:a,{__t:o?2:1}).delay(n).during(function(){s._updateSymbolPosition(t)});i||l.done(function(){s.remove(t)}),l.start()}},e.prototype._getLineLength=function(t){return Ga(t.__p1,t.__cp1)+Ga(t.__cp1,t.__p2)},e.prototype._updateAnimationPoints=function(t,a){t.__p1=a[0],t.__p2=a[1],t.__cp1=a[2]||[(a[0][0]+a[1][0])/2,(a[0][1]+a[1][1])/2]},e.prototype.updateData=function(t,a,n){this.childAt(0).updateData(t,a,n),this._updateEffectSymbol(t,a)},e.prototype._updateSymbolPosition=function(t){var a=t.__p1,n=t.__p2,i=t.__cp1,o=t.__t<1?t.__t:2-t.__t,s=[t.x,t.y],l=s.slice(),u=se,f=Od;s[0]=u(a[0],i[0],n[0],o),s[1]=u(a[1],i[1],n[1],o);var h=t.__t<1?f(a[0],i[0],n[0],o):f(n[0],i[0],a[0],1-o),v=t.__t<1?f(a[1],i[1],n[1],o):f(n[1],i[1],a[1],1-o);t.rotation=-Math.atan2(v,h)-Math.PI/2,(this._symbolType==="line"||this._symbolType==="rect"||this._symbolType==="roundRect")&&(t.__lastT!==void 0&&t.__lastT=0&&!(i[l]<=a);l--);l=Math.min(l,o-2)}else{for(l=s;la);l++);l=Math.min(l-1,o-2)}var f=(a-i[l])/(i[l+1]-i[l]),h=n[l],v=n[l+1];t.x=h[0]*(1-f)+f*v[0],t.y=h[1]*(1-f)+f*v[1];var c=t.__t<1?v[0]-h[0]:h[0]-v[0],d=t.__t<1?v[1]-h[1]:h[1]-v[1];t.rotation=-Math.atan2(d,c)-Math.PI/2,this._lastFrame=l,this._lastFramePercent=a,t.ignore=!1}},e}(_M),FG=zG,GG=function(){function r(){this.polyline=!1,this.curveness=0,this.segs=[]}return r}(),HG=function(r){k(e,r);function e(t){var a=r.call(this,t)||this;return a._off=0,a.hoverDataIdx=-1,a}return e.prototype.reset=function(){this.notClear=!1,this._off=0},e.prototype.getDefaultStyle=function(){return{stroke:"#000",fill:null}},e.prototype.getDefaultShape=function(){return new GG},e.prototype.buildPath=function(t,a){var n=a.segs,i=a.curveness,o;if(a.polyline)for(o=this._off;o0){t.moveTo(n[o++],n[o++]);for(var l=1;l0){var c=(u+h)/2-(f-v)*i,d=(f+v)/2-(h-u)*i;t.quadraticCurveTo(c,d,h,v)}else t.lineTo(h,v)}this.incremental&&(this._off=o,this.notClear=!0)},e.prototype.findDataIndex=function(t,a){var n=this.shape,i=n.segs,o=n.curveness,s=this.style.lineWidth;if(n.polyline)for(var l=0,u=0;u0)for(var h=i[u++],v=i[u++],c=1;c0){var g=(h+d)/2-(v-p)*o,y=(v+p)/2-(d-h)*o;if(V2(h,v,g,y,d,p,s,t,a))return l}else if(za(h,v,d,p,s,t,a))return l;l++}return-1},e.prototype.contain=function(t,a){var n=this.transformCoordToLocal(t,a),i=this.getBoundingRect();if(t=n[0],a=n[1],i.contain(t,a)){var o=this.hoverDataIdx=this.findDataIndex(t,a);return o>=0}return this.hoverDataIdx=-1,!1},e.prototype.getBoundingRect=function(){var t=this._rect;if(!t){for(var a=this.shape,n=a.segs,i=1/0,o=1/0,s=-1/0,l=-1/0,u=0;u0&&(o.dataIndex=l+e.__startIndex)})},r.prototype._clear=function(){this._newAdded=[],this.group.removeAll()},r}(),$G=WG,UG={seriesType:"lines",plan:ko(),reset:function(r){var e=r.coordinateSystem;if(!!e){var t=r.get("polyline"),a=r.pipelineContext.large;return{progress:function(n,i){var o=[];if(a){var s=void 0,l=n.end-n.start;if(t){for(var u=0,f=n.start;f0&&(f||u.configLayer(s,{motionBlur:!0,lastFrameAlpha:Math.max(Math.min(l/10+.9,1),0)})),o.updateData(i);var h=t.get("clip",!0)&&Wh(t.coordinateSystem,!1,t);h?this.group.setClipPath(h):this.group.removeClipPath(),this._lastZlevel=s,this._finished=!0},e.prototype.incrementalPrepareRender=function(t,a,n){var i=t.getData(),o=this._updateLineDraw(i,t);o.incrementalPrepareUpdate(i),this._clearLayer(n),this._finished=!1},e.prototype.incrementalRender=function(t,a,n){this._lineDraw.incrementalUpdate(t,a.getData()),this._finished=t.end===a.getData().count()},e.prototype.eachRendered=function(t){this._lineDraw&&this._lineDraw.eachRendered(t)},e.prototype.updateTransform=function(t,a,n){var i=t.getData(),o=t.pipelineContext;if(!this._finished||o.large||o.progressiveRender)return{update:!0};var s=xM.reset(t,a,n);s.progress&&s.progress({start:0,end:i.count(),count:i.count()},i),this._lineDraw.updateLayout(),this._clearLayer(n)},e.prototype._updateLineDraw=function(t,a){var n=this._lineDraw,i=this._showEffect(a),o=!!a.get("polyline"),s=a.pipelineContext,l=s.large;return(!n||i!==this._hasEffet||o!==this._isPolyline||l!==this._isLargeDraw)&&(n&&n.remove(),n=this._lineDraw=l?new $G:new zy(o?i?FG:SM:i?_M:Vy),this._hasEffet=i,this._isPolyline=o,this._isLargeDraw=l),this.group.add(n.group),n},e.prototype._showEffect=function(t){return!!t.get(["effect","show"])},e.prototype._clearLayer=function(t){var a=t.getZr(),n=a.painter.getType()==="svg";!n&&this._lastZlevel!=null&&a.painter.getLayer(this._lastZlevel).clear(!0)},e.prototype.remove=function(t,a){this._lineDraw&&this._lineDraw.remove(),this._lineDraw=null,this._clearLayer(a)},e.prototype.dispose=function(t,a){this.remove(t,a)},e.type="lines",e}(zt),ZG=YG,XG=typeof Uint32Array=="undefined"?Array:Uint32Array,qG=typeof Float64Array=="undefined"?Array:Float64Array;function fx(r){var e=r.data;e&&e[0]&&e[0][0]&&e[0][0].coord&&(r.data=G(e,function(t){var a=[t[0].coord,t[1].coord],n={coords:a};return t[0].name&&(n.fromName=t[0].name),t[1].name&&(n.toName=t[1].name),_g([n,t[0],t[1]])}))}var KG=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t.visualStyleAccessPath="lineStyle",t.visualDrawType="stroke",t}return e.prototype.init=function(t){t.data=t.data||[],fx(t);var a=this._processFlatCoordsArray(t.data);this._flatCoords=a.flatCoords,this._flatCoordsOffset=a.flatCoordsOffset,a.flatCoords&&(t.data=new Float32Array(a.count)),r.prototype.init.apply(this,arguments)},e.prototype.mergeOption=function(t){if(fx(t),t.data){var a=this._processFlatCoordsArray(t.data);this._flatCoords=a.flatCoords,this._flatCoordsOffset=a.flatCoordsOffset,a.flatCoords&&(t.data=new Float32Array(a.count))}r.prototype.mergeOption.apply(this,arguments)},e.prototype.appendData=function(t){var a=this._processFlatCoordsArray(t.data);a.flatCoords&&(this._flatCoords?(this._flatCoords=gf(this._flatCoords,a.flatCoords),this._flatCoordsOffset=gf(this._flatCoordsOffset,a.flatCoordsOffset)):(this._flatCoords=a.flatCoords,this._flatCoordsOffset=a.flatCoordsOffset),t.data=new Float32Array(a.count)),this.getRawData().appendData(t.data)},e.prototype._getCoordsFromItemModel=function(t){var a=this.getData().getItemModel(t),n=a.option instanceof Array?a.option:a.getShallow("coords");return n},e.prototype.getLineCoordsCount=function(t){return this._flatCoordsOffset?this._flatCoordsOffset[t*2+1]:this._getCoordsFromItemModel(t).length},e.prototype.getLineCoords=function(t,a){if(this._flatCoordsOffset){for(var n=this._flatCoordsOffset[t*2],i=this._flatCoordsOffset[t*2+1],o=0;o ")})},e.prototype.preventIncremental=function(){return!!this.get(["effect","show"])},e.prototype.getProgressive=function(){var t=this.option.progressive;return t==null?this.option.large?1e4:this.get("progressive"):t},e.prototype.getProgressiveThreshold=function(){var t=this.option.progressiveThreshold;return t==null?this.option.large?2e4:this.get("progressiveThreshold"):t},e.prototype.getZLevelKey=function(){var t=this.getModel("effect"),a=t.get("trailLength");return this.getData().count()>this.getProgressiveThreshold()?this.id:t.get("show")&&a>0?a+"":""},e.type="series.lines",e.dependencies=["grid","polar","geo","calendar"],e.defaultOption={coordinateSystem:"geo",z:2,legendHoverLink:!0,xAxisIndex:0,yAxisIndex:0,symbol:["none","none"],symbolSize:[10,10],geoIndex:0,effect:{show:!1,period:4,constantSpeed:0,symbol:"circle",symbolSize:3,loop:!0,trailLength:.2},large:!1,largeThreshold:2e3,polyline:!1,clip:!0,label:{show:!1,position:"end"},lineStyle:{opacity:.5}},e}(Ht),JG=KG;function ku(r){return r instanceof Array||(r=[r,r]),r}var QG={seriesType:"lines",reset:function(r){var e=ku(r.get("symbol")),t=ku(r.get("symbolSize")),a=r.getData();a.setVisual("fromSymbol",e&&e[0]),a.setVisual("toSymbol",e&&e[1]),a.setVisual("fromSymbolSize",t&&t[0]),a.setVisual("toSymbolSize",t&&t[1]);function n(i,o){var s=i.getItemModel(o),l=ku(s.getShallow("symbol",!0)),u=ku(s.getShallow("symbolSize",!0));l[0]&&i.setItemVisual(o,"fromSymbol",l[0]),l[1]&&i.setItemVisual(o,"toSymbol",l[1]),u[0]&&i.setItemVisual(o,"fromSymbolSize",u[0]),u[1]&&i.setItemVisual(o,"toSymbolSize",u[1])}return{dataEach:a.hasItemOption?n:null}}},jG=QG;function tH(r){r.registerChartView(ZG),r.registerSeriesModel(JG),r.registerLayout(xM),r.registerVisual(jG)}var eH=256,rH=function(){function r(){this.blurSize=30,this.pointSize=20,this.maxOpacity=1,this.minOpacity=0,this._gradientPixels={inRange:null,outOfRange:null};var e=ga.createCanvas();this.canvas=e}return r.prototype.update=function(e,t,a,n,i,o){var s=this._getBrush(),l=this._getGradient(i,"inRange"),u=this._getGradient(i,"outOfRange"),f=this.pointSize+this.blurSize,h=this.canvas,v=h.getContext("2d"),c=e.length;h.width=t,h.height=a;for(var d=0;d0){var L=o(_)?l:u;_>0&&(_=_*D+C),w[x++]=L[M],w[x++]=L[M+1],w[x++]=L[M+2],w[x++]=L[M+3]*_*256}else x+=4}return v.putImageData(S,0,0),h},r.prototype._getBrush=function(){var e=this._brushCanvas||(this._brushCanvas=ga.createCanvas()),t=this.pointSize+this.blurSize,a=t*2;e.width=a,e.height=a;var n=e.getContext("2d");return n.clearRect(0,0,a,a),n.shadowOffsetX=a,n.shadowBlur=this.blurSize,n.shadowColor="#000",n.beginPath(),n.arc(-t,t,this.pointSize,0,Math.PI*2,!0),n.closePath(),n.fill(),e},r.prototype._getGradient=function(e,t){for(var a=this._gradientPixels,n=a[t]||(a[t]=new Uint8ClampedArray(256*4)),i=[0,0,0,0],o=0,s=0;s<256;s++)e[t](s/255,!0,i),n[o++]=i[0],n[o++]=i[1],n[o++]=i[2],n[o++]=i[3];return n},r}(),aH=rH;function nH(r,e,t){var a=r[1]-r[0];e=G(e,function(o){return{interval:[(o.interval[0]-r[0])/a,(o.interval[1]-r[0])/a]}});var n=e.length,i=0;return function(o){var s;for(s=i;s=0;s--){var l=e[s].interval;if(l[0]<=o&&o<=l[1]){i=s;break}}return s>=0&&s=e[0]&&a<=e[1]}}function hx(r){var e=r.dimensions;return e[0]==="lng"&&e[1]==="lat"}var oH=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.render=function(t,a,n){var i;a.eachComponent("visualMap",function(s){s.eachTargetSeries(function(l){l===t&&(i=s)})}),this._progressiveEls=null,this.group.removeAll();var o=t.coordinateSystem;o.type==="cartesian2d"||o.type==="calendar"?this._renderOnCartesianAndCalendar(t,n,0,t.getData().count()):hx(o)&&this._renderOnGeo(o,t,i,n)},e.prototype.incrementalPrepareRender=function(t,a,n){this.group.removeAll()},e.prototype.incrementalRender=function(t,a,n,i){var o=a.coordinateSystem;o&&(hx(o)?this.render(a,n,i):(this._progressiveEls=[],this._renderOnCartesianAndCalendar(a,i,t.start,t.end,!0)))},e.prototype.eachRendered=function(t){vn(this._progressiveEls||this.group,t)},e.prototype._renderOnCartesianAndCalendar=function(t,a,n,i,o){var s=t.coordinateSystem,l=Di(s,"cartesian2d"),u,f,h,v;if(l){var c=s.getAxis("x"),d=s.getAxis("y");u=c.getBandWidth()+.5,f=d.getBandWidth()+.5,h=c.scale.getExtent(),v=d.scale.getExtent()}for(var p=this.group,g=t.getData(),y=t.getModel(["emphasis","itemStyle"]).getItemStyle(),m=t.getModel(["blur","itemStyle"]).getItemStyle(),_=t.getModel(["select","itemStyle"]).getItemStyle(),S=t.get(["itemStyle","borderRadius"]),w=ie(t),x=t.getModel("emphasis"),b=x.get("focus"),C=x.get("blurScope"),T=x.get("disabled"),D=l?[g.mapDimension("x"),g.mapDimension("y"),g.mapDimension("value")]:[g.mapDimension("time"),g.mapDimension("value")],M=n;Mh[1]||Rv[1])continue;var E=s.dataToPoint([P,R]);L=new bt({shape:{x:E[0]-u/2,y:E[1]-f/2,width:u,height:f},style:I})}else{if(isNaN(g.get(D[1],M)))continue;L=new bt({z2:1,shape:s.dataToRect([g.get(D[0],M)]).contentShape,style:I})}if(g.hasItemOption){var B=g.getItemModel(M),O=B.getModel("emphasis");y=O.getModel("itemStyle").getItemStyle(),m=B.getModel(["blur","itemStyle"]).getItemStyle(),_=B.getModel(["select","itemStyle"]).getItemStyle(),S=B.get(["itemStyle","borderRadius"]),b=O.get("focus"),C=O.get("blurScope"),T=O.get("disabled"),w=ie(B)}L.shape.r=S;var z=t.getRawValue(M),H="-";z&&z[2]!=null&&(H=z[2]+""),de(L,w,{labelFetcher:t,labelDataIndex:M,defaultOpacity:I.opacity,defaultText:H}),L.ensureState("emphasis").style=y,L.ensureState("blur").style=m,L.ensureState("select").style=_,$t(L,b,C,T),L.incremental=o,o&&(L.states.emphasis.hoverLayer=!0),p.add(L),g.setItemGraphicEl(M,L),this._progressiveEls&&this._progressiveEls.push(L)}},e.prototype._renderOnGeo=function(t,a,n,i){var o=n.targetVisuals.inRange,s=n.targetVisuals.outOfRange,l=a.getData(),u=this._hmLayer||this._hmLayer||new aH;u.blurSize=a.get("blurSize"),u.pointSize=a.get("pointSize"),u.minOpacity=a.get("minOpacity"),u.maxOpacity=a.get("maxOpacity");var f=t.getViewRect().clone(),h=t.getRoamTransform();f.applyTransform(h);var v=Math.max(f.x,0),c=Math.max(f.y,0),d=Math.min(f.width+f.x,i.getWidth()),p=Math.min(f.height+f.y,i.getHeight()),g=d-v,y=p-c,m=[l.mapDimension("lng"),l.mapDimension("lat"),l.mapDimension("value")],_=l.mapArray(m,function(b,C,T){var D=t.dataToPoint([b,C]);return D[0]-=v,D[1]-=c,D.push(T),D}),S=n.getExtent(),w=n.type==="visualMap.continuous"?iH(S,n.option.range):nH(S,n.getPieceList(),n.option.selected);u.update(_,g,y,o.color.getNormalizer(),{inRange:o.color.getColorMapper(),outOfRange:s.color.getColorMapper()},w);var x=new pe({style:{width:g,height:y,x:v,y:c,image:u.canvas},silent:!0});this.group.add(x)},e.type="heatmap",e}(zt),sH=oH,lH=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.getInitialData=function(t,a){return Ta(null,this,{generateCoord:"value"})},e.prototype.preventIncremental=function(){var t=Ml.get(this.get("coordinateSystem"));if(t&&t.dimensions)return t.dimensions[0]==="lng"&&t.dimensions[1]==="lat"},e.type="series.heatmap",e.dependencies=["grid","geo","calendar"],e.defaultOption={coordinateSystem:"cartesian2d",z:2,geoIndex:0,blurSize:30,pointSize:20,maxOpacity:1,minOpacity:0,select:{itemStyle:{borderColor:"#212121"}}},e}(Ht),uH=lH;function fH(r){r.registerChartView(sH),r.registerSeriesModel(uH)}var hH=["itemStyle","borderWidth"],vx=[{xy:"x",wh:"width",index:0,posDesc:["left","right"]},{xy:"y",wh:"height",index:1,posDesc:["top","bottom"]}],Uc=new Qr,vH=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.render=function(t,a,n){var i=this.group,o=t.getData(),s=this._data,l=t.coordinateSystem,u=l.getBaseAxis(),f=u.isHorizontal(),h=l.master.getRect(),v={ecSize:{width:n.getWidth(),height:n.getHeight()},seriesModel:t,coordSys:l,coordSysExtent:[[h.x,h.x+h.width],[h.y,h.y+h.height]],isHorizontal:f,valueDim:vx[+f],categoryDim:vx[1-+f]};return o.diff(s).add(function(c){if(!!o.hasValue(c)){var d=dx(o,c),p=cx(o,c,d,v),g=px(o,v,p);o.setItemGraphicEl(c,g),i.add(g),yx(g,v,p)}}).update(function(c,d){var p=s.getItemGraphicEl(d);if(!o.hasValue(c)){i.remove(p);return}var g=dx(o,c),y=cx(o,c,g,v),m=DM(o,y);p&&m!==p.__pictorialShapeStr&&(i.remove(p),o.setItemGraphicEl(c,null),p=null),p?_H(p,v,y):p=px(o,v,y,!0),o.setItemGraphicEl(c,p),p.__pictorialSymbolMeta=y,i.add(p),yx(p,v,y)}).remove(function(c){var d=s.getItemGraphicEl(c);d&&gx(s,c,d.__pictorialSymbolMeta.animationModel,d)}).execute(),this._data=o,this.group},e.prototype.remove=function(t,a){var n=this.group,i=this._data;t.get("animation")?i&&i.eachItemGraphicEl(function(o){gx(i,it(o).dataIndex,t,o)}):n.removeAll()},e.type="pictorialBar",e}(zt);function cx(r,e,t,a){var n=r.getItemLayout(e),i=t.get("symbolRepeat"),o=t.get("symbolClip"),s=t.get("symbolPosition")||"start",l=t.get("symbolRotate"),u=(l||0)*Math.PI/180||0,f=t.get("symbolPatternSize")||2,h=t.isAnimationEnabled(),v={dataIndex:e,layout:n,itemModel:t,symbolType:r.getItemVisual(e,"symbol")||"circle",style:r.getItemVisual(e,"style"),symbolClip:o,symbolRepeat:i,symbolRepeatDirection:t.get("symbolRepeatDirection"),symbolPatternSize:f,rotation:u,animationModel:h?t:null,hoverScale:h&&t.get(["emphasis","scale"]),z2:t.getShallow("z",!0)||0};cH(t,i,n,a,v),dH(r,e,n,i,o,v.boundingLength,v.pxSign,f,a,v),pH(t,v.symbolScale,u,a,v);var c=v.symbolSize,d=Ti(t.get("symbolOffset"),c);return gH(t,c,n,i,o,d,s,v.valueLineWidth,v.boundingLength,v.repeatCutLength,a,v),v}function cH(r,e,t,a,n){var i=a.valueDim,o=r.get("symbolBoundingData"),s=a.coordSys.getOtherAxis(a.coordSys.getBaseAxis()),l=s.toGlobalCoord(s.dataToCoord(0)),u=1-+(t[i.wh]<=0),f;if(F(o)){var h=[Yc(s,o[0])-l,Yc(s,o[1])-l];h[1]0?1:-1}function Yc(r,e){return r.toGlobalCoord(r.dataToCoord(r.scale.parse(e)))}function dH(r,e,t,a,n,i,o,s,l,u){var f=l.valueDim,h=l.categoryDim,v=Math.abs(t[h.wh]),c=r.getItemVisual(e,"symbolSize"),d;F(c)?d=c.slice():c==null?d=["100%","100%"]:d=[c,c],d[h.index]=W(d[h.index],v),d[f.index]=W(d[f.index],a?v:Math.abs(i)),u.symbolSize=d;var p=u.symbolScale=[d[0]/s,d[1]/s];p[f.index]*=(l.isHorizontal?-1:1)*o}function pH(r,e,t,a,n){var i=r.get(hH)||0;i&&(Uc.attr({scaleX:e[0],scaleY:e[1],rotation:t}),Uc.updateTransform(),i/=Uc.getLineScale(),i*=e[a.valueDim.index]),n.valueLineWidth=i||0}function gH(r,e,t,a,n,i,o,s,l,u,f,h){var v=f.categoryDim,c=f.valueDim,d=h.pxSign,p=Math.max(e[c.index]+s,0),g=p;if(a){var y=Math.abs(l),m=le(r.get("symbolMargin"),"15%")+"",_=!1;m.lastIndexOf("!")===m.length-1&&(_=!0,m=m.slice(0,m.length-1));var S=W(m,e[c.index]),w=Math.max(p+S*2,0),x=_?0:S*2,b=b2(a),C=b?a:mx((y+x)/w),T=y-C*p;S=T/2/(_?C:Math.max(C-1,1)),w=p+S*2,x=_?0:S*2,!b&&a!=="fixed"&&(C=u?mx((Math.abs(u)+x)/w):0),g=C*w-x,h.repeatTimes=C,h.symbolMargin=S}var D=d*(g/2),M=h.pathPosition=[];M[v.index]=t[v.wh]/2,M[c.index]=o==="start"?D:o==="end"?l-D:l/2,i&&(M[0]+=i[0],M[1]+=i[1]);var L=h.bundlePosition=[];L[v.index]=t[v.xy],L[c.index]=t[c.xy];var I=h.barRectShape=V({},t);I[c.wh]=d*Math.max(Math.abs(t[c.wh]),Math.abs(M[c.index]+D)),I[v.wh]=t[v.wh];var P=h.clipShape={};P[v.xy]=-t[v.xy],P[v.wh]=f.ecSize[v.wh],P[c.xy]=0,P[c.wh]=t[c.wh]}function wM(r){var e=r.symbolPatternSize,t=jt(r.symbolType,-e/2,-e/2,e,e);return t.attr({culling:!0}),t.type!=="image"&&t.setStyle({strokeNoScale:!0}),t}function bM(r,e,t,a){var n=r.__pictorialBundle,i=t.symbolSize,o=t.valueLineWidth,s=t.pathPosition,l=e.valueDim,u=t.repeatTimes||0,f=0,h=i[e.valueDim.index]+o+t.symbolMargin*2;for(Zy(r,function(p){p.__pictorialAnimationIndex=f,p.__pictorialRepeatTimes=u,f0:y<0)&&(m=u-1-p),g[l.index]=h*(m-u/2+.5)+s[l.index],{x:g[0],y:g[1],scaleX:t.symbolScale[0],scaleY:t.symbolScale[1],rotation:t.rotation}}}function CM(r,e,t,a){var n=r.__pictorialBundle,i=r.__pictorialMainPath;i?fo(i,null,{x:t.pathPosition[0],y:t.pathPosition[1],scaleX:t.symbolScale[0],scaleY:t.symbolScale[1],rotation:t.rotation},t,a):(i=r.__pictorialMainPath=wM(t),n.add(i),fo(i,{x:t.pathPosition[0],y:t.pathPosition[1],scaleX:0,scaleY:0,rotation:t.rotation},{scaleX:t.symbolScale[0],scaleY:t.symbolScale[1]},t,a))}function TM(r,e,t){var a=V({},e.barRectShape),n=r.__pictorialBarRect;n?fo(n,null,{shape:a},e,t):(n=r.__pictorialBarRect=new bt({z2:2,shape:a,silent:!0,style:{stroke:"transparent",fill:"transparent",lineWidth:0}}),n.disableMorphing=!0,r.add(n))}function AM(r,e,t,a){if(t.symbolClip){var n=r.__pictorialClipPath,i=V({},t.clipShape),o=e.valueDim,s=t.animationModel,l=t.dataIndex;if(n)Lt(n,{shape:i},s,l);else{i[o.wh]=0,n=new bt({shape:i}),r.__pictorialBundle.setClipPath(n),r.__pictorialClipPath=n;var u={};u[o.wh]=t.clipShape[o.wh],Dl[a?"updateProps":"initProps"](n,{shape:u},s,l)}}}function dx(r,e){var t=r.getItemModel(e);return t.getAnimationDelayParams=yH,t.isAnimationEnabled=mH,t}function yH(r){return{index:r.__pictorialAnimationIndex,count:r.__pictorialRepeatTimes}}function mH(){return this.parentModel.isAnimationEnabled()&&!!this.getShallow("animation")}function px(r,e,t,a){var n=new nt,i=new nt;return n.add(i),n.__pictorialBundle=i,i.x=t.bundlePosition[0],i.y=t.bundlePosition[1],t.symbolRepeat?bM(n,e,t):CM(n,e,t),TM(n,t,a),AM(n,e,t,a),n.__pictorialShapeStr=DM(r,t),n.__pictorialSymbolMeta=t,n}function _H(r,e,t){var a=t.animationModel,n=t.dataIndex,i=r.__pictorialBundle;Lt(i,{x:t.bundlePosition[0],y:t.bundlePosition[1]},a,n),t.symbolRepeat?bM(r,e,t,!0):CM(r,e,t,!0),TM(r,t,!0),AM(r,e,t,!0)}function gx(r,e,t,a){var n=a.__pictorialBarRect;n&&n.removeTextContent();var i=[];Zy(a,function(o){i.push(o)}),a.__pictorialMainPath&&i.push(a.__pictorialMainPath),a.__pictorialClipPath&&(t=null),A(i,function(o){rn(o,{scaleX:0,scaleY:0},t,e,function(){a.parent&&a.parent.remove(a)})}),r.setItemGraphicEl(e,null)}function DM(r,e){return[r.getItemVisual(e.dataIndex,"symbol")||"none",!!e.symbolRepeat,!!e.symbolClip].join(":")}function Zy(r,e,t){A(r.__pictorialBundle.children(),function(a){a!==r.__pictorialBarRect&&e.call(t,a)})}function fo(r,e,t,a,n,i){e&&r.attr(e),a.symbolClip&&!n?t&&r.attr(t):t&&Dl[n?"updateProps":"initProps"](r,t,a.animationModel,a.dataIndex,i)}function yx(r,e,t){var a=t.dataIndex,n=t.itemModel,i=n.getModel("emphasis"),o=i.getModel("itemStyle").getItemStyle(),s=n.getModel(["blur","itemStyle"]).getItemStyle(),l=n.getModel(["select","itemStyle"]).getItemStyle(),u=n.getShallow("cursor"),f=i.get("focus"),h=i.get("blurScope"),v=i.get("scale");Zy(r,function(p){if(p instanceof pe){var g=p.style;p.useStyle(V({image:g.image,x:g.x,y:g.y,width:g.width,height:g.height},t.style))}else p.useStyle(t.style);var y=p.ensureState("emphasis");y.style=o,v&&(y.scaleX=p.scaleX*1.1,y.scaleY=p.scaleY*1.1),p.ensureState("blur").style=s,p.ensureState("select").style=l,u&&(p.cursor=u),p.z2=t.z2});var c=e.valueDim.posDesc[+(t.boundingLength>0)],d=r.__pictorialBarRect;de(d,ie(n),{labelFetcher:e.seriesModel,labelDataIndex:a,defaultText:go(e.seriesModel.getData(),a),inheritColor:t.style.fill,defaultOpacity:t.style.opacity,defaultOutsidePosition:c}),$t(r,f,h,i.get("disabled"))}function mx(r){var e=Math.round(r);return Math.abs(r-e)<1e-4?e:Math.ceil(r)}var SH=vH,xH=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t.hasSymbolVisual=!0,t.defaultSymbol="roundRect",t}return e.prototype.getInitialData=function(t){return t.stack=null,r.prototype.getInitialData.apply(this,arguments)},e.type="series.pictorialBar",e.dependencies=["grid"],e.defaultOption=cn($f.defaultOption,{symbol:"circle",symbolSize:null,symbolRotate:null,symbolPosition:null,symbolOffset:null,symbolMargin:null,symbolRepeat:!1,symbolRepeatDirection:"end",symbolClip:!1,symbolBoundingData:null,symbolPatternSize:400,barGap:"-100%",progressive:0,emphasis:{scale:!1},select:{itemStyle:{borderColor:"#212121"}}}),e}($f),wH=xH;function bH(r){r.registerChartView(SH),r.registerSeriesModel(wH),r.registerLayout(r.PRIORITY.VISUAL.LAYOUT,ot(SA,"pictorialBar")),r.registerLayout(r.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT,xA("pictorialBar"))}var CH=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t._layers=[],t}return e.prototype.render=function(t,a,n){var i=t.getData(),o=this,s=this.group,l=t.getLayerSeries(),u=i.getLayout("layoutInfo"),f=u.rect,h=u.boundaryGap;s.x=0,s.y=f.y+h[0];function v(g){return g.name}var c=new xa(this._layersSeries||[],l,v,v),d=[];c.add(Y(p,this,"add")).update(Y(p,this,"update")).remove(Y(p,this,"remove")).execute();function p(g,y,m){var _=o._layers;if(g==="remove"){s.remove(_[y]);return}for(var S=[],w=[],x,b=l[y].indices,C=0;Ci&&(i=s),a.push(s)}for(var u=0;ui&&(i=h)}return{y0:n,max:i}}function PH(r){r.registerChartView(AH),r.registerSeriesModel(MH),r.registerLayout(LH),r.registerProcessor(Bl("themeRiver"))}var RH=2,EH=4,kH=function(r){k(e,r);function e(t,a,n,i){var o=r.call(this)||this;o.z2=RH,o.textConfig={inside:!0},it(o).seriesIndex=a.seriesIndex;var s=new Dt({z2:EH,silent:t.getModel().get(["label","silent"])});return o.setTextContent(s),o.updateData(!0,t,a,n,i),o}return e.prototype.updateData=function(t,a,n,i,o){this.node=a,a.piece=this,n=n||this._seriesModel,i=i||this._ecModel;var s=this;it(s).dataIndex=a.dataIndex;var l=a.getModel(),u=l.getModel("emphasis"),f=a.getLayout(),h=V({},f);h.label=null;var v=a.getVisual("style");v.lineJoin="bevel";var c=a.getVisual("decal");c&&(v.decal=co(c,o));var d=ri(l.getModel("itemStyle"),h,!0);V(h,d),A(Le,function(m){var _=s.ensureState(m),S=l.getModel([m,"itemStyle"]);_.style=S.getItemStyle();var w=ri(S,h);w&&(_.shape=w)}),t?(s.setShape(h),s.shape.r=f.r0,Ft(s,{shape:{r:f.r}},n,a.dataIndex)):(Lt(s,{shape:h},n),Ar(s)),s.useStyle(v),this._updateLabel(n);var p=l.getShallow("cursor");p&&s.attr("cursor",p),this._seriesModel=n||this._seriesModel,this._ecModel=i||this._ecModel;var g=u.get("focus"),y=g==="ancestor"?a.getAncestorsIndices():g==="descendant"?a.getDescendantIndices():g;$t(this,y,u.get("blurScope"),u.get("disabled"))},e.prototype._updateLabel=function(t){var a=this,n=this.node.getModel(),i=n.getModel("label"),o=this.node.getLayout(),s=o.endAngle-o.startAngle,l=(o.startAngle+o.endAngle)/2,u=Math.cos(l),f=Math.sin(l),h=this,v=h.getTextContent(),c=this.node.dataIndex,d=i.get("minAngle")/180*Math.PI,p=i.get("show")&&!(d!=null&&Math.abs(s)Math.PI/2?"right":"left"):!L||L==="center"?(s===2*Math.PI&&o.r0===0?D=0:D=(o.r+o.r0)/2,L="center"):L==="left"?(D=o.r0+M,l>Math.PI/2&&(L="right")):L==="right"&&(D=o.r-M,l>Math.PI/2&&(L="left")),S.style.align=L,S.style.verticalAlign=g(m,"verticalAlign")||"middle",S.x=D*u+o.cx,S.y=D*f+o.cy;var I=g(m,"rotate"),P=0;I==="radial"?(P=xr(-l),P>Math.PI/2&&PMath.PI/2?P-=Math.PI:P<-Math.PI/2&&(P+=Math.PI)):Mt(I)&&(P=I*Math.PI/180),S.rotation=xr(P)});function g(y,m){var _=y.get(m);return _==null?i.get(m):_}v.dirtyStyle()},e}(Ve),Sx=kH,Wp="sunburstRootToNode",xx="sunburstHighlight",OH="sunburstUnhighlight";function BH(r){r.registerAction({type:Wp,update:"updateView"},function(e,t){t.eachComponent({mainType:"series",subType:"sunburst",query:e},a);function a(n,i){var o=sl(e,[Wp],n);if(o){var s=n.getViewRoot();s&&(e.direction=Ry(s,o.node)?"rollUp":"drillDown"),n.resetViewRoot(o.node)}}}),r.registerAction({type:xx,update:"none"},function(e,t,a){e=V({},e),t.eachComponent({mainType:"series",subType:"sunburst",query:e},n);function n(i){var o=sl(e,[xx],i);o&&(e.dataIndex=o.node.dataIndex)}a.dispatchAction(V(e,{type:"highlight"}))}),r.registerAction({type:OH,update:"updateView"},function(e,t,a){e=V({},e),a.dispatchAction(V(e,{type:"downplay"}))})}var NH=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.render=function(t,a,n,i){var o=this;this.seriesModel=t,this.api=n,this.ecModel=a;var s=t.getData(),l=s.tree.root,u=t.getViewRoot(),f=this.group,h=t.get("renderLabelForZeroData"),v=[];u.eachNode(function(m){v.push(m)});var c=this._oldChildren||[];d(v,c),y(l,u),this._initEvents(),this._oldChildren=v;function d(m,_){if(m.length===0&&_.length===0)return;new xa(_,m,S,S).add(w).update(w).remove(ot(w,null)).execute();function S(x){return x.getId()}function w(x,b){var C=x==null?null:m[x],T=b==null?null:_[b];p(C,T)}}function p(m,_){if(!h&&m&&!m.getValue()&&(m=null),m!==l&&_!==l){if(_&&_.piece)m?(_.piece.updateData(!1,m,t,a,n),s.setItemGraphicEl(m.dataIndex,_.piece)):g(_);else if(m){var S=new Sx(m,t,a,n);f.add(S),s.setItemGraphicEl(m.dataIndex,S)}}}function g(m){!m||m.piece&&(f.remove(m.piece),m.piece=null)}function y(m,_){_.depth>0?(o.virtualPiece?o.virtualPiece.updateData(!1,m,t,a,n):(o.virtualPiece=new Sx(m,t,a,n),f.add(o.virtualPiece)),_.piece.off("click"),o.virtualPiece.on("click",function(S){o._rootToNode(_.parentNode)})):o.virtualPiece&&(f.remove(o.virtualPiece),o.virtualPiece=null)}},e.prototype._initEvents=function(){var t=this;this.group.off("click"),this.group.on("click",function(a){var n=!1,i=t.seriesModel.getViewRoot();i.eachNode(function(o){if(!n&&o.piece&&o.piece===a.target){var s=o.getModel().get("nodeClick");if(s==="rootToNode")t._rootToNode(o);else if(s==="link"){var l=o.getModel(),u=l.get("link");if(u){var f=l.get("target",!0)||"_blank";Rf(u,f)}}n=!0}})})},e.prototype._rootToNode=function(t){t!==this.seriesModel.getViewRoot()&&this.api.dispatchAction({type:Wp,from:this.uid,seriesId:this.seriesModel.id,targetNode:t})},e.prototype.containPoint=function(t,a){var n=a.getData(),i=n.getItemLayout(0);if(i){var o=t[0]-i.cx,s=t[1]-i.cy,l=Math.sqrt(o*o+s*s);return l<=i.r&&l>=i.r0}},e.type="sunburst",e}(zt),VH=NH,zH=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t.ignoreStyleOnData=!0,t}return e.prototype.getInitialData=function(t,a){var n={name:t.name,children:t.data};MM(n);var i=this._levelModels=G(t.levels||[],function(l){return new Vt(l,this,a)},this),o=Py.createTree(n,this,s);function s(l){l.wrapMethod("getItemModel",function(u,f){var h=o.getNodeByDataIndex(f),v=i[h.depth];return v&&(u.parentModel=v),u})}return o.data},e.prototype.optionUpdated=function(){this.resetViewRoot()},e.prototype.getDataParams=function(t){var a=r.prototype.getDataParams.apply(this,arguments),n=this.getData().tree.getNodeByDataIndex(t);return a.treePathInfo=Yh(n,this),a},e.prototype.getLevelModel=function(t){return this._levelModels&&this._levelModels[t.depth]},e.prototype.getViewRoot=function(){return this._viewRoot},e.prototype.resetViewRoot=function(t){t?this._viewRoot=t:t=this._viewRoot;var a=this.getRawData().tree.root;(!t||t!==a&&!a.contains(t))&&(this._viewRoot=a)},e.prototype.enableAriaDecal=function(){PD(this)},e.type="series.sunburst",e.defaultOption={z:2,center:["50%","50%"],radius:[0,"75%"],clockwise:!0,startAngle:90,minAngle:0,stillShowZeroSum:!0,nodeClick:"rootToNode",renderLabelForZeroData:!1,label:{rotate:"radial",show:!0,opacity:1,align:"center",position:"inside",distance:5,silent:!0},itemStyle:{borderWidth:1,borderColor:"white",borderType:"solid",shadowBlur:0,shadowColor:"rgba(0, 0, 0, 0.2)",shadowOffsetX:0,shadowOffsetY:0,opacity:1},emphasis:{focus:"descendant"},blur:{itemStyle:{opacity:.2},label:{opacity:.1}},animationType:"expansion",animationDuration:1e3,animationDurationUpdate:500,data:[],sort:"desc"},e}(Ht);function MM(r){var e=0;A(r.children,function(a){MM(a);var n=a.value;F(n)&&(n=n[0]),e+=n});var t=r.value;F(t)&&(t=t[0]),(t==null||isNaN(t))&&(t=e),t<0&&(t=0),F(r.value)?r.value[0]=t:r.value=t}var FH=zH,bx=Math.PI/180;function GH(r,e,t){e.eachSeriesByType(r,function(a){var n=a.get("center"),i=a.get("radius");F(i)||(i=[0,i]),F(n)||(n=[n,n]);var o=t.getWidth(),s=t.getHeight(),l=Math.min(o,s),u=W(n[0],o),f=W(n[1],s),h=W(i[0],l/2),v=W(i[1],l/2),c=-a.get("startAngle")*bx,d=a.get("minAngle")*bx,p=a.getData().tree.root,g=a.getViewRoot(),y=g.depth,m=a.get("sort");m!=null&&LM(g,m);var _=0;A(g.children,function(E){!isNaN(E.getValue())&&_++});var S=g.getValue(),w=Math.PI/(S||_)*2,x=g.depth>0,b=g.height-(x?-1:1),C=(v-h)/(b||1),T=a.get("clockwise"),D=a.get("stillShowZeroSum"),M=T?1:-1,L=function(E,B){if(!!E){var O=B;if(E!==p){var z=E.getValue(),H=S===0&&D?w:z*w;H1;)o=o.parentNode;var s=n.getColorFromPalette(o.name||o.dataIndex+"",e);return a.depth>1&&U(s)&&(s=Vd(s,(a.depth-1)/(i-1)*.5)),s}r.eachSeriesByType("sunburst",function(a){var n=a.getData(),i=n.tree;i.eachNode(function(o){var s=o.getModel(),l=s.getModel("itemStyle").getItemStyle();l.fill||(l.fill=t(o,a,i.root.height));var u=n.ensureUniqueItemVisual(o.dataIndex,"style");V(u,l)})})}function $H(r){r.registerChartView(VH),r.registerSeriesModel(FH),r.registerLayout(ot(GH,"sunburst")),r.registerProcessor(ot(Bl,"sunburst")),r.registerVisual(WH),BH(r)}var Cx={color:"fill",borderColor:"stroke"},UH={symbol:1,symbolSize:1,symbolKeepAspect:1,legendIcon:1,visualMeta:1,liftZ:1,decal:1},ca=Ct(),YH=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.optionUpdated=function(){this.currentZLevel=this.get("zlevel",!0),this.currentZ=this.get("z",!0)},e.prototype.getInitialData=function(t,a){return Ta(null,this)},e.prototype.getDataParams=function(t,a,n){var i=r.prototype.getDataParams.call(this,t,a);return n&&(i.info=ca(n).info),i},e.type="series.custom",e.dependencies=["grid","polar","geo","singleAxis","calendar"],e.defaultOption={coordinateSystem:"cartesian2d",z:2,legendHoverLink:!0,clip:!1},e}(Ht),ZH=YH;function XH(r,e){return e=e||[0,0],G(["x","y"],function(t,a){var n=this.getAxis(t),i=e[a],o=r[a]/2;return n.type==="category"?n.getBandWidth():Math.abs(n.dataToCoord(i-o)-n.dataToCoord(i+o))},this)}function qH(r){var e=r.master.getRect();return{coordSys:{type:"cartesian2d",x:e.x,y:e.y,width:e.width,height:e.height},api:{coord:function(t){return r.dataToPoint(t)},size:Y(XH,r)}}}function KH(r,e){return e=e||[0,0],G([0,1],function(t){var a=e[t],n=r[t]/2,i=[],o=[];return i[t]=a-n,o[t]=a+n,i[1-t]=o[1-t]=e[1-t],Math.abs(this.dataToPoint(i)[t]-this.dataToPoint(o)[t])},this)}function JH(r){var e=r.getBoundingRect();return{coordSys:{type:"geo",x:e.x,y:e.y,width:e.width,height:e.height,zoom:r.getZoom()},api:{coord:function(t){return r.dataToPoint(t)},size:Y(KH,r)}}}function QH(r,e){var t=this.getAxis(),a=e instanceof Array?e[0]:e,n=(r instanceof Array?r[0]:r)/2;return t.type==="category"?t.getBandWidth():Math.abs(t.dataToCoord(a-n)-t.dataToCoord(a+n))}function jH(r){var e=r.getRect();return{coordSys:{type:"singleAxis",x:e.x,y:e.y,width:e.width,height:e.height},api:{coord:function(t){return r.dataToPoint(t)},size:Y(QH,r)}}}function tW(r,e){return e=e||[0,0],G(["Radius","Angle"],function(t,a){var n="get"+t+"Axis",i=this[n](),o=e[a],s=r[a]/2,l=i.type==="category"?i.getBandWidth():Math.abs(i.dataToCoord(o-s)-i.dataToCoord(o+s));return t==="Angle"&&(l=l*Math.PI/180),l},this)}function eW(r){var e=r.getRadiusAxis(),t=r.getAngleAxis(),a=e.getExtent();return a[0]>a[1]&&a.reverse(),{coordSys:{type:"polar",cx:r.cx,cy:r.cy,r:a[1],r0:a[0]},api:{coord:function(n){var i=e.dataToRadius(n[0]),o=t.dataToAngle(n[1]),s=r.coordToPoint([i,o]);return s.push(i,o*Math.PI/180),s},size:Y(tW,r)}}}function rW(r){var e=r.getRect(),t=r.getRangeInfo();return{coordSys:{type:"calendar",x:e.x,y:e.y,width:e.width,height:e.height,cellWidth:r.getCellWidth(),cellHeight:r.getCellHeight(),rangeInfo:{start:t.start,end:t.end,weeks:t.weeks,dayCount:t.allDay}},api:{coord:function(a,n){return r.dataToPoint(a,n)}}}}function IM(r,e,t,a){return r&&(r.legacy||r.legacy!==!1&&!t&&!a&&e!=="tspan"&&(e==="text"||Z(r,"text")))}function PM(r,e,t){var a=r,n,i,o;if(e==="text")o=a;else{o={},Z(a,"text")&&(o.text=a.text),Z(a,"rich")&&(o.rich=a.rich),Z(a,"textFill")&&(o.fill=a.textFill),Z(a,"textStroke")&&(o.stroke=a.textStroke),Z(a,"fontFamily")&&(o.fontFamily=a.fontFamily),Z(a,"fontSize")&&(o.fontSize=a.fontSize),Z(a,"fontStyle")&&(o.fontStyle=a.fontStyle),Z(a,"fontWeight")&&(o.fontWeight=a.fontWeight),i={type:"text",style:o,silent:!0},n={};var s=Z(a,"textPosition");t?n.position=s?a.textPosition:"inside":s&&(n.position=a.textPosition),Z(a,"textPosition")&&(n.position=a.textPosition),Z(a,"textOffset")&&(n.offset=a.textOffset),Z(a,"textRotation")&&(n.rotation=a.textRotation),Z(a,"textDistance")&&(n.distance=a.textDistance)}return Tx(o,r),A(o.rich,function(l){Tx(l,l)}),{textConfig:n,textContent:i}}function Tx(r,e){!e||(e.font=e.textFont||e.font,Z(e,"textStrokeWidth")&&(r.lineWidth=e.textStrokeWidth),Z(e,"textAlign")&&(r.align=e.textAlign),Z(e,"textVerticalAlign")&&(r.verticalAlign=e.textVerticalAlign),Z(e,"textLineHeight")&&(r.lineHeight=e.textLineHeight),Z(e,"textWidth")&&(r.width=e.textWidth),Z(e,"textHeight")&&(r.height=e.textHeight),Z(e,"textBackgroundColor")&&(r.backgroundColor=e.textBackgroundColor),Z(e,"textPadding")&&(r.padding=e.textPadding),Z(e,"textBorderColor")&&(r.borderColor=e.textBorderColor),Z(e,"textBorderWidth")&&(r.borderWidth=e.textBorderWidth),Z(e,"textBorderRadius")&&(r.borderRadius=e.textBorderRadius),Z(e,"textBoxShadowColor")&&(r.shadowColor=e.textBoxShadowColor),Z(e,"textBoxShadowBlur")&&(r.shadowBlur=e.textBoxShadowBlur),Z(e,"textBoxShadowOffsetX")&&(r.shadowOffsetX=e.textBoxShadowOffsetX),Z(e,"textBoxShadowOffsetY")&&(r.shadowOffsetY=e.textBoxShadowOffsetY))}function Ax(r,e,t){var a=r;a.textPosition=a.textPosition||t.position||"inside",t.offset!=null&&(a.textOffset=t.offset),t.rotation!=null&&(a.textRotation=t.rotation),t.distance!=null&&(a.textDistance=t.distance);var n=a.textPosition.indexOf("inside")>=0,i=r.fill||"#000";Dx(a,e);var o=a.textFill==null;return n?o&&(a.textFill=t.insideFill||"#fff",!a.textStroke&&t.insideStroke&&(a.textStroke=t.insideStroke),!a.textStroke&&(a.textStroke=i),a.textStrokeWidth==null&&(a.textStrokeWidth=2)):(o&&(a.textFill=r.fill||t.outsideFill||"#000"),!a.textStroke&&t.outsideStroke&&(a.textStroke=t.outsideStroke)),a.text=e.text,a.rich=e.rich,A(e.rich,function(s){Dx(s,s)}),a}function Dx(r,e){!e||(Z(e,"fill")&&(r.textFill=e.fill),Z(e,"stroke")&&(r.textStroke=e.fill),Z(e,"lineWidth")&&(r.textStrokeWidth=e.lineWidth),Z(e,"font")&&(r.font=e.font),Z(e,"fontStyle")&&(r.fontStyle=e.fontStyle),Z(e,"fontWeight")&&(r.fontWeight=e.fontWeight),Z(e,"fontSize")&&(r.fontSize=e.fontSize),Z(e,"fontFamily")&&(r.fontFamily=e.fontFamily),Z(e,"align")&&(r.textAlign=e.align),Z(e,"verticalAlign")&&(r.textVerticalAlign=e.verticalAlign),Z(e,"lineHeight")&&(r.textLineHeight=e.lineHeight),Z(e,"width")&&(r.textWidth=e.width),Z(e,"height")&&(r.textHeight=e.height),Z(e,"backgroundColor")&&(r.textBackgroundColor=e.backgroundColor),Z(e,"padding")&&(r.textPadding=e.padding),Z(e,"borderColor")&&(r.textBorderColor=e.borderColor),Z(e,"borderWidth")&&(r.textBorderWidth=e.borderWidth),Z(e,"borderRadius")&&(r.textBorderRadius=e.borderRadius),Z(e,"shadowColor")&&(r.textBoxShadowColor=e.shadowColor),Z(e,"shadowBlur")&&(r.textBoxShadowBlur=e.shadowBlur),Z(e,"shadowOffsetX")&&(r.textBoxShadowOffsetX=e.shadowOffsetX),Z(e,"shadowOffsetY")&&(r.textBoxShadowOffsetY=e.shadowOffsetY),Z(e,"textShadowColor")&&(r.textShadowColor=e.textShadowColor),Z(e,"textShadowBlur")&&(r.textShadowBlur=e.textShadowBlur),Z(e,"textShadowOffsetX")&&(r.textShadowOffsetX=e.textShadowOffsetX),Z(e,"textShadowOffsetY")&&(r.textShadowOffsetY=e.textShadowOffsetY))}var RM={position:["x","y"],scale:["scaleX","scaleY"],origin:["originX","originY"]},Mx=St(RM);Zr(qr,function(r,e){return r[e]=1,r},{});qr.join(", ");var Qf=["","style","shape","extra"],_o=Ct();function Xy(r,e,t,a,n){var i=r+"Animation",o=Ao(r,a,n)||{},s=_o(e).userDuring;return o.duration>0&&(o.during=s?Y(sW,{el:e,userDuring:s}):null,o.setToFinal=!0,o.scope=r),V(o,t[i]),o}function ff(r,e,t,a){a=a||{};var n=a.dataIndex,i=a.isInit,o=a.clearStyle,s=t.isAnimationEnabled(),l=_o(r),u=e.style;l.userDuring=e.during;var f={},h={};if(uW(r,e,h),Ix("shape",e,h),Ix("extra",e,h),!i&&s&&(lW(r,e,f),Lx("shape",r,e,f),Lx("extra",r,e,f),fW(r,e,u,f)),h.style=u,aW(r,h,o),iW(r,e),s)if(i){var v={};A(Qf,function(d){var p=d?e[d]:e;p&&p.enterFrom&&(d&&(v[d]=v[d]||{}),V(d?v[d]:v,p.enterFrom))});var c=Xy("enter",r,e,t,n);c.duration>0&&r.animateFrom(v,c)}else nW(r,e,n||0,t,f);EM(r,e),u?r.dirty():r.markRedraw()}function EM(r,e){for(var t=_o(r).leaveToProps,a=0;a0&&r.animateFrom(n,i)}}function iW(r,e){Z(e,"silent")&&(r.silent=e.silent),Z(e,"ignore")&&(r.ignore=e.ignore),r instanceof fr&&Z(e,"invisible")&&(r.invisible=e.invisible),r instanceof mt&&Z(e,"autoBatch")&&(r.autoBatch=e.autoBatch)}var kr={},oW={setTransform:function(r,e){return kr.el[r]=e,this},getTransform:function(r){return kr.el[r]},setShape:function(r,e){var t=kr.el,a=t.shape||(t.shape={});return a[r]=e,t.dirtyShape&&t.dirtyShape(),this},getShape:function(r){var e=kr.el.shape;if(e)return e[r]},setStyle:function(r,e){var t=kr.el,a=t.style;return a&&(a[r]=e,t.dirtyStyle&&t.dirtyStyle()),this},getStyle:function(r){var e=kr.el.style;if(e)return e[r]},setExtra:function(r,e){var t=kr.el.extra||(kr.el.extra={});return t[r]=e,this},getExtra:function(r){var e=kr.el.extra;if(e)return e[r]}};function sW(){var r=this,e=r.el;if(!!e){var t=_o(e).userDuring,a=r.userDuring;if(t!==a){r.el=r.userDuring=null;return}kr.el=e,a(oW)}}function Lx(r,e,t,a){var n=t[r];if(!!n){var i=e[r],o;if(i){var s=t.transition,l=n.transition;if(l)if(!o&&(o=a[r]={}),vi(l))V(o,i);else for(var u=kt(l),f=0;f=0){!o&&(o=a[r]={});for(var c=St(i),f=0;f=0)){var v=r.getAnimationStyleProps(),c=v?v.style:null;if(c){!i&&(i=a.style={});for(var d=St(t),u=0;u=0?e.getStore().get(B,R):void 0}var O=e.get(E.name,R),z=E&&E.ordinalMeta;return z?z.categories[O]:O}function x(P,R){R==null&&(R=u);var E=e.getItemVisual(R,"style"),B=E&&E.fill,O=E&&E.opacity,z=m(R,Xa).getItemStyle();B!=null&&(z.fill=B),O!=null&&(z.opacity=O);var H={inheritColor:U(B)?B:"#000"},$=_(R,Xa),X=Nt($,null,H,!1,!0);X.text=$.getShallow("show")?ft(r.getFormattedLabel(R,Xa),go(e,R)):null;var Q=If($,H,!1);return T(P,z),z=Ax(z,X,Q),P&&C(z,P),z.legacy=!0,z}function b(P,R){R==null&&(R=u);var E=m(R,da).getItemStyle(),B=_(R,da),O=Nt(B,null,null,!0,!0);O.text=B.getShallow("show")?Ur(r.getFormattedLabel(R,da),r.getFormattedLabel(R,Xa),go(e,R)):null;var z=If(B,null,!0);return T(P,E),E=Ax(E,O,z),P&&C(E,P),E.legacy=!0,E}function C(P,R){for(var E in R)Z(R,E)&&(P[E]=R[E])}function T(P,R){P&&(P.textFill&&(R.textFill=P.textFill),P.textPosition&&(R.textPosition=P.textPosition))}function D(P,R){if(R==null&&(R=u),Z(Cx,P)){var E=e.getItemVisual(R,"style");return E?E[Cx[P]]:null}if(Z(UH,P))return e.getItemVisual(R,P)}function M(P){if(i.type==="cartesian2d"){var R=i.getBaseAxis();return hN(tt({axis:R},P))}}function L(){return t.getCurrentSeriesIndices()}function I(P){return MC(P,t)}}function xW(r){var e={};return A(r.dimensions,function(t){var a=r.getDimensionInfo(t);if(!a.isExtraCoord){var n=a.coordDim,i=e[n]=e[n]||[];i[a.coordDimIndex]=r.getDimensionIndex(t)}}),e}function Kc(r,e,t,a,n,i,o){if(!a){i.remove(e);return}var s=jy(r,e,t,a,n,i);return s&&o.setItemGraphicEl(t,s),s&&$t(s,a.focus,a.blurScope,a.emphasisDisabled),s}function jy(r,e,t,a,n,i){var o=-1,s=e;e&&NM(e,a,n)&&(o=dt(i.childrenRef(),e),e=null);var l=!e,u=e;u?u.clearStates():(u=Jy(a),s&&gW(s,u)),a.morph===!1?u.disableMorphing=!0:u.disableMorphing&&(u.disableMorphing=!1),qe.normal.cfg=qe.normal.conOpt=qe.emphasis.cfg=qe.emphasis.conOpt=qe.blur.cfg=qe.blur.conOpt=qe.select.cfg=qe.select.conOpt=null,qe.isLegacy=!1,bW(u,t,a,n,l,qe),wW(u,t,a,n,l),Qy(r,u,t,a,qe,n,l),Z(a,"info")&&(ca(u).info=a.info);for(var f=0;f=0?i.replaceAt(u,o):i.add(u),u}function NM(r,e,t){var a=ca(r),n=e.type,i=e.shape,o=e.style;return t.isUniversalTransitionEnabled()||n!=null&&n!==a.customGraphicType||n==="path"&&MW(i)&&VM(i)!==a.customPathData||n==="image"&&Z(o,"image")&&o.image!==a.customImagePath}function wW(r,e,t,a,n){var i=t.clipPath;if(i===!1)r&&r.getClipPath()&&r.removeClipPath();else if(i){var o=r.getClipPath();o&&NM(o,i,a)&&(o=null),o||(o=Jy(i),r.setClipPath(o)),Qy(null,o,e,i,null,a,n)}}function bW(r,e,t,a,n,i){if(!r.isGroup){Rx(t,null,i),Rx(t,da,i);var o=i.normal.conOpt,s=i.emphasis.conOpt,l=i.blur.conOpt,u=i.select.conOpt;if(o!=null||s!=null||u!=null||l!=null){var f=r.getTextContent();if(o===!1)f&&r.removeTextContent();else{o=i.normal.conOpt=o||{type:"text"},f?f.clearStates():(f=Jy(o),r.setTextContent(f)),Qy(null,f,e,o,null,a,n);for(var h=o&&o.style,v=0;v=f;c--){var d=e.childAt(c);TW(e,d,n)}}}function TW(r,e,t){e&&qh(e,ca(r).option,t)}function AW(r){new xa(r.oldChildren,r.newChildren,Ex,Ex,r).add(kx).update(kx).remove(DW).execute()}function Ex(r,e){var t=r&&r.name;return t!=null?t:dW+e}function kx(r,e){var t=this.context,a=r!=null?t.newChildren[r]:null,n=e!=null?t.oldChildren[e]:null;jy(t.api,n,t.dataIndex,a,t.seriesModel,t.group)}function DW(r){var e=this.context,t=e.oldChildren[r];t&&qh(t,ca(t).option,e.seriesModel)}function VM(r){return r&&(r.pathData||r.d)}function MW(r){return r&&(Z(r,"pathData")||Z(r,"d"))}function LW(r){r.registerChartView(mW),r.registerSeriesModel(ZH)}var Jc=Math.sin,Qc=Math.cos,zM=Math.PI,Bn=Math.PI*2,IW=180/zM,PW=function(){function r(){}return r.prototype.reset=function(e){this._start=!0,this._d=[],this._str="",this._p=Math.pow(10,e||4)},r.prototype.moveTo=function(e,t){this._add("M",e,t)},r.prototype.lineTo=function(e,t){this._add("L",e,t)},r.prototype.bezierCurveTo=function(e,t,a,n,i,o){this._add("C",e,t,a,n,i,o)},r.prototype.quadraticCurveTo=function(e,t,a,n){this._add("Q",e,t,a,n)},r.prototype.arc=function(e,t,a,n,i,o){this.ellipse(e,t,a,a,0,n,i,o)},r.prototype.ellipse=function(e,t,a,n,i,o,s,l){var u=s-o,f=!l,h=Math.abs(u),v=Ya(h-Bn)||(f?u>=Bn:-u>=Bn),c=u>0?u%Bn:u%Bn+Bn,d=!1;v?d=!0:Ya(h)?d=!1:d=c>=zM==!!f;var p=e+a*Qc(o),g=t+n*Jc(o);this._start&&this._add("M",p,g);var y=Math.round(i*IW);if(v){var m=1/this._p,_=(f?1:-1)*(Bn-m);this._add("A",a,n,y,1,+f,e+a*Qc(o+_),t+n*Jc(o+_)),m>.01&&this._add("A",a,n,y,0,+f,p,g)}else{var S=e+a*Qc(s),w=t+n*Jc(s);this._add("A",a,n,y,+d,+f,S,w)}},r.prototype.rect=function(e,t,a,n){this._add("M",e,t),this._add("l",a,0),this._add("l",0,n),this._add("l",-a,0),this._add("Z")},r.prototype.closePath=function(){this._d.length>0&&this._add("Z")},r.prototype._add=function(e,t,a,n,i,o,s,l,u){for(var f=[],h=this._p,v=1;v"}function FW(r){return""}function em(r,e){e=e||{};var t=e.newline?` `:"";function a(n){var i=n.children,o=n.tag,s=n.attrs,l=n.text;return zW(o,s)+(o!=="style"?ke(l):l||"")+(i?""+t+G(i,function(u){return a(u)}).join(t)+t:"")+FW(o)}return a(r)}function GW(r,e,t){t=t||{};var a=t.newline?` `:"",n=" {"+a,i=a+"}",o=G(St(r),function(l){return l+n+G(St(r[l]),function(u){return u+":"+r[l][u]+";"}).join(a)+i}).join(a),s=G(St(e),function(l){return"@keyframes "+l+n+G(St(e[l]),function(u){return u+n+G(St(e[l][u]),function(f){var h=e[l][u][f];return f==="d"&&(h='path("'+h+'")'),f+":"+h+";"}).join(a)+i}).join(a)+i}).join(a);return!o&&!s?"":[""].join(a)}function Zp(r){return{zrId:r,shadowCache:{},patternCache:{},gradientCache:{},clipPathCache:{},defs:{},cssNodes:{},cssAnims:{},cssClassIdx:0,cssAnimIdx:0,shadowIdx:0,gradientIdx:0,patternIdx:0,clipPathIdx:0}}function Ox(r,e,t,a){return ne("svg","root",{width:r,height:e,xmlns:GM,"xmlns:xlink":HM,version:"1.1",baseProfile:"full",viewBox:a?"0 0 "+r+" "+e:!1},t)}var Bx={cubicIn:"0.32,0,0.67,0",cubicOut:"0.33,1,0.68,1",cubicInOut:"0.65,0,0.35,1",quadraticIn:"0.11,0,0.5,0",quadraticOut:"0.5,1,0.89,1",quadraticInOut:"0.45,0,0.55,1",quarticIn:"0.5,0,0.75,0",quarticOut:"0.25,1,0.5,1",quarticInOut:"0.76,0,0.24,1",quinticIn:"0.64,0,0.78,0",quinticOut:"0.22,1,0.36,1",quinticInOut:"0.83,0,0.17,1",sinusoidalIn:"0.12,0,0.39,0",sinusoidalOut:"0.61,1,0.88,1",sinusoidalInOut:"0.37,0,0.63,1",exponentialIn:"0.7,0,0.84,0",exponentialOut:"0.16,1,0.3,1",exponentialInOut:"0.87,0,0.13,1",circularIn:"0.55,0,1,0.45",circularOut:"0,0.55,0.45,1",circularInOut:"0.85,0,0.15,1"},Wn="transform-origin";function HW(r,e,t){var a=V({},r.shape);V(a,e),r.buildPath(t,a);var n=new FM;return n.reset(u2(r)),t.rebuildPath(n,1),n.generateStr(),n.getStr()}function WW(r,e){var t=e.originX,a=e.originY;(t||a)&&(r[Wn]=t+"px "+a+"px")}var $W={fill:"fill",opacity:"opacity",lineWidth:"stroke-width",lineDashOffset:"stroke-dashoffset"};function $M(r,e){var t=e.zrId+"-ani-"+e.cssAnimIdx++;return e.cssAnims[t]=r,t}function UW(r,e,t){var a=r.shape.paths,n={},i,o;if(A(a,function(l){var u=Zp(t.zrId);u.animation=!0,Kh(l,{},u,!0);var f=u.cssAnims,h=u.cssNodes,v=St(f),c=v.length;if(!!c){o=v[c-1];var d=f[o];for(var p in d){var g=d[p];n[p]=n[p]||{d:""},n[p].d+=g.d||""}for(var y in h){var m=h[y].animation;m.indexOf(o)>=0&&(i=m)}}}),!!i){e.d=!1;var s=$M(n,t);return i.replace(o,s)}}function Nx(r){return U(r)?Bx[r]?"cubic-bezier("+Bx[r]+")":Tg(r)?r:"":""}function Kh(r,e,t,a){var n=r.animators,i=n.length,o=[];if(r instanceof Hg){var s=UW(r,e,t);if(s)o.push(s);else if(!i)return}else if(!i)return;for(var l={},u=0;u0}).length){var gt=$M(b,t);return gt+" "+m[0]+" both"}}for(var g in l){var s=p(l[g]);s&&o.push(s)}if(o.length){var y=t.zrId+"-cls-"+t.cssClassIdx++;t.cssNodes["."+y]={animation:o.join(",")},e.class=y}}var vl=Math.round;function UM(r){return r&&U(r.src)}function YM(r){return r&&J(r.toDataURL)}function rm(r,e,t,a){BW(function(n,i){var o=n==="fill"||n==="stroke";o&&l2(i)?XM(e,r,n,a):o&&Ag(i)?qM(t,r,n,a):r[n]=i},e,t,!1),QW(t,r,a)}function Vx(r){return Ya(r[0]-1)&&Ya(r[1])&&Ya(r[2])&&Ya(r[3]-1)}function YW(r){return Ya(r[4])&&Ya(r[5])}function am(r,e,t){if(e&&!(YW(e)&&Vx(e))){var a=t?10:1e4;r.transform=Vx(e)?"translate("+vl(e[4]*a)/a+" "+vl(e[5]*a)/a+")":TE(e)}}function zx(r,e,t){for(var a=r.points,n=[],i=0;ii?(d=t[l+1]==null?null:t[l+1].elm,QM(r,d,t,n,l)):eh(r,e,a,i))}function ji(r,e){var t=e.elm=r.elm,a=r.children,n=e.children;r!==e&&(nm(r,e),Xp(e.text)?Br(a)&&Br(n)?a!==n&&a$(t,a,n):Br(n)?(Br(r.text)&&jc(t,""),QM(t,null,n,0,n.length-1)):Br(a)?eh(t,a,0,a.length-1):Br(r.text)&&jc(t,""):r.text!==e.text&&(Br(a)&&eh(t,a,0,a.length-1),jc(t,e.text)))}function n$(r,e){if(Cs(r,e))ji(r,e);else{var t=r.elm,a=KM(t);cl(e),a!==null&&(Yn(a,e.elm,JM(t)),eh(a,[r],0,0))}return e}var i$=0,o$=function(){function r(e,t,a){if(this.type="svg",this.refreshHover=Yx(),this.configLayer=Yx(),this.storage=t,this._opts=a=V({},a),this.root=e,this._id="zr"+i$++,this._oldVNode=Ox(a.width,a.height),e&&!a.ssr){var n=this._viewport=document.createElement("div");n.style.cssText="position:relative;overflow:hidden";var i=this._svgDom=this._oldVNode.elm=WM("svg");nm(null,this._oldVNode),n.appendChild(i),e.appendChild(n)}this.resize(a.width,a.height)}return r.prototype.getType=function(){return this.type},r.prototype.getViewportRoot=function(){return this._viewport},r.prototype.getViewportRootOffset=function(){var e=this.getViewportRoot();if(e)return{offsetLeft:e.offsetLeft||0,offsetTop:e.offsetTop||0}},r.prototype.getSvgDom=function(){return this._svgDom},r.prototype.refresh=function(){if(this.root){var e=this.renderToVNode({willUpdate:!0});e.attrs.style="position:absolute;left:0;top:0;user-select:none",n$(this._oldVNode,e),this._oldVNode=e}},r.prototype.renderOneToVNode=function(e){return Gx(e,Zp(this._id))},r.prototype.renderToVNode=function(e){e=e||{};var t=this.storage.getDisplayList(!0),a=this._width,n=this._height,i=Zp(this._id);i.animation=e.animation,i.willUpdate=e.willUpdate,i.compress=e.compress;var o=[],s=this._bgVNode=s$(a,n,this._backgroundColor,i);s&&o.push(s);var l=e.compress?null:this._mainVNode=ne("g","main",{},[]);this._paintList(t,i,l?l.children:o),l&&o.push(l);var u=G(St(i.defs),function(v){return i.defs[v]});if(u.length&&o.push(ne("defs","defs",{},u)),e.animation){var f=GW(i.cssNodes,i.cssAnims,{newline:!0});if(f){var h=ne("style","stl",{},[],f);o.push(h)}}return Ox(a,n,o,e.useViewBox)},r.prototype.renderToString=function(e){return e=e||{},em(this.renderToVNode({animation:ft(e.cssAnimation,!0),willUpdate:!1,compress:!0,useViewBox:ft(e.useViewBox,!0)}),{newline:!0})},r.prototype.setBackgroundColor=function(e){this._backgroundColor=e},r.prototype.getSvgRoot=function(){return this._mainVNode&&this._mainVNode.elm},r.prototype._paintList=function(e,t,a){for(var n=e.length,i=[],o=0,s,l,u=0,f=0;f=0&&!(v&&l&&v[p]===l[p]);p--);for(var g=d-1;g>p;g--)o--,s=i[o-1];for(var y=p+1;y=s)}}for(var h=this.__startIndex;h15)break}}P.prevElClipPaths&&y.restore()};if(m)if(m.length===0)C=g.__endIndex;else for(var D=c.dpr,M=0;M0&&e>n[0]){for(l=0;le);l++);s=a[n[l]]}if(n.splice(l+1,0,e),a[e]=t,!t.virtual)if(s){var u=s.dom;u.nextSibling?o.insertBefore(t.dom,u.nextSibling):o.appendChild(t.dom)}else o.firstChild?o.insertBefore(t.dom,o.firstChild):o.appendChild(t.dom);t.__painter=this}},r.prototype.eachLayer=function(e,t){for(var a=this._zlevelList,n=0;n0?Ou:0),this._needsManuallyCompositing),f.__builtin__||mg("ZLevel "+u+" has been used by unkown layer "+f.id),f!==i&&(f.__used=!0,f.__startIndex!==l&&(f.__dirty=!0),f.__startIndex=l,f.incremental?f.__drawIndex=-1:f.__drawIndex=l,t(l),i=f),n.__dirty&He&&!n.__inHover&&(f.__dirty=!0,f.incremental&&f.__drawIndex<0&&(f.__drawIndex=l))}t(l),this.eachBuiltinLayer(function(h,v){!h.__used&&h.getElementCount()>0&&(h.__dirty=!0,h.__startIndex=h.__endIndex=h.__drawIndex=0),h.__dirty&&h.__drawIndex<0&&(h.__drawIndex=h.__startIndex)})},r.prototype.clear=function(){return this.eachBuiltinLayer(this._clearLayer),this},r.prototype._clearLayer=function(e){e.clear()},r.prototype.setBackgroundColor=function(e){this._backgroundColor=e,A(this._layers,function(t){t.setUnpainted()})},r.prototype.configLayer=function(e,t){if(t){var a=this._layerConfig;a[e]?ht(a[e],t,!0):a[e]=t;for(var n=0;ns)return!0;if(o){var l=Cy(e).seriesDataCount,u=n.getExtent();return Math.abs(u[0]-u[1])/l>s}return!1}return a===!0},r.prototype.makeElOption=function(e,t,a,n,i){},r.prototype.createPointerEl=function(e,t,a,n){var i=t.pointer;if(i){var o=Zn(e).pointerEl=new Dl[i.type](qx(t.pointer));e.add(o)}},r.prototype.createLabelEl=function(e,t,a,n){if(t.label){var i=Zn(e).labelEl=new Dt(qx(t.label));e.add(i),Jx(i,n)}},r.prototype.updatePointerEl=function(e,t,a){var n=Zn(e).pointerEl;n&&t.pointer&&(n.setStyle(t.pointer.style),a(n,{shape:t.pointer.shape}))},r.prototype.updateLabelEl=function(e,t,a,n){var i=Zn(e).labelEl;i&&(i.setStyle(t.label.style),a(i,{x:t.label.x,y:t.label.y}),Jx(i,n))},r.prototype._renderHandle=function(e){if(!(this._dragging||!this.updateHandleTransform)){var t=this._axisPointerModel,a=this._api.getZr(),n=this._handle,i=t.getModel("handle"),o=t.get("status");if(!i.get("show")||!o||o==="hide"){n&&a.remove(n),this._handle=null;return}var s;this._handle||(s=!0,n=this._handle=Al(i.get("icon"),{cursor:"move",draggable:!0,onmousemove:function(u){ya(u.event)},onmousedown:ed(this._onHandleDragMove,this,0,0),drift:ed(this._onHandleDragMove,this),ondragend:ed(this._onHandleDragEnd,this)}),a.add(n)),Qx(n,t,!1),n.setStyle(i.getItemStyle(null,["color","borderColor","borderWidth","opacity","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY"]));var l=i.get("size");F(l)||(l=[l,l]),n.scaleX=l[0]/2,n.scaleY=l[1]/2,Oo(this,"_doDispatchAxisPointer",i.get("throttle")||0,"fixRate"),this._moveHandleToValue(e,s)}},r.prototype._moveHandleToValue=function(e,t){Kx(this._axisPointerModel,!t&&this._moveAnimation,this._handle,rd(this.getHandleTransform(e,this._axisModel,this._axisPointerModel)))},r.prototype._onHandleDragMove=function(e,t){var a=this._handle;if(!!a){this._dragging=!0;var n=this.updateHandleTransform(rd(a),[e,t],this._axisModel,this._axisPointerModel);this._payloadInfo=n,a.stopAnimation(),a.attr(rd(n)),Zn(a).lastProp=null,this._doDispatchAxisPointer()}},r.prototype._doDispatchAxisPointer=function(){var e=this._handle;if(!!e){var t=this._payloadInfo,a=this._axisModel;this._api.dispatchAction({type:"updateAxisPointer",x:t.cursorPoint[0],y:t.cursorPoint[1],tooltipOption:t.tooltipOption,axesInfo:[{axisDim:a.axis.dim,axisIndex:a.componentIndex}]})}},r.prototype._onHandleDragEnd=function(){this._dragging=!1;var e=this._handle;if(!!e){var t=this._axisPointerModel.get("value");this._moveHandleToValue(t),this._api.dispatchAction({type:"hideTip"})}},r.prototype.clear=function(e){this._lastValue=null,this._lastStatus=null;var t=e.getZr(),a=this._group,n=this._handle;t&&a&&(this._lastGraphicKey=null,a&&t.remove(a),n&&t.remove(n),this._group=null,this._handle=null,this._payloadInfo=null),rl(this,"_doDispatchAxisPointer")},r.prototype.doClear=function(){},r.prototype.buildLabel=function(e,t,a){return a=a||0,{x:e[a],y:e[1-a],width:t[a],height:t[1-a]}},r}();function Kx(r,e,t,a){jM(Zn(t).lastProp,a)||(Zn(t).lastProp=a,e?Lt(t,a,r):(t.stopAnimation(),t.attr(a)))}function jM(r,e){if(et(r)&&et(e)){var t=!0;return A(e,function(a,n){t=t&&jM(r[n],a)}),!!t}else return r===e}function Jx(r,e){r[e.get(["label","show"])?"show":"hide"]()}function rd(r){return{x:r.x||0,y:r.y||0,rotation:r.rotation||0}}function Qx(r,e,t){var a=e.get("z"),n=e.get("zlevel");r&&r.traverse(function(i){i.type!=="group"&&(a!=null&&(i.z=a),n!=null&&(i.zlevel=n),i.silent=t)})}var om=g$;function sm(r){var e=r.get("type"),t=r.getModel(e+"Style"),a;return e==="line"?(a=t.getLineStyle(),a.fill=null):e==="shadow"&&(a=t.getAreaStyle(),a.stroke=null),a}function tL(r,e,t,a,n){var i=t.get("value"),o=eL(i,e.axis,e.ecModel,t.get("seriesDataIndices"),{precision:t.get(["label","precision"]),formatter:t.get(["label","formatter"])}),s=t.getModel("label"),l=Io(s.get("padding")||0),u=s.getFont(),f=xl(o,u),h=n.position,v=f.width+l[1]+l[3],c=f.height+l[0]+l[2],d=n.align;d==="right"&&(h[0]-=v),d==="center"&&(h[0]-=v/2);var p=n.verticalAlign;p==="bottom"&&(h[1]-=c),p==="middle"&&(h[1]-=c/2),y$(h,v,c,a);var g=s.get("backgroundColor");(!g||g==="auto")&&(g=e.get(["axisLine","lineStyle","color"])),r.label={x:h[0],y:h[1],style:Nt(s,{text:o,font:u,fill:s.getTextColor(),padding:l,backgroundColor:g}),z2:10}}function y$(r,e,t,a){var n=a.getWidth(),i=a.getHeight();r[0]=Math.min(r[0]+e,n)-e,r[1]=Math.min(r[1]+t,i)-t,r[0]=Math.max(r[0],0),r[1]=Math.max(r[1],0)}function eL(r,e,t,a,n){r=e.scale.parse(r);var i=e.scale.getLabel({value:r},{precision:n.precision}),o=n.formatter;if(o){var s={value:_y(e,{value:r}),axisDimension:e.dim,axisIndex:e.index,seriesData:[]};A(a,function(l){var u=t.getSeriesByIndex(l.seriesIndex),f=l.dataIndexInside,h=u&&u.getDataParams(f);h&&s.seriesData.push(h)}),U(o)?i=o.replace("{value}",i):J(o)&&(i=o(s))}return i}function lm(r,e,t){var a=ur();return bi(a,a,t.rotation),Xr(a,a,t.position),Cr([r.dataToCoord(e),(t.labelOffset||0)+(t.labelDirection||1)*(t.labelMargin||0)],a)}function rL(r,e,t,a,n,i){var o=wa.innerTextLayout(t.rotation,0,t.labelDirection);t.labelMargin=n.get(["label","margin"]),tL(e,a,n,i,{position:lm(a.axis,r,t),align:o.textAlign,verticalAlign:o.textVerticalAlign})}function um(r,e,t){return t=t||0,{x1:r[t],y1:r[1-t],x2:e[t],y2:e[1-t]}}function aL(r,e,t){return t=t||0,{x:r[t],y:r[1-t],width:e[t],height:e[1-t]}}function jx(r,e,t,a,n,i){return{cx:r,cy:e,r0:t,r:a,startAngle:n,endAngle:i,clockwise:!0}}var m$=function(r){k(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.makeElOption=function(t,a,n,i,o){var s=n.axis,l=s.grid,u=i.get("type"),f=tw(l,s).getOtherAxis(s).getGlobalExtent(),h=s.toGlobalCoord(s.dataToCoord(a,!0));if(u&&u!=="none"){var v=sm(i),c=_$[u](s,h,f);c.style=v,t.graphicKey=c.type,t.pointer=c}var d=Dp(l.model,n);rL(a,t,d,n,i,o)},e.prototype.getHandleTransform=function(t,a,n){var i=Dp(a.axis.grid.model,a,{labelInside:!1});i.labelMargin=n.get(["handle","margin"]);var o=lm(a.axis,t,i);return{x:o[0],y:o[1],rotation:i.rotation+(i.labelDirection<0?Math.PI:0)}},e.prototype.updateHandleTransform=function(t,a,n,i){var o=n.axis,s=o.grid,l=o.getGlobalExtent(!0),u=tw(s,o).getOtherAxis(o).getGlobalExtent(),f=o.dim==="x"?0:1,h=[t.x,t.y];h[f]+=a[f],h[f]=Math.min(l[1],h[f]),h[f]=Math.max(l[0],h[f]);var v=(u[1]+u[0])/2,c=[v,v];c[f]=h[f];var d=[{verticalAlign:"middle"},{align:"center"}];return{x:h[0],y:h[1],rotation:t.rotation,cursorPoint:c,tooltipOption:d[f]}},e}(om);function tw(r,e){var t={};return t[e.dim+"AxisIndex"]=e.index,r.getCartesian(t)}var _$={line:function(r,e,t){var a=um([e,t[0]],[e,t[1]],ew(r));return{type:"Line",subPixelOptimize:!0,shape:a}},shadow:function(r,e,t){var a=Math.max(1,r.getBandWidth()),n=t[1]-t[0];return{type:"Rect",shape:aL([e-a/2,t[0]],[a,n],ew(r))}}};function ew(r){return r.dim==="x"?0:1}var S$=m$,x$=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.type="axisPointer",e.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}},e}(Tt),w$=x$,ua=Ct(),b$=A;function nL(r,e,t){if(!At.node){var a=e.getZr();ua(a).records||(ua(a).records={}),C$(a,e);var n=ua(a).records[r]||(ua(a).records[r]={});n.handler=t}}function C$(r,e){if(ua(r).initialized)return;ua(r).initialized=!0,t("click",ot(rw,"click")),t("mousemove",ot(rw,"mousemove")),t("globalout",A$);function t(a,n){r.on(a,function(i){var o=D$(e);b$(ua(r).records,function(s){s&&n(s,i,o.dispatchAction)}),T$(o.pendings,e)})}}function T$(r,e){var t=r.showTip.length,a=r.hideTip.length,n;t?n=r.showTip[t-1]:a&&(n=r.hideTip[a-1]),n&&(n.dispatchAction=null,e.dispatchAction(n))}function A$(r,e,t){r.handler("leave",null,t)}function rw(r,e,t,a){e.handler(r,t,a)}function D$(r){var e={showTip:[],hideTip:[]},t=function(a){var n=e[a.type];n?n.push(a):(a.dispatchAction=t,r.dispatchAction(a))};return{dispatchAction:t,pendings:e}}function qp(r,e){if(!At.node){var t=e.getZr(),a=(ua(t).records||{})[r];a&&(ua(t).records[r]=null)}}var M$=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.render=function(t,a,n){var i=a.getComponent("tooltip"),o=t.get("triggerOn")||i&&i.get("triggerOn")||"mousemove|click";nL("axisPointer",n,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})})},e.prototype.remove=function(t,a){qp("axisPointer",a)},e.prototype.dispose=function(t,a){qp("axisPointer",a)},e.type="axisPointer",e}(Ut),L$=M$;function iL(r,e){var t=[],a=r.seriesIndex,n;if(a==null||!(n=e.getSeriesByIndex(a)))return{point:[]};var i=n.getData(),o=di(i,r);if(o==null||o<0||F(o))return{point:[]};var s=i.getItemGraphicEl(o),l=n.coordinateSystem;if(n.getTooltipPosition)t=n.getTooltipPosition(o)||[];else if(l&&l.dataToPoint)if(r.isStacked){var u=l.getBaseAxis(),f=l.getOtherAxis(u),h=f.dim,v=u.dim,c=h==="x"||h==="radius"?1:0,d=i.mapDimension(v),p=[];p[c]=i.get(d,o),p[1-c]=i.get(i.getCalculationInfo("stackResultDimension"),o),t=l.dataToPoint(p)||[]}else t=l.dataToPoint(i.getValues(G(l.dimensions,function(y){return i.mapDimension(y)}),o))||[];else if(s){var g=s.getBoundingRect().clone();g.applyTransform(s.transform),t=[g.x+g.width/2,g.y+g.height/2]}return{point:t,el:s}}var aw=Ct();function I$(r,e,t){var a=r.currTrigger,n=[r.x,r.y],i=r,o=r.dispatchAction||Y(t.dispatchAction,t),s=e.getComponent("axisPointer").coordSysAxesInfo;if(!!s){hf(n)&&(n=iL({seriesIndex:i.seriesIndex,dataIndex:i.dataIndex},e).point);var l=hf(n),u=i.axesInfo,f=s.axesInfo,h=a==="leave"||hf(n),v={},c={},d={list:[],map:{}},p={showPointer:ot(R$,c),showTooltip:ot(E$,d)};A(s.coordSysMap,function(y,m){var _=l||y.containPoint(n);A(s.coordSysAxesInfo[m],function(S,w){var x=S.axis,b=N$(u,S);if(!h&&_&&(!u||b)){var C=b&&b.value;C==null&&!l&&(C=x.pointToData(n)),C!=null&&nw(S,C,p,!1,v)}})});var g={};return A(f,function(y,m){var _=y.linkGroup;_&&!c[m]&&A(_.axesInfo,function(S,w){var x=c[w];if(S!==y&&x){var b=x.value;_.mapper&&(b=y.axis.scale.parse(_.mapper(b,iw(S),iw(y)))),g[y.key]=b}})}),A(g,function(y,m){nw(f[m],y,p,!0,v)}),k$(c,f,v),O$(d,n,r,o),B$(f,o,t),v}}function nw(r,e,t,a,n){var i=r.axis;if(!(i.scale.isBlank()||!i.containData(e))){if(!r.involveSeries){t.showPointer(r,e);return}var o=P$(e,r),s=o.payloadBatch,l=o.snapToValue;s[0]&&n.seriesIndex==null&&V(n,s[0]),!a&&r.snap&&i.containData(l)&&l!=null&&(e=l),t.showPointer(r,e,s),t.showTooltip(r,o,l)}}function P$(r,e){var t=e.axis,a=t.dim,n=r,i=[],o=Number.MAX_VALUE,s=-1;return A(e.seriesModels,function(l,u){var f=l.getData().mapDimensionsAll(a),h,v;if(l.getAxisTooltipData){var c=l.getAxisTooltipData(f,r,t);v=c.dataIndices,h=c.nestestValue}else{if(v=l.getData().indicesOfNearest(f[0],r,t.type==="category"?.5:null),!v.length)return;h=l.getData().get(f[0],v[0])}if(!(h==null||!isFinite(h))){var d=r-h,p=Math.abs(d);p<=o&&((p=0&&s<0)&&(o=p,s=d,n=h,i.length=0),A(v,function(g){i.push({seriesIndex:l.seriesIndex,dataIndexInside:g,dataIndex:l.getData().getRawIndex(g)})}))}}),{payloadBatch:i,snapToValue:n}}function R$(r,e,t,a){r[e.key]={value:t,payloadBatch:a}}function E$(r,e,t,a){var n=t.payloadBatch,i=e.axis,o=i.model,s=e.axisPointerModel;if(!(!e.triggerTooltip||!n.length)){var l=e.coordSys.model,u=ol(l),f=r.map[u];f||(f=r.map[u]={coordSysId:l.id,coordSysIndex:l.componentIndex,coordSysType:l.type,coordSysMainType:l.mainType,dataByAxis:[]},r.list.push(f)),f.dataByAxis.push({axisDim:i.dim,axisIndex:o.componentIndex,axisType:o.type,axisId:o.id,value:a,valueLabelOpt:{precision:s.get(["label","precision"]),formatter:s.get(["label","formatter"])},seriesDataIndices:n.slice()})}}function k$(r,e,t){var a=t.axesInfo=[];A(e,function(n,i){var o=n.axisPointerModel.option,s=r[i];s?(!n.useHandle&&(o.status="show"),o.value=s.value,o.seriesDataIndices=(s.payloadBatch||[]).slice()):!n.useHandle&&(o.status="hide"),o.status==="show"&&a.push({axisDim:n.axis.dim,axisIndex:n.axis.model.componentIndex,value:o.value})})}function O$(r,e,t,a){if(hf(e)||!r.list.length){a({type:"hideTip"});return}var n=((r.list[0].dataByAxis[0]||{}).seriesDataIndices||[])[0]||{};a({type:"showTip",escapeConnect:!0,x:e[0],y:e[1],tooltipOption:t.tooltipOption,position:t.position,dataIndexInside:n.dataIndexInside,dataIndex:n.dataIndex,seriesIndex:n.seriesIndex,dataByCoordSys:r.list})}function B$(r,e,t){var a=t.getZr(),n="axisPointerLastHighlights",i=aw(a)[n]||{},o=aw(a)[n]={};A(r,function(u,f){var h=u.axisPointerModel.option;h.status==="show"&&u.triggerEmphasis&&A(h.seriesDataIndices,function(v){var c=v.seriesIndex+" | "+v.dataIndex;o[c]=v})});var s=[],l=[];A(i,function(u,f){!o[f]&&l.push(u)}),A(o,function(u,f){!i[f]&&s.push(u)}),l.length&&t.dispatchAction({type:"downplay",escapeConnect:!0,notBlur:!0,batch:l}),s.length&&t.dispatchAction({type:"highlight",escapeConnect:!0,notBlur:!0,batch:s})}function N$(r,e){for(var t=0;t<(r||[]).length;t++){var a=r[t];if(e.axis.dim===a.axisDim&&e.axis.model.componentIndex===a.axisIndex)return a}}function iw(r){var e=r.axis.model,t={},a=t.axisDim=r.axis.dim;return t.axisIndex=t[a+"AxisIndex"]=e.componentIndex,t.axisName=t[a+"AxisName"]=e.name,t.axisId=t[a+"AxisId"]=e.id,t}function hf(r){return!r||r[0]==null||isNaN(r[0])||r[1]==null||isNaN(r[1])}function Fl(r){Mi.registerAxisPointerClass("CartesianAxisPointer",S$),r.registerComponentModel(w$),r.registerComponentView(L$),r.registerPreprocessor(function(e){if(e){(!e.axisPointer||e.axisPointer.length===0)&&(e.axisPointer={});var t=e.axisPointer.link;t&&!F(t)&&(e.axisPointer.link=[t])}}),r.registerProcessor(r.PRIORITY.PROCESSOR.STATISTIC,function(e,t){e.getComponent("axisPointer").coordSysAxesInfo=zV(e,t)}),r.registerAction({type:"updateAxisPointer",event:"updateAxisPointer",update:":updateAxisPointer"},I$)}function oL(r){ct(gD),ct(Fl)}var V$=function(r){k(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.makeElOption=function(t,a,n,i,o){var s=n.axis;s.dim==="angle"&&(this.animationThreshold=Math.PI/18);var l=s.polar,u=l.getOtherAxis(s),f=u.getExtent(),h=s.dataToCoord(a),v=i.get("type");if(v&&v!=="none"){var c=sm(i),d=F$[v](s,l,h,f);d.style=c,t.graphicKey=d.type,t.pointer=d}var p=i.get(["label","margin"]),g=z$(a,n,i,l,p);tL(t,n,i,o,g)},e}(om);function z$(r,e,t,a,n){var i=e.axis,o=i.dataToCoord(r),s=a.getAngleAxis().getExtent()[0];s=s/180*Math.PI;var l=a.getRadiusAxis().getExtent(),u,f,h;if(i.dim==="radius"){var v=ur();bi(v,v,s),Xr(v,v,[a.cx,a.cy]),u=Cr([o,-n],v);var c=e.getModel("axisLabel").get("rotate")||0,d=wa.innerTextLayout(s,c*Math.PI/180,-1);f=d.textAlign,h=d.textVerticalAlign}else{var p=l[1];u=a.coordToPoint([p+n,o]);var g=a.cx,y=a.cy;f=Math.abs(u[0]-g)/p<.3?"center":u[0]>g?"left":"right",h=Math.abs(u[1]-y)/p<.3?"middle":u[1]>y?"top":"bottom"}return{position:u,align:f,verticalAlign:h}}var F$={line:function(r,e,t,a){return r.dim==="angle"?{type:"Line",shape:um(e.coordToPoint([a[0],t]),e.coordToPoint([a[1],t]))}:{type:"Circle",shape:{cx:e.cx,cy:e.cy,r:t}}},shadow:function(r,e,t,a){var n=Math.max(1,r.getBandWidth()),i=Math.PI/180;return r.dim==="angle"?{type:"Sector",shape:jx(e.cx,e.cy,a[0],a[1],(-t-n/2)*i,(-t+n/2)*i)}:{type:"Sector",shape:jx(e.cx,e.cy,t-n/2,t+n/2,0,Math.PI*2)}}},G$=V$,H$=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.findAxisModel=function(t){var a,n=this.ecModel;return n.eachComponent(t,function(i){i.getCoordSysModel()===this&&(a=i)},this),a},e.type="polar",e.dependencies=["radiusAxis","angleAxis"],e.defaultOption={z:0,center:["50%","50%"],radius:"80%"},e}(Tt),W$=H$,fm=function(r){k(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.getCoordSysModel=function(){return this.getReferringComponents("polar",Qt).models[0]},e.type="polarAxis",e}(Tt);te(fm,Rl);var $$=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.type="angleAxis",e}(fm),U$=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.type="radiusAxis",e}(fm),hm=function(r){k(e,r);function e(t,a){return r.call(this,"radius",t,a)||this}return e.prototype.pointToData=function(t,a){return this.polar.pointToData(t,a)[this.dim==="radius"?0:1]},e}(Mr);hm.prototype.dataToRadius=Mr.prototype.dataToCoord;hm.prototype.radiusToData=Mr.prototype.coordToData;var Y$=hm,Z$=Ct(),vm=function(r){k(e,r);function e(t,a){return r.call(this,"angle",t,a||[0,360])||this}return e.prototype.pointToData=function(t,a){return this.polar.pointToData(t,a)[this.dim==="radius"?0:1]},e.prototype.calculateCategoryInterval=function(){var t=this,a=t.getLabelModel(),n=t.scale,i=n.getExtent(),o=n.count();if(i[1]-i[0]<1)return 0;var s=i[0],l=t.dataToCoord(s+1)-t.dataToCoord(s),u=Math.abs(l),f=xl(s==null?"":s+"",a.getFont(),"center","top"),h=Math.max(f.height,7),v=h/u;isNaN(v)&&(v=1/0);var c=Math.max(0,Math.floor(v)),d=Z$(t.model),p=d.lastAutoInterval,g=d.lastTickCount;return p!=null&&g!=null&&Math.abs(p-c)<=1&&Math.abs(g-o)<=1&&p>c?c=p:(d.lastTickCount=o,d.lastAutoInterval=c),c},e}(Mr);vm.prototype.dataToAngle=Mr.prototype.dataToCoord;vm.prototype.angleToData=Mr.prototype.coordToData;var X$=vm,sL=["radius","angle"],q$=function(){function r(e){this.dimensions=sL,this.type="polar",this.cx=0,this.cy=0,this._radiusAxis=new Y$,this._angleAxis=new X$,this.axisPointerEnabled=!0,this.name=e||"",this._radiusAxis.polar=this._angleAxis.polar=this}return r.prototype.containPoint=function(e){var t=this.pointToCoord(e);return this._radiusAxis.contain(t[0])&&this._angleAxis.contain(t[1])},r.prototype.containData=function(e){return this._radiusAxis.containData(e[0])&&this._angleAxis.containData(e[1])},r.prototype.getAxis=function(e){var t="_"+e+"Axis";return this[t]},r.prototype.getAxes=function(){return[this._radiusAxis,this._angleAxis]},r.prototype.getAxesByScale=function(e){var t=[],a=this._angleAxis,n=this._radiusAxis;return a.scale.type===e&&t.push(a),n.scale.type===e&&t.push(n),t},r.prototype.getAngleAxis=function(){return this._angleAxis},r.prototype.getRadiusAxis=function(){return this._radiusAxis},r.prototype.getOtherAxis=function(e){var t=this._angleAxis;return e===t?this._radiusAxis:t},r.prototype.getBaseAxis=function(){return this.getAxesByScale("ordinal")[0]||this.getAxesByScale("time")[0]||this.getAngleAxis()},r.prototype.getTooltipAxes=function(e){var t=e!=null&&e!=="auto"?this.getAxis(e):this.getBaseAxis();return{baseAxes:[t],otherAxes:[this.getOtherAxis(t)]}},r.prototype.dataToPoint=function(e,t){return this.coordToPoint([this._radiusAxis.dataToRadius(e[0],t),this._angleAxis.dataToAngle(e[1],t)])},r.prototype.pointToData=function(e,t){var a=this.pointToCoord(e);return[this._radiusAxis.radiusToData(a[0],t),this._angleAxis.angleToData(a[1],t)]},r.prototype.pointToCoord=function(e){var t=e[0]-this.cx,a=e[1]-this.cy,n=this.getAngleAxis(),i=n.getExtent(),o=Math.min(i[0],i[1]),s=Math.max(i[0],i[1]);n.inverse?o=s-360:s=o+360;var l=Math.sqrt(t*t+a*a);t/=l,a/=l;for(var u=Math.atan2(-a,t)/Math.PI*180,f=us;)u+=f*360;return[l,u]},r.prototype.coordToPoint=function(e){var t=e[0],a=e[1]/180*Math.PI,n=Math.cos(a)*t+this.cx,i=-Math.sin(a)*t+this.cy;return[n,i]},r.prototype.getArea=function(){var e=this.getAngleAxis(),t=this.getRadiusAxis(),a=t.getExtent().slice();a[0]>a[1]&&a.reverse();var n=e.getExtent(),i=Math.PI/180;return{cx:this.cx,cy:this.cy,r0:a[0],r:a[1],startAngle:-n[0]*i,endAngle:-n[1]*i,clockwise:e.inverse,contain:function(o,s){var l=o-this.cx,u=s-this.cy,f=l*l+u*u-1e-4,h=this.r,v=this.r0;return f<=h*h&&f>=v*v}}},r.prototype.convertToPixel=function(e,t,a){var n=ow(t);return n===this?this.dataToPoint(a):null},r.prototype.convertFromPixel=function(e,t,a){var n=ow(t);return n===this?this.pointToData(a):null},r}();function ow(r){var e=r.seriesModel,t=r.polarModel;return t&&t.coordinateSystem||e&&e.coordinateSystem}var K$=q$;function J$(r,e,t){var a=e.get("center"),n=t.getWidth(),i=t.getHeight();r.cx=W(a[0],n),r.cy=W(a[1],i);var o=r.getRadiusAxis(),s=Math.min(n,i)/2,l=e.get("radius");l==null?l=[0,"100%"]:F(l)||(l=[0,l]);var u=[W(l[0],s),W(l[1],s)];o.inverse?o.setExtent(u[1],u[0]):o.setExtent(u[0],u[1])}function Q$(r,e){var t=this,a=t.getAngleAxis(),n=t.getRadiusAxis();if(a.scale.setExtent(1/0,-1/0),n.scale.setExtent(1/0,-1/0),r.eachSeries(function(s){if(s.coordinateSystem===t){var l=s.getData();A(Gf(l,"radius"),function(u){n.scale.unionExtentFromData(l,u)}),A(Gf(l,"angle"),function(u){a.scale.unionExtentFromData(l,u)})}}),po(a.scale,a.model),po(n.scale,n.model),a.type==="category"&&!a.onBand){var i=a.getExtent(),o=360/a.scale.count();a.inverse?i[1]+=o:i[1]-=o,a.setExtent(i[0],i[1])}}function j$(r){return r.mainType==="angleAxis"}function sw(r,e){if(r.type=e.get("type"),r.scale=Hh(e),r.onBand=e.get("boundaryGap")&&r.type==="category",r.inverse=e.get("inverse"),j$(e)){r.inverse=r.inverse!==e.get("clockwise");var t=e.get("startAngle");r.setExtent(t,t+(r.inverse?-360:360))}e.axis=r,r.model=e}var tU={dimensions:sL,create:function(r,e){var t=[];return r.eachComponent("polar",function(a,n){var i=new K$(n+"");i.update=Q$;var o=i.getRadiusAxis(),s=i.getAngleAxis(),l=a.findAxisModel("radiusAxis"),u=a.findAxisModel("angleAxis");sw(o,l),sw(s,u),J$(i,a,e),t.push(i),a.coordinateSystem=i,i.model=a}),r.eachSeries(function(a){if(a.get("coordinateSystem")==="polar"){var n=a.getReferringComponents("polar",Qt).models[0];a.coordinateSystem=n.coordinateSystem}}),t}},eU=tU,rU=["axisLine","axisLabel","axisTick","minorTick","splitLine","minorSplitLine","splitArea"];function Bu(r,e,t){e[1]>e[0]&&(e=e.slice().reverse());var a=r.coordToPoint([e[0],t]),n=r.coordToPoint([e[1],t]);return{x1:a[0],y1:a[1],x2:n[0],y2:n[1]}}function Nu(r){var e=r.getRadiusAxis();return e.inverse?0:1}function lw(r){var e=r[0],t=r[r.length-1];e&&t&&Math.abs(Math.abs(e.coord-t.coord)-360)<1e-4&&r.pop()}var aU=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t.axisPointerClass="PolarAxisPointer",t}return e.prototype.render=function(t,a){if(this.group.removeAll(),!!t.get("show")){var n=t.axis,i=n.polar,o=i.getRadiusAxis().getExtent(),s=n.getTicksCoords(),l=n.getMinorTicksCoords(),u=G(n.getViewLabels(),function(f){f=at(f);var h=n.scale,v=h.type==="ordinal"?h.getRawOrdinalNumber(f.tickValue):f.tickValue;return f.coord=n.dataToCoord(v),f});lw(u),lw(s),A(rU,function(f){t.get([f,"show"])&&(!n.scale.isBlank()||f==="axisLine")&&nU[f](this.group,t,i,s,l,o,u)},this)}},e.type="angleAxis",e}(Mi),nU={axisLine:function(r,e,t,a,n,i){var o=e.getModel(["axisLine","lineStyle"]),s=Nu(t),l=s?0:1,u;i[l]===0?u=new Qr({shape:{cx:t.cx,cy:t.cy,r:i[s]},style:o.getLineStyle(),z2:1,silent:!0}):u=new Ch({shape:{cx:t.cx,cy:t.cy,r:i[s],r0:i[l]},style:o.getLineStyle(),z2:1,silent:!0}),u.style.fill=null,r.add(u)},axisTick:function(r,e,t,a,n,i){var o=e.getModel("axisTick"),s=(o.get("inside")?-1:1)*o.get("length"),l=i[Nu(t)],u=G(a,function(f){return new ue({shape:Bu(t,[l,l+s],f.coord)})});r.add(nr(u,{style:tt(o.getModel("lineStyle").getLineStyle(),{stroke:e.get(["axisLine","lineStyle","color"])})}))},minorTick:function(r,e,t,a,n,i){if(!!n.length){for(var o=e.getModel("axisTick"),s=e.getModel("minorTick"),l=(o.get("inside")?-1:1)*s.get("length"),u=i[Nu(t)],f=[],h=0;hy?"left":"right",S=Math.abs(g[1]-m)/p<.3?"middle":g[1]>m?"top":"bottom";if(s&&s[d]){var w=s[d];et(w)&&w.textStyle&&(c=new Vt(w.textStyle,l,l.ecModel))}var x=new Dt({silent:wa.isLabelSilent(e),style:Nt(c,{x:g[0],y:g[1],fill:c.getTextColor()||e.get(["axisLine","lineStyle","color"]),text:h.formattedLabel,align:_,verticalAlign:S})});if(r.add(x),f){var b=wa.makeAxisEventDataBase(e);b.targetType="axisLabel",b.value=h.rawLabel,it(x).eventData=b}},this)},splitLine:function(r,e,t,a,n,i){var o=e.getModel("splitLine"),s=o.getModel("lineStyle"),l=s.get("color"),u=0;l=l instanceof Array?l:[l];for(var f=[],h=0;h=0?"p":"n",I=b;w&&(a[f][M]||(a[f][M]={p:b,n:b}),I=a[f][M][L]);var P=void 0,R=void 0,E=void 0,B=void 0;if(d.dim==="radius"){var O=d.dataToCoord(D)-b,z=l.dataToCoord(M);Math.abs(O)=B})}}})}function cU(r){var e={};A(r,function(a,n){var i=a.getData(),o=a.coordinateSystem,s=o.getBaseAxis(),l=uL(o,s),u=s.getExtent(),f=s.type==="category"?s.getBandWidth():Math.abs(u[1]-u[0])/i.count(),h=e[l]||{bandWidth:f,remainedWidth:f,autoWidthCount:0,categoryGap:"20%",gap:"30%",stacks:{}},v=h.stacks;e[l]=h;var c=lL(a);v[c]||h.autoWidthCount++,v[c]=v[c]||{width:0,maxWidth:0};var d=W(a.get("barWidth"),f),p=W(a.get("barMaxWidth"),f),g=a.get("barGap"),y=a.get("barCategoryGap");d&&!v[c].width&&(d=Math.min(h.remainedWidth,d),v[c].width=d,h.remainedWidth-=d),p&&(v[c].maxWidth=p),g!=null&&(h.gap=g),y!=null&&(h.categoryGap=y)});var t={};return A(e,function(a,n){t[n]={};var i=a.stacks,o=a.bandWidth,s=W(a.categoryGap,o),l=W(a.gap,1),u=a.remainedWidth,f=a.autoWidthCount,h=(u-s)/(f+(f-1)*l);h=Math.max(h,0),A(i,function(p,g){var y=p.maxWidth;y&&y=t.y&&e[1]<=t.y+t.height:a.contain(a.toLocalCoord(e[1]))&&e[0]>=t.y&&e[0]<=t.y+t.height},r.prototype.pointToData=function(e){var t=this.getAxis();return[t.coordToData(t.toLocalCoord(e[t.orient==="horizontal"?0:1]))]},r.prototype.dataToPoint=function(e){var t=this.getAxis(),a=this.getRect(),n=[],i=t.orient==="horizontal"?0:1;return e instanceof Array&&(e=e[0]),n[i]=t.toGlobalCoord(t.dataToCoord(+e)),n[1-i]=i===0?a.y+a.height/2:a.x+a.width/2,n},r.prototype.convertToPixel=function(e,t,a){var n=uw(t);return n===this?this.dataToPoint(a):null},r.prototype.convertFromPixel=function(e,t,a){var n=uw(t);return n===this?this.pointToData(a):null},r}();function uw(r){var e=r.seriesModel,t=r.singleAxisModel;return t&&t.coordinateSystem||e&&e.coordinateSystem}function AU(r,e){var t=[];return r.eachComponent("singleAxis",function(a,n){var i=new TU(a,r,e);i.name="single_"+n,i.resize(a,e),a.coordinateSystem=i,t.push(i)}),r.eachSeries(function(a){if(a.get("coordinateSystem")==="singleAxis"){var n=a.getReferringComponents("singleAxis",Qt).models[0];a.coordinateSystem=n&&n.coordinateSystem}}),t}var DU={create:AU,dimensions:hL},MU=DU,fw=["x","y"],LU=["width","height"],IU=function(r){k(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.makeElOption=function(t,a,n,i,o){var s=n.axis,l=s.coordinateSystem,u=nd(l,1-rh(s)),f=l.dataToPoint(a)[0],h=i.get("type");if(h&&h!=="none"){var v=sm(i),c=PU[h](s,f,u);c.style=v,t.graphicKey=c.type,t.pointer=c}var d=Kp(n);rL(a,t,d,n,i,o)},e.prototype.getHandleTransform=function(t,a,n){var i=Kp(a,{labelInside:!1});i.labelMargin=n.get(["handle","margin"]);var o=lm(a.axis,t,i);return{x:o[0],y:o[1],rotation:i.rotation+(i.labelDirection<0?Math.PI:0)}},e.prototype.updateHandleTransform=function(t,a,n,i){var o=n.axis,s=o.coordinateSystem,l=rh(o),u=nd(s,l),f=[t.x,t.y];f[l]+=a[l],f[l]=Math.min(u[1],f[l]),f[l]=Math.max(u[0],f[l]);var h=nd(s,1-l),v=(h[1]+h[0])/2,c=[v,v];return c[l]=f[l],{x:f[0],y:f[1],rotation:t.rotation,cursorPoint:c,tooltipOption:{verticalAlign:"middle"}}},e}(om),PU={line:function(r,e,t){var a=um([e,t[0]],[e,t[1]],rh(r));return{type:"Line",subPixelOptimize:!0,shape:a}},shadow:function(r,e,t){var a=r.getBandWidth(),n=t[1]-t[0];return{type:"Rect",shape:aL([e-a/2,t[0]],[a,n],rh(r))}}};function rh(r){return r.isHorizontal()?0:1}function nd(r,e){var t=r.getRect();return[t[fw[e]],t[fw[e]]+t[LU[e]]]}var RU=IU,EU=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.type="single",e}(Ut);function kU(r){ct(Fl),Mi.registerAxisPointerClass("SingleAxisPointer",RU),r.registerComponentView(EU),r.registerComponentView(wU),r.registerComponentModel(ad),yo(r,"single",ad,ad.defaultOption),r.registerCoordinateSystem("single",MU)}var OU=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.init=function(t,a,n){var i=Po(t);r.prototype.init.apply(this,arguments),hw(t,i)},e.prototype.mergeOption=function(t){r.prototype.mergeOption.apply(this,arguments),hw(this.option,t)},e.prototype.getCellSize=function(){return this.option.cellSize},e.type="calendar",e.defaultOption={z:2,left:80,top:60,cellSize:20,orient:"horizontal",splitLine:{show:!0,lineStyle:{color:"#000",width:1,type:"solid"}},itemStyle:{color:"#fff",borderWidth:1,borderColor:"#ccc"},dayLabel:{show:!0,firstDay:0,position:"start",margin:"50%",color:"#000"},monthLabel:{show:!0,position:"start",margin:5,align:"center",formatter:null,color:"#000"},yearLabel:{show:!0,position:null,margin:30,formatter:null,color:"#ccc",fontFamily:"sans-serif",fontWeight:"bolder",fontSize:20}},e}(Tt);function hw(r,e){var t=r.cellSize,a;F(t)?a=t:a=r.cellSize=[t,t],a.length===1&&(a[1]=a[0]);var n=G([0,1],function(i){return Y3(e,i)&&(a[i]="auto"),a[i]!=null&&a[i]!=="auto"});an(r,e,{type:"box",ignoreSize:n})}var BU=OU,NU=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.render=function(t,a,n){var i=this.group;i.removeAll();var o=t.coordinateSystem,s=o.getRangeInfo(),l=o.getOrient(),u=a.getLocaleModel();this._renderDayRect(t,s,i),this._renderLines(t,s,l,i),this._renderYearText(t,s,l,i),this._renderMonthText(t,u,l,i),this._renderWeekText(t,u,s,l,i)},e.prototype._renderDayRect=function(t,a,n){for(var i=t.coordinateSystem,o=t.getModel("itemStyle").getItemStyle(),s=i.getCellWidth(),l=i.getCellHeight(),u=a.start.time;u<=a.end.time;u=i.getNextNDay(u,1).time){var f=i.dataToRect([u],!1).tl,h=new bt({shape:{x:f[0],y:f[1],width:s,height:l},cursor:"default",style:o});n.add(h)}},e.prototype._renderLines=function(t,a,n,i){var o=this,s=t.coordinateSystem,l=t.getModel(["splitLine","lineStyle"]).getLineStyle(),u=t.get(["splitLine","show"]),f=l.lineWidth;this._tlpoints=[],this._blpoints=[],this._firstDayOfMonth=[],this._firstDayPoints=[];for(var h=a.start,v=0;h.time<=a.end.time;v++){d(h.formatedDate),v===0&&(h=s.getDateInfo(a.start.y+"-"+a.start.m));var c=h.date;c.setMonth(c.getMonth()+1),h=s.getDateInfo(c)}d(s.getNextNDay(a.end.time,1).formatedDate);function d(p){o._firstDayOfMonth.push(s.getDateInfo(p)),o._firstDayPoints.push(s.dataToRect([p],!1).tl);var g=o._getLinePointsOfOneWeek(t,p,n);o._tlpoints.push(g[0]),o._blpoints.push(g[g.length-1]),u&&o._drawSplitline(g,l,i)}u&&this._drawSplitline(o._getEdgesPoints(o._tlpoints,f,n),l,i),u&&this._drawSplitline(o._getEdgesPoints(o._blpoints,f,n),l,i)},e.prototype._getEdgesPoints=function(t,a,n){var i=[t[0].slice(),t[t.length-1].slice()],o=n==="horizontal"?0:1;return i[0][o]=i[0][o]-a/2,i[1][o]=i[1][o]+a/2,i},e.prototype._drawSplitline=function(t,a,n){var i=new Fe({z2:20,shape:{points:t},style:a});n.add(i)},e.prototype._getLinePointsOfOneWeek=function(t,a,n){for(var i=t.coordinateSystem,o=i.getDateInfo(a),s=[],l=0;l<7;l++){var u=i.getNextNDay(o.time,l),f=i.dataToRect([u.time],!1);s[2*u.day]=f.tl,s[2*u.day+1]=f[n==="horizontal"?"bl":"tr"]}return s},e.prototype._formatterLabel=function(t,a){return U(t)&&t?W3(t,a):J(t)?t(a):a.nameMap},e.prototype._yearTextPositionControl=function(t,a,n,i,o){var s=a[0],l=a[1],u=["center","bottom"];i==="bottom"?(l+=o,u=["center","top"]):i==="left"?s-=o:i==="right"?(s+=o,u=["center","top"]):l-=o;var f=0;return(i==="left"||i==="right")&&(f=Math.PI/2),{rotation:f,x:s,y:l,style:{align:u[0],verticalAlign:u[1]}}},e.prototype._renderYearText=function(t,a,n,i){var o=t.getModel("yearLabel");if(!!o.get("show")){var s=o.get("margin"),l=o.get("position");l||(l=n!=="horizontal"?"top":"left");var u=[this._tlpoints[this._tlpoints.length-1],this._blpoints[0]],f=(u[0][0]+u[1][0])/2,h=(u[0][1]+u[1][1])/2,v=n==="horizontal"?0:1,c={top:[f,u[v][1]],bottom:[f,u[1-v][1]],left:[u[1-v][0],h],right:[u[v][0],h]},d=a.start.y;+a.end.y>+a.start.y&&(d=d+"-"+a.end.y);var p=o.get("formatter"),g={start:a.start.y,end:a.end.y,nameMap:d},y=this._formatterLabel(p,g),m=new Dt({z2:30,style:Nt(o,{text:y})});m.attr(this._yearTextPositionControl(m,c[l],n,l,s)),i.add(m)}},e.prototype._monthTextPositionControl=function(t,a,n,i,o){var s="left",l="top",u=t[0],f=t[1];return n==="horizontal"?(f=f+o,a&&(s="center"),i==="start"&&(l="bottom")):(u=u+o,a&&(l="middle"),i==="start"&&(s="right")),{x:u,y:f,align:s,verticalAlign:l}},e.prototype._renderMonthText=function(t,a,n,i){var o=t.getModel("monthLabel");if(!!o.get("show")){var s=o.get("nameMap"),l=o.get("margin"),u=o.get("position"),f=o.get("align"),h=[this._tlpoints,this._blpoints];(!s||U(s))&&(s&&(a=op(s)||a),s=a.get(["time","monthAbbr"])||[]);var v=u==="start"?0:1,c=n==="horizontal"?0:1;l=u==="start"?-l:l;for(var d=f==="center",p=0;p=n.start.time&&a.times.end.time&&t.reverse(),t},r.prototype._getRangeInfo=function(e){var t=[this.getDateInfo(e[0]),this.getDateInfo(e[1])],a;t[0].time>t[1].time&&(a=!0,t.reverse());var n=Math.floor(t[1].time/id)-Math.floor(t[0].time/id)+1,i=new Date(t[0].time),o=i.getDate(),s=t[1].date.getDate();i.setDate(o+n-1);var l=i.getDate();if(l!==s)for(var u=i.getTime()-t[1].time>0?1:-1;(l=i.getDate())!==s&&(i.getTime()-t[1].time)*u>0;)n-=u,i.setDate(l-u);var f=Math.floor((n+t[0].day+6)/7),h=a?-f+1:f-1;return a&&t.reverse(),{range:[t[0].formatedDate,t[1].formatedDate],start:t[0],end:t[1],allDay:n,weeks:f,nthWeek:h,fweek:t[0].day,lweek:t[1].day}},r.prototype._getDateByWeeksAndDay=function(e,t,a){var n=this._getRangeInfo(a);if(e>n.weeks||e===0&&tn.lweek)return null;var i=(e-1)*7-n.fweek+t,o=new Date(n.start.time);return o.setDate(+n.start.d+i),this.getDateInfo(o)},r.create=function(e,t){var a=[];return e.eachComponent("calendar",function(n){var i=new r(n);a.push(i),n.coordinateSystem=i}),e.eachSeries(function(n){n.get("coordinateSystem")==="calendar"&&(n.coordinateSystem=a[n.get("calendarIndex")||0])}),a},r.dimensions=["time","value"],r}();function vw(r){var e=r.calendarModel,t=r.seriesModel,a=e?e.coordinateSystem:t?t.coordinateSystem:null;return a}var FU=zU;function GU(r){r.registerComponentModel(BU),r.registerComponentView(VU),r.registerCoordinateSystem("calendar",FU)}function HU(r,e){var t=r.existing;if(e.id=r.keyInfo.id,!e.type&&t&&(e.type=t.type),e.parentId==null){var a=e.parentOption;a?e.parentId=a.id:t&&(e.parentId=t.parentId)}e.parentOption=null}function cw(r,e){var t;return A(e,function(a){r[a]!=null&&r[a]!=="auto"&&(t=!0)}),t}function WU(r,e,t){var a=V({},t),n=r[e],i=t.$action||"merge";i==="merge"?n?(ht(n,a,!0),an(n,a,{ignoreSize:!0}),ZC(t,n),Vu(t,n),Vu(t,n,"shape"),Vu(t,n,"style"),Vu(t,n,"extra"),t.clipPath=n.clipPath):r[e]=a:i==="replace"?r[e]=a:i==="remove"&&n&&(r[e]=null)}var vL=["transition","enterFrom","leaveTo"],$U=vL.concat(["enterAnimation","updateAnimation","leaveAnimation"]);function Vu(r,e,t){if(t&&(!r[t]&&e[t]&&(r[t]={}),r=r[t],e=e[t]),!(!r||!e))for(var a=t?vL:$U,n=0;n=0;f--){var h=n[f],v=ee(h.id,null),c=v!=null?o.get(v):null;if(!!c){var d=c.parent,y=tr(d),m=d===i?{width:s,height:l}:{width:y.width,height:y.height},_={},S=kh(c,h,m,null,{hv:h.hv,boundingMode:h.bounding},_);if(!tr(c).isNew&&S){for(var w=h.transition,x={},b=0;b=0)?x[C]=T:c[C]=T}Lt(c,x,t,0)}else c.attr(_)}}},e.prototype._clear=function(){var t=this,a=this._elMap;a.each(function(n){vf(n,tr(n).option,a,t._lastGraphicModel)}),this._elMap=q()},e.prototype.dispose=function(){this._clear()},e.type="graphic",e}(Ut);function Jp(r){var e=Z(dw,r)?dw[r]:$g(r),t=new e({});return tr(t).type=r,t}function pw(r,e,t,a){var n=Jp(t);return e.add(n),a.set(r,n),tr(n).id=r,tr(n).isNew=!0,n}function vf(r,e,t,a){var n=r&&r.parent;n&&(r.type==="group"&&r.traverse(function(i){vf(i,e,t,a)}),qh(r,e,a),t.removeKey(tr(r).id))}function gw(r,e,t,a){r.isGroup||A([["cursor",fr.prototype.cursor],["zlevel",a||0],["z",t||0],["z2",0]],function(n){var i=n[0];Z(e,i)?r[i]=ft(e[i],n[1]):r[i]==null&&(r[i]=n[1])}),A(St(e),function(n){if(n.indexOf("on")===0){var i=e[n];r[n]=J(i)?i:null}}),Z(e,"draggable")&&(r.draggable=e.draggable),e.name!=null&&(r.name=e.name),e.id!=null&&(r.id=e.id)}function XU(r){return r=V({},r),A(["id","parentId","$action","hv","bounding","textContent","clipPath"].concat(YC),function(e){delete r[e]}),r}function qU(r,e,t){var a=it(r).eventData;!r.silent&&!r.ignore&&!a&&(a=it(r).eventData={componentType:"graphic",componentIndex:e.componentIndex,name:r.name}),a&&(a.info=t.info)}function KU(r){r.registerComponentModel(YU),r.registerComponentView(ZU),r.registerPreprocessor(function(e){var t=e.graphic;F(t)?!t[0]||!t[0].elements?e.graphic=[{elements:t}]:e.graphic=[e.graphic[0]]:t&&!t.elements&&(e.graphic=[{elements:[t]}])})}var yw=["x","y","radius","angle","single"],JU=["cartesian2d","polar","singleAxis"];function QU(r){var e=r.get("coordinateSystem");return dt(JU,e)>=0}function qa(r){return r+"Axis"}function jU(r,e){var t=q(),a=[],n=q();r.eachComponent({mainType:"dataZoom",query:e},function(f){n.get(f.uid)||s(f)});var i;do i=!1,r.eachComponent("dataZoom",o);while(i);function o(f){!n.get(f.uid)&&l(f)&&(s(f),i=!0)}function s(f){n.set(f.uid,!0),a.push(f),u(f)}function l(f){var h=!1;return f.eachTargetAxis(function(v,c){var d=t.get(v);d&&d[c]&&(h=!0)}),h}function u(f){f.eachTargetAxis(function(h,v){(t.get(h)||t.set(h,[]))[v]=!0})}return a}function cL(r){var e=r.ecModel,t={infoList:[],infoMap:q()};return r.eachTargetAxis(function(a,n){var i=e.getComponent(qa(a),n);if(!!i){var o=i.getCoordSysModel();if(!!o){var s=o.uid,l=t.infoMap.get(s);l||(l={model:o,axisModels:[]},t.infoList.push(l),t.infoMap.set(s,l)),l.axisModels.push(i)}}}),t}var od=function(){function r(){this.indexList=[],this.indexMap=[]}return r.prototype.add=function(e){this.indexMap[e]||(this.indexList.push(e),this.indexMap[e]=!0)},r}(),tY=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t._autoThrottle=!0,t._noTarget=!0,t._rangePropMode=["percent","percent"],t}return e.prototype.init=function(t,a,n){var i=mw(t);this.settledOption=i,this.mergeDefaultAndTheme(t,n),this._doInit(i)},e.prototype.mergeOption=function(t){var a=mw(t);ht(this.option,t,!0),ht(this.settledOption,a,!0),this._doInit(a)},e.prototype._doInit=function(t){var a=this.option;this._setDefaultThrottle(t),this._updateRangeUse(t);var n=this.settledOption;A([["start","startValue"],["end","endValue"]],function(i,o){this._rangePropMode[o]==="value"&&(a[i[0]]=n[i[0]]=null)},this),this._resetTarget()},e.prototype._resetTarget=function(){var t=this.get("orient",!0),a=this._targetAxisInfoMap=q(),n=this._fillSpecifiedTargetAxis(a);n?this._orient=t||this._makeAutoOrientByTargetAxis():(this._orient=t||"horizontal",this._fillAutoTargetAxisByOrient(a,this._orient)),this._noTarget=!0,a.each(function(i){i.indexList.length&&(this._noTarget=!1)},this)},e.prototype._fillSpecifiedTargetAxis=function(t){var a=!1;return A(yw,function(n){var i=this.getReferringComponents(qa(n),bk);if(!!i.specified){a=!0;var o=new od;A(i.models,function(s){o.add(s.componentIndex)}),t.set(n,o)}},this),a},e.prototype._fillAutoTargetAxisByOrient=function(t,a){var n=this.ecModel,i=!0;if(i){var o=a==="vertical"?"y":"x",s=n.findComponents({mainType:o+"Axis"});l(s,o)}if(i){var s=n.findComponents({mainType:"singleAxis",filter:function(f){return f.get("orient",!0)===a}});l(s,"single")}function l(u,f){var h=u[0];if(!!h){var v=new od;if(v.add(h.componentIndex),t.set(f,v),i=!1,f==="x"||f==="y"){var c=h.getReferringComponents("grid",Qt).models[0];c&&A(u,function(d){h.componentIndex!==d.componentIndex&&c===d.getReferringComponents("grid",Qt).models[0]&&v.add(d.componentIndex)})}}}i&&A(yw,function(u){if(!!i){var f=n.findComponents({mainType:qa(u),filter:function(v){return v.get("type",!0)==="category"}});if(f[0]){var h=new od;h.add(f[0].componentIndex),t.set(u,h),i=!1}}},this)},e.prototype._makeAutoOrientByTargetAxis=function(){var t;return this.eachTargetAxis(function(a){!t&&(t=a)},this),t==="y"?"vertical":"horizontal"},e.prototype._setDefaultThrottle=function(t){if(t.hasOwnProperty("throttle")&&(this._autoThrottle=!1),this._autoThrottle){var a=this.ecModel.option;this.option.throttle=a.animation&&a.animationDurationUpdate>0?100:20}},e.prototype._updateRangeUse=function(t){var a=this._rangePropMode,n=this.get("rangeMode");A([["start","startValue"],["end","endValue"]],function(i,o){var s=t[i[0]]!=null,l=t[i[1]]!=null;s&&!l?a[o]="percent":!s&&l?a[o]="value":n?a[o]=n[o]:s&&(a[o]="percent")})},e.prototype.noTarget=function(){return this._noTarget},e.prototype.getFirstTargetAxisModel=function(){var t;return this.eachTargetAxis(function(a,n){t==null&&(t=this.ecModel.getComponent(qa(a),n))},this),t},e.prototype.eachTargetAxis=function(t,a){this._targetAxisInfoMap.each(function(n,i){A(n.indexList,function(o){t.call(a,i,o)})})},e.prototype.getAxisProxy=function(t,a){var n=this.getAxisModel(t,a);if(n)return n.__dzAxisProxy},e.prototype.getAxisModel=function(t,a){var n=this._targetAxisInfoMap.get(t);if(n&&n.indexMap[a])return this.ecModel.getComponent(qa(t),a)},e.prototype.setRawRange=function(t){var a=this.option,n=this.settledOption;A([["start","startValue"],["end","endValue"]],function(i){(t[i[0]]!=null||t[i[1]]!=null)&&(a[i[0]]=n[i[0]]=t[i[0]],a[i[1]]=n[i[1]]=t[i[1]])},this),this._updateRangeUse(t)},e.prototype.setCalculatedRange=function(t){var a=this.option;A(["start","startValue","end","endValue"],function(n){a[n]=t[n]})},e.prototype.getPercentRange=function(){var t=this.findRepresentativeAxisProxy();if(t)return t.getDataPercentWindow()},e.prototype.getValueRange=function(t,a){if(t==null&&a==null){var n=this.findRepresentativeAxisProxy();if(n)return n.getDataValueWindow()}else return this.getAxisProxy(t,a).getDataValueWindow()},e.prototype.findRepresentativeAxisProxy=function(t){if(t)return t.__dzAxisProxy;for(var a,n=this._targetAxisInfoMap.keys(),i=0;io[1];if(_&&!S&&!w)return!0;_&&(g=!0),S&&(d=!0),w&&(p=!0)}return g&&d&&p})}else to(f,function(c){if(i==="empty")l.setData(u=u.map(c,function(p){return s(p)?p:NaN}));else{var d={};d[c]=o,u.selectRange(d)}});to(f,function(c){u.setApproximateExtent(o,c)})}});function s(l){return l>=o[0]&&l<=o[1]}},r.prototype._updateMinMaxSpan=function(){var e=this._minMaxSpan={},t=this._dataZoomModel,a=this._dataExtent;to(["min","max"],function(n){var i=t.get(n+"Span"),o=t.get(n+"ValueSpan");o!=null&&(o=this.getAxisModel().axis.scale.parse(o)),o!=null?i=Rt(a[0]+o,a,[0,100],!0):i!=null&&(o=Rt(i,[0,100],a,!0)-a[0]),e[n+"Span"]=i,e[n+"ValueSpan"]=o},this)},r.prototype._setAxisModel=function(){var e=this.getAxisModel(),t=this._percentWindow,a=this._valueWindow;if(!!t){var n=S2(a,[0,500]);n=Math.min(n,20);var i=e.axis.scale.rawExtentInfo;t[0]!==0&&i.setDeterminedMinMax("min",+a[0].toFixed(n)),t[1]!==100&&i.setDeterminedMinMax("max",+a[1].toFixed(n)),i.freeze()}},r}();function sY(r,e,t){var a=[1/0,-1/0];to(t,function(o){kN(a,o.getData(),e)});var n=r.getAxisModel(),i=DA(n.axis.scale,n,a).calculate();return[i.min,i.max]}var lY=oY,uY={getTargetSeries:function(r){function e(n){r.eachComponent("dataZoom",function(i){i.eachTargetAxis(function(o,s){var l=r.getComponent(qa(o),s);n(o,s,l,i)})})}e(function(n,i,o,s){o.__dzAxisProxy=null});var t=[];e(function(n,i,o,s){o.__dzAxisProxy||(o.__dzAxisProxy=new lY(n,i,s,r),t.push(o.__dzAxisProxy))});var a=q();return A(t,function(n){A(n.getTargetSeriesModels(),function(i){a.set(i.uid,i)})}),a},overallReset:function(r,e){r.eachComponent("dataZoom",function(t){t.eachTargetAxis(function(a,n){t.getAxisProxy(a,n).reset(t)}),t.eachTargetAxis(function(a,n){t.getAxisProxy(a,n).filterData(t,e)})}),r.eachComponent("dataZoom",function(t){var a=t.findRepresentativeAxisProxy();if(a){var n=a.getDataPercentWindow(),i=a.getDataValueWindow();t.setCalculatedRange({start:n[0],end:n[1],startValue:i[0],endValue:i[1]})}})}},fY=uY;function hY(r){r.registerAction("dataZoom",function(e,t){var a=jU(t,e);A(a,function(n){n.setRawRange({start:e.start,end:e.end,startValue:e.startValue,endValue:e.endValue})})})}var Sw=!1;function dm(r){Sw||(Sw=!0,r.registerProcessor(r.PRIORITY.PROCESSOR.FILTER,fY),hY(r),r.registerSubTypeDefaulter("dataZoom",function(){return"slider"}))}function vY(r){r.registerComponentModel(rY),r.registerComponentView(iY),dm(r)}var rr=function(){function r(){}return r}(),dL={};function eo(r,e){dL[r]=e}function pL(r){return dL[r]}var cY=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.optionUpdated=function(){r.prototype.optionUpdated.apply(this,arguments);var t=this.ecModel;A(this.option.feature,function(a,n){var i=pL(n);i&&(i.getDefaultOption&&(i.defaultOption=i.getDefaultOption(t)),ht(a,i.defaultOption))})},e.type="toolbox",e.layoutMode={type:"box",ignoreSize:!0},e.defaultOption={show:!0,z:6,orient:"horizontal",left:"right",top:"top",backgroundColor:"transparent",borderColor:"#ccc",borderRadius:0,borderWidth:0,padding:5,itemSize:15,itemGap:8,showTitle:!0,iconStyle:{borderColor:"#666",color:"none"},emphasis:{iconStyle:{borderColor:"#3E98C5"}},tooltip:{show:!1,position:"bottom"}},e}(Tt),dY=cY;function pY(r,e,t){var a=e.getBoxLayoutParams(),n=e.get("padding"),i={width:t.getWidth(),height:t.getHeight()},o=re(a,i,n);ui(e.get("orient"),r,e.get("itemGap"),o.width,o.height),kh(r,a,i,n)}function gL(r,e){var t=Io(e.get("padding")),a=e.getItemStyle(["color","opacity"]);return a.fill=e.get("backgroundColor"),r=new bt({shape:{x:r.x-t[3],y:r.y-t[0],width:r.width+t[1]+t[3],height:r.height+t[0]+t[2],r:e.get("borderRadius")},style:a,silent:!0,z2:-1}),r}var gY=function(r){k(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.render=function(t,a,n,i){var o=this.group;if(o.removeAll(),!t.get("show"))return;var s=+t.get("itemSize"),l=t.get("orient")==="vertical",u=t.get("feature")||{},f=this._features||(this._features={}),h=[];A(u,function(d,p){h.push(p)}),new xa(this._featureNames||[],h).add(v).update(v).remove(ot(v,null)).execute(),this._featureNames=h;function v(d,p){var g=h[d],y=h[p],m=u[g],_=new Vt(m,t,t.ecModel),S;if(i&&i.newTitle!=null&&i.featureName===g&&(m.title=i.newTitle),g&&!y){if(yY(g))S={onclick:_.option.onclick,featureName:g};else{var w=pL(g);if(!w)return;S=new w}f[g]=S}else if(S=f[y],!S)return;S.uid=Lo("toolbox-feature"),S.model=_,S.ecModel=a,S.api=n;var x=S instanceof rr;if(!g&&y){x&&S.dispose&&S.dispose(a,n);return}if(!_.get("show")||x&&S.unusable){x&&S.remove&&S.remove(a,n);return}c(_,S,g),_.setIconStatus=function(b,C){var T=this.option,D=this.iconPaths;T.iconStatus=T.iconStatus||{},T.iconStatus[b]=C,D[b]&&(C==="emphasis"?_a:Sa)(D[b])},S instanceof rr&&S.render&&S.render(_,a,n,i)}function c(d,p,g){var y=d.getModel("iconStyle"),m=d.getModel(["emphasis","iconStyle"]),_=p instanceof rr&&p.getIcons?p.getIcons():d.get("icon"),S=d.get("title")||{},w,x;U(_)?(w={},w[g]=_):w=_,U(S)?(x={},x[g]=S):x=S;var b=d.iconPaths={};A(w,function(C,T){var D=Al(C,{},{x:-s/2,y:-s/2,width:s,height:s});D.setStyle(y.getItemStyle());var M=D.ensureState("emphasis");M.style=m.getItemStyle();var L=new Dt({style:{text:x[T],align:m.get("textAlign"),borderRadius:m.get("textBorderRadius"),padding:m.get("textPadding"),fill:null},ignore:!0});D.setTextContent(L),Do({el:D,componentModel:t,itemName:T,formatterParamsExtra:{title:x[T]}}),D.__title=x[T],D.on("mouseover",function(){var I=m.getItemStyle(),P=l?t.get("right")==null&&t.get("left")!=="right"?"right":"left":t.get("bottom")==null&&t.get("top")!=="bottom"?"bottom":"top";L.setStyle({fill:m.get("textFill")||I.fill||I.stroke||"#000",backgroundColor:m.get("textBackgroundColor")}),D.setTextConfig({position:m.get("textPosition")||P}),L.ignore=!t.get("showTitle"),n.enterEmphasis(this)}).on("mouseout",function(){d.get(["iconStatus",T])!=="emphasis"&&n.leaveEmphasis(this),L.hide()}),(d.get(["iconStatus",T])==="emphasis"?_a:Sa)(D),o.add(D),D.on("click",Y(p.onclick,p,a,n,T)),b[T]=D})}pY(o,t,n),o.add(gL(o.getBoundingRect(),t)),l||o.eachChild(function(d){var p=d.__title,g=d.ensureState("emphasis"),y=g.textConfig||(g.textConfig={}),m=d.getTextContent(),_=m&&m.ensureState("emphasis");if(_&&!J(_)&&p){var S=_.style||(_.style={}),w=xl(p,Dt.makeFont(S)),x=d.x+o.x,b=d.y+o.y+s,C=!1;b+w.height>n.getHeight()&&(y.position="top",C=!0);var T=C?-5-w.height:s+10;x+w.width/2>n.getWidth()?(y.position=["100%",T],S.align="right"):x-w.width/2<0&&(y.position=[0,T],S.align="left")}})},e.prototype.updateView=function(t,a,n,i){A(this._features,function(o){o instanceof rr&&o.updateView&&o.updateView(o.model,a,n,i)})},e.prototype.remove=function(t,a){A(this._features,function(n){n instanceof rr&&n.remove&&n.remove(t,a)}),this.group.removeAll()},e.prototype.dispose=function(t,a){A(this._features,function(n){n instanceof rr&&n.dispose&&n.dispose(t,a)})},e.type="toolbox",e}(Ut);function yY(r){return r.indexOf("my")===0}var mY=gY,_Y=function(r){k(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.onclick=function(t,a){var n=this.model,i=n.get("name")||t.get("title.0.text")||"echarts",o=a.getZr().painter.getType()==="svg",s=o?"svg":n.get("type",!0)||"png",l=a.getConnectedDataURL({type:s,backgroundColor:n.get("backgroundColor",!0)||t.get("backgroundColor")||"#fff",connectedBackgroundColor:n.get("connectedBackgroundColor"),excludeComponents:n.get("excludeComponents"),pixelRatio:n.get("pixelRatio")}),u=At.browser;if(J(MouseEvent)&&(u.newEdge||!u.ie&&!u.edge)){var f=document.createElement("a");f.download=i+"."+s,f.target="_blank",f.href=l;var h=new MouseEvent("click",{view:document.defaultView,bubbles:!0,cancelable:!1});f.dispatchEvent(h)}else if(window.navigator.msSaveOrOpenBlob||o){var v=l.split(","),c=v[0].indexOf("base64")>-1,d=o?decodeURIComponent(v[1]):v[1];c&&(d=window.atob(d));var p=i+"."+s;if(window.navigator.msSaveOrOpenBlob){for(var g=d.length,y=new Uint8Array(g);g--;)y[g]=d.charCodeAt(g);var m=new Blob([y]);window.navigator.msSaveOrOpenBlob(m,p)}else{var _=document.createElement("iframe");document.body.appendChild(_);var S=_.contentWindow,w=S.document;w.open("image/svg+xml","replace"),w.write(d),w.close(),S.focus(),w.execCommand("SaveAs",!0,p),document.body.removeChild(_)}}else{var x=n.get("lang"),b='',C=window.open();C.document.write(b),C.document.title=i}},e.getDefaultOption=function(t){var a={show:!0,icon:"M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0",title:t.getLocaleModel().get(["toolbox","saveAsImage","title"]),type:"png",connectedBackgroundColor:"#fff",name:"",excludeComponents:["toolbox"],lang:t.getLocaleModel().get(["toolbox","saveAsImage","lang"])};return a},e}(rr),SY=_Y,xw="__ec_magicType_stack__",xY=[["line","bar"],["stack"]],wY=function(r){k(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.getIcons=function(){var t=this.model,a=t.get("icon"),n={};return A(t.get("type"),function(i){a[i]&&(n[i]=a[i])}),n},e.getDefaultOption=function(t){var a={show:!0,type:[],icon:{line:"M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4",bar:"M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7",stack:"M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z"},title:t.getLocaleModel().get(["toolbox","magicType","title"]),option:{},seriesIndex:{}};return a},e.prototype.onclick=function(t,a,n){var i=this.model,o=i.get(["seriesIndex",n]);if(!!ww[n]){var s={series:[]},l=function(h){var v=h.subType,c=h.id,d=ww[n](v,c,h,i);d&&(tt(d,h.option),s.series.push(d));var p=h.coordinateSystem;if(p&&p.type==="cartesian2d"&&(n==="line"||n==="bar")){var g=p.getAxesByScale("ordinal")[0];if(g){var y=g.dim,m=y+"Axis",_=h.getReferringComponents(m,Qt).models[0],S=_.componentIndex;s[m]=s[m]||[];for(var w=0;w<=S;w++)s[m][S]=s[m][S]||{};s[m][S].boundaryGap=n==="bar"}}};A(xY,function(h){dt(h,n)>=0&&A(h,function(v){i.setIconStatus(v,"normal")})}),i.setIconStatus(n,"emphasis"),t.eachComponent({mainType:"series",query:o==null?null:{seriesIndex:o}},l);var u,f=n;n==="stack"&&(u=ht({stack:i.option.title.tiled,tiled:i.option.title.stack},i.option.title),i.get(["iconStatus",n])!=="emphasis"&&(f="tiled")),a.dispatchAction({type:"changeMagicType",currentType:f,newOption:s,newTitle:u,featureName:"magicType"})}},e}(rr),ww={line:function(r,e,t,a){if(r==="bar")return ht({id:e,type:"line",data:t.get("data"),stack:t.get("stack"),markPoint:t.get("markPoint"),markLine:t.get("markLine")},a.get(["option","line"])||{},!0)},bar:function(r,e,t,a){if(r==="line")return ht({id:e,type:"bar",data:t.get("data"),stack:t.get("stack"),markPoint:t.get("markPoint"),markLine:t.get("markLine")},a.get(["option","bar"])||{},!0)},stack:function(r,e,t,a){var n=t.get("stack")===xw;if(r==="line"||r==="bar")return a.setIconStatus("stack",n?"normal":"emphasis"),ht({id:e,stack:n?"":xw},a.get(["option","stack"])||{},!0)}};ta({type:"changeMagicType",event:"magicTypeChanged",update:"prepareAndUpdate"},function(r,e){e.mergeOption(r.newOption)});var bY=wY,Jh=new Array(60).join("-"),So=" ";function CY(r){var e={},t=[],a=[];return r.eachRawSeries(function(n){var i=n.coordinateSystem;if(i&&(i.type==="cartesian2d"||i.type==="polar")){var o=i.getBaseAxis();if(o.type==="category"){var s=o.dim+"_"+o.index;e[s]||(e[s]={categoryAxis:o,valueAxis:i.getOtherAxis(o),series:[]},a.push({axisDim:o.dim,axisIndex:o.index})),e[s].series.push(n)}else t.push(n)}else t.push(n)}),{seriesGroupByCategoryAxis:e,other:t,meta:a}}function TY(r){var e=[];return A(r,function(t,a){var n=t.categoryAxis,i=t.valueAxis,o=i.dim,s=[" "].concat(G(t.series,function(c){return c.name})),l=[n.model.getCategories()];A(t.series,function(c){var d=c.getRawData();l.push(c.getRawData().mapArray(d.mapDimension(o),function(p){return p}))});for(var u=[s.join(So)],f=0;f=0)return!0}var Qp=new RegExp("["+So+"]+","g");function LY(r){for(var e=r.split(/\n+/g),t=ah(e.shift()).split(Qp),a=[],n=G(t,function(l){return{name:l,data:[]}}),i=0;i=0;i--){var o=t[i];if(o[n])break}if(i<0){var s=r.queryComponents({mainType:"dataZoom",subType:"select",id:n})[0];if(s){var l=s.getPercentRange();t[0][n]={dataZoomId:n,start:l[0],end:l[1]}}}}),t.push(e)}function BY(r){var e=pm(r),t=e[e.length-1];e.length>1&&e.pop();var a={};return yL(t,function(n,i){for(var o=e.length-1;o>=0;o--)if(n=e[o][i],n){a[i]=n;break}}),a}function NY(r){mL(r).snapshots=null}function VY(r){return pm(r).length}function pm(r){var e=mL(r);return e.snapshots||(e.snapshots=[{}]),e.snapshots}var zY=function(r){k(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.onclick=function(t,a){NY(t),a.dispatchAction({type:"restore",from:this.uid})},e.getDefaultOption=function(t){var a={show:!0,icon:"M3.8,33.4 M47,18.9h9.8V8.7 M56.3,20.1 C52.1,9,40.5,0.6,26.8,2.1C12.6,3.7,1.6,16.2,2.1,30.6 M13,41.1H3.1v10.2 M3.7,39.9c4.2,11.1,15.8,19.5,29.5,18 c14.2-1.6,25.2-14.1,24.7-28.5",title:t.getLocaleModel().get(["toolbox","restore","title"])};return a},e}(rr);ta({type:"restore",event:"restore",update:"prepareAndUpdate"},function(r,e){e.resetOption("recreate")});var FY=zY,GY=["grid","xAxis","yAxis","geo","graph","polar","radiusAxis","angleAxis","bmap"],HY=function(){function r(e,t,a){var n=this;this._targetInfoList=[];var i=bw(t,e);A(WY,function(o,s){(!a||!a.include||dt(a.include,s)>=0)&&o(i,n._targetInfoList)})}return r.prototype.setOutputRanges=function(e,t){return this.matchOutputRanges(e,t,function(a,n,i){if((a.coordRanges||(a.coordRanges=[])).push(n),!a.coordRange){a.coordRange=n;var o=sd[a.brushType](0,i,n);a.__rangeOffset={offset:Dw[a.brushType](o.values,a.range,[1,1]),xyMinMax:o.xyMinMax}}}),e},r.prototype.matchOutputRanges=function(e,t,a){A(e,function(n){var i=this.findTargetInfo(n,t);i&&i!==!0&&A(i.coordSyses,function(o){var s=sd[n.brushType](1,o,n.range,!0);a(n,s.values,o,t)})},this)},r.prototype.setInputRanges=function(e,t){A(e,function(a){var n=this.findTargetInfo(a,t);if(a.range=a.range||[],n&&n!==!0){a.panelId=n.panelId;var i=sd[a.brushType](0,n.coordSys,a.coordRange),o=a.__rangeOffset;a.range=o?Dw[a.brushType](i.values,o.offset,$Y(i.xyMinMax,o.xyMinMax)):i.values}},this)},r.prototype.makePanelOpts=function(e,t){return G(this._targetInfoList,function(a){var n=a.getPanelRect();return{panelId:a.panelId,defaultBrushType:t?t(a):null,clipPath:fM(n),isTargetByCursor:vM(n,e,a.coordSysModel),getLinearBrushOtherExtent:hM(n)}})},r.prototype.controlSeries=function(e,t,a){var n=this.findTargetInfo(e,a);return n===!0||n&&dt(n.coordSyses,t.coordinateSystem)>=0},r.prototype.findTargetInfo=function(e,t){for(var a=this._targetInfoList,n=bw(t,e),i=0;ir[1]&&r.reverse(),r}function bw(r,e){return Ls(r,e,{includeMainTypes:GY})}var WY={grid:function(r,e){var t=r.xAxisModels,a=r.yAxisModels,n=r.gridModels,i=q(),o={},s={};!t&&!a&&!n||(A(t,function(l){var u=l.axis.grid.model;i.set(u.id,u),o[u.id]=!0}),A(a,function(l){var u=l.axis.grid.model;i.set(u.id,u),s[u.id]=!0}),A(n,function(l){i.set(l.id,l),o[l.id]=!0,s[l.id]=!0}),i.each(function(l){var u=l.coordinateSystem,f=[];A(u.getCartesians(),function(h,v){(dt(t,h.getAxis("x").model)>=0||dt(a,h.getAxis("y").model)>=0)&&f.push(h)}),e.push({panelId:"grid--"+l.id,gridModel:l,coordSysModel:l,coordSys:f[0],coordSyses:f,getPanelRect:Tw.grid,xAxisDeclared:o[l.id],yAxisDeclared:s[l.id]})}))},geo:function(r,e){A(r.geoModels,function(t){var a=t.coordinateSystem;e.push({panelId:"geo--"+t.id,geoModel:t,coordSysModel:t,coordSys:a,coordSyses:[a],getPanelRect:Tw.geo})})}},Cw=[function(r,e){var t=r.xAxisModel,a=r.yAxisModel,n=r.gridModel;return!n&&t&&(n=t.axis.grid.model),!n&&a&&(n=a.axis.grid.model),n&&n===e.gridModel},function(r,e){var t=r.geoModel;return t&&t===e.geoModel}],Tw={grid:function(){return this.coordSys.master.getRect().clone()},geo:function(){var r=this.coordSys,e=r.getBoundingRect().clone();return e.applyTransform(li(r)),e}},sd={lineX:ot(Aw,0),lineY:ot(Aw,1),rect:function(r,e,t,a){var n=r?e.pointToData([t[0][0],t[1][0]],a):e.dataToPoint([t[0][0],t[1][0]],a),i=r?e.pointToData([t[0][1],t[1][1]],a):e.dataToPoint([t[0][1],t[1][1]],a),o=[jp([n[0],i[0]]),jp([n[1],i[1]])];return{values:o,xyMinMax:o}},polygon:function(r,e,t,a){var n=[[1/0,-1/0],[1/0,-1/0]],i=G(t,function(o){var s=r?e.pointToData(o,a):e.dataToPoint(o,a);return n[0][0]=Math.min(n[0][0],s[0]),n[1][0]=Math.min(n[1][0],s[1]),n[0][1]=Math.max(n[0][1],s[0]),n[1][1]=Math.max(n[1][1],s[1]),s});return{values:i,xyMinMax:n}}};function Aw(r,e,t,a){var n=t.getAxis(["x","y"][r]),i=jp(G([0,1],function(s){return e?n.coordToData(n.toLocalCoord(a[s]),!0):n.toGlobalCoord(n.dataToCoord(a[s]))})),o=[];return o[r]=i,o[1-r]=[NaN,NaN],{values:i,xyMinMax:o}}var Dw={lineX:ot(Mw,0),lineY:ot(Mw,1),rect:function(r,e,t){return[[r[0][0]-t[0]*e[0][0],r[0][1]-t[0]*e[0][1]],[r[1][0]-t[1]*e[1][0],r[1][1]-t[1]*e[1][1]]]},polygon:function(r,e,t){return G(r,function(a,n){return[a[0]-t[0]*e[n][0],a[1]-t[1]*e[n][1]]})}};function Mw(r,e,t,a){return[e[0]-a[r]*t[0],e[1]-a[r]*t[1]]}function $Y(r,e){var t=Lw(r),a=Lw(e),n=[t[0]/a[0],t[1]/a[1]];return isNaN(n[0])&&(n[0]=1),isNaN(n[1])&&(n[1]=1),n}function Lw(r){return r?[r[0][1]-r[0][0],r[1][1]-r[1][0]]:[NaN,NaN]}var gm=HY,tg=A,UY=mk("toolbox-dataZoom_"),YY=function(r){k(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.render=function(t,a,n,i){this._brushController||(this._brushController=new Uy(n.getZr()),this._brushController.on("brush",Y(this._onBrush,this)).mount()),qY(t,a,this,i,n),XY(t,a)},e.prototype.onclick=function(t,a,n){ZY[n].call(this)},e.prototype.remove=function(t,a){this._brushController&&this._brushController.unmount()},e.prototype.dispose=function(t,a){this._brushController&&this._brushController.dispose()},e.prototype._onBrush=function(t){var a=t.areas;if(!t.isEnd||!a.length)return;var n={},i=this.ecModel;this._brushController.updateCovers([]);var o=new gm(ym(this.model),i,{include:["grid"]});o.matchOutputRanges(a,i,function(u,f,h){if(h.type==="cartesian2d"){var v=u.brushType;v==="rect"?(s("x",h,f[0]),s("y",h,f[1])):s({lineX:"x",lineY:"y"}[v],h,f)}}),OY(i,n),this._dispatchZoomAction(n);function s(u,f,h){var v=f.getAxis(u),c=v.model,d=l(u,c,i),p=d.findRepresentativeAxisProxy(c).getMinMaxSpan();(p.minValueSpan!=null||p.maxValueSpan!=null)&&(h=Li(0,h.slice(),v.scale.getExtent(),0,p.minValueSpan,p.maxValueSpan)),d&&(n[d.id]={dataZoomId:d.id,startValue:h[0],endValue:h[1]})}function l(u,f,h){var v;return h.eachComponent({mainType:"dataZoom",subType:"select"},function(c){var d=c.getAxisModel(u,f.componentIndex);d&&(v=c)}),v}},e.prototype._dispatchZoomAction=function(t){var a=[];tg(t,function(n,i){a.push(at(n))}),a.length&&this.api.dispatchAction({type:"dataZoom",from:this.uid,batch:a})},e.getDefaultOption=function(t){var a={show:!0,filterMode:"filter",icon:{zoom:"M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1",back:"M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26"},title:t.getLocaleModel().get(["toolbox","dataZoom","title"]),brushStyle:{borderWidth:0,color:"rgba(210,219,238,0.2)"}};return a},e}(rr),ZY={zoom:function(){var r=!this._isZoomActive;this.api.dispatchAction({type:"takeGlobalCursor",key:"dataZoomSelect",dataZoomSelectActive:r})},back:function(){this._dispatchZoomAction(BY(this.ecModel))}};function ym(r){var e={xAxisIndex:r.get("xAxisIndex",!0),yAxisIndex:r.get("yAxisIndex",!0),xAxisId:r.get("xAxisId",!0),yAxisId:r.get("yAxisId",!0)};return e.xAxisIndex==null&&e.xAxisId==null&&(e.xAxisIndex="all"),e.yAxisIndex==null&&e.yAxisId==null&&(e.yAxisIndex="all"),e}function XY(r,e){r.setIconStatus("back",VY(e)>1?"emphasis":"normal")}function qY(r,e,t,a,n){var i=t._isZoomActive;a&&a.type==="takeGlobalCursor"&&(i=a.key==="dataZoomSelect"?a.dataZoomSelectActive:!1),t._isZoomActive=i,r.setIconStatus("zoom",i?"emphasis":"normal");var o=new gm(ym(r),e,{include:["grid"]}),s=o.makePanelOpts(n,function(l){return l.xAxisDeclared&&!l.yAxisDeclared?"lineX":!l.xAxisDeclared&&l.yAxisDeclared?"lineY":"rect"});t._brushController.setPanels(s).enableBrush(i&&s.length?{brushType:"auto",brushStyle:r.getModel("brushStyle").getItemStyle()}:!1)}Q3("dataZoom",function(r){var e=r.getComponent("toolbox",0),t=["feature","dataZoom"];if(!e||e.get(t)==null)return;var a=e.getModel(t),n=[],i=ym(a),o=Ls(r,i);tg(o.xAxisModels,function(l){return s(l,"xAxis","xAxisIndex")}),tg(o.yAxisModels,function(l){return s(l,"yAxis","yAxisIndex")});function s(l,u,f){var h=l.componentIndex,v={type:"select",$fromToolbox:!0,filterMode:a.get("filterMode",!0)||"filter",id:UY+u+h};v[f]=h,n.push(v)}return n});var KY=YY;function JY(r){r.registerComponentModel(dY),r.registerComponentView(mY),eo("saveAsImage",SY),eo("magicType",bY),eo("dataView",kY),eo("dataZoom",KY),eo("restore",FY),ct(vY)}var QY=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.type="tooltip",e.dependencies=["axisPointer"],e.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}},e}(Tt),jY=QY;function _L(r){var e=r.get("confine");return e!=null?!!e:r.get("renderMode")==="richText"}function SL(r){if(!!At.domSupported){for(var e=document.documentElement.style,t=0,a=r.length;t-1?(s+="top:50%",l+="translateY(-50%) rotate("+(u=i==="left"?-225:-45)+"deg)"):(s+="left:50%",l+="translateX(-50%) rotate("+(u=i==="top"?225:45)+"deg)");var f=u*Math.PI/180,h=o+n,v=h*Math.abs(Math.cos(f))+h*Math.abs(Math.sin(f)),c=Math.round(((v-Math.SQRT2*n)/2+Math.SQRT2*n-(v-h)/2)*100)/100;s+=";"+i+":-"+c+"px";var d=e+" solid "+n+"px;",p=["position:absolute;width:"+o+"px;height:"+o+"px;z-index:-1;",s+";"+l+";","border-bottom:"+d,"border-right:"+d,"background-color:"+a+";"];return'
    '}function oZ(r,e){var t="cubic-bezier(0.23,1,0.32,1)",a=" "+r/2+"s "+t,n="opacity"+a+",visibility"+a;return e||(a=" "+r+"s "+t,n+=At.transformSupported?","+mm+a:",left"+a+",top"+a),rZ+":"+n}function Iw(r,e,t){var a=r.toFixed(0)+"px",n=e.toFixed(0)+"px";if(!At.transformSupported)return t?"top:"+n+";left:"+a+";":[["top",n],["left",a]];var i=At.transform3dSupported,o="translate"+(i?"3d":"")+"("+a+","+n+(i?",0":"")+")";return t?"top:0;left:0;"+mm+":"+o+";":[["top",0],["left",0],[xL,o]]}function sZ(r){var e=[],t=r.get("fontSize"),a=r.getTextColor();a&&e.push("color:"+a),e.push("font:"+r.getFont()),t&&e.push("line-height:"+Math.round(t*3/2)+"px");var n=r.get("textShadowColor"),i=r.get("textShadowBlur")||0,o=r.get("textShadowOffsetX")||0,s=r.get("textShadowOffsetY")||0;return n&&i&&e.push("text-shadow:"+o+"px "+s+"px "+i+"px "+n),A(["decoration","align"],function(l){var u=r.get(l);u&&e.push("text-"+l+":"+u)}),e.join(";")}function lZ(r,e,t){var a=[],n=r.get("transitionDuration"),i=r.get("backgroundColor"),o=r.get("shadowBlur"),s=r.get("shadowColor"),l=r.get("shadowOffsetX"),u=r.get("shadowOffsetY"),f=r.getModel("textStyle"),h=AT(r,"html"),v=l+"px "+u+"px "+o+"px "+s;return a.push("box-shadow:"+v),e&&n&&a.push(oZ(n,t)),i&&a.push("background-color:"+i),A(["width","color","radius"],function(c){var d="border-"+c,p=$C(d),g=r.get(p);g!=null&&a.push(d+":"+g+(c==="color"?"":"px"))}),a.push(sZ(f)),h!=null&&a.push("padding:"+Io(h).join("px ")+"px"),a.join(";")+";"}function Pw(r,e,t,a,n){var i=e&&e.painter;if(t){var o=i&&i.getViewportRoot();o&&WR(r,o,document.body,a,n)}else{r[0]=a,r[1]=n;var s=i&&i.getViewportRootOffset();s&&(r[0]+=s.offsetLeft,r[1]+=s.offsetTop)}r[2]=r[0]/e.getWidth(),r[3]=r[1]/e.getHeight()}var uZ=function(){function r(e,t,a){if(this._show=!1,this._styleCoord=[0,0,0,0],this._enterable=!0,this._alwaysShowContent=!1,this._firstShow=!0,this._longHide=!0,At.wxa)return null;var n=document.createElement("div");n.domBelongToZr=!0,this.el=n;var i=this._zr=t.getZr(),o=this._appendToBody=a&&a.appendToBody;Pw(this._styleCoord,i,o,t.getWidth()/2,t.getHeight()/2),o?document.body.appendChild(n):e.appendChild(n),this._container=e;var s=this;n.onmouseenter=function(){s._enterable&&(clearTimeout(s._hideTimeout),s._show=!0),s._inContent=!0},n.onmousemove=function(l){if(l=l||window.event,!s._enterable){var u=i.handler,f=i.painter.getViewportRoot();Je(f,l,!0),u.dispatch("mousemove",l)}},n.onmouseleave=function(){s._inContent=!1,s._enterable&&s._show&&s.hideLater(s._hideDelay)}}return r.prototype.update=function(e){var t=this._container,a=eZ(t,"position"),n=t.style;n.position!=="absolute"&&a!=="absolute"&&(n.position="relative");var i=e.get("alwaysShowContent");i&&this._moveIfResized(),this._alwaysShowContent=i,this.el.className=e.get("className")||""},r.prototype.show=function(e,t){clearTimeout(this._hideTimeout),clearTimeout(this._longHideTimeout);var a=this.el,n=a.style,i=this._styleCoord;a.innerHTML?n.cssText=aZ+lZ(e,!this._firstShow,this._longHide)+Iw(i[0],i[1],!0)+("border-color:"+yi(t)+";")+(e.get("extraCssText")||"")+(";pointer-events:"+(this._enterable?"auto":"none")):n.display="none",this._show=!0,this._firstShow=!1,this._longHide=!1},r.prototype.setContent=function(e,t,a,n,i){var o=this.el;if(e==null){o.innerHTML="";return}var s="";if(U(i)&&a.get("trigger")==="item"&&!_L(a)&&(s=iZ(a,n,i)),U(e))o.innerHTML=e+s;else if(e){o.innerHTML="",F(e)||(e=[e]);for(var l=0;l=0?this._tryShow(i,o):n==="leave"&&this._hide(o))},this))},e.prototype._keepShow=function(){var t=this._tooltipModel,a=this._ecModel,n=this._api,i=t.get("triggerOn");if(this._lastX!=null&&this._lastY!=null&&i!=="none"&&i!=="click"){var o=this;clearTimeout(this._refreshUpdateTimeout),this._refreshUpdateTimeout=setTimeout(function(){!n.isDisposed()&&o.manuallyShowTip(t,a,n,{x:o._lastX,y:o._lastY,dataByCoordSys:o._lastDataByCoordSys})})}},e.prototype.manuallyShowTip=function(t,a,n,i){if(!(i.from===this.uid||At.node||!n.getDom())){var o=kw(i,n);this._ticket="";var s=i.dataByCoordSys,l=mZ(i,a,n);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:i.position,positionDefault:"bottom"},o)}else if(i.tooltip&&i.x!=null&&i.y!=null){var f=cZ;f.x=i.x,f.y=i.y,f.update(),it(f).tooltipConfig={name:null,option:i.tooltip},this._tryShow({offsetX:i.x,offsetY:i.y,target:f},o)}else if(s)this._tryShow({offsetX:i.x,offsetY:i.y,position:i.position,dataByCoordSys:s,tooltipOption:i.tooltipOption},o);else if(i.seriesIndex!=null){if(this._manuallyAxisShowTip(t,a,n,i))return;var h=iL(i,a),v=h.point[0],c=h.point[1];v!=null&&c!=null&&this._tryShow({offsetX:v,offsetY:c,target:h.el,position:i.position,positionDefault:"bottom"},o)}else i.x!=null&&i.y!=null&&(n.dispatchAction({type:"updateAxisPointer",x:i.x,y:i.y}),this._tryShow({offsetX:i.x,offsetY:i.y,position:i.position,target:n.getZr().findHover(i.x,i.y).target},o))}},e.prototype.manuallyHideTip=function(t,a,n,i){var o=this._tooltipContent;this._tooltipModel&&o.hideLater(this._tooltipModel.get("hideDelay")),this._lastX=this._lastY=this._lastDataByCoordSys=null,i.from!==this.uid&&this._hide(kw(i,n))},e.prototype._manuallyAxisShowTip=function(t,a,n,i){var o=i.seriesIndex,s=i.dataIndex,l=a.getComponent("axisPointer").coordSysAxesInfo;if(!(o==null||s==null||l==null)){var u=a.getSeriesByIndex(o);if(!!u){var f=u.getData(),h=ls([f.getItemModel(s),u,(u.coordinateSystem||{}).model],this._tooltipModel);if(h.get("trigger")==="axis")return n.dispatchAction({type:"updateAxisPointer",seriesIndex:o,dataIndex:s,position:i.position}),!0}}},e.prototype._tryShow=function(t,a){var n=t.target,i=this._tooltipModel;if(!!i){this._lastX=t.offsetX,this._lastY=t.offsetY;var o=t.dataByCoordSys;if(o&&o.length)this._showAxisTooltip(o,t);else if(n){this._lastDataByCoordSys=null;var s,l;jn(n,function(u){if(it(u).dataIndex!=null)return s=u,!0;if(it(u).tooltipConfig!=null)return l=u,!0},!0),s?this._showSeriesItemTooltip(t,s,a):l?this._showComponentItemTooltip(t,l,a):this._hide(a)}else this._lastDataByCoordSys=null,this._hide(a)}},e.prototype._showOrMove=function(t,a){var n=t.get("showDelay");a=Y(a,this),clearTimeout(this._showTimout),n>0?this._showTimout=setTimeout(a,n):a()},e.prototype._showAxisTooltip=function(t,a){var n=this._ecModel,i=this._tooltipModel,o=[a.offsetX,a.offsetY],s=ls([a.tooltipOption],i),l=this._renderMode,u=[],f=oe("section",{blocks:[],noHeader:!0}),h=[],v=new Yv;A(t,function(m){A(m.dataByAxis,function(_){var S=n.getComponent(_.axisDim+"Axis",_.axisIndex),w=_.value;if(!(!S||w==null)){var x=eL(w,S.axis,n,_.seriesDataIndices,_.valueLabelOpt),b=oe("section",{header:x,noHeader:!Sr(x),sortBlocks:!0,blocks:[]});f.blocks.push(b),A(_.seriesDataIndices,function(C){var T=n.getSeriesByIndex(C.seriesIndex),D=C.dataIndexInside,M=T.getDataParams(D);if(!(M.dataIndex<0)){M.axisDim=_.axisDim,M.axisIndex=_.axisIndex,M.axisType=_.axisType,M.axisId=_.axisId,M.axisValue=_y(S.axis,{value:w}),M.axisValueLabel=x,M.marker=v.makeTooltipMarker("item",yi(M.color),l);var L=m1(T.formatTooltip(D,!0,null)),I=L.frag;if(I){var P=ls([T],i).get("valueFormatter");b.blocks.push(P?V({valueFormatter:P},I):I)}L.text&&h.push(L.text),u.push(M)}})}})}),f.blocks.reverse(),h.reverse();var c=a.position,d=s.get("order"),p=C1(f,v,l,d,n.get("useUTC"),s.get("textStyle"));p&&h.unshift(p);var g=l==="richText"?` `:"
    ",y=h.join(g);this._showOrMove(s,function(){this._updateContentNotChangedOnAxis(t,u)?this._updatePosition(s,c,o[0],o[1],this._tooltipContent,u):this._showTooltipContent(s,y,u,Math.random()+"",o[0],o[1],c,null,v)})},e.prototype._showSeriesItemTooltip=function(t,a,n){var i=this._ecModel,o=it(a),s=o.seriesIndex,l=i.getSeriesByIndex(s),u=o.dataModel||l,f=o.dataIndex,h=o.dataType,v=u.getData(h),c=this._renderMode,d=t.positionDefault,p=ls([v.getItemModel(f),u,l&&(l.coordinateSystem||{}).model],this._tooltipModel,d?{position:d}:null),g=p.get("trigger");if(!(g!=null&&g!=="item")){var y=u.getDataParams(f,h),m=new Yv;y.marker=m.makeTooltipMarker("item",yi(y.color),c);var _=m1(u.formatTooltip(f,!1,h)),S=p.get("order"),w=p.get("valueFormatter"),x=_.frag,b=x?C1(w?V({valueFormatter:w},x):x,m,c,S,i.get("useUTC"),p.get("textStyle")):_.text,C="item_"+u.name+"_"+f;this._showOrMove(p,function(){this._showTooltipContent(p,b,y,C,t.offsetX,t.offsetY,t.position,t.target,m)}),n({type:"showTip",dataIndexInside:f,dataIndex:v.getRawIndex(f),seriesIndex:s,from:this.uid})}},e.prototype._showComponentItemTooltip=function(t,a,n){var i=it(a),o=i.tooltipConfig,s=o.option||{};if(U(s)){var l=s;s={content:l,formatter:l}}var u=[s],f=this._ecModel.getComponent(i.componentMainType,i.componentIndex);f&&u.push(f),u.push({formatter:s.content});var h=t.positionDefault,v=ls(u,this._tooltipModel,h?{position:h}:null),c=v.get("content"),d=Math.random()+"",p=new Yv;this._showOrMove(v,function(){var g=at(v.get("formatterParams")||{});this._showTooltipContent(v,c,g,d,t.offsetX,t.offsetY,t.position,a,p)}),n({type:"showTip",from:this.uid})},e.prototype._showTooltipContent=function(t,a,n,i,o,s,l,u,f){if(this._ticket="",!(!t.get("showContent")||!t.get("show"))){var h=this._tooltipContent;h.setEnterable(t.get("enterable"));var v=t.get("formatter");l=l||t.get("position");var c=a,d=this._getNearestPoint([o,s],n,t.get("trigger"),t.get("borderColor")),p=d.color;if(v)if(U(v)){var g=t.ecModel.get("useUTC"),y=F(n)?n[0]:n,m=y&&y.axisType&&y.axisType.indexOf("time")>=0;c=v,m&&(c=Lh(y.axisValue,c,g)),c=UC(c,n,!0)}else if(J(v)){var _=Y(function(S,w){S===this._ticket&&(h.setContent(w,f,t,p,l),this._updatePosition(t,l,o,s,h,n,u))},this);this._ticket=i,c=v(n,i,_)}else c=v;h.setContent(c,f,t,p,l),h.show(t,p),this._updatePosition(t,l,o,s,h,n,u)}},e.prototype._getNearestPoint=function(t,a,n,i){if(n==="axis"||F(a))return{color:i||(this._renderMode==="html"?"#fff":"none")};if(!F(a))return{color:i||a.color||a.borderColor}},e.prototype._updatePosition=function(t,a,n,i,o,s,l){var u=this._api.getWidth(),f=this._api.getHeight();a=a||t.get("position");var h=o.getSize(),v=t.get("align"),c=t.get("verticalAlign"),d=l&&l.getBoundingRect().clone();if(l&&d.applyTransform(l.transform),J(a)&&(a=a([n,i],s,o.el,d,{viewSize:[u,f],contentSize:h.slice()})),F(a))n=W(a[0],u),i=W(a[1],f);else if(et(a)){var p=a;p.width=h[0],p.height=h[1];var g=re(p,{width:u,height:f});n=g.x,i=g.y,v=null,c=null}else if(U(a)&&l){var y=yZ(a,d,h,t.get("borderWidth"));n=y[0],i=y[1]}else{var y=pZ(n,i,o,u,f,v?null:20,c?null:20);n=y[0],i=y[1]}if(v&&(n-=Ow(v)?h[0]/2:v==="right"?h[0]:0),c&&(i-=Ow(c)?h[1]/2:c==="bottom"?h[1]:0),_L(t)){var y=gZ(n,i,o,u,f);n=y[0],i=y[1]}o.moveTo(n,i)},e.prototype._updateContentNotChangedOnAxis=function(t,a){var n=this._lastDataByCoordSys,i=this._cbParamsList,o=!!n&&n.length===t.length;return o&&A(n,function(s,l){var u=s.dataByAxis||[],f=t[l]||{},h=f.dataByAxis||[];o=o&&u.length===h.length,o&&A(u,function(v,c){var d=h[c]||{},p=v.seriesDataIndices||[],g=d.seriesDataIndices||[];o=o&&v.value===d.value&&v.axisType===d.axisType&&v.axisId===d.axisId&&p.length===g.length,o&&A(p,function(y,m){var _=g[m];o=o&&y.seriesIndex===_.seriesIndex&&y.dataIndex===_.dataIndex}),i&&A(v.seriesDataIndices,function(y){var m=y.seriesIndex,_=a[m],S=i[m];_&&S&&S.data!==_.data&&(o=!1)})})}),this._lastDataByCoordSys=t,this._cbParamsList=a,!!o},e.prototype._hide=function(t){this._lastDataByCoordSys=null,t({type:"hideTip",from:this.uid})},e.prototype.dispose=function(t,a){At.node||!a.getDom()||(rl(this,"_updatePosition"),this._tooltipContent.dispose(),qp("itemTooltip",a))},e.type="tooltip",e}(Ut);function ls(r,e,t){var a=e.ecModel,n;t?(n=new Vt(t,a,a),n=new Vt(e.option,n,a)):n=e;for(var i=r.length-1;i>=0;i--){var o=r[i];o&&(o instanceof Vt&&(o=o.get("tooltip",!0)),U(o)&&(o={formatter:o}),o&&(n=new Vt(o,n,a)))}return n}function kw(r,e){return r.dispatchAction||Y(e.dispatchAction,e)}function pZ(r,e,t,a,n,i,o){var s=t.getSize(),l=s[0],u=s[1];return i!=null&&(r+l+i+2>a?r-=l+i:r+=i),o!=null&&(e+u+o>n?e-=u+o:e+=o),[r,e]}function gZ(r,e,t,a,n){var i=t.getSize(),o=i[0],s=i[1];return r=Math.min(r+o,a)-o,e=Math.min(e+s,n)-s,r=Math.max(r,0),e=Math.max(e,0),[r,e]}function yZ(r,e,t,a){var n=t[0],i=t[1],o=Math.ceil(Math.SQRT2*a)+8,s=0,l=0,u=e.width,f=e.height;switch(r){case"inside":s=e.x+u/2-n/2,l=e.y+f/2-i/2;break;case"top":s=e.x+u/2-n/2,l=e.y-i-o;break;case"bottom":s=e.x+u/2-n/2,l=e.y+f+o;break;case"left":s=e.x-n-o,l=e.y+f/2-i/2;break;case"right":s=e.x+u+o,l=e.y+f/2-i/2}return[s,l]}function Ow(r){return r==="center"||r==="middle"}function mZ(r,e,t){var a=Pg(r).queryOptionMap,n=a.keys()[0];if(!(!n||n==="series")){var i=wl(e,n,a.get(n),{useDefault:!1,enableAll:!1,enableNone:!1}),o=i.models[0];if(!!o){var s=t.getViewOfComponentModel(o),l;if(s.group.traverse(function(u){var f=it(u).tooltipConfig;if(f&&f.name===r.name)return l=u,!0}),l)return{componentMainType:n,componentIndex:o.componentIndex,el:l}}}}var _Z=dZ;function bL(r){ct(Fl),r.registerComponentModel(jY),r.registerComponentView(_Z),r.registerAction({type:"showTip",event:"showTip",update:"tooltip:manuallyShowTip"},Kt),r.registerAction({type:"hideTip",event:"hideTip",update:"tooltip:manuallyHideTip"},Kt)}var SZ=["rect","polygon","keep","clear"];function xZ(r,e){var t=kt(r?r.brush:[]);if(!!t.length){var a=[];A(t,function(l){var u=l.hasOwnProperty("toolbox")?l.toolbox:[];u instanceof Array&&(a=a.concat(u))});var n=r&&r.toolbox;F(n)&&(n=n[0]),n||(n={feature:{}},r.toolbox=[n]);var i=n.feature||(n.feature={}),o=i.brush||(i.brush={}),s=o.type||(o.type=[]);s.push.apply(s,a),wZ(s),e&&!s.length&&s.push.apply(s,SZ)}}function wZ(r){var e={};A(r,function(t){e[t]=1}),r.length=0,A(e,function(t,a){r.push(a)})}var Bw=A;function Nw(r){if(r){for(var e in r)if(r.hasOwnProperty(e))return!0}}function eg(r,e,t){var a={};return Bw(e,function(i){var o=a[i]=n();Bw(r[i],function(s,l){if(!!ve.isValidType(l)){var u={type:l,visual:s};t&&t(u,i),o[l]=new ve(u),l==="opacity"&&(u=at(u),u.type="colorAlpha",o.__hidden.__alphaForOpacity=new ve(u))}})}),a;function n(){var i=function(){};i.prototype.__hidden=i.prototype;var o=new i;return o}}function CL(r,e,t){var a;A(t,function(n){e.hasOwnProperty(n)&&Nw(e[n])&&(a=!0)}),a&&A(t,function(n){e.hasOwnProperty(n)&&Nw(e[n])?r[n]=at(e[n]):delete r[n]})}function bZ(r,e,t,a,n,i){var o={};A(r,function(h){var v=ve.prepareVisualTypes(e[h]);o[h]=v});var s;function l(h){return ly(t,s,h)}function u(h,v){BT(t,s,h,v)}i==null?t.each(f):t.each([i],f);function f(h,v){s=i==null?h:v;var c=t.getRawDataItem(s);if(!(c&&c.visualMap===!1))for(var d=a.call(n,h),p=e[d],g=o[d],y=0,m=g.length;ye[0][1]&&(e[0][1]=i[0]),i[1]e[1][1]&&(e[1][1]=i[1])}return e&&Hw(e)}};function Hw(r){return new vt(r[0][0],r[1][0],r[0][1]-r[0][0],r[1][1]-r[1][0])}var PZ=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.init=function(t,a){this.ecModel=t,this.api=a,this.model,(this._brushController=new Uy(a.getZr())).on("brush",Y(this._onBrush,this)).mount()},e.prototype.render=function(t,a,n,i){this.model=t,this._updateController(t,a,n,i)},e.prototype.updateTransform=function(t,a,n,i){TL(a),this._updateController(t,a,n,i)},e.prototype.updateVisual=function(t,a,n,i){this.updateTransform(t,a,n,i)},e.prototype.updateView=function(t,a,n,i){this._updateController(t,a,n,i)},e.prototype._updateController=function(t,a,n,i){(!i||i.$from!==t.id)&&this._brushController.setPanels(t.brushTargetManager.makePanelOpts(n)).enableBrush(t.brushOption).updateCovers(t.areas.slice())},e.prototype.dispose=function(){this._brushController.dispose()},e.prototype._onBrush=function(t){var a=this.model.id,n=this.model.brushTargetManager.setOutputRanges(t.areas,this.ecModel);(!t.isEnd||t.removeOnClick)&&this.api.dispatchAction({type:"brush",brushId:a,areas:at(n),$from:a}),t.isEnd&&this.api.dispatchAction({type:"brushEnd",brushId:a,areas:at(n),$from:a})},e.type="brush",e}(Ut),RZ=PZ,EZ="#ddd",kZ=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t.areas=[],t.brushOption={},t}return e.prototype.optionUpdated=function(t,a){var n=this.option;!a&&CL(n,t,["inBrush","outOfBrush"]);var i=n.inBrush=n.inBrush||{};n.outOfBrush=n.outOfBrush||{color:EZ},i.hasOwnProperty("liftZ")||(i.liftZ=5)},e.prototype.setAreas=function(t){!t||(this.areas=G(t,function(a){return Ww(this.option,a)},this))},e.prototype.setBrushOption=function(t){this.brushOption=Ww(this.option,t),this.brushType=this.brushOption.brushType},e.type="brush",e.dependencies=["geo","grid","xAxis","yAxis","parallel","series"],e.defaultOption={seriesIndex:"all",brushType:"rect",brushMode:"single",transformable:!0,brushStyle:{borderWidth:1,color:"rgba(210,219,238,0.3)",borderColor:"#D2DBEE"},throttleType:"fixRate",throttleDelay:0,removeOnClick:!0,z:1e4},e}(Tt);function Ww(r,e){return ht({brushType:r.brushType,brushMode:r.brushMode,transformable:r.transformable,brushStyle:new Vt(r.brushStyle).getItemStyle(),removeOnClick:r.removeOnClick,z:r.z},e,!0)}var OZ=kZ,BZ=["rect","polygon","lineX","lineY","keep","clear"],NZ=function(r){k(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.render=function(t,a,n){var i,o,s;a.eachComponent({mainType:"brush"},function(l){i=l.brushType,o=l.brushOption.brushMode||"single",s=s||!!l.areas.length}),this._brushType=i,this._brushMode=o,A(t.get("type",!0),function(l){t.setIconStatus(l,(l==="keep"?o==="multiple":l==="clear"?s:l===i)?"emphasis":"normal")})},e.prototype.updateView=function(t,a,n){this.render(t,a,n)},e.prototype.getIcons=function(){var t=this.model,a=t.get("icon",!0),n={};return A(t.get("type",!0),function(i){a[i]&&(n[i]=a[i])}),n},e.prototype.onclick=function(t,a,n){var i=this._brushType,o=this._brushMode;n==="clear"?(a.dispatchAction({type:"axisAreaSelect",intervals:[]}),a.dispatchAction({type:"brush",command:"clear",areas:[]})):a.dispatchAction({type:"takeGlobalCursor",key:"brush",brushOption:{brushType:n==="keep"?i:i===n?!1:n,brushMode:n==="keep"?o==="multiple"?"single":"multiple":o}})},e.getDefaultOption=function(t){var a={show:!0,type:BZ.slice(),icon:{rect:"M7.3,34.7 M0.4,10V-0.2h9.8 M89.6,10V-0.2h-9.8 M0.4,60v10.2h9.8 M89.6,60v10.2h-9.8 M12.3,22.4V10.5h13.1 M33.6,10.5h7.8 M49.1,10.5h7.8 M77.5,22.4V10.5h-13 M12.3,31.1v8.2 M77.7,31.1v8.2 M12.3,47.6v11.9h13.1 M33.6,59.5h7.6 M49.1,59.5 h7.7 M77.5,47.6v11.9h-13",polygon:"M55.2,34.9c1.7,0,3.1,1.4,3.1,3.1s-1.4,3.1-3.1,3.1 s-3.1-1.4-3.1-3.1S53.5,34.9,55.2,34.9z M50.4,51c1.7,0,3.1,1.4,3.1,3.1c0,1.7-1.4,3.1-3.1,3.1c-1.7,0-3.1-1.4-3.1-3.1 C47.3,52.4,48.7,51,50.4,51z M55.6,37.1l1.5-7.8 M60.1,13.5l1.6-8.7l-7.8,4 M59,19l-1,5.3 M24,16.1l6.4,4.9l6.4-3.3 M48.5,11.6 l-5.9,3.1 M19.1,12.8L9.7,5.1l1.1,7.7 M13.4,29.8l1,7.3l6.6,1.6 M11.6,18.4l1,6.1 M32.8,41.9 M26.6,40.4 M27.3,40.2l6.1,1.6 M49.9,52.1l-5.6-7.6l-4.9-1.2",lineX:"M15.2,30 M19.7,15.6V1.9H29 M34.8,1.9H40.4 M55.3,15.6V1.9H45.9 M19.7,44.4V58.1H29 M34.8,58.1H40.4 M55.3,44.4 V58.1H45.9 M12.5,20.3l-9.4,9.6l9.6,9.8 M3.1,29.9h16.5 M62.5,20.3l9.4,9.6L62.3,39.7 M71.9,29.9H55.4",lineY:"M38.8,7.7 M52.7,12h13.2v9 M65.9,26.6V32 M52.7,46.3h13.2v-9 M24.9,12H11.8v9 M11.8,26.6V32 M24.9,46.3H11.8v-9 M48.2,5.1l-9.3-9l-9.4,9.2 M38.9-3.9V12 M48.2,53.3l-9.3,9l-9.4-9.2 M38.9,62.3V46.4",keep:"M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z",clear:"M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2"},title:t.getLocaleModel().get(["toolbox","brush","title"])};return a},e}(rr),VZ=NZ;function zZ(r){r.registerComponentView(RZ),r.registerComponentModel(OZ),r.registerPreprocessor(xZ),r.registerVisual(r.PRIORITY.VISUAL.BRUSH,AZ),r.registerAction({type:"brush",event:"brush",update:"updateVisual"},function(e,t){t.eachComponent({mainType:"brush",query:e},function(a){a.setAreas(e.areas)})}),r.registerAction({type:"brushSelect",event:"brushSelected",update:"none"},Kt),r.registerAction({type:"brushEnd",event:"brushEnd",update:"none"},Kt),eo("brush",VZ)}var FZ=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t.layoutMode={type:"box",ignoreSize:!0},t}return e.type="title",e.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"}},e}(Tt),GZ=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.render=function(t,a,n){if(this.group.removeAll(),!!t.get("show")){var i=this.group,o=t.getModel("textStyle"),s=t.getModel("subtextStyle"),l=t.get("textAlign"),u=ft(t.get("textBaseline"),t.get("textVerticalAlign")),f=new Dt({style:Nt(o,{text:t.get("text"),fill:o.getTextColor()},{disableBox:!0}),z2:10}),h=f.getBoundingRect(),v=t.get("subtext"),c=new Dt({style:Nt(s,{text:v,fill:s.getTextColor(),y:h.height+t.get("itemGap"),verticalAlign:"top"},{disableBox:!0}),z2:10}),d=t.get("link"),p=t.get("sublink"),g=t.get("triggerEvent",!0);f.silent=!d&&!g,c.silent=!p&&!g,d&&f.on("click",function(){Rf(d,"_"+t.get("target"))}),p&&c.on("click",function(){Rf(p,"_"+t.get("subtarget"))}),it(f).eventData=it(c).eventData=g?{componentType:"title",componentIndex:t.componentIndex}:null,i.add(f),v&&i.add(c);var y=i.getBoundingRect(),m=t.getBoxLayoutParams();m.width=y.width,m.height=y.height;var _=re(m,{width:n.getWidth(),height:n.getHeight()},t.get("padding"));l||(l=t.get("left")||t.get("right"),l==="middle"&&(l="center"),l==="right"?_.x+=_.width:l==="center"&&(_.x+=_.width/2)),u||(u=t.get("top")||t.get("bottom"),u==="center"&&(u="middle"),u==="bottom"?_.y+=_.height:u==="middle"&&(_.y+=_.height/2),u=u||"top"),i.x=_.x,i.y=_.y,i.markRedraw();var S={align:l,verticalAlign:u};f.setStyle(S),c.setStyle(S),y=i.getBoundingRect();var w=_.margin,x=t.getItemStyle(["color","opacity"]);x.fill=t.get("backgroundColor");var b=new bt({shape:{x:y.x-w[3],y:y.y-w[0],width:y.width+w[1]+w[3],height:y.height+w[0]+w[2],r:t.get("borderRadius")},style:x,subPixelOptimize:!0,silent:!0});i.add(b)}},e.type="title",e}(Ut);function AL(r){r.registerComponentModel(FZ),r.registerComponentView(GZ)}var HZ=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t.layoutMode="box",t}return e.prototype.init=function(t,a,n){this.mergeDefaultAndTheme(t,n),this._initData()},e.prototype.mergeOption=function(t){r.prototype.mergeOption.apply(this,arguments),this._initData()},e.prototype.setCurrentIndex=function(t){t==null&&(t=this.option.currentIndex);var a=this._data.count();this.option.loop?t=(t%a+a)%a:(t>=a&&(t=a-1),t<0&&(t=0)),this.option.currentIndex=t},e.prototype.getCurrentIndex=function(){return this.option.currentIndex},e.prototype.isIndexMax=function(){return this.getCurrentIndex()>=this._data.count()-1},e.prototype.setPlayState=function(t){this.option.autoPlay=!!t},e.prototype.getPlayState=function(){return!!this.option.autoPlay},e.prototype._initData=function(){var t=this.option,a=t.data||[],n=t.axisType,i=this._names=[],o;n==="category"?(o=[],A(a,function(u,f){var h=ee(Co(u),""),v;et(u)?(v=at(u),v.value=f):v=f,o.push(v),i.push(h)})):o=a;var s={category:"ordinal",time:"time",value:"number"}[n]||"number",l=this._data=new De([{name:"value",type:s}],this);l.initData(o,i)},e.prototype.getData=function(){return this._data},e.prototype.getCategories=function(){if(this.get("axisType")==="category")return this._names.slice()},e.type="timeline",e.defaultOption={z:4,show:!0,axisType:"time",realtime:!0,left:"20%",top:null,right:"20%",bottom:0,width:null,height:40,padding:5,controlPosition:"left",autoPlay:!1,rewind:!1,loop:!0,playInterval:2e3,currentIndex:0,itemStyle:{},label:{color:"#000"},data:[]},e}(Tt),$w=HZ,DL=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.type="timeline.slider",e.defaultOption=cn($w.defaultOption,{backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,orient:"horizontal",inverse:!1,tooltip:{trigger:"item"},symbol:"circle",symbolSize:12,lineStyle:{show:!0,width:2,color:"#DAE1F5"},label:{position:"auto",show:!0,interval:"auto",rotate:0,color:"#A4B1D7"},itemStyle:{color:"#A4B1D7",borderWidth:1},checkpointStyle:{symbol:"circle",symbolSize:15,color:"#316bf3",borderColor:"#fff",borderWidth:2,shadowBlur:2,shadowOffsetX:1,shadowOffsetY:1,shadowColor:"rgba(0, 0, 0, 0.3)",animation:!0,animationDuration:300,animationEasing:"quinticInOut"},controlStyle:{show:!0,showPlayBtn:!0,showPrevBtn:!0,showNextBtn:!0,itemSize:24,itemGap:12,position:"left",playIcon:"path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z",stopIcon:"path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z",nextIcon:"M2,18.5A1.52,1.52,0,0,1,.92,18a1.49,1.49,0,0,1,0-2.12L7.81,9.36,1,3.11A1.5,1.5,0,1,1,3,.89l8,7.34a1.48,1.48,0,0,1,.49,1.09,1.51,1.51,0,0,1-.46,1.1L3,18.08A1.5,1.5,0,0,1,2,18.5Z",prevIcon:"M10,.5A1.52,1.52,0,0,1,11.08,1a1.49,1.49,0,0,1,0,2.12L4.19,9.64,11,15.89a1.5,1.5,0,1,1-2,2.22L1,10.77A1.48,1.48,0,0,1,.5,9.68,1.51,1.51,0,0,1,1,8.58L9,.92A1.5,1.5,0,0,1,10,.5Z",prevBtnSize:18,nextBtnSize:18,color:"#A4B1D7",borderColor:"#A4B1D7",borderWidth:1},emphasis:{label:{show:!0,color:"#6f778d"},itemStyle:{color:"#316BF3"},controlStyle:{color:"#316BF3",borderColor:"#316BF3",borderWidth:2}},progress:{lineStyle:{color:"#316BF3"},itemStyle:{color:"#316BF3"},label:{color:"#6f778d"}},data:[]}),e}($w);te(DL,ay.prototype);var WZ=DL,$Z=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.type="timeline",e}(Ut),UZ=$Z,YZ=function(r){k(e,r);function e(t,a,n,i){var o=r.call(this,t,a,n)||this;return o.type=i||"value",o}return e.prototype.getLabelModel=function(){return this.model.getModel("label")},e.prototype.isHorizontal=function(){return this.model.get("orient")==="horizontal"},e}(Mr),ZZ=YZ,ud=Math.PI,Uw=Ct(),XZ=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.init=function(t,a){this.api=a},e.prototype.render=function(t,a,n){if(this.model=t,this.api=n,this.ecModel=a,this.group.removeAll(),t.get("show",!0)){var i=this._layout(t,n),o=this._createGroup("_mainGroup"),s=this._createGroup("_labelGroup"),l=this._axis=this._createAxis(i,t);t.formatTooltip=function(u){var f=l.scale.getLabel({value:u});return oe("nameValue",{noName:!0,value:f})},A(["AxisLine","AxisTick","Control","CurrentPointer"],function(u){this["_render"+u](i,o,l,t)},this),this._renderAxisLabel(i,s,l,t),this._position(i,t)}this._doPlayStop(),this._updateTicksStatus()},e.prototype.remove=function(){this._clearTimer(),this.group.removeAll()},e.prototype.dispose=function(){this._clearTimer()},e.prototype._layout=function(t,a){var n=t.get(["label","position"]),i=t.get("orient"),o=KZ(t,a),s;n==null||n==="auto"?s=i==="horizontal"?o.y+o.height/2=0||s==="+"?"left":"right"},u={horizontal:s>=0||s==="+"?"top":"bottom",vertical:"middle"},f={horizontal:0,vertical:ud/2},h=i==="vertical"?o.height:o.width,v=t.getModel("controlStyle"),c=v.get("show",!0),d=c?v.get("itemSize"):0,p=c?v.get("itemGap"):0,g=d+p,y=t.get(["label","rotate"])||0;y=y*ud/180;var m,_,S,w=v.get("position",!0),x=c&&v.get("showPlayBtn",!0),b=c&&v.get("showPrevBtn",!0),C=c&&v.get("showNextBtn",!0),T=0,D=h;w==="left"||w==="bottom"?(x&&(m=[0,0],T+=g),b&&(_=[T,0],T+=g),C&&(S=[D-d,0],D-=g)):(x&&(m=[D-d,0],D-=g),b&&(_=[0,0],T+=g),C&&(S=[D-d,0],D-=g));var M=[T,D];return t.get("inverse")&&M.reverse(),{viewRect:o,mainLength:h,orient:i,rotation:f[i],labelRotation:y,labelPosOpt:s,labelAlign:t.get(["label","align"])||l[i],labelBaseline:t.get(["label","verticalAlign"])||t.get(["label","baseline"])||u[i],playPosition:m,prevBtnPosition:_,nextBtnPosition:S,axisExtent:M,controlSize:d,controlGap:p}},e.prototype._position=function(t,a){var n=this._mainGroup,i=this._labelGroup,o=t.viewRect;if(t.orient==="vertical"){var s=ur(),l=o.x,u=o.y+o.height;Xr(s,s,[-l,-u]),bi(s,s,-ud/2),Xr(s,s,[l,u]),o=o.clone(),o.applyTransform(s)}var f=m(o),h=m(n.getBoundingRect()),v=m(i.getBoundingRect()),c=[n.x,n.y],d=[i.x,i.y];d[0]=c[0]=f[0][0];var p=t.labelPosOpt;if(p==null||U(p)){var g=p==="+"?0:1;_(c,h,f,1,g),_(d,v,f,1,1-g)}else{var g=p>=0?0:1;_(c,h,f,1,g),d[1]=c[1]+p}n.setPosition(c),i.setPosition(d),n.rotation=i.rotation=t.rotation,y(n),y(i);function y(S){S.originX=f[0][0]-S.x,S.originY=f[1][0]-S.y}function m(S){return[[S.x,S.x+S.width],[S.y,S.y+S.height]]}function _(S,w,x,b,C){S[b]+=x[b][C]-w[b][C]}},e.prototype._createAxis=function(t,a){var n=a.getData(),i=a.get("axisType"),o=qZ(a,i);o.getTicks=function(){return n.mapArray(["value"],function(u){return{value:u}})};var s=n.getDataExtent("value");o.setExtent(s[0],s[1]),o.calcNiceTicks();var l=new ZZ("value",o,t.axisExtent,i);return l.model=a,l},e.prototype._createGroup=function(t){var a=this[t]=new nt;return this.group.add(a),a},e.prototype._renderAxisLine=function(t,a,n,i){var o=n.getExtent();if(!!i.get(["lineStyle","show"])){var s=new ue({shape:{x1:o[0],y1:0,x2:o[1],y2:0},style:V({lineCap:"round"},i.getModel("lineStyle").getLineStyle()),silent:!0,z2:1});a.add(s);var l=this._progressLine=new ue({shape:{x1:o[0],x2:this._currentPointer?this._currentPointer.x:o[0],y1:0,y2:0},style:tt({lineCap:"round",lineWidth:s.style.lineWidth},i.getModel(["progress","lineStyle"]).getLineStyle()),silent:!0,z2:1});a.add(l)}},e.prototype._renderAxisTick=function(t,a,n,i){var o=this,s=i.getData(),l=n.scale.getTicks();this._tickSymbols=[],A(l,function(u){var f=n.dataToCoord(u.value),h=s.getItemModel(u.value),v=h.getModel("itemStyle"),c=h.getModel(["emphasis","itemStyle"]),d=h.getModel(["progress","itemStyle"]),p={x:f,y:0,onclick:Y(o._changeTimeline,o,u.value)},g=Yw(h,v,a,p);g.ensureState("emphasis").style=c.getItemStyle(),g.ensureState("progress").style=d.getItemStyle(),si(g);var y=it(g);h.get("tooltip")?(y.dataIndex=u.value,y.dataModel=i):y.dataIndex=y.dataModel=null,o._tickSymbols.push(g)})},e.prototype._renderAxisLabel=function(t,a,n,i){var o=this,s=n.getLabelModel();if(!!s.get("show")){var l=i.getData(),u=n.getViewLabels();this._tickLabels=[],A(u,function(f){var h=f.tickValue,v=l.getItemModel(h),c=v.getModel("label"),d=v.getModel(["emphasis","label"]),p=v.getModel(["progress","label"]),g=n.dataToCoord(f.tickValue),y=new Dt({x:g,y:0,rotation:t.labelRotation-t.rotation,onclick:Y(o._changeTimeline,o,h),silent:!1,style:Nt(c,{text:f.formattedLabel,align:t.labelAlign,verticalAlign:t.labelBaseline})});y.ensureState("emphasis").style=Nt(d),y.ensureState("progress").style=Nt(p),a.add(y),si(y),Uw(y).dataIndex=h,o._tickLabels.push(y)})}},e.prototype._renderControl=function(t,a,n,i){var o=t.controlSize,s=t.rotation,l=i.getModel("controlStyle").getItemStyle(),u=i.getModel(["emphasis","controlStyle"]).getItemStyle(),f=i.getPlayState(),h=i.get("inverse",!0);v(t.nextBtnPosition,"next",Y(this._changeTimeline,this,h?"-":"+")),v(t.prevBtnPosition,"prev",Y(this._changeTimeline,this,h?"+":"-")),v(t.playPosition,f?"stop":"play",Y(this._handlePlayClick,this,!f),!0);function v(c,d,p,g){if(!!c){var y=Tr(ft(i.get(["controlStyle",d+"BtnSize"]),o),o),m=[0,-y/2,y,y],_=JZ(i,d+"Icon",m,{x:c[0],y:c[1],originX:o/2,originY:0,rotation:g?-s:0,rectHover:!0,style:l,onclick:p});_.ensureState("emphasis").style=u,a.add(_),si(_)}}},e.prototype._renderCurrentPointer=function(t,a,n,i){var o=i.getData(),s=i.getCurrentIndex(),l=o.getItemModel(s).getModel("checkpointStyle"),u=this,f={onCreate:function(h){h.draggable=!0,h.drift=Y(u._handlePointerDrag,u),h.ondragend=Y(u._handlePointerDragend,u),Zw(h,u._progressLine,s,n,i,!0)},onUpdate:function(h){Zw(h,u._progressLine,s,n,i)}};this._currentPointer=Yw(l,l,this._mainGroup,{},this._currentPointer,f)},e.prototype._handlePlayClick=function(t){this._clearTimer(),this.api.dispatchAction({type:"timelinePlayChange",playState:t,from:this.uid})},e.prototype._handlePointerDrag=function(t,a,n){this._clearTimer(),this._pointerChangeTimeline([n.offsetX,n.offsetY])},e.prototype._handlePointerDragend=function(t){this._pointerChangeTimeline([t.offsetX,t.offsetY],!0)},e.prototype._pointerChangeTimeline=function(t,a){var n=this._toAxisCoord(t)[0],i=this._axis,o=or(i.getExtent().slice());n>o[1]&&(n=o[1]),n=0&&(o[i]=+o[i].toFixed(v)),[o,h]}var fd={min:ot(Gu,"min"),max:ot(Gu,"max"),average:ot(Gu,"average"),median:ot(Gu,"median")};function pl(r,e){if(!!e){var t=r.getData(),a=r.coordinateSystem,n=a&&a.dimensions;if(!iX(e)&&!F(e.coord)&&F(n)){var i=LL(e,t,a,r);if(e=at(e),e.type&&fd[e.type]&&i.baseAxis&&i.valueAxis){var o=dt(n,i.baseAxis.dim),s=dt(n,i.valueAxis.dim),l=fd[e.type](t,i.baseDataDim,i.valueDataDim,o,s);e.coord=l[0],e.value=l[1]}else e.coord=[e.xAxis!=null?e.xAxis:e.radiusAxis,e.yAxis!=null?e.yAxis:e.angleAxis]}if(e.coord==null||!F(n))e.coord=[];else for(var u=e.coord,f=0;f<2;f++)fd[u[f]]&&(u[f]=Sm(t,t.mapDimension(n[f]),u[f]));return e}}function LL(r,e,t,a){var n={};return r.valueIndex!=null||r.valueDim!=null?(n.valueDataDim=r.valueIndex!=null?e.getDimension(r.valueIndex):r.valueDim,n.valueAxis=t.getAxis(oX(a,n.valueDataDim)),n.baseAxis=t.getOtherAxis(n.valueAxis),n.baseDataDim=e.mapDimension(n.baseAxis.dim)):(n.baseAxis=a.getBaseAxis(),n.valueAxis=t.getOtherAxis(n.baseAxis),n.baseDataDim=e.mapDimension(n.baseAxis.dim),n.valueDataDim=e.mapDimension(n.valueAxis.dim)),n}function oX(r,e){var t=r.getData().getDimensionInfo(e);return t&&t.coordDim}function gl(r,e){return r&&r.containData&&e.coord&&!ag(e)?r.containData(e.coord):!0}function sX(r,e,t){return r&&r.containZone&&e.coord&&t.coord&&!ag(e)&&!ag(t)?r.containZone(e.coord,t.coord):!0}function IL(r,e){return r?function(t,a,n,i){var o=i<2?t.coord&&t.coord[i]:t.value;return Qa(o,e[i])}:function(t,a,n,i){return Qa(t.value,e[i])}}function Sm(r,e,t){if(t==="average"){var a=0,n=0;return r.each(e,function(i,o){isNaN(i)||(a+=i,n++)}),a/n}else return t==="median"?r.getMedian(e):r.getDataExtent(e)[t==="max"?1:0]}var hd=Ct(),lX=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.init=function(){this.markerGroupMap=q()},e.prototype.render=function(t,a,n){var i=this,o=this.markerGroupMap;o.each(function(s){hd(s).keep=!1}),a.eachSeries(function(s){var l=un.getMarkerModelFromSeries(s,i.type);l&&i.renderSeries(s,l,a,n)}),o.each(function(s){!hd(s).keep&&i.group.remove(s.group)})},e.prototype.markKeep=function(t){hd(t).keep=!0},e.prototype.toggleBlurSeries=function(t,a){var n=this;A(t,function(i){var o=un.getMarkerModelFromSeries(i,n.type);if(o){var s=o.getData();s.eachItemGraphicEl(function(l){l&&(a?Q2(l):Ng(l))})}})},e.type="marker",e}(Ut),xm=lX;function qw(r,e,t){var a=e.coordinateSystem;r.each(function(n){var i=r.getItemModel(n),o,s=W(i.get("x"),t.getWidth()),l=W(i.get("y"),t.getHeight());if(!isNaN(s)&&!isNaN(l))o=[s,l];else if(e.getMarkerPosition)o=e.getMarkerPosition(r.getValues(r.dimensions,n));else if(a){var u=r.get(a.dimensions[0],n),f=r.get(a.dimensions[1],n);o=a.dataToPoint([u,f])}isNaN(s)||(o[0]=s),isNaN(l)||(o[1]=l),r.setItemLayout(n,o)})}var uX=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.updateTransform=function(t,a,n){a.eachSeries(function(i){var o=un.getMarkerModelFromSeries(i,"markPoint");o&&(qw(o.getData(),i,n),this.markerGroupMap.get(i.id).updateLayout())},this)},e.prototype.renderSeries=function(t,a,n,i){var o=t.coordinateSystem,s=t.id,l=t.getData(),u=this.markerGroupMap,f=u.get(s)||u.set(s,new kl),h=fX(o,t,a);a.setData(h),qw(a.getData(),t,i),h.each(function(v){var c=h.getItemModel(v),d=c.getShallow("symbol"),p=c.getShallow("symbolSize"),g=c.getShallow("symbolRotate"),y=c.getShallow("symbolOffset"),m=c.getShallow("symbolKeepAspect");if(J(d)||J(p)||J(g)||J(y)){var _=a.getRawValue(v),S=a.getDataParams(v);J(d)&&(d=d(_,S)),J(p)&&(p=p(_,S)),J(g)&&(g=g(_,S)),J(y)&&(y=y(_,S))}var w=c.getModel("itemStyle").getItemStyle(),x=Ll(l,"color");w.fill||(w.fill=x),h.setItemVisual(v,{symbol:d,symbolSize:p,symbolRotate:g,symbolOffset:y,symbolKeepAspect:m,style:w})}),f.updateData(h),this.group.add(f.group),h.eachItemGraphicEl(function(v){v.traverse(function(c){it(c).dataModel=a})}),this.markKeep(f),f.group.silent=a.get("silent")||t.get("silent")},e.type="markPoint",e}(xm);function fX(r,e,t){var a;r?a=G(r&&r.dimensions,function(s){var l=e.getData().getDimensionInfo(e.getData().mapDimension(s))||{};return V(V({},l),{name:s,ordinalMeta:null})}):a=[{name:"value",type:"float"}];var n=new De(a,t),i=G(t.get("data"),ot(pl,e));r&&(i=Et(i,ot(gl,r)));var o=IL(!!r,a);return n.initData(i,null,o),n}var hX=uX;function vX(r){r.registerComponentModel(nX),r.registerComponentView(hX),r.registerPreprocessor(function(e){_m(e.series,"markPoint")&&(e.markPoint=e.markPoint||{})})}var cX=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.createMarkerModelFromSeries=function(t,a,n){return new e(t,a,n)},e.type="markLine",e.defaultOption={z:5,symbol:["circle","arrow"],symbolSize:[8,16],symbolOffset:0,precision:2,tooltip:{trigger:"item"},label:{show:!0,position:"end",distance:5},lineStyle:{type:"dashed"},emphasis:{label:{show:!0},lineStyle:{width:3}},animationEasing:"linear"},e}(un),dX=cX,Hu=Ct(),pX=function(r,e,t,a){var n=r.getData(),i;if(F(a))i=a;else{var o=a.type;if(o==="min"||o==="max"||o==="average"||o==="median"||a.xAxis!=null||a.yAxis!=null){var s=void 0,l=void 0;if(a.yAxis!=null||a.xAxis!=null)s=e.getAxis(a.yAxis!=null?"y":"x"),l=le(a.yAxis,a.xAxis);else{var u=LL(a,n,e,r);s=u.valueAxis;var f=hA(n,u.valueDataDim);l=Sm(n,f,o)}var h=s.dim==="x"?0:1,v=1-h,c=at(a),d={coord:[]};c.type=null,c.coord=[],c.coord[v]=-1/0,d.coord[v]=1/0;var p=t.get("precision");p>=0&&Mt(l)&&(l=+l.toFixed(Math.min(p,20))),c.coord[h]=d.coord[h]=l,i=[c,d,{type:o,valueIndex:a.valueIndex,value:l}]}else i=[]}var g=[pl(r,i[0]),pl(r,i[1]),V({},i[2])];return g[2].type=g[2].type||null,ht(g[2],g[0]),ht(g[2],g[1]),g};function nh(r){return!isNaN(r)&&!isFinite(r)}function Kw(r,e,t,a){var n=1-r,i=a.dimensions[r];return nh(e[n])&&nh(t[n])&&e[r]===t[r]&&a.getAxis(i).containData(e[r])}function gX(r,e){if(r.type==="cartesian2d"){var t=e[0].coord,a=e[1].coord;if(t&&a&&(Kw(1,t,a,r)||Kw(0,t,a,r)))return!0}return gl(r,e[0])&&gl(r,e[1])}function vd(r,e,t,a,n){var i=a.coordinateSystem,o=r.getItemModel(e),s,l=W(o.get("x"),n.getWidth()),u=W(o.get("y"),n.getHeight());if(!isNaN(l)&&!isNaN(u))s=[l,u];else{if(a.getMarkerPosition)s=a.getMarkerPosition(r.getValues(r.dimensions,e));else{var f=i.dimensions,h=r.get(f[0],e),v=r.get(f[1],e);s=i.dataToPoint([h,v])}if(Di(i,"cartesian2d")){var c=i.getAxis("x"),d=i.getAxis("y"),f=i.dimensions;nh(r.get(f[0],e))?s[0]=c.toGlobalCoord(c.getExtent()[t?0:1]):nh(r.get(f[1],e))&&(s[1]=d.toGlobalCoord(d.getExtent()[t?0:1]))}isNaN(l)||(s[0]=l),isNaN(u)||(s[1]=u)}r.setItemLayout(e,s)}var yX=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.updateTransform=function(t,a,n){a.eachSeries(function(i){var o=un.getMarkerModelFromSeries(i,"markLine");if(o){var s=o.getData(),l=Hu(o).from,u=Hu(o).to;l.each(function(f){vd(l,f,!0,i,n),vd(u,f,!1,i,n)}),s.each(function(f){s.setItemLayout(f,[l.getItemLayout(f),u.getItemLayout(f)])}),this.markerGroupMap.get(i.id).updateLayout()}},this)},e.prototype.renderSeries=function(t,a,n,i){var o=t.coordinateSystem,s=t.id,l=t.getData(),u=this.markerGroupMap,f=u.get(s)||u.set(s,new zy);this.group.add(f.group);var h=mX(o,t,a),v=h.from,c=h.to,d=h.line;Hu(a).from=v,Hu(a).to=c,a.setData(d);var p=a.get("symbol"),g=a.get("symbolSize"),y=a.get("symbolRotate"),m=a.get("symbolOffset");F(p)||(p=[p,p]),F(g)||(g=[g,g]),F(y)||(y=[y,y]),F(m)||(m=[m,m]),h.from.each(function(S){_(v,S,!0),_(c,S,!1)}),d.each(function(S){var w=d.getItemModel(S).getModel("lineStyle").getLineStyle();d.setItemLayout(S,[v.getItemLayout(S),c.getItemLayout(S)]),w.stroke==null&&(w.stroke=v.getItemVisual(S,"style").fill),d.setItemVisual(S,{fromSymbolKeepAspect:v.getItemVisual(S,"symbolKeepAspect"),fromSymbolOffset:v.getItemVisual(S,"symbolOffset"),fromSymbolRotate:v.getItemVisual(S,"symbolRotate"),fromSymbolSize:v.getItemVisual(S,"symbolSize"),fromSymbol:v.getItemVisual(S,"symbol"),toSymbolKeepAspect:c.getItemVisual(S,"symbolKeepAspect"),toSymbolOffset:c.getItemVisual(S,"symbolOffset"),toSymbolRotate:c.getItemVisual(S,"symbolRotate"),toSymbolSize:c.getItemVisual(S,"symbolSize"),toSymbol:c.getItemVisual(S,"symbol"),style:w})}),f.updateData(d),h.line.eachItemGraphicEl(function(S){it(S).dataModel=a,S.traverse(function(w){it(w).dataModel=a})});function _(S,w,x){var b=S.getItemModel(w);vd(S,w,x,t,i);var C=b.getModel("itemStyle").getItemStyle();C.fill==null&&(C.fill=Ll(l,"color")),S.setItemVisual(w,{symbolKeepAspect:b.get("symbolKeepAspect"),symbolOffset:ft(b.get("symbolOffset",!0),m[x?0:1]),symbolRotate:ft(b.get("symbolRotate",!0),y[x?0:1]),symbolSize:ft(b.get("symbolSize"),g[x?0:1]),symbol:ft(b.get("symbol",!0),p[x?0:1]),style:C})}this.markKeep(f),f.group.silent=a.get("silent")||t.get("silent")},e.type="markLine",e}(xm);function mX(r,e,t){var a;r?a=G(r&&r.dimensions,function(u){var f=e.getData().getDimensionInfo(e.getData().mapDimension(u))||{};return V(V({},f),{name:u,ordinalMeta:null})}):a=[{name:"value",type:"float"}];var n=new De(a,t),i=new De(a,t),o=new De([],t),s=G(t.get("data"),ot(pX,e,r,t));r&&(s=Et(s,ot(gX,r)));var l=IL(!!r,a);return n.initData(G(s,function(u){return u[0]}),null,l),i.initData(G(s,function(u){return u[1]}),null,l),o.initData(G(s,function(u){return u[2]})),o.hasItemOption=!0,{from:n,to:i,line:o}}var _X=yX;function SX(r){r.registerComponentModel(dX),r.registerComponentView(_X),r.registerPreprocessor(function(e){_m(e.series,"markLine")&&(e.markLine=e.markLine||{})})}var xX=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.createMarkerModelFromSeries=function(t,a,n){return new e(t,a,n)},e.type="markArea",e.defaultOption={z:1,tooltip:{trigger:"item"},animation:!1,label:{show:!0,position:"top"},itemStyle:{borderWidth:0},emphasis:{label:{show:!0,position:"top"}}},e}(un),wX=xX,Wu=Ct(),bX=function(r,e,t,a){var n=a[0],i=a[1];if(!(!n||!i)){var o=pl(r,n),s=pl(r,i),l=o.coord,u=s.coord;l[0]=le(l[0],-1/0),l[1]=le(l[1],-1/0),u[0]=le(u[0],1/0),u[1]=le(u[1],1/0);var f=_g([{},o,s]);return f.coord=[o.coord,s.coord],f.x0=o.x,f.y0=o.y,f.x1=s.x,f.y1=s.y,f}};function ih(r){return!isNaN(r)&&!isFinite(r)}function Jw(r,e,t,a){var n=1-r;return ih(e[n])&&ih(t[n])}function CX(r,e){var t=e.coord[0],a=e.coord[1],n={coord:t,x:e.x0,y:e.y0},i={coord:a,x:e.x1,y:e.y1};return Di(r,"cartesian2d")?t&&a&&(Jw(1,t,a)||Jw(0,t,a))?!0:sX(r,n,i):gl(r,n)||gl(r,i)}function Qw(r,e,t,a,n){var i=a.coordinateSystem,o=r.getItemModel(e),s,l=W(o.get(t[0]),n.getWidth()),u=W(o.get(t[1]),n.getHeight());if(!isNaN(l)&&!isNaN(u))s=[l,u];else{if(a.getMarkerPosition){var f=r.getValues(["x0","y0"],e),h=r.getValues(["x1","y1"],e),v=i.clampData(f),c=i.clampData(h),d=[];t[0]==="x0"?d[0]=v[0]>c[0]?h[0]:f[0]:d[0]=v[0]>c[0]?f[0]:h[0],t[1]==="y0"?d[1]=v[1]>c[1]?h[1]:f[1]:d[1]=v[1]>c[1]?f[1]:h[1],s=a.getMarkerPosition(d,t,!0)}else{var p=r.get(t[0],e),g=r.get(t[1],e),y=[p,g];i.clampData&&i.clampData(y,y),s=i.dataToPoint(y,!0)}if(Di(i,"cartesian2d")){var m=i.getAxis("x"),_=i.getAxis("y"),p=r.get(t[0],e),g=r.get(t[1],e);ih(p)?s[0]=m.toGlobalCoord(m.getExtent()[t[0]==="x0"?0:1]):ih(g)&&(s[1]=_.toGlobalCoord(_.getExtent()[t[1]==="y0"?0:1]))}isNaN(l)||(s[0]=l),isNaN(u)||(s[1]=u)}return s}var jw=[["x0","y0"],["x1","y0"],["x1","y1"],["x0","y1"]],TX=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.updateTransform=function(t,a,n){a.eachSeries(function(i){var o=un.getMarkerModelFromSeries(i,"markArea");if(o){var s=o.getData();s.each(function(l){var u=G(jw,function(h){return Qw(s,l,h,i,n)});s.setItemLayout(l,u);var f=s.getItemGraphicEl(l);f.setShape("points",u)})}},this)},e.prototype.renderSeries=function(t,a,n,i){var o=t.coordinateSystem,s=t.id,l=t.getData(),u=this.markerGroupMap,f=u.get(s)||u.set(s,{group:new nt});this.group.add(f.group),this.markKeep(f);var h=AX(o,t,a);a.setData(h),h.each(function(v){var c=G(jw,function(C){return Qw(h,v,C,t,i)}),d=o.getAxis("x").scale,p=o.getAxis("y").scale,g=d.getExtent(),y=p.getExtent(),m=[d.parse(h.get("x0",v)),d.parse(h.get("x1",v))],_=[p.parse(h.get("y0",v)),p.parse(h.get("y1",v))];or(m),or(_);var S=!(g[0]>m[1]||g[1]_[1]||y[1]<_[0]),w=!S;h.setItemLayout(v,{points:c,allClipped:w});var x=h.getItemModel(v).getModel("itemStyle").getItemStyle(),b=Ll(l,"color");x.fill||(x.fill=b,U(x.fill)&&(x.fill=_f(x.fill,.4))),x.stroke||(x.stroke=b),h.setItemVisual(v,"style",x)}),h.diff(Wu(f).data).add(function(v){var c=h.getItemLayout(v);if(!c.allClipped){var d=new ze({shape:{points:c.points}});h.setItemGraphicEl(v,d),f.group.add(d)}}).update(function(v,c){var d=Wu(f).data.getItemGraphicEl(c),p=h.getItemLayout(v);p.allClipped?d&&f.group.remove(d):(d?Lt(d,{shape:{points:p.points}},a,v):d=new ze({shape:{points:p.points}}),h.setItemGraphicEl(v,d),f.group.add(d))}).remove(function(v){var c=Wu(f).data.getItemGraphicEl(v);f.group.remove(c)}).execute(),h.eachItemGraphicEl(function(v,c){var d=h.getItemModel(c),p=h.getItemVisual(c,"style");v.useStyle(h.getItemVisual(c,"style")),de(v,ie(d),{labelFetcher:a,labelDataIndex:c,defaultText:h.getName(c)||"",inheritColor:U(p.fill)?_f(p.fill,1):"#000"}),ce(v,d),$t(v,null,null,d.get(["emphasis","disabled"])),it(v).dataModel=a}),Wu(f).data=h,f.group.silent=a.get("silent")||t.get("silent")},e.type="markArea",e}(xm);function AX(r,e,t){var a,n,i=["x0","y0","x1","y1"];if(r){var o=G(r&&r.dimensions,function(u){var f=e.getData(),h=f.getDimensionInfo(f.mapDimension(u))||{};return V(V({},h),{name:u,ordinalMeta:null})});n=G(i,function(u,f){return{name:u,type:o[f%2].type}}),a=new De(n,t)}else n=[{name:"value",type:"float"}],a=new De(n,t);var s=G(t.get("data"),ot(bX,e,r,t));r&&(s=Et(s,ot(CX,r)));var l=r?function(u,f,h,v){var c=u.coord[Math.floor(v/2)][v%2];return Qa(c,n[v])}:function(u,f,h,v){return Qa(u.value,n[v])};return a.initData(s,null,l),a.hasItemOption=!0,a}var DX=TX;function MX(r){r.registerComponentModel(wX),r.registerComponentView(DX),r.registerPreprocessor(function(e){_m(e.series,"markArea")&&(e.markArea=e.markArea||{})})}var LX=function(r,e){if(e==="all")return{type:"all",title:r.getLocaleModel().get(["legend","selector","all"])};if(e==="inverse")return{type:"inverse",title:r.getLocaleModel().get(["legend","selector","inverse"])}},IX=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t.layoutMode={type:"box",ignoreSize:!0},t}return e.prototype.init=function(t,a,n){this.mergeDefaultAndTheme(t,n),t.selected=t.selected||{},this._updateSelector(t)},e.prototype.mergeOption=function(t,a){r.prototype.mergeOption.call(this,t,a),this._updateSelector(t)},e.prototype._updateSelector=function(t){var a=t.selector,n=this.ecModel;a===!0&&(a=t.selector=["all","inverse"]),F(a)&&A(a,function(i,o){U(i)&&(i={type:i}),a[o]=ht(i,LX(n,i.type))})},e.prototype.optionUpdated=function(){this._updateData(this.ecModel);var t=this._data;if(t[0]&&this.get("selectedMode")==="single"){for(var a=!1,n=0;n=0},e.prototype.getOrient=function(){return this.get("orient")==="vertical"?{index:1,name:"vertical"}:{index:0,name:"horizontal"}},e.type="legend.plain",e.dependencies=["series"],e.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}},e}(Tt),ng=IX,Zi=ot,ig=A,$u=nt,PX=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t.newlineDisabled=!1,t}return e.prototype.init=function(){this.group.add(this._contentGroup=new $u),this.group.add(this._selectorGroup=new $u),this._isFirstRender=!0},e.prototype.getContentGroup=function(){return this._contentGroup},e.prototype.getSelectorGroup=function(){return this._selectorGroup},e.prototype.render=function(t,a,n){var i=this._isFirstRender;if(this._isFirstRender=!1,this.resetInner(),!!t.get("show",!0)){var o=t.get("align"),s=t.get("orient");(!o||o==="auto")&&(o=t.get("left")==="right"&&s==="vertical"?"right":"left");var l=t.get("selector",!0),u=t.get("selectorPosition",!0);l&&(!u||u==="auto")&&(u=s==="horizontal"?"end":"start"),this.renderInner(o,t,a,n,l,s,u);var f=t.getBoxLayoutParams(),h={width:n.getWidth(),height:n.getHeight()},v=t.get("padding"),c=re(f,h,v),d=this.layoutInner(t,o,c,i,l,u),p=re(tt({width:d.width,height:d.height},f),h,v);this.group.x=p.x-d.x,this.group.y=p.y-d.y,this.group.markRedraw(),this.group.add(this._backgroundEl=gL(d,t))}},e.prototype.resetInner=function(){this.getContentGroup().removeAll(),this._backgroundEl&&this.group.remove(this._backgroundEl),this.getSelectorGroup().removeAll()},e.prototype.renderInner=function(t,a,n,i,o,s,l){var u=this.getContentGroup(),f=q(),h=a.get("selectedMode"),v=[];n.eachRawSeries(function(c){!c.get("legendHoverLink")&&v.push(c.id)}),ig(a.getData(),function(c,d){var p=c.get("name");if(!this.newlineDisabled&&(p===""||p===` `)){var g=new $u;g.newline=!0,u.add(g);return}var y=n.getSeriesByName(p)[0];if(!f.get(p))if(y){var m=y.getData(),_=m.getVisual("legendLineStyle")||{},S=m.getVisual("legendIcon"),w=m.getVisual("style"),x=this._createItem(y,p,d,c,a,t,_,w,S,h,i);x.on("click",Zi(tb,p,null,i,v)).on("mouseover",Zi(og,y.name,null,i,v)).on("mouseout",Zi(sg,y.name,null,i,v)),f.set(p,!0)}else n.eachRawSeries(function(b){if(!f.get(p)&&b.legendVisualProvider){var C=b.legendVisualProvider;if(!C.containName(p))return;var T=C.indexOfName(p),D=C.getItemVisual(T,"style"),M=C.getItemVisual(T,"legendIcon"),L=We(D.fill);L&&L[3]===0&&(L[3]=.2,D=V(V({},D),{fill:va(L,"rgba")}));var I=this._createItem(b,p,d,c,a,t,{},D,M,h,i);I.on("click",Zi(tb,null,p,i,v)).on("mouseover",Zi(og,null,p,i,v)).on("mouseout",Zi(sg,null,p,i,v)),f.set(p,!0)}},this)},this),o&&this._createSelector(o,a,i,s,l)},e.prototype._createSelector=function(t,a,n,i,o){var s=this.getSelectorGroup();ig(t,function(u){var f=u.type,h=new Dt({style:{x:0,y:0,align:"center",verticalAlign:"middle"},onclick:function(){n.dispatchAction({type:f==="all"?"legendAllSelect":"legendInverseSelect"})}});s.add(h);var v=a.getModel("selectorLabel"),c=a.getModel(["emphasis","selectorLabel"]);de(h,{normal:v,emphasis:c},{defaultText:u.title}),si(h)})},e.prototype._createItem=function(t,a,n,i,o,s,l,u,f,h,v){var c=t.visualDrawType,d=o.get("itemWidth"),p=o.get("itemHeight"),g=o.isSelected(a),y=i.get("symbolRotate"),m=i.get("symbolKeepAspect"),_=i.get("icon");f=_||f||"roundRect";var S=RX(f,i,l,u,c,g,v),w=new $u,x=i.getModel("textStyle");if(J(t.getLegendIcon)&&(!_||_==="inherit"))w.add(t.getLegendIcon({itemWidth:d,itemHeight:p,icon:f,iconRotate:y,itemStyle:S.itemStyle,lineStyle:S.lineStyle,symbolKeepAspect:m}));else{var b=_==="inherit"&&t.getData().getVisual("symbol")?y==="inherit"?t.getData().getVisual("symbolRotate"):y:0;w.add(EX({itemWidth:d,itemHeight:p,icon:f,iconRotate:b,itemStyle:S.itemStyle,lineStyle:S.lineStyle,symbolKeepAspect:m}))}var C=s==="left"?d+5:-5,T=s,D=o.get("formatter"),M=a;U(D)&&D?M=D.replace("{name}",a!=null?a:""):J(D)&&(M=D(a));var L=g?x.getTextColor():i.get("inactiveColor");w.add(new Dt({style:Nt(x,{text:M,x:C,y:p/2,fill:L,align:T,verticalAlign:"middle"},{inheritColor:L})}));var I=new bt({shape:w.getBoundingRect(),invisible:!0}),P=i.getModel("tooltip");return P.get("show")&&Do({el:I,componentModel:o,itemName:a,itemTooltipOption:P.option}),w.add(I),w.eachChild(function(R){R.silent=!0}),I.silent=!h,this.getContentGroup().add(w),si(w),w.__legendDataIndex=n,w},e.prototype.layoutInner=function(t,a,n,i,o,s){var l=this.getContentGroup(),u=this.getSelectorGroup();ui(t.get("orient"),l,t.get("itemGap"),n.width,n.height);var f=l.getBoundingRect(),h=[-f.x,-f.y];if(u.markRedraw(),l.markRedraw(),o){ui("horizontal",u,t.get("selectorItemGap",!0));var v=u.getBoundingRect(),c=[-v.x,-v.y],d=t.get("selectorButtonGap",!0),p=t.getOrient().index,g=p===0?"width":"height",y=p===0?"height":"width",m=p===0?"y":"x";s==="end"?c[p]+=f[g]+d:h[p]+=v[g]+d,c[1-p]+=f[y]/2-v[y]/2,u.x=c[0],u.y=c[1],l.x=h[0],l.y=h[1];var _={x:0,y:0};return _[g]=f[g]+d+v[g],_[y]=Math.max(f[y],v[y]),_[m]=Math.min(0,v[m]+c[1-p]),_}else return l.x=h[0],l.y=h[1],this.group.getBoundingRect()},e.prototype.remove=function(){this.getContentGroup().removeAll(),this._isFirstRender=!0},e.type="legend.plain",e}(Ut);function RX(r,e,t,a,n,i,o){function s(g,y){g.lineWidth==="auto"&&(g.lineWidth=y.lineWidth>0?2:0),ig(g,function(m,_){g[_]==="inherit"&&(g[_]=y[_])})}var l=e.getModel("itemStyle"),u=l.getItemStyle(),f=r.lastIndexOf("empty",0)===0?"fill":"stroke",h=l.getShallow("decal");u.decal=!h||h==="inherit"?a.decal:co(h,o),u.fill==="inherit"&&(u.fill=a[n]),u.stroke==="inherit"&&(u.stroke=a[f]),u.opacity==="inherit"&&(u.opacity=(n==="fill"?a:t).opacity),s(u,a);var v=e.getModel("lineStyle"),c=v.getLineStyle();if(s(c,t),u.fill==="auto"&&(u.fill=a.fill),u.stroke==="auto"&&(u.stroke=a.fill),c.stroke==="auto"&&(c.stroke=a.fill),!i){var d=e.get("inactiveBorderWidth"),p=u[f];u.lineWidth=d==="auto"?a.lineWidth>0&&p?2:0:u.lineWidth,u.fill=e.get("inactiveColor"),u.stroke=e.get("inactiveBorderColor"),c.stroke=v.get("inactiveColor"),c.lineWidth=v.get("inactiveWidth")}return{itemStyle:u,lineStyle:c}}function EX(r){var e=r.icon||"roundRect",t=jt(e,0,0,r.itemWidth,r.itemHeight,r.itemStyle.fill,r.symbolKeepAspect);return t.setStyle(r.itemStyle),t.rotation=(r.iconRotate||0)*Math.PI/180,t.setOrigin([r.itemWidth/2,r.itemHeight/2]),e.indexOf("empty")>-1&&(t.style.stroke=t.style.fill,t.style.fill="#fff",t.style.lineWidth=2),t}function tb(r,e,t,a){sg(r,e,t,a),t.dispatchAction({type:"legendToggleSelect",name:r!=null?r:e}),og(r,e,t,a)}function PL(r){for(var e=r.getZr().storage.getDisplayList(),t,a=0,n=e.length;an[o],g=[-c.x,-c.y];a||(g[i]=f[u]);var y=[0,0],m=[-d.x,-d.y],_=ft(t.get("pageButtonGap",!0),t.get("itemGap",!0));if(p){var S=t.get("pageButtonPosition",!0);S==="end"?m[i]+=n[o]-d[o]:y[i]+=d[o]+_}m[1-i]+=c[s]/2-d[s]/2,f.setPosition(g),h.setPosition(y),v.setPosition(m);var w={x:0,y:0};if(w[o]=p?n[o]:c[o],w[s]=Math.max(c[s],d[s]),w[l]=Math.min(0,d[l]+m[1-i]),h.__rectSize=n[o],p){var x={x:0,y:0};x[o]=Math.max(n[o]-d[o]-_,0),x[s]=w[s],h.setClipPath(new bt({shape:x})),h.__rectSize=x[o]}else v.eachChild(function(C){C.attr({invisible:!0,silent:!0})});var b=this._getPageInfo(t);return b.pageIndex!=null&&Lt(f,{x:b.contentPosition[0],y:b.contentPosition[1]},p?t:null),this._updatePageInfoView(t,b),w},e.prototype._pageGo=function(t,a,n){var i=this._getPageInfo(a)[t];i!=null&&n.dispatchAction({type:"legendScroll",scrollDataIndex:i,legendId:a.id})},e.prototype._updatePageInfoView=function(t,a){var n=this._controllerGroup;A(["pagePrev","pageNext"],function(f){var h=f+"DataIndex",v=a[h]!=null,c=n.childOfName(f);c&&(c.setStyle("fill",v?t.get("pageIconColor",!0):t.get("pageIconInactiveColor",!0)),c.cursor=v?"pointer":"default")});var i=n.childOfName("pageText"),o=t.get("pageFormatter"),s=a.pageIndex,l=s!=null?s+1:0,u=a.pageCount;i&&o&&i.setStyle("text",U(o)?o.replace("{current}",l==null?"":l+"").replace("{total}",u==null?"":u+""):o({current:l,total:u}))},e.prototype._getPageInfo=function(t){var a=t.get("scrollDataIndex",!0),n=this.getContentGroup(),i=this._containerGroup.__rectSize,o=t.getOrient().index,s=cd[o],l=dd[o],u=this._findTargetItemIndex(a),f=n.children(),h=f[u],v=f.length,c=v?1:0,d={contentPosition:[n.x,n.y],pageCount:c,pageIndex:c-1,pagePrevDataIndex:null,pageNextDataIndex:null};if(!h)return d;var p=S(h);d.contentPosition[o]=-p.s;for(var g=u+1,y=p,m=p,_=null;g<=v;++g)_=S(f[g]),(!_&&m.e>y.s+i||_&&!w(_,y.s))&&(m.i>y.i?y=m:y=_,y&&(d.pageNextDataIndex==null&&(d.pageNextDataIndex=y.i),++d.pageCount)),m=_;for(var g=u-1,y=p,m=p,_=null;g>=-1;--g)_=S(f[g]),(!_||!w(m,_.s))&&y.i=b&&x.s<=b+i}},e.prototype._findTargetItemIndex=function(t){if(!this._showController)return 0;var a,n=this.getContentGroup(),i;return n.eachChild(function(o,s){var l=o.__legendDataIndex;i==null&&l!=null&&(i=s),l===t&&(a=s)}),a!=null?a:i},e.type="legend.scroll",e}(RL),zX=VX;function FX(r){r.registerAction("legendScroll","legendscroll",function(e,t){var a=e.scrollDataIndex;a!=null&&t.eachComponent({mainType:"legend",subType:"scroll",query:e},function(n){n.setScrollDataIndex(a)})})}function GX(r){ct(EL),r.registerComponentModel(NX),r.registerComponentView(zX),FX(r)}function kL(r){ct(EL),ct(GX)}var HX=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.type="dataZoom.inside",e.defaultOption=cn(dl.defaultOption,{disabled:!1,zoomLock:!1,zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!1,preventDefaultMouseMove:!0}),e}(dl),WX=HX,wm=Ct();function $X(r,e,t){wm(r).coordSysRecordMap.each(function(a){var n=a.dataZoomInfoMap.get(e.uid);n&&(n.getRange=t)})}function UX(r,e){for(var t=wm(r).coordSysRecordMap,a=t.keys(),n=0;na[t+e]&&(e=s),n=n&&o.get("preventDefaultMouseMove",!0)}),{controlType:e,opt:{zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!0,preventDefaultMouseMove:!!n}}}function KX(r){r.registerProcessor(r.PRIORITY.PROCESSOR.FILTER,function(e,t){var a=wm(t),n=a.coordSysRecordMap||(a.coordSysRecordMap=q());n.each(function(i){i.dataZoomInfoMap=null}),e.eachComponent({mainType:"dataZoom",subType:"inside"},function(i){var o=cL(i);A(o.infoList,function(s){var l=s.model.uid,u=n.get(l)||n.set(l,YX(t,s.model)),f=u.dataZoomInfoMap||(u.dataZoomInfoMap=q());f.set(i.uid,{dzReferCoordSysInfo:s,model:i,getRange:null})})}),n.each(function(i){var o=i.controller,s,l=i.dataZoomInfoMap;if(l){var u=l.keys()[0];u!=null&&(s=l.get(u))}if(!s){OL(n,i);return}var f=qX(l);o.enable(f.controlType,f.opt),o.setPointerChecker(i.containsPoint),Oo(i,"dispatchAction",s.model.get("throttle",!0),"fixRate")})})}var JX=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type="dataZoom.inside",t}return e.prototype.render=function(t,a,n){if(r.prototype.render.apply(this,arguments),t.noTarget()){this._clear();return}this.range=t.getPercentRange(),$X(n,t,{pan:Y(pd.pan,this),zoom:Y(pd.zoom,this),scrollMove:Y(pd.scrollMove,this)})},e.prototype.dispose=function(){this._clear(),r.prototype.dispose.apply(this,arguments)},e.prototype._clear=function(){UX(this.api,this.dataZoomModel),this.range=null},e.type="dataZoom.inside",e}(cm),pd={zoom:function(r,e,t,a){var n=this.range,i=n.slice(),o=r.axisModels[0];if(!!o){var s=gd[e](null,[a.originX,a.originY],o,t,r),l=(s.signal>0?s.pixelStart+s.pixelLength-s.pixel:s.pixel-s.pixelStart)/s.pixelLength*(i[1]-i[0])+i[0],u=Math.max(1/a.scale,0);i[0]=(i[0]-l)*u+l,i[1]=(i[1]-l)*u+l;var f=this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();if(Li(0,i,[0,100],0,f.minSpan,f.maxSpan),this.range=i,n[0]!==i[0]||n[1]!==i[1])return i}},pan:ab(function(r,e,t,a,n,i){var o=gd[a]([i.oldX,i.oldY],[i.newX,i.newY],e,n,t);return o.signal*(r[1]-r[0])*o.pixel/o.pixelLength}),scrollMove:ab(function(r,e,t,a,n,i){var o=gd[a]([0,0],[i.scrollDelta,i.scrollDelta],e,n,t);return o.signal*(r[1]-r[0])*i.scrollDelta})};function ab(r){return function(e,t,a,n){var i=this.range,o=i.slice(),s=e.axisModels[0];if(!!s){var l=r(o,s,e,t,a,n);if(Li(l,o,[0,100],"all"),this.range=o,i[0]!==o[0]||i[1]!==o[1])return o}}}var gd={grid:function(r,e,t,a,n){var i=t.axis,o={},s=n.model.coordinateSystem.getRect();return r=r||[0,0],i.dim==="x"?(o.pixel=e[0]-r[0],o.pixelLength=s.width,o.pixelStart=s.x,o.signal=i.inverse?1:-1):(o.pixel=e[1]-r[1],o.pixelLength=s.height,o.pixelStart=s.y,o.signal=i.inverse?-1:1),o},polar:function(r,e,t,a,n){var i=t.axis,o={},s=n.model.coordinateSystem,l=s.getRadiusAxis().getExtent(),u=s.getAngleAxis().getExtent();return r=r?s.pointToCoord(r):[0,0],e=s.pointToCoord(e),t.mainType==="radiusAxis"?(o.pixel=e[0]-r[0],o.pixelLength=l[1]-l[0],o.pixelStart=l[0],o.signal=i.inverse?1:-1):(o.pixel=e[1]-r[1],o.pixelLength=u[1]-u[0],o.pixelStart=u[0],o.signal=i.inverse?-1:1),o},singleAxis:function(r,e,t,a,n){var i=t.axis,o=n.model.coordinateSystem.getRect(),s={};return r=r||[0,0],i.orient==="horizontal"?(s.pixel=e[0]-r[0],s.pixelLength=o.width,s.pixelStart=o.x,s.signal=i.inverse?1:-1):(s.pixel=e[1]-r[1],s.pixelLength=o.height,s.pixelStart=o.y,s.signal=i.inverse?-1:1),s}},QX=JX;function BL(r){dm(r),r.registerComponentModel(WX),r.registerComponentView(QX),KX(r)}var jX=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.type="dataZoom.slider",e.layoutMode="box",e.defaultOption=cn(dl.defaultOption,{show:!0,right:"ph",top:"ph",width:"ph",height:"ph",left:null,bottom:null,borderColor:"#d2dbee",borderRadius:3,backgroundColor:"rgba(47,69,84,0)",dataBackground:{lineStyle:{color:"#d2dbee",width:.5},areaStyle:{color:"#d2dbee",opacity:.2}},selectedDataBackground:{lineStyle:{color:"#8fb0f7",width:.5},areaStyle:{color:"#8fb0f7",opacity:.2}},fillerColor:"rgba(135,175,274,0.2)",handleIcon:"path://M-9.35,34.56V42m0-40V9.5m-2,0h4a2,2,0,0,1,2,2v21a2,2,0,0,1-2,2h-4a2,2,0,0,1-2-2v-21A2,2,0,0,1-11.35,9.5Z",handleSize:"100%",handleStyle:{color:"#fff",borderColor:"#ACB8D1"},moveHandleSize:7,moveHandleIcon:"path://M-320.9-50L-320.9-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-348-41-339-50-320.9-50z M-212.3-50L-212.3-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-239.4-41-230.4-50-212.3-50z M-103.7-50L-103.7-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-130.9-41-121.8-50-103.7-50z",moveHandleStyle:{color:"#D2DBEE",opacity:.7},showDetail:!0,showDataShadow:"auto",realtime:!0,zoomLock:!1,textStyle:{color:"#6E7079"},brushSelect:!0,brushStyle:{color:"rgba(135,175,274,0.15)"},emphasis:{handleStyle:{borderColor:"#8FB0F7"},moveHandleStyle:{color:"#8FB0F7"}}}),e}(dl),tq=jX,hs=bt,nb=7,eq=1,yd=30,rq=7,vs="horizontal",ib="vertical",aq=5,nq=["line","bar","candlestick","scatter"],iq={easing:"cubicOut",duration:100,delay:0},oq=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t._displayables={},t}return e.prototype.init=function(t,a){this.api=a,this._onBrush=Y(this._onBrush,this),this._onBrushEnd=Y(this._onBrushEnd,this)},e.prototype.render=function(t,a,n,i){if(r.prototype.render.apply(this,arguments),Oo(this,"_dispatchZoomAction",t.get("throttle"),"fixRate"),this._orient=t.getOrient(),t.get("show")===!1){this.group.removeAll();return}if(t.noTarget()){this._clear(),this.group.removeAll();return}(!i||i.type!=="dataZoom"||i.from!==this.uid)&&this._buildView(),this._updateView()},e.prototype.dispose=function(){this._clear(),r.prototype.dispose.apply(this,arguments)},e.prototype._clear=function(){rl(this,"_dispatchZoomAction");var t=this.api.getZr();t.off("mousemove",this._onBrush),t.off("mouseup",this._onBrushEnd)},e.prototype._buildView=function(){var t=this.group;t.removeAll(),this._brushing=!1,this._displayables.brushRect=null,this._resetLocation(),this._resetInterval();var a=this._displayables.sliderGroup=new nt;this._renderBackground(),this._renderHandle(),this._renderDataShadow(),t.add(a),this._positionGroup()},e.prototype._resetLocation=function(){var t=this.dataZoomModel,a=this.api,n=t.get("brushSelect"),i=n?rq:0,o=this._findCoordRect(),s={width:a.getWidth(),height:a.getHeight()},l=this._orient===vs?{right:s.width-o.x-o.width,top:s.height-yd-nb-i,width:o.width,height:yd}:{right:nb,top:o.y,width:yd,height:o.height},u=Po(t.option);A(["right","top","width","height"],function(h){u[h]==="ph"&&(u[h]=l[h])});var f=re(u,s);this._location={x:f.x,y:f.y},this._size=[f.width,f.height],this._orient===ib&&this._size.reverse()},e.prototype._positionGroup=function(){var t=this.group,a=this._location,n=this._orient,i=this.dataZoomModel.getFirstTargetAxisModel(),o=i&&i.get("inverse"),s=this._displayables.sliderGroup,l=(this._dataShadowInfo||{}).otherAxisInverse;s.attr(n===vs&&!o?{scaleY:l?1:-1,scaleX:1}:n===vs&&o?{scaleY:l?1:-1,scaleX:-1}:n===ib&&!o?{scaleY:l?-1:1,scaleX:1,rotation:Math.PI/2}:{scaleY:l?-1:1,scaleX:-1,rotation:Math.PI/2});var u=t.getBoundingRect([s]);t.x=a.x-u.x,t.y=a.y-u.y,t.markRedraw()},e.prototype._getViewExtent=function(){return[0,this._size[0]]},e.prototype._renderBackground=function(){var t=this.dataZoomModel,a=this._size,n=this._displayables.sliderGroup,i=t.get("brushSelect");n.add(new hs({silent:!0,shape:{x:0,y:0,width:a[0],height:a[1]},style:{fill:t.get("backgroundColor")},z2:-40}));var o=new hs({shape:{x:0,y:0,width:a[0],height:a[1]},style:{fill:"transparent"},z2:0,onclick:Y(this._onClickPanel,this)}),s=this.api.getZr();i?(o.on("mousedown",this._onBrushStart,this),o.cursor="crosshair",s.on("mousemove",this._onBrush),s.on("mouseup",this._onBrushEnd)):(s.off("mousemove",this._onBrush),s.off("mouseup",this._onBrushEnd)),n.add(o)},e.prototype._renderDataShadow=function(){var t=this._dataShadowInfo=this._prepareDataShadowInfo();if(this._displayables.dataShadowSegs=[],!t)return;var a=this._size,n=this._shadowSize||[],i=t.series,o=i.getRawData(),s=i.getShadowDim&&i.getShadowDim(),l=s&&o.getDimensionInfo(s)?i.getShadowDim():t.otherDim;if(l==null)return;var u=this._shadowPolygonPts,f=this._shadowPolylinePts;if(o!==this._shadowData||l!==this._shadowDim||a[0]!==n[0]||a[1]!==n[1]){var h=o.getDataExtent(l),v=(h[1]-h[0])*.3;h=[h[0]-v,h[1]+v];var c=[0,a[1]],d=[0,a[0]],p=[[a[0],0],[0,0]],g=[],y=d[1]/(o.count()-1),m=0,_=Math.round(o.count()/a[0]),S;o.each([l],function(T,D){if(_>0&&D%_){m+=y;return}var M=T==null||isNaN(T)||T==="",L=M?0:Rt(T,h,c,!0);M&&!S&&D?(p.push([p[p.length-1][0],0]),g.push([g[g.length-1][0],0])):!M&&S&&(p.push([m,0]),g.push([m,0])),p.push([m,L]),g.push([m,L]),m+=y,S=M}),u=this._shadowPolygonPts=p,f=this._shadowPolylinePts=g}this._shadowData=o,this._shadowDim=l,this._shadowSize=[a[0],a[1]];var w=this.dataZoomModel;function x(T){var D=w.getModel(T?"selectedDataBackground":"dataBackground"),M=new nt,L=new ze({shape:{points:u},segmentIgnoreThreshold:1,style:D.getModel("areaStyle").getAreaStyle(),silent:!0,z2:-20}),I=new Fe({shape:{points:f},segmentIgnoreThreshold:1,style:D.getModel("lineStyle").getLineStyle(),silent:!0,z2:-19});return M.add(L),M.add(I),M}for(var b=0;b<3;b++){var C=x(b===1);this._displayables.sliderGroup.add(C),this._displayables.dataShadowSegs.push(C)}},e.prototype._prepareDataShadowInfo=function(){var t=this.dataZoomModel,a=t.get("showDataShadow");if(a!==!1){var n,i=this.ecModel;return t.eachTargetAxis(function(o,s){var l=t.getAxisProxy(o,s).getTargetSeriesModels();A(l,function(u){if(!n&&!(a!==!0&&dt(nq,u.get("type"))<0)){var f=i.getComponent(qa(o),s).axis,h=sq(o),v,c=u.coordinateSystem;h!=null&&c.getOtherAxis&&(v=c.getOtherAxis(f).inverse),h=u.getData().mapDimension(h),n={thisAxis:f,series:u,thisDim:o,otherDim:h,otherAxisInverse:v}}},this)},this),n}},e.prototype._renderHandle=function(){var t=this.group,a=this._displayables,n=a.handles=[null,null],i=a.handleLabels=[null,null],o=this._displayables.sliderGroup,s=this._size,l=this.dataZoomModel,u=this.api,f=l.get("borderRadius")||0,h=l.get("brushSelect"),v=a.filler=new hs({silent:h,style:{fill:l.get("fillerColor")},textConfig:{position:"inside"}});o.add(v),o.add(new hs({silent:!0,subPixelOptimize:!0,shape:{x:0,y:0,width:s[0],height:s[1],r:f},style:{stroke:l.get("dataBackgroundColor")||l.get("borderColor"),lineWidth:eq,fill:"rgba(0,0,0,0)"}})),A([0,1],function(_){var S=l.get("handleIcon");!Of[S]&&S.indexOf("path://")<0&&S.indexOf("image://")<0&&(S="path://"+S);var w=jt(S,-1,0,2,2,null,!0);w.attr({cursor:ob(this._orient),draggable:!0,drift:Y(this._onDragMove,this,_),ondragend:Y(this._onDragEnd,this),onmouseover:Y(this._showDataInfo,this,!0),onmouseout:Y(this._showDataInfo,this,!1),z2:5});var x=w.getBoundingRect(),b=l.get("handleSize");this._handleHeight=W(b,this._size[1]),this._handleWidth=x.width/x.height*this._handleHeight,w.setStyle(l.getModel("handleStyle").getItemStyle()),w.style.strokeNoScale=!0,w.rectHover=!0,w.ensureState("emphasis").style=l.getModel(["emphasis","handleStyle"]).getItemStyle(),si(w);var C=l.get("handleColor");C!=null&&(w.style.fill=C),o.add(n[_]=w);var T=l.getModel("textStyle");t.add(i[_]=new Dt({silent:!0,invisible:!0,style:Nt(T,{x:0,y:0,text:"",verticalAlign:"middle",align:"center",fill:T.getTextColor(),font:T.getFont()}),z2:10}))},this);var c=v;if(h){var d=W(l.get("moveHandleSize"),s[1]),p=a.moveHandle=new bt({style:l.getModel("moveHandleStyle").getItemStyle(),silent:!0,shape:{r:[0,0,2,2],y:s[1]-.5,height:d}}),g=d*.8,y=a.moveHandleIcon=jt(l.get("moveHandleIcon"),-g/2,-g/2,g,g,"#fff",!0);y.silent=!0,y.y=s[1]+d/2-.5,p.ensureState("emphasis").style=l.getModel(["emphasis","moveHandleStyle"]).getItemStyle();var m=Math.min(s[1]/2,Math.max(d,10));c=a.moveZone=new bt({invisible:!0,shape:{y:s[1]-m,height:d+m}}),c.on("mouseover",function(){u.enterEmphasis(p)}).on("mouseout",function(){u.leaveEmphasis(p)}),o.add(p),o.add(y),o.add(c)}c.attr({draggable:!0,cursor:ob(this._orient),drift:Y(this._onDragMove,this,"all"),ondragstart:Y(this._showDataInfo,this,!0),ondragend:Y(this._onDragEnd,this),onmouseover:Y(this._showDataInfo,this,!0),onmouseout:Y(this._showDataInfo,this,!1)})},e.prototype._resetInterval=function(){var t=this._range=this.dataZoomModel.getPercentRange(),a=this._getViewExtent();this._handleEnds=[Rt(t[0],[0,100],a,!0),Rt(t[1],[0,100],a,!0)]},e.prototype._updateInterval=function(t,a){var n=this.dataZoomModel,i=this._handleEnds,o=this._getViewExtent(),s=n.findRepresentativeAxisProxy().getMinMaxSpan(),l=[0,100];Li(a,i,o,n.get("zoomLock")?"all":t,s.minSpan!=null?Rt(s.minSpan,l,o,!0):null,s.maxSpan!=null?Rt(s.maxSpan,l,o,!0):null);var u=this._range,f=this._range=or([Rt(i[0],o,l,!0),Rt(i[1],o,l,!0)]);return!u||u[0]!==f[0]||u[1]!==f[1]},e.prototype._updateView=function(t){var a=this._displayables,n=this._handleEnds,i=or(n.slice()),o=this._size;A([0,1],function(c){var d=a.handles[c],p=this._handleHeight;d.attr({scaleX:p/2,scaleY:p/2,x:n[c]+(c?-1:1),y:o[1]/2-p/2})},this),a.filler.setShape({x:i[0],y:0,width:i[1]-i[0],height:o[1]});var s={x:i[0],width:i[1]-i[0]};a.moveHandle&&(a.moveHandle.setShape(s),a.moveZone.setShape(s),a.moveZone.getBoundingRect(),a.moveHandleIcon&&a.moveHandleIcon.attr("x",s.x+s.width/2));for(var l=a.dataShadowSegs,u=[0,i[0],i[1],o[0]],f=0;fa[0]||n[1]<0||n[1]>a[1])){var i=this._handleEnds,o=(i[0]+i[1])/2,s=this._updateInterval("all",n[0]-o);this._updateView(),s&&this._dispatchZoomAction(!1)}},e.prototype._onBrushStart=function(t){var a=t.offsetX,n=t.offsetY;this._brushStart=new ut(a,n),this._brushing=!0,this._brushStartTime=+new Date},e.prototype._onBrushEnd=function(t){if(!!this._brushing){var a=this._displayables.brushRect;if(this._brushing=!1,!!a){a.attr("ignore",!0);var n=a.shape,i=+new Date;if(!(i-this._brushStartTime<200&&Math.abs(n.width)<5)){var o=this._getViewExtent(),s=[0,100];this._range=or([Rt(n.x,o,s,!0),Rt(n.x+n.width,o,s,!0)]),this._handleEnds=[n.x,n.x+n.width],this._updateView(),this._dispatchZoomAction(!1)}}}},e.prototype._onBrush=function(t){this._brushing&&(ya(t.event),this._updateBrushRect(t.offsetX,t.offsetY))},e.prototype._updateBrushRect=function(t,a){var n=this._displayables,i=this.dataZoomModel,o=n.brushRect;o||(o=n.brushRect=new hs({silent:!0,style:i.getModel("brushStyle").getItemStyle()}),n.sliderGroup.add(o)),o.attr("ignore",!1);var s=this._brushStart,l=this._displayables.sliderGroup,u=l.transformCoordToLocal(t,a),f=l.transformCoordToLocal(s.x,s.y),h=this._size;u[0]=Math.max(Math.min(h[0],u[0]),0),o.setShape({x:f[0],y:0,width:u[0]-f[0],height:h[1]})},e.prototype._dispatchZoomAction=function(t){var a=this._range;this.api.dispatchAction({type:"dataZoom",from:this.uid,dataZoomId:this.dataZoomModel.id,animation:t?iq:null,start:a[0],end:a[1]})},e.prototype._findCoordRect=function(){var t,a=cL(this.dataZoomModel).infoList;if(!t&&a.length){var n=a[0].model.coordinateSystem;t=n.getRect&&n.getRect()}if(!t){var i=this.api.getWidth(),o=this.api.getHeight();t={x:i*.2,y:o*.2,width:i*.6,height:o*.6}}return t},e.type="dataZoom.slider",e}(cm);function sq(r){var e={x:"y",y:"x",radius:"angle",angle:"radius"};return e[r]}function ob(r){return r==="vertical"?"ns-resize":"ew-resize"}var lq=oq;function NL(r){r.registerComponentModel(tq),r.registerComponentView(lq),dm(r)}function uq(r){ct(BL),ct(NL)}var fq={get:function(r,e,t){var a=at((hq[r]||{})[e]);return t&&F(a)?a[a.length-1]:a}},hq={color:{active:["#006edd","#e0ffff"],inactive:["rgba(0,0,0,0)"]},colorHue:{active:[0,360],inactive:[0,0]},colorSaturation:{active:[.3,1],inactive:[0,0]},colorLightness:{active:[.9,.5],inactive:[0,0]},colorAlpha:{active:[.3,1],inactive:[0,0]},opacity:{active:[.3,1],inactive:[0,0]},symbol:{active:["circle","roundRect","diamond"],inactive:["none"]},symbolSize:{active:[10,50],inactive:[0,0]}},VL=fq,sb=ve.mapVisual,vq=ve.eachVisual,cq=F,lb=A,dq=or,pq=Rt,gq=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t.stateList=["inRange","outOfRange"],t.replacableOptionKeys=["inRange","outOfRange","target","controller","color"],t.layoutMode={type:"box",ignoreSize:!0},t.dataBound=[-1/0,1/0],t.targetVisuals={},t.controllerVisuals={},t}return e.prototype.init=function(t,a,n){this.mergeDefaultAndTheme(t,n)},e.prototype.optionUpdated=function(t,a){var n=this.option;!a&&CL(n,t,this.replacableOptionKeys),this.textStyleModel=this.getModel("textStyle"),this.resetItemSize(),this.completeVisualOption()},e.prototype.resetVisual=function(t){var a=this.stateList;t=Y(t,this),this.controllerVisuals=eg(this.option.controller,a,t),this.targetVisuals=eg(this.option.target,a,t)},e.prototype.getItemSymbol=function(){return null},e.prototype.getTargetSeriesIndices=function(){var t=this.option.seriesIndex,a=[];return t==null||t==="all"?this.ecModel.eachSeries(function(n,i){a.push(i)}):a=kt(t),a},e.prototype.eachTargetSeries=function(t,a){A(this.getTargetSeriesIndices(),function(n){var i=this.ecModel.getSeriesByIndex(n);i&&t.call(a,i)},this)},e.prototype.isTargetSeries=function(t){var a=!1;return this.eachTargetSeries(function(n){n===t&&(a=!0)}),a},e.prototype.formatValueText=function(t,a,n){var i=this.option,o=i.precision,s=this.dataBound,l=i.formatter,u;n=n||["<",">"],F(t)&&(t=t.slice(),u=!0);var f=a?t:u?[h(t[0]),h(t[1])]:h(t);if(U(l))return l.replace("{value}",u?f[0]:f).replace("{value2}",u?f[1]:f);if(J(l))return u?l(t[0],t[1]):l(t);if(u)return t[0]===s[0]?n[0]+" "+f[1]:t[1]===s[1]?n[1]+" "+f[0]:f[0]+" - "+f[1];return f;function h(v){return v===s[0]?"min":v===s[1]?"max":(+v).toFixed(Math.min(o,20))}},e.prototype.resetExtent=function(){var t=this.option,a=dq([t.min,t.max]);this._dataExtent=a},e.prototype.getDataDimensionIndex=function(t){var a=this.option.dimension;if(a!=null)return t.getDimensionIndex(a);for(var n=t.dimensions,i=n.length-1;i>=0;i--){var o=n[i],s=t.getDimensionInfo(o);if(!s.isCalculationCoord)return s.storeDimIndex}},e.prototype.getExtent=function(){return this._dataExtent.slice()},e.prototype.completeVisualOption=function(){var t=this.ecModel,a=this.option,n={inRange:a.inRange,outOfRange:a.outOfRange},i=a.target||(a.target={}),o=a.controller||(a.controller={});ht(i,n),ht(o,n);var s=this.isCategory();l.call(this,i),l.call(this,o),u.call(this,i,"inRange","outOfRange"),f.call(this,o);function l(h){cq(a.color)&&!h.inRange&&(h.inRange={color:a.color.slice().reverse()}),h.inRange=h.inRange||{color:t.get("gradientColor")}}function u(h,v,c){var d=h[v],p=h[c];d&&!p&&(p=h[c]={},lb(d,function(g,y){if(!!ve.isValidType(y)){var m=VL.get(y,"inactive",s);m!=null&&(p[y]=m,y==="color"&&!p.hasOwnProperty("opacity")&&!p.hasOwnProperty("colorAlpha")&&(p.opacity=[0,0]))}}))}function f(h){var v=(h.inRange||{}).symbol||(h.outOfRange||{}).symbol,c=(h.inRange||{}).symbolSize||(h.outOfRange||{}).symbolSize,d=this.get("inactiveColor"),p=this.getItemSymbol(),g=p||"roundRect";lb(this.stateList,function(y){var m=this.itemSize,_=h[y];_||(_=h[y]={color:s?d:[d]}),_.symbol==null&&(_.symbol=v&&at(v)||(s?g:[g])),_.symbolSize==null&&(_.symbolSize=c&&at(c)||(s?m[0]:[m[0],m[0]])),_.symbol=sb(_.symbol,function(x){return x==="none"?g:x});var S=_.symbolSize;if(S!=null){var w=-1/0;vq(S,function(x){x>w&&(w=x)}),_.symbolSize=sb(S,function(x){return pq(x,[0,w],[0,m[0]],!0)})}},this)}},e.prototype.resetItemSize=function(){this.itemSize=[parseFloat(this.get("itemWidth")),parseFloat(this.get("itemHeight"))]},e.prototype.isCategory=function(){return!!this.option.categories},e.prototype.setSelected=function(t){},e.prototype.getSelected=function(){return null},e.prototype.getValueState=function(t){return null},e.prototype.getVisualMeta=function(t){return null},e.type="visualMap",e.dependencies=["series"],e.defaultOption={show:!0,z:4,seriesIndex:"all",min:0,max:200,left:0,right:null,top:null,bottom:0,itemWidth:null,itemHeight:null,inverse:!1,orient:"vertical",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",contentColor:"#5793f3",inactiveColor:"#aaa",borderWidth:0,padding:5,textGap:10,precision:0,textStyle:{color:"#333"}},e}(Tt),oh=gq,ub=[20,140],yq=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.optionUpdated=function(t,a){r.prototype.optionUpdated.apply(this,arguments),this.resetExtent(),this.resetVisual(function(n){n.mappingMethod="linear",n.dataExtent=this.getExtent()}),this._resetRange()},e.prototype.resetItemSize=function(){r.prototype.resetItemSize.apply(this,arguments);var t=this.itemSize;(t[0]==null||isNaN(t[0]))&&(t[0]=ub[0]),(t[1]==null||isNaN(t[1]))&&(t[1]=ub[1])},e.prototype._resetRange=function(){var t=this.getExtent(),a=this.option.range;!a||a.auto?(t.auto=1,this.option.range=t):F(a)&&(a[0]>a[1]&&a.reverse(),a[0]=Math.max(a[0],t[0]),a[1]=Math.min(a[1],t[1]))},e.prototype.completeVisualOption=function(){r.prototype.completeVisualOption.apply(this,arguments),A(this.stateList,function(t){var a=this.option.controller[t].symbolSize;a&&a[0]!==a[1]&&(a[0]=a[1]/3)},this)},e.prototype.setSelected=function(t){this.option.range=t.slice(),this._resetRange()},e.prototype.getSelected=function(){var t=this.getExtent(),a=or((this.get("range")||[]).slice());return a[0]>t[1]&&(a[0]=t[1]),a[1]>t[1]&&(a[1]=t[1]),a[0]=n[1]||t<=a[1])?"inRange":"outOfRange"},e.prototype.findTargetDataIndices=function(t){var a=[];return this.eachTargetSeries(function(n){var i=[],o=n.getData();o.each(this.getDataDimensionIndex(o),function(s,l){t[0]<=s&&s<=t[1]&&i.push(l)},this),a.push({seriesId:n.id,dataIndex:i})},this),a},e.prototype.getVisualMeta=function(t){var a=fb(this,"outOfRange",this.getExtent()),n=fb(this,"inRange",this.option.range.slice()),i=[];function o(c,d){i.push({value:c,color:t(c,d)})}for(var s=0,l=0,u=n.length,f=a.length;lt[1])break;i.push({color:this.getControllerVisual(l,"color",a),offset:s/n})}return i.push({color:this.getControllerVisual(t[1],"color",a),offset:1}),i},e.prototype._createBarPoints=function(t,a){var n=this.visualMapModel.itemSize;return[[n[0]-a[0],t[0]],[n[0],t[0]],[n[0],t[1]],[n[0]-a[1],t[1]]]},e.prototype._createBarGroup=function(t){var a=this._orient,n=this.visualMapModel.get("inverse");return new nt(a==="horizontal"&&!n?{scaleX:t==="bottom"?1:-1,rotation:Math.PI/2}:a==="horizontal"&&n?{scaleX:t==="bottom"?-1:1,rotation:-Math.PI/2}:a==="vertical"&&!n?{scaleX:t==="left"?1:-1,scaleY:-1}:{scaleX:t==="left"?1:-1})},e.prototype._updateHandle=function(t,a){if(!!this._useHandle){var n=this._shapes,i=this.visualMapModel,o=n.handleThumbs,s=n.handleLabels,l=i.itemSize,u=i.getExtent();Sq([0,1],function(f){var h=o[f];h.setStyle("fill",a.handlesColor[f]),h.y=t[f];var v=Or(t[f],[0,l[1]],u,!0),c=this.getControllerVisual(v,"symbolSize");h.scaleX=h.scaleY=c/l[0],h.x=l[0]-c/2;var d=Cr(n.handleLabelPoints[f],li(h,this.group));s[f].setStyle({x:d[0],y:d[1],text:i.formatValueText(this._dataInterval[f]),verticalAlign:"middle",align:this._orient==="vertical"?this._applyTransform("left",n.mainGroup):"center"})},this)}},e.prototype._showIndicator=function(t,a,n,i){var o=this.visualMapModel,s=o.getExtent(),l=o.itemSize,u=[0,l[1]],f=this._shapes,h=f.indicator;if(!!h){h.attr("invisible",!1);var v={convertOpacityToAlpha:!0},c=this.getControllerVisual(t,"color",v),d=this.getControllerVisual(t,"symbolSize"),p=Or(t,s,u,!0),g=l[0]-d/2,y={x:h.x,y:h.y};h.y=p,h.x=g;var m=Cr(f.indicatorLabelPoint,li(h,this.group)),_=f.indicatorLabel;_.attr("invisible",!1);var S=this._applyTransform("left",f.mainGroup),w=this._orient,x=w==="horizontal";_.setStyle({text:(n||"")+o.formatValueText(a),verticalAlign:x?S:"middle",align:x?"center":S});var b={x:g,y:p,style:{fill:c}},C={style:{x:m[0],y:m[1]}};if(o.ecModel.isAnimationEnabled()&&!this._firstShowIndicator){var T={duration:100,easing:"cubicInOut",additive:!0};h.x=y.x,h.y=y.y,h.animateTo(b,T),_.animateTo(C,T)}else h.attr(b),_.attr(C);this._firstShowIndicator=!1;var D=this._shapes.handleLabels;if(D)for(var M=0;Mo[1]&&(h[1]=1/0),a&&(h[0]===-1/0?this._showIndicator(f,h[1],"< ",l):h[1]===1/0?this._showIndicator(f,h[0],"> ",l):this._showIndicator(f,f,"\u2248 ",l));var v=this._hoverLinkDataIndices,c=[];(a||db(n))&&(c=this._hoverLinkDataIndices=n.findTargetDataIndices(h));var d=xk(v,c);this._dispatchHighDown("downplay",cf(d[0],n)),this._dispatchHighDown("highlight",cf(d[1],n))}},e.prototype._hoverLinkFromSeriesMouseOver=function(t){var a;if(jn(t.target,function(l){var u=it(l);if(u.dataIndex!=null)return a=u,!0},!0),!!a){var n=this.ecModel.getSeriesByIndex(a.seriesIndex),i=this.visualMapModel;if(!!i.isTargetSeries(n)){var o=n.getData(a.dataType),s=o.getStore().get(i.getDataDimensionIndex(o),a.dataIndex);isNaN(s)||this._showIndicator(s,s)}}},e.prototype._hideIndicator=function(){var t=this._shapes;t.indicator&&t.indicator.attr("invisible",!0),t.indicatorLabel&&t.indicatorLabel.attr("invisible",!0);var a=this._shapes.handleLabels;if(a)for(var n=0;n=0&&(i.dimension=o,a.push(i))}}),r.getData().setVisual("visualMeta",a)}}];function Lq(r,e,t,a){for(var n=e.targetVisuals[a],i=ve.prepareVisualTypes(n),o={color:Ll(r.getData(),"color")},s=0,l=i.length;s0:e.splitNumber>0)||e.calculable)?"continuous":"piecewise"}),r.registerAction(Aq,Dq),A(Mq,function(e){r.registerVisual(r.PRIORITY.VISUAL.COMPONENT,e)}),r.registerPreprocessor(Iq))}function HL(r){r.registerComponentModel(mq),r.registerComponentView(Tq),GL(r)}var Pq=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t._pieceList=[],t}return e.prototype.optionUpdated=function(t,a){r.prototype.optionUpdated.apply(this,arguments),this.resetExtent();var n=this._mode=this._determineMode();this._pieceList=[],Rq[this._mode].call(this,this._pieceList),this._resetSelected(t,a);var i=this.option.categories;this.resetVisual(function(o,s){n==="categories"?(o.mappingMethod="category",o.categories=at(i)):(o.dataExtent=this.getExtent(),o.mappingMethod="piecewise",o.pieceList=G(this._pieceList,function(l){return l=at(l),s!=="inRange"&&(l.visual=null),l}))})},e.prototype.completeVisualOption=function(){var t=this.option,a={},n=ve.listVisualTypes(),i=this.isCategory();A(t.pieces,function(s){A(n,function(l){s.hasOwnProperty(l)&&(a[l]=1)})}),A(a,function(s,l){var u=!1;A(this.stateList,function(f){u=u||o(t,f,l)||o(t.target,f,l)},this),!u&&A(this.stateList,function(f){(t[f]||(t[f]={}))[l]=VL.get(l,f==="inRange"?"active":"inactive",i)})},this);function o(s,l,u){return s&&s[l]&&s[l].hasOwnProperty(u)}r.prototype.completeVisualOption.apply(this,arguments)},e.prototype._resetSelected=function(t,a){var n=this.option,i=this._pieceList,o=(a?n:t).selected||{};if(n.selected=o,A(i,function(l,u){var f=this.getSelectedMapKey(l);o.hasOwnProperty(f)||(o[f]=!0)},this),n.selectedMode==="single"){var s=!1;A(i,function(l,u){var f=this.getSelectedMapKey(l);o[f]&&(s?o[f]=!1:s=!0)},this)}},e.prototype.getItemSymbol=function(){return this.get("itemSymbol")},e.prototype.getSelectedMapKey=function(t){return this._mode==="categories"?t.value+"":t.index+""},e.prototype.getPieceList=function(){return this._pieceList},e.prototype._determineMode=function(){var t=this.option;return t.pieces&&t.pieces.length>0?"pieces":this.option.categories?"categories":"splitNumber"},e.prototype.setSelected=function(t){this.option.selected=at(t)},e.prototype.getValueState=function(t){var a=ve.findPieceIndex(t,this._pieceList);return a!=null&&this.option.selected[this.getSelectedMapKey(this._pieceList[a])]?"inRange":"outOfRange"},e.prototype.findTargetDataIndices=function(t){var a=[],n=this._pieceList;return this.eachTargetSeries(function(i){var o=[],s=i.getData();s.each(this.getDataDimensionIndex(s),function(l,u){var f=ve.findPieceIndex(l,n);f===t&&o.push(u)},this),a.push({seriesId:i.id,dataIndex:o})},this),a},e.prototype.getRepresentValue=function(t){var a;if(this.isCategory())a=t.value;else if(t.value!=null)a=t.value;else{var n=t.interval||[];a=n[0]===-1/0&&n[1]===1/0?0:(n[0]+n[1])/2}return a},e.prototype.getVisualMeta=function(t){if(this.isCategory())return;var a=[],n=["",""],i=this;function o(f,h){var v=i.getRepresentValue({interval:f});h||(h=i.getValueState(v));var c=t(v,h);f[0]===-1/0?n[0]=c:f[1]===1/0?n[1]=c:a.push({value:f[0],color:c},{value:f[1],color:c})}var s=this._pieceList.slice();if(!s.length)s.push({interval:[-1/0,1/0]});else{var l=s[0].interval[0];l!==-1/0&&s.unshift({interval:[-1/0,l]}),l=s[s.length-1].interval[1],l!==1/0&&s.push({interval:[l,1/0]})}var u=-1/0;return A(s,function(f){var h=f.interval;h&&(h[0]>u&&o([u,h[0]],"outOfRange"),o(h.slice()),u=h[1])},this),{stops:a,outerColors:n}},e.type="visualMap.piecewise",e.defaultOption=cn(oh.defaultOption,{selected:null,minOpen:!1,maxOpen:!1,align:"auto",itemWidth:20,itemHeight:14,itemSymbol:"roundRect",pieces:null,categories:null,splitNumber:5,selectedMode:"multiple",itemGap:10,hoverLink:!0}),e}(oh),Rq={splitNumber:function(r){var e=this.option,t=Math.min(e.precision,20),a=this.getExtent(),n=e.splitNumber;n=Math.max(parseInt(n,10),1),e.splitNumber=n;for(var i=(a[1]-a[0])/n;+i.toFixed(t)!==i&&t<5;)t++;e.precision=t,i=+i.toFixed(t),e.minOpen&&r.push({interval:[-1/0,a[0]],close:[0,0]});for(var o=0,s=a[0];o","\u2265"][a[0]]];t.text=t.text||this.formatValueText(t.value!=null?t.value:t.interval,!1,n)},this)}};function mb(r,e){var t=r.inverse;(r.orient==="vertical"?!t:t)&&e.reverse()}var Eq=Pq,kq=function(r){k(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=e.type,t}return e.prototype.doRender=function(){var t=this.group;t.removeAll();var a=this.visualMapModel,n=a.get("textGap"),i=a.textStyleModel,o=i.getFont(),s=i.getTextColor(),l=this._getItemAlign(),u=a.itemSize,f=this._getViewData(),h=f.endsText,v=le(a.get("showLabel",!0),!h);h&&this._renderEndsText(t,h[0],u,v,l),A(f.viewPieceList,function(c){var d=c.piece,p=new nt;p.onclick=Y(this._onItemClick,this,d),this._enableHoverLink(p,c.indexInModelPieceList);var g=a.getRepresentValue(d);if(this._createItemSymbol(p,g,[0,0,u[0],u[1]]),v){var y=this.visualMapModel.getValueState(g);p.add(new Dt({style:{x:l==="right"?-n:u[0]+n,y:u[1]/2,text:d.text,verticalAlign:"middle",align:l,font:o,fill:s,opacity:y==="outOfRange"?.5:1}}))}t.add(p)},this),h&&this._renderEndsText(t,h[1],u,v,l),ui(a.get("orient"),t,a.get("itemGap")),this.renderBackground(t),this.positionGroup(t)},e.prototype._enableHoverLink=function(t,a){var n=this;t.on("mouseover",function(){return i("highlight")}).on("mouseout",function(){return i("downplay")});var i=function(o){var s=n.visualMapModel;s.option.hoverLink&&n.api.dispatchAction({type:o,batch:cf(s.findTargetDataIndices(a),s)})}},e.prototype._getItemAlign=function(){var t=this.visualMapModel,a=t.option;if(a.orient==="vertical")return FL(t,this.api,t.itemSize);var n=a.align;return(!n||n==="auto")&&(n="left"),n},e.prototype._renderEndsText=function(t,a,n,i,o){if(!!a){var s=new nt,l=this.visualMapModel.textStyleModel;s.add(new Dt({style:Nt(l,{x:i?o==="right"?n[0]:0:n[0]/2,y:n[1]/2,verticalAlign:"middle",align:i?o:"center",text:a})})),t.add(s)}},e.prototype._getViewData=function(){var t=this.visualMapModel,a=G(t.getPieceList(),function(s,l){return{piece:s,indexInModelPieceList:l}}),n=t.get("text"),i=t.get("orient"),o=t.get("inverse");return(i==="horizontal"?o:!o)?a.reverse():n&&(n=n.slice().reverse()),{viewPieceList:a,endsText:n}},e.prototype._createItemSymbol=function(t,a,n){t.add(jt(this.getControllerVisual(a,"symbol"),n[0],n[1],n[2],n[3],this.getControllerVisual(a,"color")))},e.prototype._onItemClick=function(t){var a=this.visualMapModel,n=a.option,i=n.selectedMode;if(!!i){var o=at(n.selected),s=a.getSelectedMapKey(t);i==="single"||i===!0?(o[s]=!0,A(o,function(l,u){o[u]=u===s})):o[s]=!o[s],this.api.dispatchAction({type:"selectDataRange",from:this.uid,visualMapId:this.visualMapModel.id,selected:o})}},e.type="visualMap.piecewise",e}(zL),Oq=kq;function WL(r){r.registerComponentModel(Eq),r.registerComponentView(Oq),GL(r)}function Bq(r){ct(HL),ct(WL)}var Nq={label:{enabled:!0},decal:{show:!1}},_b=Ct(),Vq={};function zq(r,e){var t=r.getModel("aria");if(!t.get("enabled"))return;var a=at(Nq);ht(a.label,r.getLocaleModel().get("aria"),!1),ht(t.option,a,!1),n(),i();function n(){var u=t.getModel("decal"),f=u.get("show");if(f){var h=q();r.eachSeries(function(v){if(!v.isColorBySeries()){var c=h.get(v.type);c||(c={},h.set(v.type,c)),_b(v).scope=c}}),r.eachRawSeries(function(v){if(r.isSeriesFiltered(v))return;if(J(v.enableAriaDecal)){v.enableAriaDecal();return}var c=v.getData();if(v.isColorBySeries()){var m=up(v.ecModel,v.name,Vq,r.getSeriesCount()),_=c.getVisual("decal");c.setVisual("decal",S(_,m))}else{var d=v.getRawData(),p={},g=_b(v).scope;c.each(function(w){var x=c.getRawIndex(w);p[x]=w});var y=d.count();d.each(function(w){var x=p[w],b=d.getName(w)||w+"",C=up(v.ecModel,b,g,y),T=c.getItemVisual(x,"decal");c.setItemVisual(x,"decal",S(T,C))})}function S(w,x){var b=w?V(V({},x),w):x;return b.dirty=!0,b}})}}function i(){var u=r.getLocaleModel().get("aria"),f=t.getModel("label");if(f.option=tt(f.option,u),!!f.get("enabled")){var h=e.getZr().dom;if(f.get("description")){h.setAttribute("aria-label",f.get("description"));return}var v=r.getSeriesCount(),c=f.get(["data","maxCount"])||10,d=f.get(["series","maxCount"])||10,p=Math.min(v,d),g;if(!(v<1)){var y=s();if(y){var m=f.get(["general","withTitle"]);g=o(m,{title:y})}else g=f.get(["general","withoutTitle"]);var _=[],S=v>1?f.get(["series","multiple","prefix"]):f.get(["series","single","prefix"]);g+=o(S,{seriesCount:v}),r.eachSeries(function(C,T){if(T1?f.get(["series","multiple",L]):f.get(["series","single",L]),D=o(D,{seriesId:C.seriesIndex,seriesName:C.get("name"),seriesType:l(C.subType)});var I=C.getData();if(I.count()>c){var P=f.get(["data","partialData"]);D+=o(P,{displayCnt:c})}else D+=f.get(["data","allData"]);for(var R=f.get(["data","separator","middle"]),E=f.get(["data","separator","end"]),B=[],O=0;O":"gt",">=":"gte","=":"eq","!=":"ne","<>":"ne"},Hq=function(){function r(e){var t=this._condVal=U(e)?new RegExp(e):RR(e)?e:null;if(t==null){var a="";Pt(a)}}return r.prototype.evaluate=function(e){var t=typeof e;return U(t)?this._condVal.test(e):Mt(t)?this._condVal.test(e+""):!1},r}(),Wq=function(){function r(){}return r.prototype.evaluate=function(){return this.value},r}(),$q=function(){function r(){}return r.prototype.evaluate=function(){for(var e=this.children,t=0;t2&&a.push(n),n=[I,P]}function f(I,P,R,E){io(I,R)&&io(P,E)||n.push(I,P,R,E,R,E)}function h(I,P,R,E,B,O){var z=Math.abs(P-I),H=Math.tan(z/4)*4/3,$=PC:M2&&a.push(n),a}function ug(r,e,t,a,n,i,o,s,l,u){if(io(r,t)&&io(e,a)&&io(n,o)&&io(i,s)){l.push(o,s);return}var f=2/u,h=f*f,v=o-r,c=s-e,d=Math.sqrt(v*v+c*c);v/=d,c/=d;var p=t-r,g=a-e,y=n-o,m=i-s,_=p*p+g*g,S=y*y+m*m;if(_=0&&C=0){l.push(o,s);return}var T=[],D=[];en(r,t,n,o,.5,T),en(e,a,i,s,.5,D),ug(T[0],D[0],T[1],D[1],T[2],D[2],T[3],D[3],l,u),ug(T[4],D[4],T[5],D[5],T[6],D[6],T[7],D[7],l,u)}function nK(r,e){var t=lg(r),a=[];e=e||1;for(var n=0;n0)for(var u=0;uMath.abs(u),h=UL([l,u],f?0:1,e),v=(f?s:u)/h.length,c=0;cn,o=UL([a,n],i?0:1,e),s=i?"width":"height",l=i?"height":"width",u=i?"x":"y",f=i?"y":"x",h=r[s]/o.length,v=0;v1?null:new ut(p*l+r,p*u+e)}function sK(r,e,t){var a=new ut;ut.sub(a,t,e),a.normalize();var n=new ut;ut.sub(n,r,e);var i=n.dot(a);return i}function qi(r,e){var t=r[r.length-1];t&&t[0]===e[0]&&t[1]===e[1]||r.push(e)}function lK(r,e,t){for(var a=r.length,n=[],i=0;io?(u.x=f.x=s+i/2,u.y=l,f.y=l+o):(u.y=f.y=l+o/2,u.x=s,f.x=s+i),lK(e,u,f)}function sh(r,e,t,a){if(t===1)a.push(e);else{var n=Math.floor(t/2),i=r(e);sh(r,i[0],n,a),sh(r,i[1],t-n,a)}return a}function uK(r,e){for(var t=[],a=0;a0)for(var w=a/t,x=-a/2;x<=a/2;x+=w){for(var b=Math.sin(x),C=Math.cos(x),T=0,_=0;_0;u/=2){var f=0,h=0;(r&u)>0&&(f=1),(e&u)>0&&(h=1),s+=u*u*(3*f^h),h===0&&(f===1&&(r=u-1-r,e=u-1-e),l=r,r=e,e=l)}return s}function fh(r){var e=1/0,t=1/0,a=-1/0,n=-1/0,i=G(r,function(s){var l=s.getBoundingRect(),u=s.getComputedTransform(),f=l.x+l.width/2+(u?u[4]:0),h=l.y+l.height/2+(u?u[5]:0);return e=Math.min(f,e),t=Math.min(h,t),a=Math.max(f,a),n=Math.max(h,n),[f,h]}),o=G(i,function(s,l){return{cp:s,z:mK(s[0],s[1],e,t,a,n),path:r[l]}});return o.sort(function(s,l){return s.z-l.z}).map(function(s){return s.path})}function XL(r){return vK(r.path,r.count)}function fg(){return{fromIndividuals:[],toIndividuals:[],count:0}}function _K(r,e,t){var a=[];function n(w){for(var x=0;x=0;n--)if(!t[n].many.length){var l=t[s].many;if(l.length<=1)if(s)s=0;else return t;var i=l.length,u=Math.ceil(i/2);t[n].many=l.slice(u,i),t[s].many=l.slice(0,u),s++}return t}var xK={clone:function(r){for(var e=[],t=1-Math.pow(1-r.path.style.opacity,1/r.count),a=0;a0))return;var s=a.getModel("universalTransition").get("delay"),l=Object.assign({setToFinal:!0},o),u,f;Mb(r)&&(u=r,f=e),Mb(e)&&(u=e,f=r);function h(y,m,_,S,w){var x=y.many,b=y.one;if(x.length===1&&!w){var C=m?x[0]:b,T=m?b:x[0];if(lh(C))h({many:[C],one:T},!0,_,S,!0);else{var D=s?tt({delay:s(_,S)},l):l;Cm(C,T,D),i(C,T,C,T,D)}}else for(var M=tt({dividePath:xK[t],individualDelay:s&&function(B,O,z,H){return s(B+_,S)}},l),L=m?_K(x,b,M):SK(b,x,M),I=L.fromIndividuals,P=L.toIndividuals,R=I.length,E=0;Ee.length,c=u?Lb(f,u):Lb(v?e:r,[v?r:e]),d=0,p=0;pqL))for(var n=a.getIndices(),i=bK(a),o=0;o0&&S.group.traverse(function(x){x instanceof mt&&!x.animators.length&&x.animateFrom({style:{opacity:0}},w)})})}function Pb(r){var e=r.getModel("universalTransition").get("seriesKey");return e||r.id}function Rb(r){return F(r)?r.sort().join(","):r}function Fa(r){if(r.hostModel)return r.hostModel.getModel("universalTransition").get("divideShape")}function AK(r,e){var t=q(),a=q(),n=q();return A(r.oldSeries,function(i,o){var s=r.oldDataGroupIds[o],l=r.oldData[o],u=Pb(i),f=Rb(u);a.set(f,{dataGroupId:s,data:l}),F(u)&&A(u,function(h){n.set(h,{key:f,dataGroupId:s,data:l})})}),A(e.updatedSeries,function(i){if(i.isUniversalTransitionEnabled()&&i.isAnimationEnabled()){var o=i.get("dataGroupId"),s=i.getData(),l=Pb(i),u=Rb(l),f=a.get(u);if(f)t.set(u,{oldSeries:[{dataGroupId:f.dataGroupId,divide:Fa(f.data),data:f.data}],newSeries:[{dataGroupId:o,divide:Fa(s),data:s}]});else if(F(l)){var h=[];A(l,function(d){var p=a.get(d);p.data&&h.push({dataGroupId:p.dataGroupId,divide:Fa(p.data),data:p.data})}),h.length&&t.set(u,{oldSeries:h,newSeries:[{dataGroupId:o,data:s,divide:Fa(s)}]})}else{var v=n.get(l);if(v){var c=t.get(v.key);c||(c={oldSeries:[{dataGroupId:v.dataGroupId,data:v.data,divide:Fa(v.data)}],newSeries:[]},t.set(v.key,c)),c.newSeries.push({dataGroupId:o,data:s,divide:Fa(s)})}}}}),t}function Eb(r,e){for(var t=0;t=0&&n.push({dataGroupId:e.oldDataGroupIds[s],data:e.oldData[s],divide:Fa(e.oldData[s]),dim:o.dimension})}),A(kt(r.to),function(o){var s=Eb(t.updatedSeries,o);if(s>=0){var l=t.updatedSeries[s].getData();i.push({dataGroupId:e.oldDataGroupIds[s],data:l,divide:Fa(l),dim:o.dimension})}}),n.length>0&&i.length>0&&KL(n,i,a)}function MK(r){r.registerUpdateLifecycle("series:beforeupdate",function(e,t,a){A(kt(a.seriesTransition),function(n){A(kt(n.to),function(i){for(var o=a.updatedSeries,s=0;sr>=80?"#e45e5e":r>=70?"#ff9800":r>=60?"#297ff3":"#53c31b",EK=r=>{const e=DB(r.el,void 0,{renderer:"svg"}),t=r.unit||"%",a={color:[r.numberColor||"#fff"],series:[{radius:r.radius||"70%",type:"gauge",startAngle:90,endAngle:-270,pointer:{show:!1},progress:{show:!0,overlap:!1,roundCap:!0,clip:!1,itemStyle:{borderWidth:0,color:r.progressColor||kb(r.value)}},axisLine:{lineStyle:{width:10,color:[[0,r.progressBackgroundColor||"#a89d9b"],[1,r.progressBackgroundColor||"#a89d9b"]]}},splitLine:{show:!1,distance:0,length:10},axisTick:{show:!1},axisLabel:{show:!1,distance:50},data:[{value:r.value,name:r.name,title:{offsetCenter:["0%","20%"],color:r.labelColor||"#fff",fontSize:r.labelFontSize||12},detail:{valueAnimation:!0,offsetCenter:["0%","-10%"]}}],title:{fontSize:10},detail:{fontSize:r.numberFontSize||20,color:"inherit",borderWidth:0,formatter:o=>`${o}${t}`}}]};a&&e.setOption(a);const n=o=>{e.setOption({series:[{progress:{show:!0,overlap:!1,roundCap:!0,clip:!1,itemStyle:{borderWidth:0,color:r.progressColor||kb(o)}},data:[{value:o,name:r.name,title:{offsetCenter:["0%","20%"],color:r.labelColor||"#fff",fontSize:r.labelFontSize||12},detail:{valueAnimation:!0,offsetCenter:["0%","-10%"]}}],pointer:{show:!1}}],grid:{left:"0",right:"0",bottom:"0%",top:"0%",containLabel:!0}})},i=e.dispose;return{setValue:n,dispose:i}};ct([AL,oL,tD,im,bL,kL]);export{PK as F,EK as G,RK as a,oL as b,tD as c,im as d,bL as e,kL as f,DB as g,AL as i,ct as u}; ================================================ FILE: luci-app-istorex/htdocs/luci-static/istorex/index.js ================================================ var F1=Object.defineProperty,D1=Object.defineProperties;var O1=Object.getOwnPropertyDescriptors;var Fl=Object.getOwnPropertySymbols;var P1=Object.prototype.hasOwnProperty,N1=Object.prototype.propertyIsEnumerable;var Dl=(e,t,n)=>t in e?F1(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,gt=(e,t)=>{for(var n in t||(t={}))P1.call(t,n)&&Dl(e,n,t[n]);if(Fl)for(var n of Fl(t))N1.call(t,n)&&Dl(e,n,t[n]);return e},fr=(e,t)=>D1(e,O1(t));var Ol=(e,t,n)=>{if(!t.has(e))throw TypeError("Cannot "+n)};var po=(e,t,n)=>(Ol(e,t,"read from private field"),n?n.call(e):t.get(e)),Pl=(e,t,n)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,n)},Nl=(e,t,n,s)=>(Ol(e,t,"write to private field"),s?s.call(e,n):t.set(e,n),n);var te=(e,t,n)=>new Promise((s,r)=>{var a=l=>{try{i(n.next(l))}catch(u){r(u)}},o=l=>{try{i(n.throw(l))}catch(u){r(u)}},i=l=>l.done?s(l.value):Promise.resolve(l.value).then(a,o);i((n=n.apply(e,t)).next())});const I1=function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))s(r);new MutationObserver(r=>{for(const a of r)if(a.type==="childList")for(const o of a.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&s(o)}).observe(document,{childList:!0,subtree:!0});function n(r){const a={};return r.integrity&&(a.integrity=r.integrity),r.referrerpolicy&&(a.referrerPolicy=r.referrerpolicy),r.crossorigin==="use-credentials"?a.credentials="include":r.crossorigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function s(r){if(r.ep)return;r.ep=!0;const a=n(r);fetch(r.href,a)}};I1();function gi(e,t){const n=Object.create(null),s=e.split(",");for(let r=0;r!!n[r.toLowerCase()]:r=>!!n[r]}const Ve={},Bs=[],rn=()=>{},A1=()=>!1,L1=/^on[^a-z]/,La=e=>L1.test(e),vi=e=>e.startsWith("onUpdate:"),ot=Object.assign,yi=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},M1=Object.prototype.hasOwnProperty,Ne=(e,t)=>M1.call(e,t),ne=Array.isArray,Us=e=>zr(e)==="[object Map]",er=e=>zr(e)==="[object Set]",Il=e=>zr(e)==="[object Date]",ye=e=>typeof e=="function",et=e=>typeof e=="string",Ir=e=>typeof e=="symbol",Ye=e=>e!==null&&typeof e=="object",bi=e=>Ye(e)&&ye(e.then)&&ye(e.catch),Tc=Object.prototype.toString,zr=e=>Tc.call(e),x1=e=>zr(e).slice(8,-1),Fc=e=>zr(e)==="[object Object]",Ei=e=>et(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,ha=gi(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Ma=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},$1=/-(\w)/g,gn=Ma(e=>e.replace($1,(t,n)=>n?n.toUpperCase():"")),R1=/\B([A-Z])/g,tr=Ma(e=>e.replace(R1,"-$1").toLowerCase()),xa=Ma(e=>e.charAt(0).toUpperCase()+e.slice(1)),mo=Ma(e=>e?`on${xa(e)}`:""),Ar=(e,t)=>!Object.is(e,t),_a=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},Ea=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Dc=e=>{const t=et(e)?Number(e):NaN;return isNaN(t)?e:t};let Al;const Io=()=>Al||(Al=typeof globalThis!="undefined"?globalThis:typeof self!="undefined"?self:typeof window!="undefined"?window:typeof global!="undefined"?global:{});function Ts(e){if(ne(e)){const t={};for(let n=0;n{if(n){const s=n.split(U1);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function _t(e){let t="";if(et(e))t=e;else if(ne(e))for(let n=0;nCs(n,t))}const X=e=>et(e)?e:e==null?"":ne(e)||Ye(e)&&(e.toString===Tc||!ye(e.toString))?JSON.stringify(e,Pc,2):String(e),Pc=(e,t)=>t&&t.__v_isRef?Pc(e,t.value):Us(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r])=>(n[`${s} =>`]=r,n),{})}:er(t)?{[`Set(${t.size})`]:[...t.values()]}:Ye(t)&&!ne(t)&&!Fc(t)?String(t):t;let Bt;class Nc{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=Bt,!t&&Bt&&(this.index=(Bt.scopes||(Bt.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=Bt;try{return Bt=this,t()}finally{Bt=n}}}on(){Bt=this}off(){Bt=this.parent}stop(t){if(this._active){let n,s;for(n=0,s=this.effects.length;n{const t=new Set(e);return t.w=0,t.n=0,t},Ac=e=>(e.w&ns)>0,Lc=e=>(e.n&ns)>0,K1=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let s=0;s{(c==="length"||c>=l)&&i.push(u)})}else switch(n!==void 0&&i.push(o.get(n)),t){case"add":ne(e)?Ei(n)&&i.push(o.get("length")):(i.push(o.get(ws)),Us(e)&&i.push(o.get(Lo)));break;case"delete":ne(e)||(i.push(o.get(ws)),Us(e)&&i.push(o.get(Lo)));break;case"set":Us(e)&&i.push(o.get(ws));break}if(i.length===1)i[0]&&Mo(i[0]);else{const l=[];for(const u of i)u&&l.push(...u);Mo(Si(l))}}function Mo(e,t){const n=ne(e)?e:[...e];for(const s of n)s.computed&&Ml(s);for(const s of n)s.computed||Ml(s)}function Ml(e,t){(e!==tn||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}function J1(e,t){var n;return(n=ka.get(e))==null?void 0:n.get(t)}const X1=gi("__proto__,__v_isRef,__isVue"),$c=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Ir)),Z1=Ti(),Q1=Ti(!1,!0),e0=Ti(!0),xl=t0();function t0(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const s=De(this);for(let a=0,o=this.length;a{e[t]=function(...n){nr();const s=De(this)[t].apply(this,n);return sr(),s}}),e}function n0(e){const t=De(this);return Mt(t,"has",e),t.hasOwnProperty(e)}function Ti(e=!1,t=!1){return function(s,r,a){if(r==="__v_isReactive")return!e;if(r==="__v_isReadonly")return e;if(r==="__v_isShallow")return t;if(r==="__v_raw"&&a===(e?t?v0:Hc:t?Yc:Uc).get(s))return s;const o=ne(s);if(!e){if(o&&Ne(xl,r))return Reflect.get(xl,r,a);if(r==="hasOwnProperty")return n0}const i=Reflect.get(s,r,a);return(Ir(r)?$c.has(r):X1(r))||(e||Mt(s,"get",r),t)?i:je(i)?o&&Ei(r)?i:i.value:Ye(i)?e?Vc(i):wt(i):i}}const s0=Rc(),r0=Rc(!0);function Rc(e=!1){return function(n,s,r,a){let o=n[s];if(zs(o)&&je(o)&&!je(r))return!1;if(!e&&(!wa(r)&&!zs(r)&&(o=De(o),r=De(r)),!ne(n)&&je(o)&&!je(r)))return o.value=r,!0;const i=ne(n)&&Ei(s)?Number(s)e,$a=e=>Reflect.getPrototypeOf(e);function na(e,t,n=!1,s=!1){e=e.__v_raw;const r=De(e),a=De(t);n||(t!==a&&Mt(r,"get",t),Mt(r,"get",a));const{has:o}=$a(r),i=s?Fi:n?Pi:Lr;if(o.call(r,t))return i(e.get(t));if(o.call(r,a))return i(e.get(a));e!==r&&e.get(t)}function sa(e,t=!1){const n=this.__v_raw,s=De(n),r=De(e);return t||(e!==r&&Mt(s,"has",e),Mt(s,"has",r)),e===r?n.has(e):n.has(e)||n.has(r)}function ra(e,t=!1){return e=e.__v_raw,!t&&Mt(De(e),"iterate",ws),Reflect.get(e,"size",e)}function $l(e){e=De(e);const t=De(this);return $a(t).has.call(t,e)||(t.add(e),Nn(t,"add",e,e)),this}function Rl(e,t){t=De(t);const n=De(this),{has:s,get:r}=$a(n);let a=s.call(n,e);a||(e=De(e),a=s.call(n,e));const o=r.call(n,e);return n.set(e,t),a?Ar(t,o)&&Nn(n,"set",e,t):Nn(n,"add",e,t),this}function Bl(e){const t=De(this),{has:n,get:s}=$a(t);let r=n.call(t,e);r||(e=De(e),r=n.call(t,e)),s&&s.call(t,e);const a=t.delete(e);return r&&Nn(t,"delete",e,void 0),a}function Ul(){const e=De(this),t=e.size!==0,n=e.clear();return t&&Nn(e,"clear",void 0,void 0),n}function aa(e,t){return function(s,r){const a=this,o=a.__v_raw,i=De(o),l=t?Fi:e?Pi:Lr;return!e&&Mt(i,"iterate",ws),o.forEach((u,c)=>s.call(r,l(u),l(c),a))}}function oa(e,t,n){return function(...s){const r=this.__v_raw,a=De(r),o=Us(a),i=e==="entries"||e===Symbol.iterator&&o,l=e==="keys"&&o,u=r[e](...s),c=n?Fi:t?Pi:Lr;return!t&&Mt(a,"iterate",l?Lo:ws),{next(){const{value:_,done:p}=u.next();return p?{value:_,done:p}:{value:i?[c(_[0]),c(_[1])]:c(_),done:p}},[Symbol.iterator](){return this}}}}function $n(e){return function(...t){return e==="delete"?!1:this}}function c0(){const e={get(a){return na(this,a)},get size(){return ra(this)},has:sa,add:$l,set:Rl,delete:Bl,clear:Ul,forEach:aa(!1,!1)},t={get(a){return na(this,a,!1,!0)},get size(){return ra(this)},has:sa,add:$l,set:Rl,delete:Bl,clear:Ul,forEach:aa(!1,!0)},n={get(a){return na(this,a,!0)},get size(){return ra(this,!0)},has(a){return sa.call(this,a,!0)},add:$n("add"),set:$n("set"),delete:$n("delete"),clear:$n("clear"),forEach:aa(!0,!1)},s={get(a){return na(this,a,!0,!0)},get size(){return ra(this,!0)},has(a){return sa.call(this,a,!0)},add:$n("add"),set:$n("set"),delete:$n("delete"),clear:$n("clear"),forEach:aa(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(a=>{e[a]=oa(a,!1,!1),n[a]=oa(a,!0,!1),t[a]=oa(a,!1,!0),s[a]=oa(a,!0,!0)}),[e,n,t,s]}const[d0,f0,h0,_0]=c0();function Di(e,t){const n=t?e?_0:h0:e?f0:d0;return(s,r,a)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(Ne(n,r)&&r in s?n:s,r,a)}const p0={get:Di(!1,!1)},m0={get:Di(!1,!0)},g0={get:Di(!0,!1)},Uc=new WeakMap,Yc=new WeakMap,Hc=new WeakMap,v0=new WeakMap;function y0(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function b0(e){return e.__v_skip||!Object.isExtensible(e)?0:y0(x1(e))}function wt(e){return zs(e)?e:Oi(e,!1,Bc,p0,Uc)}function Wc(e){return Oi(e,!1,u0,m0,Yc)}function Vc(e){return Oi(e,!0,l0,g0,Hc)}function Oi(e,t,n,s,r){if(!Ye(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const a=r.get(e);if(a)return a;const o=b0(e);if(o===0)return e;const i=new Proxy(e,o===2?s:n);return r.set(e,i),i}function Jn(e){return zs(e)?Jn(e.__v_raw):!!(e&&e.__v_isReactive)}function zs(e){return!!(e&&e.__v_isReadonly)}function wa(e){return!!(e&&e.__v_isShallow)}function jc(e){return Jn(e)||zs(e)}function De(e){const t=e&&e.__v_raw;return t?De(t):e}function Ra(e){return ba(e,"__v_skip",!0),e}const Lr=e=>Ye(e)?wt(e):e,Pi=e=>Ye(e)?Vc(e):e;function Gc(e){qn&&tn&&(e=De(e),xc(e.dep||(e.dep=Si())))}function zc(e,t){e=De(e);const n=e.dep;n&&Mo(n)}function je(e){return!!(e&&e.__v_isRef===!0)}function le(e){return qc(e,!1)}function Kc(e){return qc(e,!0)}function qc(e,t){return je(e)?e:new E0(e,t)}class E0{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:De(t),this._value=n?t:Lr(t)}get value(){return Gc(this),this._value}set value(t){const n=this.__v_isShallow||wa(t)||zs(t);t=n?t:De(t),Ar(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:Lr(t),zc(this))}}function J(e){return je(e)?e.value:e}const k0={get:(e,t,n)=>J(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return je(r)&&!je(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function Jc(e){return Jn(e)?e:new Proxy(e,k0)}function w0(e){const t=ne(e)?new Array(e.length):{};for(const n in e)t[n]=C0(e,n);return t}class S0{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,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 J1(De(this._object),this._key)}}function C0(e,t,n){const s=e[t];return je(s)?s:new S0(e,t,n)}class T0{constructor(t,n,s,r){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this._dirty=!0,this.effect=new Ci(t,()=>{this._dirty||(this._dirty=!0,zc(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=s}get value(){const t=De(this);return Gc(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function F0(e,t,n=!1){let s,r;const a=ye(e);return a?(s=e,r=rn):(s=e.get,r=e.set),new T0(s,r,a||!r,n)}function Xn(e,t,n,s){let r;try{r=s?e(...s):e()}catch(a){Kr(a,t,n)}return r}function qt(e,t,n,s){if(ye(e)){const a=Xn(e,t,n,s);return a&&bi(a)&&a.catch(o=>{Kr(o,t,n)}),a}const r=[];for(let a=0;a>>1;xr(bt[s])_n&&bt.splice(t,1)}function Qc(e){ne(e)?Ys.push(...e):(!Sn||!Sn.includes(e,e.allowRecurse?vs+1:vs))&&Ys.push(e),Zc()}function Yl(e,t=Mr?_n+1:0){for(;txr(n)-xr(s)),vs=0;vse.id==null?1/0:e.id,N0=(e,t)=>{const n=xr(e)-xr(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function td(e){xo=!1,Mr=!0,bt.sort(N0);const t=rn;try{for(_n=0;_net(y)?y.trim():y)),_&&(r=n.map(Ea))}let i,l=s[i=mo(t)]||s[i=mo(gn(t))];!l&&a&&(l=s[i=mo(tr(t))]),l&&qt(l,e,6,r);const u=s[i+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[i])return;e.emitted[i]=!0,qt(u,e,6,r)}}function nd(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const a=e.emits;let o={},i=!1;if(!ye(e)){const l=u=>{const c=nd(u,t,!0);c&&(i=!0,ot(o,c))};!n&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!a&&!i?(Ye(e)&&s.set(e,null),null):(ne(a)?a.forEach(l=>o[l]=null):ot(o,a),Ye(e)&&s.set(e,o),o)}function Ba(e,t){return!e||!La(t)?!1:(t=t.slice(2).replace(/Once$/,""),Ne(e,t[0].toLowerCase()+t.slice(1))||Ne(e,tr(t))||Ne(e,t))}let pt=null,Ua=null;function Sa(e){const t=pt;return pt=e,Ua=e&&e.type.__scopeId||null,t}function nt(e){Ua=e}function st(){Ua=null}function Ue(e,t=pt,n){if(!t||e._n)return e;const s=(...r)=>{s._d&&eu(-1);const a=Sa(t);let o;try{o=e(...r)}finally{Sa(a),s._d&&eu(1)}return o};return s._n=!0,s._c=!0,s._d=!0,s}function go(e){const{type:t,vnode:n,proxy:s,withProxy:r,props:a,propsOptions:[o],slots:i,attrs:l,emit:u,render:c,renderCache:_,data:p,setupState:y,ctx:E,inheritAttrs:k}=e;let S,m;const w=Sa(e);try{if(n.shapeFlag&4){const b=r||s;S=Qt(c.call(b,b,_,a,y,p,E)),m=l}else{const b=t;S=Qt(b.length>1?b(a,{attrs:l,slots:i,emit:u}):b(a,null)),m=t.props?l:L0(l)}}catch(b){Sr.length=0,Kr(b,e,1),S=Ie(Lt)}let P=S;if(m&&k!==!1){const b=Object.keys(m),{shapeFlag:D}=P;b.length&&D&7&&(o&&b.some(vi)&&(m=M0(m,o)),P=ss(P,m))}return n.dirs&&(P=ss(P),P.dirs=P.dirs?P.dirs.concat(n.dirs):n.dirs),n.transition&&(P.transition=n.transition),S=P,Sa(w),S}function A0(e){let t;for(let n=0;n{let t;for(const n in e)(n==="class"||n==="style"||La(n))&&((t||(t={}))[n]=e[n]);return t},M0=(e,t)=>{const n={};for(const s in e)(!vi(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function x0(e,t,n){const{props:s,children:r,component:a}=e,{props:o,children:i,patchFlag:l}=t,u=a.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&l>=0){if(l&1024)return!0;if(l&16)return s?Hl(s,o,u):!!o;if(l&8){const c=t.dynamicProps;for(let _=0;_e.__isSuspense,R0={name:"Suspense",__isSuspense:!0,process(e,t,n,s,r,a,o,i,l,u){e==null?B0(t,n,s,r,a,o,i,l,u):U0(e,t,n,s,r,o,i,l,u)},hydrate:Y0,create:Mi,normalize:H0},sd=R0;function $r(e,t){const n=e.props&&e.props[t];ye(n)&&n()}function B0(e,t,n,s,r,a,o,i,l){const{p:u,o:{createElement:c}}=l,_=c("div"),p=e.suspense=Mi(e,r,s,t,_,n,a,o,i,l);u(null,p.pendingBranch=e.ssContent,_,null,s,p,a,o),p.deps>0?($r(e,"onPending"),$r(e,"onFallback"),u(null,e.ssFallback,t,n,s,null,a,o),Hs(p,e.ssFallback)):p.resolve(!1,!0)}function U0(e,t,n,s,r,a,o,i,{p:l,um:u,o:{createElement:c}}){const _=t.suspense=e.suspense;_.vnode=t,t.el=e.el;const p=t.ssContent,y=t.ssFallback,{activeBranch:E,pendingBranch:k,isInFallback:S,isHydrating:m}=_;if(k)_.pendingBranch=p,pn(p,k)?(l(k,p,_.hiddenContainer,null,r,_,a,o,i),_.deps<=0?_.resolve():S&&(l(E,y,n,s,r,null,a,o,i),Hs(_,y))):(_.pendingId++,m?(_.isHydrating=!1,_.activeBranch=k):u(k,r,_),_.deps=0,_.effects.length=0,_.hiddenContainer=c("div"),S?(l(null,p,_.hiddenContainer,null,r,_,a,o,i),_.deps<=0?_.resolve():(l(E,y,n,s,r,null,a,o,i),Hs(_,y))):E&&pn(p,E)?(l(E,p,n,s,r,_,a,o,i),_.resolve(!0)):(l(null,p,_.hiddenContainer,null,r,_,a,o,i),_.deps<=0&&_.resolve()));else if(E&&pn(p,E))l(E,p,n,s,r,_,a,o,i),Hs(_,p);else if($r(t,"onPending"),_.pendingBranch=p,_.pendingId++,l(null,p,_.hiddenContainer,null,r,_,a,o,i),_.deps<=0)_.resolve();else{const{timeout:w,pendingId:P}=_;w>0?setTimeout(()=>{_.pendingId===P&&_.fallback(y)},w):w===0&&_.fallback(y)}}function Mi(e,t,n,s,r,a,o,i,l,u,c=!1){const{p:_,m:p,um:y,n:E,o:{parentNode:k,remove:S}}=u;let m;const w=V0(e);w&&t!=null&&t.pendingBranch&&(m=t.pendingId,t.deps++);const P=e.props?Dc(e.props.timeout):void 0,b={vnode:e,parent:t,parentComponent:n,isSVG:o,container:s,hiddenContainer:r,anchor:a,deps:0,pendingId:0,timeout:typeof P=="number"?P:-1,activeBranch:null,pendingBranch:null,isInFallback:!0,isHydrating:c,isUnmounted:!1,effects:[],resolve(D=!1,I=!1){const{vnode:V,activeBranch:M,pendingBranch:U,pendingId:ee,effects:_e,parentComponent:H,container:ie}=b;if(b.isHydrating)b.isHydrating=!1;else if(!D){const de=M&&U.transition&&U.transition.mode==="out-in";de&&(M.transition.afterLeave=()=>{ee===b.pendingId&&p(U,ie,we,0)});let{anchor:we}=b;M&&(we=E(M),y(M,H,b,!0)),de||p(U,ie,we,0)}Hs(b,U),b.pendingBranch=null,b.isInFallback=!1;let Me=b.parent,qe=!1;for(;Me;){if(Me.pendingBranch){Me.effects.push(..._e),qe=!0;break}Me=Me.parent}qe||Qc(_e),b.effects=[],w&&t&&t.pendingBranch&&m===t.pendingId&&(t.deps--,t.deps===0&&!I&&t.resolve()),$r(V,"onResolve")},fallback(D){if(!b.pendingBranch)return;const{vnode:I,activeBranch:V,parentComponent:M,container:U,isSVG:ee}=b;$r(I,"onFallback");const _e=E(V),H=()=>{!b.isInFallback||(_(null,D,U,_e,M,null,ee,i,l),Hs(b,D))},ie=D.transition&&D.transition.mode==="out-in";ie&&(V.transition.afterLeave=H),b.isInFallback=!0,y(V,M,null,!0),ie||H()},move(D,I,V){b.activeBranch&&p(b.activeBranch,D,I,V),b.container=D},next(){return b.activeBranch&&E(b.activeBranch)},registerDep(D,I){const V=!!b.pendingBranch;V&&b.deps++;const M=D.vnode.el;D.asyncDep.catch(U=>{Kr(U,D,0)}).then(U=>{if(D.isUnmounted||b.isUnmounted||b.pendingId!==D.suspenseId)return;D.asyncResolved=!0;const{vnode:ee}=D;Vo(D,U,!1),M&&(ee.el=M);const _e=!M&&D.subTree.el;I(D,ee,k(M||D.subTree.el),M?null:E(D.subTree),b,o,l),_e&&S(_e),Li(D,ee.el),V&&--b.deps===0&&b.resolve()})},unmount(D,I){b.isUnmounted=!0,b.activeBranch&&y(b.activeBranch,n,D,I),b.pendingBranch&&y(b.pendingBranch,n,D,I)}};return b}function Y0(e,t,n,s,r,a,o,i,l){const u=t.suspense=Mi(t,s,n,e.parentNode,document.createElement("div"),null,r,a,o,i,!0),c=l(e,u.pendingBranch=t.ssContent,n,u,a,o);return u.deps===0&&u.resolve(!1,!0),c}function H0(e){const{shapeFlag:t,children:n}=e,s=t&32;e.ssContent=Wl(s?n.default:n),e.ssFallback=s?Wl(n.fallback):Ie(Lt)}function Wl(e){let t;if(ye(e)){const n=Ks&&e._c;n&&(e._d=!1,C()),e=e(),n&&(e._d=!0,t=Kt,wd())}return ne(e)&&(e=A0(e)),e=Qt(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter(n=>n!==e)),e}function W0(e,t){t&&t.pendingBranch?ne(e)?t.effects.push(...e):t.effects.push(e):Qc(e)}function Hs(e,t){e.activeBranch=t;const{vnode:n,parentComponent:s}=e,r=n.el=t.el;s&&s.subTree===n&&(s.vnode.el=r,Li(s,r))}function V0(e){var t;return((t=e.props)==null?void 0:t.suspensible)!=null&&e.props.suspensible!==!1}const ia={};function Zn(e,t,n){return rd(e,t,n)}function rd(e,t,{immediate:n,deep:s,flush:r,onTrack:a,onTrigger:o}=Ve){var i;const l=Ic()===((i=lt)==null?void 0:i.scope)?lt:null;let u,c=!1,_=!1;if(je(e)?(u=()=>e.value,c=wa(e)):Jn(e)?(u=()=>e,s=!0):ne(e)?(_=!0,c=e.some(b=>Jn(b)||wa(b)),u=()=>e.map(b=>{if(je(b))return b.value;if(Jn(b))return bs(b);if(ye(b))return Xn(b,l,2)})):ye(e)?t?u=()=>Xn(e,l,2):u=()=>{if(!(l&&l.isUnmounted))return p&&p(),qt(e,l,3,[y])}:u=rn,t&&s){const b=u;u=()=>bs(b())}let p,y=b=>{p=w.onStop=()=>{Xn(b,l,4)}},E;if(Ur)if(y=rn,t?n&&qt(t,l,3,[u(),_?[]:void 0,y]):u(),r==="sync"){const b=x3();E=b.__watcherHandles||(b.__watcherHandles=[])}else return rn;let k=_?new Array(e.length).fill(ia):ia;const S=()=>{if(!!w.active)if(t){const b=w.run();(s||c||(_?b.some((D,I)=>Ar(D,k[I])):Ar(b,k)))&&(p&&p(),qt(t,l,3,[b,k===ia?void 0:_&&k[0]===ia?[]:k,y]),k=b)}else w.run()};S.allowRecurse=!!t;let m;r==="sync"?m=S:r==="post"?m=()=>Pt(S,l&&l.suspense):(S.pre=!0,l&&(S.id=l.uid),m=()=>Ai(S));const w=new Ci(u,m);t?n?S():k=w.run():r==="post"?Pt(w.run.bind(w),l&&l.suspense):w.run();const P=()=>{w.stop(),l&&l.scope&&yi(l.scope.effects,w)};return E&&E.push(P),P}function j0(e,t,n){const s=this.proxy,r=et(e)?e.includes(".")?ad(s,e):()=>s[e]:e.bind(s,s);let a;ye(t)?a=t:(a=t.handler,n=t);const o=lt;rs(this);const i=rd(r,a.bind(s),n);return o?rs(o):Qn(),i}function ad(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;r{bs(n,t)});else if(Fc(e))for(const n in e)bs(e[n],t);return e}function Xe(e,t){const n=pt;if(n===null)return e;const s=Va(n)||n.proxy,r=e.dirs||(e.dirs=[]);for(let a=0;a{e.isMounted=!0}),dd(()=>{e.isUnmounting=!0}),e}const Gt=[Function,Array],od={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Gt,onEnter:Gt,onAfterEnter:Gt,onEnterCancelled:Gt,onBeforeLeave:Gt,onLeave:Gt,onAfterLeave:Gt,onLeaveCancelled:Gt,onBeforeAppear:Gt,onAppear:Gt,onAfterAppear:Gt,onAppearCancelled:Gt},z0={name:"BaseTransition",props:od,setup(e,{slots:t}){const n=Ht(),s=G0();let r;return()=>{const a=t.default&&ld(t.default(),!0);if(!a||!a.length)return;let o=a[0];if(a.length>1){for(const k of a)if(k.type!==Lt){o=k;break}}const i=De(e),{mode:l}=i;if(s.isLeaving)return vo(o);const u=Vl(o);if(!u)return vo(o);const c=$o(u,i,s,n);Ro(u,c);const _=n.subTree,p=_&&Vl(_);let y=!1;const{getTransitionKey:E}=u.type;if(E){const k=E();r===void 0?r=k:k!==r&&(r=k,y=!0)}if(p&&p.type!==Lt&&(!pn(u,p)||y)){const k=$o(p,i,s,n);if(Ro(p,k),l==="out-in")return s.isLeaving=!0,k.afterLeave=()=>{s.isLeaving=!1,n.update.active!==!1&&n.update()},vo(o);l==="in-out"&&u.type!==Lt&&(k.delayLeave=(S,m,w)=>{const P=id(s,p);P[String(p.key)]=p,S._leaveCb=()=>{m(),S._leaveCb=void 0,delete c.delayedLeave},c.delayedLeave=w})}return o}}},K0=z0;function id(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function $o(e,t,n,s){const{appear:r,mode:a,persisted:o=!1,onBeforeEnter:i,onEnter:l,onAfterEnter:u,onEnterCancelled:c,onBeforeLeave:_,onLeave:p,onAfterLeave:y,onLeaveCancelled:E,onBeforeAppear:k,onAppear:S,onAfterAppear:m,onAppearCancelled:w}=t,P=String(e.key),b=id(n,e),D=(M,U)=>{M&&qt(M,s,9,U)},I=(M,U)=>{const ee=U[1];D(M,U),ne(M)?M.every(_e=>_e.length<=1)&&ee():M.length<=1&&ee()},V={mode:a,persisted:o,beforeEnter(M){let U=i;if(!n.isMounted)if(r)U=k||i;else return;M._leaveCb&&M._leaveCb(!0);const ee=b[P];ee&&pn(e,ee)&&ee.el._leaveCb&&ee.el._leaveCb(),D(U,[M])},enter(M){let U=l,ee=u,_e=c;if(!n.isMounted)if(r)U=S||l,ee=m||u,_e=w||c;else return;let H=!1;const ie=M._enterCb=Me=>{H||(H=!0,Me?D(_e,[M]):D(ee,[M]),V.delayedLeave&&V.delayedLeave(),M._enterCb=void 0)};U?I(U,[M,ie]):ie()},leave(M,U){const ee=String(e.key);if(M._enterCb&&M._enterCb(!0),n.isUnmounting)return U();D(_,[M]);let _e=!1;const H=M._leaveCb=ie=>{_e||(_e=!0,U(),ie?D(E,[M]):D(y,[M]),M._leaveCb=void 0,b[ee]===e&&delete b[ee])};b[ee]=e,p?I(p,[M,H]):H()},clone(M){return $o(M,t,n,s)}};return V}function vo(e){if(Ya(e))return e=ss(e),e.children=null,e}function Vl(e){return Ya(e)?e.children?e.children[0]:void 0:e}function Ro(e,t){e.shapeFlag&6&&e.component?Ro(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 ld(e,t=!1,n){let s=[],r=0;for(let a=0;a1)for(let a=0;aot({name:e.name},t,{setup:e}))():e}const kr=e=>!!e.type.__asyncLoader,Ya=e=>e.type.__isKeepAlive;function q0(e,t){ud(e,"a",t)}function J0(e,t){ud(e,"da",t)}function ud(e,t,n=lt){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(Ha(t,s,n),n){let r=n.parent;for(;r&&r.parent;)Ya(r.parent.vnode)&&X0(s,t,n,r),r=r.parent}}function X0(e,t,n,s){const r=Ha(t,e,s,!0);rr(()=>{yi(s[t],r)},n)}function Ha(e,t,n=lt,s=!1){if(n){const r=n[e]||(n[e]=[]),a=t.__weh||(t.__weh=(...o)=>{if(n.isUnmounted)return;nr(),rs(n);const i=qt(t,n,e,o);return Qn(),sr(),i});return s?r.unshift(a):r.push(a),a}}const An=e=>(t,n=lt)=>(!Ur||e==="sp")&&Ha(e,(...s)=>t(...s),n),cd=An("bm"),is=An("m"),Z0=An("bu"),Q0=An("u"),dd=An("bum"),rr=An("um"),e3=An("sp"),t3=An("rtg"),n3=An("rtc");function s3(e,t=lt){Ha("ec",e,t)}const xi="components";function ht(e,t){return hd(xi,e,!0,t)||e}const fd=Symbol.for("v-ndc");function $i(e){return et(e)?hd(xi,e,!1)||e:e||fd}function hd(e,t,n=!0,s=!1){const r=pt||lt;if(r){const a=r.type;if(e===xi){const i=A3(a,!1);if(i&&(i===t||i===gn(t)||i===xa(gn(t))))return a}const o=jl(r[e]||a[e],t)||jl(r.appContext[e],t);return!o&&s?a:o}}function jl(e,t){return e&&(e[t]||e[gn(t)]||e[xa(gn(t))])}function ct(e,t,n,s){let r;const a=n&&n[s];if(ne(e)||et(e)){r=new Array(e.length);for(let o=0,i=e.length;ot(o,i,void 0,a&&a[i]));else{const o=Object.keys(e);r=new Array(o.length);for(let i=0,l=o.length;iBr(t)?!(t.type===Lt||t.type===me&&!_d(t.children)):!0)?e:null}const Bo=e=>e?Td(e)?Va(e)||e.proxy:Bo(e.parent):null,wr=ot(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=>Bo(e.parent),$root:e=>Bo(e.root),$emit:e=>e.emit,$options:e=>Ri(e),$forceUpdate:e=>e.f||(e.f=()=>Ai(e.update)),$nextTick:e=>e.n||(e.n=Ii.bind(e.proxy)),$watch:e=>j0.bind(e)}),yo=(e,t)=>e!==Ve&&!e.__isScriptSetup&&Ne(e,t),r3={get({_:e},t){const{ctx:n,setupState:s,data:r,props:a,accessCache:o,type:i,appContext:l}=e;let u;if(t[0]!=="$"){const y=o[t];if(y!==void 0)switch(y){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return a[t]}else{if(yo(s,t))return o[t]=1,s[t];if(r!==Ve&&Ne(r,t))return o[t]=2,r[t];if((u=e.propsOptions[0])&&Ne(u,t))return o[t]=3,a[t];if(n!==Ve&&Ne(n,t))return o[t]=4,n[t];Uo&&(o[t]=0)}}const c=wr[t];let _,p;if(c)return t==="$attrs"&&Mt(e,"get",t),c(e);if((_=i.__cssModules)&&(_=_[t]))return _;if(n!==Ve&&Ne(n,t))return o[t]=4,n[t];if(p=l.config.globalProperties,Ne(p,t))return p[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:a}=e;return yo(r,t)?(r[t]=n,!0):s!==Ve&&Ne(s,t)?(s[t]=n,!0):Ne(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(a[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:a}},o){let i;return!!n[o]||e!==Ve&&Ne(e,o)||yo(t,o)||(i=a[0])&&Ne(i,o)||Ne(s,o)||Ne(wr,o)||Ne(r.config.globalProperties,o)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:Ne(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Gl(e){return ne(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}function Dw(e){const t=Ht();let n=e();return Qn(),bi(n)&&(n=n.catch(s=>{throw rs(t),s})),[n,()=>rs(t)]}let Uo=!0;function a3(e){const t=Ri(e),n=e.proxy,s=e.ctx;Uo=!1,t.beforeCreate&&zl(t.beforeCreate,e,"bc");const{data:r,computed:a,methods:o,watch:i,provide:l,inject:u,created:c,beforeMount:_,mounted:p,beforeUpdate:y,updated:E,activated:k,deactivated:S,beforeDestroy:m,beforeUnmount:w,destroyed:P,unmounted:b,render:D,renderTracked:I,renderTriggered:V,errorCaptured:M,serverPrefetch:U,expose:ee,inheritAttrs:_e,components:H,directives:ie,filters:Me}=t;if(u&&o3(u,s,null),o)for(const we in o){const Ee=o[we];ye(Ee)&&(s[we]=Ee.bind(n))}if(r){const we=r.call(n,n);Ye(we)&&(e.data=wt(we))}if(Uo=!0,a)for(const we in a){const Ee=a[we],mt=ye(Ee)?Ee.bind(n,n):ye(Ee.get)?Ee.get.bind(n,n):rn,Dt=!ye(Ee)&&ye(Ee.set)?Ee.set.bind(n):rn,yt=be({get:mt,set:Dt});Object.defineProperty(s,we,{enumerable:!0,configurable:!0,get:()=>yt.value,set:rt=>yt.value=rt})}if(i)for(const we in i)pd(i[we],s,n,we);if(l){const we=ye(l)?l.call(n):l;Reflect.ownKeys(we).forEach(Ee=>{It(Ee,we[Ee])})}c&&zl(c,e,"c");function de(we,Ee){ne(Ee)?Ee.forEach(mt=>we(mt.bind(n))):Ee&&we(Ee.bind(n))}if(de(cd,_),de(is,p),de(Z0,y),de(Q0,E),de(q0,k),de(J0,S),de(s3,M),de(n3,I),de(t3,V),de(dd,w),de(rr,b),de(e3,U),ne(ee))if(ee.length){const we=e.exposed||(e.exposed={});ee.forEach(Ee=>{Object.defineProperty(we,Ee,{get:()=>n[Ee],set:mt=>n[Ee]=mt})})}else e.exposed||(e.exposed={});D&&e.render===rn&&(e.render=D),_e!=null&&(e.inheritAttrs=_e),H&&(e.components=H),ie&&(e.directives=ie)}function o3(e,t,n=rn){ne(e)&&(e=Yo(e));for(const s in e){const r=e[s];let a;Ye(r)?"default"in r?a=ve(r.from||s,r.default,!0):a=ve(r.from||s):a=ve(r),je(a)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>a.value,set:o=>a.value=o}):t[s]=a}}function zl(e,t,n){qt(ne(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function pd(e,t,n,s){const r=s.includes(".")?ad(n,s):()=>n[s];if(et(e)){const a=t[e];ye(a)&&Zn(r,a)}else if(ye(e))Zn(r,e.bind(n));else if(Ye(e))if(ne(e))e.forEach(a=>pd(a,t,n,s));else{const a=ye(e.handler)?e.handler.bind(n):t[e.handler];ye(a)&&Zn(r,a,e)}}function Ri(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:a,config:{optionMergeStrategies:o}}=e.appContext,i=a.get(t);let l;return i?l=i:!r.length&&!n&&!s?l=t:(l={},r.length&&r.forEach(u=>Ca(l,u,o,!0)),Ca(l,t,o)),Ye(t)&&a.set(t,l),l}function Ca(e,t,n,s=!1){const{mixins:r,extends:a}=t;a&&Ca(e,a,n,!0),r&&r.forEach(o=>Ca(e,o,n,!0));for(const o in t)if(!(s&&o==="expose")){const i=i3[o]||n&&n[o];e[o]=i?i(e[o],t[o]):t[o]}return e}const i3={data:Kl,props:ql,emits:ql,methods:Er,computed:Er,beforeCreate:Tt,created:Tt,beforeMount:Tt,mounted:Tt,beforeUpdate:Tt,updated:Tt,beforeDestroy:Tt,beforeUnmount:Tt,destroyed:Tt,unmounted:Tt,activated:Tt,deactivated:Tt,errorCaptured:Tt,serverPrefetch:Tt,components:Er,directives:Er,watch:u3,provide:Kl,inject:l3};function Kl(e,t){return t?e?function(){return ot(ye(e)?e.call(this,this):e,ye(t)?t.call(this,this):t)}:t:e}function l3(e,t){return Er(Yo(e),Yo(t))}function Yo(e){if(ne(e)){const t={};for(let n=0;n1)return n&&ye(t)?t.call(s&&s.proxy):t}}function f3(){return!!(lt||pt||Rr)}function h3(e,t,n,s=!1){const r={},a={};ba(a,Wa,1),e.propsDefaults=Object.create(null),gd(e,t,r,a);for(const o in e.propsOptions[0])o in r||(r[o]=void 0);n?e.props=s?r:Wc(r):e.type.props?e.props=r:e.props=a,e.attrs=a}function _3(e,t,n,s){const{props:r,attrs:a,vnode:{patchFlag:o}}=e,i=De(r),[l]=e.propsOptions;let u=!1;if((s||o>0)&&!(o&16)){if(o&8){const c=e.vnode.dynamicProps;for(let _=0;_{l=!0;const[p,y]=vd(_,t,!0);ot(o,p),y&&i.push(...y)};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}if(!a&&!l)return Ye(e)&&s.set(e,Bs),Bs;if(ne(a))for(let c=0;c-1,y[1]=k<0||E-1||Ne(y,"default"))&&i.push(_)}}}const u=[o,i];return Ye(e)&&s.set(e,u),u}function Jl(e){return e[0]!=="$"}function Xl(e){const t=e&&e.toString().match(/^\s*(function|class) (\w+)/);return t?t[2]:e===null?"null":""}function Zl(e,t){return Xl(e)===Xl(t)}function Ql(e,t){return ne(t)?t.findIndex(n=>Zl(n,e)):ye(t)&&Zl(t,e)?0:-1}const yd=e=>e[0]==="_"||e==="$stable",Bi=e=>ne(e)?e.map(Qt):[Qt(e)],p3=(e,t,n)=>{if(t._n)return t;const s=Ue((...r)=>Bi(t(...r)),n);return s._c=!1,s},bd=(e,t,n)=>{const s=e._ctx;for(const r in e){if(yd(r))continue;const a=e[r];if(ye(a))t[r]=p3(r,a,s);else if(a!=null){const o=Bi(a);t[r]=()=>o}}},Ed=(e,t)=>{const n=Bi(t);e.slots.default=()=>n},m3=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=De(t),ba(t,"_",n)):bd(t,e.slots={})}else e.slots={},t&&Ed(e,t);ba(e.slots,Wa,1)},g3=(e,t,n)=>{const{vnode:s,slots:r}=e;let a=!0,o=Ve;if(s.shapeFlag&32){const i=t._;i?n&&i===1?a=!1:(ot(r,t),!n&&i===1&&delete r._):(a=!t.$stable,bd(t,r)),o=t}else t&&(Ed(e,t),o={default:1});if(a)for(const i in r)!yd(i)&&!(i in o)&&delete r[i]};function Wo(e,t,n,s,r=!1){if(ne(e)){e.forEach((p,y)=>Wo(p,t&&(ne(t)?t[y]:t),n,s,r));return}if(kr(s)&&!r)return;const a=s.shapeFlag&4?Va(s.component)||s.component.proxy:s.el,o=r?null:a,{i,r:l}=e,u=t&&t.r,c=i.refs===Ve?i.refs={}:i.refs,_=i.setupState;if(u!=null&&u!==l&&(et(u)?(c[u]=null,Ne(_,u)&&(_[u]=null)):je(u)&&(u.value=null)),ye(l))Xn(l,i,12,[o,c]);else{const p=et(l),y=je(l);if(p||y){const E=()=>{if(e.f){const k=p?Ne(_,l)?_[l]:c[l]:l.value;r?ne(k)&&yi(k,a):ne(k)?k.includes(a)||k.push(a):p?(c[l]=[a],Ne(_,l)&&(_[l]=c[l])):(l.value=[a],e.k&&(c[e.k]=l.value))}else p?(c[l]=o,Ne(_,l)&&(_[l]=o)):y&&(l.value=o,e.k&&(c[e.k]=o))};o?(E.id=-1,Pt(E,n)):E()}}}const Pt=W0;function v3(e){return y3(e)}function y3(e,t){const n=Io();n.__VUE__=!0;const{insert:s,remove:r,patchProp:a,createElement:o,createText:i,createComment:l,setText:u,setElementText:c,parentNode:_,nextSibling:p,setScopeId:y=rn,insertStaticContent:E}=e,k=(v,f,h,g=null,T=null,O=null,x=!1,R=null,Y=!!f.dynamicChildren)=>{if(v===f)return;v&&!pn(v,f)&&(g=L(v),rt(v,T,O,!0),v=null),f.patchFlag===-2&&(Y=!1,f.dynamicChildren=null);const{type:$,ref:K,shapeFlag:F}=f;switch($){case qr:S(v,f,h,g);break;case Lt:m(v,f,h,g);break;case pa:v==null&&w(f,h,g,x);break;case me:H(v,f,h,g,T,O,x,R,Y);break;default:F&1?D(v,f,h,g,T,O,x,R,Y):F&6?ie(v,f,h,g,T,O,x,R,Y):(F&64||F&128)&&$.process(v,f,h,g,T,O,x,R,Y,W)}K!=null&&T&&Wo(K,v&&v.ref,O,f||v,!f)},S=(v,f,h,g)=>{if(v==null)s(f.el=i(f.children),h,g);else{const T=f.el=v.el;f.children!==v.children&&u(T,f.children)}},m=(v,f,h,g)=>{v==null?s(f.el=l(f.children||""),h,g):f.el=v.el},w=(v,f,h,g)=>{[v.el,v.anchor]=E(v.children,f,h,g,v.el,v.anchor)},P=({el:v,anchor:f},h,g)=>{let T;for(;v&&v!==f;)T=p(v),s(v,h,g),v=T;s(f,h,g)},b=({el:v,anchor:f})=>{let h;for(;v&&v!==f;)h=p(v),r(v),v=h;r(f)},D=(v,f,h,g,T,O,x,R,Y)=>{x=x||f.type==="svg",v==null?I(f,h,g,T,O,x,R,Y):U(v,f,T,O,x,R,Y)},I=(v,f,h,g,T,O,x,R)=>{let Y,$;const{type:K,props:F,shapeFlag:A,transition:se,dirs:ae}=v;if(Y=v.el=o(v.type,O,F&&F.is,F),A&8?c(Y,v.children):A&16&&M(v.children,Y,null,g,T,O&&K!=="foreignObject",x,R),ae&&hs(v,null,g,"created"),V(Y,v,v.scopeId,x,g),F){for(const Pe in F)Pe!=="value"&&!ha(Pe)&&a(Y,Pe,null,F[Pe],O,v.children,g,T,Ze);"value"in F&&a(Y,"value",null,F.value),($=F.onVnodeBeforeMount)&&fn($,g,v)}ae&&hs(v,null,g,"beforeMount");const xe=(!T||T&&!T.pendingBranch)&&se&&!se.persisted;xe&&se.beforeEnter(Y),s(Y,f,h),(($=F&&F.onVnodeMounted)||xe||ae)&&Pt(()=>{$&&fn($,g,v),xe&&se.enter(Y),ae&&hs(v,null,g,"mounted")},T)},V=(v,f,h,g,T)=>{if(h&&y(v,h),g)for(let O=0;O{for(let $=Y;${const R=f.el=v.el;let{patchFlag:Y,dynamicChildren:$,dirs:K}=f;Y|=v.patchFlag&16;const F=v.props||Ve,A=f.props||Ve;let se;h&&_s(h,!1),(se=A.onVnodeBeforeUpdate)&&fn(se,h,f,v),K&&hs(f,v,h,"beforeUpdate"),h&&_s(h,!0);const ae=T&&f.type!=="foreignObject";if($?ee(v.dynamicChildren,$,R,h,g,ae,O):x||Ee(v,f,R,null,h,g,ae,O,!1),Y>0){if(Y&16)_e(R,f,F,A,h,g,T);else if(Y&2&&F.class!==A.class&&a(R,"class",null,A.class,T),Y&4&&a(R,"style",F.style,A.style,T),Y&8){const xe=f.dynamicProps;for(let Pe=0;Pe{se&&fn(se,h,f,v),K&&hs(f,v,h,"updated")},g)},ee=(v,f,h,g,T,O,x)=>{for(let R=0;R{if(h!==g){if(h!==Ve)for(const R in h)!ha(R)&&!(R in g)&&a(v,R,h[R],null,x,f.children,T,O,Ze);for(const R in g){if(ha(R))continue;const Y=g[R],$=h[R];Y!==$&&R!=="value"&&a(v,R,$,Y,x,f.children,T,O,Ze)}"value"in g&&a(v,"value",h.value,g.value)}},H=(v,f,h,g,T,O,x,R,Y)=>{const $=f.el=v?v.el:i(""),K=f.anchor=v?v.anchor:i("");let{patchFlag:F,dynamicChildren:A,slotScopeIds:se}=f;se&&(R=R?R.concat(se):se),v==null?(s($,h,g),s(K,h,g),M(f.children,h,K,T,O,x,R,Y)):F>0&&F&64&&A&&v.dynamicChildren?(ee(v.dynamicChildren,A,h,T,O,x,R),(f.key!=null||T&&f===T.subTree)&&kd(v,f,!0)):Ee(v,f,h,K,T,O,x,R,Y)},ie=(v,f,h,g,T,O,x,R,Y)=>{f.slotScopeIds=R,v==null?f.shapeFlag&512?T.ctx.activate(f,h,g,x,Y):Me(f,h,g,T,O,x,Y):qe(v,f,Y)},Me=(v,f,h,g,T,O,x)=>{const R=v.component=D3(v,g,T);if(Ya(v)&&(R.ctx.renderer=W),O3(R),R.asyncDep){if(T&&T.registerDep(R,de),!v.el){const Y=R.subTree=Ie(Lt);m(null,Y,f,h)}return}de(R,v,f,h,T,O,x)},qe=(v,f,h)=>{const g=f.component=v.component;if(x0(v,f,h))if(g.asyncDep&&!g.asyncResolved){we(g,f,h);return}else g.next=f,P0(g.update),g.update();else f.el=v.el,g.vnode=f},de=(v,f,h,g,T,O,x)=>{const R=()=>{if(v.isMounted){let{next:K,bu:F,u:A,parent:se,vnode:ae}=v,xe=K,Pe;_s(v,!1),K?(K.el=ae.el,we(v,K,x)):K=ae,F&&_a(F),(Pe=K.props&&K.props.onVnodeBeforeUpdate)&&fn(Pe,se,K,ae),_s(v,!0);const He=go(v),$t=v.subTree;v.subTree=He,k($t,He,_($t.el),L($t),v,T,O),K.el=He.el,xe===null&&Li(v,He.el),A&&Pt(A,T),(Pe=K.props&&K.props.onVnodeUpdated)&&Pt(()=>fn(Pe,se,K,ae),T)}else{let K;const{el:F,props:A}=f,{bm:se,m:ae,parent:xe}=v,Pe=kr(f);if(_s(v,!1),se&&_a(se),!Pe&&(K=A&&A.onVnodeBeforeMount)&&fn(K,xe,f),_s(v,!0),F&&Se){const He=()=>{v.subTree=go(v),Se(F,v.subTree,v,T,null)};Pe?f.type.__asyncLoader().then(()=>!v.isUnmounted&&He()):He()}else{const He=v.subTree=go(v);k(null,He,h,g,v,T,O),f.el=He.el}if(ae&&Pt(ae,T),!Pe&&(K=A&&A.onVnodeMounted)){const He=f;Pt(()=>fn(K,xe,He),T)}(f.shapeFlag&256||xe&&kr(xe.vnode)&&xe.vnode.shapeFlag&256)&&v.a&&Pt(v.a,T),v.isMounted=!0,f=h=g=null}},Y=v.effect=new Ci(R,()=>Ai($),v.scope),$=v.update=()=>Y.run();$.id=v.uid,_s(v,!0),$()},we=(v,f,h)=>{f.component=v;const g=v.vnode.props;v.vnode=f,v.next=null,_3(v,f.props,g,h),g3(v,f.children,h),nr(),Yl(),sr()},Ee=(v,f,h,g,T,O,x,R,Y=!1)=>{const $=v&&v.children,K=v?v.shapeFlag:0,F=f.children,{patchFlag:A,shapeFlag:se}=f;if(A>0){if(A&128){Dt($,F,h,g,T,O,x,R,Y);return}else if(A&256){mt($,F,h,g,T,O,x,R,Y);return}}se&8?(K&16&&Ze($,T,O),F!==$&&c(h,F)):K&16?se&16?Dt($,F,h,g,T,O,x,R,Y):Ze($,T,O,!0):(K&8&&c(h,""),se&16&&M(F,h,g,T,O,x,R,Y))},mt=(v,f,h,g,T,O,x,R,Y)=>{v=v||Bs,f=f||Bs;const $=v.length,K=f.length,F=Math.min($,K);let A;for(A=0;AK?Ze(v,T,O,!0,!1,F):M(f,h,g,T,O,x,R,Y,F)},Dt=(v,f,h,g,T,O,x,R,Y)=>{let $=0;const K=f.length;let F=v.length-1,A=K-1;for(;$<=F&&$<=A;){const se=v[$],ae=f[$]=Y?Vn(f[$]):Qt(f[$]);if(pn(se,ae))k(se,ae,h,null,T,O,x,R,Y);else break;$++}for(;$<=F&&$<=A;){const se=v[F],ae=f[A]=Y?Vn(f[A]):Qt(f[A]);if(pn(se,ae))k(se,ae,h,null,T,O,x,R,Y);else break;F--,A--}if($>F){if($<=A){const se=A+1,ae=seA)for(;$<=F;)rt(v[$],T,O,!0),$++;else{const se=$,ae=$,xe=new Map;for($=ae;$<=A;$++){const Rt=f[$]=Y?Vn(f[$]):Qt(f[$]);Rt.key!=null&&xe.set(Rt.key,$)}let Pe,He=0;const $t=A-ae+1;let fs=!1,Sl=0;const dr=new Array($t);for($=0;$<$t;$++)dr[$]=0;for($=se;$<=F;$++){const Rt=v[$];if(He>=$t){rt(Rt,T,O,!0);continue}let dn;if(Rt.key!=null)dn=xe.get(Rt.key);else for(Pe=ae;Pe<=A;Pe++)if(dr[Pe-ae]===0&&pn(Rt,f[Pe])){dn=Pe;break}dn===void 0?rt(Rt,T,O,!0):(dr[dn-ae]=$+1,dn>=Sl?Sl=dn:fs=!0,k(Rt,f[dn],h,null,T,O,x,R,Y),He++)}const Cl=fs?b3(dr):Bs;for(Pe=Cl.length-1,$=$t-1;$>=0;$--){const Rt=ae+$,dn=f[Rt],Tl=Rt+1{const{el:O,type:x,transition:R,children:Y,shapeFlag:$}=v;if($&6){yt(v.component.subTree,f,h,g);return}if($&128){v.suspense.move(f,h,g);return}if($&64){x.move(v,f,h,W);return}if(x===me){s(O,f,h);for(let F=0;FR.enter(O),T);else{const{leave:F,delayLeave:A,afterLeave:se}=R,ae=()=>s(O,f,h),xe=()=>{F(O,()=>{ae(),se&&se()})};A?A(O,ae,xe):xe()}else s(O,f,h)},rt=(v,f,h,g=!1,T=!1)=>{const{type:O,props:x,ref:R,children:Y,dynamicChildren:$,shapeFlag:K,patchFlag:F,dirs:A}=v;if(R!=null&&Wo(R,null,h,v,!0),K&256){f.ctx.deactivate(v);return}const se=K&1&&A,ae=!kr(v);let xe;if(ae&&(xe=x&&x.onVnodeBeforeUnmount)&&fn(xe,f,v),K&6)cn(v.component,h,g);else{if(K&128){v.suspense.unmount(h,g);return}se&&hs(v,null,f,"beforeUnmount"),K&64?v.type.remove(v,f,h,T,W,g):$&&(O!==me||F>0&&F&64)?Ze($,f,h,!1,!0):(O===me&&F&384||!T&&K&16)&&Ze(Y,f,h),g&&Vt(v)}(ae&&(xe=x&&x.onVnodeUnmounted)||se)&&Pt(()=>{xe&&fn(xe,f,v),se&&hs(v,null,f,"unmounted")},h)},Vt=v=>{const{type:f,el:h,anchor:g,transition:T}=v;if(f===me){jt(h,g);return}if(f===pa){b(v);return}const O=()=>{r(h),T&&!T.persisted&&T.afterLeave&&T.afterLeave()};if(v.shapeFlag&1&&T&&!T.persisted){const{leave:x,delayLeave:R}=T,Y=()=>x(h,O);R?R(v.el,O,Y):Y()}else O()},jt=(v,f)=>{let h;for(;v!==f;)h=p(v),r(v),v=h;r(f)},cn=(v,f,h)=>{const{bum:g,scope:T,update:O,subTree:x,um:R}=v;g&&_a(g),T.stop(),O&&(O.active=!1,rt(x,v,f,h)),R&&Pt(R,f),Pt(()=>{v.isUnmounted=!0},f),f&&f.pendingBranch&&!f.isUnmounted&&v.asyncDep&&!v.asyncResolved&&v.suspenseId===f.pendingId&&(f.deps--,f.deps===0&&f.resolve())},Ze=(v,f,h,g=!1,T=!1,O=0)=>{for(let x=O;xv.shapeFlag&6?L(v.component.subTree):v.shapeFlag&128?v.suspense.next():p(v.anchor||v.el),z=(v,f,h)=>{v==null?f._vnode&&rt(f._vnode,null,null,!0):k(f._vnode||null,v,f,null,null,null,h),Yl(),ed(),f._vnode=v},W={p:k,um:rt,m:yt,r:Vt,mt:Me,mc:M,pc:Ee,pbc:ee,n:L,o:e};let Q,Se;return t&&([Q,Se]=t(W)),{render:z,hydrate:Q,createApp:d3(z,Q)}}function _s({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function kd(e,t,n=!1){const s=e.children,r=t.children;if(ne(s)&&ne(r))for(let a=0;a>1,e[n[i]]0&&(t[s]=n[a-1]),n[a]=s)}}for(a=n.length,o=n[a-1];a-- >0;)n[a]=o,o=t[o];return n}const E3=e=>e.__isTeleport,me=Symbol.for("v-fgt"),qr=Symbol.for("v-txt"),Lt=Symbol.for("v-cmt"),pa=Symbol.for("v-stc"),Sr=[];let Kt=null;function C(e=!1){Sr.push(Kt=e?null:[])}function wd(){Sr.pop(),Kt=Sr[Sr.length-1]||null}let Ks=1;function eu(e){Ks+=e}function Sd(e){return e.dynamicChildren=Ks>0?Kt||Bs:null,wd(),Ks>0&&Kt&&Kt.push(e),e}function N(e,t,n,s,r,a){return Sd(d(e,t,n,s,r,a,!0))}function Fe(e,t,n,s,r){return Sd(Ie(e,t,n,s,r,!0))}function Br(e){return e?e.__v_isVNode===!0:!1}function pn(e,t){return e.type===t.type&&e.key===t.key}const Wa="__vInternal",Cd=({key:e})=>e!=null?e:null,ma=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?et(e)||je(e)||ye(e)?{i:pt,r:e,k:t,f:!!n}:e:null);function d(e,t=null,n=null,s=0,r=null,a=e===me?0:1,o=!1,i=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Cd(t),ref:t&&ma(t),scopeId:Ua,slotScopeIds:null,children:n,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:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:pt};return i?(Ui(l,n),a&128&&e.normalize(l)):n&&(l.shapeFlag|=et(n)?8:16),Ks>0&&!o&&Kt&&(l.patchFlag>0||a&6)&&l.patchFlag!==32&&Kt.push(l),l}const Ie=k3;function k3(e,t=null,n=null,s=0,r=null,a=!1){if((!e||e===fd)&&(e=Lt),Br(e)){const i=ss(e,t,!0);return n&&Ui(i,n),Ks>0&&!a&&Kt&&(i.shapeFlag&6?Kt[Kt.indexOf(e)]=i:Kt.push(i)),i.patchFlag|=-2,i}if(L3(e)&&(e=e.__vccOpts),t){t=w3(t);let{class:i,style:l}=t;i&&!et(i)&&(t.class=_t(i)),Ye(l)&&(jc(l)&&!ne(l)&&(l=ot({},l)),t.style=Ts(l))}const o=et(e)?1:$0(e)?128:E3(e)?64:Ye(e)?4:ye(e)?2:0;return d(e,t,n,s,r,o,a,!0)}function w3(e){return e?jc(e)||Wa in e?ot({},e):e:null}function ss(e,t,n=!1){const{props:s,ref:r,patchFlag:a,children:o}=e,i=t?C3(s||{},t):s;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:i,key:i&&Cd(i),ref:t&&t.ref?n&&r?ne(r)?r.concat(ma(t)):[r,ma(t)]:ma(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:o,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==me?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&&ss(e.ssContent),ssFallback:e.ssFallback&&ss(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function Et(e=" ",t=0){return Ie(qr,null,e,t)}function S3(e,t){const n=Ie(pa,null,e);return n.staticCount=t,n}function pe(e="",t=!1){return t?(C(),Fe(Lt,null,e)):Ie(Lt,null,e)}function Qt(e){return e==null||typeof e=="boolean"?Ie(Lt):ne(e)?Ie(me,null,e.slice()):typeof e=="object"?Vn(e):Ie(qr,null,String(e))}function Vn(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:ss(e)}function Ui(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(ne(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),Ui(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!(Wa in t)?t._ctx=pt:r===3&&pt&&(pt.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else ye(t)?(t={default:t,_ctx:pt},n=32):(t=String(t),s&64?(n=16,t=[Et(t)]):n=8);e.children=t,e.shapeFlag|=n}function C3(...e){const t={};for(let n=0;nlt||pt;let Yi,Os,tu="__VUE_INSTANCE_SETTERS__";(Os=Io()[tu])||(Os=Io()[tu]=[]),Os.push(e=>lt=e),Yi=e=>{Os.length>1?Os.forEach(t=>t(e)):Os[0](e)};const rs=e=>{Yi(e),e.scope.on()},Qn=()=>{lt&<.scope.off(),Yi(null)};function Td(e){return e.vnode.shapeFlag&4}let Ur=!1;function O3(e,t=!1){Ur=t;const{props:n,children:s}=e.vnode,r=Td(e);h3(e,n,r,t),m3(e,s);const a=r?P3(e,t):void 0;return Ur=!1,a}function P3(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=Ra(new Proxy(e.ctx,r3));const{setup:s}=n;if(s){const r=e.setupContext=s.length>1?I3(e):null;rs(e),nr();const a=Xn(s,e,0,[e.props,r]);if(sr(),Qn(),bi(a)){if(a.then(Qn,Qn),t)return a.then(o=>{Vo(e,o,t)}).catch(o=>{Kr(o,e,0)});e.asyncDep=a}else Vo(e,a,t)}else Fd(e,t)}function Vo(e,t,n){ye(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Ye(t)&&(e.setupState=Jc(t)),Fd(e,n)}let nu;function Fd(e,t,n){const s=e.type;if(!e.render){if(!t&&nu&&!s.render){const r=s.template||Ri(e).template;if(r){const{isCustomElement:a,compilerOptions:o}=e.appContext.config,{delimiters:i,compilerOptions:l}=s,u=ot(ot({isCustomElement:a,delimiters:i},o),l);s.render=nu(r,u)}}e.render=s.render||rn}rs(e),nr(),a3(e),sr(),Qn()}function N3(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,n){return Mt(e,"get","$attrs"),t[n]}}))}function I3(e){const t=n=>{e.exposed=n||{}};return{get attrs(){return N3(e)},slots:e.slots,emit:e.emit,expose:t}}function Va(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Jc(Ra(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in wr)return wr[n](e)},has(t,n){return n in t||n in wr}}))}function A3(e,t=!0){return ye(e)?e.displayName||e.name:e.name||t&&e.__name}function L3(e){return ye(e)&&"__vccOpts"in e}const be=(e,t)=>F0(e,t,Ur);function Jr(e,t,n){const s=arguments.length;return s===2?Ye(t)&&!ne(t)?Br(t)?Ie(e,null,[t]):Ie(e,t):Ie(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&Br(n)&&(n=[n]),Ie(e,t,n))}const M3=Symbol.for("v-scx"),x3=()=>ve(M3),$3="3.3.4",R3="http://www.w3.org/2000/svg",ys=typeof document!="undefined"?document:null,su=ys&&ys.createElement("template"),B3={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t?ys.createElementNS(R3,e):ys.createElement(e,n?{is:n}:void 0);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>ys.createTextNode(e),createComment:e=>ys.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>ys.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,a){const o=n?n.previousSibling:t.lastChild;if(r&&(r===a||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===a||!(r=r.nextSibling)););else{su.innerHTML=s?`${e}`:e;const i=su.content;if(s){const l=i.firstChild;for(;l.firstChild;)i.appendChild(l.firstChild);i.removeChild(l)}t.insertBefore(i,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function U3(e,t,n){const s=e._vtc;s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}function Y3(e,t,n){const s=e.style,r=et(n);if(n&&!r){if(t&&!et(t))for(const a in t)n[a]==null&&jo(s,a,"");for(const a in n)jo(s,a,n[a])}else{const a=s.display;r?t!==n&&(s.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(s.display=a)}}const ru=/\s*!important$/;function jo(e,t,n){if(ne(n))n.forEach(s=>jo(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=H3(e,t);ru.test(n)?e.setProperty(tr(s),n.replace(ru,""),"important"):e[s]=n}}const au=["Webkit","Moz","ms"],bo={};function H3(e,t){const n=bo[t];if(n)return n;let s=gn(t);if(s!=="filter"&&s in e)return bo[t]=s;s=xa(s);for(let r=0;rEo||(K3.then(()=>Eo=0),Eo=Date.now());function J3(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;qt(X3(s,n.value),t,5,[s])};return n.value=e,n.attached=q3(),n}function X3(e,t){if(ne(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const lu=/^on[a-z]/,Z3=(e,t,n,s,r=!1,a,o,i,l)=>{t==="class"?U3(e,s,r):t==="style"?Y3(e,n,s):La(t)?vi(t)||G3(e,t,n,s,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Q3(e,t,s,r))?V3(e,t,s,a,o,i,l):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),W3(e,t,s,r))};function Q3(e,t,n,s){return s?!!(t==="innerHTML"||t==="textContent"||t in e&&lu.test(t)&&ye(n)):t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||lu.test(t)&&et(n)?!1:t in e}const Rn="transition",hr="animation",ja=(e,{slots:t})=>Jr(K0,e2(e),t);ja.displayName="Transition";const Dd={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};ja.props=ot({},od,Dd);const ps=(e,t=[])=>{ne(e)?e.forEach(n=>n(...t)):e&&e(...t)},uu=e=>e?ne(e)?e.some(t=>t.length>1):e.length>1:!1;function e2(e){const t={};for(const H in e)H in Dd||(t[H]=e[H]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:a=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:i=`${n}-enter-to`,appearFromClass:l=a,appearActiveClass:u=o,appearToClass:c=i,leaveFromClass:_=`${n}-leave-from`,leaveActiveClass:p=`${n}-leave-active`,leaveToClass:y=`${n}-leave-to`}=e,E=t2(r),k=E&&E[0],S=E&&E[1],{onBeforeEnter:m,onEnter:w,onEnterCancelled:P,onLeave:b,onLeaveCancelled:D,onBeforeAppear:I=m,onAppear:V=w,onAppearCancelled:M=P}=t,U=(H,ie,Me)=>{ms(H,ie?c:i),ms(H,ie?u:o),Me&&Me()},ee=(H,ie)=>{H._isLeaving=!1,ms(H,_),ms(H,y),ms(H,p),ie&&ie()},_e=H=>(ie,Me)=>{const qe=H?V:w,de=()=>U(ie,H,Me);ps(qe,[ie,de]),cu(()=>{ms(ie,H?l:a),Bn(ie,H?c:i),uu(qe)||du(ie,s,k,de)})};return ot(t,{onBeforeEnter(H){ps(m,[H]),Bn(H,a),Bn(H,o)},onBeforeAppear(H){ps(I,[H]),Bn(H,l),Bn(H,u)},onEnter:_e(!1),onAppear:_e(!0),onLeave(H,ie){H._isLeaving=!0;const Me=()=>ee(H,ie);Bn(H,_),r2(),Bn(H,p),cu(()=>{!H._isLeaving||(ms(H,_),Bn(H,y),uu(b)||du(H,s,S,Me))}),ps(b,[H,Me])},onEnterCancelled(H){U(H,!1),ps(P,[H])},onAppearCancelled(H){U(H,!0),ps(M,[H])},onLeaveCancelled(H){ee(H),ps(D,[H])}})}function t2(e){if(e==null)return null;if(Ye(e))return[ko(e.enter),ko(e.leave)];{const t=ko(e);return[t,t]}}function ko(e){return Dc(e)}function Bn(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e._vtc||(e._vtc=new Set)).add(t)}function ms(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const{_vtc:n}=e;n&&(n.delete(t),n.size||(e._vtc=void 0))}function cu(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let n2=0;function du(e,t,n,s){const r=e._endId=++n2,a=()=>{r===e._endId&&s()};if(n)return setTimeout(a,n);const{type:o,timeout:i,propCount:l}=s2(e,t);if(!o)return s();const u=o+"end";let c=0;const _=()=>{e.removeEventListener(u,p),a()},p=y=>{y.target===e&&++c>=l&&_()};setTimeout(()=>{c(n[E]||"").split(", "),r=s(`${Rn}Delay`),a=s(`${Rn}Duration`),o=fu(r,a),i=s(`${hr}Delay`),l=s(`${hr}Duration`),u=fu(i,l);let c=null,_=0,p=0;t===Rn?o>0&&(c=Rn,_=o,p=a.length):t===hr?u>0&&(c=hr,_=u,p=l.length):(_=Math.max(o,u),c=_>0?o>u?Rn:hr:null,p=c?c===Rn?a.length:l.length:0);const y=c===Rn&&/\b(transform|all)(,|$)/.test(s(`${Rn}Property`).toString());return{type:c,timeout:_,propCount:p,hasTransform:y}}function fu(e,t){for(;e.lengthhu(n)+hu(e[s])))}function hu(e){return Number(e.slice(0,-1).replace(",","."))*1e3}function r2(){return document.body.offsetHeight}const as=e=>{const t=e.props["onUpdate:modelValue"]||!1;return ne(t)?n=>_a(t,n):t};function a2(e){e.target.composing=!0}function _u(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const nn={created(e,{modifiers:{lazy:t,trim:n,number:s}},r){e._assign=as(r);const a=s||r.props&&r.props.type==="number";Tn(e,t?"change":"input",o=>{if(o.target.composing)return;let i=e.value;n&&(i=i.trim()),a&&(i=Ea(i)),e._assign(i)}),n&&Tn(e,"change",()=>{e.value=e.value.trim()}),t||(Tn(e,"compositionstart",a2),Tn(e,"compositionend",_u),Tn(e,"change",_u))},mounted(e,{value:t}){e.value=t==null?"":t},beforeUpdate(e,{value:t,modifiers:{lazy:n,trim:s,number:r}},a){if(e._assign=as(a),e.composing||document.activeElement===e&&e.type!=="range"&&(n||s&&e.value.trim()===t||(r||e.type==="number")&&Ea(e.value)===t))return;const o=t==null?"":t;e.value!==o&&(e.value=o)}},Hi={deep:!0,created(e,t,n){e._assign=as(n),Tn(e,"change",()=>{const s=e._modelValue,r=qs(e),a=e.checked,o=e._assign;if(ne(s)){const i=ki(s,r),l=i!==-1;if(a&&!l)o(s.concat(r));else if(!a&&l){const u=[...s];u.splice(i,1),o(u)}}else if(er(s)){const i=new Set(s);a?i.add(r):i.delete(r),o(i)}else o(Pd(e,a))})},mounted:pu,beforeUpdate(e,t,n){e._assign=as(n),pu(e,t,n)}};function pu(e,{value:t,oldValue:n},s){e._modelValue=t,ne(t)?e.checked=ki(t,s.props.value)>-1:er(t)?e.checked=t.has(s.props.value):t!==n&&(e.checked=Cs(t,Pd(e,!0)))}const es={created(e,{value:t},n){e.checked=Cs(t,n.props.value),e._assign=as(n),Tn(e,"change",()=>{e._assign(qs(e))})},beforeUpdate(e,{value:t,oldValue:n},s){e._assign=as(s),t!==n&&(e.checked=Cs(t,s.props.value))}},Od={deep:!0,created(e,{value:t,modifiers:{number:n}},s){const r=er(t);Tn(e,"change",()=>{const a=Array.prototype.filter.call(e.options,o=>o.selected).map(o=>n?Ea(qs(o)):qs(o));e._assign(e.multiple?r?new Set(a):a:a[0])}),e._assign=as(s)},mounted(e,{value:t}){mu(e,t)},beforeUpdate(e,t,n){e._assign=as(n)},updated(e,{value:t}){mu(e,t)}};function mu(e,t){const n=e.multiple;if(!(n&&!ne(t)&&!er(t))){for(let s=0,r=e.options.length;s-1:a.selected=t.has(o);else if(Cs(qs(a),t)){e.selectedIndex!==s&&(e.selectedIndex=s);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function qs(e){return"_value"in e?e._value:e.value}function Pd(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const o2=["ctrl","shift","alt","meta"],i2={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)=>o2.some(n=>e[`${n}Key`]&&!t.includes(n))},ls=(e,t)=>(n,...s)=>{for(let r=0;r{_r(e,!1)}):_r(e,t))},beforeUnmount(e,{value:t}){_r(e,t)}};function _r(e,t){e.style.display=t?e._vod:"none"}const l2=ot({patchProp:Z3},B3);let gu;function Nd(){return gu||(gu=v3(l2))}const Ta=(...e)=>{Nd().render(...e)},Wi=(...e)=>{const t=Nd().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=u2(s);if(!r)return;const a=t._component;!ye(a)&&!a.render&&!a.template&&(a.template=r.innerHTML),r.innerHTML="";const o=n(r,!1,r instanceof SVGElement);return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),o},t};function u2(e){return et(e)?document.querySelector(e):e}var c2={\u5E94\u7528\u641C\u7D22:"App search",\u786E\u8BA4:"Confirm",\u53D6\u6D88:"Cancel",\u5B89\u88C5\u4EFB\u52A1\u8FDB\u5EA6:"Installation task progress",\u5B89\u88C5\u4EFB\u52A1:"Installation tasks",\u67E5\u770B\u65E5\u5FD7:"View log",\u6210\u529F:"Success",\u5931\u8D25:"Fail",\u9996\u9875\u6A21\u5757\u8BBE\u7F6E:"Home module settings",\u5411\u5BFC\u6A21\u5F0F:"Guide mode",\u5207\u6362\u81F3\u666E\u901A\u7248\u672C:"Switch to normal version",\u6CE8\u9500:"Log out",\u5E38\u7528\u5DE5\u5177:"Tools",\u7EC8\u7AEF:"Terminal",\u56FA\u4EF6\u66F4\u65B0:"Firmware update",\u5185\u7F51\u914D\u7F6E:"Network setup",\u5730\u5740:"address",\u5B50\u7F51\u63A9\u7801:"subnet mask",\u4FDD\u6301DHCP\u670D\u52A1\u8BBE\u7F6E:"Keep DHCP service settings",IP\u6C60\u8D77\u59CB\u5730\u5740:"IP pool starting address",IP\u6C60\u7ED3\u675F\u5730\u5740:"IP pool end address",DNS\u914D\u7F6E:"DNS setup",DNS\u9009\u9879:"DNS options",\u81EA\u52A8\u83B7\u53D6:"Obtain DNS automatically",\u81EA\u5B9A\u4E49DNS:"Custom DNS",DNS\u670D\u52A1\u5668\u5730\u5740:"DNS server address",\u8BF7\u8F93\u5165DNS\u5730\u5740:"Please enter DNS address",\u5907\u7528DNS\u670D\u52A1\u5668\u5730\u5740:"Alternate DNS server address",\u5907\u7528DNS\u5730\u5740:"Alternate DNS address",\u8F6F\u4EF6\u6E90\u914D\u7F6E:"Software source setup",\u5F53\u524D\u8F6F\u4EF6\u6E90:"Current software source",\u5207\u6362\u8F6F\u4EF6\u6E90:"Switch software source",\u8BF7\u9009\u62E9\u8F6F\u4EF6\u6E90:"Please select a software source",\u5F00\u542F\u6C99\u7BB1:"Sandbox setup",\u6C99\u7BB1\u6A21\u5F0F\u914D\u7F6E\u5411\u5BFC:"Sandbox mode configuration guide",\u6D41\u91CF\u7EDF\u8BA1:"Statistics",\u4E0A\u4F20:"Upload",\u4E0B\u8F7D:"Download",\u5DF2\u8FDE\u63A5\u4E92\u8054\u7F51:"Internet connected",\u5DF2\u8FDE\u63A5\u8BBE\u5907:"Device",IP\u5730\u5740:"IP address",\u9759\u6001\u7F51\u7EDC:"Static network",\u624B\u52A8\u914D\u7F6E:"Manual configuration",\u7F51\u7EDC\u63A5\u53E3\u72B6\u6001:"Network interface",\u7F51\u53E3\u914D\u7F6E:"Network interface configuration",\u5DF2\u65AD\u5F00:"Disconnected",\u7CFB\u7EDF\u4FE1\u606F:"System",CPU\u6E29\u5EA6:"CPU temperature",CPU\u4F7F\u7528\u7387:"CPU usage",\u5185\u5B58\u4F7F\u7528\u7387:"Memory usage",\u7CFB\u7EDF\u76D1\u63A7:"System monitor",\u5907\u4EFD\u5347\u7EA7:"Backup upgrade",\u63D2\u4EF6\u5907\u4EFD:"Plugin backup",\u8BBE\u5907\u578B\u53F7:"Device model",\u56FA\u4EF6\u7248\u672C:"Firmware version",\u5185\u6838\u7248\u672C:"Kernel version",\u5DF2\u542F\u52A8:"Started",\u7CFB\u7EDF\u65F6\u95F4:"System time",\u78C1\u76D8\u4FE1\u606F:"Disk",RAID\u7BA1\u7406:"RAID management",\u78C1\u76D8\u7BA1\u7406:"Disk management",\u6302\u8F7D\u70B9:"Mount point",\u7CFB\u7EDF\u6839\u76EE\u5F55:"System root directory",\u5DF2\u6302\u8F7D\u78C1\u76D8:"Disk mounted",\u5171\u4EAB\u529F\u80FD:"Sharing",\u5171\u4EAB\u6587\u4EF6:"Sharing file",\u65B0\u589E:"New",\u5171\u4EAB\u65B9\u5F0F:"Sharing method",\u8BFB\u5199:"Read and write",\u53EA\u8BFB:"Read-only",\u9009\u62E9\u4F4D\u7F6E:"Select location",\u5171\u4EAB\u540D\u79F0:"Share name",\u6D4F\u89C8:"Browse",\u4E0A\u4E00\u6B65:"Previous",\u4E0B\u4E00\u6B65:"Next",\u7528\u6237:"User",\u65E0\u6743\u9650:"No permission",\u786E\u8BA4\u7528\u6237\u6743\u9650:"Confirm user permissions",\u5171\u4EAB\u7528\u6237:"shared user",\u59D3\u540D:"Name",\u5BC6\u7801:"Password",\u64CD\u4F5C:"Operate",\u67E5\u770B\u5BC6\u7801:"View password",\u7528\u6237\u540D:"Username",\u7528\u6237\u5BC6\u7801:"User password",\u7F16\u8F91\u7528\u6237:"Edit user",\u5BC6\u7801\u786E\u8BA4:"Confirm password",\u8BF7\u8F93\u5165\u7528\u6237\u540D:"Please enter username",\u8BF7\u8F93\u5165\u5BC6\u7801:"Please enter password",\u5173\u95ED:"Close",\u4FDD\u5B58:"Save",\u5171\u4EAB\u914D\u7F6E:"Shared configuration",\u6682\u672A\u5F00\u653E:"Not available yet",\u5176\u4ED6\u529F\u80FD:"Others",\u5411\u5BFC\u529F\u80FD:"Guide",\u6587\u4EF6\u7BA1\u7406:"File management",\u6587\u4EF6\u540C\u6B65:"File sync",\u76F8\u518C\u5907\u4EFD:"Album Backup",\u7F51\u7EDC\u5411\u5BFC:"Network guide",\u6B22\u8FCE\u4F7F\u7528\u7F51\u7EDC\u914D\u7F6E\u5411\u5BFC:"Welcome to the Network Configuration Guide",\u9009\u62E9\u4E00\u79CD\u8FDE\u63A5\u65B9\u5F0F\u4EE5\u5F00\u59CB:"Select a connection method to get started",\u5BBD\u5E26\u62E8\u53F7\u8FDE\u63A5:"PPPOE connection",\u8FDE\u63A5\u73B0\u6709\u8DEF\u7531\u5668:"Connect to existing router","\u6CA1\u627E\u5230\u60F3\u8981\u7684\u914D\u7F6E\uFF1F\u8BF7\u4F7F\u7528":"Didn't find the configuration you wanted? please use",\u9AD8\u7EA7\u6A21\u5F0F:"Advanced mode",NAS\u5411\u5BFC:"NAS guide",\u6B22\u8FCE\u4F7F\u7528iStoreOS:"Welcome to iStoreOS",\u5E94\u7528\u4E2D\u5FC3:"App Center",\u5E94\u7528\u5546\u5E97:"App Store",\u53EF\u66F4\u65B0:"Updatable",\u5DF2\u5B89\u88C5:"Installed",\u66F4\u65B0:"Update",\u5378\u8F7D:"Uninstall",\u6253\u5F00:"Open",\u5B89\u88C5:"Install",\u5168\u90E8\u8F6F\u4EF6:"All software",\u670D\u52A1\u72B6\u6001:"Service",\u8FDC\u7A0B\u57DF\u540D:"Remote domain name",\u5FEB\u901F\u914D\u7F6E:"Quick Setup",\u57DF\u540D\u5FEB\u901F\u914D\u7F6E:"Quick configuration of domain name",\u63A7\u5236\u53F0:"Control console",\u7F16\u8F91:"Edit",\u5F53\u524D\u72B6\u6001:"Current status",\u6839\u76EE\u5F55:"Root directory",\u67E5\u770BDocker\u4FE1\u606F:"View Docker information",\u8FC1\u79FB\u5411\u5BFC:"Migration guide",\u8FC1\u79FB\u5230:"migrated to",\u8BF7\u9009\u62E9\u8FC1\u79FB\u5730\u5740:"Please select a migration address",\u81EA\u5B9A\u4E49:"Customize",\u9AD8\u7EA7\u914D\u7F6E:"Advanced configuration",\u4E0B\u8F7D\u670D\u52A1:"Download",\u6682\u65E0\u4E0B\u8F7D:"No download yet",\u4E0B\u8F7D\u76EE\u5F55:"Download directory",\u7F51\u7EDC\u5730\u5740:"Network address",\u672A\u542F\u52A8:"Not started",\u4E0B\u8F7D\u670D\u52A1\u914D\u7F6E\u5411\u5BFC:"Download service configuration guide",\u914D\u7F6E\u76EE\u5F55:"Configuration directory",RPC\u4EE4\u724C:"RPC token",\u9644\u52A0\u7684:"Additional",\u9ED8\u8BA4:"Default",\u81EA\u5DF1\u6DFB\u52A0:"Add it yourself",\u542F\u7528:"Enable",\u5171\u4EAB\u8BBE\u7F6E:"Share settings",\u53F0:"pcs"},d2={\u5E94\u7528\u641C\u7D22:"\u5E94\u7528\u641C\u7D22",\u786E\u8BA4:"\u786E\u8BA4",\u53D6\u6D88:"\u53D6\u6D88",\u5B89\u88C5\u4EFB\u52A1\u8FDB\u5EA6:"\u5B89\u88C5\u4EFB\u52A1\u8FDB\u5EA6",\u5B89\u88C5\u4EFB\u52A1:"\u5B89\u88C5\u4EFB\u52A1",\u67E5\u770B\u65E5\u5FD7:"\u67E5\u770B\u65E5\u5FD7",\u6210\u529F:"\u6210\u529F",\u5931\u8D25:"\u5931\u8D25",\u9996\u9875\u6A21\u5757\u8BBE\u7F6E:"\u9996\u9875\u6A21\u5757\u8BBE\u7F6E",\u5411\u5BFC\u6A21\u5F0F:"\u5411\u5BFC\u6A21\u5F0F",\u5207\u6362\u81F3\u666E\u901A\u7248\u672C:"\u5207\u6362\u81F3\u666E\u901A\u7248\u672C",\u6CE8\u9500:"\u6CE8\u9500",\u5E38\u7528\u5DE5\u5177:"\u5E38\u7528\u5DE5\u5177",\u7EC8\u7AEF:"\u7EC8\u7AEF",\u56FA\u4EF6\u66F4\u65B0:"\u56FA\u4EF6\u66F4\u65B0",\u5185\u7F51\u914D\u7F6E:"\u5185\u7F51\u914D\u7F6E",\u5730\u5740:"\u5730\u5740",\u5B50\u7F51\u63A9\u7801:"\u5B50\u7F51\u63A9\u7801",\u4FDD\u6301DHCP\u670D\u52A1\u8BBE\u7F6E:"\u4FDD\u6301DHCP\u670D\u52A1\u8BBE\u7F6E",IP\u6C60\u8D77\u59CB\u5730\u5740:"IP\u6C60\u8D77\u59CB\u5730\u5740",IP\u6C60\u7ED3\u675F\u5730\u5740:"IP\u6C60\u7ED3\u675F\u5730\u5740",DNS\u914D\u7F6E:"DNS\u914D\u7F6E",DNS\u9009\u9879:"DNS\u9009\u9879",\u81EA\u52A8\u83B7\u53D6:"\u81EA\u52A8\u83B7\u53D6",\u81EA\u5B9A\u4E49DNS:"\u81EA\u5B9A\u4E49DNS",DNS\u670D\u52A1\u5668\u5730\u5740:"DNS\u670D\u52A1\u5668\u5730\u5740",\u8BF7\u8F93\u5165DNS\u5730\u5740:"\u8BF7\u8F93\u5165DNS\u5730\u5740",\u5907\u7528DNS\u670D\u52A1\u5668\u5730\u5740:"\u5907\u7528DNS\u670D\u52A1\u5668\u5730\u5740",\u5907\u7528DNS\u5730\u5740:"\u5907\u7528DNS\u5730\u5740",\u8F6F\u4EF6\u6E90\u914D\u7F6E:"\u8F6F\u4EF6\u6E90\u914D\u7F6E",\u5F53\u524D\u8F6F\u4EF6\u6E90:"\u5F53\u524D\u8F6F\u4EF6\u6E90",\u5207\u6362\u8F6F\u4EF6\u6E90:"\u5207\u6362\u8F6F\u4EF6\u6E90",\u8BF7\u9009\u62E9\u8F6F\u4EF6\u6E90:"\u8BF7\u9009\u62E9\u8F6F\u4EF6\u6E90",\u5F00\u542F\u6C99\u7BB1:"\u5F00\u542F\u6C99\u7BB1",\u6C99\u7BB1\u6A21\u5F0F\u914D\u7F6E\u5411\u5BFC:"\u6C99\u7BB1\u6A21\u5F0F\u914D\u7F6E\u5411\u5BFC",\u6D41\u91CF\u7EDF\u8BA1:"\u6D41\u91CF\u7EDF\u8BA1",\u4E0A\u4F20:"\u4E0A\u4F20",\u4E0B\u8F7D:"\u4E0B\u8F7D",\u5DF2\u8FDE\u63A5\u4E92\u8054\u7F51:"\u5DF2\u8FDE\u63A5\u4E92\u8054\u7F51",\u5DF2\u8FDE\u63A5\u8BBE\u5907:"\u5DF2\u8FDE\u63A5\u8BBE\u5907",IP\u5730\u5740:"IP\u5730\u5740",\u9759\u6001\u7F51\u7EDC:"\u9759\u6001\u7F51\u7EDC",\u624B\u52A8\u914D\u7F6E:"\u624B\u52A8\u914D\u7F6E",\u7F51\u7EDC\u63A5\u53E3\u72B6\u6001:"\u7F51\u7EDC\u63A5\u53E3\u72B6\u6001",\u7F51\u53E3\u914D\u7F6E:"\u7F51\u53E3\u914D\u7F6E",\u5DF2\u65AD\u5F00:"\u5DF2\u65AD\u5F00",\u7CFB\u7EDF\u4FE1\u606F:"\u7CFB\u7EDF\u4FE1\u606F",CPU\u6E29\u5EA6:"CPU\u6E29\u5EA6",CPU\u4F7F\u7528\u7387:"CPU\u4F7F\u7528\u7387",\u5185\u5B58\u4F7F\u7528\u7387:"\u5185\u5B58\u4F7F\u7528\u7387",\u7CFB\u7EDF\u76D1\u63A7:"\u7CFB\u7EDF\u76D1\u63A7",\u5907\u4EFD\u5347\u7EA7:"\u5907\u4EFD\u5347\u7EA7",\u63D2\u4EF6\u5907\u4EFD:"\u63D2\u4EF6\u5907\u4EFD",\u8BBE\u5907\u578B\u53F7:"\u8BBE\u5907\u578B\u53F7",\u56FA\u4EF6\u7248\u672C:"\u56FA\u4EF6\u7248\u672C",\u5185\u6838\u7248\u672C:"\u5185\u6838\u7248\u672C",\u5DF2\u542F\u52A8:"\u5DF2\u542F\u52A8",\u7CFB\u7EDF\u65F6\u95F4:"\u7CFB\u7EDF\u65F6\u95F4",\u78C1\u76D8\u4FE1\u606F:"\u78C1\u76D8\u4FE1\u606F",RAID\u7BA1\u7406:"RAID\u7BA1\u7406",\u78C1\u76D8\u7BA1\u7406:"\u78C1\u76D8\u7BA1\u7406",\u6302\u8F7D\u70B9:"\u6302\u8F7D\u70B9",\u7CFB\u7EDF\u6839\u76EE\u5F55:"\u7CFB\u7EDF\u6839\u76EE\u5F55",\u5DF2\u6302\u8F7D\u78C1\u76D8:"\u5DF2\u6302\u8F7D\u78C1\u76D8",\u5171\u4EAB\u529F\u80FD:"\u5171\u4EAB\u529F\u80FD",\u5171\u4EAB\u6587\u4EF6:"\u5171\u4EAB\u6587\u4EF6",\u65B0\u589E:"\u65B0\u589E",\u5171\u4EAB\u65B9\u5F0F:"\u5171\u4EAB\u65B9\u5F0F",\u8BFB\u5199:"\u8BFB\u5199",\u53EA\u8BFB:"\u53EA\u8BFB",\u9009\u62E9\u4F4D\u7F6E:"\u9009\u62E9\u4F4D\u7F6E",\u5171\u4EAB\u540D\u79F0:"\u5171\u4EAB\u540D\u79F0",\u6D4F\u89C8:"\u6D4F\u89C8",\u4E0A\u4E00\u6B65:"\u4E0A\u4E00\u6B65",\u4E0B\u4E00\u6B65:"\u4E0B\u4E00\u6B65",\u7528\u6237:"\u7528\u6237",\u65E0\u6743\u9650:"\u65E0\u6743\u9650",\u786E\u8BA4\u7528\u6237\u6743\u9650:"\u786E\u8BA4\u7528\u6237\u6743\u9650",\u5171\u4EAB\u7528\u6237:"\u5171\u4EAB\u7528\u6237",\u59D3\u540D:"\u59D3\u540D",\u5BC6\u7801:"\u5BC6\u7801",\u64CD\u4F5C:"\u64CD\u4F5C",\u67E5\u770B\u5BC6\u7801:"\u67E5\u770B\u5BC6\u7801",\u7528\u6237\u540D:"\u7528\u6237\u540D",\u7528\u6237\u5BC6\u7801:"\u7528\u6237\u5BC6\u7801",\u7F16\u8F91\u7528\u6237:"\u7F16\u8F91\u7528\u6237",\u5BC6\u7801\u786E\u8BA4:"\u5BC6\u7801\u786E\u8BA4",\u8BF7\u8F93\u5165\u7528\u6237\u540D:"\u8BF7\u8F93\u5165\u7528\u6237\u540D",\u8BF7\u8F93\u5165\u5BC6\u7801:"\u8BF7\u8F93\u5165\u5BC6\u7801",\u5173\u95ED:"\u5173\u95ED",\u4FDD\u5B58:"\u4FDD\u5B58",\u5171\u4EAB\u914D\u7F6E:"\u5171\u4EAB\u914D\u7F6E",\u6682\u672A\u5F00\u653E:"\u6682\u672A\u5F00\u653E",\u5176\u4ED6\u529F\u80FD:"\u5176\u4ED6\u529F\u80FD",\u5411\u5BFC\u529F\u80FD:"\u5411\u5BFC\u529F\u80FD",\u6587\u4EF6\u7BA1\u7406:"\u6587\u4EF6\u7BA1\u7406",\u6587\u4EF6\u540C\u6B65:"\u6587\u4EF6\u540C\u6B65",\u76F8\u518C\u5907\u4EFD:"\u76F8\u518C\u5907\u4EFD",\u7F51\u7EDC\u5411\u5BFC:"\u7F51\u7EDC\u5411\u5BFC",\u6B22\u8FCE\u4F7F\u7528\u7F51\u7EDC\u914D\u7F6E\u5411\u5BFC:"\u6B22\u8FCE\u4F7F\u7528\u7F51\u7EDC\u914D\u7F6E\u5411\u5BFC",\u9009\u62E9\u4E00\u79CD\u8FDE\u63A5\u65B9\u5F0F\u4EE5\u5F00\u59CB:"\u9009\u62E9\u4E00\u79CD\u8FDE\u63A5\u65B9\u5F0F\u4EE5\u5F00\u59CB",\u5BBD\u5E26\u62E8\u53F7\u8FDE\u63A5:"\u5BBD\u5E26\u62E8\u53F7\u8FDE\u63A5",\u8FDE\u63A5\u73B0\u6709\u8DEF\u7531\u5668:"\u8FDE\u63A5\u73B0\u6709\u8DEF\u7531\u5668","\u6CA1\u627E\u5230\u60F3\u8981\u7684\u914D\u7F6E\uFF1F\u8BF7\u4F7F\u7528":"\u6CA1\u627E\u5230\u60F3\u8981\u7684\u914D\u7F6E\uFF1F\u8BF7\u4F7F\u7528",\u9AD8\u7EA7\u6A21\u5F0F:"\u9AD8\u7EA7\u6A21\u5F0F",NAS\u5411\u5BFC:"NAS\u5411\u5BFC",\u6B22\u8FCE\u4F7F\u7528iStoreOS:"\u6B22\u8FCE\u4F7F\u7528iStoreOS",\u5E94\u7528\u4E2D\u5FC3:"\u5E94\u7528\u4E2D\u5FC3",\u5E94\u7528\u5546\u5E97:"\u5E94\u7528\u5546\u5E97",\u53EF\u66F4\u65B0:"\u53EF\u66F4\u65B0",\u5DF2\u5B89\u88C5:"\u5DF2\u5B89\u88C5",\u66F4\u65B0:"\u66F4\u65B0",\u5378\u8F7D:"\u5378\u8F7D",\u6253\u5F00:"\u6253\u5F00",\u5B89\u88C5:"\u5B89\u88C5",\u5168\u90E8\u8F6F\u4EF6:"\u5168\u90E8\u8F6F\u4EF6",\u670D\u52A1\u72B6\u6001:"\u670D\u52A1\u72B6\u6001",\u8FDC\u7A0B\u57DF\u540D:"\u8FDC\u7A0B\u57DF\u540D",\u5FEB\u901F\u914D\u7F6E:"\u5FEB\u901F\u914D\u7F6E",\u57DF\u540D\u5FEB\u901F\u914D\u7F6E:"\u57DF\u540D\u5FEB\u901F\u914D\u7F6E",\u63A7\u5236\u53F0:"\u63A7\u5236\u53F0",\u7F16\u8F91:"\u7F16\u8F91",\u5F53\u524D\u72B6\u6001:"\u5F53\u524D\u72B6\u6001",\u6839\u76EE\u5F55:"\u6839\u76EE\u5F55",\u67E5\u770BDocker\u4FE1\u606F:"\u67E5\u770BDocker\u4FE1\u606F",\u8FC1\u79FB\u5411\u5BFC:"\u8FC1\u79FB\u5411\u5BFC",\u8FC1\u79FB\u5230:"\u8FC1\u79FB\u5230",\u8BF7\u9009\u62E9\u8FC1\u79FB\u5730\u5740:"\u8BF7\u9009\u62E9\u8FC1\u79FB\u5730\u5740",\u81EA\u5B9A\u4E49:"\u81EA\u5B9A\u4E49",\u9AD8\u7EA7\u914D\u7F6E:"\u9AD8\u7EA7\u914D\u7F6E",\u4E0B\u8F7D\u670D\u52A1:"\u4E0B\u8F7D\u670D\u52A1",\u6682\u65E0\u4E0B\u8F7D:"\u6682\u65E0\u4E0B\u8F7D",\u4E0B\u8F7D\u76EE\u5F55:"\u4E0B\u8F7D\u76EE\u5F55",\u7F51\u7EDC\u5730\u5740:"\u7F51\u7EDC\u5730\u5740",\u672A\u542F\u52A8:"\u672A\u542F\u52A8",\u4E0B\u8F7D\u670D\u52A1\u914D\u7F6E\u5411\u5BFC:"\u4E0B\u8F7D\u670D\u52A1\u914D\u7F6E\u5411\u5BFC",\u914D\u7F6E\u76EE\u5F55:"\u914D\u7F6E\u76EE\u5F55",RPC\u4EE4\u724C:"RPC\u4EE4\u724C",\u9644\u52A0\u7684:"\u9644\u52A0\u7684",\u9ED8\u8BA4:"\u9ED8\u8BA4",\u81EA\u5DF1\u6DFB\u52A0:"\u81EA\u5DF1\u6DFB\u52A0",\u542F\u7528:"\u542F\u7528",\u5171\u4EAB\u8BBE\u7F6E:"\u5171\u4EAB\u8BBE\u7F6E",\u53F0:"\u53F0"},f2={\u5E94\u7528\u641C\u7D22:"\u7E41\u4F53DEMOOOOO",\u786E\u8BA4:"\u786E\u8BA4",\u53D6\u6D88:"\u53D6\u6D88",\u5B89\u88C5\u4EFB\u52A1\u8FDB\u5EA6:"\u5B89\u88C5\u4EFB\u52A1\u8FDB\u5EA6",\u5B89\u88C5\u4EFB\u52A1:"\u5B89\u88C5\u4EFB\u52A1",\u67E5\u770B\u65E5\u5FD7:"\u67E5\u770B\u65E5\u5FD7",\u6210\u529F:"\u6210\u529F",\u5931\u8D25:"\u5931\u8D25",\u9996\u9875\u6A21\u5757\u8BBE\u7F6E:"\u9996\u9875\u6A21\u5757\u8BBE\u7F6E",\u5411\u5BFC\u6A21\u5F0F:"\u5411\u5BFC\u6A21\u5F0F",\u5207\u6362\u81F3\u666E\u901A\u7248\u672C:"\u5207\u6362\u81F3\u666E\u901A\u7248\u672C",\u6CE8\u9500:"\u6CE8\u9500",\u5E38\u7528\u5DE5\u5177:"\u5E38\u7528\u5DE5\u5177",\u7EC8\u7AEF:"\u7EC8\u7AEF",\u56FA\u4EF6\u66F4\u65B0:"\u56FA\u4EF6\u66F4\u65B0",\u5185\u7F51\u914D\u7F6E:"\u5185\u7F51\u914D\u7F6E",\u5730\u5740:"\u5730\u5740",\u5B50\u7F51\u63A9\u7801:"\u5B50\u7F51\u63A9\u7801",\u4FDD\u6301DHCP\u670D\u52A1\u8BBE\u7F6E:"\u4FDD\u6301DHCP\u670D\u52A1\u8BBE\u7F6E",IP\u6C60\u8D77\u59CB\u5730\u5740:"IP\u6C60\u8D77\u59CB\u5730\u5740",IP\u6C60\u7ED3\u675F\u5730\u5740:"IP\u6C60\u7ED3\u675F\u5730\u5740",DNS\u914D\u7F6E:"DNS\u914D\u7F6E",DNS\u9009\u9879:"DNS\u9009\u9879",\u81EA\u52A8\u83B7\u53D6:"\u81EA\u52A8\u83B7\u53D6",\u81EA\u5B9A\u4E49DNS:"\u81EA\u5B9A\u4E49DNS",DNS\u670D\u52A1\u5668\u5730\u5740:"DNS\u670D\u52A1\u5668\u5730\u5740",\u8BF7\u8F93\u5165DNS\u5730\u5740:"\u8BF7\u8F93\u5165DNS\u5730\u5740",\u5907\u7528DNS\u670D\u52A1\u5668\u5730\u5740:"\u5907\u7528DNS\u670D\u52A1\u5668\u5730\u5740",\u5907\u7528DNS\u5730\u5740:"\u5907\u7528DNS\u5730\u5740",\u8F6F\u4EF6\u6E90\u914D\u7F6E:"\u8F6F\u4EF6\u6E90\u914D\u7F6E",\u5F53\u524D\u8F6F\u4EF6\u6E90:"\u5F53\u524D\u8F6F\u4EF6\u6E90",\u5207\u6362\u8F6F\u4EF6\u6E90:"\u5207\u6362\u8F6F\u4EF6\u6E90",\u8BF7\u9009\u62E9\u8F6F\u4EF6\u6E90:"\u8BF7\u9009\u62E9\u8F6F\u4EF6\u6E90",\u5F00\u542F\u6C99\u7BB1:"\u5F00\u542F\u6C99\u7BB1",\u6C99\u7BB1\u6A21\u5F0F\u914D\u7F6E\u5411\u5BFC:"\u6C99\u7BB1\u6A21\u5F0F\u914D\u7F6E\u5411\u5BFC",\u6D41\u91CF\u7EDF\u8BA1:"\u6D41\u91CF\u7EDF\u8BA1",\u4E0A\u4F20:"\u4E0A\u4F20",\u4E0B\u8F7D:"\u4E0B\u8F7D",\u5DF2\u8FDE\u63A5\u4E92\u8054\u7F51:"\u5DF2\u8FDE\u63A5\u4E92\u8054\u7F51",\u5DF2\u8FDE\u63A5\u8BBE\u5907:"\u5DF2\u8FDE\u63A5\u8BBE\u5907",IP\u5730\u5740:"IP\u5730\u5740",\u9759\u6001\u7F51\u7EDC:"\u9759\u6001\u7F51\u7EDC",\u624B\u52A8\u914D\u7F6E:"\u624B\u52A8\u914D\u7F6E",\u7F51\u7EDC\u63A5\u53E3\u72B6\u6001:"\u7F51\u7EDC\u63A5\u53E3\u72B6\u6001",\u7F51\u53E3\u914D\u7F6E:"\u7F51\u53E3\u914D\u7F6E",\u5DF2\u65AD\u5F00:"\u5DF2\u65AD\u5F00",\u7CFB\u7EDF\u4FE1\u606F:"\u7CFB\u7EDF\u4FE1\u606F",CPU\u6E29\u5EA6:"CPU\u6E29\u5EA6",CPU\u4F7F\u7528\u7387:"CPU\u4F7F\u7528\u7387",\u5185\u5B58\u4F7F\u7528\u7387:"\u5185\u5B58\u4F7F\u7528\u7387",\u7CFB\u7EDF\u76D1\u63A7:"\u7CFB\u7EDF\u76D1\u63A7",\u5907\u4EFD\u5347\u7EA7:"\u5907\u4EFD\u5347\u7EA7",\u63D2\u4EF6\u5907\u4EFD:"\u63D2\u4EF6\u5907\u4EFD",\u8BBE\u5907\u578B\u53F7:"\u8BBE\u5907\u578B\u53F7",\u56FA\u4EF6\u7248\u672C:"\u56FA\u4EF6\u7248\u672C",\u5185\u6838\u7248\u672C:"\u5185\u6838\u7248\u672C",\u5DF2\u542F\u52A8:"\u5DF2\u542F\u52A8",\u7CFB\u7EDF\u65F6\u95F4:"\u7CFB\u7EDF\u65F6\u95F4",\u78C1\u76D8\u4FE1\u606F:"\u78C1\u76D8\u4FE1\u606F",RAID\u7BA1\u7406:"RAID\u7BA1\u7406",\u78C1\u76D8\u7BA1\u7406:"\u78C1\u76D8\u7BA1\u7406",\u6302\u8F7D\u70B9:"\u6302\u8F7D\u70B9",\u7CFB\u7EDF\u6839\u76EE\u5F55:"\u7CFB\u7EDF\u6839\u76EE\u5F55",\u5DF2\u6302\u8F7D\u78C1\u76D8:"\u5DF2\u6302\u8F7D\u78C1\u76D8",\u5171\u4EAB\u529F\u80FD:"\u5171\u4EAB\u529F\u80FD",\u5171\u4EAB\u6587\u4EF6:"\u5171\u4EAB\u6587\u4EF6",\u65B0\u589E:"\u65B0\u589E",\u5171\u4EAB\u65B9\u5F0F:"\u5171\u4EAB\u65B9\u5F0F",\u8BFB\u5199:"\u8BFB\u5199",\u53EA\u8BFB:"\u53EA\u8BFB",\u9009\u62E9\u4F4D\u7F6E:"\u9009\u62E9\u4F4D\u7F6E",\u5171\u4EAB\u540D\u79F0:"\u5171\u4EAB\u540D\u79F0",\u6D4F\u89C8:"\u6D4F\u89C8",\u4E0A\u4E00\u6B65:"\u4E0A\u4E00\u6B65",\u4E0B\u4E00\u6B65:"\u4E0B\u4E00\u6B65",\u7528\u6237:"\u7528\u6237",\u65E0\u6743\u9650:"\u65E0\u6743\u9650",\u786E\u8BA4\u7528\u6237\u6743\u9650:"\u786E\u8BA4\u7528\u6237\u6743\u9650",\u5171\u4EAB\u7528\u6237:"\u5171\u4EAB\u7528\u6237",\u59D3\u540D:"\u59D3\u540D",\u5BC6\u7801:"\u5BC6\u7801",\u64CD\u4F5C:"\u64CD\u4F5C",\u67E5\u770B\u5BC6\u7801:"\u67E5\u770B\u5BC6\u7801",\u7528\u6237\u540D:"\u7528\u6237\u540D",\u7528\u6237\u5BC6\u7801:"\u7528\u6237\u5BC6\u7801",\u7F16\u8F91\u7528\u6237:"\u7F16\u8F91\u7528\u6237",\u5BC6\u7801\u786E\u8BA4:"\u5BC6\u7801\u786E\u8BA4",\u8BF7\u8F93\u5165\u7528\u6237\u540D:"\u8BF7\u8F93\u5165\u7528\u6237\u540D",\u8BF7\u8F93\u5165\u5BC6\u7801:"\u8BF7\u8F93\u5165\u5BC6\u7801",\u5173\u95ED:"\u5173\u95ED",\u4FDD\u5B58:"\u4FDD\u5B58",\u5171\u4EAB\u914D\u7F6E:"\u5171\u4EAB\u914D\u7F6E",\u6682\u672A\u5F00\u653E:"\u6682\u672A\u5F00\u653E",\u5176\u4ED6\u529F\u80FD:"\u5176\u4ED6\u529F\u80FD",\u5411\u5BFC\u529F\u80FD:"\u5411\u5BFC\u529F\u80FD",\u6587\u4EF6\u7BA1\u7406:"\u6587\u4EF6\u7BA1\u7406",\u6587\u4EF6\u540C\u6B65:"\u6587\u4EF6\u540C\u6B65",\u76F8\u518C\u5907\u4EFD:"\u76F8\u518C\u5907\u4EFD",\u7F51\u7EDC\u5411\u5BFC:"\u7F51\u7EDC\u5411\u5BFC",\u6B22\u8FCE\u4F7F\u7528\u7F51\u7EDC\u914D\u7F6E\u5411\u5BFC:"\u6B22\u8FCE\u4F7F\u7528\u7F51\u7EDC\u914D\u7F6E\u5411\u5BFC",\u9009\u62E9\u4E00\u79CD\u8FDE\u63A5\u65B9\u5F0F\u4EE5\u5F00\u59CB:"\u9009\u62E9\u4E00\u79CD\u8FDE\u63A5\u65B9\u5F0F\u4EE5\u5F00\u59CB",\u5BBD\u5E26\u62E8\u53F7\u8FDE\u63A5:"\u5BBD\u5E26\u62E8\u53F7\u8FDE\u63A5",\u8FDE\u63A5\u73B0\u6709\u8DEF\u7531\u5668:"\u8FDE\u63A5\u73B0\u6709\u8DEF\u7531\u5668","\u6CA1\u627E\u5230\u60F3\u8981\u7684\u914D\u7F6E\uFF1F\u8BF7\u4F7F\u7528":"\u6CA1\u627E\u5230\u60F3\u8981\u7684\u914D\u7F6E\uFF1F\u8BF7\u4F7F\u7528",\u9AD8\u7EA7\u6A21\u5F0F:"\u9AD8\u7EA7\u6A21\u5F0F",NAS\u5411\u5BFC:"NAS\u5411\u5BFC",\u6B22\u8FCE\u4F7F\u7528iStoreOS:"\u6B22\u8FCE\u4F7F\u7528iStoreOS",\u5E94\u7528\u4E2D\u5FC3:"\u5E94\u7528\u4E2D\u5FC3",\u5E94\u7528\u5546\u5E97:"\u5E94\u7528\u5546\u5E97",\u53EF\u66F4\u65B0:"\u53EF\u66F4\u65B0",\u5DF2\u5B89\u88C5:"\u5DF2\u5B89\u88C5",\u66F4\u65B0:"\u66F4\u65B0",\u5378\u8F7D:"\u5378\u8F7D",\u6253\u5F00:"\u6253\u5F00",\u5B89\u88C5:"\u5B89\u88C5",\u5168\u90E8\u8F6F\u4EF6:"\u5168\u90E8\u8F6F\u4EF6",\u670D\u52A1\u72B6\u6001:"\u670D\u52A1\u72B6\u6001",\u8FDC\u7A0B\u57DF\u540D:"\u8FDC\u7A0B\u57DF\u540D",\u5FEB\u901F\u914D\u7F6E:"\u5FEB\u901F\u914D\u7F6E",\u57DF\u540D\u5FEB\u901F\u914D\u7F6E:"\u57DF\u540D\u5FEB\u901F\u914D\u7F6E",\u63A7\u5236\u53F0:"\u63A7\u5236\u53F0",\u7F16\u8F91:"\u7F16\u8F91",\u5F53\u524D\u72B6\u6001:"\u5F53\u524D\u72B6\u6001",\u6839\u76EE\u5F55:"\u6839\u76EE\u5F55",\u67E5\u770BDocker\u4FE1\u606F:"\u67E5\u770BDocker\u4FE1\u606F",\u8FC1\u79FB\u5411\u5BFC:"\u8FC1\u79FB\u5411\u5BFC",\u8FC1\u79FB\u5230:"\u8FC1\u79FB\u5230",\u8BF7\u9009\u62E9\u8FC1\u79FB\u5730\u5740:"\u8BF7\u9009\u62E9\u8FC1\u79FB\u5730\u5740",\u81EA\u5B9A\u4E49:"\u81EA\u5B9A\u4E49",\u9AD8\u7EA7\u914D\u7F6E:"\u9AD8\u7EA7\u914D\u7F6E",\u4E0B\u8F7D\u670D\u52A1:"\u4E0B\u8F7D\u670D\u52A1",\u6682\u65E0\u4E0B\u8F7D:"\u6682\u65E0\u4E0B\u8F7D",\u4E0B\u8F7D\u76EE\u5F55:"\u4E0B\u8F7D\u76EE\u5F55",\u7F51\u7EDC\u5730\u5740:"\u7F51\u7EDC\u5730\u5740",\u672A\u542F\u52A8:"\u672A\u542F\u52A8",\u4E0B\u8F7D\u670D\u52A1\u914D\u7F6E\u5411\u5BFC:"\u4E0B\u8F7D\u670D\u52A1\u914D\u7F6E\u5411\u5BFC",\u914D\u7F6E\u76EE\u5F55:"\u914D\u7F6E\u76EE\u5F55",RPC\u4EE4\u724C:"RPC\u4EE4\u724C",\u9644\u52A0\u7684:"\u9644\u52A0\u7684",\u9ED8\u8BA4:"\u9ED8\u8BA4",\u81EA\u5DF1\u6DFB\u52A0:"\u81EA\u5DF1\u6DFB\u52A0",\u542F\u7528:"\u542F\u7528",\u5171\u4EAB\u8BBE\u7F6E:"\u5171\u4EAB\u8BBE\u7F6E",\u53F0:"\u53F0"};/*! * shared v9.5.0 * (c) 2023 kazuya kawaguchi * Released under the MIT License. */const Go=typeof window!="undefined",Ln=(e,t=!1)=>t?Symbol.for(e):Symbol(e),h2=(e,t,n)=>_2({l:e,k:t,s:n}),_2=e=>JSON.stringify(e).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029").replace(/\u0027/g,"\\u0027"),ut=e=>typeof e=="number"&&isFinite(e),p2=e=>Ad(e)==="[object Date]",os=e=>Ad(e)==="[object RegExp]",Ga=e=>ge(e)&&Object.keys(e).length===0,vt=Object.assign;let vu;const Fn=()=>vu||(vu=typeof globalThis!="undefined"?globalThis:typeof self!="undefined"?self:typeof window!="undefined"?window:typeof global!="undefined"?global:{});function yu(e){return e.replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}const m2=Object.prototype.hasOwnProperty;function Vi(e,t){return m2.call(e,t)}const Ge=Array.isArray,Qe=e=>typeof e=="function",q=e=>typeof e=="string",Te=e=>typeof e=="boolean",Re=e=>e!==null&&typeof e=="object",Id=Object.prototype.toString,Ad=e=>Id.call(e),ge=e=>{if(!Re(e))return!1;const t=Object.getPrototypeOf(e);return t===null||t.constructor===Object},g2=e=>e==null?"":Ge(e)||ge(e)&&e.toString===Id?JSON.stringify(e,null,2):String(e);function v2(e,t=""){return e.reduce((n,s,r)=>r===0?n+s:n+t+s,"")}function ji(e){let t=e;return()=>++t}function y2(e,t){typeof console!="undefined"&&(console.warn("[intlify] "+e),t&&console.warn(t.stack))}/*! * message-compiler v9.5.0 * (c) 2023 kazuya kawaguchi * Released under the MIT License. */function b2(e,t,n){return{line:e,column:t,offset:n}}function zo(e,t,n){const s={start:e,end:t};return n!=null&&(s.source=n),s}const E2=/\{([0-9a-zA-Z]+)\}/g;function k2(e,...t){return t.length===1&&w2(t[0])&&(t=t[0]),(!t||!t.hasOwnProperty)&&(t={}),e.replace(E2,(n,s)=>t.hasOwnProperty(s)?t[s]:"")}const Ld=Object.assign,bu=e=>typeof e=="string",w2=e=>e!==null&&typeof e=="object";function Md(e,t=""){return e.reduce((n,s,r)=>r===0?n+s:n+t+s,"")}const ce={EXPECTED_TOKEN:1,INVALID_TOKEN_IN_PLACEHOLDER:2,UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER:3,UNKNOWN_ESCAPE_SEQUENCE:4,INVALID_UNICODE_ESCAPE_SEQUENCE:5,UNBALANCED_CLOSING_BRACE:6,UNTERMINATED_CLOSING_BRACE:7,EMPTY_PLACEHOLDER:8,NOT_ALLOW_NEST_PLACEHOLDER:9,INVALID_LINKED_FORMAT:10,MUST_HAVE_MESSAGES_IN_PLURAL:11,UNEXPECTED_EMPTY_LINKED_MODIFIER:12,UNEXPECTED_EMPTY_LINKED_KEY:13,UNEXPECTED_LEXICAL_ANALYSIS:14,UNHANDLED_CODEGEN_NODE_TYPE:15,UNHANDLED_MINIFIER_NODE_TYPE:16,__EXTEND_POINT__:17},S2={[ce.EXPECTED_TOKEN]:"Expected token: '{0}'",[ce.INVALID_TOKEN_IN_PLACEHOLDER]:"Invalid token in placeholder: '{0}'",[ce.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER]:"Unterminated single quote in placeholder",[ce.UNKNOWN_ESCAPE_SEQUENCE]:"Unknown escape sequence: \\{0}",[ce.INVALID_UNICODE_ESCAPE_SEQUENCE]:"Invalid unicode escape sequence: {0}",[ce.UNBALANCED_CLOSING_BRACE]:"Unbalanced closing brace",[ce.UNTERMINATED_CLOSING_BRACE]:"Unterminated closing brace",[ce.EMPTY_PLACEHOLDER]:"Empty placeholder",[ce.NOT_ALLOW_NEST_PLACEHOLDER]:"Not allowed nest placeholder",[ce.INVALID_LINKED_FORMAT]:"Invalid linked format",[ce.MUST_HAVE_MESSAGES_IN_PLURAL]:"Plural must have messages",[ce.UNEXPECTED_EMPTY_LINKED_MODIFIER]:"Unexpected empty linked modifier",[ce.UNEXPECTED_EMPTY_LINKED_KEY]:"Unexpected empty linked key",[ce.UNEXPECTED_LEXICAL_ANALYSIS]:"Unexpected lexical analysis in token: '{0}'",[ce.UNHANDLED_CODEGEN_NODE_TYPE]:"unhandled codegen node type: '{0}'",[ce.UNHANDLED_MINIFIER_NODE_TYPE]:"unhandled mimifier node type: '{0}'"};function ar(e,t,n={}){const{domain:s,messages:r,args:a}=n,o=k2((r||S2)[e]||"",...a||[]),i=new SyntaxError(String(o));return i.code=e,t&&(i.location=t),i.domain=s,i}function C2(e){throw e}const En=" ",T2="\r",Ft=` `,F2=String.fromCharCode(8232),D2=String.fromCharCode(8233);function O2(e){const t=e;let n=0,s=1,r=1,a=0;const o=V=>t[V]===T2&&t[V+1]===Ft,i=V=>t[V]===Ft,l=V=>t[V]===D2,u=V=>t[V]===F2,c=V=>o(V)||i(V)||l(V)||u(V),_=()=>n,p=()=>s,y=()=>r,E=()=>a,k=V=>o(V)||l(V)||u(V)?Ft:t[V],S=()=>k(n),m=()=>k(n+a);function w(){return a=0,c(n)&&(s++,r=0),o(n)&&n++,n++,r++,t[n]}function P(){return o(n+a)&&a++,a++,t[n+a]}function b(){n=0,s=1,r=1,a=0}function D(V=0){a=V}function I(){const V=n+a;for(;V!==n;)w();a=0}return{index:_,line:p,column:y,peekOffset:E,charAt:k,currentChar:S,currentPeek:m,next:w,peek:P,reset:b,resetPeek:D,skipToPeek:I}}const Un=void 0,P2=".",Eu="'",N2="tokenizer";function I2(e,t={}){const n=t.location!==!1,s=O2(e),r=()=>s.index(),a=()=>b2(s.line(),s.column(),s.index()),o=a(),i=r(),l={currentType:14,offset:i,startLoc:o,endLoc:o,lastType:14,lastOffset:i,lastStartLoc:o,lastEndLoc:o,braceNest:0,inLinked:!1,text:""},u=()=>l,{onError:c}=t;function _(f,h,g,...T){const O=u();if(h.column+=g,h.offset+=g,c){const x=n?zo(O.startLoc,h):null,R=ar(f,x,{domain:N2,args:T});c(R)}}function p(f,h,g){f.endLoc=a(),f.currentType=h;const T={type:h};return n&&(T.loc=zo(f.startLoc,f.endLoc)),g!=null&&(T.value=g),T}const y=f=>p(f,14);function E(f,h){return f.currentChar()===h?(f.next(),h):(_(ce.EXPECTED_TOKEN,a(),0,h),"")}function k(f){let h="";for(;f.currentPeek()===En||f.currentPeek()===Ft;)h+=f.currentPeek(),f.peek();return h}function S(f){const h=k(f);return f.skipToPeek(),h}function m(f){if(f===Un)return!1;const h=f.charCodeAt(0);return h>=97&&h<=122||h>=65&&h<=90||h===95}function w(f){if(f===Un)return!1;const h=f.charCodeAt(0);return h>=48&&h<=57}function P(f,h){const{currentType:g}=h;if(g!==2)return!1;k(f);const T=m(f.currentPeek());return f.resetPeek(),T}function b(f,h){const{currentType:g}=h;if(g!==2)return!1;k(f);const T=f.currentPeek()==="-"?f.peek():f.currentPeek(),O=w(T);return f.resetPeek(),O}function D(f,h){const{currentType:g}=h;if(g!==2)return!1;k(f);const T=f.currentPeek()===Eu;return f.resetPeek(),T}function I(f,h){const{currentType:g}=h;if(g!==8)return!1;k(f);const T=f.currentPeek()===".";return f.resetPeek(),T}function V(f,h){const{currentType:g}=h;if(g!==9)return!1;k(f);const T=m(f.currentPeek());return f.resetPeek(),T}function M(f,h){const{currentType:g}=h;if(!(g===8||g===12))return!1;k(f);const T=f.currentPeek()===":";return f.resetPeek(),T}function U(f,h){const{currentType:g}=h;if(g!==10)return!1;const T=()=>{const x=f.currentPeek();return x==="{"?m(f.peek()):x==="@"||x==="%"||x==="|"||x===":"||x==="."||x===En||!x?!1:x===Ft?(f.peek(),T()):m(x)},O=T();return f.resetPeek(),O}function ee(f){k(f);const h=f.currentPeek()==="|";return f.resetPeek(),h}function _e(f){const h=k(f),g=f.currentPeek()==="%"&&f.peek()==="{";return f.resetPeek(),{isModulo:g,hasSpace:h.length>0}}function H(f,h=!0){const g=(O=!1,x="",R=!1)=>{const Y=f.currentPeek();return Y==="{"?x==="%"?!1:O:Y==="@"||!Y?x==="%"?!0:O:Y==="%"?(f.peek(),g(O,"%",!0)):Y==="|"?x==="%"||R?!0:!(x===En||x===Ft):Y===En?(f.peek(),g(!0,En,R)):Y===Ft?(f.peek(),g(!0,Ft,R)):!0},T=g();return h&&f.resetPeek(),T}function ie(f,h){const g=f.currentChar();return g===Un?Un:h(g)?(f.next(),g):null}function Me(f){return ie(f,g=>{const T=g.charCodeAt(0);return T>=97&&T<=122||T>=65&&T<=90||T>=48&&T<=57||T===95||T===36})}function qe(f){return ie(f,g=>{const T=g.charCodeAt(0);return T>=48&&T<=57})}function de(f){return ie(f,g=>{const T=g.charCodeAt(0);return T>=48&&T<=57||T>=65&&T<=70||T>=97&&T<=102})}function we(f){let h="",g="";for(;h=qe(f);)g+=h;return g}function Ee(f){S(f);const h=f.currentChar();return h!=="%"&&_(ce.EXPECTED_TOKEN,a(),0,h),f.next(),"%"}function mt(f){let h="";for(;;){const g=f.currentChar();if(g==="{"||g==="}"||g==="@"||g==="|"||!g)break;if(g==="%")if(H(f))h+=g,f.next();else break;else if(g===En||g===Ft)if(H(f))h+=g,f.next();else{if(ee(f))break;h+=g,f.next()}else h+=g,f.next()}return h}function Dt(f){S(f);let h="",g="";for(;h=Me(f);)g+=h;return f.currentChar()===Un&&_(ce.UNTERMINATED_CLOSING_BRACE,a(),0),g}function yt(f){S(f);let h="";return f.currentChar()==="-"?(f.next(),h+=`-${we(f)}`):h+=we(f),f.currentChar()===Un&&_(ce.UNTERMINATED_CLOSING_BRACE,a(),0),h}function rt(f){S(f),E(f,"'");let h="",g="";const T=x=>x!==Eu&&x!==Ft;for(;h=ie(f,T);)h==="\\"?g+=Vt(f):g+=h;const O=f.currentChar();return O===Ft||O===Un?(_(ce.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER,a(),0),O===Ft&&(f.next(),E(f,"'")),g):(E(f,"'"),g)}function Vt(f){const h=f.currentChar();switch(h){case"\\":case"'":return f.next(),`\\${h}`;case"u":return jt(f,h,4);case"U":return jt(f,h,6);default:return _(ce.UNKNOWN_ESCAPE_SEQUENCE,a(),0,h),""}}function jt(f,h,g){E(f,h);let T="";for(let O=0;OO!=="{"&&O!=="}"&&O!==En&&O!==Ft;for(;h=ie(f,T);)g+=h;return g}function Ze(f){let h="",g="";for(;h=Me(f);)g+=h;return g}function L(f){const h=(g=!1,T)=>{const O=f.currentChar();return O==="{"||O==="%"||O==="@"||O==="|"||O==="("||O===")"||!O||O===En?T:O===Ft||O===P2?(T+=O,f.next(),h(g,T)):(T+=O,f.next(),h(!0,T))};return h(!1,"")}function z(f){S(f);const h=E(f,"|");return S(f),h}function W(f,h){let g=null;switch(f.currentChar()){case"{":return h.braceNest>=1&&_(ce.NOT_ALLOW_NEST_PLACEHOLDER,a(),0),f.next(),g=p(h,2,"{"),S(f),h.braceNest++,g;case"}":return h.braceNest>0&&h.currentType===2&&_(ce.EMPTY_PLACEHOLDER,a(),0),f.next(),g=p(h,3,"}"),h.braceNest--,h.braceNest>0&&S(f),h.inLinked&&h.braceNest===0&&(h.inLinked=!1),g;case"@":return h.braceNest>0&&_(ce.UNTERMINATED_CLOSING_BRACE,a(),0),g=Q(f,h)||y(h),h.braceNest=0,g;default:let O=!0,x=!0,R=!0;if(ee(f))return h.braceNest>0&&_(ce.UNTERMINATED_CLOSING_BRACE,a(),0),g=p(h,1,z(f)),h.braceNest=0,h.inLinked=!1,g;if(h.braceNest>0&&(h.currentType===5||h.currentType===6||h.currentType===7))return _(ce.UNTERMINATED_CLOSING_BRACE,a(),0),h.braceNest=0,Se(f,h);if(O=P(f,h))return g=p(h,5,Dt(f)),S(f),g;if(x=b(f,h))return g=p(h,6,yt(f)),S(f),g;if(R=D(f,h))return g=p(h,7,rt(f)),S(f),g;if(!O&&!x&&!R)return g=p(h,13,cn(f)),_(ce.INVALID_TOKEN_IN_PLACEHOLDER,a(),0,g.value),S(f),g;break}return g}function Q(f,h){const{currentType:g}=h;let T=null;const O=f.currentChar();switch((g===8||g===9||g===12||g===10)&&(O===Ft||O===En)&&_(ce.INVALID_LINKED_FORMAT,a(),0),O){case"@":return f.next(),T=p(h,8,"@"),h.inLinked=!0,T;case".":return S(f),f.next(),p(h,9,".");case":":return S(f),f.next(),p(h,10,":");default:return ee(f)?(T=p(h,1,z(f)),h.braceNest=0,h.inLinked=!1,T):I(f,h)||M(f,h)?(S(f),Q(f,h)):V(f,h)?(S(f),p(h,12,Ze(f))):U(f,h)?(S(f),O==="{"?W(f,h)||T:p(h,11,L(f))):(g===8&&_(ce.INVALID_LINKED_FORMAT,a(),0),h.braceNest=0,h.inLinked=!1,Se(f,h))}}function Se(f,h){let g={type:14};if(h.braceNest>0)return W(f,h)||y(h);if(h.inLinked)return Q(f,h)||y(h);switch(f.currentChar()){case"{":return W(f,h)||y(h);case"}":return _(ce.UNBALANCED_CLOSING_BRACE,a(),0),f.next(),p(h,3,"}");case"@":return Q(f,h)||y(h);default:if(ee(f))return g=p(h,1,z(f)),h.braceNest=0,h.inLinked=!1,g;const{isModulo:O,hasSpace:x}=_e(f);if(O)return x?p(h,0,mt(f)):p(h,4,Ee(f));if(H(f))return p(h,0,mt(f));break}return g}function v(){const{currentType:f,offset:h,startLoc:g,endLoc:T}=l;return l.lastType=f,l.lastOffset=h,l.lastStartLoc=g,l.lastEndLoc=T,l.offset=r(),l.startLoc=a(),s.currentChar()===Un?p(l,14):Se(s,l)}return{nextToken:v,currentOffset:r,currentPosition:a,context:u}}const A2="parser",L2=/(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g;function M2(e,t,n){switch(e){case"\\\\":return"\\";case"\\'":return"'";default:{const s=parseInt(t||n,16);return s<=55295||s>=57344?String.fromCodePoint(s):"\uFFFD"}}}function x2(e={}){const t=e.location!==!1,{onError:n}=e;function s(m,w,P,b,...D){const I=m.currentPosition();if(I.offset+=b,I.column+=b,n){const V=t?zo(P,I):null,M=ar(w,V,{domain:A2,args:D});n(M)}}function r(m,w,P){const b={type:m};return t&&(b.start=w,b.end=w,b.loc={start:P,end:P}),b}function a(m,w,P,b){b&&(m.type=b),t&&(m.end=w,m.loc&&(m.loc.end=P))}function o(m,w){const P=m.context(),b=r(3,P.offset,P.startLoc);return b.value=w,a(b,m.currentOffset(),m.currentPosition()),b}function i(m,w){const P=m.context(),{lastOffset:b,lastStartLoc:D}=P,I=r(5,b,D);return I.index=parseInt(w,10),m.nextToken(),a(I,m.currentOffset(),m.currentPosition()),I}function l(m,w){const P=m.context(),{lastOffset:b,lastStartLoc:D}=P,I=r(4,b,D);return I.key=w,m.nextToken(),a(I,m.currentOffset(),m.currentPosition()),I}function u(m,w){const P=m.context(),{lastOffset:b,lastStartLoc:D}=P,I=r(9,b,D);return I.value=w.replace(L2,M2),m.nextToken(),a(I,m.currentOffset(),m.currentPosition()),I}function c(m){const w=m.nextToken(),P=m.context(),{lastOffset:b,lastStartLoc:D}=P,I=r(8,b,D);return w.type!==12?(s(m,ce.UNEXPECTED_EMPTY_LINKED_MODIFIER,P.lastStartLoc,0),I.value="",a(I,b,D),{nextConsumeToken:w,node:I}):(w.value==null&&s(m,ce.UNEXPECTED_LEXICAL_ANALYSIS,P.lastStartLoc,0,hn(w)),I.value=w.value||"",a(I,m.currentOffset(),m.currentPosition()),{node:I})}function _(m,w){const P=m.context(),b=r(7,P.offset,P.startLoc);return b.value=w,a(b,m.currentOffset(),m.currentPosition()),b}function p(m){const w=m.context(),P=r(6,w.offset,w.startLoc);let b=m.nextToken();if(b.type===9){const D=c(m);P.modifier=D.node,b=D.nextConsumeToken||m.nextToken()}switch(b.type!==10&&s(m,ce.UNEXPECTED_LEXICAL_ANALYSIS,w.lastStartLoc,0,hn(b)),b=m.nextToken(),b.type===2&&(b=m.nextToken()),b.type){case 11:b.value==null&&s(m,ce.UNEXPECTED_LEXICAL_ANALYSIS,w.lastStartLoc,0,hn(b)),P.key=_(m,b.value||"");break;case 5:b.value==null&&s(m,ce.UNEXPECTED_LEXICAL_ANALYSIS,w.lastStartLoc,0,hn(b)),P.key=l(m,b.value||"");break;case 6:b.value==null&&s(m,ce.UNEXPECTED_LEXICAL_ANALYSIS,w.lastStartLoc,0,hn(b)),P.key=i(m,b.value||"");break;case 7:b.value==null&&s(m,ce.UNEXPECTED_LEXICAL_ANALYSIS,w.lastStartLoc,0,hn(b)),P.key=u(m,b.value||"");break;default:s(m,ce.UNEXPECTED_EMPTY_LINKED_KEY,w.lastStartLoc,0);const D=m.context(),I=r(7,D.offset,D.startLoc);return I.value="",a(I,D.offset,D.startLoc),P.key=I,a(P,D.offset,D.startLoc),{nextConsumeToken:b,node:P}}return a(P,m.currentOffset(),m.currentPosition()),{node:P}}function y(m){const w=m.context(),P=w.currentType===1?m.currentOffset():w.offset,b=w.currentType===1?w.endLoc:w.startLoc,D=r(2,P,b);D.items=[];let I=null;do{const U=I||m.nextToken();switch(I=null,U.type){case 0:U.value==null&&s(m,ce.UNEXPECTED_LEXICAL_ANALYSIS,w.lastStartLoc,0,hn(U)),D.items.push(o(m,U.value||""));break;case 6:U.value==null&&s(m,ce.UNEXPECTED_LEXICAL_ANALYSIS,w.lastStartLoc,0,hn(U)),D.items.push(i(m,U.value||""));break;case 5:U.value==null&&s(m,ce.UNEXPECTED_LEXICAL_ANALYSIS,w.lastStartLoc,0,hn(U)),D.items.push(l(m,U.value||""));break;case 7:U.value==null&&s(m,ce.UNEXPECTED_LEXICAL_ANALYSIS,w.lastStartLoc,0,hn(U)),D.items.push(u(m,U.value||""));break;case 8:const ee=p(m);D.items.push(ee.node),I=ee.nextConsumeToken||null;break}}while(w.currentType!==14&&w.currentType!==1);const V=w.currentType===1?w.lastOffset:m.currentOffset(),M=w.currentType===1?w.lastEndLoc:m.currentPosition();return a(D,V,M),D}function E(m,w,P,b){const D=m.context();let I=b.items.length===0;const V=r(1,w,P);V.cases=[],V.cases.push(b);do{const M=y(m);I||(I=M.items.length===0),V.cases.push(M)}while(D.currentType!==14);return I&&s(m,ce.MUST_HAVE_MESSAGES_IN_PLURAL,P,0),a(V,m.currentOffset(),m.currentPosition()),V}function k(m){const w=m.context(),{offset:P,startLoc:b}=w,D=y(m);return w.currentType===14?D:E(m,P,b,D)}function S(m){const w=I2(m,Ld({},e)),P=w.context(),b=r(0,P.offset,P.startLoc);return t&&b.loc&&(b.loc.source=m),b.body=k(w),e.onCacheKey&&(b.cacheKey=e.onCacheKey(m)),P.currentType!==14&&s(w,ce.UNEXPECTED_LEXICAL_ANALYSIS,P.lastStartLoc,0,m[P.offset]||""),a(b,w.currentOffset(),w.currentPosition()),b}return{parse:S}}function hn(e){if(e.type===14)return"EOF";const t=(e.value||"").replace(/\r?\n/gu,"\\n");return t.length>10?t.slice(0,9)+"\u2026":t}function $2(e,t={}){const n={ast:e,helpers:new Set};return{context:()=>n,helper:a=>(n.helpers.add(a),a)}}function ku(e,t){for(let n=0;nwu(n)),e}function wu(e){if(e.items.length===1){const t=e.items[0];(t.type===3||t.type===9)&&(e.static=t.value,delete t.value)}else{const t=[];for(let n=0;ni;function u(S,m){i.code+=S}function c(S,m=!0){const w=m?r:"";u(a?w+" ".repeat(S):w)}function _(S=!0){const m=++i.indentLevel;S&&c(m)}function p(S=!0){const m=--i.indentLevel;S&&c(m)}function y(){c(i.indentLevel)}return{context:l,push:u,indent:_,deindent:p,newline:y,helper:S=>`_${S}`,needIndent:()=>i.needIndent}}function W2(e,t){const{helper:n}=e;e.push(`${n("linked")}(`),Js(e,t.key),t.modifier?(e.push(", "),Js(e,t.modifier),e.push(", _type")):e.push(", undefined, _type"),e.push(")")}function V2(e,t){const{helper:n,needIndent:s}=e;e.push(`${n("normalize")}([`),e.indent(s());const r=t.items.length;for(let a=0;a1){e.push(`${n("plural")}([`),e.indent(s());const r=t.cases.length;for(let a=0;a{const n=bu(t.mode)?t.mode:"normal",s=bu(t.filename)?t.filename:"message.intl",r=!!t.sourceMap,a=t.breakLineCode!=null?t.breakLineCode:n==="arrow"?";":` `,o=t.needIndent?t.needIndent:n!=="arrow",i=e.helpers||[],l=H2(e,{mode:n,filename:s,sourceMap:r,breakLineCode:a,needIndent:o});l.push(n==="normal"?"function __msg__ (ctx) {":"(ctx) => {"),l.indent(o),i.length>0&&(l.push(`const { ${Md(i.map(_=>`${_}: _${_}`),", ")} } = ctx`),l.newline()),l.push("return "),Js(l,e),l.deindent(o),l.push("}"),delete e.helpers;const{code:u,map:c}=l.context();return{ast:e,code:u,map:c?c.toJSON():void 0}};function K2(e,t={}){const n=Ld({},t),s=!!n.jit,r=!!n.minify,a=n.optimize==null?!0:n.optimize,i=x2(n).parse(e);return s?(a&&B2(i),r&&As(i),{ast:i,code:""}):(R2(i,n),z2(i,n))}/*! * core-base v9.5.0 * (c) 2023 kazuya kawaguchi * Released under the MIT License. */function q2(){typeof __INTLIFY_PROD_DEVTOOLS__!="boolean"&&(Fn().__INTLIFY_PROD_DEVTOOLS__=!1),typeof __INTLIFY_JIT_COMPILATION__!="boolean"&&(Fn().__INTLIFY_JIT_COMPILATION__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(Fn().__INTLIFY_DROP_MESSAGE_COMPILER__=!1)}const us=[];us[0]={w:[0],i:[3,0],["["]:[4],o:[7]};us[1]={w:[1],["."]:[2],["["]:[4],o:[7]};us[2]={w:[2],i:[3,0],[0]:[3,0]};us[3]={i:[3,0],[0]:[3,0],w:[1,1],["."]:[2,1],["["]:[4,1],o:[7,1]};us[4]={["'"]:[5,0],['"']:[6,0],["["]:[4,2],["]"]:[1,3],o:8,l:[4,0]};us[5]={["'"]:[4,0],o:8,l:[5,0]};us[6]={['"']:[4,0],o:8,l:[6,0]};const J2=/^\s?(?:true|false|-?[\d.]+|'[^']*'|"[^"]*")\s?$/;function X2(e){return J2.test(e)}function Z2(e){const t=e.charCodeAt(0),n=e.charCodeAt(e.length-1);return t===n&&(t===34||t===39)?e.slice(1,-1):e}function Q2(e){if(e==null)return"o";switch(e.charCodeAt(0)){case 91:case 93:case 46:case 34:case 39:return e;case 95:case 36:case 45:return"i";case 9:case 10:case 13:case 160:case 65279:case 8232:case 8233:return"w"}return"i"}function eh(e){const t=e.trim();return e.charAt(0)==="0"&&isNaN(parseInt(e))?!1:X2(t)?Z2(t):"*"+t}function th(e){const t=[];let n=-1,s=0,r=0,a,o,i,l,u,c,_;const p=[];p[0]=()=>{o===void 0?o=i:o+=i},p[1]=()=>{o!==void 0&&(t.push(o),o=void 0)},p[2]=()=>{p[0](),r++},p[3]=()=>{if(r>0)r--,s=4,p[0]();else{if(r=0,o===void 0||(o=eh(o),o===!1))return!1;p[1]()}};function y(){const E=e[n+1];if(s===5&&E==="'"||s===6&&E==='"')return n++,i="\\"+E,p[0](),!0}for(;s!==null;)if(n++,a=e[n],!(a==="\\"&&y())){if(l=Q2(a),_=us[s],u=_[l]||_.l||8,u===8||(s=u[0],u[1]!==void 0&&(c=p[u[1]],c&&(i=a,c()===!1))))return;if(s===7)return t}}const Su=new Map;function nh(e,t){return Re(e)?e[t]:null}function sh(e,t){if(!Re(e))return null;let n=Su.get(t);if(n||(n=th(t),n&&Su.set(t,n)),!n)return null;const s=n.length;let r=e,a=0;for(;ae,ah=e=>"",oh="text",ih=e=>e.length===0?"":v2(e),lh=g2;function Cu(e,t){return e=Math.abs(e),t===2?e?e>1?1:0:1:e?Math.min(e,2):0}function uh(e){const t=ut(e.pluralIndex)?e.pluralIndex:-1;return e.named&&(ut(e.named.count)||ut(e.named.n))?ut(e.named.count)?e.named.count:ut(e.named.n)?e.named.n:t:t}function ch(e,t){t.count||(t.count=e),t.n||(t.n=e)}function dh(e={}){const t=e.locale,n=uh(e),s=Re(e.pluralRules)&&q(t)&&Qe(e.pluralRules[t])?e.pluralRules[t]:Cu,r=Re(e.pluralRules)&&q(t)&&Qe(e.pluralRules[t])?Cu:void 0,a=m=>m[s(n,m.length,r)],o=e.list||[],i=m=>o[m],l=e.named||{};ut(e.pluralIndex)&&ch(n,l);const u=m=>l[m];function c(m){const w=Qe(e.messages)?e.messages(m):Re(e.messages)?e.messages[m]:!1;return w||(e.parent?e.parent.message(m):ah)}const _=m=>e.modifiers?e.modifiers[m]:rh,p=ge(e.processor)&&Qe(e.processor.normalize)?e.processor.normalize:ih,y=ge(e.processor)&&Qe(e.processor.interpolate)?e.processor.interpolate:lh,E=ge(e.processor)&&q(e.processor.type)?e.processor.type:oh,S={list:i,named:u,plural:a,linked:(m,...w)=>{const[P,b]=w;let D="text",I="";w.length===1?Re(P)?(I=P.modifier||I,D=P.type||D):q(P)&&(I=P||I):w.length===2&&(q(P)&&(I=P||I),q(b)&&(D=b||D));const V=c(m)(S),M=D==="vnode"&&Ge(V)&&I?V[0]:V;return I?_(I)(M,D):M},message:c,type:E,interpolate:y,normalize:p,values:vt({},o,l)};return S}let Yr=null;function fh(e){Yr=e}function hh(e,t,n){Yr&&Yr.emit("i18n:init",{timestamp:Date.now(),i18n:e,version:t,meta:n})}const _h=ph("function:translate");function ph(e){return t=>Yr&&Yr.emit(e,t)}const mh={NOT_FOUND_KEY:1,FALLBACK_TO_TRANSLATE:2,CANNOT_FORMAT_NUMBER:3,FALLBACK_TO_NUMBER_FORMAT:4,CANNOT_FORMAT_DATE:5,FALLBACK_TO_DATE_FORMAT:6,EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER:7,__EXTEND_POINT__:8};function zi(e,t){return t.locale!=null?Tu(t.locale):Tu(e.locale)}let wo;function Tu(e){return q(e)?e:wo!=null&&e.resolvedOnce?wo:wo=e()}function gh(e,t,n){return[...new Set([n,...Ge(t)?t:Re(t)?Object.keys(t):q(t)?[t]:[n]])]}function xd(e,t,n){const s=q(n)?n:Xs,r=e;r.__localeChainCache||(r.__localeChainCache=new Map);let a=r.__localeChainCache.get(s);if(!a){a=[];let o=[n];for(;Ge(o);)o=Fu(a,o,t);const i=Ge(t)||!ge(t)?t:t.default?t.default:null;o=q(i)?[i]:i,Ge(o)&&Fu(a,o,!1),r.__localeChainCache.set(s,a)}return a}function Fu(e,t,n){let s=!0;for(let r=0;r`${e.charAt(0).toLocaleUpperCase()}${e.substr(1)}`;function Eh(){return{upper:(e,t)=>t==="text"&&q(e)?e.toUpperCase():t==="vnode"&&Re(e)&&"__v_isVNode"in e?e.children.toUpperCase():e,lower:(e,t)=>t==="text"&&q(e)?e.toLowerCase():t==="vnode"&&Re(e)&&"__v_isVNode"in e?e.children.toLowerCase():e,capitalize:(e,t)=>t==="text"&&q(e)?Ou(e):t==="vnode"&&Re(e)&&"__v_isVNode"in e?Ou(e.children):e}}let $d;function Pu(e){$d=e}let Rd;function kh(e){Rd=e}let Bd;function wh(e){Bd=e}let Ud=null;const Nu=e=>{Ud=e},Sh=()=>Ud;let Yd=null;const Iu=e=>{Yd=e},Ch=()=>Yd;let Au=0;function Th(e={}){const t=Qe(e.onWarn)?e.onWarn:y2,n=q(e.version)?e.version:bh,s=q(e.locale)||Qe(e.locale)?e.locale:Xs,r=Qe(s)?Xs:s,a=Ge(e.fallbackLocale)||ge(e.fallbackLocale)||q(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:r,o=ge(e.messages)?e.messages:{[r]:{}},i=ge(e.datetimeFormats)?e.datetimeFormats:{[r]:{}},l=ge(e.numberFormats)?e.numberFormats:{[r]:{}},u=vt({},e.modifiers||{},Eh()),c=e.pluralRules||{},_=Qe(e.missing)?e.missing:null,p=Te(e.missingWarn)||os(e.missingWarn)?e.missingWarn:!0,y=Te(e.fallbackWarn)||os(e.fallbackWarn)?e.fallbackWarn:!0,E=!!e.fallbackFormat,k=!!e.unresolving,S=Qe(e.postTranslation)?e.postTranslation:null,m=ge(e.processor)?e.processor:null,w=Te(e.warnHtmlMessage)?e.warnHtmlMessage:!0,P=!!e.escapeParameter,b=Qe(e.messageCompiler)?e.messageCompiler:$d,D=Qe(e.messageResolver)?e.messageResolver:Rd||nh,I=Qe(e.localeFallbacker)?e.localeFallbacker:Bd||gh,V=Re(e.fallbackContext)?e.fallbackContext:void 0,M=e,U=Re(M.__datetimeFormatters)?M.__datetimeFormatters:new Map,ee=Re(M.__numberFormatters)?M.__numberFormatters:new Map,_e=Re(M.__meta)?M.__meta:{};Au++;const H={version:n,cid:Au,locale:s,fallbackLocale:a,messages:o,modifiers:u,pluralRules:c,missing:_,missingWarn:p,fallbackWarn:y,fallbackFormat:E,unresolving:k,postTranslation:S,processor:m,warnHtmlMessage:w,escapeParameter:P,messageCompiler:b,messageResolver:D,localeFallbacker:I,fallbackContext:V,onWarn:t,__meta:_e};return H.datetimeFormats=i,H.numberFormats=l,H.__datetimeFormatters=U,H.__numberFormatters=ee,__INTLIFY_PROD_DEVTOOLS__&&hh(H,n,_e),H}function Ki(e,t,n,s,r){const{missing:a,onWarn:o}=e;if(a!==null){const i=a(e,n,t,r);return q(i)?i:t}else return t}function pr(e,t,n){const s=e;s.__localeChainCache=new Map,e.localeFallbacker(e,n,t)}function So(e){return n=>Fh(n,e)}function Fh(e,t){const n=t.b||t.body;if((n.t||n.type)===1){const s=n,r=s.c||s.cases;return e.plural(r.reduce((a,o)=>[...a,Lu(e,o)],[]))}else return Lu(e,n)}function Lu(e,t){const n=t.s||t.static;if(n)return e.type==="text"?n:e.normalize([n]);{const s=(t.i||t.items).reduce((r,a)=>[...r,Ko(e,a)],[]);return e.normalize(s)}}function Ko(e,t){const n=t.t||t.type;switch(n){case 3:const s=t;return s.v||s.value;case 9:const r=t;return r.v||r.value;case 4:const a=t;return e.interpolate(e.named(a.k||a.key));case 5:const o=t;return e.interpolate(e.list(o.i!=null?o.i:o.index));case 6:const i=t,l=i.m||i.modifier;return e.linked(Ko(e,i.k||i.key),l?Ko(e,l):void 0,e.type);case 7:const u=t;return u.v||u.value;case 8:const c=t;return c.v||c.value;default:throw new Error(`unhandled node type on format message part: ${n}`)}}const Hd=ce.__EXTEND_POINT__,la=ji(Hd),Gn={INVALID_ARGUMENT:Hd,INVALID_DATE_ARGUMENT:la(),INVALID_ISO_DATE_ARGUMENT:la(),NOT_SUPPORT_NON_STRING_MESSAGE:la(),__EXTEND_POINT__:la()};function Es(e){return ar(e,null,void 0)}const Wd=e=>e;let $s=Object.create(null);const Hr=e=>Re(e)&&(e.t===0||e.type===0)&&("b"in e||"body"in e);function Vd(e,t={}){let n=!1;const s=t.onError||C2;return t.onError=r=>{n=!0,s(r)},fr(gt({},K2(e,t)),{detectError:n})}const Dh=(e,t)=>{if(!q(e))throw Es(Gn.NOT_SUPPORT_NON_STRING_MESSAGE);{Te(t.warnHtmlMessage)&&t.warnHtmlMessage;const s=(t.onCacheKey||Wd)(e),r=$s[s];if(r)return r;const{code:a,detectError:o}=Vd(e,t),i=new Function(`return ${a}`)();return o?i:$s[s]=i}};function Oh(e,t){if(__INTLIFY_JIT_COMPILATION__&&!__INTLIFY_DROP_MESSAGE_COMPILER__&&q(e)){Te(t.warnHtmlMessage)&&t.warnHtmlMessage;const s=(t.onCacheKey||Wd)(e),r=$s[s];if(r)return r;const{ast:a,detectError:o}=Vd(e,fr(gt({},t),{location:!1,jit:!0})),i=So(a);return o?i:$s[s]=i}else{const n=e.cacheKey;if(n){const s=$s[n];return s||($s[n]=So(e))}else return So(e)}}const Mu=()=>"",en=e=>Qe(e);function xu(e,...t){const{fallbackFormat:n,postTranslation:s,unresolving:r,messageCompiler:a,fallbackLocale:o,messages:i}=e,[l,u]=qo(...t),c=Te(u.missingWarn)?u.missingWarn:e.missingWarn,_=Te(u.fallbackWarn)?u.fallbackWarn:e.fallbackWarn,p=Te(u.escapeParameter)?u.escapeParameter:e.escapeParameter,y=!!u.resolvedMessage,E=q(u.default)||Te(u.default)?Te(u.default)?a?l:()=>l:u.default:n?a?l:()=>l:"",k=n||E!=="",S=zi(e,u);p&&Ph(u);let[m,w,P]=y?[l,S,i[S]||{}]:jd(e,l,S,o,_,c),b=m,D=l;if(!y&&!(q(b)||Hr(b)||en(b))&&k&&(b=E,D=b),!y&&(!(q(b)||Hr(b)||en(b))||!q(w)))return r?za:l;let I=!1;const V=()=>{I=!0},M=en(b)?b:Gd(e,l,w,b,D,V);if(I)return b;const U=Ah(e,w,P,u),ee=dh(U),_e=Nh(e,M,ee),H=s?s(_e,l):_e;if(__INTLIFY_PROD_DEVTOOLS__){const ie={timestamp:Date.now(),key:q(l)?l:en(b)?b.key:"",locale:w||(en(b)?b.locale:""),format:q(b)?b:en(b)?b.source:"",message:H};ie.meta=vt({},e.__meta,Sh()||{}),_h(ie)}return H}function Ph(e){Ge(e.list)?e.list=e.list.map(t=>q(t)?yu(t):t):Re(e.named)&&Object.keys(e.named).forEach(t=>{q(e.named[t])&&(e.named[t]=yu(e.named[t]))})}function jd(e,t,n,s,r,a){const{messages:o,onWarn:i,messageResolver:l,localeFallbacker:u}=e,c=u(e,s,n);let _={},p,y=null;const E="translate";for(let k=0;ks;return u.locale=n,u.key=t,u}const l=o(s,Ih(e,n,r,s,i,a));return l.locale=n,l.key=t,l.source=s,l}function Nh(e,t,n){return t(n)}function qo(...e){const[t,n,s]=e,r={};if(!q(t)&&!ut(t)&&!en(t)&&!Hr(t))throw Es(Gn.INVALID_ARGUMENT);const a=ut(t)?String(t):(en(t),t);return ut(n)?r.plural=n:q(n)?r.default=n:ge(n)&&!Ga(n)?r.named=n:Ge(n)&&(r.list=n),ut(s)?r.plural=s:q(s)?r.default=s:ge(s)&&vt(r,s),[a,r]}function Ih(e,t,n,s,r,a){return{locale:t,key:n,warnHtmlMessage:r,onError:o=>{throw a&&a(o),o},onCacheKey:o=>h2(t,n,o)}}function Ah(e,t,n,s){const{modifiers:r,pluralRules:a,messageResolver:o,fallbackLocale:i,fallbackWarn:l,missingWarn:u,fallbackContext:c}=e,p={locale:t,modifiers:r,pluralRules:a,messages:y=>{let E=o(n,y);if(E==null&&c){const[,,k]=jd(c,y,t,i,l,u);E=o(k,y)}if(q(E)||Hr(E)){let k=!1;const m=Gd(e,y,t,E,y,()=>{k=!0});return k?Mu:m}else return en(E)?E:Mu}};return e.processor&&(p.processor=e.processor),s.list&&(p.list=s.list),s.named&&(p.named=s.named),ut(s.plural)&&(p.pluralIndex=s.plural),p}function $u(e,...t){const{datetimeFormats:n,unresolving:s,fallbackLocale:r,onWarn:a,localeFallbacker:o}=e,{__datetimeFormatters:i}=e,[l,u,c,_]=Jo(...t),p=Te(c.missingWarn)?c.missingWarn:e.missingWarn;Te(c.fallbackWarn)?c.fallbackWarn:e.fallbackWarn;const y=!!c.part,E=zi(e,c),k=o(e,r,E);if(!q(l)||l==="")return new Intl.DateTimeFormat(E,_).format(u);let S={},m,w=null;const P="datetime format";for(let I=0;I{zd.includes(l)?o[l]=n[l]:a[l]=n[l]}),q(s)?a.locale=s:ge(s)&&(o=s),ge(r)&&(o=r),[a.key||"",i,a,o]}function Ru(e,t,n){const s=e;for(const r in n){const a=`${t}__${r}`;!s.__datetimeFormatters.has(a)||s.__datetimeFormatters.delete(a)}}function Bu(e,...t){const{numberFormats:n,unresolving:s,fallbackLocale:r,onWarn:a,localeFallbacker:o}=e,{__numberFormatters:i}=e,[l,u,c,_]=Xo(...t),p=Te(c.missingWarn)?c.missingWarn:e.missingWarn;Te(c.fallbackWarn)?c.fallbackWarn:e.fallbackWarn;const y=!!c.part,E=zi(e,c),k=o(e,r,E);if(!q(l)||l==="")return new Intl.NumberFormat(E,_).format(u);let S={},m,w=null;const P="number format";for(let I=0;I{Kd.includes(l)?o[l]=n[l]:a[l]=n[l]}),q(s)?a.locale=s:ge(s)&&(o=s),ge(r)&&(o=r),[a.key||"",i,a,o]}function Uu(e,t,n){const s=e;for(const r in n){const a=`${t}__${r}`;!s.__numberFormatters.has(a)||s.__numberFormatters.delete(a)}}q2();/*! * vue-i18n v9.5.0 * (c) 2023 kazuya kawaguchi * Released under the MIT License. */const Lh="9.5.0";function Mh(){typeof __VUE_I18N_FULL_INSTALL__!="boolean"&&(Fn().__VUE_I18N_FULL_INSTALL__=!0),typeof __VUE_I18N_LEGACY_API__!="boolean"&&(Fn().__VUE_I18N_LEGACY_API__=!0),typeof __INTLIFY_JIT_COMPILATION__!="boolean"&&(Fn().__INTLIFY_JIT_COMPILATION__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(Fn().__INTLIFY_DROP_MESSAGE_COMPILER__=!1),typeof __INTLIFY_PROD_DEVTOOLS__!="boolean"&&(Fn().__INTLIFY_PROD_DEVTOOLS__=!1)}const qd=mh.__EXTEND_POINT__,Yn=ji(qd);Yn(),Yn(),Yn(),Yn(),Yn(),Yn(),Yn(),Yn();const Jd=Gn.__EXTEND_POINT__,Ot=ji(Jd),at={UNEXPECTED_RETURN_TYPE:Jd,INVALID_ARGUMENT:Ot(),MUST_BE_CALL_SETUP_TOP:Ot(),NOT_INSTALLED:Ot(),NOT_AVAILABLE_IN_LEGACY_MODE:Ot(),REQUIRED_VALUE:Ot(),INVALID_VALUE:Ot(),CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN:Ot(),NOT_INSTALLED_WITH_PROVIDE:Ot(),UNEXPECTED_ERROR:Ot(),NOT_COMPATIBLE_LEGACY_VUE_I18N:Ot(),BRIDGE_SUPPORT_VUE_2_ONLY:Ot(),MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION:Ot(),NOT_AVAILABLE_COMPOSITION_IN_LEGACY:Ot(),__EXTEND_POINT__:Ot()};function ft(e,...t){return ar(e,null,void 0)}const Zo=Ln("__translateVNode"),Qo=Ln("__datetimeParts"),ei=Ln("__numberParts"),Xd=Ln("__setPluralRules");Ln("__intlifyMeta");const Zd=Ln("__injectWithOption"),ti=Ln("__dispose");function ni(e){if(!Re(e))return e;for(const t in e)if(!!Vi(e,t))if(!t.includes("."))Re(e[t])&&ni(e[t]);else{const n=t.split("."),s=n.length-1;let r=e,a=!1;for(let o=0;o{if("locale"in i&&"resource"in i){const{locale:l,resource:u}=i;l?(o[l]=o[l]||{},Cr(u,o[l])):Cr(u,o)}else q(i)&&Cr(JSON.parse(i),o)}),r==null&&a)for(const i in o)Vi(o,i)&&ni(o[i]);return o}const ua=e=>!Re(e)||Ge(e);function Cr(e,t){if(ua(e)||ua(t))throw ft(at.INVALID_VALUE);for(const n in e)Vi(e,n)&&(ua(e[n])||ua(t[n])?t[n]=e[n]:Cr(e[n],t[n]))}function Qd(e){return e.type}function ef(e,t,n){let s=Re(t.messages)?t.messages:{};"__i18nGlobal"in n&&(s=Ka(e.locale.value,{messages:s,__i18n:n.__i18nGlobal}));const r=Object.keys(s);r.length&&r.forEach(a=>{e.mergeLocaleMessage(a,s[a])});{if(Re(t.datetimeFormats)){const a=Object.keys(t.datetimeFormats);a.length&&a.forEach(o=>{e.mergeDateTimeFormat(o,t.datetimeFormats[o])})}if(Re(t.numberFormats)){const a=Object.keys(t.numberFormats);a.length&&a.forEach(o=>{e.mergeNumberFormat(o,t.numberFormats[o])})}}}function Yu(e){return Ie(qr,null,e,0)}const Hu="__INTLIFY_META__";let Wu=0;function Vu(e){return(t,n,s,r)=>e(n,s,Ht()||void 0,r)}const xh=()=>{const e=Ht();let t=null;return e&&(t=Qd(e)[Hu])?{[Hu]:t}:null};function qi(e={},t){const{__root:n,__injectWithOption:s}=e,r=n===void 0;let a=Te(e.inheritLocale)?e.inheritLocale:!0;const o=le(n&&a?n.locale.value:q(e.locale)?e.locale:Xs),i=le(n&&a?n.fallbackLocale.value:q(e.fallbackLocale)||Ge(e.fallbackLocale)||ge(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:o.value),l=le(Ka(o.value,e)),u=le(ge(e.datetimeFormats)?e.datetimeFormats:{[o.value]:{}}),c=le(ge(e.numberFormats)?e.numberFormats:{[o.value]:{}});let _=n?n.missingWarn:Te(e.missingWarn)||os(e.missingWarn)?e.missingWarn:!0,p=n?n.fallbackWarn:Te(e.fallbackWarn)||os(e.fallbackWarn)?e.fallbackWarn:!0,y=n?n.fallbackRoot:Te(e.fallbackRoot)?e.fallbackRoot:!0,E=!!e.fallbackFormat,k=Qe(e.missing)?e.missing:null,S=Qe(e.missing)?Vu(e.missing):null,m=Qe(e.postTranslation)?e.postTranslation:null,w=n?n.warnHtmlMessage:Te(e.warnHtmlMessage)?e.warnHtmlMessage:!0,P=!!e.escapeParameter;const b=n?n.modifiers:ge(e.modifiers)?e.modifiers:{};let D=e.pluralRules||n&&n.pluralRules,I;I=(()=>{r&&Iu(null);const F={version:Lh,locale:o.value,fallbackLocale:i.value,messages:l.value,modifiers:b,pluralRules:D,missing:S===null?void 0:S,missingWarn:_,fallbackWarn:p,fallbackFormat:E,unresolving:!0,postTranslation:m===null?void 0:m,warnHtmlMessage:w,escapeParameter:P,messageResolver:e.messageResolver,messageCompiler:e.messageCompiler,__meta:{framework:"vue"}};F.datetimeFormats=u.value,F.numberFormats=c.value,F.__datetimeFormatters=ge(I)?I.__datetimeFormatters:void 0,F.__numberFormatters=ge(I)?I.__numberFormatters:void 0;const A=Th(F);return r&&Iu(A),A})(),pr(I,o.value,i.value);function M(){return[o.value,i.value,l.value,u.value,c.value]}const U=be({get:()=>o.value,set:F=>{o.value=F,I.locale=o.value}}),ee=be({get:()=>i.value,set:F=>{i.value=F,I.fallbackLocale=i.value,pr(I,o.value,F)}}),_e=be(()=>l.value),H=be(()=>u.value),ie=be(()=>c.value);function Me(){return Qe(m)?m:null}function qe(F){m=F,I.postTranslation=F}function de(){return k}function we(F){F!==null&&(S=Vu(F)),k=F,I.missing=S}const Ee=(F,A,se,ae,xe,Pe)=>{M();let He;try{__INTLIFY_PROD_DEVTOOLS__&&Nu(xh()),r||(I.fallbackContext=n?Ch():void 0),He=F(I)}finally{__INTLIFY_PROD_DEVTOOLS__&&Nu(null),r||(I.fallbackContext=void 0)}if(ut(He)&&He===za){const[$t,fs]=A();return n&&y?ae(n):xe($t)}else{if(Pe(He))return He;throw ft(at.UNEXPECTED_RETURN_TYPE)}};function mt(...F){return Ee(A=>Reflect.apply(xu,null,[A,...F]),()=>qo(...F),"translate",A=>Reflect.apply(A.t,A,[...F]),A=>A,A=>q(A))}function Dt(...F){const[A,se,ae]=F;if(ae&&!Re(ae))throw ft(at.INVALID_ARGUMENT);return mt(A,se,vt({resolvedMessage:!0},ae||{}))}function yt(...F){return Ee(A=>Reflect.apply($u,null,[A,...F]),()=>Jo(...F),"datetime format",A=>Reflect.apply(A.d,A,[...F]),()=>Du,A=>q(A))}function rt(...F){return Ee(A=>Reflect.apply(Bu,null,[A,...F]),()=>Xo(...F),"number format",A=>Reflect.apply(A.n,A,[...F]),()=>Du,A=>q(A))}function Vt(F){return F.map(A=>q(A)||ut(A)||Te(A)?Yu(String(A)):A)}const cn={normalize:Vt,interpolate:F=>F,type:"vnode"};function Ze(...F){return Ee(A=>{let se;const ae=A;try{ae.processor=cn,se=Reflect.apply(xu,null,[ae,...F])}finally{ae.processor=null}return se},()=>qo(...F),"translate",A=>A[Zo](...F),A=>[Yu(A)],A=>Ge(A))}function L(...F){return Ee(A=>Reflect.apply(Bu,null,[A,...F]),()=>Xo(...F),"number format",A=>A[ei](...F),()=>[],A=>q(A)||Ge(A))}function z(...F){return Ee(A=>Reflect.apply($u,null,[A,...F]),()=>Jo(...F),"datetime format",A=>A[Qo](...F),()=>[],A=>q(A)||Ge(A))}function W(F){D=F,I.pluralRules=D}function Q(F,A){if(!F)return!1;const se=q(A)?A:o.value,ae=f(se);return I.messageResolver(ae,F)!==null}function Se(F){let A=null;const se=xd(I,i.value,o.value);for(let ae=0;ae{a&&(o.value=F,I.locale=F,pr(I,o.value,i.value))}),Zn(n.fallbackLocale,F=>{a&&(i.value=F,I.fallbackLocale=F,pr(I,o.value,i.value))}));const K={id:Wu,locale:U,fallbackLocale:ee,get inheritLocale(){return a},set inheritLocale(F){a=F,F&&n&&(o.value=n.locale.value,i.value=n.fallbackLocale.value,pr(I,o.value,i.value))},get availableLocales(){return Object.keys(l.value).sort()},messages:_e,get modifiers(){return b},get pluralRules(){return D||{}},get isGlobal(){return r},get missingWarn(){return _},set missingWarn(F){_=F,I.missingWarn=_},get fallbackWarn(){return p},set fallbackWarn(F){p=F,I.fallbackWarn=p},get fallbackRoot(){return y},set fallbackRoot(F){y=F},get fallbackFormat(){return E},set fallbackFormat(F){E=F,I.fallbackFormat=E},get warnHtmlMessage(){return w},set warnHtmlMessage(F){w=F,I.warnHtmlMessage=F},get escapeParameter(){return P},set escapeParameter(F){P=F,I.escapeParameter=F},t:mt,getLocaleMessage:f,setLocaleMessage:h,mergeLocaleMessage:g,getPostTranslationHandler:Me,setPostTranslationHandler:qe,getMissingHandler:de,setMissingHandler:we,[Xd]:W};return K.datetimeFormats=H,K.numberFormats=ie,K.rt=Dt,K.te=Q,K.tm=v,K.d=yt,K.n=rt,K.getDateTimeFormat=T,K.setDateTimeFormat=O,K.mergeDateTimeFormat=x,K.getNumberFormat=R,K.setNumberFormat=Y,K.mergeNumberFormat=$,K[Zd]=s,K[Zo]=Ze,K[Qo]=z,K[ei]=L,K}function $h(e){const t=q(e.locale)?e.locale:Xs,n=q(e.fallbackLocale)||Ge(e.fallbackLocale)||ge(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:t,s=Qe(e.missing)?e.missing:void 0,r=Te(e.silentTranslationWarn)||os(e.silentTranslationWarn)?!e.silentTranslationWarn:!0,a=Te(e.silentFallbackWarn)||os(e.silentFallbackWarn)?!e.silentFallbackWarn:!0,o=Te(e.fallbackRoot)?e.fallbackRoot:!0,i=!!e.formatFallbackMessages,l=ge(e.modifiers)?e.modifiers:{},u=e.pluralizationRules,c=Qe(e.postTranslation)?e.postTranslation:void 0,_=q(e.warnHtmlInMessage)?e.warnHtmlInMessage!=="off":!0,p=!!e.escapeParameterHtml,y=Te(e.sync)?e.sync:!0;let E=e.messages;if(ge(e.sharedMessages)){const D=e.sharedMessages;E=Object.keys(D).reduce((V,M)=>{const U=V[M]||(V[M]={});return vt(U,D[M]),V},E||{})}const{__i18n:k,__root:S,__injectWithOption:m}=e,w=e.datetimeFormats,P=e.numberFormats,b=e.flatJson;return{locale:t,fallbackLocale:n,messages:E,flatJson:b,datetimeFormats:w,numberFormats:P,missing:s,missingWarn:r,fallbackWarn:a,fallbackRoot:o,fallbackFormat:i,modifiers:l,pluralRules:u,postTranslation:c,warnHtmlMessage:_,escapeParameter:p,messageResolver:e.messageResolver,inheritLocale:y,__i18n:k,__root:S,__injectWithOption:m}}function si(e={},t){{const n=qi($h(e)),{__extender:s}=e,r={id:n.id,get locale(){return n.locale.value},set locale(a){n.locale.value=a},get fallbackLocale(){return n.fallbackLocale.value},set fallbackLocale(a){n.fallbackLocale.value=a},get messages(){return n.messages.value},get datetimeFormats(){return n.datetimeFormats.value},get numberFormats(){return n.numberFormats.value},get availableLocales(){return n.availableLocales},get formatter(){return{interpolate(){return[]}}},set formatter(a){},get missing(){return n.getMissingHandler()},set missing(a){n.setMissingHandler(a)},get silentTranslationWarn(){return Te(n.missingWarn)?!n.missingWarn:n.missingWarn},set silentTranslationWarn(a){n.missingWarn=Te(a)?!a:a},get silentFallbackWarn(){return Te(n.fallbackWarn)?!n.fallbackWarn:n.fallbackWarn},set silentFallbackWarn(a){n.fallbackWarn=Te(a)?!a:a},get modifiers(){return n.modifiers},get formatFallbackMessages(){return n.fallbackFormat},set formatFallbackMessages(a){n.fallbackFormat=a},get postTranslation(){return n.getPostTranslationHandler()},set postTranslation(a){n.setPostTranslationHandler(a)},get sync(){return n.inheritLocale},set sync(a){n.inheritLocale=a},get warnHtmlInMessage(){return n.warnHtmlMessage?"warn":"off"},set warnHtmlInMessage(a){n.warnHtmlMessage=a!=="off"},get escapeParameterHtml(){return n.escapeParameter},set escapeParameterHtml(a){n.escapeParameter=a},get preserveDirectiveContent(){return!0},set preserveDirectiveContent(a){},get pluralizationRules(){return n.pluralRules||{}},__composer:n,t(...a){const[o,i,l]=a,u={};let c=null,_=null;if(!q(o))throw ft(at.INVALID_ARGUMENT);const p=o;return q(i)?u.locale=i:Ge(i)?c=i:ge(i)&&(_=i),Ge(l)?c=l:ge(l)&&(_=l),Reflect.apply(n.t,n,[p,c||_||{},u])},rt(...a){return Reflect.apply(n.rt,n,[...a])},tc(...a){const[o,i,l]=a,u={plural:1};let c=null,_=null;if(!q(o))throw ft(at.INVALID_ARGUMENT);const p=o;return q(i)?u.locale=i:ut(i)?u.plural=i:Ge(i)?c=i:ge(i)&&(_=i),q(l)?u.locale=l:Ge(l)?c=l:ge(l)&&(_=l),Reflect.apply(n.t,n,[p,c||_||{},u])},te(a,o){return n.te(a,o)},tm(a){return n.tm(a)},getLocaleMessage(a){return n.getLocaleMessage(a)},setLocaleMessage(a,o){n.setLocaleMessage(a,o)},mergeLocaleMessage(a,o){n.mergeLocaleMessage(a,o)},d(...a){return Reflect.apply(n.d,n,[...a])},getDateTimeFormat(a){return n.getDateTimeFormat(a)},setDateTimeFormat(a,o){n.setDateTimeFormat(a,o)},mergeDateTimeFormat(a,o){n.mergeDateTimeFormat(a,o)},n(...a){return Reflect.apply(n.n,n,[...a])},getNumberFormat(a){return n.getNumberFormat(a)},setNumberFormat(a,o){n.setNumberFormat(a,o)},mergeNumberFormat(a,o){n.mergeNumberFormat(a,o)},getChoiceIndex(a,o){return-1}};return r.__extender=s,r}}const Ji={tag:{type:[String,Object]},locale:{type:String},scope:{type:String,validator:e=>e==="parent"||e==="global",default:"parent"},i18n:{type:Object}};function Rh({slots:e},t){return t.length===1&&t[0]==="default"?(e.default?e.default():[]).reduce((s,r)=>[...s,...r.type===me?r.children:[r]],[]):t.reduce((n,s)=>{const r=e[s];return r&&(n[s]=r()),n},{})}function tf(e){return me}const Bh=ue({name:"i18n-t",props:vt({keypath:{type:String,required:!0},plural:{type:[Number,String],validator:e=>ut(e)||!isNaN(e)}},Ji),setup(e,t){const{slots:n,attrs:s}=t,r=e.i18n||Xi({useScope:e.scope,__useComponent:!0});return()=>{const a=Object.keys(n).filter(_=>_!=="_"),o={};e.locale&&(o.locale=e.locale),e.plural!==void 0&&(o.plural=q(e.plural)?+e.plural:e.plural);const i=Rh(t,a),l=r[Zo](e.keypath,i,o),u=vt({},s),c=q(e.tag)||Re(e.tag)?e.tag:tf();return Jr(c,u,l)}}}),ju=Bh;function Uh(e){return Ge(e)&&!q(e[0])}function nf(e,t,n,s){const{slots:r,attrs:a}=t;return()=>{const o={part:!0};let i={};e.locale&&(o.locale=e.locale),q(e.format)?o.key=e.format:Re(e.format)&&(q(e.format.key)&&(o.key=e.format.key),i=Object.keys(e.format).reduce((p,y)=>n.includes(y)?vt({},p,{[y]:e.format[y]}):p,{}));const l=s(e.value,o,i);let u=[o.key];Ge(l)?u=l.map((p,y)=>{const E=r[p.type],k=E?E({[p.type]:p.value,index:y,parts:l}):[p.value];return Uh(k)&&(k[0].key=`${p.type}-${y}`),k}):q(l)&&(u=[l]);const c=vt({},a),_=q(e.tag)||Re(e.tag)?e.tag:tf();return Jr(_,c,u)}}const Yh=ue({name:"i18n-n",props:vt({value:{type:Number,required:!0},format:{type:[String,Object]}},Ji),setup(e,t){const n=e.i18n||Xi({useScope:"parent",__useComponent:!0});return nf(e,t,Kd,(...s)=>n[ei](...s))}}),Gu=Yh,Hh=ue({name:"i18n-d",props:vt({value:{type:[Number,Date],required:!0},format:{type:[String,Object]}},Ji),setup(e,t){const n=e.i18n||Xi({useScope:"parent",__useComponent:!0});return nf(e,t,zd,(...s)=>n[Qo](...s))}}),zu=Hh;function Wh(e,t){const n=e;if(e.mode==="composition")return n.__getInstance(t)||e.global;{const s=n.__getInstance(t);return s!=null?s.__composer:e.global.__composer}}function Vh(e){const t=o=>{const{instance:i,modifiers:l,value:u}=o;if(!i||!i.$)throw ft(at.UNEXPECTED_ERROR);const c=Wh(e,i.$),_=Ku(u);return[Reflect.apply(c.t,c,[...qu(_)]),c]};return{created:(o,i)=>{const[l,u]=t(i);Go&&e.global===u&&(o.__i18nWatcher=Zn(u.locale,()=>{i.instance&&i.instance.$forceUpdate()})),o.__composer=u,o.textContent=l},unmounted:o=>{Go&&o.__i18nWatcher&&(o.__i18nWatcher(),o.__i18nWatcher=void 0,delete o.__i18nWatcher),o.__composer&&(o.__composer=void 0,delete o.__composer)},beforeUpdate:(o,{value:i})=>{if(o.__composer){const l=o.__composer,u=Ku(i);o.textContent=Reflect.apply(l.t,l,[...qu(u)])}},getSSRProps:o=>{const[i]=t(o);return{textContent:i}}}}function Ku(e){if(q(e))return{path:e};if(ge(e)){if(!("path"in e))throw ft(at.REQUIRED_VALUE,"path");return e}else throw ft(at.INVALID_VALUE)}function qu(e){const{path:t,locale:n,args:s,choice:r,plural:a}=e,o={},i=s||{};return q(n)&&(o.locale=n),ut(r)&&(o.plural=r),ut(a)&&(o.plural=a),[t,i,o]}function jh(e,t,...n){const s=ge(n[0])?n[0]:{},r=!!s.useI18nComponentName;(Te(s.globalInstall)?s.globalInstall:!0)&&([r?"i18n":ju.name,"I18nT"].forEach(o=>e.component(o,ju)),[Gu.name,"I18nN"].forEach(o=>e.component(o,Gu)),[zu.name,"I18nD"].forEach(o=>e.component(o,zu))),e.directive("t",Vh(t))}function Gh(e,t,n){return{beforeCreate(){const s=Ht();if(!s)throw ft(at.UNEXPECTED_ERROR);const r=this.$options;if(r.i18n){const a=r.i18n;if(r.__i18n&&(a.__i18n=r.__i18n),a.__root=t,this===this.$root)this.$i18n=Ju(e,a);else{a.__injectWithOption=!0,a.__extender=n.__vueI18nExtend,this.$i18n=si(a);const o=this.$i18n;o.__extender&&(o.__disposer=o.__extender(this.$i18n))}}else if(r.__i18n)if(this===this.$root)this.$i18n=Ju(e,r);else{this.$i18n=si({__i18n:r.__i18n,__injectWithOption:!0,__extender:n.__vueI18nExtend,__root:t});const a=this.$i18n;a.__extender&&(a.__disposer=a.__extender(this.$i18n))}else this.$i18n=e;r.__i18nGlobal&&ef(t,r,r),this.$t=(...a)=>this.$i18n.t(...a),this.$rt=(...a)=>this.$i18n.rt(...a),this.$tc=(...a)=>this.$i18n.tc(...a),this.$te=(a,o)=>this.$i18n.te(a,o),this.$d=(...a)=>this.$i18n.d(...a),this.$n=(...a)=>this.$i18n.n(...a),this.$tm=a=>this.$i18n.tm(a),n.__setInstance(s,this.$i18n)},mounted(){},unmounted(){const s=Ht();if(!s)throw ft(at.UNEXPECTED_ERROR);const r=this.$i18n;delete this.$t,delete this.$rt,delete this.$tc,delete this.$te,delete this.$d,delete this.$n,delete this.$tm,r.__disposer&&(r.__disposer(),delete r.__disposer,delete r.__extender),n.__deleteInstance(s),delete this.$i18n}}}function Ju(e,t){e.locale=t.locale||e.locale,e.fallbackLocale=t.fallbackLocale||e.fallbackLocale,e.missing=t.missing||e.missing,e.silentTranslationWarn=t.silentTranslationWarn||e.silentFallbackWarn,e.silentFallbackWarn=t.silentFallbackWarn||e.silentFallbackWarn,e.formatFallbackMessages=t.formatFallbackMessages||e.formatFallbackMessages,e.postTranslation=t.postTranslation||e.postTranslation,e.warnHtmlInMessage=t.warnHtmlInMessage||e.warnHtmlInMessage,e.escapeParameterHtml=t.escapeParameterHtml||e.escapeParameterHtml,e.sync=t.sync||e.sync,e.__composer[Xd](t.pluralizationRules||e.pluralizationRules);const n=Ka(e.locale,{messages:t.messages,__i18n:t.__i18n});return Object.keys(n).forEach(s=>e.mergeLocaleMessage(s,n[s])),t.datetimeFormats&&Object.keys(t.datetimeFormats).forEach(s=>e.mergeDateTimeFormat(s,t.datetimeFormats[s])),t.numberFormats&&Object.keys(t.numberFormats).forEach(s=>e.mergeNumberFormat(s,t.numberFormats[s])),e}const zh=Ln("global-vue-i18n");function Kh(e={},t){const n=__VUE_I18N_LEGACY_API__&&Te(e.legacy)?e.legacy:__VUE_I18N_LEGACY_API__,s=Te(e.globalInjection)?e.globalInjection:!0,r=__VUE_I18N_LEGACY_API__&&n?!!e.allowComposition:!0,a=new Map,[o,i]=qh(e,n),l=Ln("");function u(p){return a.get(p)||null}function c(p,y){a.set(p,y)}function _(p){a.delete(p)}{let y;const p={get mode(){return __VUE_I18N_LEGACY_API__&&n?"legacy":"composition"},get allowComposition(){return r},install(E,...k){return te(this,null,function*(){if(E.__VUE_I18N_SYMBOL__=l,E.provide(E.__VUE_I18N_SYMBOL__,p),ge(k[0])){const w=k[0];p.__composerExtend=w.__composerExtend,p.__vueI18nExtend=w.__vueI18nExtend}let S=null;!n&&s&&(S=r6(E,p.global)),__VUE_I18N_FULL_INSTALL__&&jh(E,p,...k),__VUE_I18N_LEGACY_API__&&n&&E.mixin(Gh(i,i.__composer,p));const m=E.unmount;E.unmount=()=>{S&&S(),p.dispose(),m()}})},get global(){return i},dispose(){o.stop()},__instances:a,__getInstance:u,__setInstance:c,__deleteInstance:_};return p}}function Xi(e={}){const t=Ht();if(t==null)throw ft(at.MUST_BE_CALL_SETUP_TOP);if(!t.isCE&&t.appContext.app!=null&&!t.appContext.app.__VUE_I18N_SYMBOL__)throw ft(at.NOT_INSTALLED);const n=Jh(t),s=Zh(n),r=Qd(t),a=Xh(e,r);if(__VUE_I18N_LEGACY_API__&&n.mode==="legacy"&&!e.__useComponent){if(!n.allowComposition)throw ft(at.NOT_AVAILABLE_IN_LEGACY_MODE);return n6(t,a,s,e)}if(a==="global")return ef(s,e,r),s;if(a==="parent"){let l=Qh(n,t,e.__useComponent);return l==null&&(l=s),l}const o=n;let i=o.__getInstance(t);if(i==null){const l=vt({},e);"__i18n"in r&&(l.__i18n=r.__i18n),s&&(l.__root=s),i=qi(l),o.__composerExtend&&(i[ti]=o.__composerExtend(i)),t6(o,t,i),o.__setInstance(t,i)}return i}function qh(e,t,n){const s=wi();{const r=__VUE_I18N_LEGACY_API__&&t?s.run(()=>si(e)):s.run(()=>qi(e));if(r==null)throw ft(at.UNEXPECTED_ERROR);return[s,r]}}function Jh(e){{const t=ve(e.isCE?zh:e.appContext.app.__VUE_I18N_SYMBOL__);if(!t)throw ft(e.isCE?at.NOT_INSTALLED_WITH_PROVIDE:at.UNEXPECTED_ERROR);return t}}function Xh(e,t){return Ga(e)?"__i18n"in t?"local":"global":e.useScope?e.useScope:"local"}function Zh(e){return e.mode==="composition"?e.global:e.global.__composer}function Qh(e,t,n=!1){let s=null;const r=t.root;let a=e6(t,n);for(;a!=null;){const o=e;if(e.mode==="composition")s=o.__getInstance(a);else if(__VUE_I18N_LEGACY_API__){const i=o.__getInstance(a);i!=null&&(s=i.__composer,n&&s&&!s[Zd]&&(s=null))}if(s!=null||r===a)break;a=a.parent}return s}function e6(e,t=!1){return e==null?null:t&&e.vnode.ctx||e.parent}function t6(e,t,n){is(()=>{},t),rr(()=>{const s=n;e.__deleteInstance(t);const r=s[ti];r&&(r(),delete s[ti])},t)}function n6(e,t,n,s={}){const r=t==="local",a=Kc(null);if(r&&e.proxy&&!(e.proxy.$options.i18n||e.proxy.$options.__i18n))throw ft(at.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION);const o=Te(s.inheritLocale)?s.inheritLocale:!q(s.locale),i=le(!r||o?n.locale.value:q(s.locale)?s.locale:Xs),l=le(!r||o?n.fallbackLocale.value:q(s.fallbackLocale)||Ge(s.fallbackLocale)||ge(s.fallbackLocale)||s.fallbackLocale===!1?s.fallbackLocale:i.value),u=le(Ka(i.value,s)),c=le(ge(s.datetimeFormats)?s.datetimeFormats:{[i.value]:{}}),_=le(ge(s.numberFormats)?s.numberFormats:{[i.value]:{}}),p=r?n.missingWarn:Te(s.missingWarn)||os(s.missingWarn)?s.missingWarn:!0,y=r?n.fallbackWarn:Te(s.fallbackWarn)||os(s.fallbackWarn)?s.fallbackWarn:!0,E=r?n.fallbackRoot:Te(s.fallbackRoot)?s.fallbackRoot:!0,k=!!s.fallbackFormat,S=Qe(s.missing)?s.missing:null,m=Qe(s.postTranslation)?s.postTranslation:null,w=r?n.warnHtmlMessage:Te(s.warnHtmlMessage)?s.warnHtmlMessage:!0,P=!!s.escapeParameter,b=r?n.modifiers:ge(s.modifiers)?s.modifiers:{},D=s.pluralRules||r&&n.pluralRules;function I(){return[i.value,l.value,u.value,c.value,_.value]}const V=be({get:()=>a.value?a.value.locale.value:i.value,set:h=>{a.value&&(a.value.locale.value=h),i.value=h}}),M=be({get:()=>a.value?a.value.fallbackLocale.value:l.value,set:h=>{a.value&&(a.value.fallbackLocale.value=h),l.value=h}}),U=be(()=>a.value?a.value.messages.value:u.value),ee=be(()=>c.value),_e=be(()=>_.value);function H(){return a.value?a.value.getPostTranslationHandler():m}function ie(h){a.value&&a.value.setPostTranslationHandler(h)}function Me(){return a.value?a.value.getMissingHandler():S}function qe(h){a.value&&a.value.setMissingHandler(h)}function de(h){return I(),h()}function we(...h){return a.value?de(()=>Reflect.apply(a.value.t,null,[...h])):de(()=>"")}function Ee(...h){return a.value?Reflect.apply(a.value.rt,null,[...h]):""}function mt(...h){return a.value?de(()=>Reflect.apply(a.value.d,null,[...h])):de(()=>"")}function Dt(...h){return a.value?de(()=>Reflect.apply(a.value.n,null,[...h])):de(()=>"")}function yt(h){return a.value?a.value.tm(h):{}}function rt(h,g){return a.value?a.value.te(h,g):!1}function Vt(h){return a.value?a.value.getLocaleMessage(h):{}}function jt(h,g){a.value&&(a.value.setLocaleMessage(h,g),u.value[h]=g)}function cn(h,g){a.value&&a.value.mergeLocaleMessage(h,g)}function Ze(h){return a.value?a.value.getDateTimeFormat(h):{}}function L(h,g){a.value&&(a.value.setDateTimeFormat(h,g),c.value[h]=g)}function z(h,g){a.value&&a.value.mergeDateTimeFormat(h,g)}function W(h){return a.value?a.value.getNumberFormat(h):{}}function Q(h,g){a.value&&(a.value.setNumberFormat(h,g),_.value[h]=g)}function Se(h,g){a.value&&a.value.mergeNumberFormat(h,g)}const v={get id(){return a.value?a.value.id:-1},locale:V,fallbackLocale:M,messages:U,datetimeFormats:ee,numberFormats:_e,get inheritLocale(){return a.value?a.value.inheritLocale:o},set inheritLocale(h){a.value&&(a.value.inheritLocale=h)},get availableLocales(){return a.value?a.value.availableLocales:Object.keys(u.value)},get modifiers(){return a.value?a.value.modifiers:b},get pluralRules(){return a.value?a.value.pluralRules:D},get isGlobal(){return a.value?a.value.isGlobal:!1},get missingWarn(){return a.value?a.value.missingWarn:p},set missingWarn(h){a.value&&(a.value.missingWarn=h)},get fallbackWarn(){return a.value?a.value.fallbackWarn:y},set fallbackWarn(h){a.value&&(a.value.missingWarn=h)},get fallbackRoot(){return a.value?a.value.fallbackRoot:E},set fallbackRoot(h){a.value&&(a.value.fallbackRoot=h)},get fallbackFormat(){return a.value?a.value.fallbackFormat:k},set fallbackFormat(h){a.value&&(a.value.fallbackFormat=h)},get warnHtmlMessage(){return a.value?a.value.warnHtmlMessage:w},set warnHtmlMessage(h){a.value&&(a.value.warnHtmlMessage=h)},get escapeParameter(){return a.value?a.value.escapeParameter:P},set escapeParameter(h){a.value&&(a.value.escapeParameter=h)},t:we,getPostTranslationHandler:H,setPostTranslationHandler:ie,getMissingHandler:Me,setMissingHandler:qe,rt:Ee,d:mt,n:Dt,tm:yt,te:rt,getLocaleMessage:Vt,setLocaleMessage:jt,mergeLocaleMessage:cn,getDateTimeFormat:Ze,setDateTimeFormat:L,mergeDateTimeFormat:z,getNumberFormat:W,setNumberFormat:Q,mergeNumberFormat:Se};function f(h){h.locale.value=i.value,h.fallbackLocale.value=l.value,Object.keys(u.value).forEach(g=>{h.mergeLocaleMessage(g,u.value[g])}),Object.keys(c.value).forEach(g=>{h.mergeDateTimeFormat(g,c.value[g])}),Object.keys(_.value).forEach(g=>{h.mergeNumberFormat(g,_.value[g])}),h.escapeParameter=P,h.fallbackFormat=k,h.fallbackRoot=E,h.fallbackWarn=y,h.missingWarn=p,h.warnHtmlMessage=w}return cd(()=>{if(e.proxy==null||e.proxy.$i18n==null)throw ft(at.NOT_AVAILABLE_COMPOSITION_IN_LEGACY);const h=a.value=e.proxy.$i18n.__composer;t==="global"?(i.value=h.locale.value,l.value=h.fallbackLocale.value,u.value=h.messages.value,c.value=h.datetimeFormats.value,_.value=h.numberFormats.value):r&&f(h)}),v}const s6=["locale","fallbackLocale","availableLocales"],Xu=["t","rt","d","n","tm","te"];function r6(e,t){const n=Object.create(null);return s6.forEach(r=>{const a=Object.getOwnPropertyDescriptor(t,r);if(!a)throw ft(at.UNEXPECTED_ERROR);const o=je(a.value)?{get(){return a.value.value},set(i){a.value.value=i}}:{get(){return a.get&&a.get()}};Object.defineProperty(n,r,o)}),e.config.globalProperties.$i18n=n,Xu.forEach(r=>{const a=Object.getOwnPropertyDescriptor(t,r);if(!a||!a.value)throw ft(at.UNEXPECTED_ERROR);Object.defineProperty(e.config.globalProperties,`$${r}`,a)}),()=>{delete e.config.globalProperties.$i18n,Xu.forEach(r=>{delete e.config.globalProperties[`$${r}`]})}}Mh();__INTLIFY_JIT_COMPILATION__?Pu(Oh):Pu(Dh);kh(sh);wh(xd);if(__INTLIFY_PROD_DEVTOOLS__){const e=Fn();e.__INTLIFY__=!0,fh(e.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__)}const a6=Object.assign({en:c2,"zh-CN":d2,"zh-TW":f2});function o6(){const e=localStorage.getItem("i18n");return e?e==="auto"?navigator.language:e:(localStorage.setItem("i18n","auto"),navigator.language)}const i6=Kh({locale:o6(),fallbackLocale:"zh-CN",messages:a6}),l6=ue({__name:"App",setup(e){return(t,n)=>{const s=ht("router-view");return C(),Fe(s)}}});var u6=!1;/*! * pinia v2.1.6 * (c) 2023 Eduardo San Martin Morote * @license MIT */let sf;const qa=e=>sf=e,rf=Symbol();function ri(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var Tr;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(Tr||(Tr={}));function af(){const e=wi(!0),t=e.run(()=>le({}));let n=[],s=[];const r=Ra({install(a){qa(r),r._a=a,a.provide(rf,r),a.config.globalProperties.$pinia=r,s.forEach(o=>n.push(o)),s=[]},use(a){return!this._a&&!u6?s.push(a):n.push(a),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return r}const of=()=>{};function Zu(e,t,n,s=of){e.push(t);const r=()=>{const a=e.indexOf(t);a>-1&&(e.splice(a,1),s())};return!n&&Ic()&&z1(r),r}function Ps(e,...t){e.slice().forEach(n=>{n(...t)})}const c6=e=>e();function ai(e,t){e instanceof Map&&t instanceof Map&&t.forEach((n,s)=>e.set(s,n)),e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const n in t){if(!t.hasOwnProperty(n))continue;const s=t[n],r=e[n];ri(r)&&ri(s)&&e.hasOwnProperty(n)&&!je(s)&&!Jn(s)?e[n]=ai(r,s):e[n]=s}return e}const d6=Symbol();function f6(e){return!ri(e)||!e.hasOwnProperty(d6)}const{assign:Wn}=Object;function h6(e){return!!(je(e)&&e.effect)}function _6(e,t,n,s){const{state:r,actions:a,getters:o}=t,i=n.state.value[e];let l;function u(){i||(n.state.value[e]=r?r():{});const c=w0(n.state.value[e]);return Wn(c,a,Object.keys(o||{}).reduce((_,p)=>(_[p]=Ra(be(()=>{qa(n);const y=n._s.get(e);return o[p].call(y,y)})),_),{}))}return l=lf(e,u,t,n,s,!0),l}function lf(e,t,n={},s,r,a){let o;const i=Wn({actions:{}},n),l={deep:!0};let u,c,_=[],p=[],y;const E=s.state.value[e];!a&&!E&&(s.state.value[e]={}),le({});let k;function S(M){let U;u=c=!1,typeof M=="function"?(M(s.state.value[e]),U={type:Tr.patchFunction,storeId:e,events:y}):(ai(s.state.value[e],M),U={type:Tr.patchObject,payload:M,storeId:e,events:y});const ee=k=Symbol();Ii().then(()=>{k===ee&&(u=!0)}),c=!0,Ps(_,U,s.state.value[e])}const m=a?function(){const{state:U}=n,ee=U?U():{};this.$patch(_e=>{Wn(_e,ee)})}:of;function w(){o.stop(),_=[],p=[],s._s.delete(e)}function P(M,U){return function(){qa(s);const ee=Array.from(arguments),_e=[],H=[];function ie(de){_e.push(de)}function Me(de){H.push(de)}Ps(p,{args:ee,name:M,store:D,after:ie,onError:Me});let qe;try{qe=U.apply(this&&this.$id===e?this:D,ee)}catch(de){throw Ps(H,de),de}return qe instanceof Promise?qe.then(de=>(Ps(_e,de),de)).catch(de=>(Ps(H,de),Promise.reject(de))):(Ps(_e,qe),qe)}}const b={_p:s,$id:e,$onAction:Zu.bind(null,p),$patch:S,$reset:m,$subscribe(M,U={}){const ee=Zu(_,M,U.detached,()=>_e()),_e=o.run(()=>Zn(()=>s.state.value[e],H=>{(U.flush==="sync"?c:u)&&M({storeId:e,type:Tr.direct,events:y},H)},Wn({},l,U)));return ee},$dispose:w},D=wt(b);s._s.set(e,D);const I=s._a&&s._a.runWithContext||c6,V=s._e.run(()=>(o=wi(),I(()=>o.run(t))));for(const M in V){const U=V[M];if(je(U)&&!h6(U)||Jn(U))a||(E&&f6(U)&&(je(U)?U.value=E[M]:ai(U,E[M])),s.state.value[e][M]=U);else if(typeof U=="function"){const ee=P(M,U);V[M]=ee,i.actions[M]=U}}return Wn(D,V),Wn(De(D),V),Object.defineProperty(D,"$state",{get:()=>s.state.value[e],set:M=>{S(U=>{Wn(U,M)})}}),s._p.forEach(M=>{Wn(D,o.run(()=>M({store:D,app:s._a,pinia:s,options:i})))}),E&&a&&n.hydrate&&n.hydrate(D.$state,E),u=!0,c=!0,D}function or(e,t,n){let s,r;const a=typeof t=="function";typeof e=="string"?(s=e,r=a?n:t):(r=e,s=e.id);function o(i,l){const u=f3();return i=i||(u?ve(rf,null):null),i&&qa(i),i=sf,i._s.has(s)||(a?lf(s,t,r,i):_6(s,r,i)),i._s.get(s)}return o.$id=s,o}const p6=af,uf=or("popups",{state:()=>({index:0,values:new Map}),actions:{addValue(e){const t=this.values.get(e);return t?(this.index=t.config.globalProperties.key,!0):!1},setValue(e,t){this.values.set(e,t)},delValue(e){}}});var he=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n};const cf=e=>(nt("data-v-5bcbebe8"),e=e(),st(),e),m6={key:0,class:"bg"},g6={class:"title"},v6=cf(()=>d("div",{class:"auto"},null,-1)),y6={class:"btns"},b6=cf(()=>d("svg",{class:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg",width:"128",height:"128"},[d("path",{d:"M557.312 513.248l265.28-263.904c12.544-12.48 12.608-32.704 0.128-45.248-12.512-12.576-32.704-12.608-45.248-0.128l-265.344 263.936-263.04-263.84C236.64 191.584 216.384 191.52 203.84 204 191.328 216.48 191.296 236.736 203.776 249.28l262.976 263.776L201.6 776.8c-12.544 12.48-12.608 32.704-0.128 45.248 6.24 6.272 14.464 9.44 22.688 9.44 8.16 0 16.32-3.104 22.56-9.312l265.216-263.808 265.44 266.24c6.24 6.272 14.432 9.408 22.656 9.408 8.192 0 16.352-3.136 22.592-9.344 12.512-12.48 12.544-32.704 0.064-45.248L557.312 513.248z"})],-1)),E6=[b6],k6=ue({__name:"app",props:{title:{type:String},transparent:{type:Boolean,default:!0},bg:{type:Boolean,default:!1},full:{type:Boolean,default:!1}},setup(e){const t=e,n=le(null),s=()=>{u&&u.appContext.config.globalProperties.$close()},r=wt({left:"",top:""}),a=y=>{const E=n.value;if(E==null||o.value)return;let k=y.clientX-E.offsetLeft,S=y.clientY-E.offsetTop,m=document.body.clientWidth-E.offsetWidth,w=document.body.clientHeight-E.offsetHeight;document.onmousemove=P=>{let b=P.clientX-k,D=P.clientY-S;D<0&&(D=0),b<0&&(b=0),b>m&&(b=m),D>w&&(D=w),r.left=b+"px",r.top=D+"px"},document.onmouseup=()=>{document.onmousemove=null,document.onmouseup=null}},o=le(t.full),i=()=>{o.value=!o.value},l=uf(),u=Ht(),c=be(()=>(u==null?void 0:u.appContext.config.globalProperties.key)||0),_=be(()=>l.index==c.value),p=()=>{l.index=c.value};return(y,E)=>(C(),N(me,null,[e.bg?(C(),N("div",m6)):pe("",!0),d("div",{class:_t(["themedog-popups",{full:o.value,index:_.value}]),style:Ts(o.value?{}:r),ref_key:"popus",ref:n},[d("div",{class:"themedog-popups_header",onMousedown:a,onClick:p,onDblclick:i},[d("span",g6,X(e.title),1),v6,d("div",y6,[d("button",{class:"btn-close",onClick:E[0]||(E[0]=k=>s())},E6)])],32),d("div",{class:_t(["themedog-popups_body",{transparent:e.transparent}])},[Yt(y.$slots,"default",{},void 0,!0)],2)],6)],64))}});var w6=he(k6,[["__scopeId","data-v-5bcbebe8"]]);const S6={key:0,class:"popups-container setup0"},C6={class:"popups-container_f"},T6={class:"popups-container_r"},F6={key:1,class:"popups-container setup1"},D6={key:2,class:"popups-container setup2"},O6=ue({__name:"app-container",props:{title:String,bg:Boolean,transparent:Boolean,full:Boolean,type:{type:Number,default:0}},setup(e){return(t,n)=>{const s=ht("popups");return C(),Fe(s,{title:e.title,bg:e.bg,transparent:e.transparent,full:e.full},{default:Ue(()=>[e.type==0?(C(),N("div",S6,[d("div",C6,[Yt(t.$slots,"left",{},void 0,!0)]),d("div",T6,[Yt(t.$slots,"right",{},void 0,!0)])])):e.type==1?(C(),N("div",F6,[Yt(t.$slots,"default",{},void 0,!0)])):e.type==2?(C(),N("div",D6,[Yt(t.$slots,"default",{},void 0,!0)])):pe("",!0)]),_:3},8,["title","bg","transparent","full"])}}});var P6=he(O6,[["__scopeId","data-v-e3f9f146"]]);const N6={id:"action"},I6={key:0,class:"bg"},A6=ue({__name:"app-action",props:{bg:{type:Boolean,default:!0}},setup(e){return(t,n)=>(C(),N("div",N6,[e.bg?(C(),N("div",I6)):pe("",!0),Yt(t.$slots,"default",{},void 0,!0)]))}});var Qu=he(A6,[["__scopeId","data-v-1fde8680"]]),L6={install(e){e.component("popups",w6),e.component("popups-container",P6),e.component("app-action",Qu),e.component("action-component",Qu)}};const M6=["onClick"];ue({__name:"index",props:{setup:{type:String,default:"pppoe"}},setup(e){const n=le(e.setup),s=[{name:"device-router",title:"\u8BBE\u5907\u8DEF\u7531",f:()=>{}},{name:"network-monitoring",title:"\u5E26\u5BBD\u76D1\u63A7",f:()=>{}},{name:"network-speed",title:"\u5185\u7F51\u6D4B\u901F",f:()=>{}},{name:"opkg",title:"\u8F6F\u4EF6\u6E90\u914D\u7F6E",f:()=>{}},{name:"sandbox",title:"\u6C99\u7BB1\u529F\u80FD",f:()=>{}},{name:"system-monitor",title:"\u7CFB\u7EDF\u76D1\u63A7",f:()=>{}},{name:"backup-upgrade",title:"\u5907\u4EFD\u5347\u7EA7",f:()=>{}},{name:"plugin-upgrade",title:"\u63D2\u4EF6\u5907\u4EFD",f:()=>{}},{name:"os-upgrade",title:"\u56FA\u4EF6\u66F4\u65B0",f:()=>{}}];return(r,a)=>{const o=ht("popups-container");return C(),Fe(o,{title:"\u529F\u80FD\u7BA1\u7406",transparent:""},{left:Ue(()=>[(C(),N(me,null,ct(s,i=>d("li",{class:_t(["network-menu_item",{on:n.value==i.name}]),onClick:l=>n.value=i.name},[d("span",null,X(i.title),1)],10,M6)),64))]),right:Ue(()=>[]),_:1})}}});const x6=["src"],$6=ue({__name:"index",props:{src:{type:String,required:!0}},setup(e){const t=le(),n=s=>{if(t.value){const r=t.value;if(r.contentWindow){let a=document.createElement("style");a.setAttribute("rel","stylesheet"),a.innerHTML=".main-left{display: none;}.main-right{width: 100%!important;transition:none;}",r.contentWindow.document.head.appendChild(a)}}};return(s,r)=>(C(),N("iframe",{class:"themedog-iframe_container",allowfullscreen:"true",mozallowfullscreen:"mozallowfullscreen",msallowfullscreen:"msallowfullscreen",oallowfullscreen:"oallowfullscreen",webkitallowfullscreen:"webkitallowfullscreen",src:e.src,onLoad:n,ref_key:"el",ref:t},null,40,x6))}});var R6=he($6,[["__scopeId","data-v-177d395f"]]);const B6=ue({__name:"index",props:{title:{type:String,default:""},src:{type:String,required:!0},full:{type:Boolean,default:!1}},setup(e){return(t,n)=>{const s=ht("popups-container");return C(),Fe(s,{transparent:!0,title:e.title,type:2,full:e.full},{default:Ue(()=>[Ie(R6,{src:e.src},null,8,["src"])]),_:1},8,["title","full"])}}});const Ja=e=>(nt("data-v-c694747c"),e=e(),st(),e),U6={key:0,class:"locking"},Y6={key:0,class:"loading icon"},H6=Ja(()=>d("svg",{t:"1631799919469",class:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"3453",width:"128",height:"128"},[d("path",{d:"M522.695111 1.991111c-26.339556 0.170667-47.416889 21.475556-47.672889 48.753778-0.284444 26.453333-0.056889 52.963556-0.056889 79.445333 0 27.249778-0.369778 54.528 0.113778 81.777778 0.483556 27.050667 22.016 47.132444 49.351111 46.904889a47.786667 47.786667 0 0 0 47.729778-47.445333c0.284444-53.76 0.284444-107.52-0.028444-161.251556-0.170667-27.676444-21.902222-48.355556-49.436445-48.184889m-195.896889 88.092445c-8.334222-14.222222-21.646222-21.276444-38.314666-21.333334-35.128889 0-56.576 36.949333-38.968889 68.152889a11616.995556 11616.995556 0 0 0 78.961777 137.614222 44.942222 44.942222 0 0 0 61.838223 16.896c21.304889-12.202667 29.667556-38.968889 17.379555-60.871111-26.453333-47.104-53.560889-93.866667-80.896-140.458666m-228.693333 234.524444c44.316444 25.799111 88.746667 51.342222 133.176889 76.970667 6.712889 3.896889 13.681778 6.912 21.703111 6.428444 20.138667 0.142222 35.953778-11.946667 41.301333-31.573333 5.006222-18.261333-2.673778-36.721778-20.224-46.990222-44.629333-26.026667-89.372444-51.882667-134.115555-77.710223-22.528-12.999111-47.815111-7.025778-59.818667 13.909334-12.231111 21.248-4.977778 45.624889 17.948444 58.965333m34.161778 235.975111c26.396444 0 52.821333 0.199111 79.217778-0.085333 23.409778-0.256 39.139556-16.412444 38.798222-39.139556-0.341333-21.617778-16.924444-37.347556-39.594666-37.376-51.655111-0.056889-103.310222-0.056889-154.965334 0.028445-24.177778 0.056889-40.704 15.985778-40.561778 38.684444 0.142222 22.186667 16.583111 37.745778 40.192 37.859556 25.656889 0.142222 51.285333 0.028444 76.913778 0m151.722667 100.238222a34.247111 34.247111 0 0 0-46.876445-12.942222 13764.778667 13764.778667 0 0 0-139.008 80.583111c-11.093333 6.485333-16.327111 16.867556-16.497777 25.372444 0.085333 30.549333 27.249778 47.957333 50.403555 35.072 47.160889-26.197333 93.724444-53.475556 140.145778-80.924444 17.180444-10.154667 21.504-30.378667 11.832889-47.160889m91.875555 101.660444c-14.250667-4.067556-27.619556 1.422222-35.84 15.644445a24375.466667 24375.466667 0 0 0-77.312 134.485333c-10.012444 17.550222-5.859556 35.669333 9.784889 45.027556 16.014222 9.557333 34.247111 4.039111 44.714667-13.994667 25.543111-44.088889 50.915556-88.263111 76.373333-132.352 3.299556-5.745778 5.688889-11.690667 5.745778-14.933333 0-17.834667-9.272889-29.866667-23.466667-33.877334m147.456 44.288c-16.384 0.085333-27.306667 11.918222-27.448888 30.151111-0.142222 25.372444-0.028444 50.716444-0.028445 76.060445h-0.085333c0 26.112-0.113778 52.252444 0.056889 78.364444 0.113778 18.261333 11.064889 30.065778 27.448889 30.208 16.952889 0.142222 28.046222-11.832889 28.103111-30.748444 0.113778-51.086222 0.142222-102.172444 0.056889-153.258667 0-18.773333-11.207111-30.862222-28.103112-30.776889m177.208889-26.112c-7.509333-12.8-21.902222-16.014222-33.792-8.874666a23.722667 23.722667 0 0 0-8.533333 32.995555c26.282667 46.279111 52.906667 92.330667 79.644444 138.353778 4.494222 7.765333 11.633778 11.946667 20.906667 11.804444 18.545778-0.142222 30.520889-19.342222 21.219556-35.868444-26.026667-46.392889-52.650667-92.444444-79.473778-138.410667m239.957333-41.187555c-45.283556-26.254222-90.595556-52.48-135.964444-78.648889-4.693333-2.702222-9.728-4.323556-15.36-2.958222-9.102222 2.247111-14.933333 8.049778-16.497778 17.095111-1.877333 10.894222 3.84 18.204444 12.885333 23.438222 29.809778 17.180444 59.562667 34.417778 89.344 51.598222 15.217778 8.789333 30.236444 17.976889 45.738667 26.225778 14.677333 7.793778 31.061333-2.048 31.061333-18.033778-0.056889-8.448-4.096-14.592-11.207111-18.716444m48.867556-234.638222c-24.888889-0.085333-49.749333 0-74.609778 0v-0.085334c-25.258667 0-50.517333-0.056889-75.776 0.028445-13.425778 0.056889-20.963556 6.343111-21.162667 17.294222-0.199111 11.150222 7.082667 17.521778 20.679111 17.550222 50.488889 0.113778 100.977778 0.142222 151.495112 0.085333 13.368889 0 21.191111-6.485333 21.390222-17.152 0.227556-10.808889-8.106667-17.664-22.016-17.720888m-187.960889-127.146667c45.084444-26.026667 90.140444-52.110222 135.168-78.222222 4.864-2.844444 8.248889-6.855111 8.135111-12.942223-0.142222-11.036444-11.207111-17.436444-21.504-11.548444-45.511111 26.055111-90.851556 52.394667-136.135111 78.819556-7.68 4.494222-10.524444 11.52-5.575111 19.569777 4.835556 7.850667 12.088889 8.817778 19.911111 4.323556m-122.311111-115.114667c5.205333-0.256 8.220444-3.413333 10.609778-7.651555 4.920889-8.647111 10.040889-17.208889 14.990222-25.827556 20.48-35.555556 40.931556-71.025778 61.297778-106.609778 5.091556-8.874667 3.015111-16.668444-4.778667-18.517333-7.68-1.848889-10.894222 3.697778-14.051556 9.159111l-68.778666 119.495111c-2.844444 4.977778-6.030222 9.870222-8.305778 15.104-3.128889 7.196444 1.678222 14.648889 9.045333 14.848","p-id":"3454"})],-1)),W6=[H6],V6={key:1,class:"success icon"},j6=Ja(()=>d("svg",{t:"1632451272305",class:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"2204",width:"128",height:"128"},[d("path",{d:"M1001.305115 275.874141 431.461709 845.718571c-28.221762 28.221762-73.977875 28.221762-102.20066 0L22.661116 539.116591c-28.222785-28.221762-28.222785-73.979922 0-102.20066 28.221762-28.221762 73.977875-28.221762 102.20066 0l255.500115 255.502162 518.743588-518.743588c28.221762-28.221762 73.977875-28.221762 102.199637 0C1029.5279 201.89422 1029.5279 247.65238 1001.305115 275.874141z","p-id":"2205"})],-1)),G6=[j6],z6={key:2,class:"error icon"},K6=Ja(()=>d("svg",{t:"1632451325789",class:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"2204",width:"128",height:"128"},[d("path",{d:"M823.04 840.32 524.16 540.16l296.32-294.4c12.8-12.8 12.8-33.28 0-45.44-12.8-12.8-33.28-12.8-46.08 0L478.08 494.08 184.96 200.32c-12.8-12.8-33.28-12.8-45.44 0s-12.8 33.28 0 45.44l292.48 293.76-302.72 300.8c-12.8 12.8-12.8 33.28 0 45.44 12.8 12.8 33.28 12.8 46.08 0l302.72-300.16 299.52 300.16c12.8 12.8 33.28 12.8 45.44 0C835.2 873.6 835.2 853.12 823.04 840.32z","p-id":"2205"})],-1)),q6=[K6],J6={key:3,class:"warning icon"},X6=Ja(()=>d("svg",{t:"1632451401172",class:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"1638",width:"128",height:"128"},[d("path",{d:"M512 1021.45211835a60.32985613 60.32985613 0 1 1 60.32985613-60.32985611 60.32985613 60.32985613 0 0 1-60.32985613 60.32985611z m86.85823451-924.97400238L572.32985613 719.80283775a60.32985613 60.32985613 0 0 1-120.65971226 0l-26.52837838-623.32472178c-0.16758294-2.22885301-0.28489098-4.49122263-0.284891-6.78710881a87.14312551 87.14312551 0 0 1 174.28625102 0c0 2.2958862-0.11730806 4.5582558-0.284891 6.78710881z","p-id":"1639"})],-1)),Z6=[X6],Q6=["onClick"],e4=ue({__name:"app",props:{type:String,message:String,Close:Function,locking:Boolean},setup(e){const t=e,n=le(!1);is(()=>{n.value=!0});const s=()=>{(t==null?void 0:t.type)!="loading"&&(n.value=!1,t.Close&&t.Close())};return(r,a)=>(C(),N(me,null,[e.locking?(C(),N("div",U6)):pe("",!0),n.value?(C(),N("div",{key:1,class:"toast",onClick:a[0]||(a[0]=o=>s())},[e.type=="loading"?(C(),N("div",Y6,W6)):e.type=="success"?(C(),N("div",V6,G6)):e.type=="error"?(C(),N("div",z6,q6)):e.type=="warning"?(C(),N("div",J6,Z6)):pe("",!0),d("div",{class:"message",onClick:ls(()=>{},["stop"])},X(e.message),9,Q6)])):pe("",!0)],64))}});var t4=he(e4,[["__scopeId","data-v-c694747c"]]);const Fr=new Map,Fs=e=>{const t=Wi(t4,fr(gt({},e),{Close:()=>{s()}})),n=document.createElement("div");document.body.append(n),t.mount(n);const s=()=>{n.remove(),t.unmount(),Fr.get(t._uid)&&Fr.delete(t._uid)};return e.type=="loading"&&Fr.set(t._uid,{Close:s}),(e==null?void 0:e.duration)==0||((e==null?void 0:e.duration)>0?setTimeout(()=>{s()},e==null?void 0:e.duration):setTimeout(()=>{s()},3e3)),{Close:s}},fe=e=>Fs(e);fe.Loading=(e,t)=>Fs({type:"loading",message:e||"\u52A0\u8F7D\u4E2D...",duration:0,locking:t||!1});fe.Success=e=>Fs({type:"success",message:e});fe.Error=e=>Fs({type:"error",message:e});fe.Warning=e=>Fs({type:"warning",message:e});fe.Message=e=>Fs({message:e});fe.Message=e=>Fs({message:e});fe.Clear=()=>{Fr.forEach((e,t)=>{e.Close(),Fr.delete(t)})};const At=(e,t)=>te(void 0,null,function*(){return new Promise((s,r)=>te(void 0,null,function*(){try{const a=yield fetch(e,gt({},t)),o=a;o.status===0||o.status===200?(o.data=yield a.json(),s(o)):r(o)}catch(a){r(a)}}))}),G=(e,t)=>(e=`/cgi-bin/luci/istore${e}`,At(e,t)),n4=(e,t)=>(e=`/cgi-bin/luci/linkease/api${e}`,At(e,t)),s4={Status:{GET(){return G("/system/status/",{method:"GET"})}},CPU:{Status:{GET(){return G("/system/cpu/status/",{method:"GET"})}},Temperature:{GET(){return G("/system/cpu/temperature/",{method:"GET"})}}},Memery:{Status:{GET(){return G("/system/memery/status/",{method:"GET"})}}},Version:{GET(){return G("/system/version/",{method:"GET"})}},Time:{GET(){return G("/system/time/",{method:"GET"})}},CheckUpdate:{GET(){return G("/system/check-update/",{method:"GET"})}}},r4={Statistics:{GET(){return G("/network/statistics/",{method:"GET"})}},Status:{GET(){return G("/network/status/",{method:"GET"})}},Device:{List:{GET(){return G("/network/device/list/",{method:"GET"})}}},PortList:{GET(){return G("/network/port/list/",{method:"GET",headers:{"Content-Type":"application/json;charset=utf-8"}})}},CheckPublickNet:{POST(e){return G("/network/checkPublicNet/",{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"},body:JSON.stringify(e)})}}},a4={Pppoe:{GET(){return G("/guide/pppoe/",{method:"GET"})},POST(e){return G("/guide/pppoe/",{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"},body:JSON.stringify(e)})}},ClientModel:{GET(){return G("/guide/client-mode/",{method:"GET"})},POST(e){return G("/guide/client-mode/",{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"},body:JSON.stringify(e)})}},GatewayRouter:{POST(e){return G("/guide/gateway-router/",{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"},body:JSON.stringify(e)})}},GetLan:{GET(){return G("/guide/lan/",{method:"GET"})}},LanIp:{POST(e){return G("/guide/lan/",{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"},body:JSON.stringify(e)})}},DnsConfig:{GET(){return G("/guide/dns-config/",{method:"GET"})},POST(e){return G("/guide/dns-config/",{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"},body:JSON.stringify(e)})}},SoftSourceList:{GET(){return G("/guide/soft-source/list/",{method:"GET"})}},GetSoftSource:{GET(){return G("/guide/soft-source/",{method:"GET"})}},SoftSource:{POST(e){return G("/guide/soft-source/",{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"},body:JSON.stringify(e)})}},DockerStatus:{GET(){return G("/guide/docker/status/",{method:"GET"})}},DockerPartitionList:{GET(){return G("/guide/docker/partition/list/",{method:"GET"})}},DockerTransfer:{POST(e){return G("/guide/docker/transfer/",{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"},body:JSON.stringify(e)})}},DockerSwitch:{POST(e){return G("/guide/docker/switch/",{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"},body:JSON.stringify(e)})}},Ddns:{GET(){return G("/guide/ddns/",{method:"GET"})},POST(e){return G("/guide/ddns/",{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"},body:JSON.stringify(e)})}},Ddnsto:{POST(e){return G("/guide/ddnsto/",{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"},body:JSON.stringify(e)})},Config:{GET(){return G("/guide/ddnsto/config/",{method:"GET"})}},Address:{POST(e){return G("/guide/ddnsto/address/",{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"},body:JSON.stringify(e)})}}},DdntoConfig:{GET(){return G("/guide/ddnsto/config/",{method:"GET"})}},PostDdns:{POST(e){return G("/guide/ddns/",{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"},body:JSON.stringify(e)})}},DownloadPartition:{List:{GET(){return G("/guide/download/partition/list/",{method:"GET"})}}},Aria2Init:{POST(e){return G("/guide/aria2/init/",{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"},body:JSON.stringify(e)})}},qbitorrentInit:{POST(e){return G("/guide/qbittorrent/init/",{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"},body:JSON.stringify(e)})}},transmissionInit:{POST(e){return G("/guide/transmission/init/",{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"},body:JSON.stringify(e)})}},DownloadService:{Status:{GET(){return G("/guide/download-service/status/",{method:"GET"})}}}},o4={Disk:{Status:{GET(){return G("/nas/disk/status/",{method:"GET"})}},Erase:{POST(e){return G("/nas/disk/erase",{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"},body:JSON.stringify(e)})}},Init:{POST:e=>G("/nas/disk/init/",{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"},body:JSON.stringify(e)})},InitRest:{POST:e=>G("/nas/disk/initrest/",{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"},body:JSON.stringify(e)})},Partition:{Format:{POST:e=>G("/nas/disk/partition/format",{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"},body:JSON.stringify(e)})},Mount:{POST:e=>G("/nas/disk/partition/mount",{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"},body:JSON.stringify(e)})}}},Service:{Status:{GET(){return G("/nas/service/status/",{method:"GET"})}}},Samba:{Create:{POST(e){return G("/nas/samba/create",{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"},body:JSON.stringify(e)})}}},Webdav:{Create:{POST(e){return G("/nas/webdav/create",{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"},body:JSON.stringify(e)})}},Status:{GET(){return G("/nas/webdav/status/",{method:"GET"})}}},Linkease:{Enable:{POST(){return G("/nas/linkease/enable",{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"}})}}},Sandbox:{POST(e){return G("/nas/sandbox/",{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"},body:JSON.stringify(e)})}},GetSandbox:{GET(){return G("/nas/sandbox/",{method:"GET"})}},SandboxDisks:{GET(){return G("/nas/sandbox/disks/",{method:"GET"})}},SandboxCommit:{POST(){return G("/nas/sandbox/commit/",{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"},body:JSON.stringify({})})}},SandboxReset:{POST(){return G("/nas/sandbox/reset/",{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"}})}}},i4={Create:{POST(e){return G("/raid/create/",{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"},body:JSON.stringify(e)})}},Delete:{POST(e){return G("/raid/delete/",{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"},body:JSON.stringify(e)})}},Add:{POST(e){return G("/raid/add/",{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"},body:JSON.stringify(e)})}},Remove:{POST(e){return G("/raid/remove/",{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"},body:JSON.stringify(e)})}},Recover:{POST(e){return G("/raid/recover/",{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"},body:JSON.stringify(e)})}},Detail:{POST(e){return G("/raid/detail/",{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"},body:JSON.stringify(e)})}},List:{GET(){return G("/raid/list/",{method:"GET"})}},CreateList:{GET(){return G("/raid/create/list/",{method:"GET"})}}},l4={Check:{POST(e){return G("/app/check/",{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"},body:JSON.stringify(e)})}},Install:{POST(e){return G("/app/install/",{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"},body:JSON.stringify(e)})}}},u4={Service:{GET(){return G("/share/service/list/",{method:"GET"})},ADD(e){return G("/share/service/create/",{body:JSON.stringify(e),method:"POST"})},UPDATE(e){return G("/share/service/update/",{body:JSON.stringify(e),method:"POST"})},DELETE(e){return G("/share/service/delete/",{body:JSON.stringify(e),method:"POST"})}},User:{GET(){return G("/share/user/list/",{method:"GET"})},ADD(e){return G("/share/user/create/",{body:JSON.stringify(e),method:"POST"})},DELETE(e){return G("/share/user/delete/",{body:JSON.stringify(e),method:"POST"})},UPDATE(e){return G("/share/user/update/",{body:JSON.stringify(e),method:"POST"})}}},c4={File:{List:{POST(e){return n4("/file/basic/list/",{body:JSON.stringify(e),method:"POST"})}}}};var d4=Object.freeze(Object.defineProperty({__proto__:null,System:s4,Network:r4,Guide:a4,Nas:o4,Raid:i4,App:l4,Share:u4,Linkease:c4},Symbol.toStringTag,{value:"Module"}));const f4=window.L,ec=()=>new Promise((e,t)=>{try{f4.require("network").then(n=>{n&&(n.getNetwork("wan").then(s=>{if(s){const r=s.getDevice();if(r)return e({up:r.getTXBytes(),down:r.getRXBytes()})}}),n.flushCache())})}catch(n){t(n)}});//! moment.js //! version : 2.29.4 //! authors : Tim Wood, Iskren Chernev, Moment.js contributors //! license : MIT //! momentjs.com var df;function j(){return df.apply(null,arguments)}function h4(e){df=e}function an(e){return e instanceof Array||Object.prototype.toString.call(e)==="[object Array]"}function Ss(e){return e!=null&&Object.prototype.toString.call(e)==="[object Object]"}function Ae(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function Zi(e){if(Object.getOwnPropertyNames)return Object.getOwnPropertyNames(e).length===0;var t;for(t in e)if(Ae(e,t))return!1;return!0}function Nt(e){return e===void 0}function In(e){return typeof e=="number"||Object.prototype.toString.call(e)==="[object Number]"}function Xr(e){return e instanceof Date||Object.prototype.toString.call(e)==="[object Date]"}function ff(e,t){var n=[],s,r=e.length;for(s=0;s>>0,s;for(s=0;s0)for(n=0;n=0;return(a?n?"+":"":"-")+Math.pow(10,Math.max(0,r)).toString().substr(1)+s}var nl=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,ca=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,To={},Ws={};function re(e,t,n,s){var r=s;typeof s=="string"&&(r=function(){return this[s]()}),e&&(Ws[e]=r),t&&(Ws[t[0]]=function(){return vn(r.apply(this,arguments),t[1],t[2])}),n&&(Ws[n]=function(){return this.localeData().ordinal(r.apply(this,arguments),e)})}function v4(e){return e.match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"")}function y4(e){var t=e.match(nl),n,s;for(n=0,s=t.length;n=0&&ca.test(e);)e=e.replace(ca,s),ca.lastIndex=0,n-=1;return e}var b4={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};function E4(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.match(nl).map(function(s){return s==="MMMM"||s==="MM"||s==="DD"||s==="dddd"?s.slice(1):s}).join(""),this._longDateFormat[e])}var k4="Invalid date";function w4(){return this._invalidDate}var S4="%d",C4=/\d{1,2}/;function T4(e){return this._ordinal.replace("%d",e)}var F4={future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function D4(e,t,n,s){var r=this._relativeTime[n];return bn(r)?r(e,t,n,s):r.replace(/%d/i,e)}function O4(e,t){var n=this._relativeTime[e>0?"future":"past"];return bn(n)?n(t):n.replace(/%s/i,t)}var Dr={};function St(e,t){var n=e.toLowerCase();Dr[n]=Dr[n+"s"]=Dr[t]=e}function Xt(e){return typeof e=="string"?Dr[e]||Dr[e.toLowerCase()]:void 0}function sl(e){var t={},n,s;for(s in e)Ae(e,s)&&(n=Xt(s),n&&(t[n]=e[s]));return t}var mf={};function Ct(e,t){mf[e]=t}function P4(e){var t=[],n;for(n in e)Ae(e,n)&&t.push({unit:n,priority:mf[n]});return t.sort(function(s,r){return s.priority-r.priority}),t}function Za(e){return e%4===0&&e%100!==0||e%400===0}function zt(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function Ce(e){var t=+e,n=0;return t!==0&&isFinite(t)&&(n=zt(t)),n}function ir(e,t){return function(n){return n!=null?(gf(this,e,n),j.updateOffset(this,t),this):Fa(this,e)}}function Fa(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function gf(e,t,n){e.isValid()&&!isNaN(n)&&(t==="FullYear"&&Za(e.year())&&e.month()===1&&e.date()===29?(n=Ce(n),e._d["set"+(e._isUTC?"UTC":"")+t](n,e.month(),ro(n,e.month()))):e._d["set"+(e._isUTC?"UTC":"")+t](n))}function N4(e){return e=Xt(e),bn(this[e])?this[e]():this}function I4(e,t){if(typeof e=="object"){e=sl(e);var n=P4(e),s,r=n.length;for(s=0;s68?1900:2e3)};var Ff=ir("FullYear",!0);function X4(){return Za(this.year())}function Z4(e,t,n,s,r,a,o){var i;return e<100&&e>=0?(i=new Date(e+400,t,n,s,r,a,o),isFinite(i.getFullYear())&&i.setFullYear(e)):i=new Date(e,t,n,s,r,a,o),i}function Wr(e){var t,n;return e<100&&e>=0?(n=Array.prototype.slice.call(arguments),n[0]=e+400,t=new Date(Date.UTC.apply(null,n)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)):t=new Date(Date.UTC.apply(null,arguments)),t}function Oa(e,t,n){var s=7+t-n,r=(7+Wr(e,0,s).getUTCDay()-t)%7;return-r+s-1}function Df(e,t,n,s,r){var a=(7+n-s)%7,o=Oa(e,s,r),i=1+7*(t-1)+a+o,l,u;return i<=0?(l=e-1,u=Or(l)+i):i>Or(e)?(l=e+1,u=i-Or(e)):(l=e,u=i),{year:l,dayOfYear:u}}function Vr(e,t,n){var s=Oa(e.year(),t,n),r=Math.floor((e.dayOfYear()-s-1)/7)+1,a,o;return r<1?(o=e.year()-1,a=r+Pn(o,t,n)):r>Pn(e.year(),t,n)?(a=r-Pn(e.year(),t,n),o=e.year()+1):(o=e.year(),a=r),{week:a,year:o}}function Pn(e,t,n){var s=Oa(e,t,n),r=Oa(e+1,t,n);return(Or(e)-s+r)/7}re("w",["ww",2],"wo","week");re("W",["WW",2],"Wo","isoWeek");St("week","w");St("isoWeek","W");Ct("week",5);Ct("isoWeek",5);Z("w",Ke);Z("ww",Ke,Wt);Z("W",Ke);Z("WW",Ke,Wt);ea(["w","ww","W","WW"],function(e,t,n,s){t[s.substr(0,1)]=Ce(e)});function Q4(e){return Vr(e,this._week.dow,this._week.doy).week}var e_={dow:0,doy:6};function t_(){return this._week.dow}function n_(){return this._week.doy}function s_(e){var t=this.localeData().week(this);return e==null?t:this.add((e-t)*7,"d")}function r_(e){var t=Vr(this,1,4).week;return e==null?t:this.add((e-t)*7,"d")}re("d",0,"do","day");re("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)});re("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)});re("dddd",0,0,function(e){return this.localeData().weekdays(this,e)});re("e",0,0,"weekday");re("E",0,0,"isoWeekday");St("day","d");St("weekday","e");St("isoWeekday","E");Ct("day",11);Ct("weekday",11);Ct("isoWeekday",11);Z("d",Ke);Z("e",Ke);Z("E",Ke);Z("dd",function(e,t){return t.weekdaysMinRegex(e)});Z("ddd",function(e,t){return t.weekdaysShortRegex(e)});Z("dddd",function(e,t){return t.weekdaysRegex(e)});ea(["dd","ddd","dddd"],function(e,t,n,s){var r=n._locale.weekdaysParse(e,s,n._strict);r!=null?t.d=r:ke(n).invalidWeekday=e});ea(["d","e","E"],function(e,t,n,s){t[s]=Ce(e)});function a_(e,t){return typeof e!="string"?e:isNaN(e)?(e=t.weekdaysParse(e),typeof e=="number"?e:null):parseInt(e,10)}function o_(e,t){return typeof e=="string"?t.weekdaysParse(e)%7||7:isNaN(e)?null:e}function ol(e,t){return e.slice(t,7).concat(e.slice(0,t))}var i_="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Of="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),l_="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),u_=Qr,c_=Qr,d_=Qr;function f_(e,t){var n=an(this._weekdays)?this._weekdays:this._weekdays[e&&e!==!0&&this._weekdays.isFormat.test(t)?"format":"standalone"];return e===!0?ol(n,this._week.dow):e?n[e.day()]:n}function h_(e){return e===!0?ol(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort}function __(e){return e===!0?ol(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin}function p_(e,t,n){var s,r,a,o=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],s=0;s<7;++s)a=yn([2e3,1]).day(s),this._minWeekdaysParse[s]=this.weekdaysMin(a,"").toLocaleLowerCase(),this._shortWeekdaysParse[s]=this.weekdaysShort(a,"").toLocaleLowerCase(),this._weekdaysParse[s]=this.weekdays(a,"").toLocaleLowerCase();return n?t==="dddd"?(r=tt.call(this._weekdaysParse,o),r!==-1?r:null):t==="ddd"?(r=tt.call(this._shortWeekdaysParse,o),r!==-1?r:null):(r=tt.call(this._minWeekdaysParse,o),r!==-1?r:null):t==="dddd"?(r=tt.call(this._weekdaysParse,o),r!==-1||(r=tt.call(this._shortWeekdaysParse,o),r!==-1)?r:(r=tt.call(this._minWeekdaysParse,o),r!==-1?r:null)):t==="ddd"?(r=tt.call(this._shortWeekdaysParse,o),r!==-1||(r=tt.call(this._weekdaysParse,o),r!==-1)?r:(r=tt.call(this._minWeekdaysParse,o),r!==-1?r:null)):(r=tt.call(this._minWeekdaysParse,o),r!==-1||(r=tt.call(this._weekdaysParse,o),r!==-1)?r:(r=tt.call(this._shortWeekdaysParse,o),r!==-1?r:null))}function m_(e,t,n){var s,r,a;if(this._weekdaysParseExact)return p_.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),s=0;s<7;s++){if(r=yn([2e3,1]).day(s),n&&!this._fullWeekdaysParse[s]&&(this._fullWeekdaysParse[s]=new RegExp("^"+this.weekdays(r,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[s]=new RegExp("^"+this.weekdaysShort(r,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[s]=new RegExp("^"+this.weekdaysMin(r,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[s]||(a="^"+this.weekdays(r,"")+"|^"+this.weekdaysShort(r,"")+"|^"+this.weekdaysMin(r,""),this._weekdaysParse[s]=new RegExp(a.replace(".",""),"i")),n&&t==="dddd"&&this._fullWeekdaysParse[s].test(e))return s;if(n&&t==="ddd"&&this._shortWeekdaysParse[s].test(e))return s;if(n&&t==="dd"&&this._minWeekdaysParse[s].test(e))return s;if(!n&&this._weekdaysParse[s].test(e))return s}}function g_(e){if(!this.isValid())return e!=null?this:NaN;var t=this._isUTC?this._d.getUTCDay():this._d.getDay();return e!=null?(e=a_(e,this.localeData()),this.add(e-t,"d")):t}function v_(e){if(!this.isValid())return e!=null?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return e==null?t:this.add(e-t,"d")}function y_(e){if(!this.isValid())return e!=null?this:NaN;if(e!=null){var t=o_(e,this.localeData());return this.day(this.day()%7?t:t-7)}else return this.day()||7}function b_(e){return this._weekdaysParseExact?(Ae(this,"_weekdaysRegex")||il.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(Ae(this,"_weekdaysRegex")||(this._weekdaysRegex=u_),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)}function E_(e){return this._weekdaysParseExact?(Ae(this,"_weekdaysRegex")||il.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(Ae(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=c_),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function k_(e){return this._weekdaysParseExact?(Ae(this,"_weekdaysRegex")||il.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(Ae(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=d_),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function il(){function e(c,_){return _.length-c.length}var t=[],n=[],s=[],r=[],a,o,i,l,u;for(a=0;a<7;a++)o=yn([2e3,1]).day(a),i=Ut(this.weekdaysMin(o,"")),l=Ut(this.weekdaysShort(o,"")),u=Ut(this.weekdays(o,"")),t.push(i),n.push(l),s.push(u),r.push(i),r.push(l),r.push(u);t.sort(e),n.sort(e),s.sort(e),r.sort(e),this._weekdaysRegex=new RegExp("^("+r.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+n.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+t.join("|")+")","i")}function ll(){return this.hours()%12||12}function w_(){return this.hours()||24}re("H",["HH",2],0,"hour");re("h",["hh",2],0,ll);re("k",["kk",2],0,w_);re("hmm",0,0,function(){return""+ll.apply(this)+vn(this.minutes(),2)});re("hmmss",0,0,function(){return""+ll.apply(this)+vn(this.minutes(),2)+vn(this.seconds(),2)});re("Hmm",0,0,function(){return""+this.hours()+vn(this.minutes(),2)});re("Hmmss",0,0,function(){return""+this.hours()+vn(this.minutes(),2)+vn(this.seconds(),2)});function Pf(e,t){re(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}Pf("a",!0);Pf("A",!1);St("hour","h");Ct("hour",13);function Nf(e,t){return t._meridiemParse}Z("a",Nf);Z("A",Nf);Z("H",Ke);Z("h",Ke);Z("k",Ke);Z("HH",Ke,Wt);Z("hh",Ke,Wt);Z("kk",Ke,Wt);Z("hmm",bf);Z("hmmss",Ef);Z("Hmm",bf);Z("Hmmss",Ef);Be(["H","HH"],dt);Be(["k","kk"],function(e,t,n){var s=Ce(e);t[dt]=s===24?0:s});Be(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e});Be(["h","hh"],function(e,t,n){t[dt]=Ce(e),ke(n).bigHour=!0});Be("hmm",function(e,t,n){var s=e.length-2;t[dt]=Ce(e.substr(0,s)),t[sn]=Ce(e.substr(s)),ke(n).bigHour=!0});Be("hmmss",function(e,t,n){var s=e.length-4,r=e.length-2;t[dt]=Ce(e.substr(0,s)),t[sn]=Ce(e.substr(s,2)),t[On]=Ce(e.substr(r)),ke(n).bigHour=!0});Be("Hmm",function(e,t,n){var s=e.length-2;t[dt]=Ce(e.substr(0,s)),t[sn]=Ce(e.substr(s))});Be("Hmmss",function(e,t,n){var s=e.length-4,r=e.length-2;t[dt]=Ce(e.substr(0,s)),t[sn]=Ce(e.substr(s,2)),t[On]=Ce(e.substr(r))});function S_(e){return(e+"").toLowerCase().charAt(0)==="p"}var C_=/[ap]\.?m?\.?/i,T_=ir("Hours",!0);function F_(e,t,n){return e>11?n?"pm":"PM":n?"am":"AM"}var If={calendar:m4,longDateFormat:b4,invalidDate:k4,ordinal:S4,dayOfMonthOrdinalParse:C4,relativeTime:F4,months:Y4,monthsShort:kf,week:e_,weekdays:i_,weekdaysMin:l_,weekdaysShort:Of,meridiemParse:C_},Je={},mr={},jr;function D_(e,t){var n,s=Math.min(e.length,t.length);for(n=0;n0;){if(r=ao(a.slice(0,n).join("-")),r)return r;if(s&&s.length>=n&&D_(a,s)>=n-1)break;n--}t++}return jr}function P_(e){return e.match("^[^/\\\\]*$")!=null}function ao(e){var t=null,n;if(Je[e]===void 0&&typeof module!="undefined"&&module&&module.exports&&P_(e))try{t=jr._abbr,n=require,n("./locale/"+e),ts(t)}catch(s){Je[e]=null}return Je[e]}function ts(e,t){var n;return e&&(Nt(t)?n=Mn(e):n=ul(e,t),n?jr=n:typeof console!="undefined"&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),jr._abbr}function ul(e,t){if(t!==null){var n,s=If;if(t.abbr=e,Je[e]!=null)_f("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),s=Je[e]._config;else if(t.parentLocale!=null)if(Je[t.parentLocale]!=null)s=Je[t.parentLocale]._config;else if(n=ao(t.parentLocale),n!=null)s=n._config;else return mr[t.parentLocale]||(mr[t.parentLocale]=[]),mr[t.parentLocale].push({name:e,config:t}),null;return Je[e]=new tl(ii(s,t)),mr[e]&&mr[e].forEach(function(r){ul(r.name,r.config)}),ts(e),Je[e]}else return delete Je[e],null}function N_(e,t){if(t!=null){var n,s,r=If;Je[e]!=null&&Je[e].parentLocale!=null?Je[e].set(ii(Je[e]._config,t)):(s=ao(e),s!=null&&(r=s._config),t=ii(r,t),s==null&&(t.abbr=e),n=new tl(t),n.parentLocale=Je[e],Je[e]=n),ts(e)}else Je[e]!=null&&(Je[e].parentLocale!=null?(Je[e]=Je[e].parentLocale,e===ts()&&ts(e)):Je[e]!=null&&delete Je[e]);return Je[e]}function Mn(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return jr;if(!an(e)){if(t=ao(e),t)return t;e=[e]}return O_(e)}function I_(){return li(Je)}function cl(e){var t,n=e._a;return n&&ke(e).overflow===-2&&(t=n[Dn]<0||n[Dn]>11?Dn:n[mn]<1||n[mn]>ro(n[kt],n[Dn])?mn:n[dt]<0||n[dt]>24||n[dt]===24&&(n[sn]!==0||n[On]!==0||n[ks]!==0)?dt:n[sn]<0||n[sn]>59?sn:n[On]<0||n[On]>59?On:n[ks]<0||n[ks]>999?ks:-1,ke(e)._overflowDayOfYear&&(tmn)&&(t=mn),ke(e)._overflowWeeks&&t===-1&&(t=R4),ke(e)._overflowWeekday&&t===-1&&(t=B4),ke(e).overflow=t),e}var A_=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,L_=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,M_=/Z|[+-]\d\d(?::?\d\d)?/,da=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],Fo=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],x_=/^\/?Date\((-?\d+)/i,$_=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,R_={UT:0,GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function Af(e){var t,n,s=e._i,r=A_.exec(s)||L_.exec(s),a,o,i,l,u=da.length,c=Fo.length;if(r){for(ke(e).iso=!0,t=0,n=u;tOr(o)||e._dayOfYear===0)&&(ke(e)._overflowDayOfYear=!0),n=Wr(o,0,e._dayOfYear),e._a[Dn]=n.getUTCMonth(),e._a[mn]=n.getUTCDate()),t=0;t<3&&e._a[t]==null;++t)e._a[t]=s[t]=r[t];for(;t<7;t++)e._a[t]=s[t]=e._a[t]==null?t===2?1:0:e._a[t];e._a[dt]===24&&e._a[sn]===0&&e._a[On]===0&&e._a[ks]===0&&(e._nextDay=!0,e._a[dt]=0),e._d=(e._useUTC?Wr:Z4).apply(null,s),a=e._useUTC?e._d.getUTCDay():e._d.getDay(),e._tzm!=null&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[dt]=24),e._w&&typeof e._w.d!="undefined"&&e._w.d!==a&&(ke(e).weekdayMismatch=!0)}}function G_(e){var t,n,s,r,a,o,i,l,u;t=e._w,t.GG!=null||t.W!=null||t.E!=null?(a=1,o=4,n=Ls(t.GG,e._a[kt],Vr(ze(),1,4).year),s=Ls(t.W,1),r=Ls(t.E,1),(r<1||r>7)&&(l=!0)):(a=e._locale._week.dow,o=e._locale._week.doy,u=Vr(ze(),a,o),n=Ls(t.gg,e._a[kt],u.year),s=Ls(t.w,u.week),t.d!=null?(r=t.d,(r<0||r>6)&&(l=!0)):t.e!=null?(r=t.e+a,(t.e<0||t.e>6)&&(l=!0)):r=a),s<1||s>Pn(n,a,o)?ke(e)._overflowWeeks=!0:l!=null?ke(e)._overflowWeekday=!0:(i=Df(n,s,r,a,o),e._a[kt]=i.year,e._dayOfYear=i.dayOfYear)}j.ISO_8601=function(){};j.RFC_2822=function(){};function fl(e){if(e._f===j.ISO_8601){Af(e);return}if(e._f===j.RFC_2822){Lf(e);return}e._a=[],ke(e).empty=!0;var t=""+e._i,n,s,r,a,o,i=t.length,l=0,u,c;for(r=pf(e._f,e._locale).match(nl)||[],c=r.length,n=0;n0&&ke(e).unusedInput.push(o),t=t.slice(t.indexOf(s)+s.length),l+=s.length),Ws[a]?(s?ke(e).empty=!1:ke(e).unusedTokens.push(a),$4(a,s,e)):e._strict&&!s&&ke(e).unusedTokens.push(a);ke(e).charsLeftOver=i-l,t.length>0&&ke(e).unusedInput.push(t),e._a[dt]<=12&&ke(e).bigHour===!0&&e._a[dt]>0&&(ke(e).bigHour=void 0),ke(e).parsedDateParts=e._a.slice(0),ke(e).meridiem=e._meridiem,e._a[dt]=z_(e._locale,e._a[dt],e._meridiem),u=ke(e).era,u!==null&&(e._a[kt]=e._locale.erasConvertYear(u,e._a[kt])),dl(e),cl(e)}function z_(e,t,n){var s;return n==null?t:e.meridiemHour!=null?e.meridiemHour(t,n):(e.isPM!=null&&(s=e.isPM(n),s&&t<12&&(t+=12),!s&&t===12&&(t=0)),t)}function K_(e){var t,n,s,r,a,o,i=!1,l=e._f.length;if(l===0){ke(e).invalidFormat=!0,e._d=new Date(NaN);return}for(r=0;rthis?this:e:Xa()});function $f(e,t){var n,s;if(t.length===1&&an(t[0])&&(t=t[0]),!t.length)return ze();for(n=t[0],s=1;sthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function pp(){if(!Nt(this._isDSTShifted))return this._isDSTShifted;var e={},t;return el(e,this),e=Mf(e),e._a?(t=e._isUTC?yn(e._a):ze(e._a),this._isDSTShifted=this.isValid()&&op(e._a,t.toArray())>0):this._isDSTShifted=!1,this._isDSTShifted}function mp(){return this.isValid()?!this._isUTC:!1}function gp(){return this.isValid()?this._isUTC:!1}function Bf(){return this.isValid()?this._isUTC&&this._offset===0:!1}var vp=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,yp=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function un(e,t){var n=e,s=null,r,a,o;return va(e)?n={ms:e._milliseconds,d:e._days,M:e._months}:In(e)||!isNaN(+e)?(n={},t?n[t]=+e:n.milliseconds=+e):(s=vp.exec(e))?(r=s[1]==="-"?-1:1,n={y:0,d:Ce(s[mn])*r,h:Ce(s[dt])*r,m:Ce(s[sn])*r,s:Ce(s[On])*r,ms:Ce(ci(s[ks]*1e3))*r}):(s=yp.exec(e))?(r=s[1]==="-"?-1:1,n={y:gs(s[2],r),M:gs(s[3],r),w:gs(s[4],r),d:gs(s[5],r),h:gs(s[6],r),m:gs(s[7],r),s:gs(s[8],r)}):n==null?n={}:typeof n=="object"&&("from"in n||"to"in n)&&(o=bp(ze(n.from),ze(n.to)),n={},n.ms=o.milliseconds,n.M=o.months),a=new oo(n),va(e)&&Ae(e,"_locale")&&(a._locale=e._locale),va(e)&&Ae(e,"_isValid")&&(a._isValid=e._isValid),a}un.fn=oo.prototype;un.invalid=ap;function gs(e,t){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*t}function rc(e,t){var n={};return n.months=t.month()-e.month()+(t.year()-e.year())*12,e.clone().add(n.months,"M").isAfter(t)&&--n.months,n.milliseconds=+t-+e.clone().add(n.months,"M"),n}function bp(e,t){var n;return e.isValid()&&t.isValid()?(t=_l(t,e),e.isBefore(t)?n=rc(e,t):(n=rc(t,e),n.milliseconds=-n.milliseconds,n.months=-n.months),n):{milliseconds:0,months:0}}function Uf(e,t){return function(n,s){var r,a;return s!==null&&!isNaN(+s)&&(_f(t,"moment()."+t+"(period, number) is deprecated. Please use moment()."+t+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),a=n,n=s,s=a),r=un(n,s),Yf(this,r,e),this}}function Yf(e,t,n,s){var r=t._milliseconds,a=ci(t._days),o=ci(t._months);!e.isValid()||(s=s==null?!0:s,o&&Sf(e,Fa(e,"Month")+o*n),a&&gf(e,"Date",Fa(e,"Date")+a*n),r&&e._d.setTime(e._d.valueOf()+r*n),s&&j.updateOffset(e,a||o))}var Ep=Uf(1,"add"),kp=Uf(-1,"subtract");function Hf(e){return typeof e=="string"||e instanceof String}function wp(e){return on(e)||Xr(e)||Hf(e)||In(e)||Cp(e)||Sp(e)||e===null||e===void 0}function Sp(e){var t=Ss(e)&&!Zi(e),n=!1,s=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],r,a,o=s.length;for(r=0;rn.valueOf():n.valueOf()9999?ga(n,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):bn(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+this.utcOffset()*60*1e3).toISOString().replace("Z",ga(n,"Z")):ga(n,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")}function Bp(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",t="",n,s,r,a;return this.isLocal()||(e=this.utcOffset()===0?"moment.utc":"moment.parseZone",t="Z"),n="["+e+'("]',s=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",r="-MM-DD[T]HH:mm:ss.SSS",a=t+'[")]',this.format(n+s+r+a)}function Up(e){e||(e=this.isUtc()?j.defaultFormatUtc:j.defaultFormat);var t=ga(this,e);return this.localeData().postformat(t)}function Yp(e,t){return this.isValid()&&(on(e)&&e.isValid()||ze(e).isValid())?un({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function Hp(e){return this.from(ze(),e)}function Wp(e,t){return this.isValid()&&(on(e)&&e.isValid()||ze(e).isValid())?un({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function Vp(e){return this.to(ze(),e)}function Wf(e){var t;return e===void 0?this._locale._abbr:(t=Mn(e),t!=null&&(this._locale=t),this)}var Vf=Jt("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return e===void 0?this.localeData():this.locale(e)});function jf(){return this._locale}var Pa=1e3,Vs=60*Pa,Na=60*Vs,Gf=(365*400+97)*24*Na;function js(e,t){return(e%t+t)%t}function zf(e,t,n){return e<100&&e>=0?new Date(e+400,t,n)-Gf:new Date(e,t,n).valueOf()}function Kf(e,t,n){return e<100&&e>=0?Date.UTC(e+400,t,n)-Gf:Date.UTC(e,t,n)}function jp(e){var t,n;if(e=Xt(e),e===void 0||e==="millisecond"||!this.isValid())return this;switch(n=this._isUTC?Kf:zf,e){case"year":t=n(this.year(),0,1);break;case"quarter":t=n(this.year(),this.month()-this.month()%3,1);break;case"month":t=n(this.year(),this.month(),1);break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":t=n(this.year(),this.month(),this.date());break;case"hour":t=this._d.valueOf(),t-=js(t+(this._isUTC?0:this.utcOffset()*Vs),Na);break;case"minute":t=this._d.valueOf(),t-=js(t,Vs);break;case"second":t=this._d.valueOf(),t-=js(t,Pa);break}return this._d.setTime(t),j.updateOffset(this,!0),this}function Gp(e){var t,n;if(e=Xt(e),e===void 0||e==="millisecond"||!this.isValid())return this;switch(n=this._isUTC?Kf:zf,e){case"year":t=n(this.year()+1,0,1)-1;break;case"quarter":t=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=n(this.year(),this.month()+1,1)-1;break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf(),t+=Na-js(t+(this._isUTC?0:this.utcOffset()*Vs),Na)-1;break;case"minute":t=this._d.valueOf(),t+=Vs-js(t,Vs)-1;break;case"second":t=this._d.valueOf(),t+=Pa-js(t,Pa)-1;break}return this._d.setTime(t),j.updateOffset(this,!0),this}function zp(){return this._d.valueOf()-(this._offset||0)*6e4}function Kp(){return Math.floor(this.valueOf()/1e3)}function qp(){return new Date(this.valueOf())}function Jp(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]}function Xp(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}}function Zp(){return this.isValid()?this.toISOString():null}function Qp(){return Qi(this)}function e8(){return zn({},ke(this))}function t8(){return ke(this).overflow}function n8(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}re("N",0,0,"eraAbbr");re("NN",0,0,"eraAbbr");re("NNN",0,0,"eraAbbr");re("NNNN",0,0,"eraName");re("NNNNN",0,0,"eraNarrow");re("y",["y",1],"yo","eraYear");re("y",["yy",2],0,"eraYear");re("y",["yyy",3],0,"eraYear");re("y",["yyyy",4],0,"eraYear");Z("N",pl);Z("NN",pl);Z("NNN",pl);Z("NNNN",h8);Z("NNNNN",_8);Be(["N","NN","NNN","NNNN","NNNNN"],function(e,t,n,s){var r=n._locale.erasParse(e,s,n._strict);r?ke(n).era=r:ke(n).invalidEra=e});Z("y",lr);Z("yy",lr);Z("yyy",lr);Z("yyyy",lr);Z("yo",p8);Be(["y","yy","yyy","yyyy"],kt);Be(["yo"],function(e,t,n,s){var r;n._locale._eraYearOrdinalRegex&&(r=e.match(n._locale._eraYearOrdinalRegex)),n._locale.eraYearOrdinalParse?t[kt]=n._locale.eraYearOrdinalParse(e,r):t[kt]=parseInt(e,10)});function s8(e,t){var n,s,r,a=this._eras||Mn("en")._eras;for(n=0,s=a.length;n=0)return a[s]}function a8(e,t){var n=e.since<=e.until?1:-1;return t===void 0?j(e.since).year():j(e.since).year()+(t-e.offset)*n}function o8(){var e,t,n,s=this.localeData().eras();for(e=0,t=s.length;ea&&(t=a),k8.call(this,e,t,n,s,r))}function k8(e,t,n,s,r){var a=Df(e,t,n,s,r),o=Wr(a.year,0,a.dayOfYear);return this.year(o.getUTCFullYear()),this.month(o.getUTCMonth()),this.date(o.getUTCDate()),this}re("Q",0,"Qo","quarter");St("quarter","Q");Ct("quarter",7);Z("Q",vf);Be("Q",function(e,t){t[Dn]=(Ce(e)-1)*3});function w8(e){return e==null?Math.ceil((this.month()+1)/3):this.month((e-1)*3+this.month()%3)}re("D",["DD",2],"Do","date");St("date","D");Ct("date",9);Z("D",Ke);Z("DD",Ke,Wt);Z("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient});Be(["D","DD"],mn);Be("Do",function(e,t){t[mn]=Ce(e.match(Ke)[0])});var Jf=ir("Date",!0);re("DDD",["DDDD",3],"DDDo","dayOfYear");St("dayOfYear","DDD");Ct("dayOfYear",4);Z("DDD",eo);Z("DDDD",yf);Be(["DDD","DDDD"],function(e,t,n){n._dayOfYear=Ce(e)});function S8(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return e==null?t:this.add(e-t,"d")}re("m",["mm",2],0,"minute");St("minute","m");Ct("minute",14);Z("m",Ke);Z("mm",Ke,Wt);Be(["m","mm"],sn);var C8=ir("Minutes",!1);re("s",["ss",2],0,"second");St("second","s");Ct("second",15);Z("s",Ke);Z("ss",Ke,Wt);Be(["s","ss"],On);var T8=ir("Seconds",!1);re("S",0,0,function(){return~~(this.millisecond()/100)});re(0,["SS",2],0,function(){return~~(this.millisecond()/10)});re(0,["SSS",3],0,"millisecond");re(0,["SSSS",4],0,function(){return this.millisecond()*10});re(0,["SSSSS",5],0,function(){return this.millisecond()*100});re(0,["SSSSSS",6],0,function(){return this.millisecond()*1e3});re(0,["SSSSSSS",7],0,function(){return this.millisecond()*1e4});re(0,["SSSSSSSS",8],0,function(){return this.millisecond()*1e5});re(0,["SSSSSSSSS",9],0,function(){return this.millisecond()*1e6});St("millisecond","ms");Ct("millisecond",16);Z("S",eo,vf);Z("SS",eo,Wt);Z("SSS",eo,yf);var Kn,Xf;for(Kn="SSSS";Kn.length<=9;Kn+="S")Z(Kn,lr);function F8(e,t){t[ks]=Ce(("0."+e)*1e3)}for(Kn="S";Kn.length<=9;Kn+="S")Be(Kn,F8);Xf=ir("Milliseconds",!1);re("z",0,0,"zoneAbbr");re("zz",0,0,"zoneName");function D8(){return this._isUTC?"UTC":""}function O8(){return this._isUTC?"Coordinated Universal Time":""}var B=Zr.prototype;B.add=Ep;B.calendar=Dp;B.clone=Op;B.diff=xp;B.endOf=Gp;B.format=Up;B.from=Yp;B.fromNow=Hp;B.to=Wp;B.toNow=Vp;B.get=N4;B.invalidAt=t8;B.isAfter=Pp;B.isBefore=Np;B.isBetween=Ip;B.isSame=Ap;B.isSameOrAfter=Lp;B.isSameOrBefore=Mp;B.isValid=Qp;B.lang=Vf;B.locale=Wf;B.localeData=jf;B.max=Q_;B.min=Z_;B.parsingFlags=e8;B.set=I4;B.startOf=jp;B.subtract=kp;B.toArray=Jp;B.toObject=Xp;B.toDate=qp;B.toISOString=Rp;B.inspect=Bp;typeof Symbol!="undefined"&&Symbol.for!=null&&(B[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"});B.toJSON=Zp;B.toString=$p;B.unix=Kp;B.valueOf=zp;B.creationData=n8;B.eraName=o8;B.eraNarrow=i8;B.eraAbbr=l8;B.eraYear=u8;B.year=Ff;B.isLeapYear=X4;B.weekYear=m8;B.isoWeekYear=g8;B.quarter=B.quarters=w8;B.month=Cf;B.daysInMonth=K4;B.week=B.weeks=s_;B.isoWeek=B.isoWeeks=r_;B.weeksInYear=b8;B.weeksInWeekYear=E8;B.isoWeeksInYear=v8;B.isoWeeksInISOWeekYear=y8;B.date=Jf;B.day=B.days=g_;B.weekday=v_;B.isoWeekday=y_;B.dayOfYear=S8;B.hour=B.hours=T_;B.minute=B.minutes=C8;B.second=B.seconds=T8;B.millisecond=B.milliseconds=Xf;B.utcOffset=lp;B.utc=cp;B.local=dp;B.parseZone=fp;B.hasAlignedHourOffset=hp;B.isDST=_p;B.isLocal=mp;B.isUtcOffset=gp;B.isUtc=Bf;B.isUTC=Bf;B.zoneAbbr=D8;B.zoneName=O8;B.dates=Jt("dates accessor is deprecated. Use date instead.",Jf);B.months=Jt("months accessor is deprecated. Use month instead",Cf);B.years=Jt("years accessor is deprecated. Use year instead",Ff);B.zone=Jt("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",up);B.isDSTShifted=Jt("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",pp);function P8(e){return ze(e*1e3)}function N8(){return ze.apply(null,arguments).parseZone()}function Zf(e){return e}var Le=tl.prototype;Le.calendar=g4;Le.longDateFormat=E4;Le.invalidDate=w4;Le.ordinal=T4;Le.preparse=Zf;Le.postformat=Zf;Le.relativeTime=D4;Le.pastFuture=O4;Le.set=p4;Le.eras=s8;Le.erasParse=r8;Le.erasConvertYear=a8;Le.erasAbbrRegex=d8;Le.erasNameRegex=c8;Le.erasNarrowRegex=f8;Le.months=V4;Le.monthsShort=j4;Le.monthsParse=z4;Le.monthsRegex=J4;Le.monthsShortRegex=q4;Le.week=Q4;Le.firstDayOfYear=n_;Le.firstDayOfWeek=t_;Le.weekdays=f_;Le.weekdaysMin=__;Le.weekdaysShort=h_;Le.weekdaysParse=m_;Le.weekdaysRegex=b_;Le.weekdaysShortRegex=E_;Le.weekdaysMinRegex=k_;Le.isPM=S_;Le.meridiem=F_;function Ia(e,t,n,s){var r=Mn(),a=yn().set(s,t);return r[n](a,e)}function Qf(e,t,n){if(In(e)&&(t=e,e=void 0),e=e||"",t!=null)return Ia(e,t,n,"month");var s,r=[];for(s=0;s<12;s++)r[s]=Ia(e,s,n,"month");return r}function gl(e,t,n,s){typeof e=="boolean"?(In(t)&&(n=t,t=void 0),t=t||""):(t=e,n=t,e=!1,In(t)&&(n=t,t=void 0),t=t||"");var r=Mn(),a=e?r._week.dow:0,o,i=[];if(n!=null)return Ia(t,(n+a)%7,s,"day");for(o=0;o<7;o++)i[o]=Ia(t,(o+a)%7,s,"day");return i}function I8(e,t){return Qf(e,t,"months")}function A8(e,t){return Qf(e,t,"monthsShort")}function L8(e,t,n){return gl(e,t,n,"weekdays")}function M8(e,t,n){return gl(e,t,n,"weekdaysShort")}function x8(e,t,n){return gl(e,t,n,"weekdaysMin")}ts("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10,n=Ce(e%100/10)===1?"th":t===1?"st":t===2?"nd":t===3?"rd":"th";return e+n}});j.lang=Jt("moment.lang is deprecated. Use moment.locale instead.",ts);j.langData=Jt("moment.langData is deprecated. Use moment.localeData instead.",Mn);var kn=Math.abs;function $8(){var e=this._data;return this._milliseconds=kn(this._milliseconds),this._days=kn(this._days),this._months=kn(this._months),e.milliseconds=kn(e.milliseconds),e.seconds=kn(e.seconds),e.minutes=kn(e.minutes),e.hours=kn(e.hours),e.months=kn(e.months),e.years=kn(e.years),this}function e1(e,t,n,s){var r=un(t,n);return e._milliseconds+=s*r._milliseconds,e._days+=s*r._days,e._months+=s*r._months,e._bubble()}function R8(e,t){return e1(this,e,t,1)}function B8(e,t){return e1(this,e,t,-1)}function ac(e){return e<0?Math.floor(e):Math.ceil(e)}function U8(){var e=this._milliseconds,t=this._days,n=this._months,s=this._data,r,a,o,i,l;return e>=0&&t>=0&&n>=0||e<=0&&t<=0&&n<=0||(e+=ac(fi(n)+t)*864e5,t=0,n=0),s.milliseconds=e%1e3,r=zt(e/1e3),s.seconds=r%60,a=zt(r/60),s.minutes=a%60,o=zt(a/60),s.hours=o%24,t+=zt(o/24),l=zt(t1(t)),n+=l,t-=ac(fi(l)),i=zt(n/12),n%=12,s.days=t,s.months=n,s.years=i,this}function t1(e){return e*4800/146097}function fi(e){return e*146097/4800}function Y8(e){if(!this.isValid())return NaN;var t,n,s=this._milliseconds;if(e=Xt(e),e==="month"||e==="quarter"||e==="year")switch(t=this._days+s/864e5,n=this._months+t1(t),e){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(t=this._days+Math.round(fi(this._months)),e){case"week":return t/7+s/6048e5;case"day":return t+s/864e5;case"hour":return t*24+s/36e5;case"minute":return t*1440+s/6e4;case"second":return t*86400+s/1e3;case"millisecond":return Math.floor(t*864e5)+s;default:throw new Error("Unknown unit "+e)}}function H8(){return this.isValid()?this._milliseconds+this._days*864e5+this._months%12*2592e6+Ce(this._months/12)*31536e6:NaN}function xn(e){return function(){return this.as(e)}}var W8=xn("ms"),V8=xn("s"),j8=xn("m"),G8=xn("h"),z8=xn("d"),K8=xn("w"),q8=xn("M"),J8=xn("Q"),X8=xn("y");function Z8(){return un(this)}function Q8(e){return e=Xt(e),this.isValid()?this[e+"s"]():NaN}function Ds(e){return function(){return this.isValid()?this._data[e]:NaN}}var em=Ds("milliseconds"),tm=Ds("seconds"),nm=Ds("minutes"),sm=Ds("hours"),rm=Ds("days"),am=Ds("months"),om=Ds("years");function im(){return zt(this.days()/7)}var Cn=Math.round,Rs={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function lm(e,t,n,s,r){return r.relativeTime(t||1,!!n,e,s)}function um(e,t,n,s){var r=un(e).abs(),a=Cn(r.as("s")),o=Cn(r.as("m")),i=Cn(r.as("h")),l=Cn(r.as("d")),u=Cn(r.as("M")),c=Cn(r.as("w")),_=Cn(r.as("y")),p=a<=n.ss&&["s",a]||a0,p[4]=s,lm.apply(null,p)}function cm(e){return e===void 0?Cn:typeof e=="function"?(Cn=e,!0):!1}function dm(e,t){return Rs[e]===void 0?!1:t===void 0?Rs[e]:(Rs[e]=t,e==="s"&&(Rs.ss=t-1),!0)}function fm(e,t){if(!this.isValid())return this.localeData().invalidDate();var n=!1,s=Rs,r,a;return typeof e=="object"&&(t=e,e=!1),typeof e=="boolean"&&(n=e),typeof t=="object"&&(s=Object.assign({},Rs,t),t.s!=null&&t.ss==null&&(s.ss=t.s-1)),r=this.localeData(),a=um(this,!n,s,r),n&&(a=r.pastFuture(+this,a)),r.postformat(a)}var Do=Math.abs;function Ns(e){return(e>0)-(e<0)||+e}function lo(){if(!this.isValid())return this.localeData().invalidDate();var e=Do(this._milliseconds)/1e3,t=Do(this._days),n=Do(this._months),s,r,a,o,i=this.asSeconds(),l,u,c,_;return i?(s=zt(e/60),r=zt(s/60),e%=60,s%=60,a=zt(n/12),n%=12,o=e?e.toFixed(3).replace(/\.?0+$/,""):"",l=i<0?"-":"",u=Ns(this._months)!==Ns(i)?"-":"",c=Ns(this._days)!==Ns(i)?"-":"",_=Ns(this._milliseconds)!==Ns(i)?"-":"",l+"P"+(a?u+a+"Y":"")+(n?u+n+"M":"")+(t?c+t+"D":"")+(r||s||e?"T":"")+(r?_+r+"H":"")+(s?_+s+"M":"")+(e?_+o+"S":"")):"P0D"}var Oe=oo.prototype;Oe.isValid=rp;Oe.abs=$8;Oe.add=R8;Oe.subtract=B8;Oe.as=Y8;Oe.asMilliseconds=W8;Oe.asSeconds=V8;Oe.asMinutes=j8;Oe.asHours=G8;Oe.asDays=z8;Oe.asWeeks=K8;Oe.asMonths=q8;Oe.asQuarters=J8;Oe.asYears=X8;Oe.valueOf=H8;Oe._bubble=U8;Oe.clone=Z8;Oe.get=Q8;Oe.milliseconds=em;Oe.seconds=tm;Oe.minutes=nm;Oe.hours=sm;Oe.days=rm;Oe.weeks=im;Oe.months=am;Oe.years=om;Oe.humanize=fm;Oe.toISOString=lo;Oe.toString=lo;Oe.toJSON=lo;Oe.locale=Wf;Oe.localeData=jf;Oe.toIsoString=Jt("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",lo);Oe.lang=Vf;re("X",0,0,"unix");re("x",0,0,"valueOf");Z("x",no);Z("X",L4);Be("X",function(e,t,n){n._d=new Date(parseFloat(e)*1e3)});Be("x",function(e,t,n){n._d=new Date(Ce(e))});//! moment.js j.version="2.29.4";h4(ze);j.fn=B;j.min=ep;j.max=tp;j.now=np;j.utc=yn;j.unix=P8;j.months=I8;j.isDate=Xr;j.locale=ts;j.invalid=Xa;j.duration=un;j.isMoment=on;j.weekdays=L8;j.parseZone=N8;j.localeData=Mn;j.isDuration=va;j.monthsShort=A8;j.weekdaysMin=x8;j.defineLocale=ul;j.updateLocale=N_;j.locales=I_;j.weekdaysShort=M8;j.normalizeUnits=Xt;j.relativeTimeRounding=cm;j.relativeTimeThreshold=dm;j.calendarFormat=Fp;j.prototype=B;j.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"};j.locale("zh-cn",{});const hm=e=>{if(e)return j(e).utc().format("YYYY-MM-DD HH:mm:ss")},_m=e=>{if(e)return j(e).utc().format("YYYY\u5E74MM\u6708DD\u65E5")},pm=e=>{if(e)return j(e).utc().format("HH:mm:ss")},mm=()=>new Date().getTime(),gm=e=>{if(e<1e3)return`${e} B`;let n=1e3,s=0;for(let o=e/1e3;o>=1e3;o/=1e3)n*=1e3,s++;let r=[" KB"," MB"," GB"," TB"," PB"," EB"];return(e/100/(n/100)).toFixed(1)+r[s]},vm=e=>{if(e<1024)return""+e+"KB";let n=1024,s=0;for(let a=e/1024;a>=1024;a/=1024)n*=1024,s++;let r=["M","G","T","P","E"];return(e/100/(n/100)).toFixed(2)+r[s]},ym=e=>{if(e==null)return 0;if(e<1e4)return e;let n=parseInt(`${e/1e4}`),s=e%1e4;return`${n}\u4E07${s}`},bm=e=>{if(e)try{var t=new Date(e),n=t.getHours(),s=t.getMinutes(),r=t.getSeconds();return n<10&&(n=`0${n}`),s<10&&(s=`0${s}`),r<10&&(r=`0${r}`),`${n}:${s}:${r}`}catch(a){}return""},Em=e=>{if(e)try{var t=new Date(Number(e)*1e3),n=t.getFullYear(),s=t.getMonth()+1,r=t.getDate();return n+"\u5E74"+s+"\u6708"+r+"\u65E5 "}catch(a){}return""},km=e=>{if(e){let t=Math.floor(e/86400),n=Math.floor(e%86400/3600),s=Math.floor(e%86400%3600/60),r=Math.floor(e%86400%3600%60);return t+"\u5929"+n+"\u5C0F\u65F6"+(s>=10?s:"0"+s)+"\u5206"+(r>=10?r:"0"+r)+"\u79D2"}},wm=e=>/^\d+\.\d+\.\d+\.\d+$/.test(e),Sm=e=>e.length<3?"\u7528\u6237\u540D\u592A\u77ED":e.toLowerCase()!=e?"\u7528\u6237\u540D\u53EA\u80FD\u4E3A\u5C0F\u5199":new RegExp("^\\d").exec(e)?"\u7528\u6237\u540D\u4E0D\u80FD\u4EE5\u6570\u5B57\u5F00\u5934":new RegExp("^_").exec(e)?"\u7528\u6237\u540D\u4E0D\u80FD\u4EE5_\u5F00\u5934":new RegExp("^[a-z0-9_]+$").exec(e)?!0:"\u975E\u6CD5\u7684\u7528\u6237\u540D",Cm=()=>window.token||"",Tm=new Intl.NumberFormat("zh-CN",{notation:"compact"}),Fm=e=>Tm.format(e),Dm=()=>{var e;return((e=window==null?void 0:window.device_id)==null?void 0:e.uid)||""},Om=()=>(window==null?void 0:window.model)||"wizard",Pm=()=>(window==null?void 0:window.istoreXVer)||"";var Nm=Object.freeze(Object.defineProperty({__proto__:null,formatDate:hm,formatDateYMD:_m,formatDateHMS:pm,UnixDate:mm,byteToSize:gm,numberToSize:vm,numberToSum:ym,dateForm:bm,dateYearDayForm:Em,stampForm:km,checkIsIP:wm,checkSmabaUserName:Sm,getToken:Cm,numberFormat:Fm,getDeviceId:Dm,getModel:Om,getVersion:Pm},Symbol.toStringTag,{value:"Module"}));const Im=()=>!!(navigator.userAgent||"").match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i);var Am=Object.freeze(Object.defineProperty({__proto__:null,isMobile:Im},Symbol.toStringTag,{value:"Module"})),it=gt(gt({},Am),Nm);const Is=(e,t)=>(e=`/cgi-bin/luci${e}`,At(e,t)),Lm={installed:{GET(){return Is("/admin/store/installed",{method:"GET"})}},installedList:{GET(){return Is("/istore/app/install-list/",{method:"GET"})}},install:{POST(e){return Is("/admin/store/install?"+new URLSearchParams({package:e,token:it.getToken(),_t:`${it.UnixDate()}`}),{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"}})}},remove:{POST(e){return Is("/admin/store/remove?"+new URLSearchParams({package:e,token:it.getToken(),_t:`${it.UnixDate()}`}),{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"}})}},upgrade:{POST(e){return Is("/admin/store/upgrade?"+new URLSearchParams({package:e,token:it.getToken(),_t:`${it.UnixDate()}`}),{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"}})}},upload:{POST(e){return Is("/admin/store/upload?"+new URLSearchParams({token:it.getToken(),_t:`${it.UnixDate()}`}),{method:"POST",body:e})}}},n1="https://istore.linkease.com",vr=(e,t)=>(e=`${n1}/api${e}`,At(e,t)),Mm={getStoreAppIcon(e){return`${n1}${e}`},list:{GET(){return vr("/store/list",{method:"GET"})}},tags:{GET(){return vr("/store/tags",{method:"GET"})}},expand:{POST(e){return vr("/store/expand",{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"},body:JSON.stringify(e)})}},star:{POST(e){return vr("/store/star",{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"},body:JSON.stringify(e)})}},download:{POST(e){return vr("/store/download",{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"},body:JSON.stringify(e)})}}};var xm=Object.freeze(Object.defineProperty({__proto__:null,Store:Lm,ApiStore:Mm},Symbol.toStringTag,{value:"Module"}));const hi=(e,t)=>(e=`/cgi-bin/luci/admin/istorex_api${e}`,At(e,t)),$m={Status:{Get:()=>hi("/status",{method:"GET"})},Updata:{POST:e=>hi("/update",{method:"POST",body:JSON.stringify(e)})}},Rm={BG:{POST(e){return hi("/upload-bg",{method:"POST",body:e})}}};var Bm=Object.freeze(Object.defineProperty({__proto__:null,Istorex:$m,Upload:Rm},Symbol.toStringTag,{value:"Module"}));const Um={AutoSetup:{POST(e){const t=new URLSearchParams;return t.set("token",it.getToken()),e.packages.forEach(n=>{t.append("packages",n)}),At("/cgi-bin/luci/admin/nas/quickstart/auto_setup",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:t})}},SetupResult:{GET(){return At("/cgi-bin/luci/admin/nas/quickstart/setup_result",{method:"GET"})}},Guide:{GlobalFolders:{GET(){return At("/cgi-bin/luci/istore/guide/global-folders/",{method:"GET",headers:{"Content-Type":"application/json;charset=utf-8"}})},POST(e){return At("/cgi-bin/luci/istore/guide/global-folders/",{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"},body:JSON.stringify(e)})}},DockerStatus:{GET(){return At("/cgi-bin/luci/istore/guide/docker/status/",{method:"GET"})}},DockerTransfer:{POST(e){return At("/cgi-bin/luci/istore/guide/docker/transfer/",{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"},body:JSON.stringify(e)})}}}},Ym={Get:{POST(e){return At("/cgi-bin/luci/istore/quickstart/get/",{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"},body:JSON.stringify(e)})}},Set:{POST(e){return At("/cgi-bin/luci/istore/quickstart/set/",{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"},body:JSON.stringify(e)})}},Delete:{POST(e){return At("/cgi-bin/luci/istore/quickstart/delete/",{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"},body:JSON.stringify(e)})}}};var Hm=Object.freeze(Object.defineProperty({__proto__:null,Quickstart:Um,Storage:Ym},Symbol.toStringTag,{value:"Module"}));const oe=gt(gt(gt(gt({},d4),xm),Bm),Hm);const cs=e=>(nt("data-v-840edaba"),e=e(),st(),e),Wm=["onSubmit"],Vm=cs(()=>d("div",{class:"action-container_header"},[d("span",{class:"title"},"\u52A8\u6001DDNS\u914D\u7F6E")],-1)),jm={class:"action-container_body"},Gm=cs(()=>d("div",{style:{padding:"15px"}},null,-1)),zm=cs(()=>d("div",{class:"label-name"},[d("span",null,"\u4F9B\u5E94\u5546")],-1)),Km={class:"label-value"},qm={class:"label-flex"},Jm={class:"label-radio"},Xm={class:"label-radio"},Zm={class:"label-radio"},Qm={class:"label-name"},e5={key:0,href:"https://doc.linkease.com/zh/guide/istoreos/basic/domain.html#%E9%98%BF%E9%87%8C%E4%BA%91",target:"_blank"},t5={key:1,href:"https://doc.linkease.com/zh/guide/istoreos/basic/domain.html#dnspod",target:"_blank"},n5={key:2,href:"https://doc.linkease.com/zh/guide/istoreos/basic/domain.html#%E8%8A%B1%E7%94%9F%E5%A3%B3",target:"_blank"},s5=cs(()=>d("div",{class:"label-value"},null,-1)),r5=cs(()=>d("div",{class:"label-name"},[d("span",null,"\u57DF\u540D")],-1)),a5={class:"label-value"},o5=cs(()=>d("div",{class:"label-name"},[d("span",null,"\u7528\u6237\u540D")],-1)),i5={class:"label-value"},l5=cs(()=>d("div",{class:"label-name"},[d("span",null,"\u5BC6\u7801")],-1)),u5={class:"label-value"},c5={class:"action-container_footer"},d5=cs(()=>d("div",{class:"auto"},null,-1)),f5=["disabled"],h5=["disabled"],_5=ue({__name:"index",props:{setupe:{type:String,default:"ipv4"},callback:{type:Function}},setup(e){const t=e,n=Ht(),s=()=>{n&&n.appContext.config.globalProperties.$close()},r=wt({ipVersion:t.setupe,serviceName:"ali",domain:"",userName:"",password:""}),a=le(!1),o=()=>te(this,null,function*(){a.value=!0;const i=fe.Loading("\u914D\u7F6E\u4E2D...");try{const l=yield oe.Guide.PostDdns.POST({ipVersion:r.ipVersion,serviceName:r.serviceName,domain:r.domain,userName:r.userName,password:r.password});if(l!=null&&l.data){const{error:u,scope:c,success:_}=l.data;if(u=="-100"&&c=="guide.ddns")throw"\u68C0\u6D4B\u5230\u4F60\u6709\u672A\u4FDD\u5B58\u7684\u914D\u7F6E\uFF0C\u53EF\u524D\u5F80\u9875\u9762\u53F3\u4E0A\u89D2\u70B9\u51FB\u67E5\u770B\uFF0C\u4FDD\u5B58\u5E76\u5E94\u7528\u6216\u8005\u6062\u590D\u914D\u7F6E\u540E\u7EE7\u7EED";if(u)throw u;if((_||0)==0){fe.Success("\u914D\u7F6E\u6210\u529F"),t.callback&&t.callback(r),s();return}}}catch(l){fe.Error(`${l}`)}finally{i.Close(),a.value=!1}});return(i,l)=>{const u=ht("app-action");return C(),Fe(u,null,{default:Ue(()=>[d("form",{class:"action-container form-container1",onSubmit:ls(o,["prevent"])},[Vm,d("div",jm,[Gm,zm,d("div",Km,[d("div",qm,[d("label",Jm,[Xe(d("input",{type:"radio",value:"ali","onUpdate:modelValue":l[0]||(l[0]=c=>r.serviceName=c)},null,512),[[es,r.serviceName,void 0,{trim:!0}]]),Et("\u963F\u91CC\u4E91 ")]),d("label",Xm,[Xe(d("input",{type:"radio",value:"dnspod","onUpdate:modelValue":l[1]||(l[1]=c=>r.serviceName=c)},null,512),[[es,r.serviceName,void 0,{trim:!0}]]),Et("Dnspod ")]),d("label",Zm,[Xe(d("input",{type:"radio",value:"oray","onUpdate:modelValue":l[2]||(l[2]=c=>r.serviceName=c)},null,512),[[es,r.serviceName,void 0,{trim:!0}]]),Et("\u82B1\u751F\u58F3 ")])])]),d("div",Qm,[d("p",null,[Et(" \u4E3A\u62E5\u6709\u52A8\u6001IP\u7684\u4E3B\u673A\u914D\u7F6E\u4E00\u4E2A\u56FA\u5B9A\u7684\u53EF\u8BBF\u95EE\u57DF\u540D "),r.serviceName=="ali"?(C(),N("a",e5,"\u67E5\u770B\u6559\u7A0B")):pe("",!0),r.serviceName=="dnspod"?(C(),N("a",t5,"\u67E5\u770B\u6559\u7A0B")):pe("",!0),r.serviceName=="oray"?(C(),N("a",n5,"\u67E5\u770B\u6559\u7A0B")):pe("",!0)])]),s5,r5,d("div",a5,[Xe(d("input",{type:"text",placeholder:"myhost.example.com",required:"","onUpdate:modelValue":l[3]||(l[3]=c=>r.domain=c)},null,512),[[nn,r.domain,void 0,{trim:!0}]])]),o5,d("div",i5,[Xe(d("input",{type:"text",placeholder:"\u8BF7\u8F93\u5165\u7528\u6237\u540D",required:"","onUpdate:modelValue":l[4]||(l[4]=c=>r.userName=c)},null,512),[[nn,r.userName,void 0,{trim:!0}]])]),l5,d("div",u5,[Xe(d("input",{type:"password",placeholder:"\u8BF7\u8F93\u5165\u5BC6\u7801",required:"","onUpdate:modelValue":l[5]||(l[5]=c=>r.password=c)},null,512),[[nn,r.password,void 0,{trim:!0}]])])]),d("div",c5,[d5,d("button",{class:"app-close",type:"button",onClick:l[6]||(l[6]=c=>s()),disabled:a.value}," \u5173\u95ED",8,f5),d("button",{class:"app-next",disabled:a.value},"\u4FDD\u5B58",8,h5)])],40,Wm)]),_:1})}}});var p5=he(_5,[["__scopeId","data-v-840edaba"]]);const m5=d("div",{class:"action-container_header"},[d("span",{class:"title"},"DDNSTO\u914D\u7F6E")],-1),g5={class:"action-container_body setup-install message"},v5={class:"action-container_footer"},y5=d("div",{class:"auto"},null,-1),b5=["disabled"],E5=["disabled"],k5=ue({__name:"install",props:{onSetup:{type:Function,required:!0}},setup(e){const t=e,n=wt({ok:!1,name:"app-meta-ddnsto",message:"\u68C0\u6D4B\u4E2D...",clear:()=>{t.onSetup("close")},next:()=>te(this,null,function*(){(yield a())?t.onSetup("login"):fe.Error("\u5B89\u88C5\u5931\u8D25")})}),s=le(!1),r=()=>te(this,null,function*(){s.value=!0;try{const o=yield oe.App.Check.POST({name:n.name});if(o!=null&&o.data){const{result:i,error:l}=o.data;if(l)throw l;i&&(i.status=="installed"&&t.onSetup("login"),i.status=="uninstalled"&&(n.message='\u9700\u8981\u5B89\u88C5DDNSTO\u63D2\u4EF6\uFF0C\u70B9\u51FB "\u5B89\u88C5" \u5F00\u59CB\u5B89\u88C5'))}}catch(o){n.message=`${o}`}finally{s.value=!1,n.ok=!0}}),a=()=>te(this,null,function*(){const o=n.name;try{yield oe.App.Install.POST({name:o})}catch(i){console.log(i)}return new Promise((i,l)=>te(this,null,function*(){let u=0;const c=setInterval(()=>te(this,null,function*(){if(u>10){clearInterval(c),l(!1);return}const _=yield oe.App.Check.POST({name:o});if(_!=null&&_.data){const{result:p}=_.data;if((p==null?void 0:p.status)=="installed"){clearInterval(c),i(!0);return}}u++}),3e3)}))});return r(),(o,i)=>(C(),N("form",{class:"action-container form-container1",onSubmit:i[1]||(i[1]=ls((...l)=>n.next&&n.next(...l),["prevent"]))},[m5,d("div",g5,X(n.message),1),d("div",v5,[y5,d("button",{class:"app-close",type:"button",onClick:i[0]||(i[0]=(...l)=>n.clear&&n.clear(...l)),disabled:s.value}," \u5173\u95ED",8,b5),n.ok?(C(),N("button",{key:0,class:"app-next",disabled:s.value},"\u5B89\u88C5",8,E5)):pe("",!0)])],32))}});const vl=e=>(nt("data-v-17e3ba10"),e=e(),st(),e),w5=["onSubmit"],S5=vl(()=>d("div",{class:"action-container_header"},[d("span",{class:"title"},"DDNSTO\u767B\u5F55")],-1)),C5=vl(()=>d("div",{class:"action-container_body"},[d("iframe",{src:"https://www.kooldns.cn/bind/#/auth?send=1&source=openwrt&callback=*"})],-1)),T5=vl(()=>d("div",{class:"auto"},null,-1)),F5=ue({__name:"login",props:{onSetup:{type:Function,required:!0},updateLoginConfig:{type:Function,required:!0}},setup(e){const t=e,n=()=>{t.onSetup("close")},s=()=>{t.onSetup("run")},r=a=>{if(a.data.auth=="ddnsto"){const{sign:o,token:i}=a.data;if(o&&i){removeEventListener("message",r),t.updateLoginConfig(o,i),s();return}}fe.Error("\u8BA4\u8BC1\u5931\u8D25")};return is(()=>{window.addEventListener("message",r)}),rr(()=>{removeEventListener("message",r)}),(a,o)=>(C(),N("form",{class:"action-container form-container1",onSubmit:ls(()=>{},["prevent"])},[S5,C5,d("div",{class:"action-container_footer"},[T5,d("button",{class:"app-close",type:"button",onClick:n}," \u5173\u95ED")])],40,w5))}});var D5=he(F5,[["__scopeId","data-v-17e3ba10"]]);const O5=["onSubmit"],P5=d("div",{class:"action-container_header"},[d("span",{class:"title"},"\u68C0\u67E5\u8FD0\u884C")],-1),N5={class:"action-container_body setup-install message"},I5=ue({__name:"run",props:{onSetup:{type:Function,required:!0},token:{type:String,required:!0},updateLocalConfig:{type:Function,required:!0}},setup(e){const t=e,n=le("\u6B63\u5728\u68C0\u6D4B\u63D2\u4EF6\u662F\u5426\u5DF2\u542F\u52A8...");(()=>te(this,null,function*(){var l;try{const u=yield oe.Guide.Ddnsto.POST({token:t.token});u!=null&&u.data&&(u.data.error&&(n.value=u.data.error),(((l=u==null?void 0:u.data)==null?void 0:l.success)||0)==0&&a())}catch(u){n.value=u}}))();const r=le(),a=()=>te(this,null,function*(){if((yield o())===!0){i();return}r.value=setInterval(()=>te(this,null,function*(){(yield o())===!0&&(clearInterval(r.value),i())}),2e3)}),o=()=>te(this,null,function*(){return new Promise(l=>te(this,null,function*(){try{const u=yield oe.App.Check.POST({name:"ddnsto",checkRunning:!0});if(u!=null&&u.data){u.data.error&&(n.value=u.data.error);const c=u.data.result;if((c==null?void 0:c.status)=="running"){l(!0);return}}l(!1)}catch(u){n.value=u,l(!1)}}))}),i=()=>te(this,null,function*(){try{const l=yield oe.Guide.Ddnsto.Config.GET();if(l!=null&&l.data){const{success:u,error:c,result:_}=l.data;c&&(n.value=c),(u||0)==0&&_&&(t.updateLocalConfig(_.netAddr,_.deviceId),t.onSetup("bind"))}}catch(l){n.value=l}});return rr(()=>{r.value&&clearInterval(r.value)}),(l,u)=>(C(),N("form",{class:"action-container form-container1",onSubmit:ls(()=>{},["prevent"])},[P5,d("div",N5,X(n.value),1)],40,O5))}});const A5=e=>(nt("data-v-394e5818"),e=e(),st(),e),L5=["onSubmit"],M5=A5(()=>d("div",{class:"action-container_header"},[d("span",{class:"title"},"DDNSTO\u57DF\u540D\u914D\u7F6E\u5411\u5BFC")],-1)),x5={class:"action-container_body"},$5=["src"],R5=ue({__name:"bind",props:{onSetup:{type:Function,required:!0},config:{type:Object,required:!0}},setup(e){const t=e,n=be(()=>{const{domain:a,token:o,sign:i,routerId:l,netaddr:u}=t.config,c=encodeURIComponent(a),_=encodeURIComponent(u);return`https://www.kooldns.cn/bind/#/domain?domain=${c}&sign=${i}&token=${o}&routerId=${l}&netaddr=${_}`}),s=a=>{if(a.data){const{auth:o,url:i}=a.data;o==="ddnsto"&&i&&(r(i),removeEventListener("message",s))}},r=a=>te(this,null,function*(){try{const o=yield oe.Guide.Ddnsto.Address.POST({address:a});if(o!=null&&o.data){const{success:i,error:l}=o.data;if(l)throw l;(i||0)==0&&(fe.Success("\u914D\u7F6E\u5B8C\u6210"),t.onSetup("close"))}}catch(o){fe.Error(`${o}`)}});return is(()=>{window.addEventListener("message",s)}),rr(()=>{removeEventListener("message",s)}),(a,o)=>(C(),N("form",{class:"action-container form-container1",onSubmit:ls(()=>{},["prevent"])},[M5,d("div",x5,[d("iframe",{src:n.value},null,8,$5)])],40,L5))}});var B5=he(R5,[["__scopeId","data-v-394e5818"]]);const U5=ue({__name:"index",props:{domain:{type:String,required:!0},callback:{type:Function}},setup(e){const t=e,n=Ht(),s=()=>{n&&n.appContext.config.globalProperties.$close()},r=wt({sign:"",token:"",netAddr:"",routerId:"",domain:t.domain}),a=(u,c)=>{r.sign=u,r.token=c},o=(u,c)=>{r.netAddr=u,r.routerId=c},i=le("install"),l=u=>{switch(u){case"install":case"login":case"bind":case"run":i.value=u;break;case"close":s();break}};return(u,c)=>{const _=ht("app-action");return C(),Fe(_,null,{default:Ue(()=>[i.value=="install"?(C(),Fe(k5,{key:0,onSetup:l})):i.value=="login"?(C(),Fe(D5,{key:1,onSetup:l,updateLoginConfig:a})):i.value=="run"?(C(),Fe(I5,{key:2,onSetup:l,token:r.token,updateLocalConfig:o},null,8,["token"])):i.value=="bind"?(C(),Fe(B5,{key:3,onSetup:l,config:{token:r.token,sign:r.sign,domain:r.domain,netaddr:r.netAddr,routerId:r.routerId}},null,8,["config"])):pe("",!0)]),_:1})}}});var Y5=he(U5,[["__scopeId","data-v-83f0ed5a"]]);const uo=e=>(nt("data-v-6d7a2f13"),e=e(),st(),e),H5={class:"action-container form-container1"},W5=uo(()=>d("div",{class:"action-container_header"},[d("span",{class:"title"},"\u683C\u5F0F\u5316")],-1)),V5={key:0,class:"confirm"},j5=uo(()=>d("div",null,[d("svg",{width:"71",height:"62",viewBox:"0 0 71 62",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[d("path",{d:"M69.666 58.2041L37.166 1.26531C36.6817 0.419133 35.8457 0 35.002 0C34.1582 0 33.3145 0.419133 32.8379 1.26531L0.337917 58.2041C-0.62302 59.8964 0.580104 62 2.50198 62H67.502C69.4238 62 70.627 59.8964 69.666 58.2041ZM32.502 23.4082C32.502 23.0602 32.7832 22.7755 33.127 22.7755H36.877C37.2207 22.7755 37.502 23.0602 37.502 23.4082V37.9592C37.502 38.3071 37.2207 38.5918 36.877 38.5918H33.127C32.7832 38.5918 32.502 38.3071 32.502 37.9592V23.4082ZM35.002 51.2449C34.0207 51.2246 33.0863 50.8158 32.3994 50.1061C31.7125 49.3965 31.3277 48.4425 31.3277 47.449C31.3277 46.4554 31.7125 45.5015 32.3994 44.7918C33.0863 44.0822 34.0207 43.6733 35.002 43.6531C35.9833 43.6733 36.9176 44.0822 37.6046 44.7918C38.2915 45.5015 38.6762 46.4554 38.6762 47.449C38.6762 48.4425 38.2915 49.3965 37.6046 50.1061C36.9176 50.8158 35.9833 51.2246 35.002 51.2449Z",fill:"#FFC53D"})]),d("span",null,"\u786E\u5B9A\u8981\u683C\u5F0F\u5316\uFF1F"),d("div",null,[d("span",null,"\u683C\u5F0F\u5316\u4F1A\u6E05\u7A7A/dev/sda\u76D8\u7684\u6570\u636E"),d("span",null,"\uFF08\u683C\u5F0F\u5316\u4E3AEXT4\u6587\u4EF6\u7CFB\u7EDF\uFF0C\u4F20\u8F93\u901F\u5EA6\u66F4\u5FEB\uFF09")])],-1)),G5=[j5],z5={key:1,class:"success"},K5=uo(()=>d("div",null,[d("svg",{width:"100",height:"100",viewBox:"0 0 100 100",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[d("path",{d:"M50 0C22.3884 0 0 22.3884 0 50C0 77.6116 22.3884 100 50 100C77.6116 100 100 77.6116 100 50C100 22.3884 77.6116 0 50 0ZM71.596 33.6719L48.0915 66.2612C47.763 66.7197 47.3299 67.0933 46.8282 67.351C46.3265 67.6088 45.7705 67.7432 45.2065 67.7432C44.6424 67.7432 44.0865 67.6088 43.5847 67.351C43.083 67.0933 42.6499 66.7197 42.3214 66.2612L28.404 46.9754C27.9799 46.3839 28.404 45.558 29.1295 45.558H34.3638C35.5022 45.558 36.5848 46.1049 37.2545 47.0424L45.2009 58.0692L62.7455 33.7388C63.4152 32.8125 64.4866 32.2545 65.6362 32.2545H70.8705C71.596 32.2545 72.0201 33.0804 71.596 33.6719Z",fill:"#52C41A"})]),d("span",null,"\u683C\u5F0F\u5316\u6210\u529F")],-1)),q5=[K5],J5={class:"action-container_footer"},X5=uo(()=>d("div",{class:"auto"},null,-1)),Z5=ue({__name:"format",props:{data:{type:Object,required:!0},onClose:{type:Function,required:!0}},setup(e){const t=e,n=wt({formated:!1}),s=()=>te(this,null,function*(){if(n.formated)t.onClose();else{const r=fe.Loading("\u6B63\u5728\u683C\u5F0F\u5316...");console.log("format",t.data);try{yield oe.Nas.Disk.Partition.Format.POST(t.data)}catch(a){console.log(a)}n.formated=!0,r.Close()}});return(r,a)=>(C(),N("form",H5,[W5,n.formated===!1?(C(),N("div",V5,G5)):pe("",!0),n.formated?(C(),N("div",z5,q5)):pe("",!0),d("div",J5,[X5,n.formated===!1?(C(),N("button",{key:0,class:"app-close",type:"button",onClick:a[0]||(a[0]=(...o)=>e.onClose&&e.onClose(...o))}," \u53D6\u6D88 ")):pe("",!0),d("button",{class:"app-next",onClick:s},"\u786E\u5B9A")])]))}});var Q5=he(Z5,[["__scopeId","data-v-6d7a2f13"]]);const e7=ue({__name:"index",props:{step:{type:String,required:!0},data:{type:Object,required:!0},callback:{type:Function}},setup(e){const t=e,n=Ht(),s=()=>{n&&n.appContext.config.globalProperties.$close(),t.callback&&t.callback()},r=le(t.step);return(a,o)=>{const i=ht("app-action");return C(),Fe(i,null,{default:Ue(()=>[r.value=="format"?(C(),Fe(Q5,{key:0,onClose:s,data:e.data},null,8,["data"])):pe("",!0)]),_:1})}}});var t7=he(e7,[["__scopeId","data-v-16aaa3d0"]]);const co=e=>(nt("data-v-4a0aaeb7"),e=e(),st(),e),n7=["onSubmit"],s7={class:"action-container_header"},r7={class:"title"},a7={class:"action-container_body"},o7=co(()=>d("div",{class:"label-name"},[d("span",null,"\u7528\u6237\u540D")],-1)),i7={class:"label-value"},l7=["disabled"],u7=co(()=>d("div",{class:"label-name"},[d("span",null,"\u7528\u6237\u5BC6\u7801")],-1)),c7={class:"label-value"},d7=co(()=>d("div",{class:"label-name"},[d("span",null,"\u5BC6\u7801\u786E\u8BA4")],-1)),f7={class:"label-value"},h7={class:"action-container_footer"},_7=co(()=>d("div",{class:"auto"},null,-1)),p7=["disabled"],m7=["disabled"],g7=ue({__name:"user",props:{user:{type:Object,required:!1},callback:{type:Function}},setup(e){var l,u;const t=e,n=Ht(),s=()=>{n&&n.appContext.config.globalProperties.$close()},r=wt({userName:((l=t.user)==null?void 0:l.userName)||"",password:((u=t.user)==null?void 0:u.password)||""}),a=le(""),o=le(!1),i=()=>te(this,null,function*(){var p,y;if(r.password!==a.value)return fe.Warning("\u5BC6\u7801\u4E0D\u4E00\u81F4\uFF0C\u8BF7\u91CD\u65B0\u8F93\u5165");o.value=!0;let c;const _=fe.Loading("\u914D\u7F6E\u4E2D...");try{if((p=t.user)!=null&&p.userName?c=yield oe.Share.User.UPDATE({userName:r.userName,password:r.password}):c=yield oe.Share.User.ADD({userName:r.userName,password:r.password}),c!=null&&c.data){const{error:E,scope:k,success:S}=c.data;if(S===-1e3&&E)return fe.Warning(E);if((S||0)==0){fe.Success((y=t.user)!=null&&y.userName?"\u7F16\u8F91\u6210\u529F":"\u65B0\u5EFA\u6210\u529F"),t.callback&&t.callback({userName:r.userName}),s();return}}}catch(E){fe.Error(`${E}`)}finally{_.Close(),o.value=!1}});return(c,_)=>{const p=ht("app-action");return C(),Fe(p,null,{default:Ue(()=>{var y;return[d("form",{class:"action-container form-container1",onSubmit:ls(i,["prevent"])},[d("div",s7,[d("span",r7,X((y=t.user)!=null&&y.userName?"\u7F16\u8F91\u7528\u6237":"\u65B0\u5EFA\u7528\u6237"),1)]),d("div",a7,[o7,d("div",i7,[Xe(d("input",{type:"text",disabled:t.user!==void 0,placeholder:"\u8BF7\u8F93\u5165\u7528\u6237\u540D",required:"","onUpdate:modelValue":_[0]||(_[0]=E=>r.userName=E)},null,8,l7),[[nn,r.userName,void 0,{trim:!0}]])]),u7,d("div",c7,[Xe(d("input",{type:"password",placeholder:"\u8BF7\u8F93\u5165\u5BC6\u7801",required:"","onUpdate:modelValue":_[1]||(_[1]=E=>r.password=E)},null,512),[[nn,r.password,void 0,{trim:!0}]])]),d7,d("div",f7,[Xe(d("input",{type:"password",placeholder:"\u8BF7\u8F93\u5165\u5BC6\u7801",required:"","onUpdate:modelValue":_[2]||(_[2]=E=>a.value=E)},null,512),[[nn,a.value,void 0,{trim:!0}]])])]),d("div",h7,[_7,d("button",{class:"app-close",type:"button",onClick:_[3]||(_[3]=E=>s()),disabled:o.value}," \u5173\u95ED ",8,p7),d("button",{class:"app-next",disabled:o.value},"\u4FDD\u5B58",8,m7)])],40,n7)]}),_:1})}}});var v7=he(g7,[["__scopeId","data-v-4a0aaeb7"]]);let y7=0;const ta=(e,t)=>{const n=y7++,s=uf();if(s.addValue(n))return;const r=document.createElement("div");document.body.appendChild(r);const a=Wi(e,t);a.use(p6),s.index=n,a.config.globalProperties.key=n,a.config.globalProperties.$close=()=>{o()};const o=()=>{a.unmount(),r.remove(),s.delValue(n)};return a.use(L6),a.mount(r),s.setValue(n,a),{Close:o}},oc=e=>ta(B6,e),Pw=e=>ta(p5,e),Nw=e=>ta(Y5,e),Iw=e=>ta(t7,e),Aw=e=>ta(v7,e),s1=(e,t)=>{window.taskd.show_log(e,t)},r1=e=>{window.taskd.show_log(e,!1)},a1=e=>{window.taskd.remove(e)},b7={Open:()=>s1("istore",!0),Close:()=>r1("istore"),Remove:()=>a1("istore")},E7={Open:()=>s1("auto_setup",!1),Close:()=>r1("auto_setup"),Remove:()=>a1("auto_setup")};var Ms={istore:b7,autoSetup:E7};const k7=af,Zt=`${location.protocol}//${location.hostname}`,ic=new Map([["aria2",()=>{window.open("/ariang/","_blank")}],["transmission",()=>{const e=`${Zt}:9091/transmission/web/`;window.open(e,"_blank")}],["jellyfin",()=>{const e=`${Zt}:8096/web/index.html`;window.open(e,"_blank")}],["linkease",()=>{const e=`${Zt}:8897/web/index.html`;window.open(e,"_blank")}],["wxedge",()=>{const e=`${Zt}:18888`;window.open(e,"_blank")}],["kodexplorer",()=>{const e=`${Zt}:8081`;window.open(e,"_blank")}],["homeassistant",()=>{const e=`${Zt}:8123`;window.open(e,"_blank")}],["gowebdav",()=>{const e=`${Zt}:6086`;window.open(e,"_blank")}],["heimdall",()=>{const e=`${Zt}:8088`;window.open(e,"_blank")}],["alist",()=>{const e=`${Zt}:5244`;window.open(e,"_blank")}],["nastools",()=>{const e=`${Zt}:3003`;window.open(e,"_blank")}],["qbittorrent",()=>{const e=`${Zt}:8080`;window.open(e,"_blank")}]]),ur=or("system",{state:()=>({keys:Math.round(Math.random()*100),reloadCount:0,cpu:{usage:0,temperature:0},memery:{total:"",available:"",availablePercentage:0},network:{defaultInterface:"",internetConnected:!1,networkInfo:"",proto:"",ipv4addr:"",ipv6addr:"",gateway:"",dnsList:[],dnsProto:"",uptime:"",uptimeStamp:0,dnsReady:!1},device:{devices:[]},version:{kernelVersion:"",firmwareVersion:""},time:{uptime:0,uptimeHuman:"",localtime:""},updown:{up:0,download:0},disk:{count:-1,disks:[],rootDisks:[],mountedDisks:[],errorDisks:[]},raid:{disks:[]},toips:[],nasStatus:{linkease:!1,sambas:[],webdav:{shareName:"",sharePath:""}},localtime:0}),getters:{getAsyncNetworkProto(){return te(this,null,function*(){return new Promise((e,t)=>{if(this.network.proto&&this.network.proto!=""){e(this.network.proto);return}const n=setInterval(()=>{if(this.network.proto&&this.network.proto!=""){clearInterval(n),e(this.network.proto);return}},100)})})}},actions:{getSystemData(){return te(this,null,function*(){const e={cpu:{usage:0,temperature:0},memery:{total:"",available:"",availablePercentage:0}};try{const t=yield oe.System.CPU.Status.GET();if(t.data){const{success:n,error:s,scope:r,detail:a,result:o}=t.data;o&&o.usage!=null&&(e.cpu.usage=o.usage)}}catch(t){console.error(t)}try{const t=yield oe.System.CPU.Temperature.GET();if(t.data){const{success:n,error:s,scope:r,detail:a,result:o}=t.data;o&&o.temperature!=null&&(e.cpu.temperature=o.temperature)}}catch(t){console.error(t)}try{const t=yield oe.System.Memery.Status.GET();if(t.data){const{success:n,error:s,scope:r,detail:a,result:o}=t.data;if(o){const{available:i,availablePercentage:l,total:u}=o;i!=null&&(e.memery.available=i),l!=null&&(e.memery.availablePercentage=l),u!=null&&(e.memery.total=u)}}}catch(t){console.error(t)}return e})},getUpDown(){return te(this,null,function*(){try{let e=0,t=0,n=0,s=0;const r=yield ec();r&&(e=r.up||0,t=r.down||0);const a=yield new Promise((l,u)=>{setTimeout(()=>{const c=ec();l(c)},1e3)});a&&(n=a.up||0,s=a.down||0);const o=n-e,i=s-t;o>=0&&i>=0?(this.updown.up=o,this.updown.download=i):(this.updown.up=0,this.updown.download=0)}catch(e){}})},getDevice(){return te(this,null,function*(){oe.Network.Device.List.GET().then(e=>{if(e!=null&&e.data){const{result:t}=e==null?void 0:e.data;this.device.devices=(t==null?void 0:t.devices)||[]}})})},getNetwork(){return te(this,null,function*(){oe.Network.Status.GET().then(e=>{if(e!=null&&e.data){const{result:t}=e==null?void 0:e.data;t&&(this.network.internetConnected=t.internetConnected,this.network.defaultInterface=t.defaultInterface,this.network.networkInfo=t.networkInfo,this.network.proto=t.proto,this.network.ipv4addr=t.ipv4addr,this.network.ipv6addr=t.ipv6addr,this.network.gateway=t.gateway,this.network.dnsList=t.dnsList,this.network.dnsProto=t.dnsProto,this.network.uptime=t.uptime,this.network.uptimeStamp=t.uptimeStamp,this.network.dnsReady=t.dnsReady,this.network.internetConnected=t.internetConnected)}})})},getVersion(){return te(this,null,function*(){oe.System.Version.GET().then(e=>{const{result:t}=e.data;t&&(this.version.firmwareVersion=t.firmwareVersion||"",this.version.kernelVersion=t.kernelVersion||"")})})},getTime(){return te(this,null,function*(){oe.System.Time.GET().then(e=>{const{result:t}=e.data;t&&(this.time.localtime=t.localtime||"",this.time.uptime=t.uptime||0,this.time.uptimeHuman=t.uptimeHuman||"",this.localtime=Date.parse(this.time.localtime+" GMT +0"),setInterval(()=>{this.localtime+=1e3},1e3))})})},getDisks(){return te(this,null,function*(){try{const e=yield oe.Nas.Disk.Status.GET();if(e.data){const{result:t}=e.data,n=(t==null?void 0:t.disks)||[];this.disk.disks=n,this.disk.rootDisks=[],this.disk.errorDisks=[],this.disk.mountedDisks=[];const s=n.length,r=this.disk.count;r>=0&&s>0&&s>r&&this.addToips({info:"\u68C0\u6D4B\u5230\u65B0\u78C1\u76D8\u63D2\u5165",path:"/disk"}),this.disk.count=s,n.forEach(a=>{a.isSystemRoot?this.disk.rootDisks.push(a):a.errorInfo?this.disk.errorDisks.push(a):this.disk.mountedDisks.push(a)})}}catch(e){console.log(e)}})},getRaid(){return te(this,null,function*(){try{const e=yield oe.Raid.List.GET();if(e!=null&&e.data){const{success:t,error:n,result:s}=e.data;if(s&&(this.raid.disks=s.disks||[]),n)throw n}}catch(e){console.log(e)}})},initData(){return te(this,null,function*(){this.getDevice(),this.getNetwork(),this.getVersion(),this.getTime(),this.getUpDown(),this.getDisks(),this.getRaid(),setInterval(()=>{this.network.uptimeStamp&&this.network.uptimeStamp++,this.time.uptime&&this.time.uptime++},1e3)})},addToips(e){return te(this,null,function*(){const t=r=>{this.toips.forEach((a,o)=>{if(a.key==r){this.toips.splice(o,1);return}})},n=this.toips.length,s={key:n,info:e.info,path:e.path,f:()=>{e.f&&e.f(),t(n)}};this.toips.push(s),setTimeout(()=>{t(n)},5e3)})},reload(){return te(this,null,function*(){this.reloadCount++})},incr(){return te(this,null,function*(){this.keys++})}}}),o1=or("app",{state:()=>({ok:!1,localApps:[],remoteApps:[],installAppList:{},removeAppList:{},tags:[],appsExpand:{}}),actions:{getApp(){return te(this,null,function*(){if(!this.ok){try{yield Promise.all([this.getLocalApp(),this.getRemoteApp(),this.getAppTags()])}catch(e){console.log(e)}finally{this.ok=!0}this.getAppData()}})},getAppTags(){return te(this,null,function*(){var t;const e=yield oe.ApiStore.tags.GET();(t=e.data.result)!=null&&t.tags&&(this.tags=e.data.result.tags)})},getLocalApp(){return te(this,null,function*(){var e,t;try{let n;const s=yield oe.System.Version.GET(),r=((e=s.data.result)==null?void 0:e.quickstart)&&((t=s.data.result)==null?void 0:t.quickstart.split("."));if(r&&Number(r[0])===0&&Number(r[1])<7&&Number(r[2])<21?n=yield oe.Store.installed.GET():n=yield oe.Store.installedList.GET(),n&&n.data){const a=n.data||[];for(let o=0;oit.formatDate(a[o].time*1e3)||"",a[o].getIcon=()=>`/luci-static/resources/app-icons/${a[o].name}.png`,a[o].openApp=()=>{oc({title:a[o].name,src:a[o].entry})},a[o].isInstall=()=>!0,a[o].uninstall=()=>te(this,null,function*(){const i=a[o].name;if(confirm(`are you sure you want to uninstall ${i}?`))try{const u=yield oe.Store.remove.POST(a[o].name);if(u.data.code===0&&Ms.istore.Open(),u.data.stderr)throw u.data.stderr}catch(u){fe.Error(`${u}`)}}),a[o].update=()=>te(this,null,function*(){const i=a[o].name;try{const l=yield oe.Store.upgrade.POST(i);if(l.data&&(l.data.code===0&&Ms.istore.Open(),l.data.stderr))throw l.data.stderr}catch(l){fe.Error(`${l}`)}}),a[o].isUpdate=()=>{if(a[o].isInstall()){const i=this.removeAppList[a[o].name],l=this.installAppList[a[o].name];return(i==null?void 0:i.version)!=(l==null?void 0:l.version)}return!1},a[o].isWebUrl=()=>ic.has(a[o].name),a[o].openWebUrl=()=>{const i=ic.get(a[o].name);i&&i()};this.localApps=a}}catch(n){console.log(n)}})},getRemoteApp(){return te(this,null,function*(){try{const e=yield oe.ApiStore.list.GET();if(e.data){const{result:t}=e.data;if(t){const{total:n,apps:s}=t;for(let r=0;rit.formatDate(s[r].time*1e3)||"",s[r].getIcon=()=>oe.ApiStore.getStoreAppIcon(s[r].icon),s[r].openApp=()=>{oc({title:s[r].name,src:s[r].entry})},s[r].isInstall=()=>!!this.installAppList[s[r].name],s[r].install=()=>te(this,null,function*(){try{const a=yield oe.Store.install.POST(s[r].name);if(a.data.code===0&&Ms.istore.Open(),a.data.stderr)throw a.data.stderr}catch(a){fe.Error(`${a}`)}}),s[r].uninstall=()=>te(this,null,function*(){const a=s[r].name,o=s[r].title;if(confirm(`are you sure you want to uninstall ${o}?`))try{const l=yield oe.Store.remove.POST(a);if(l.data.code===0&&Ms.istore.Open(),l.data.stderr)throw l.data.stderr}catch(l){fe.Error(`${l}`)}}),s[r].update=()=>te(this,null,function*(){const a=s[r].name;try{const o=yield oe.Store.upgrade.POST(a);if(o.data&&(o.data.code===0&&Ms.istore.Open(),o.data.stderr))throw o.data.stderr}catch(o){fe.Error(`${o}`)}}),s[r].isUpdate=()=>{if(s[r].isInstall()){const a=this.removeAppList[s[r].name],o=this.installAppList[s[r].name];return(a==null?void 0:a.version)!=(o==null?void 0:o.version)}return!1},this.removeAppList[s[r].name]=s[r];this.remoteApps=s}}}catch(e){console.log(e)}})},getAppData(){return te(this,null,function*(){const e=[];for(const t in this.removeAppList)e.push(t);try{const t=yield oe.ApiStore.expand.POST({appsId:e,deviceId:it.getDeviceId()});if(t.data){const{result:n}=t.data;if(n){this.appsExpand=n;let s=[];for(let r of this.remoteApps)n[r.name]&&s.push(gt(gt({},n[r.name]),r)),this.remoteApps=s}}}catch(t){console.log(t)}})}}}),Lw=or("network",{state:()=>({status:{},statistics:{},deviceList:{}}),getters:{},actions:{updateNetworkStatus(e){this.status=e},requestNetworkStatistics(){return te(this,null,function*(){try{const e=yield oe.Network.Statistics.GET();e!=null&&e.data&&e.data.result&&(this.statistics=e.data.result)}catch(e){console.log(e)}})},requestDeviceList(){oe.Network.Device.List.GET().then(e=>{if(e!=null&&e.data){const{result:t}=e==null?void 0:e.data;t&&(this.deviceList=t)}})},incrTime(){this.status.uptimeStamp&&this.status.uptimeStamp++}}}),w7=or("system",{state:()=>({version:{},checkUpdate:null,systemStatus:{}}),getters:{},actions:{incrTime(){var e;(e=this.systemStatus)!=null&&e.uptime&&this.systemStatus.uptime++},requestVersion(){oe.System.Version.GET().then(e=>{var t;(t=e==null?void 0:e.data)!=null&&t.result&&(this.version=e.data.result)})},requestCheckUpdate(){oe.System.CheckUpdate.GET().then(e=>{var t;(t=e==null?void 0:e.data)!=null&&t.result&&(this.checkUpdate=e.data.result)})},updateSystemStatus(e){this.systemStatus=e}}}),Mw=or("interfacer",{state:()=>({portitemStyle:{show:!1,left:0,top:0,portitem:{name:"",macAddress:"",linkSpeed:"",linkState:"",rx_packets:"",tx_packets:"",interfaceNames:[],master:"",duplex:""}}})}),fa=[],S7=()=>te(void 0,null,function*(){fa.length>0&&(fa.forEach(t=>{clearInterval(t)}),fa.splice(0,fa.length));const e=ur();w7(),e.getDevice(),e.getNetwork(),e.getVersion(),e.getTime(),e.getUpDown(),e.getDisks(),e.getRaid()});/*! * vue-router v4.2.4 * (c) 2023 Eduardo San Martin Morote * @license MIT */const xs=typeof window!="undefined";function C7(e){return e.__esModule||e[Symbol.toStringTag]==="Module"}const $e=Object.assign;function Oo(e,t){const n={};for(const s in t){const r=t[s];n[s]=ln(r)?r.map(e):e(r)}return n}const Pr=()=>{},ln=Array.isArray,T7=/\/$/,F7=e=>e.replace(T7,"");function Po(e,t,n="/"){let s,r={},a="",o="";const i=t.indexOf("#");let l=t.indexOf("?");return i=0&&(l=-1),l>-1&&(s=t.slice(0,l),a=t.slice(l+1,i>-1?i:t.length),r=e(a)),i>-1&&(s=s||t.slice(0,i),o=t.slice(i,t.length)),s=N7(s!=null?s:t,n),{fullPath:s+(a&&"?")+a+o,path:s,query:r,hash:o}}function D7(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function lc(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function O7(e,t,n){const s=t.matched.length-1,r=n.matched.length-1;return s>-1&&s===r&&Zs(t.matched[s],n.matched[r])&&i1(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function Zs(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function i1(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!P7(e[n],t[n]))return!1;return!0}function P7(e,t){return ln(e)?uc(e,t):ln(t)?uc(t,e):e===t}function uc(e,t){return ln(t)?e.length===t.length&&e.every((n,s)=>n===t[s]):e.length===1&&e[0]===t}function N7(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),s=e.split("/"),r=s[s.length-1];(r===".."||r===".")&&s.push("");let a=n.length-1,o,i;for(o=0;o1&&a--;else break;return n.slice(0,a).join("/")+"/"+s.slice(o-(o===s.length?1:0)).join("/")}var Gr;(function(e){e.pop="pop",e.push="push"})(Gr||(Gr={}));var Nr;(function(e){e.back="back",e.forward="forward",e.unknown=""})(Nr||(Nr={}));function I7(e){if(!e)if(xs){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),F7(e)}const A7=/^[^#]+#/;function L7(e,t){return e.replace(A7,"#")+t}function M7(e,t){const n=document.documentElement.getBoundingClientRect(),s=e.getBoundingClientRect();return{behavior:t.behavior,left:s.left-n.left-(t.left||0),top:s.top-n.top-(t.top||0)}}const fo=()=>({left:window.pageXOffset,top:window.pageYOffset});function x7(e){let t;if("el"in e){const n=e.el,s=typeof n=="string"&&n.startsWith("#"),r=typeof n=="string"?s?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!r)return;t=M7(r,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 cc(e,t){return(history.state?history.state.position-t:-1)+e}const _i=new Map;function $7(e,t){_i.set(e,t)}function R7(e){const t=_i.get(e);return _i.delete(e),t}let B7=()=>location.protocol+"//"+location.host;function l1(e,t){const{pathname:n,search:s,hash:r}=t,a=e.indexOf("#");if(a>-1){let i=r.includes(e.slice(a))?e.slice(a).length:1,l=r.slice(i);return l[0]!=="/"&&(l="/"+l),lc(l,"")}return lc(n,e)+s+r}function U7(e,t,n,s){let r=[],a=[],o=null;const i=({state:p})=>{const y=l1(e,location),E=n.value,k=t.value;let S=0;if(p){if(n.value=y,t.value=p,o&&o===E){o=null;return}S=k?p.position-k.position:0}else s(y);r.forEach(m=>{m(n.value,E,{delta:S,type:Gr.pop,direction:S?S>0?Nr.forward:Nr.back:Nr.unknown})})};function l(){o=n.value}function u(p){r.push(p);const y=()=>{const E=r.indexOf(p);E>-1&&r.splice(E,1)};return a.push(y),y}function c(){const{history:p}=window;!p.state||p.replaceState($e({},p.state,{scroll:fo()}),"")}function _(){for(const p of a)p();a=[],window.removeEventListener("popstate",i),window.removeEventListener("beforeunload",c)}return window.addEventListener("popstate",i),window.addEventListener("beforeunload",c,{passive:!0}),{pauseListeners:l,listen:u,destroy:_}}function dc(e,t,n,s=!1,r=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:r?fo():null}}function Y7(e){const{history:t,location:n}=window,s={value:l1(e,n)},r={value:t.state};r.value||a(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function a(l,u,c){const _=e.indexOf("#"),p=_>-1?(n.host&&document.querySelector("base")?e:e.slice(_))+l:B7()+e+l;try{t[c?"replaceState":"pushState"](u,"",p),r.value=u}catch(y){console.error(y),n[c?"replace":"assign"](p)}}function o(l,u){const c=$e({},t.state,dc(r.value.back,l,r.value.forward,!0),u,{position:r.value.position});a(l,c,!0),s.value=l}function i(l,u){const c=$e({},r.value,t.state,{forward:l,scroll:fo()});a(c.current,c,!0);const _=$e({},dc(s.value,l,null),{position:c.position+1},u);a(l,_,!1),s.value=l}return{location:s,state:r,push:i,replace:o}}function u1(e){e=I7(e);const t=Y7(e),n=U7(e,t.state,t.location,t.replace);function s(a,o=!0){o||n.pauseListeners(),history.go(a)}const r=$e({location:"",base:e,go:s,createHref:L7.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}function H7(e){return e=location.host?e||location.pathname+location.search:"",e.includes("#")||(e+="#"),u1(e)}function W7(e){return typeof e=="string"||e&&typeof e=="object"}function c1(e){return typeof e=="string"||typeof e=="symbol"}const Hn={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},d1=Symbol("");var fc;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(fc||(fc={}));function Qs(e,t){return $e(new Error,{type:e,[d1]:!0},t)}function wn(e,t){return e instanceof Error&&d1 in e&&(t==null||!!(e.type&t))}const hc="[^/]+?",V7={sensitive:!1,strict:!1,start:!0,end:!0},j7=/[.+*?^${}()[\]/\\]/g;function G7(e,t){const n=$e({},V7,t),s=[];let r=n.start?"^":"";const a=[];for(const u of e){const c=u.length?[]:[90];n.strict&&!u.length&&(r+="/");for(let _=0;_t.length?t.length===1&&t[0]===40+40?1:-1:0}function K7(e,t){let n=0;const s=e.score,r=t.score;for(;n0&&t[t.length-1]<0}const q7={type:0,value:""},J7=/[a-zA-Z0-9_]/;function X7(e){if(!e)return[[]];if(e==="/")return[[q7]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(y){throw new Error(`ERR (${n})/"${u}": ${y}`)}let n=0,s=n;const r=[];let a;function o(){a&&r.push(a),a=[]}let i=0,l,u="",c="";function _(){!u||(n===0?a.push({type:0,value:u}):n===1||n===2||n===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:c,repeatable:l==="*"||l==="+",optional:l==="*"||l==="?"})):t("Invalid state to consume buffer"),u="")}function p(){u+=l}for(;i{o(w)}:Pr}function o(c){if(c1(c)){const _=s.get(c);_&&(s.delete(c),n.splice(n.indexOf(_),1),_.children.forEach(o),_.alias.forEach(o))}else{const _=n.indexOf(c);_>-1&&(n.splice(_,1),c.record.name&&s.delete(c.record.name),c.children.forEach(o),c.alias.forEach(o))}}function i(){return n}function l(c){let _=0;for(;_=0&&(c.record.path!==n[_].record.path||!f1(c,n[_]));)_++;n.splice(_,0,c),c.record.name&&!mc(c)&&s.set(c.record.name,c)}function u(c,_){let p,y={},E,k;if("name"in c&&c.name){if(p=s.get(c.name),!p)throw Qs(1,{location:c});k=p.record.name,y=$e(pc(_.params,p.keys.filter(w=>!w.optional).map(w=>w.name)),c.params&&pc(c.params,p.keys.map(w=>w.name))),E=p.stringify(y)}else if("path"in c)E=c.path,p=n.find(w=>w.re.test(E)),p&&(y=p.parse(E),k=p.record.name);else{if(p=_.name?s.get(_.name):n.find(w=>w.re.test(_.path)),!p)throw Qs(1,{location:c,currentLocation:_});k=p.record.name,y=$e({},_.params,c.params),E=p.stringify(y)}const S=[];let m=p;for(;m;)S.unshift(m.record),m=m.parent;return{name:k,path:E,params:y,matched:S,meta:n9(S)}}return e.forEach(c=>a(c)),{addRoute:a,resolve:u,removeRoute:o,getRoutes:i,getRecordMatcher:r}}function pc(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function e9(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:t9(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 t9(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const s in e.components)t[s]=typeof n=="object"?n[s]:n;return t}function mc(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function n9(e){return e.reduce((t,n)=>$e(t,n.meta),{})}function gc(e,t){const n={};for(const s in e)n[s]=s in t?t[s]:e[s];return n}function f1(e,t){return t.children.some(n=>n===e||f1(e,n))}const h1=/#/g,s9=/&/g,r9=/\//g,a9=/=/g,o9=/\?/g,_1=/\+/g,i9=/%5B/g,l9=/%5D/g,p1=/%5E/g,u9=/%60/g,m1=/%7B/g,c9=/%7C/g,g1=/%7D/g,d9=/%20/g;function yl(e){return encodeURI(""+e).replace(c9,"|").replace(i9,"[").replace(l9,"]")}function f9(e){return yl(e).replace(m1,"{").replace(g1,"}").replace(p1,"^")}function pi(e){return yl(e).replace(_1,"%2B").replace(d9,"+").replace(h1,"%23").replace(s9,"%26").replace(u9,"`").replace(m1,"{").replace(g1,"}").replace(p1,"^")}function h9(e){return pi(e).replace(a9,"%3D")}function _9(e){return yl(e).replace(h1,"%23").replace(o9,"%3F")}function p9(e){return e==null?"":_9(e).replace(r9,"%2F")}function Aa(e){try{return decodeURIComponent(""+e)}catch(t){}return""+e}function m9(e){const t={};if(e===""||e==="?")return t;const s=(e[0]==="?"?e.slice(1):e).split("&");for(let r=0;ra&&pi(a)):[s&&pi(s)]).forEach(a=>{a!==void 0&&(t+=(t.length?"&":"")+n,a!=null&&(t+="="+a))})}return t}function g9(e){const t={};for(const n in e){const s=e[n];s!==void 0&&(t[n]=ln(s)?s.map(r=>r==null?null:""+r):s==null?s:""+s)}return t}const v9=Symbol(""),yc=Symbol(""),ho=Symbol(""),v1=Symbol(""),mi=Symbol("");function yr(){let e=[];function t(s){return e.push(s),()=>{const r=e.indexOf(s);r>-1&&e.splice(r,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function jn(e,t,n,s,r){const a=s&&(s.enterCallbacks[r]=s.enterCallbacks[r]||[]);return()=>new Promise((o,i)=>{const l=_=>{_===!1?i(Qs(4,{from:n,to:t})):_ instanceof Error?i(_):W7(_)?i(Qs(2,{from:t,to:_})):(a&&s.enterCallbacks[r]===a&&typeof _=="function"&&a.push(_),o())},u=e.call(s&&s.instances[r],t,n,l);let c=Promise.resolve(u);e.length<3&&(c=c.then(l)),c.catch(_=>i(_))})}function No(e,t,n,s){const r=[];for(const a of e)for(const o in a.components){let i=a.components[o];if(!(t!=="beforeRouteEnter"&&!a.instances[o]))if(y9(i)){const u=(i.__vccOpts||i)[t];u&&r.push(jn(u,n,s,a,o))}else{let l=i();r.push(()=>l.then(u=>{if(!u)return Promise.reject(new Error(`Couldn't resolve component "${o}" at "${a.path}"`));const c=C7(u)?u.default:u;a.components[o]=c;const p=(c.__vccOpts||c)[t];return p&&jn(p,n,s,a,o)()}))}}return r}function y9(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function bc(e){const t=ve(ho),n=ve(v1),s=be(()=>t.resolve(J(e.to))),r=be(()=>{const{matched:l}=s.value,{length:u}=l,c=l[u-1],_=n.matched;if(!c||!_.length)return-1;const p=_.findIndex(Zs.bind(null,c));if(p>-1)return p;const y=Ec(l[u-2]);return u>1&&Ec(c)===y&&_[_.length-1].path!==y?_.findIndex(Zs.bind(null,l[u-2])):p}),a=be(()=>r.value>-1&&w9(n.params,s.value.params)),o=be(()=>r.value>-1&&r.value===n.matched.length-1&&i1(n.params,s.value.params));function i(l={}){return k9(l)?t[J(e.replace)?"replace":"push"](J(e.to)).catch(Pr):Promise.resolve()}return{route:s,href:be(()=>s.value.href),isActive:a,isExactActive:o,navigate:i}}const b9=ue({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:bc,setup(e,{slots:t}){const n=wt(bc(e)),{options:s}=ve(ho),r=be(()=>({[kc(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[kc(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const a=t.default&&t.default(n);return e.custom?a:Jr("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:r.value},a)}}}),E9=b9;function k9(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 w9(e,t){for(const n in t){const s=t[n],r=e[n];if(typeof s=="string"){if(s!==r)return!1}else if(!ln(r)||r.length!==s.length||s.some((a,o)=>a!==r[o]))return!1}return!0}function Ec(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const kc=(e,t,n)=>e!=null?e:t!=null?t:n,S9=ue({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=ve(mi),r=be(()=>e.route||s.value),a=ve(yc,0),o=be(()=>{let u=J(a);const{matched:c}=r.value;let _;for(;(_=c[u])&&!_.components;)u++;return u}),i=be(()=>r.value.matched[o.value]);It(yc,be(()=>o.value+1)),It(v9,i),It(mi,r);const l=le();return Zn(()=>[l.value,i.value,e.name],([u,c,_],[p,y,E])=>{c&&(c.instances[_]=u,y&&y!==c&&u&&u===p&&(c.leaveGuards.size||(c.leaveGuards=y.leaveGuards),c.updateGuards.size||(c.updateGuards=y.updateGuards))),u&&c&&(!y||!Zs(c,y)||!p)&&(c.enterCallbacks[_]||[]).forEach(k=>k(u))},{flush:"post"}),()=>{const u=r.value,c=e.name,_=i.value,p=_&&_.components[c];if(!p)return wc(n.default,{Component:p,route:u});const y=_.props[c],E=y?y===!0?u.params:typeof y=="function"?y(u):y:null,S=Jr(p,$e({},E,t,{onVnodeUnmounted:m=>{m.component.isUnmounted&&(_.instances[c]=null)},ref:l}));return wc(n.default,{Component:S,route:u})||S}}});function wc(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const C9=S9;function T9(e){const t=Q7(e.routes,e),n=e.parseQuery||m9,s=e.stringifyQuery||vc,r=e.history,a=yr(),o=yr(),i=yr(),l=Kc(Hn);let u=Hn;xs&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const c=Oo.bind(null,L=>""+L),_=Oo.bind(null,p9),p=Oo.bind(null,Aa);function y(L,z){let W,Q;return c1(L)?(W=t.getRecordMatcher(L),Q=z):Q=L,t.addRoute(Q,W)}function E(L){const z=t.getRecordMatcher(L);z&&t.removeRoute(z)}function k(){return t.getRoutes().map(L=>L.record)}function S(L){return!!t.getRecordMatcher(L)}function m(L,z){if(z=$e({},z||l.value),typeof L=="string"){const h=Po(n,L,z.path),g=t.resolve({path:h.path},z),T=r.createHref(h.fullPath);return $e(h,g,{params:p(g.params),hash:Aa(h.hash),redirectedFrom:void 0,href:T})}let W;if("path"in L)W=$e({},L,{path:Po(n,L.path,z.path).path});else{const h=$e({},L.params);for(const g in h)h[g]==null&&delete h[g];W=$e({},L,{params:_(h)}),z.params=_(z.params)}const Q=t.resolve(W,z),Se=L.hash||"";Q.params=c(p(Q.params));const v=D7(s,$e({},L,{hash:f9(Se),path:Q.path})),f=r.createHref(v);return $e({fullPath:v,hash:Se,query:s===vc?g9(L.query):L.query||{}},Q,{redirectedFrom:void 0,href:f})}function w(L){return typeof L=="string"?Po(n,L,l.value.path):$e({},L)}function P(L,z){if(u!==L)return Qs(8,{from:z,to:L})}function b(L){return V(L)}function D(L){return b($e(w(L),{replace:!0}))}function I(L){const z=L.matched[L.matched.length-1];if(z&&z.redirect){const{redirect:W}=z;let Q=typeof W=="function"?W(L):W;return typeof Q=="string"&&(Q=Q.includes("?")||Q.includes("#")?Q=w(Q):{path:Q},Q.params={}),$e({query:L.query,hash:L.hash,params:"path"in Q?{}:L.params},Q)}}function V(L,z){const W=u=m(L),Q=l.value,Se=L.state,v=L.force,f=L.replace===!0,h=I(W);if(h)return V($e(w(h),{state:typeof h=="object"?$e({},Se,h.state):Se,force:v,replace:f}),z||W);const g=W;g.redirectedFrom=z;let T;return!v&&O7(s,Q,W)&&(T=Qs(16,{to:g,from:Q}),yt(Q,Q,!0,!1)),(T?Promise.resolve(T):ee(g,Q)).catch(O=>wn(O)?wn(O,2)?O:Dt(O):Ee(O,g,Q)).then(O=>{if(O){if(wn(O,2))return V($e({replace:f},w(O.to),{state:typeof O.to=="object"?$e({},Se,O.to.state):Se,force:v}),z||g)}else O=H(g,Q,!0,f,Se);return _e(g,Q,O),O})}function M(L,z){const W=P(L,z);return W?Promise.reject(W):Promise.resolve()}function U(L){const z=jt.values().next().value;return z&&typeof z.runWithContext=="function"?z.runWithContext(L):L()}function ee(L,z){let W;const[Q,Se,v]=F9(L,z);W=No(Q.reverse(),"beforeRouteLeave",L,z);for(const h of Q)h.leaveGuards.forEach(g=>{W.push(jn(g,L,z))});const f=M.bind(null,L,z);return W.push(f),Ze(W).then(()=>{W=[];for(const h of a.list())W.push(jn(h,L,z));return W.push(f),Ze(W)}).then(()=>{W=No(Se,"beforeRouteUpdate",L,z);for(const h of Se)h.updateGuards.forEach(g=>{W.push(jn(g,L,z))});return W.push(f),Ze(W)}).then(()=>{W=[];for(const h of v)if(h.beforeEnter)if(ln(h.beforeEnter))for(const g of h.beforeEnter)W.push(jn(g,L,z));else W.push(jn(h.beforeEnter,L,z));return W.push(f),Ze(W)}).then(()=>(L.matched.forEach(h=>h.enterCallbacks={}),W=No(v,"beforeRouteEnter",L,z),W.push(f),Ze(W))).then(()=>{W=[];for(const h of o.list())W.push(jn(h,L,z));return W.push(f),Ze(W)}).catch(h=>wn(h,8)?h:Promise.reject(h))}function _e(L,z,W){i.list().forEach(Q=>U(()=>Q(L,z,W)))}function H(L,z,W,Q,Se){const v=P(L,z);if(v)return v;const f=z===Hn,h=xs?history.state:{};W&&(Q||f?r.replace(L.fullPath,$e({scroll:f&&h&&h.scroll},Se)):r.push(L.fullPath,Se)),l.value=L,yt(L,z,W,f),Dt()}let ie;function Me(){ie||(ie=r.listen((L,z,W)=>{if(!cn.listening)return;const Q=m(L),Se=I(Q);if(Se){V($e(Se,{replace:!0}),Q).catch(Pr);return}u=Q;const v=l.value;xs&&$7(cc(v.fullPath,W.delta),fo()),ee(Q,v).catch(f=>wn(f,12)?f:wn(f,2)?(V(f.to,Q).then(h=>{wn(h,20)&&!W.delta&&W.type===Gr.pop&&r.go(-1,!1)}).catch(Pr),Promise.reject()):(W.delta&&r.go(-W.delta,!1),Ee(f,Q,v))).then(f=>{f=f||H(Q,v,!1),f&&(W.delta&&!wn(f,8)?r.go(-W.delta,!1):W.type===Gr.pop&&wn(f,20)&&r.go(-1,!1)),_e(Q,v,f)}).catch(Pr)}))}let qe=yr(),de=yr(),we;function Ee(L,z,W){Dt(L);const Q=de.list();return Q.length?Q.forEach(Se=>Se(L,z,W)):console.error(L),Promise.reject(L)}function mt(){return we&&l.value!==Hn?Promise.resolve():new Promise((L,z)=>{qe.add([L,z])})}function Dt(L){return we||(we=!L,Me(),qe.list().forEach(([z,W])=>L?W(L):z()),qe.reset()),L}function yt(L,z,W,Q){const{scrollBehavior:Se}=e;if(!xs||!Se)return Promise.resolve();const v=!W&&R7(cc(L.fullPath,0))||(Q||!W)&&history.state&&history.state.scroll||null;return Ii().then(()=>Se(L,z,v)).then(f=>f&&x7(f)).catch(f=>Ee(f,L,z))}const rt=L=>r.go(L);let Vt;const jt=new Set,cn={currentRoute:l,listening:!0,addRoute:y,removeRoute:E,hasRoute:S,getRoutes:k,resolve:m,options:e,push:b,replace:D,go:rt,back:()=>rt(-1),forward:()=>rt(1),beforeEach:a.add,beforeResolve:o.add,afterEach:i.add,onError:de.add,isReady:mt,install(L){const z=this;L.component("RouterLink",E9),L.component("RouterView",C9),L.config.globalProperties.$router=z,Object.defineProperty(L.config.globalProperties,"$route",{enumerable:!0,get:()=>J(l)}),xs&&!Vt&&l.value===Hn&&(Vt=!0,b(r.location).catch(Se=>{}));const W={};for(const Se in Hn)Object.defineProperty(W,Se,{get:()=>l.value[Se],enumerable:!0});L.provide(ho,z),L.provide(v1,Wc(W)),L.provide(mi,l);const Q=L.unmount;jt.add(L),L.unmount=function(){jt.delete(L),jt.size<1&&(u=Hn,ie&&ie(),ie=null,l.value=Hn,Vt=!1,we=!1),Q()}}};function Ze(L){return L.reduce((z,W)=>z.then(()=>U(W)),Promise.resolve())}return cn}function F9(e,t){const n=[],s=[],r=[],a=Math.max(t.matched.length,e.matched.length);for(let o=0;oZs(u,i))?s.push(i):n.push(i));const l=e.matched[o];l&&(t.matched.find(u=>Zs(u,l))||r.push(l))}return[n,s,r]}function D9(){return ve(ho)}const O9={};function P9(e,t){const n=ht("router-view");return C(),Fe(n)}var N9=he(O9,[["render",P9]]);const I9="modulepreload",Sc={},A9="/",We=function(t,n){return!n||n.length===0?t():Promise.all(n.map(s=>{if(s=`${A9}${s}`,s in Sc)return;Sc[s]=!0;const r=s.endsWith(".css"),a=r?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${s}"]${a}`))return;const o=document.createElement("link");if(o.rel=r?"stylesheet":I9,r||(o.as="script",o.crossOrigin=""),o.href=s,document.head.appendChild(o),r)return new Promise((i,l)=>{o.addEventListener("load",i),o.addEventListener("error",()=>l(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t())};var L9={name:"PageRouter",path:"/router",component:()=>We(()=>import("./chunk.d9ea7f57.js"),["luci-static/istorex/chunk.d9ea7f57.js","luci-static/istorex/index.js"]),children:[{path:"",name:"PageRouterHome",redirect:"/router/index"},{path:"index",name:"PageRouterIndex",component:()=>We(()=>import("./chunk.de33ea3e.js"),["luci-static/istorex/chunk.de33ea3e.js","luci-static/istorex/index.js"])},{path:"network",name:"PageNetwork",component:()=>We(()=>import("./chunk.83d679c2.js"),["luci-static/istorex/chunk.83d679c2.js","luci-static/istorex/index.js"]),children:[{path:"",name:"PageNetworkIndex",component:()=>We(()=>import("./chunk.4f4af73e.js"),["luci-static/istorex/chunk.4f4af73e.js","luci-static/istorex/index.js"])},{path:"pppoe",component:()=>We(()=>import("./chunk.8bf617a1.js"),["luci-static/istorex/chunk.8bf617a1.js","luci-static/istorex/index.js"])},{path:"dhcp",component:()=>We(()=>import("./chunk.8f1ff823.js"),["luci-static/istorex/chunk.8f1ff823.js","luci-static/istorex/index.js"])},{path:"gateway",component:()=>We(()=>import("./chunk.25dae49f.js"),["luci-static/istorex/chunk.25dae49f.js","luci-static/istorex/index.js"])},{path:"intranet",component:()=>We(()=>import("./chunk.6f7d3090.js"),["luci-static/istorex/chunk.6f7d3090.js","luci-static/istorex/index.js","luci-static/istorex/chunk.6d3585bb.js"])},{path:"dns",component:()=>We(()=>import("./chunk.fb51d2b2.js"),["luci-static/istorex/chunk.fb51d2b2.js","luci-static/istorex/index.js"])}]},{path:"setting",name:"PageSetting",component:()=>We(()=>import("./chunk.ead1f974.js"),["luci-static/istorex/chunk.ead1f974.js","luci-static/istorex/index.js"]),children:[{path:"",name:"PageSettingIndex",component:()=>We(()=>import("./chunk.5e41a3f0.js"),["luci-static/istorex/chunk.5e41a3f0.js","luci-static/istorex/index.js"])},{path:"opkg",name:"SettingOpkg",component:()=>We(()=>import("./chunk.4d4bc89c.js"),["luci-static/istorex/chunk.4d4bc89c.js","luci-static/istorex/index.js"])},{path:"sandbox",component:()=>We(()=>import("./chunk.2147605f.js"),["luci-static/istorex/chunk.2147605f.js","luci-static/istorex/index.js"])},{path:"remotely",component:()=>We(()=>import("./chunk.42bb6629.js"),["luci-static/istorex/chunk.42bb6629.js","luci-static/istorex/index.js"])}]},{path:"disk",component:()=>We(()=>import("./chunk.18e0c91d.js"),["luci-static/istorex/chunk.18e0c91d.js","luci-static/istorex/index.js"]),children:[{path:"",component:()=>We(()=>import("./chunk.167c223d.js"),["luci-static/istorex/chunk.167c223d.js","luci-static/istorex/index.js"])}]},{path:"istore",component:()=>We(()=>import("./chunk.403244cc.js"),["luci-static/istorex/chunk.403244cc.js","luci-static/istorex/index.js"])},{path:"device",component:()=>We(()=>import("./chunk.211ffb47.js"),["luci-static/istorex/chunk.211ffb47.js","luci-static/istorex/index.js"]),children:[{path:"list",component:()=>We(()=>import("./chunk.f2b02e0d.js"),["luci-static/istorex/chunk.f2b02e0d.js","luci-static/istorex/index.js"])},{path:"interface",component:()=>We(()=>import("./chunk.b7ccb4ed.js"),["luci-static/istorex/chunk.b7ccb4ed.js","luci-static/istorex/index.js"])}]},{name:"DDNSPage",path:"ddns",component:()=>We(()=>import("./chunk.ff94f9f2.js"),["luci-static/istorex/chunk.ff94f9f2.js","luci-static/istorex/index.js"])},{path:":pathMatch(.*)*",name:"notfound",redirect:"/router/index"}]},M9={name:"PageWizard",path:"/wizard",component:()=>We(()=>import("./chunk.7deee291.js"),["luci-static/istorex/chunk.7deee291.js","luci-static/istorex/index.js"])},x9={name:"PageNas",path:"/nas",component:()=>We(()=>import("./chunk.41b74402.js"),["luci-static/istorex/chunk.41b74402.js","luci-static/istorex/index.js"]),children:[{name:"PageNasIndex",path:"",component:()=>We(()=>import("./chunk.a1bcc52b.js"),["luci-static/istorex/chunk.a1bcc52b.js","luci-static/istorex/index.js","luci-static/istorex/chunk.ffd7724b.js"])}]},$9={name:"NextNas",path:"/next-nas",component:()=>We(()=>import("./chunk.fdf02bc2.js"),["luci-static/istorex/chunk.fdf02bc2.js","luci-static/istorex/index.js","luci-static/istorex/chunk.6d3585bb.js","luci-static/istorex/chunk.ffd7724b.js"])};const R9=T9({history:window.path_base?u1(window.path_base):H7(),routes:[{path:"/",name:"PageIndex",component:N9,beforeEnter(e,t,n){return te(this,null,function*(){switch(it.getModel()){case"next-nas":n({name:"NextNas"});break;case"router":n({name:"PageRouterHome"});break;default:n({name:"PageWizard"});break}})}},M9,L9,x9,$9,{path:"/:pathMatch(.*)*",name:"notfound",redirect:e=>{switch(console.log("redirec:",e),it.getModel()){case"next-nas":return"/next-nas";case"router":return"/router/index";default:return"/wizard"}}}]});const B9={},U9={t:"1655777339433",class:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"2673",width:"128",height:"128"},Y9=d("path",{d:"M59.733333 614.4h930.133334a8.533333 8.533333 0 0 1 8.533333 8.533333v238.933334a8.533333 8.533333 0 0 1-8.533333 8.533333H59.733333a8.533333 8.533333 0 0 1-8.533333-8.533333V622.933333a8.533333 8.533333 0 0 1 8.533333-8.533333z",fill:"#96CAFF","p-id":"2674"},null,-1),H9=d("path",{d:"M76.8 588.8l176.128-377.941333A76.8 76.8 0 0 1 315.050667 179.2H759.466667a76.8 76.8 0 0 1 62.122666 31.658667L996.266667 588.8",fill:"#B3D9FF","p-id":"2675"},null,-1),W9=d("path",{d:"M742.4 204.8l175.274667 362.752h57.941333L805.290667 204.8H742.4z",fill:"#96CAFF","p-id":"2676"},null,-1),V9=d("path",{d:"M51.2 588.8a25.6 25.6 0 0 0-25.6 25.6v204.8a25.6 25.6 0 0 0 25.6 25.6h921.6a25.6 25.6 0 0 0 25.6-25.6V614.4a25.6 25.6 0 0 0-25.6-25.6z m0-25.6h921.6a51.2 51.2 0 0 1 51.2 51.2v204.8a51.2 51.2 0 0 1-51.2 51.2H51.2a51.2 51.2 0 0 1-51.2-51.2V614.4a51.2 51.2 0 0 1 51.2-51.2z",fill:"#175AA7","p-id":"2677"},null,-1),j9=d("path",{d:"M204.8 221.866667l-23.210667-10.837334 20.736 15.018667 1.365334-1.792z m616.533333 4.266666l20.736-15.018666L818.432 221.866667l1.194667 2.474666zM243.370667 204.8h536.149333A51.2 51.2 0 0 1 819.2 224.085333L988.501333 588.8h28.245334L841.642667 210.858667A76.8 76.8 0 0 0 779.52 179.2H243.370667a76.8 76.8 0 0 0-62.122667 31.658667L5.12 588.8h28.245333l169.898667-364.714667a51.2 51.2 0 0 1 40.106667-19.285333z m577.536 21.077333l20.736-15.018666L818.432 221.866667l1.194667 2.474666z m-619.008 0l-20.736-15.018666L204.8 221.866667l-1.109333 2.474666zM988.501333 588.8h28.245334L841.642667 210.858667A76.8 76.8 0 0 0 779.52 179.2H243.370667a76.8 76.8 0 0 0-62.122667 31.658667L5.12 588.8h28.245333l169.898667-364.714667a51.2 51.2 0 0 1 40.106667-19.285333h536.149333A51.2 51.2 0 0 1 819.2 224.085333zM883.2 768a38.4 38.4 0 1 0-38.4-38.4 38.4 38.4 0 0 0 38.4 38.4z m0 25.6a64 64 0 1 1 64-64 64 64 0 0 1-64 64z",fill:"#175AA7","p-id":"2678"},null,-1),G9=d("path",{d:"M512 492.458667c125.696 0 200.789333-67.413333 174.165333-129.877334C666.794667 316.672 592.725333 281.6 512 281.6s-154.538667 35.072-174.165333 80.981333C311.552 425.045333 386.56 492.458667 512 492.458667z m-197.376-139.946667C339.712 293.717333 425.898667 256 512 256s172.885333 37.717333 197.973333 96.512c33.621333 78.848-49.493333 165.546667-197.717333 165.546667s-231.253333-86.698667-197.632-165.546667zM842.922667 479.829333c-13.226667 0-20.309333 11.52-15.616 26.112a40.533333 40.533333 0 0 0 34.133333 27.818667c14.165333 0 20.821333-12.714667 15.018667-27.818667a40.618667 40.618667 0 0 0-34.133334-26.112M155.648 505.941333c-5.717333 15.189333 0.853333 27.818667 15.018667 27.818667a40.533333 40.533333 0 0 0 34.56-27.818667c4.693333-14.677333-2.389333-26.112-15.616-26.112a40.618667 40.618667 0 0 0-33.962667 26.112zM264.533333 260.608c-3.157333 8.533333 2.645333 15.104 13.056 15.104a25.6 25.6 0 0 0 23.722667-15.104c2.56-8.106667-3.413333-14.421333-13.312-14.421333A26.026667 26.026667 0 0 0 264.533333 260.608zM754.688 275.797333c10.410667 0 16.213333-6.912 13.056-15.104a26.026667 26.026667 0 0 0-23.381333-14.421333c-9.898667 0-15.872 6.4-13.312 14.421333a25.6 25.6 0 0 0 23.722666 15.104",fill:"#175AA7","p-id":"2679"},null,-1),z9=[Y9,H9,W9,V9,j9,G9];function K9(e,t){return C(),N("svg",U9,z9)}var q9=he(B9,[["render",K9]]);const J9={},X9={t:"1657017066197",class:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"7436",width:"128",height:"128"},Z9=d("path",{d:"M25.6 54.84032v152.79104h967.68V54.84032H25.6z m0 534.76864h967.68V436.81792H25.6v152.79104z m0 381.98272h967.68v-152.79104H25.6v152.79104z","p-id":"7437"},null,-1),Q9=[Z9];function eg(e,t){return C(),N("svg",X9,Q9)}var tg=he(J9,[["render",eg]]);const ng={key:0,t:"1657180381358",class:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"3686",width:"128",height:"128"},sg=d("path",{d:"M512 958.016C266.08 958.016 65.984 757.952 65.984 512 65.984 266.08 266.08 65.984 512 65.984c245.952 0 446.016 200.064 446.016 446.016C958.016 757.952 757.952 958.016 512 958.016zM512 129.984C301.344 129.984 129.984 301.344 129.984 512c0 210.624 171.36 382.016 382.016 382.016 210.624 0 382.016-171.36 382.016-382.016C894.016 301.344 722.624 129.984 512 129.984z","p-id":"3687"},null,-1),rg=d("path",{d:"M512 304m-48 0a1.5 1.5 0 1 0 96 0 1.5 1.5 0 1 0-96 0Z","p-id":"3688"},null,-1),ag=d("path",{d:"M512 768c-17.664 0-32-14.304-32-32l0-288c0-17.664 14.336-32 32-32s32 14.336 32 32l0 288C544 753.696 529.664 768 512 768z","p-id":"3689"},null,-1),og=[sg,rg,ag],ig={key:1,t:"1657180370515",class:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"3532",width:"128",height:"128"},lg=d("path",{d:"M512 65.984C266.048 65.984 65.984 266.048 65.984 512S266.048 958.016 512 958.016 958.016 757.952 958.016 512 757.952 65.984 512 65.984zM544 736c0 17.696-14.304 32-32 32s-32-14.304-32-32l0-288c0-17.696 14.304-32 32-32s32 14.304 32 32L544 736zM512 352c-26.496 0-48-21.536-48-48C464 277.472 485.504 256 512 256s48 21.472 48 48C560 330.464 538.496 352 512 352z","p-id":"3533"},null,-1),ug=[lg],cg=ue({__name:"info",props:{type:{type:Number,default:0}},setup(e){return(t,n)=>e.type==0?(C(),N("svg",ng,og)):e.type==1?(C(),N("svg",ig,ug)):pe("",!0)}}),dg={},fg={width:"16px",height:"16px",viewBox:"0 0 16 16",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"},hg=d("path",{d:"M14.9234958,14.5525054 L10.84453,10.4679606 C11.8849284,9.46327833 12.5294813,8.07823887 12.5294813,6.55073066 C12.5294813,3.48989918 9.94358337,1 6.76474066,1 C3.58589795,1 1,3.48989918 1,6.55073066 C1,9.61156213 3.58589795,12.1014613 6.76474066,12.1014613 C8.16008242,12.1014613 9.44067838,11.621191 10.438802,10.8242646 L14.5276502,14.9188536 C14.5814545,14.9730393 14.6533765,15 14.725573,15 C14.7942009,15 14.8625542,14.9754182 14.9158095,14.9262546 C15.025065,14.8250198 15.0283592,14.6577049 14.9234958,14.5525054 Z M6.76474066,11.5728203 C3.8886841,11.5728203 1.54902292,9.32001661 1.54902292,6.55073066 C1.54902292,3.7814447 3.8886841,1.52864101 6.76474066,1.52864101 C9.64079723,1.52864101 11.9804584,3.7814447 11.9804584,6.55073066 C11.9804584,9.32001661 9.64052272,11.5728203 6.76474066,11.5728203 Z",id:"Shape",stroke:"#FFFFFF","stroke-width":"1.3"},null,-1),_g=[hg];function pg(e,t){return C(),N("svg",fg,_g)}var mg=he(dg,[["render",pg]]);const gg={},vg={width:"12px",height:"12px",viewBox:"0 0 12 12",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"},yg=d("path",{d:"M10.171916,3.81818329 C10.6519813,3.81274681 11.1102149,4.01840688 11.4252438,4.38069009 C11.7402726,4.74297329 11.8803105,5.2253253 11.8081406,5.70080197 L11.0555552,10.608963 C10.9332063,11.4157454 10.2351606,12.0090843 9.42537185,12 L3.27269856,12 C2.97145497,12 2.7272488,11.7556885 2.7272488,11.454445 L2.7272488,5.4544976 C2.7272488,5.37817917 2.74326442,5.30271013 2.77426027,5.23296947 L4.95605931,0.323921631 C5.04360472,0.126944443 5.23894201,0 5.4544976,0 C6.65947193,0 7.63629663,0.976824702 7.63629663,2.18179904 L7.63629663,3.81815451 L10.171916,3.81818329 Z M3.81814832,10.9090654 L9.43153778,10.9090654 C9.70352269,10.9121048 9.93620458,10.7143252 9.97712277,10.4445109 L10.7297188,5.53628009 C10.7537339,5.3780602 10.7070546,5.2172762 10.602045,5.09651513 C10.4970353,4.97575406 10.3442908,4.9072007 10.1780925,4.90904784 L7.09084687,4.90904784 C6.78960329,4.90904784 6.54539711,4.66484166 6.54539711,4.36359808 L6.54539711,2.18179904 C6.54539711,1.69494967 6.22647822,1.2825878 5.78615711,1.14223013 L3.81814832,5.57024992 L3.81814832,10.9090654 Z M2.7272488,5.99994736 L1.63634928,5.99994736 C1.33510569,5.99994736 1.09089952,6.24415353 1.09089952,6.54539711 L1.09089952,10.3635454 C1.09089952,10.664789 1.33510569,10.9089952 1.63634928,10.9089952 L2.7272488,10.9089952 L2.7272488,5.99994736 Z M3.27269856,11.9998947 L1.63634928,11.9998947 C0.732618527,11.9998947 -1.03028697e-13,11.2672762 -1.03028697e-13,10.3635454 L-1.03028697e-13,6.54539711 C-1.03028697e-13,5.64166636 0.732618527,4.90904784 1.63634928,4.90904784 L3.27269856,4.90904784 C3.57394214,4.90904784 3.81814832,5.15325401 3.81814832,5.4544976 L3.81814832,11.454445 C3.81814832,11.7556885 3.57394214,11.9998947 3.27269856,11.9998947 Z",id:"Shape",fill:"#FFFFFF","fill-rule":"nonzero"},null,-1),bg=[yg];function Eg(e,t){return C(),N("svg",vg,bg)}var kg=he(gg,[["render",Eg]]);const wg={},Sg={width:"12px",height:"12px",viewBox:"0 0 12 12",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"},Cg=d("path",{d:"M10.171916,3.81818329 C10.6519813,3.81274681 11.1102149,4.01840688 11.4252438,4.38069009 C11.7402726,4.74297329 11.8803105,5.2253253 11.8081406,5.70080197 L11.0555552,10.608963 C10.9332063,11.4157454 10.2351606,12.0090843 9.42537185,12 L3.27269856,12 C2.97145497,12 2.7272488,11.7556885 2.7272488,11.454445 L2.7272488,5.4544976 C2.7272488,5.37817917 2.74326442,5.30271013 2.77426027,5.23296947 L4.95605931,0.323921631 C5.04360472,0.126944443 5.23894201,0 5.4544976,0 C6.65947193,0 7.63629663,0.976824702 7.63629663,2.18179904 L7.63629663,3.81815451 L10.171916,3.81818329 Z M3.27269856,11.9998947 L1.63634928,11.9998947 C0.732618527,11.9998947 0,11.2672762 0,10.3635454 L0,6.54539711 C0,5.64166636 0.732618527,4.90904784 1.63634928,4.90904784 L3.27269856,4.90904784 C3.57394214,4.90904784 3.81814832,5.15325401 3.81814832,5.4544976 L3.81814832,11.454445 C3.81814832,11.7556885 3.57394214,11.9998947 3.27269856,11.9998947 Z",id:"Shape",fill:"#FFE45A","fill-rule":"nonzero"},null,-1),Tg=[Cg];function Fg(e,t){return C(),N("svg",Sg,Tg)}var Dg=he(wg,[["render",Fg]]);const Og={},Pg={t:"1660284166208",class:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"1616",width:"128",height:"128"},Ng=d("path",{d:"M347.008 574.378667a85.546667 85.546667 0 0 1 0-124.757334L632.490667 182.144a42.389333 42.389333 0 0 1 60.074666 2.069333c16.021333 17.237333 15.104 44.224-2.069333 60.309334L405.013333 512l285.482667 267.477333c17.173333 16.085333 18.090667 43.093333 2.069333 60.309334a42.389333 42.389333 0 0 1-60.074666 2.069333L347.008 574.378667z","p-id":"1617"},null,-1),Ig=[Ng];function Ag(e,t){return C(),N("svg",Pg,Ig)}var Lg=he(Og,[["render",Ag]]);const Mg={},xg={t:"1660284150684",class:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"1462",width:"128",height:"128"},$g=d("path",{d:"M676.992 449.621333a85.546667 85.546667 0 0 1 0 124.757334L391.509333 841.856a42.389333 42.389333 0 0 1-60.074666-2.069333 42.773333 42.773333 0 0 1 2.069333-60.309334L618.986667 512 333.504 244.522667a42.773333 42.773333 0 0 1-2.069333-60.309334 42.389333 42.389333 0 0 1 60.074666-2.069333l285.482667 267.477333z","p-id":"1463"},null,-1),Rg=[$g];function Bg(e,t){return C(),N("svg",xg,Rg)}var Ug=he(Mg,[["render",Bg]]);const Yg={},Hg={t:"1660284192070",class:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"1770",width:"128",height:"128"},Wg=d("path",{d:"M449.621333 347.008a85.546667 85.546667 0 0 1 124.757334 0l267.477333 285.482667c16.085333 17.173333 15.146667 44.053333-2.069333 60.074666a42.773333 42.773333 0 0 1-60.309334-2.069333L512 405.013333 244.522667 690.496a42.773333 42.773333 0 0 1-60.309334 2.069333 42.389333 42.389333 0 0 1-2.069333-60.074666l267.477333-285.482667z","p-id":"1771"},null,-1),Vg=[Wg];function jg(e,t){return C(),N("svg",Hg,Vg)}var Gg=he(Yg,[["render",jg]]);const zg={},Kg={t:"1660284208062",class:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"1924",width:"128",height:"128"},qg=d("path",{d:"M574.378667 676.992a85.546667 85.546667 0 0 1-124.757334 0L182.144 391.509333a42.389333 42.389333 0 0 1 2.069333-60.074666 42.773333 42.773333 0 0 1 60.309334 2.069333L512 618.986667l267.477333-285.482667a42.773333 42.773333 0 0 1 60.309334-2.069333c17.216 16 18.133333 42.901333 2.069333 60.074666L574.378667 676.992z","p-id":"1925"},null,-1),Jg=[qg];function Xg(e,t){return C(),N("svg",Kg,Jg)}var Zg=he(zg,[["render",Xg]]);const Qg={},ev={t:"1660287979761",class:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"1495",width:"128",height:"128"},tv=d("path",{d:"M773.214133 167.117045c-4.330056 0.2048-5.441827 0.146286-9.713368 0.760685a74.693464 74.693464 0 0 0-54.008671 36.86399 72.762493 72.762493 0 0 0-6.436569 55.64707c2.662399 9.215997 7.197255 17.876109 13.253482 25.365935 2.720914 3.335313 3.510856 4.037485 6.524341 7.109484l3.627884 3.218285c16.091424 13.37051 30.954048 27.999078 44.295302 44.061244a327.504364 327.504364 0 0 1 67.057352 134.495048 327.094764 327.094764 0 0 1-37.858732 241.429873 330.839677 330.839677 0 0 1-63.107639 76.185579 336.457047 336.457047 0 0 1-80.45712 53.365013 335.930418 335.930418 0 0 1-100.995628 29.374163 341.928131 341.928131 0 0 1-119.807966-5.997713 336.310761 336.310761 0 0 1-114.24911-49.971185 334.321276 334.321276 0 0 1-92.803631-96.051173 324.403107 324.403107 0 0 1-47.396557-127.795163 326.304821 326.304821 0 0 1 106.144884-290.201517c4.59337-4.008227 9.215997-7.899426 13.750853-11.907654 3.013485-3.071999 3.803427-3.744913 6.495084-7.080227a72.206608 72.206608 0 0 0-4.944456-96.343744 75.395636 75.395636 0 0 0-93.622831-10.503311c-6.085484 3.891199-11.468797 8.718626-16.852109 13.429025a475.633236 475.633236 0 0 0-98.8306 119.281337 470.07438 470.07438 0 0 0-31.012563 409.83394 474.521464 474.521464 0 0 0 76.214835 128.058478 481.455405 481.455405 0 0 0 257.638327 160.387611 493.86043 493.86043 0 0 0 189.849546 8.338284c58.485012-8.835655 115.185339-28.37942 166.473095-57.431755a484.498147 484.498147 0 0 0 126.800421-103.599514 473.263408 473.263408 0 0 0 72.99655-113.312882 473.087865 473.087865 0 0 0 38.590161-256.906898c-6.787655-51.785128-22.323194-102.399971-45.816673-149.211386a475.925807 475.925807 0 0 0-110.88454-143.65253c-3.832685-3.335313-7.753141-6.64137-11.644339-9.918169-3.36457-2.633142-4.154513-3.393828-7.811655-5.705141a75.775978 75.775978 0 0 0-22.206165-9.450054 91.808888 91.808888 0 0 0-14.39451-2.106514c-1.6384 0-3.218285 0-4.856685-0.058514m-186.836061 418.084452c0 19.39748-7.840912 38.005018-21.767308 51.726614a74.898264 74.898264 0 0 1-52.516556 21.416222 74.810493 74.810493 0 0 1-52.516556-21.416222 72.616208 72.616208 0 0 1-21.767309-51.726614V73.143129c0-19.426737 7.840912-38.005018 21.767309-51.755871A74.781236 74.781236 0 0 1 512.094208 0.000293c19.690052 0 38.59016 7.694626 52.516556 21.386965 13.926396 13.750853 21.767308 32.329134 21.767308 51.785128v512.029111z","p-id":"1496"},null,-1),nv=[tv];function sv(e,t){return C(),N("svg",ev,nv)}var rv=he(Qg,[["render",sv]]);const av={},ov={t:"1661742094849",class:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"2478",width:"128",height:"128"},iv=d("path",{d:"M210.304 813.696a42.666667 42.666667 0 0 1 0-60.330667L753.365333 210.304a42.666667 42.666667 0 1 1 60.330667 60.330667L270.634667 813.696a42.666667 42.666667 0 0 1-60.330667 0z","p-id":"2479"},null,-1),lv=d("path",{d:"M210.304 210.304a42.666667 42.666667 0 0 1 60.330667 0l543.061333 543.061333a42.666667 42.666667 0 1 1-60.330667 60.330667L210.304 270.634667a42.666667 42.666667 0 0 1 0-60.330667z","p-id":"2480"},null,-1),uv=[iv,lv];function cv(e,t){return C(),N("svg",ov,uv)}var y1=he(av,[["render",cv]]);const dv={},fv=e=>(nt("data-v-70156d34"),e=e(),st(),e),hv={t:"1631799919469",class:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"3453",width:"128",height:"128"},_v=fv(()=>d("path",{d:"M522.695111 1.991111c-26.339556 0.170667-47.416889 21.475556-47.672889 48.753778-0.284444 26.453333-0.056889 52.963556-0.056889 79.445333 0 27.249778-0.369778 54.528 0.113778 81.777778 0.483556 27.050667 22.016 47.132444 49.351111 46.904889a47.786667 47.786667 0 0 0 47.729778-47.445333c0.284444-53.76 0.284444-107.52-0.028444-161.251556-0.170667-27.676444-21.902222-48.355556-49.436445-48.184889m-195.896889 88.092445c-8.334222-14.222222-21.646222-21.276444-38.314666-21.333334-35.128889 0-56.576 36.949333-38.968889 68.152889a11616.995556 11616.995556 0 0 0 78.961777 137.614222 44.942222 44.942222 0 0 0 61.838223 16.896c21.304889-12.202667 29.667556-38.968889 17.379555-60.871111-26.453333-47.104-53.560889-93.866667-80.896-140.458666m-228.693333 234.524444c44.316444 25.799111 88.746667 51.342222 133.176889 76.970667 6.712889 3.896889 13.681778 6.912 21.703111 6.428444 20.138667 0.142222 35.953778-11.946667 41.301333-31.573333 5.006222-18.261333-2.673778-36.721778-20.224-46.990222-44.629333-26.026667-89.372444-51.882667-134.115555-77.710223-22.528-12.999111-47.815111-7.025778-59.818667 13.909334-12.231111 21.248-4.977778 45.624889 17.948444 58.965333m34.161778 235.975111c26.396444 0 52.821333 0.199111 79.217778-0.085333 23.409778-0.256 39.139556-16.412444 38.798222-39.139556-0.341333-21.617778-16.924444-37.347556-39.594666-37.376-51.655111-0.056889-103.310222-0.056889-154.965334 0.028445-24.177778 0.056889-40.704 15.985778-40.561778 38.684444 0.142222 22.186667 16.583111 37.745778 40.192 37.859556 25.656889 0.142222 51.285333 0.028444 76.913778 0m151.722667 100.238222a34.247111 34.247111 0 0 0-46.876445-12.942222 13764.778667 13764.778667 0 0 0-139.008 80.583111c-11.093333 6.485333-16.327111 16.867556-16.497777 25.372444 0.085333 30.549333 27.249778 47.957333 50.403555 35.072 47.160889-26.197333 93.724444-53.475556 140.145778-80.924444 17.180444-10.154667 21.504-30.378667 11.832889-47.160889m91.875555 101.660444c-14.250667-4.067556-27.619556 1.422222-35.84 15.644445a24375.466667 24375.466667 0 0 0-77.312 134.485333c-10.012444 17.550222-5.859556 35.669333 9.784889 45.027556 16.014222 9.557333 34.247111 4.039111 44.714667-13.994667 25.543111-44.088889 50.915556-88.263111 76.373333-132.352 3.299556-5.745778 5.688889-11.690667 5.745778-14.933333 0-17.834667-9.272889-29.866667-23.466667-33.877334m147.456 44.288c-16.384 0.085333-27.306667 11.918222-27.448888 30.151111-0.142222 25.372444-0.028444 50.716444-0.028445 76.060445h-0.085333c0 26.112-0.113778 52.252444 0.056889 78.364444 0.113778 18.261333 11.064889 30.065778 27.448889 30.208 16.952889 0.142222 28.046222-11.832889 28.103111-30.748444 0.113778-51.086222 0.142222-102.172444 0.056889-153.258667 0-18.773333-11.207111-30.862222-28.103112-30.776889m177.208889-26.112c-7.509333-12.8-21.902222-16.014222-33.792-8.874666a23.722667 23.722667 0 0 0-8.533333 32.995555c26.282667 46.279111 52.906667 92.330667 79.644444 138.353778 4.494222 7.765333 11.633778 11.946667 20.906667 11.804444 18.545778-0.142222 30.520889-19.342222 21.219556-35.868444-26.026667-46.392889-52.650667-92.444444-79.473778-138.410667m239.957333-41.187555c-45.283556-26.254222-90.595556-52.48-135.964444-78.648889-4.693333-2.702222-9.728-4.323556-15.36-2.958222-9.102222 2.247111-14.933333 8.049778-16.497778 17.095111-1.877333 10.894222 3.84 18.204444 12.885333 23.438222 29.809778 17.180444 59.562667 34.417778 89.344 51.598222 15.217778 8.789333 30.236444 17.976889 45.738667 26.225778 14.677333 7.793778 31.061333-2.048 31.061333-18.033778-0.056889-8.448-4.096-14.592-11.207111-18.716444m48.867556-234.638222c-24.888889-0.085333-49.749333 0-74.609778 0v-0.085334c-25.258667 0-50.517333-0.056889-75.776 0.028445-13.425778 0.056889-20.963556 6.343111-21.162667 17.294222-0.199111 11.150222 7.082667 17.521778 20.679111 17.550222 50.488889 0.113778 100.977778 0.142222 151.495112 0.085333 13.368889 0 21.191111-6.485333 21.390222-17.152 0.227556-10.808889-8.106667-17.664-22.016-17.720888m-187.960889-127.146667c45.084444-26.026667 90.140444-52.110222 135.168-78.222222 4.864-2.844444 8.248889-6.855111 8.135111-12.942223-0.142222-11.036444-11.207111-17.436444-21.504-11.548444-45.511111 26.055111-90.851556 52.394667-136.135111 78.819556-7.68 4.494222-10.524444 11.52-5.575111 19.569777 4.835556 7.850667 12.088889 8.817778 19.911111 4.323556m-122.311111-115.114667c5.205333-0.256 8.220444-3.413333 10.609778-7.651555 4.920889-8.647111 10.040889-17.208889 14.990222-25.827556 20.48-35.555556 40.931556-71.025778 61.297778-106.609778 5.091556-8.874667 3.015111-16.668444-4.778667-18.517333-7.68-1.848889-10.894222 3.697778-14.051556 9.159111l-68.778666 119.495111c-2.844444 4.977778-6.030222 9.870222-8.305778 15.104-3.128889 7.196444 1.678222 14.648889 9.045333 14.848","p-id":"3454"},null,-1)),pv=[_v];function mv(e,t){return C(),N("svg",hv,pv)}var gv=he(dv,[["render",mv],["__scopeId","data-v-70156d34"]]),vv={install(e){e.component("icon-disk",q9),e.component("icon-nav",tg),e.component("icon-info",cg),e.component("icon-search",mg),e.component("icon-star-off",Dg),e.component("icon-star-on",kg),e.component("icon-left",Lg),e.component("icon-right",Ug),e.component("icon-top",Gg),e.component("icon-bottom",Zg),e.component("icon-outlogin",rv),e.component("icon-close",y1),e.component("icon-loading",gv)}};const yv={class:"toips-container"},bv=["onClick"],Ev={key:1},kv=ue({__name:"index",setup(e){const t=ur(),n=be(()=>t.toips);return(s,r)=>{const a=ht("router-link");return C(),N("div",yv,[(C(!0),N(me,null,ct(n.value,o=>(C(),N("li",{class:"toips-item",onClick:i=>o.f()},[o.path?(C(),Fe(a,{key:0,to:o.path},{default:Ue(()=>[Et(X(o.info),1)]),_:2},1032,["to"])):(C(),N("span",Ev,X(o.info),1))],8,bv))),256))])}}});var wv=he(kv,[["__scopeId","data-v-d6bd3248"]]);const Sv=ue({__name:"main",setup(e){const t=ur();return(n,s)=>{const r=ht("layout-header"),a=ht("router-view");return C(),N("div",{id:"main",key:J(t).reloadCount},[Ie(r),Ie(a,null,{default:Ue(({Component:o,route:i})=>[(C(),Fe(sd,null,{default:Ue(()=>[(C(),Fe($i(o),{key:i.path}))]),_:2},1024))]),_:1}),Ie(wv)])}}}),Cv={id:"page",class:"page-container"},Tv={class:"page-flex"},Fv={class:"page-sidebar"},Dv=["onClick"],Ov={class:"page-main"},Pv=ue({__name:"page",props:{menus:{type:Array,required:!0}},setup(e){return(t,n)=>{const s=ht("router-link");return C(),N("div",Cv,[d("div",Tv,[d("div",Fv,[(C(!0),N(me,null,ct(e.menus,r=>(C(),N(me,null,[r.path?(C(),Fe(s,{key:0,to:r.path},{default:Ue(()=>[d("span",null,X(r.title),1)]),_:2},1032,["to"])):pe("",!0),r.fn?(C(),N("a",{key:1,onClick:r.fn},[d("span",null,X(r.title),1)],8,Dv)):pe("",!0)],64))),256))]),d("div",Ov,[Yt(t.$slots,"default")])])])}}}),b1=window.HostName||"iStoreX",Nv=(window==null?void 0:window.istoreXVer)||"";var E1={HostName:b1};console.log("".concat(`%c OpenWrt-${b1}_iStoreX v${Nv}`),"color: #fadfa3; background: #030307; padding:5px 0;");const k1=e=>(nt("data-v-ab2441f8"),e=e(),st(),e),Iv={class:"logo"},Av=["href"],Lv={key:0,class:"nav-item ota-upgrade",target:"_blank",href:"/cgi-bin/luci/admin/system/ota"},Mv=k1(()=>d("span",null,"\u56FA\u4EF6\u66F4\u65B0",-1)),xv=k1(()=>d("em",null,null,-1)),$v=[Mv,xv],Rv=ue({__name:"nav",setup(e){ur();const t=le(!1),n=be(()=>[{name:"\u8DEF\u7531\u72B6\u6001",path:"/router/index"},{name:"\u7F51\u7EDC\u914D\u7F6E",path:"/router/network"},{name:"\u8FDC\u7A0BDDNS",path:"/router/ddns"},{name:"\u5B58\u50A8\u7BA1\u7406",path:"/router/disk"},{name:"\u529F\u80FD\u914D\u7F6E",path:"/router/setting"},{name:"\u5E94\u7528\u5546\u5E97",path:"/router/istore"},{name:"\u9AD8\u7EA7\u914D\u7F6E",href:"/cgi-bin/luci/admin/quickstart/"}]);return(()=>te(this,null,function*(){try{const r=yield oe.System.CheckUpdate.GET(),{result:a}=r.data;a&&(t.value=a.needUpdate)}catch(r){console.log(r)}}))(),(r,a)=>{const o=ht("router-link");return C(),N("nav",null,[d("div",Iv,X(J(E1).HostName),1),(C(!0),N(me,null,ct(n.value,i=>(C(),N(me,null,[i.path?(C(),Fe(o,{key:0,class:"nav-item",to:i.path},{default:Ue(()=>[d("span",null,X(i.name),1)]),_:2},1032,["to"])):pe("",!0),i.href?(C(),N("a",{key:1,class:"nav-item",target:"_blank",href:i.href},[d("span",null,X(i.name),1)],8,Av)):pe("",!0)],64))),256)),t.value?(C(),N("a",Lv,$v)):pe("",!0)])}}});var Bv=he(Rv,[["__scopeId","data-v-ab2441f8"]]);const xt=e=>(nt("data-v-0003d2de"),e=e(),st(),e),Uv={class:"tool"},Yv=xt(()=>d("div",{class:"tool-item_icon"},[d("svg",{t:"1654872227326",class:"icon",viewBox:"0 0 1070 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"18915",width:"128",height:"128"},[d("path",{d:"M616.56114032 913.71326004h-10.78499707c-0.00697165 0 4.88008933 1.06316208 10.78499706 0z m194.47155643-0.01045789c-28.60778047 0.01045706-31.10708332-23.73117654-31.28137207-29.83825964v-36.61809823h-142.70078101v35.18544369c0 23.05842188-11.4333522 29.67094253-20.48591711 31.27091418",fill:"#F0F0FF","p-id":"18916"}),d("path",{d:"M610.47497217 928.2489541c-5.85959326 0-12.22462327-1.32110979-15.86029011-6.17679877l-16.69339104-22.29852201h37.23508135c2.98731171-0.70412751 7.94757376-3.1650867 7.94757377-17.33825994v-49.12855499h170.58700443v50.34160629c0.54378122 15.96137778 12.92875076 16.11126617 17.20928649 16.11126617h0.12548804l0.00697165 27.88622343h-0.01742871c-21.89068588 0-44.35303958-13.4132742-45.20357007-43.38399272l-0.00697165-0.39389282v-22.67498611h-114.81455594v21.24233075c0 35.45036225-22.30549365 43.2724488-31.95412756 44.99093766v0.01045705c-2.35638611 0.42177942-5.38552688 0.81218601-8.56107065 0.81218602z",fill:"#6E6E96","p-id":"18917"}),d("path",{d:"M458.17784421 794.47525079V479.73040964c0-21.50027847 17.58923602-39.09300073 39.09648614-39.09299991h422.25320764c21.50725013 0 39.09997238 17.59272143 39.09997156 39.09299991v314.74135574",fill:"#9F9FBD","p-id":"18918"}),d("path",{d:"M958.63099579 763.19387873v44.95259398c0 21.51073636-17.59969309 39.10694403-39.09997238 39.10694321H497.27433035c-21.50376471 0-39.09648614-17.60666473-39.09648614-39.10694321V763.19387873h500.45315158z",fill:"#F0F0FF","p-id":"18919"}),d("path",{d:"M919.53102341 861.19304263H497.27433035c-29.2456777 0-53.03959826-23.79740679-53.03959826-53.05005615V749.2507666h528.33937582v58.89570612c0 29.24916311-23.79392056 53.04656992-53.0430845 53.04656991zM472.12095633 777.13699084v31.00948187c0 13.87339645 11.2834638 25.16383191 25.15337402 25.1638311H919.53102341c13.86991103 0 25.15686025-11.28694922 25.15686026-25.1638311v-31.00948187h-472.56692734z",fill:"#6E6E96","p-id":"18920"}),d("path",{d:"M472.12095633 794.47525079h-27.88622424V479.73040964c0-29.2456777 23.79392056-53.03611286 53.03959826-53.03611203h422.25320764c29.24916311 0 53.0430845 23.79043515 53.04308369 53.03611203v314.74135574h-27.88622425V479.73040964c0-13.86991103-11.2834638-25.14988861-25.15685944-25.14988779H497.27433035c-13.86991103 0-25.15337403 11.27997757-25.15337402 25.14988779v314.74484115z",fill:"#6E6E96","p-id":"18921"}),d("path",{d:"M458.17784421 744.17198816h500.44617993v11.03945938H458.17784421zM637.0540299 847.24644427h142.70078019v24.94771326h-142.70078019z",fill:"#6E6E96","p-id":"18922"}),d("path",{d:"M821.84906582 927.65637216h-241.2576686a13.94311212 13.94311212 0 0 1 0-27.88622423h241.2576686a13.94311212 13.94311212 0 0 1 0 27.88622424z",fill:"#6E6E96","p-id":"18923"}),d("path",{d:"M919.53102341 817.88922183H497.27433035c-21.50376471 0-39.09648614-17.59969309-39.09648614-39.10345779v26.0945343c0 21.50027847 17.58574978 39.09997238 39.09648614 39.09997238H919.53102341c21.50027847 0 39.10345779-17.59272143 39.10345779-39.09997238v-26.0945343c-0.00348542 21.517708-17.61015097 39.10345779-39.10345779 39.10345779z",fill:"#6E6E96","p-id":"18924"}),d("path",{d:"M512.22134677 487.62221103h396.47936426v229.11670432H512.22134677z",fill:"#A2C8F2","p-id":"18925"}),d("path",{d:"M653.79970709 714.00257971l250.40435038-226.38036868v73.11070843l-166.0798938 153.26966025z",fill:"#DEEFFF","p-id":"18926"}),d("path",{d:"M904.20405747 560.73291946l-166.0798938 153.26966025h166.0798938z",fill:"#FFFFFF","p-id":"18927"}),d("path",{d:"M908.70071103 730.68551288H512.22134677a13.94311212 13.94311212 0 0 1-13.94311212-13.94311212v-229.11670349a13.94311212 13.94311212 0 0 1 13.94311212-13.94311212h396.47936426a13.94311212 13.94311212 0 0 1 13.94311212 13.94311212v229.11670349a13.94311212 13.94311212 0 0 1-13.94311212 13.94311212z m-382.53625214-27.88622425h368.59314002v-201.23047924H526.16445889v201.23047924z",fill:"#6E6E96","p-id":"18928"}),d("path",{d:"M427.31825156 436.74379516c0 17.12911295-14.01282779 31.15588403-31.14194074 31.15588404H258.11858637c-17.1221413 0-31.14194074-14.0163132-31.14194074-31.15588404v-296.04712774c0-17.12911295 14.0163132-31.14542697 31.14194073-31.14542615H396.17631082c17.12911295 0 31.14194074 14.0163132 31.14194074 31.14542615v296.04712774z",fill:"#F0F0FF","p-id":"18929"}),d("path",{d:"M427.31825156 436.74379516c0 17.12911295-14.01282779 31.15588403-31.14194074 31.15588404H258.11858637c-17.1221413 0-31.14194074-14.0163132-31.14194074-31.15588404v-296.04712774c0-17.12911295 14.0163132-31.14542697 31.14194073-31.14542615H396.17631082c17.12911295 0 31.14194074 14.0163132 31.14194074 31.14542615v296.04712774z",fill:"#FFFFFF","p-id":"18930"}),d("path",{d:"M226.97315939 172.01289774h200.35206382v257.6896257H226.97315939z",fill:"#B4D1F2","p-id":"18931"}),d("path",{d:"M236.25578625 429.70252344l191.06246531-191.07640779v64.35791951L300.59976327 429.70252344z",fill:"#DEEFFF","p-id":"18932"}),d("path",{d:"M427.31825156 302.98403516L300.59976327 429.70252344h126.71848829z",fill:"#FFFFFF","p-id":"18933"}),d("path",{d:"M226.97315939 397.73793882h200.34509217v27.88622424H226.97315939z",fill:"#6E6E96","p-id":"18934"}),d("path",{d:"M229.07508402 216.7528585l47.87716085-57.25041835H362.81741532L230.36830723 301.32131867z",fill:"#FFFFFF","p-id":"18935"}),d("path",{d:"M404.10994128 159.50244015L233.14995816 330.45545163l-0.20217535 24.4597044 195.40923047-195.41271588z",fill:"#FFFFFF","p-id":"18936"}),d("path",{d:"M396.17631082 481.83930591H258.11858637c-30.33672637 0-45.08505286-14.75181272-45.08505286-45.09899616v-296.04712774c0-30.34021179 14.74832648-45.08853909 45.08505285-45.0885391H396.17631082c30.33672637 0 45.08505286 14.74832648 45.08505286 45.0885391v296.04712774c0 30.34718345-14.74832648 45.09899615-45.08505286 45.09899616zM258.11858637 123.49435339c-14.95050183 0-17.19882862 2.25181219-17.19882862 17.20231403v296.04712774c0 14.96095889 2.25181219 17.21277191 17.19882861 17.21277192H396.17631082c14.95050183 0 17.19882862-2.25181219 17.19882861-17.21277192v-296.04712774c0-14.95050183-2.25181219-17.20231485-17.19882861-17.20231403H258.11858637z",fill:"#6E6E96","p-id":"18937"}),d("path",{d:"M226.97315939 150.84725349h200.34509217v27.88622423H226.97315939z",fill:"#6E6E96","p-id":"18938"}),d("path",{d:"M185.52028714 757.89549622H149.7422615a13.94311212 13.94311212 0 0 1 0-27.88622425h35.77802564a13.94311212 13.94311212 0 0 1 0 27.88622425z",fill:"#6E6E96","p-id":"18939"}),d("path",{d:"M125.32787241 876.34920522v-292.89249892c0-21.09244317 10.49916357-23.86712246 23.33379831-23.86712164h378.63915215c12.83463473 0 23.33728372 2.78513635 23.33728373 23.86712164v292.89249892",fill:"#B9BCC9","p-id":"18940"}),d("path",{d:"M527.30430828 566.06964563H148.66515613c-12.83463473 0-23.33728372 2.77467929-23.33728372 23.86712246v19.04629093c0-21.09592859 10.50264898-23.87060788 23.33728371-23.87060788h378.63915216c12.83114933 0 23.34076996 2.78862259 23.34076997 23.87060788v-19.04629093c0-21.08198529-10.50962063-23.86712246-23.34076996-23.86712246z",fill:"#FFFFFF","p-id":"18941"}),d("path",{d:"M561.66710809 873.83595908h-27.88622424v-290.39319526c0-9.92401035-0.52983792-9.92401035-9.39765702-9.92401034H151.58972382c-9.39765784 0-9.39765784 0.56120993-9.39765784 9.92401034v290.39319526h-27.88622342v-290.39319526c0-25.08714458 12.545315-37.81023459 37.28388126-37.81023459H524.38322683c24.74205249 0 37.28388208 12.71960376 37.28388127 37.81023459v290.39319526z",fill:"#6E6E96","p-id":"18942"}),d("path",{d:"M559.90679016 867.71841892H393.74672363v15.99274978H276.45377896v-15.99274978H117.39772735a13.37144431 13.37144431 0 0 0-13.32961523 13.32264358v34.65211954h469.16829327v-34.64863412a13.36795889 13.36795889 0 0 0-13.32961523-13.326129z",fill:"#B9BCC9","p-id":"18943"}),d("path",{d:"M559.90679016 862.00522864H393.74672363v15.9962352H276.45377896v-15.9962352H117.39772735a13.36795889 13.36795889 0 0 0-13.32961523 13.32612983v20.953011a13.37144431 13.37144431 0 0 1 13.32961524-13.33310064h159.0560516v16.00669309h117.29294467v-16.00669309h166.15658111a13.37144431 13.37144431 0 0 1 13.326129 13.33310064v-20.953011a13.35053018 13.35053018 0 0 0-13.32264358-13.32612983z",fill:"#FFFFFF","p-id":"18944"}),d("path",{d:"M173.14577548 601.65595379h329.98814813v222.86670365H173.14577548z",fill:"#8CBDF2","p-id":"18945"}),d("path",{d:"M279.39228913 814.06183752l217.77049649-204.02607348v59.87172381l-144.43321235 144.15434967z",fill:"#DEEFFF","p-id":"18946"}),d("path",{d:"M497.16278562 669.90748785l-144.43321235 144.15434967h144.43321235z",fill:"#FFFFFF","p-id":"18947"}),d("path",{d:"M503.13392361 838.46576956H173.14577548a13.94311212 13.94311212 0 0 1-13.94311212-13.94311212v-222.86670365a13.94311212 13.94311212 0 0 1 13.94311212-13.94311212h329.98814813a13.94311212 13.94311212 0 0 1 13.94311213 13.94311212v222.86670365a13.94311212 13.94311212 0 0 1-13.94311213 13.94311212z m-316.045036-27.88622424h302.10192389v-194.9804794H187.0888876v194.9804794z",fill:"#6E6E96","p-id":"18948"}),d("path",{d:"M173.14577548 601.65595379h324.02049637v23.37562739H173.14577548zM104.07159753 899.06602042h469.17177952v16.63761867H104.07159753z",fill:"#6E6E96","p-id":"18949"}),d("path",{d:"M573.23640539 929.63977957H104.06811212a13.94311212 13.94311212 0 0 1-13.94311212-13.94311211v-34.65211955c0-15.03416079 12.23508115-27.26575571 27.27272736-27.2657557h159.0560516a13.94311212 13.94311212 0 0 1 13.94311212 13.94311212v2.04963767h89.40672044v-2.04963767a13.94311212 13.94311212 0 0 1 13.94311211-13.94311212h166.15658112c15.03764621 0 27.27272736 12.23508115 27.27272736 27.26924194v34.64863331c0.00348542 7.70008392-6.23954278 13.94311212-13.93962672 13.94311211z m-455.22518115-27.88622424h441.28206904v-20.0920243H407.68983575v2.04963767a13.94311212 13.94311212 0 0 1-13.94311212 13.94311212H276.45377896a13.94311212 13.94311212 0 0 1-13.94311212-13.94311212v-2.04963767H118.01122424v20.0920243z",fill:"#6E6E96","p-id":"18950"}),d("path",{d:"M699.94792285 373.26429193c-45.72992175-77.71193509-122.75515887-130.53541552-211.32180752-144.92470743l4.4722532-27.52370342c96.78262719 15.724345 180.93279419 73.42094228 230.88050766 158.30660879l-24.03095334 14.14180205zM138.3646825 505.03018664h-27.88622425c0-62.44422775 17.55437778-123.22573901 50.76687113-175.76338513l23.5743165 14.89821488c-30.39249875 48.0758508-46.45496338 103.7018963-46.45496338 160.86517025z",fill:"#6E6E96","p-id":"18951"})])],-1)),Hv={class:"tool-item_name"},Wv=xt(()=>d("span",{class:"t"},null,-1)),Vv={class:"b"},jv={class:"tool-item_icon"},Gv={t:"1654871923674",class:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"1414",width:"128",height:"128",style:{padding:"5px"}},zv=xt(()=>d("path",{d:"M247.466667 76.8h25.6l51.2 307.2h-25.6L247.466667 76.8zM762.453333 76.8h25.6L742.4 385.706667h-25.6L762.453333 76.8z",fill:"#96CAFF","p-id":"1415"},null,-1)),Kv=xt(()=>d("path",{d:"M275.2 409.6H324.266667L256.938667 51.2H230.4zM230.4 25.6h26.538667a25.6 25.6 0 0 1 25.173333 20.906667l67.242667 358.4A25.6 25.6 0 0 1 324.266667 435.2h-49.066667a25.6 25.6 0 0 1-25.6-22.442667L204.8 54.357333A25.6 25.6 0 0 1 227.242667 25.6zM785.066667 51.2l-44.885334 358.4H691.2l67.242667-358.4z m0-25.6h-26.624a25.6 25.6 0 0 0-25.173334 20.906667l-67.157333 358.4A25.6 25.6 0 0 0 691.2 435.2h48.981333a25.6 25.6 0 0 0 25.6-22.442667l44.885334-358.4A25.6 25.6 0 0 0 788.138667 25.6z",fill:"#175AA7","p-id":"1416"},null,-1)),qv=xt(()=>d("path",{d:"M59.733333 665.6h930.133334a8.533333 8.533333 0 0 1 8.533333 8.533333v162.133334a8.533333 8.533333 0 0 1-8.533333 8.533333H59.733333a8.533333 8.533333 0 0 1-8.533333-8.533333V674.133333a8.533333 8.533333 0 0 1 8.533333-8.533333z",fill:"#96CAFF","p-id":"1417"},null,-1)),Jv=xt(()=>d("path",{d:"M460.8 768h25.6v-25.6h-25.6z m-25.6-51.2h76.8v76.8h-76.8zM716.8 768h25.6v-25.6h-25.6z m-25.6-51.2h76.8v76.8h-76.8zM588.8 768h25.6v-25.6h-25.6z m-25.6-51.2h76.8v76.8h-76.8zM844.8 768h25.6v-25.6h-25.6z m-25.6-51.2h76.8v76.8h-76.8z",fill:"#175AA7","p-id":"1418"},null,-1)),Xv=xt(()=>d("path",{d:"M153.6 844.8h68.693333l-25.6 76.8H179.2l-25.6-76.8z",fill:"#96CAFF","p-id":"1419"},null,-1)),Zv=xt(()=>d("path",{d:"M203.434667 844.8h8.533333l12.629333 17.493333-2.730666 8.106667h-26.965334z m-74.069334 0h-8.533333l-12.629333 17.493333 2.730666 8.106667h26.965334z m17.066667 51.2h39.936l8.533333-25.6h-57.002666zM102.4 844.8h128l-25.6 76.8h-76.8z",fill:"#175AA7","p-id":"1420"},null,-1)),Qv=xt(()=>d("path",{d:"M844.8 844.8h68.693333l-25.6 76.8H870.4l-25.6-76.8z",fill:"#96CAFF","p-id":"1421"},null,-1)),ey=xt(()=>d("path",{d:"M913.066667 870.4l2.730666-8.106667-12.629333-17.493333h-8.533333l-8.533334 25.6z m-92.501334-25.6h-8.533333l-12.629333 17.493333 2.730666 8.106667h26.965334z m17.066667 51.2h39.936l8.533333-25.6h-57.002666zM793.6 844.8h128l-25.6 76.8h-76.8zM204.8 768h25.6v25.6h-25.6zM281.6 768h25.6v25.6h-25.6zM128 768h25.6v25.6h-25.6zM358.4 768h25.6v25.6h-25.6zM204.8 716.8h25.6v25.6h-25.6zM281.6 716.8h25.6v25.6h-25.6zM128 716.8h25.6v25.6h-25.6zM358.4 716.8h25.6v25.6h-25.6z",fill:"#175AA7","p-id":"1422"},null,-1)),ty=xt(()=>d("path",{d:"M69.12 640l176.128-249.941333A76.8 76.8 0 0 1 307.2 358.4h441.6A76.8 76.8 0 0 1 810.666667 390.058667L986.026667 640",fill:"#B3D9FF","p-id":"1423"},null,-1)),ny=xt(()=>d("path",{d:"M742.4 358.4l187.050667 256.597333h57.941333L805.290667 358.4H742.4z",fill:"#96CAFF","p-id":"1424"},null,-1)),sy=xt(()=>d("path",{d:"M51.2 640a25.6 25.6 0 0 0-25.6 25.6v153.6a25.6 25.6 0 0 0 25.6 25.6h921.6a25.6 25.6 0 0 0 25.6-25.6V665.6a25.6 25.6 0 0 0-25.6-25.6z m0-25.6h921.6a51.2 51.2 0 0 1 51.2 51.2v153.6a51.2 51.2 0 0 1-51.2 51.2H51.2a51.2 51.2 0 0 1-51.2-51.2V665.6a51.2 51.2 0 0 1 51.2-51.2z",fill:"#175AA7","p-id":"1425"},null,-1)),ry=xt(()=>d("path",{d:"M167.936 451.84L186.197333 426.666667l15.786667-21.674667A51.2 51.2 0 0 1 243.370667 384h536.149333a51.2 51.2 0 0 1 41.386667 21.077333L985.429333 640h31.232L841.642667 390.058667A76.8 76.8 0 0 0 779.52 358.4H243.370667a76.8 76.8 0 0 0-62.122667 31.658667l-34.133333 47.104L5.12 640h31.232z",fill:"#175AA7","p-id":"1426"},null,-1)),ay=[zv,Kv,qv,Jv,Xv,Zv,Qv,ey,ty,ny,sy,ry],oy={class:"tool-item_name"},iy={class:"t"},ly={key:0},uy={key:1},cy={key:2},dy={key:4},fy={class:"b"},hy={class:"tool-item"},_y=S3('
    ',1),py={class:"tool-item_name"},my=["href"],gy=ue({__name:"tool",setup(e){const t=it.stampForm;it.stampForm;const n=it.byteToSize,s=ur(),r=be(()=>s.network),a=be(()=>s.device),o=be(()=>s.updown);return(i,l)=>{const u=ht("router-link");return C(),N("div",Uv,[Ie(u,{class:"tool-item",to:"/router/device/list",title:"\u67E5\u770B\u5F53\u524D\u8FDE\u63A5\u8BBE\u5907"},{default:Ue(()=>[Yv,d("div",Hv,[d("span",null,X(a.value.devices.length),1)])]),_:1}),d("em",null,[Wv,d("span",Vv,X(J(t)(r.value.uptimeStamp)),1)]),Ie(u,{class:"tool-item",to:"/router/device/interface",title:"\u67E5\u770B\u5F53\u524D\u63A5\u53E3"},{default:Ue(()=>{var c;return[d("div",jv,[(C(),N("svg",Gv,ay))]),d("div",oy,[d("span",null,X(((c=r.value.defaultInterface)==null?void 0:c.toLocaleUpperCase())||"--"),1)])]}),_:1}),d("em",null,[d("span",iy,[r.value.networkInfo=="netSuccess"?(C(),N("span",ly," \u5DF2\u8054\u7F51 ")):r.value.networkInfo=="dnsFailed"?(C(),N("span",uy," DNS\u9519\u8BEF ")):r.value.networkInfo=="softSourceFailed"?(C(),N("span",cy," \u8F6F\u4EF6\u6E90\u89E3\u6790\u9519\u8BEF ")):(C(),N("span",dy," \u68C0\u6D4B\u4E2D "))]),d("span",fy," \u4E0A\u4F20: "+X(J(n)(o.value.up))+" \uFF5C \u4E0B\u8F7D: "+X(J(n)(o.value.download)),1)]),d("div",hy,[_y,d("div",py,[d("a",{href:r.value.ipv4addr},[d("span",null,X(r.value.ipv4addr||"--"),1)],8,my)])])])}}});var vy=he(gy,[["__scopeId","data-v-0003d2de"]]);const yy={class:"header-desktop"},by=ue({__name:"header",setup(e){const t=le(!1);return D9().afterEach(()=>{t.value=!1}),(s,r)=>(C(),N("header",yy,[Ie(Bv),Ie(vy)]))}});var Ey=he(by,[["__scopeId","data-v-5fdbc26a"]]);const ky={};function wy(e,t){const n=ht("router-view");return C(),Fe(n,{name:"default"},{default:Ue(({Component:s,route:r})=>[(C(),Fe(sd,null,{default:Ue(()=>[(C(),Fe($i(s),{key:r.path}))]),fallback:Ue(()=>[]),_:2},1024))]),_:1})}var Sy=he(ky,[["render",wy],["__scopeId","data-v-b888f30a"]]);const Cy={};function Ty(e,t){return C(),N("section",null,[Yt(e.$slots,"default",{},void 0,!0)])}var Fy=he(Cy,[["render",Ty],["__scopeId","data-v-6a6bc058"]]);const Dy={class:"section-title"},Oy=ue({__name:"section-title",props:{title:{type:String,default:""}},setup(e){return(t,n)=>(C(),N("div",Dy,[d("span",null,X(e.title),1),Yt(t.$slots,"default",{},void 0,!0)]))}});var Py=he(Oy,[["__scopeId","data-v-5cb5900e"]]);const Ny={},Iy={class:"section-container"};function Ay(e,t){return C(),N("div",Iy,[Yt(e.$slots,"default",{},void 0,!0)])}var Ly=he(Ny,[["render",Ay],["__scopeId","data-v-790a0322"]]);const My={},xy={class:"section-item"};function $y(e,t){return C(),N("div",xy,[Yt(e.$slots,"default",{},void 0,!0)])}var Ry=he(My,[["render",$y],["__scopeId","data-v-abe9a852"]]),By={install(e){e.component("layout-main",Sv),e.component("layout-page",Pv),e.component("layout-header",Ey),e.component("router-loading",Sy),e.component("nas-section",Fy),e.component("nas-section-title",Py),e.component("nas-section-container",Ly),e.component("nas-section-item",Ry)}},Gs;class bl{constructor(){Pl(this,Gs,void 0)}install(t){Nl(this,Gs,t)}openWindow(t,n){const s=document.createElement("div"),r=Ie(t,fr(gt({},n),{close:()=>{Ta(null,s),s.remove()}}));po(this,Gs)&&(r.appContext=po(this,Gs)._context),Ta(r,s),document.body.appendChild(s)}}Gs=new WeakMap;const Uy=["onClick"],Yy=ue({__name:"index",props:{setup:{type:String,default:"pppoe"}},setup(e){const n=le(e.setup),s=[{name:"device-router",title:"\u8BBE\u5907\u8DEF\u7531",f:()=>{}},{name:"network-monitoring",title:"\u5E26\u5BBD\u76D1\u63A7",f:()=>{}},{name:"network-speed",title:"\u5185\u7F51\u6D4B\u901F",f:()=>{}},{name:"opkg",title:"\u8F6F\u4EF6\u6E90\u914D\u7F6E",f:()=>{}},{name:"sandbox",title:"\u6C99\u7BB1\u529F\u80FD",f:()=>{}},{name:"system-monitor",title:"\u7CFB\u7EDF\u76D1\u63A7",f:()=>{}},{name:"backup-upgrade",title:"\u5907\u4EFD\u5347\u7EA7",f:()=>{}},{name:"plugin-upgrade",title:"\u63D2\u4EF6\u5907\u4EFD",f:()=>{}},{name:"os-upgrade",title:"\u56FA\u4EF6\u66F4\u65B0",f:()=>{}}];return(r,a)=>{const o=ht("popups-container");return C(),Fe(o,{title:"\u529F\u80FD\u7BA1\u7406",transparent:""},{left:Ue(()=>[(C(),N(me,null,ct(s,i=>d("li",{class:_t(["network-menu_item",{on:n.value==i.name}]),onClick:l=>n.value=i.name},[d("span",null,X(i.title),1)],10,Uy)),64))]),right:Ue(()=>[]),_:1})}}});const Hy={key:0,id:"app-dialog"},Wy={key:0,class:"app-dialog_bg"},Vy={key:0,class:"app-dialog_header"},jy={class:"app-dialog_body"},Gy=ue({__name:"index",props:{title:{type:String},bg:{type:Boolean,default:!0},width:{type:String},beforeClose:{type:Function}},emits:["change","update:modelValue","handleClose"],setup(e,{emit:t}){const n=e,s=le(!1),r=()=>{n.beforeClose&&n.beforeClose()===!1||(s.value=!1,t("update:modelValue",!1),t("handleClose"))};return is(()=>{s.value=!0}),(a,o)=>(C(),Fe(ja,{name:"dialog1"},{default:Ue(()=>[s.value?(C(),N("div",Hy,[e.bg?(C(),N("div",Wy)):pe("",!0),d("div",{class:"app-dialog_container",style:Ts({width:e.width})},[e.title!==void 0?(C(),N("div",Vy,[d("span",null,X(e.title),1),d("button",{class:"close",onClick:o[0]||(o[0]=i=>r())},[Ie(y1)])])):pe("",!0),d("div",jy,[Yt(a.$slots,"default",{},void 0,!0)])],4)])):pe("",!0)]),_:3}))}});var El=he(Gy,[["__scopeId","data-v-0af2e383"]]);const kl=e=>(nt("data-v-24ffa06c"),e=e(),st(),e),zy={class:"tools-container"},Ky=kl(()=>d("h1",null,"\u6B22\u8FCE\u4F7F\u7528iStoreOS",-1)),qy=kl(()=>d("p",null,"\u70B9\u51FB\u5F00\u59CB\u8BBE\u7F6E\uFF0C\u6211\u4EEC\u5C06\u4F1A\u5F15\u5BFC\u4F60\u5B8C\u6210iStoreOS\u7684\u4E00\u4E9B\u57FA\u7840\u914D\u7F6E\uFF0C",-1)),Jy=kl(()=>d("p",null,"\u6BD4\u5982\u6570\u636E\u76EE\u5F55\u3001\u5F71\u97F3\u548C\u8FDC\u7A0B\u4E0B\u8F7D\u914D\u7F6E\u7B49",-1)),Xy={class:"btns"},Zy=ue({__name:"top",setup(e){const t=ve("next");return ve("back"),(n,s)=>(C(),N("div",zy,[Ky,qy,Jy,d("div",Xy,[d("button",{class:"next",onClick:s[0]||(s[0]=(...r)=>J(t)&&J(t)(...r))},"\u4E0B\u4E00\u6B65")])]))}});var Qy=he(Zy,[["__scopeId","data-v-24ffa06c"]]);const ds=e=>(nt("data-v-99d95164"),e=e(),st(),e),eb=["onSubmit"],tb=ds(()=>d("div",{class:"label-name"}," \u63A5\u4E0B\u6765\u8BF7\u9009\u62E9\u4E00\u4E2A\u4E3B\u76EE\u5F55\u7A7A\u95F4\uFF08>20G && EXT4\uFF09 ",-1)),nb={class:"label-value"},sb=ds(()=>d("option",{value:""},"\u9009\u62E9\u5B58\u50A8\u7A7A\u95F4",-1)),rb=["value","disabled"],ab=ds(()=>d("div",{class:"msg"}," \u6570\u636E\u76EE\u5F55\u4E3B\u8981\u5B58\u653E\u4F60\u5728\u4F7F\u7528\u8FC7\u7A0B\u4E2D\u4EA7\u751F\u7684\u914D\u7F6E\u6587\u4EF6\u3001\u7D22\u5F15\u6587\u4EF6\u3001\u7F29\u7565\u56FE\u7B49\uFF0C\u5EFA\u8BAE\u63A5\u5165\u5BB9\u91CF\u8F83\u5927\u7684\u786C\u76D8\u5206\u533A\uFF0C\u9009\u62E9\u4F5C\u4E3A\u6570\u636E\u76EE\u5F55\u3002 ",-1)),ob={class:"form-item"},ib=ds(()=>d("label",null," \u7F13\u5B58\u76EE\u5F55 ",-1)),lb={class:"label-value"},ub=ds(()=>d("label",null," \u4E0B\u8F7D\u76EE\u5F55 ",-1)),cb={class:"label-value"},db=ds(()=>d("label",null," \u914D\u7F6E\u76EE\u5F55 ",-1)),fb={class:"label-value"},hb=ds(()=>d("label",null,[Et(" docker\u76EE\u5F55 "),d("span",null,[d("div",{class:"msg"}," \uFF08\u5982\u679Cdocker\u6709\u6548\uFF0C\u5C06\u6E05\u7A7A\u8BE5\u76EE\u6807\u8DEF\u5F84\u4E0B\u7684\u6587\u4EF6\u5E76\u8FC1\u79FB\u5230\u8BE5\u76EE\u5F55\uFF09 ")])],-1)),_b={class:"label-value"},pb={class:"btns"},mb=ds(()=>d("button",{class:"next"},"\u4E0B\u4E00\u6B65",-1)),gb=ue({__name:"path",setup(e){const t=ur(),n=be(()=>{var _;return((_=t==null?void 0:t.disk)==null?void 0:_.disks)||[]}),s=be(()=>{var _;return((_=t==null?void 0:t.raid)==null?void 0:_.disks)||[]}),r=be(()=>[...n.value,...s.value].filter(y=>y.childrens).map(y=>y.childrens)),a=ve("back"),o=ve("next"),i=()=>{o()},l=_=>!(_!=null&&_.mountPoint)||_.filesystem!="ext4"||Number(_.sizeInt)<21474836480,u=()=>{c.value.cachePath=c.value.path+"/Caches",c.value.plublicPath=c.value.path+"/Public",c.value.downloadPath=c.value.path+"/Public/Downloads",c.value.settingPath=c.value.path+"/Configs",c.value.dockerPath=c.value.path+"/docker"},c=ve("config");return(_,p)=>(C(),N("form",{class:"tools-container",onSubmit:ls(i,["prevent"])},[tb,d("div",nb,[d("label",null,[Xe(d("select",{required:"","onUpdate:modelValue":p[0]||(p[0]=y=>J(c).path=y),onChange:u},[sb,(C(!0),N(me,null,ct(r.value,y=>(C(),N(me,null,[(C(!0),N(me,null,ct(y,E=>(C(),N(me,null,[E.mountPoint?(C(),N("option",{key:0,value:E.mountPoint,disabled:l(E)},X(E.mountPoint)+" ["+X(`${E.name} ${E.total}`)+"] ",9,rb)):pe("",!0)],64))),256))],64))),256))],544),[[Od,J(c).path]])])]),ab,J(c).path!=""?(C(),N(me,{key:0},[d("div",ob,[ib,d("div",lb,[d("label",null,[Xe(d("input",{type:"text","onUpdate:modelValue":p[1]||(p[1]=y=>J(c).cachePath=y),required:""},null,512),[[nn,J(c).cachePath,void 0,{trim:!0}]])])]),ub,d("div",cb,[d("label",null,[Xe(d("input",{type:"text","onUpdate:modelValue":p[2]||(p[2]=y=>J(c).downloadPath=y),required:""},null,512),[[nn,J(c).downloadPath,void 0,{trim:!0}]])])]),db,d("div",fb,[d("label",null,[Xe(d("input",{type:"text","onUpdate:modelValue":p[3]||(p[3]=y=>J(c).settingPath=y),required:""},null,512),[[nn,J(c).settingPath,void 0,{trim:!0}]])])]),hb,d("div",_b,[d("label",null,[Xe(d("input",{type:"text","onUpdate:modelValue":p[4]||(p[4]=y=>J(c).dockerPath=y),required:""},null,512),[[nn,J(c).dockerPath,void 0,{trim:!0}]])])])]),d("div",pb,[d("button",{class:"back",type:"button",onClick:p[5]||(p[5]=(...y)=>J(a)&&J(a)(...y))},"\u4E0A\u4E00\u6B65"),mb])],64)):pe("",!0)],40,eb))}});var vb=he(gb,[["__scopeId","data-v-99d95164"]]);const yb=e=>(nt("data-v-7b090953"),e=e(),st(),e),bb={class:"tools-container"},Eb=yb(()=>d("div",{class:"label-name"}," \u9009\u62E9\u8981\u5B89\u88C5\u7684\u4E0B\u8F7D\u5DE5\u5177? ",-1)),kb={class:"form-item"},wb=["value"],Sb=["src"],Cb={class:"btns"},Tb=ue({__name:"download",setup(e){const t=ve("next"),n=ve("back"),s=ve("config"),r=ve("apps");be(()=>s.value);const a=wt([{name:"aria2",title:"Aria2\u4E0B\u8F7D\u5668"},{name:"transmission",title:"Transmission\u4E0B\u8F7D\u5668"},{name:"qbittorrent",title:"qBittorrent\u4E0B\u8F7D\u5668"}]),o=i=>oe.ApiStore.getStoreAppIcon(`/static-icon/openwrt-app-meta/app-meta-${i}/logo.png`);return(i,l)=>(C(),N("div",bb,[Eb,(C(!0),N(me,null,ct(a,u=>(C(),N("div",kb,[d("label",null,[Xe(d("input",{type:"checkbox",value:u.name,"onUpdate:modelValue":l[0]||(l[0]=c=>je(r)?r.value=c:null)},null,8,wb),[[Hi,J(r)]]),d("img",{src:o(u.name),alt:""},null,8,Sb),Et(" "+X(u.title),1)])]))),256)),d("div",Cb,[d("button",{type:"button",class:"back",onClick:l[1]||(l[1]=(...u)=>J(n)&&J(n)(...u))},"\u4E0A\u4E00\u6B65"),d("button",{class:"next",type:"button",onClick:l[2]||(l[2]=(...u)=>J(t)&&J(t)(...u))},"\u4E0B\u4E00\u6B65")])]))}});var Fb=he(Tb,[["__scopeId","data-v-7b090953"]]);const Db=e=>(nt("data-v-4d855e61"),e=e(),st(),e),Ob={class:"tools-container"},Pb=Db(()=>d("div",{class:"label-name"}," \u9009\u62E9\u8981\u5B89\u88C5\u7684\u5F71\u97F3\u5A31\u4E50? ",-1)),Nb={class:"form-item"},Ib=["value"],Ab=["src"],Lb={class:"btns"},Mb=ue({__name:"media",setup(e){const t=ve("next"),n=ve("back"),s=ve("config"),r=ve("apps");be(()=>s.value);const a=wt([{name:"jellyfin",title:"Jellyfin\u79C1\u6709\u5F71\u9662"},{name:"emby",title:"Emby\u5F71\u9662"},{name:"plex",title:"Plex\u5F71\u9662"}]),o=i=>oe.ApiStore.getStoreAppIcon(`/static-icon/openwrt-app-meta/app-meta-${i}/logo.png`);return(i,l)=>(C(),N("div",Ob,[Pb,(C(!0),N(me,null,ct(a,u=>(C(),N("div",Nb,[d("label",null,[Xe(d("input",{type:"checkbox",value:u.name,"onUpdate:modelValue":l[0]||(l[0]=c=>je(r)?r.value=c:null)},null,8,Ib),[[Hi,J(r)]]),d("img",{src:o(u.name),alt:""},null,8,Ab),Et(" "+X(u.title),1)])]))),256)),d("div",Lb,[d("button",{type:"button",class:"back",onClick:l[1]||(l[1]=(...u)=>J(n)&&J(n)(...u))},"\u4E0A\u4E00\u6B65"),d("button",{class:"next",type:"button",onClick:l[2]||(l[2]=(...u)=>J(t)&&J(t)(...u))},"\u4E0B\u4E00\u6B65")])]))}});var xb=he(Mb,[["__scopeId","data-v-4d855e61"]]);const $b=e=>(nt("data-v-2b6459ac"),e=e(),st(),e),Rb={class:"tools-container"},Bb=$b(()=>d("div",{class:"label-name"}," \u9009\u62E9\u8981\u5B89\u88C5\u7684\u591A\u5A92\u4F53\u5DE5\u5177 ",-1)),Ub={class:"form-item"},Yb=["value"],Hb=["src"],Wb={class:"btns"},Vb=ue({__name:"multimedia",setup(e){const t=ve("next"),n=ve("back"),s=ve("config"),r=ve("apps");be(()=>s.value);const a=wt([{name:"photoprism",title:"PhotoPrism\u76F8\u518C\u7BA1\u7406"},{name:"navidrome",title:"Navidrome\u97F3\u4E50"},{name:"lanraragi",title:"LANraragi\u7535\u5B50\u4E66"}]),o=i=>oe.ApiStore.getStoreAppIcon(`/static-icon/openwrt-app-meta/app-meta-${i}/logo.png`);return(i,l)=>(C(),N("div",Rb,[Bb,(C(!0),N(me,null,ct(a,u=>(C(),N("div",Ub,[d("label",null,[Xe(d("input",{type:"checkbox",value:u.name,"onUpdate:modelValue":l[0]||(l[0]=c=>je(r)?r.value=c:null)},null,8,Yb),[[Hi,J(r)]]),d("img",{src:o(u.name),alt:""},null,8,Hb),Et(" "+X(u.title),1)])]))),256)),d("div",Wb,[d("button",{type:"button",class:"back",onClick:l[1]||(l[1]=(...u)=>J(n)&&J(n)(...u))},"\u4E0A\u4E00\u6B65"),d("button",{class:"next",type:"button",onClick:l[2]||(l[2]=(...u)=>J(t)&&J(t)(...u))},"\u4E0B\u4E00\u6B65")])]))}});var jb=he(Vb,[["__scopeId","data-v-2b6459ac"]]);const w1=e=>(nt("data-v-a11bdd32"),e=e(),st(),e),Gb={class:"nalert"},zb={key:0,class:"nalert-container"},Kb={class:"nalert-data"},qb={class:"nalert-body"},Jb=w1(()=>d("div",{class:"nalert-bodt_title"},[d("svg",{t:"1670832330919",class:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"2696",width:"128",height:"128"},[d("path",{d:"M849.92 174.08C759.466667 83.626667 640 34.133333 512 34.133333s-247.466667 49.493333-337.92 139.946667C83.626667 264.533333 34.133333 384 34.133333 512s49.493333 247.466667 139.946667 337.92C264.533333 940.373333 384 989.866667 512 989.866667s247.466667-49.493333 337.92-139.946667C940.373333 759.466667 989.866667 640 989.866667 512s-49.493333-247.466667-139.946667-337.92zM512 218.453333c30.72 0 56.32 25.6 56.32 56.32 0 30.72-25.6 56.32-56.32 56.32s-56.32-25.6-56.32-56.32c0-30.72 25.6-56.32 56.32-56.32z m90.453333 552.96H443.733333c-18.773333 0-34.133333-15.36-34.133333-34.133333s15.36-34.133333 34.133333-34.133333h44.373334V455.68H477.866667c-18.773333 0-34.133333-15.36-34.133334-34.133333s15.36-34.133333 34.133334-34.133334h44.373333c18.773333 0 34.133333 15.36 34.133333 34.133334v281.6h44.373334c18.773333 0 34.133333 15.36 34.133333 34.133333s-13.653333 34.133333-32.426667 34.133333z",fill:"#333333","p-id":"2697"})]),d("span",null,X("\u63D0\u793A"))],-1)),Xb={class:"nalert-bodt_msg"},Zb=w1(()=>d("a",null,"docker\u8981\u8FC1\u79FB\u7684\u8DEF\u5F84\u4E0D\u4E3A\u7A7A",-1)),Qb={class:"nalert-bodt_btns"},eE=ue({__name:"app",props:{close:{type:Function,required:!0},callback:{type:Function,required:!0},bg:{type:Boolean,default:!0}},setup(e){const t=e,n=le(!1),s=le(1),r=()=>{t.callback(s.value)},a=()=>{t.close()};return is(()=>{setTimeout(()=>{n.value=!0},0)}),(o,i)=>(C(),N("div",Gb,[e.bg?(C(),N("div",{key:0,class:"nalert-bg",onClick:a})):pe("",!0),Ie(ja,{name:"dialog-nlaert"},{default:Ue(()=>[n.value?(C(),N("div",zb,[d("div",Kb,[d("div",qb,[Jb,d("div",Xb,[Zb,d("label",null,[Xe(d("input",{type:"radio",value:1,"onUpdate:modelValue":i[0]||(i[0]=l=>s.value=l)},null,512),[[es,s.value]]),Et(" \u66F4\u6362\u76EE\u5F55\uFF08\u4E0D\u8986\u76D6\u76EE\u6807\u8DEF\u5F84\uFF0C\u4EC5\u5C06docker\u76EE\u5F55\u4FEE\u6539\u4E3A\u76EE\u6807\u8DEF\u5F84\uFF09 ")]),d("label",null,[Xe(d("input",{type:"radio",value:0,"onUpdate:modelValue":i[1]||(i[1]=l=>s.value=l)},null,512),[[es,s.value]]),Et(" \u8986\u76D6\u8FC1\u79FB\uFF08\u8986\u76D6\u76EE\u6807\u8DEF\u5F84\uFF0C\u7EE7\u7EED\u8FC1\u79FB\u4F1A\u6E05\u7A7A\u8BE5\u76EE\u6807\u8DEF\u5F84\u4E0B\u7684\u6587\u4EF6\uFF09 ")])]),d("div",Qb,[d("button",{class:"next",onClick:i[2]||(i[2]=l=>r())}," \u786E\u5B9A "),d("button",{class:"clear",onClick:i[3]||(i[3]=l=>a())}," \u53D6\u6D88 ")])])])])):pe("",!0)]),_:1})]))}});var tE=he(eE,[["__scopeId","data-v-a11bdd32"]]),nE=()=>new Promise((e,t)=>{const n=document.createElement("div"),s=()=>{Ta(null,n),n.remove()},a=Ie(tE,gt({},{callback:o=>{e(o),s()},close:()=>{t(),s()}}));Ta(a,n),document.body.appendChild(n)});const wl=e=>(nt("data-v-11842e6c"),e=e(),st(),e),sE={class:"tools-container"},rE={key:0,class:"block"},aE=wl(()=>d("li",null," \u8FC1\u79FBdocker\u76EE\u5F55 ",-1)),oE=wl(()=>d("li",null," \u751F\u6210\u6570\u636E\u7684\u914D\u7F6E\u76EE\u5F55 ",-1)),iE=wl(()=>d("li",null," \u662F\u5426\u7EE7\u7EED\uFF1F ",-1)),lE={key:1,class:"block block-msg"},uE={class:"msg-li"},cE={class:"msg-item"},dE={class:"btns"},fE=["disabled"],hE=["disabled"],_E=ue({__name:"install",setup(e){ve("next");const t=ve("back");ve("init");const n=ve("apps"),s=ve("config");le(0);const r=ve("disabled"),a=le([]),o=le(!1),i=()=>te(this,null,function*(){if(!!window.confirm("\u60A8\u786E\u5B9A\u8981\u6267\u884C\u64CD\u4F5C\u5417?")){if(a.value=[],a.value.push("\u521D\u59CB\u5316\u914D\u7F6E..."),r.value=!0,(yield _())!==!0){r.value=!1;return}if((yield u())!==!0){r.value=!1;return}if((yield c())!==!0){r.value=!1;return}a.value.push("\u914D\u7F6E\u5B8C\u6210,\u7CFB\u7EDF\u4F1A\u5728\u540E\u53F0\u6267\u884C\u8F6F\u4EF6\u7684\u5B89\u88C5\u548C\u914D\u7F6E"),a.value.push("\u8BF7\u5173\u95ED\u7A97\u53E3"),o.value=!0}}),l=()=>{localStorage.setItem("nas_guide_init","1"),window.location.reload()},u=()=>te(this,null,function*(){let E=!1;a.value.push("\u914D\u7F6E\u76EE\u5F55...");try{const k=s.value,S={home:k.path,downloads:k.downloadPath,configs:k.settingPath,caches:k.cachePath,public:k.plublicPath},m=yield oe.Quickstart.Guide.GlobalFolders.POST(S);if(m.data){const{success:w,error:P,scope:b,detail:D}=m.data;if((w||0)==0&&(E=!0,a.value.push("\u76EE\u5F55\u914D\u7F6E\u5B8C\u6210...")),P)throw P}}catch(k){a.value.push(k)}return E}),c=()=>te(this,null,function*(){let E=!1;const k=n.value;if(a.value.push("\u5B89\u88C5\u63D2\u4EF6..."),k.length>0)try{const S={packages:k},m=yield oe.Quickstart.AutoSetup.POST(S);if(m.data){const{success:w,error:P}=m.data;if(w==0&&(a.value.push("\u5DF2\u63D0\u4EA4\u81F3\u540E\u5929\u5B89\u88C5"),E=!0),P)throw P}}catch(S){a.value.push(S)}else a.value.push("\u6CA1\u6709\u9700\u8981\u5B89\u88C5\u7684\u63D2\u4EF6,\u8DF3\u8FC7"),E=!0;return E}),_=()=>te(this,null,function*(){let E=!1;a.value.push("\u6B63\u5728\u83B7\u53D6docker\u72B6\u6001");const{dockerPath:k}=s.value;try{const S=yield oe.Quickstart.Guide.DockerStatus.GET();if(S.data){const{success:m,error:w,result:P}=S.data;if(w)throw w;if(P&&P.path===k)return a.value.push("docker\u8DEF\u5F84\u4E00\u81F4,\u8DF3\u8FC7\u8FC1\u79FB"),!0}}catch(S){return a.value.push(S),!1}a.value.push("\u6B63\u5728\u8FC1\u79FBdocker...");try{const S=yield oe.Quickstart.Guide.DockerTransfer.POST({path:k,force:!1});if(S.data){const{result:m,success:w,error:P}=S.data;if((w||0)==0)if(m!=null&&m.emptyPathWarning)try{switch(yield nE()){case 0:E=yield p(k);break;case 1:E=yield y(k);break;default:a.value.push("\u8DF3\u8FC7\u8FC1\u79FBdocker"),E=!0}}catch(b){a.value.push("\u8DF3\u8FC7\u8FC1\u79FBdocker"),E=!0}else E=!0,a.value.push("\u8FC1\u79FB\u5B8C\u6210...");if(P)throw S.data.error}}catch(S){a.value.push(S)}return E}),p=E=>te(this,null,function*(){let k=!1;try{const S=yield oe.Quickstart.Guide.DockerTransfer.POST({path:E,force:!0,overwriteDir:!0});if(S.data){const{result:m,success:w,error:P}=S.data;if((w||0)==0&&(m!=null&&m.emptyPathWarning?a.value.push("\u8FC1\u79FB\u5931\u8D25..."):(k=!0,a.value.push("\u8FC1\u79FB\u5B8C\u6210..."))),P)throw S.data.error}}catch(S){a.value.push(S)}return k}),y=E=>te(this,null,function*(){let k=!1;try{const S=yield oe.Quickstart.Guide.DockerTransfer.POST({path:E,force:!0,overwriteDir:!1});if(S.data){const{result:m,success:w,error:P}=S.data;if((w||0)==0&&(m!=null&&m.emptyPathWarning?a.value.push("\u8FC1\u79FB\u5931\u8D25..."):(k=!0,a.value.push("\u8FC1\u79FB\u5B8C\u6210..."))),P)throw S.data.error}}catch(S){a.value.push(S)}return k});return(E,k)=>(C(),N("div",sE,[J(r)?pe("",!0):(C(),N("div",rE,[aE,oE,d("li",null," \u5B89\u88C5\u9009\u4E2D\u7684 "+X(J(n).length)+" \u4E2A\u63D2\u4EF6 ",1),iE])),a.value.length>0?(C(),N("div",lE,[(C(!0),N(me,null,ct(a.value,S=>(C(),N("li",uE,[d("div",cE,X(S),1)]))),256))])):pe("",!0),d("div",dE,[o.value?(C(),N("button",{key:1,onClick:l,class:"next"},"\u5173\u95ED")):(C(),N(me,{key:0},[d("button",{class:"back",onClick:k[0]||(k[0]=(...S)=>J(t)&&J(t)(...S)),disabled:J(r)},"\u4E0A\u4E00\u6B65",8,fE),d("button",{class:"next",onClick:i,disabled:J(r)},"\u5B89\u88C5\u5E76\u914D\u7F6E",8,hE)],64))])]))}});var pE=he(_E,[["__scopeId","data-v-11842e6c"]]);const mE=e=>(nt("data-v-0dc4c17e"),e=e(),st(),e),gE={class:"tools-container"},vE=mE(()=>d("div",{class:"block"},[d("p",null," \u914D\u7F6E\u5B8C\u6210 "),d("p",null,"\u7CFB\u7EDF\u4F1A\u5728\u540E\u53F0\u6267\u884C\u8F6F\u4EF6\u7684\u5B89\u88C5\u548C\u914D\u7F6E")],-1)),yE=ue({__name:"success",setup(e){const t=ve("init"),n=()=>{t(),window.location.reload()};return(s,r)=>(C(),N("div",gE,[vE,d("div",{class:"btns"},[d("button",{onClick:n,class:"next"},"\u77E5\u9053\u4E86")])]))}});var bE=he(yE,[["__scopeId","data-v-0dc4c17e"]]);const EE={class:"nas-tools_item"},kE=ue({__name:"index",props:{close:Function},setup(e){const t=e,n=be(()=>[Qy,vb,Fb,xb,jb,pE,bE]),s=Ht(),r=()=>{if(y.value)return!1},a=()=>{var E,k,S,m;u(),t.close&&t.close(),s&&((S=(k=(E=s==null?void 0:s.appContext)==null?void 0:E.config)==null?void 0:k.globalProperties)==null?void 0:S.$close)&&((m=s.appContext.config.globalProperties)==null||m.$close())},o=le(0),i=()=>{y.value||o.value>=n.value.length-1||o.value++},l=()=>{y.value||o.value!=0&&o.value--},u=()=>{oe.Storage.Set.POST({key:"nas_guide_init",type:"option",values:["1"]}).then(E=>{})},c=be(()=>({transform:`translateX(${o.value*-100}%)`})),_=le({path:"",cachePath:"",downloadPath:"",settingPath:"",dockerPath:"",plublicPath:""}),p=le([]),y=le(!1);return It("next",i),It("back",l),It("init",u),It("config",_),It("apps",p),It("disabled",y),(E,k)=>(C(),Fe(El,{class:"nas-dialog",title:"iStoreOS",onHandleClose:a,"before-close":r,width:"860px"},{default:Ue(()=>[d("div",{class:"nas-tools",style:Ts(c.value)},[(C(!0),N(me,null,ct(n.value,(S,m)=>(C(),N("div",EE,[m==o.value?(C(),Fe($i(S),{key:0})):pe("",!0)]))),256))],4)]),_:1}))}});var wE=he(kE,[["__scopeId","data-v-c4e63fa4"]]);class SE extends bl{OpenNasSettingWindow(){this.openWindow(Yy)}OpenGuideWindow(){this.openWindow(wE)}}const CE=new SE;const S1=e=>(nt("data-v-529c6a5d"),e=e(),st(),e),TE={class:"app-item"},FE={class:"app-card"},DE={class:"app-item_icon"},OE=["src"],PE={class:"app-item_info"},NE={class:"app-title"},IE={class:"app-as"},AE={style:{"font-weight":"600"}},LE=S1(()=>d("span",{style:{margin:"0 10px"}},"|",-1)),ME={style:{"font-weight":"600"}},xE=["title"],$E={key:0,class:"app-btn"},RE={key:1,class:"app-btn"},BE=S1(()=>d("div",null,null,-1)),UE=ue({__name:"app",props:{app:{type:Object,required:!0}},setup(e){const t=e,n=le(localStorage.getItem("i18n")),s=o1(),r=it.numberFormat,a=be(()=>s.appsExpand[t.app.name]||{downloadCount:0,isStar:null,name:t.app.name,starCount:0}),o=()=>{fe.Message("\u60A8\u5DF2\u70B9\u8D5E\u8FC7\u4E86")},i=()=>te(this,null,function*(){var l;try{const u=yield oe.ApiStore.star.POST({appId:t.app.name,deviceId:it.getDeviceId()});((l=u==null?void 0:u.data)==null?void 0:l.success)==0&&s.appsExpand[t.app.name]&&(s.appsExpand[t.app.name].isStar=!0)}catch(u){fe.Error(`${u}`)}});return(l,u)=>{const c=ht("icon-star-off"),_=ht("icon-star-on");return C(),N("div",TE,[d("div",FE,[d("div",DE,[d("img",{src:e.app.getIcon(),alt:""},null,8,OE)]),d("div",PE,[d("div",NE,[Et(X(n.value==="en"&&e.app.title_en||e.app.title)+" ",1),d("em",null,X(e.app.version),1)]),d("div",IE,[d("span",AE,X(J(r)(a.value.downloadCount))+" "+X(l.$t("\u6B21\u4E0B\u8F7D")),1),LE,d("span",ME,X(J(r)(a.value.starCount))+" "+X(l.$t("\u6B21\u70B9\u8D5E")),1),a.value.isStar!=null?(C(),N(me,{key:0},[a.value.isStar?(C(),N("a",{key:0,class:"star-btn",onClick:u[0]||(u[0]=p=>o())},[Ie(c)])):(C(),N("a",{key:1,class:"star-btn",onClick:u[1]||(u[1]=p=>i())},[Ie(_)]))],64)):pe("",!0)]),d("div",{class:"app-desc",title:e.app.description},X(n.value==="en"&&e.app.description_en||e.app.description),9,xE)])]),e.app.isInstall()?(C(),N("div",$E,[e.app.isUpdate()?(C(),N("button",{key:0,class:"update",onClick:u[2]||(u[2]=p=>e.app.update())},X(l.$t("\u66F4\u65B0")),1)):pe("",!0),d("button",{class:"del",onClick:u[3]||(u[3]=p=>e.app.uninstall())},X(l.$t("\u5378\u8F7D")),1),d("button",{onClick:u[4]||(u[4]=p=>e.app.openApp()),class:"open"},X(l.$t("\u6253\u5F00")),1)])):(C(),N("div",RE,[BE,d("button",{class:"install",onClick:u[5]||(u[5]=p=>e.app.install())},X(l.$t("\u5B89\u88C5")),1)]))])}}});var Cc=he(UE,[["__scopeId","data-v-529c6a5d"]]);const YE=ue({__name:"index",emits:["change"],setup(e,{emit:t}){const n=i=>{},s=i=>{i===null&&console.log("dragleave")},r=i=>{i.preventDefault(),i.dataTransfer&&(i.dataTransfer.dropEffect="link")},a=i=>{i.preventDefault(),o(i)},o=i=>{var u;const l=(u=i==null?void 0:i.dataTransfer)==null?void 0:u.files;if(l&&l.length>0){const c=[];for(let _=0;_(C(),N("div",{onDrop:a,onDragenter:n,onDragleave:s,onDragover:r},[Yt(i.$slots,"default")],32))}});const C1=e=>(nt("data-v-19021bf0"),e=e(),st(),e),HE={class:"tab"},WE={key:1,class:"filter"},VE=C1(()=>d("span",null,"\u6807\u7B7E\uFF1A",-1)),jE=["onClick"],GE={key:2,class:"filter"},zE=C1(()=>d("span",null,"\u6392\u5E8F\uFF1A",-1)),KE=["onClick"],qE={key:3},JE={class:"section-list"},XE={key:4},ZE={class:"section-list"},QE=ue({__name:"appStore",setup(e){const t=le("installed"),n=le(""),s=le(null),r=o1(),a=be(()=>r.localApps||[]),o=be(()=>r.remoteApps||[]),i=be(()=>r.tags||[]),l=wt({filterRemoteApps:[...o.value]});be(()=>a.value.filter(k=>k.isUpdate()));const u=k=>{if(k&&k.length>0){const S=k[0];(S.name.endsWith(".run")||S.name.endsWith(".ipk"))&&E(S)}},c=k=>{k!==t.value&&(t.value==="installed"?t.value="all":t.value="installed")},_=k=>{if(n.value=k,k!==""){const S=[...o.value.filter(m=>m.tags.includes(k))];l.filterRemoteApps=S}else l.filterRemoteApps=[...o.value]},p=k=>(s.value=k,k===null?_(n.value):l.filterRemoteApps=l.filterRemoteApps.sort((S,m)=>k===0?m.downloadCount-S.downloadCount:k===1?m.starCount-S.starCount:k===2?m.time-S.time:0)),y=k=>{if(k.target.value==="")return _(n.value);l.filterRemoteApps=l.filterRemoteApps.filter(S=>S.title.includes(k.target.value))},E=k=>te(this,null,function*(){const S=new FormData;S.append(k.name,k);const m=fe.Loading("\u4E0A\u4F20\u4E2D...");try{const w=yield oe.Store.upload.POST(S);if(w.data){const{stderr:P,code:b}=w.data;if(b==0&&Ms.istore.Open(),P)throw P}}catch(w){fe.Error(`${w}`)}finally{m.Close()}});return(k,S)=>(C(),Fe(YE,{onChange:u},{default:Ue(()=>[d("div",HE,[d("span",{class:_t(t.value==="installed"&&"active"),onClick:S[0]||(S[0]=m=>c("installed"))},"\u5DF2\u5B89\u88C5\uFF08"+X(a.value.length)+"\uFF09",3),d("span",{class:_t(t.value==="all"&&"active"),onClick:S[1]||(S[1]=m=>c("all"))},"\u5168\u90E8\u8F6F\u4EF6\uFF08"+X(o.value.length)+"\uFF09",3)]),t.value==="all"?(C(),N("input",{key:0,class:"search",type:"text",onChange:y},null,32)):pe("",!0),t.value==="all"?(C(),N("div",WE,[d("span",null,[VE,d("span",{onClick:S[2]||(S[2]=m=>_("")),class:_t(`default tag ${n.value===""&&"active"}`)},"\u9ED8\u8BA4",2)]),d("div",null,[(C(!0),N(me,null,ct(i.value,m=>(C(),N("span",{onClick:w=>_(m),class:_t(`tag ${n.value===m&&"active"}`)},X(m),11,jE))),256))])])):pe("",!0),t.value==="all"?(C(),N("div",GE,[d("span",null,[zE,d("span",{onClick:S[3]||(S[3]=m=>p(null)),class:_t(`default tag ${s.value===null&&"active"}`)},"\u9ED8\u8BA4",2)]),d("div",null,[(C(),N(me,null,ct(["\u6309\u4E0B\u8F7D\u91CF","\u6309\u8BC4\u5206","\u6700\u8FD1\u66F4\u65B0"],(m,w)=>d("span",{onClick:P=>p(w),class:_t(`tag ${s.value===w&&"active"}`)},X(m),11,KE)),64))])])):pe("",!0),a.value.length>0&&t.value==="installed"?(C(),N("section",qE,[d("div",JE,[(C(!0),N(me,null,ct(a.value,m=>(C(),Fe(Cc,{app:m},null,8,["app"]))),256))])])):pe("",!0),l.filterRemoteApps.length>0&&t.value==="all"?(C(),N("section",XE,[d("div",ZE,[(C(!0),N(me,null,ct(l.filterRemoteApps,m=>(C(),N(me,null,[m.isInstall()?pe("",!0):(C(),Fe(Cc,{key:0,app:m},null,8,["app"]))],64))),256))])])):pe("",!0)]),_:1}))}});var ek=he(QE,[["__scopeId","data-v-19021bf0"]]);const tk=ue({__name:"index",props:{close:Function},setup(e){const t=e,n=()=>{t.close&&t.close()};return(s,r)=>(C(),Fe(El,{onHandleClose:n,title:s.$t("\u5E94\u7528\u4E2D\u5FC3")},{default:Ue(()=>[Ie(ek)]),_:1},8,["title"]))}});class nk extends bl{Open(){this.openWindow(tk)}}const sk=new nk,rk={class:"tab-content"},ak={class:"item-label"},ok=d("div",{class:"item-label_key"},[d("span",null,"\u540D\u79F0")],-1),ik={class:"item-label_value"},lk={key:0,class:"item-label"},uk=d("div",{class:"item-label_key"},[d("span",null,"\u578B\u53F7")],-1),ck={class:"item-label_value"},dk={class:"item-label"},fk=d("div",{class:"item-label_key"},[d("span",null,"\u8DEF\u5F84")],-1),hk={class:"item-label_value"},_k={class:"item-label"},pk=d("div",{class:"item-label_key"},[d("span",null,"\u5BB9\u91CF")],-1),mk={class:"item-label_value"},gk={class:"item-label"},vk=d("div",{class:"item-label_key"},[d("span",null,"\u7C7B\u578B")],-1),yk={class:"item-label_value"},bk={key:1,class:"item-label"},Ek=d("div",{class:"item-label_key"},[d("span",null,"\u7CFB\u7EDF\u5206\u533A")],-1),kk=d("div",{class:"item-label_value"},[d("span",null,"true")],-1),wk=[Ek,kk],Sk={key:2,class:"item-label"},Ck=d("div",{class:"item-label_key"},[d("span",null,"docker\u5206\u533A")],-1),Tk=d("div",{class:"item-label_value"},[d("span",null,"true")],-1),Fk=[Ck,Tk],Dk={key:3,class:"item-label"},Ok=d("div",{class:"item-label_key"},[d("span",null,"\u63A5\u5165\u65B9\u5F0F")],-1),Pk=d("div",{class:"item-label_value"},[d("span",null,"\u5916\u63A5")],-1),Nk=[Ok,Pk],Ik={class:"item-label"},Ak=d("div",{class:"item-label_key"},[d("span",null,"\u5206\u533A\u6570\u91CF")],-1),Lk={class:"item-label_value"},Mk={key:4,class:"item-label"},xk=d("div",{class:"item-label_key"},[d("span",null,"error")],-1),$k={class:"item-label_value"},Rk=ue({__name:"main",setup(e){const t=ve("disk");return(n,s)=>{var r;return C(),N("section",rk,[d("div",ak,[ok,d("div",ik,[d("span",null,X(J(t).name),1)])]),J(t).venderModel?(C(),N("div",lk,[uk,d("div",ck,[d("span",null,X(J(t).venderModel),1)])])):pe("",!0),d("div",dk,[fk,d("div",hk,[d("span",null,X(J(t).path),1)])]),d("div",_k,[pk,d("div",mk,[d("span",null,X(J(t).used)+"/"+X(J(t).total),1)])]),d("div",gk,[vk,d("div",yk,[d("span",null,X(J(t).partyLabelType),1)])]),J(t).isSystemRoot?(C(),N("div",bk,wk)):pe("",!0),J(t).isDockerRoot?(C(),N("div",Sk,Fk)):pe("",!0),J(t).isExternalDisk?(C(),N("div",Dk,Nk)):pe("",!0),d("div",Ik,[Ak,d("div",Lk,[d("span",null,X((r=J(t).childrens)==null?void 0:r.length),1)])]),J(t).errorInfo?(C(),N("div",Mk,[xk,d("div",$k,[d("span",null,X(J(t).errorInfo),1)])])):pe("",!0)])}}}),Bk={class:"tab-content"},Uk=d("div",{class:"label-name"},[d("span",null,"\u76EE\u6807\u5206\u533A")],-1),Yk={class:"label-value"},Hk=d("option",{value:-1},"\u9009\u62E9\u8981\u6302\u8F7D\u7684\u5206\u533A",-1),Wk=["value"],Vk=d("div",{class:"label-name"},[d("span",null,"\u6302\u8F7D\u70B9")],-1),jk={class:"label-value"},Gk={class:"label-btns"},zk=["disabled"],Kk=ue({__name:"mount",props:{mountIndex:{type:Number,required:!0}},setup(e){const t=e,n=ve("disk"),s=ve("disabled"),r=wt({index:t.mountIndex!=null?t.mountIndex:-1,mountPoint:"",item:{mountPoint:"",path:"",name:"",filesystem:"",total:"",used:"",usage:0,uuid:"",isReadOnly:!1,isSystemRoot:!1,sizeInt:""}}),a=()=>{var l;const i=n.value;r.index==-1&&(r.item=null,r.mountPoint=""),i.childrens&&(r.item=i.childrens[r.index],r.mountPoint="/mnt/data_"+((l=r==null?void 0:r.item)==null?void 0:l.name))},o=()=>te(this,null,function*(){const i=n.value,l=r.item;if(l==null||r.index==-1){fe.Message("\u83B7\u53D6\u4E0D\u5230\u8981\u6302\u8F7D\u7684\u5206\u533A");return}if(l.path==null||l.path==""){fe.Message("\u83B7\u53D6\u4E0D\u5230\u6302\u8F7D\u7684\u5206\u533A\u8DEF\u5F84");return}if(l.uuid==null||l.uuid==""){fe.Message("\u83B7\u53D6\u4E0D\u5230\u6302\u8F7D\u7684\u5206\u533AID");return}if(r.mountPoint==""){fe.Message("\u6302\u8F7D\u70B9\u4E0D\u80FD\u4E3A\u7A7A");return}const u=fe.Loading("\u6302\u8F7D\u4E2D...");try{const c=yield oe.Nas.Disk.Partition.Mount.POST({path:l.path,uuid:l.uuid,mountPoint:r.mountPoint});if(c!=null&&c.data){const{result:_,error:p}=c==null?void 0:c.data;if(p)throw p;_&&(i&&i.childrens&&i.childrens[r.index]&&(i.childrens[r.index].mountPoint=_.mountPoint),fe.Success("\u6302\u8F7D\u6210\u529F,\u8BF7\u5173\u95ED\u7A97\u53E3"))}}catch(c){fe.Error(`${c}`)}finally{u.Close(),s.value=!1}});return r.index>=0&&a(),(i,l)=>(C(),N("section",Bk,[Uk,d("div",Yk,[Xe(d("select",{"onUpdate:modelValue":l[0]||(l[0]=u=>r.index=u),onChange:a},[Hk,(C(!0),N(me,null,ct(J(n).childrens,(u,c)=>{var _;return C(),N(me,null,[u.mountPoint?pe("",!0):(C(),N("option",{key:0,value:c},X(u.path)+"\uFF08"+X(u.total)+"\uFF0C"+X((_=u==null?void 0:u.filesystem)==null?void 0:_.toUpperCase())+"\uFF09 ",9,Wk))],64)}),256))],544),[[Od,r.index]])]),r.index!=-1?(C(),N(me,{key:0},[Vk,d("div",jk,[Xe(d("input",{type:"text","onUpdate:modelValue":l[1]||(l[1]=u=>r.mountPoint=u)},null,512),[[nn,r.mountPoint,void 0,{trim:!0}]])]),d("div",Gk,[d("button",{class:"mount",disabled:J(s),onClick:l[2]||(l[2]=u=>o())},"\u6302\u8F7D",8,zk)])],64)):pe("",!0)]))}}),qk={class:"tab-content"},Jk=d("colgroup",null,[d("col"),d("col"),d("col"),d("col"),d("col")],-1),Xk=d("thead",null,[d("tr",null,[d("th",null," \u540D\u79F0 "),d("th",null," \u8DEF\u5F84 "),d("th",null," \u5BB9\u91CF "),d("th",null,"\u683C\u5F0F"),d("th",null," \u72B6\u6001 "),d("th",null," \u6302\u8F7D\u70B9 ")])],-1),Zk={key:0},Qk={key:1,class:"warning"},ew={key:0},tw=["onClick"],nw=ue({__name:"partition",setup(e){const t=ve("disk"),n=ve("onMount");return(s,r)=>(C(),N("section",qk,[d("table",null,[Jk,Xk,d("tbody",null,[(C(!0),N(me,null,ct(J(t).childrens,(a,o)=>(C(),N("tr",null,[d("th",null,[d("span",null,X(a.name),1)]),d("th",null,X(a.path),1),d("th",null,[d("span",null,X(a.used||0)+"/"+X(a.total||0),1)]),d("th",null,[a.filesystem=="ext4"?(C(),N("span",Zk,X(a.filesystem),1)):(C(),N("span",Qk,X(a.filesystem),1))]),d("th",null,[d("span",null,X(a.isReadOnly?"\u53EA\u8BFB":"\u8BFB\u5199"),1)]),d("th",null,[a.mountPoint?(C(),N("span",ew,[d("span",null,X(a.mountPoint),1)])):(C(),N("a",{key:1,onClick:i=>J(n)(o)}," \u53BB\u6302\u8F7D ",8,tw))])]))),256))])])]))}});const _o=e=>(nt("data-v-7d47f8ad"),e=e(),st(),e),sw={class:"tab-content"},rw=_o(()=>d("div",{class:"label-name"},[d("span",null,"\u8981\u683C\u5F0F\u5316\u7684\u76EE\u6807")],-1)),aw={class:"label-value2"},ow={class:"disk-item"},iw=_o(()=>d("em",{class:"disk_main"},"\u5168\u76D8",-1)),lw={class:"disk-item"},uw=["value"],cw=_o(()=>d("em",null,"\u5206\u533A",-1)),dw=_o(()=>d("div",{class:"label-name"},[d("span",null,"\u683C\u5F0F\u5316\u4E3A")],-1)),fw={class:"label-value2"},hw={class:"disk-item"},_w={class:"label-btns"},pw=["disabled"],mw=ue({__name:"foramt",setup(e){const t=ve("disk"),n=ve("updateDisk"),s=ve("disabled"),r=le(-1),a=le("ext4"),o=()=>te(this,null,function*(){const u=gt({},t.value),c=r.value;if(c==-1){if(!confirm(`\u8B66\u544A\uFF1A\u8BE5\u64CD\u4F5C\u5C06\u521D\u59CB\u5316 ${u.venderModel} \u786C\u76D8\u5E76\u521B\u5EFA\u4E00\u4E2A\u5206\u533A\uFF0C\u8BF7\u4F60\u8C28\u614E\u64CD\u4F5C`)||!confirm("\u662F\u5426\u786E\u5B9A\u521D\u59CB\u5316?"))return;i(u);return}if(u.childrens){const _=u.childrens[c],p=_.mountPoint||_.path;if(!confirm(`\u8B66\u544A\uFF1A\u683C\u5F0F\u5316\u4F1A\u6E05\u7A7A ${p} \u5206\u533A\u6570\u636E\uFF0C\u8BF7\u4F60\u8C28\u614E\u64CD\u4F5C`)||!confirm(`\u662F\u5426\u786E\u5B9A\u683C\u5F0F\u5316 ${p}?`))return;l(_,c);return}}),i=u=>te(this,null,function*(){if(s.value=!0,u.name==null||u.path==""){fe.Warning("\u83B7\u53D6\u4E0D\u5230\u8BBE\u5907\u540D\u79F0");return}if(u.path==null||u.path==""){fe.Warning("\u83B7\u53D6\u4E0D\u5230\u8BBE\u5907\u8DEF\u5F84");return}s.value=!0;const c=fe.Loading("\u521D\u59CB\u5316\u4E2D...");try{const _=yield oe.Nas.Disk.Init.POST({name:u.name,path:u.path});if(_!=null&&_.data){const{result:p,error:y}=_==null?void 0:_.data;if(y&&fe.Warning(y),p){if(p.errorInfo){fe.Warning(p.errorInfo);return}fe.Success("\u521D\u59CB\u5316\u6210\u529F"),n(p)}}}catch(_){fe.Error(_)}finally{c.Close(),s.value=!1}}),l=(u,c)=>te(this,null,function*(){if(s.value=!0,u.path==null||u.path==""){fe.Warning("\u83B7\u53D6\u4E0D\u5230\u5206\u533A\u8DEF\u5F84");return}s.value=!0;const _=fe.Loading("\u683C\u5F0F\u5316\u4E2D...");try{const p=yield oe.Nas.Disk.Partition.Format.POST({path:u.path,uuid:u.uuid,mountPoint:u.mountPoint});if(p!=null&&p.data){const{result:y,error:E}=p==null?void 0:p.data;if(E&&fe.Warning(E),y){fe.Success("\u683C\u5F0F\u5316\u6210\u529F");const k=gt({},t.value);k.childrens&&(k.childrens[c]=y),n(k)}}}catch(p){fe.Error(p)}finally{_.Close(),s.value=!1}});return(u,c)=>(C(),N("section",sw,[rw,d("div",aw,[d("label",ow,[Xe(d("input",{type:"radio",value:-1,"onUpdate:modelValue":c[0]||(c[0]=_=>r.value=_)},null,512),[[es,r.value]]),iw,Et(X(J(t).path)+"\uFF08"+X(J(t).total)+"\uFF09 ",1)]),(C(!0),N(me,null,ct(J(t).childrens,(_,p)=>{var y;return C(),N("label",lw,[Xe(d("input",{type:"radio",value:p,"onUpdate:modelValue":c[1]||(c[1]=E=>r.value=E)},null,8,uw),[[es,r.value]]),cw,Et(X(_.path)+"\uFF08"+X(_.total)+"\uFF0C"+X((y=_==null?void 0:_.filesystem)==null?void 0:y.toUpperCase())+"\uFF09 ",1)])}),256))]),dw,d("div",fw,[d("label",hw,[Xe(d("input",{type:"radio",value:"ext4","onUpdate:modelValue":c[2]||(c[2]=_=>a.value=_)},null,512),[[es,a.value]]),Et(" EXT4 ")])]),d("div",_w,[d("button",{class:"mount",disabled:J(s),onClick:c[3]||(c[3]=_=>o())},"\u683C\u5F0F\u5316",8,pw)])]))}});var gw=he(mw,[["__scopeId","data-v-7d47f8ad"]]);const vw={class:"tabls"},yw=["disabled"],bw=["disabled"],Ew=["disabled"],kw=["disabled"],ww=ue({__name:"index",props:{disk:{type:Object,required:!0},close:Function},setup(e){const t=e,n=()=>{i.value&&location.reload(),t.close&&t.close()},s=le("main"),r=le(!1),a=le(t.disk),o=le(null),i=le(!1);It("disk",a),It("updateDisk",u=>{a.value=u,i.value=!0}),It("disabled",r),It("onMount",u=>{o.value=u,s.value="mount"});const l=u=>{u=="mount"&&(o.value=null),s.value=u};return(u,c)=>(C(),Fe(El,{onHandleClose:n,title:"Storage Manager",width:"920px"},{default:Ue(()=>[d("ul",vw,[d("button",{class:_t({on:s.value=="main"}),onClick:c[0]||(c[0]=_=>l("main")),disabled:r.value},"\u6458\u8981",10,yw),d("button",{class:_t({on:s.value=="partition"}),onClick:c[1]||(c[1]=_=>l("partition")),disabled:r.value},"\u5206\u533A",10,bw),d("button",{class:_t({on:s.value=="mount"}),onClick:c[2]||(c[2]=_=>l("mount")),disabled:r.value},"\u6302\u8F7D",10,Ew),d("button",{class:_t({on:s.value=="foramt"}),onClick:c[3]||(c[3]=_=>l("foramt")),disabled:r.value},"\u683C\u5F0F\u5316",10,kw)]),s.value=="main"?(C(),Fe(Rk,{key:0})):s.value=="partition"?(C(),Fe(nw,{key:1})):s.value=="mount"?(C(),Fe(Kk,{key:2,mountIndex:o.value},null,8,["mountIndex"])):s.value=="foramt"?(C(),Fe(gw,{key:3})):pe("",!0)]),_:1}))}});var Sw=he(ww,[["__scopeId","data-v-1b963653"]]);class Cw extends bl{OpenDisk(t){this.openWindow(Sw,t)}}const T1=new Cw;T1.OpenDisk;document.title=E1.HostName;const cr=Wi(l6);cr.use(k7());S7();cr.use(vv).use(By);cr.use(R9);cr.use(i6);cr.use(CE).use(sk).use(T1);cr.mount("#app");export{Ts as $,nn as A,ls as B,oe as C,Od as D,ct as E,me as F,S3 as G,T1 as H,o1 as I,ek as J,Nw as K,Pw as L,D9 as M,ja as N,sk as O,oc as P,CE as Q,It as R,sd as S,fe as T,_t as U,El as V,bl as W,is as X,Ms as Y,Yt as Z,he as _,d as a,Ow as a0,Iw as a1,Hi as a2,Aw as a3,i6 as a4,rr as a5,Wi as a6,Lw as a7,Mw as a8,Ii as a9,j as aa,Fw as ab,w3 as ac,Zn as ad,Ie as b,N as c,ue as d,Fe as e,$i as f,J as g,it as h,be as i,wt as j,dd as k,X as l,pe as m,E1 as n,C as o,nt as p,st as q,ht as r,le as s,wv as t,ur as u,Dw as v,Ue as w,Xe as x,es as y,Et as z}; ================================================ FILE: luci-app-istorex/htdocs/luci-static/istorex/style.css ================================================ @keyframes turns-5bcbebe8{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-5bcbebe8]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-5bcbebe8]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-5bcbebe8]{color:#f9ad1e}.notice_info li[data-v-5bcbebe8]{font-size:14px;list-style:revert}.text-container[data-v-5bcbebe8]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-5bcbebe8]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-5bcbebe8]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-5bcbebe8]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-5bcbebe8]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-5bcbebe8]{width:100%}.text-container .text-container_item p.info-desc[data-v-5bcbebe8]{width:100%;color:#999;font-size:14px}.page-container[data-v-5bcbebe8]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-5bcbebe8]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-5bcbebe8]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-5bcbebe8]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-5bcbebe8],.page-container .page-flex .page-sidebar a[data-v-5bcbebe8]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-5bcbebe8]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-5bcbebe8]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-5bcbebe8]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-5bcbebe8]{border-radius:0;padding:1rem}ul.ul-container[data-v-5bcbebe8]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-5bcbebe8]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-5bcbebe8]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-5bcbebe8]{width:100%}form.form-container[data-v-5bcbebe8]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-5bcbebe8]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-5bcbebe8]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-5bcbebe8]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-5bcbebe8]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-5bcbebe8],form.form-container .label-value select[data-v-5bcbebe8]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-5bcbebe8]:focus,form.form-container .label-value select[data-v-5bcbebe8]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-5bcbebe8]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-5bcbebe8]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-5bcbebe8],form.form-container .label-value input[type=radio][data-v-5bcbebe8]{width:auto}form.form-container .label-value input[type=radio][data-v-5bcbebe8]{margin:0 4px 0 0}form.form-container .label-value input[data-v-5bcbebe8]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-5bcbebe8]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-5bcbebe8]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-5bcbebe8]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-5bcbebe8]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-5bcbebe8]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-5bcbebe8]:hover{background-color:#747474}form.form-container .label-msg[data-v-5bcbebe8]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-5bcbebe8]{color:#f9ad1e}form.form-container .label-flex[data-v-5bcbebe8]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-5bcbebe8]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-5bcbebe8]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-5bcbebe8]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-5bcbebe8]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-5bcbebe8]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-5bcbebe8]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-5bcbebe8],form.form-container1 .label-value select[data-v-5bcbebe8]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-5bcbebe8]:focus,form.form-container1 .label-value select[data-v-5bcbebe8]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-5bcbebe8]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-5bcbebe8],form.form-container1 .label-value input[type=radio][data-v-5bcbebe8]{width:auto}form.form-container1 .label-value input[type=radio][data-v-5bcbebe8]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-5bcbebe8]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-5bcbebe8]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-5bcbebe8]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-5bcbebe8]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-5bcbebe8]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-5bcbebe8]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-5bcbebe8]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-5bcbebe8]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-5bcbebe8]{color:#f9ad1e}form.form-container1 .label-flex[data-v-5bcbebe8]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-5bcbebe8]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-5bcbebe8]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-5bcbebe8]{width:100px}table.page-table th.checkbox[data-v-5bcbebe8]{width:50px;text-align:center}table.page-table th.setting[data-v-5bcbebe8]{width:100px;text-align:center}table.page-table thead[data-v-5bcbebe8]{color:#909399}table.page-table thead tr[data-v-5bcbebe8]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-5bcbebe8]{padding:10px 16px}table.page-table tbody tr[data-v-5bcbebe8]:hover{background-color:#eeee}table.page-table tbody tr[data-v-5bcbebe8]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-5bcbebe8]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-5bcbebe8]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-5bcbebe8]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-5bcbebe8]{width:100px}table.popups-table th.checkbox[data-v-5bcbebe8]{width:50px;text-align:center}table.popups-table th.setting[data-v-5bcbebe8]{width:100px;text-align:center}table.popups-table thead[data-v-5bcbebe8]{color:#eee}table.popups-table thead tr[data-v-5bcbebe8]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-5bcbebe8]{padding:10px 16px}table.popups-table tbody tr[data-v-5bcbebe8]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-5bcbebe8]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-5bcbebe8]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-5bcbebe8]{width:100%}header.header-desktop[data-v-5bcbebe8]{display:block}header.header-mobile[data-v-5bcbebe8]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-5bcbebe8]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-5bcbebe8]{width:100%;height:100%}header.header-mobile button svg path[data-v-5bcbebe8]{fill:#fff}nav.sidebar[data-v-5bcbebe8]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-5bcbebe8]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-5bcbebe8]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-5bcbebe8]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-5bcbebe8]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-5bcbebe8]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-5bcbebe8]{color:#fff}nav.sidebar .container .children[data-v-5bcbebe8]{padding-left:30px}@-moz-keyframes tada-5bcbebe8{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-5bcbebe8{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-5bcbebe8{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-5bcbebe8{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-5bcbebe8]{animation:dialogEnter-5bcbebe8 .3s linear forwards}.dialog-leave-active[data-v-5bcbebe8]{animation:dialogLeave-5bcbebe8 .3s linear forwards}@keyframes dialogEnter-5bcbebe8{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-5bcbebe8{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-5bcbebe8]{animation:dialogEnter-5bcbebe8 .2s linear forwards}.dialog1-leave-active[data-v-5bcbebe8]{animation:dialogLeave-5bcbebe8 .2s linear forwards}@keyframes rotateEnter-5bcbebe8{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-5bcbebe8]{animation:rotateEnter-5bcbebe8 .7s;position:relative}.rotate-leave-active[data-v-5bcbebe8]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-5bcbebe8{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-5bcbebe8{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-5bcbebe8]{animation:slideOutTop-5bcbebe8 .5s linear forwards}.slide-top-leave-active[data-v-5bcbebe8],.slide-bottom-enter-active[data-v-5bcbebe8]{animation:slideOutBottom-5bcbebe8 .5s linear forwards}@keyframes slideInLeft-5bcbebe8{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-5bcbebe8{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-5bcbebe8]{animation:slideInLeft-5bcbebe8 .3s linear forwards}.slide-left-leave-active[data-v-5bcbebe8]{animation:slideInRight-5bcbebe8 .3s linear forwards}@keyframes slideOutLeft-5bcbebe8{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-5bcbebe8{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-5bcbebe8]{animation:slideOutLeft-5bcbebe8 .3s linear forwards}.slide-right-leave-active[data-v-5bcbebe8]{animation:slideOutRight-5bcbebe8 .3s linear forwards}@keyframes bganimation-5bcbebe8{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-5bcbebe8{0%{height:0}to{height:100px}}@keyframes fadeEnd-5bcbebe8{0%{height:100%}to{height:0}}.fade-enter-active[data-v-5bcbebe8]{animation:fadeStart-5bcbebe8 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-5bcbebe8]{animation:fadeEnd-5bcbebe8 .1s linear forwards;overflow:hidden}.bg[data-v-5bcbebe8]{position:fixed;inset:0;z-index:98;width:100%;height:100%}.themedog-popups[data-v-5bcbebe8]{border-radius:10px;box-shadow:0 2px 20px 3px #00000080;border-top:1px solid #6d6d6d;width:860px;height:620px;max-width:100%;overflow:hidden;color:#fff;position:absolute;left:calc(50% - 430px);top:calc(50% - 310px);z-index:99}.themedog-popups .themedog-popups_header[data-v-5bcbebe8]{width:100%;height:36px;padding:0 8px;background-color:#373838;cursor:pointer;display:flex;flex-wrap:wrap;align-items:center;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;-khtml-user-select:none;user-select:none}.themedog-popups .themedog-popups_header .auto[data-v-5bcbebe8]{flex:auto}.themedog-popups .themedog-popups_header span.title[data-v-5bcbebe8]{font-size:14px;color:#eee;margin-left:8px;overflow:hidden;text-overflow:ellipsis}.themedog-popups .themedog-popups_header .btns button[data-v-5bcbebe8]{background:none;border:none;padding:0;cursor:pointer;margin:0 0 0 10px;width:30px;height:30px}.themedog-popups .themedog-popups_header .btns button:hover svg.icon path[data-v-5bcbebe8]{fill:#eee}.themedog-popups .themedog-popups_header .btns button svg.icon[data-v-5bcbebe8]{width:18px;height:18px}.themedog-popups .themedog-popups_header .btns button svg.icon path[data-v-5bcbebe8]{fill:#9b9b9b}.themedog-popups .themedog-popups_body[data-v-5bcbebe8]{width:100%;height:calc(100% - 36px);overflow:overlay;background-color:#242424}.themedog-popups .themedog-popups_body.transparent[data-v-5bcbebe8]{background-color:transparent}.themedog-popups.full[data-v-5bcbebe8]{width:100%;height:100%;border-radius:0;position:fixed;inset:0;box-shadow:none;border:none}.themedog-popups.index[data-v-5bcbebe8]{z-index:100}@keyframes turns-e3f9f146{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-e3f9f146]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-e3f9f146]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-e3f9f146]{color:#f9ad1e}.notice_info li[data-v-e3f9f146]{font-size:14px;list-style:revert}.text-container[data-v-e3f9f146]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-e3f9f146]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-e3f9f146]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-e3f9f146]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-e3f9f146]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-e3f9f146]{width:100%}.text-container .text-container_item p.info-desc[data-v-e3f9f146]{width:100%;color:#999;font-size:14px}.page-container[data-v-e3f9f146]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-e3f9f146]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-e3f9f146]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-e3f9f146]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-e3f9f146],.page-container .page-flex .page-sidebar a[data-v-e3f9f146]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-e3f9f146]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-e3f9f146]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-e3f9f146]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-e3f9f146]{border-radius:0;padding:1rem}ul.ul-container[data-v-e3f9f146]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-e3f9f146]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-e3f9f146]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-e3f9f146]{width:100%}form.form-container[data-v-e3f9f146]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-e3f9f146]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-e3f9f146]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-e3f9f146]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-e3f9f146]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-e3f9f146],form.form-container .label-value select[data-v-e3f9f146]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-e3f9f146]:focus,form.form-container .label-value select[data-v-e3f9f146]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-e3f9f146]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-e3f9f146]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-e3f9f146],form.form-container .label-value input[type=radio][data-v-e3f9f146]{width:auto}form.form-container .label-value input[type=radio][data-v-e3f9f146]{margin:0 4px 0 0}form.form-container .label-value input[data-v-e3f9f146]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-e3f9f146]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-e3f9f146]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-e3f9f146]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-e3f9f146]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-e3f9f146]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-e3f9f146]:hover{background-color:#747474}form.form-container .label-msg[data-v-e3f9f146]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-e3f9f146]{color:#f9ad1e}form.form-container .label-flex[data-v-e3f9f146]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-e3f9f146]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-e3f9f146]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-e3f9f146]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-e3f9f146]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-e3f9f146]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-e3f9f146]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-e3f9f146],form.form-container1 .label-value select[data-v-e3f9f146]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-e3f9f146]:focus,form.form-container1 .label-value select[data-v-e3f9f146]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-e3f9f146]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-e3f9f146],form.form-container1 .label-value input[type=radio][data-v-e3f9f146]{width:auto}form.form-container1 .label-value input[type=radio][data-v-e3f9f146]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-e3f9f146]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-e3f9f146]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-e3f9f146]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-e3f9f146]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-e3f9f146]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-e3f9f146]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-e3f9f146]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-e3f9f146]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-e3f9f146]{color:#f9ad1e}form.form-container1 .label-flex[data-v-e3f9f146]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-e3f9f146]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-e3f9f146]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-e3f9f146]{width:100px}table.page-table th.checkbox[data-v-e3f9f146]{width:50px;text-align:center}table.page-table th.setting[data-v-e3f9f146]{width:100px;text-align:center}table.page-table thead[data-v-e3f9f146]{color:#909399}table.page-table thead tr[data-v-e3f9f146]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-e3f9f146]{padding:10px 16px}table.page-table tbody tr[data-v-e3f9f146]:hover{background-color:#eeee}table.page-table tbody tr[data-v-e3f9f146]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-e3f9f146]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-e3f9f146]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-e3f9f146]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-e3f9f146]{width:100px}table.popups-table th.checkbox[data-v-e3f9f146]{width:50px;text-align:center}table.popups-table th.setting[data-v-e3f9f146]{width:100px;text-align:center}table.popups-table thead[data-v-e3f9f146]{color:#eee}table.popups-table thead tr[data-v-e3f9f146]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-e3f9f146]{padding:10px 16px}table.popups-table tbody tr[data-v-e3f9f146]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-e3f9f146]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-e3f9f146]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-e3f9f146]{width:100%}header.header-desktop[data-v-e3f9f146]{display:block}header.header-mobile[data-v-e3f9f146]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-e3f9f146]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-e3f9f146]{width:100%;height:100%}header.header-mobile button svg path[data-v-e3f9f146]{fill:#fff}nav.sidebar[data-v-e3f9f146]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-e3f9f146]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-e3f9f146]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-e3f9f146]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-e3f9f146]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-e3f9f146]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-e3f9f146]{color:#fff}nav.sidebar .container .children[data-v-e3f9f146]{padding-left:30px}@-moz-keyframes tada-e3f9f146{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-e3f9f146{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-e3f9f146{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-e3f9f146{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-e3f9f146]{animation:dialogEnter-e3f9f146 .3s linear forwards}.dialog-leave-active[data-v-e3f9f146]{animation:dialogLeave-e3f9f146 .3s linear forwards}@keyframes dialogEnter-e3f9f146{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-e3f9f146{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-e3f9f146]{animation:dialogEnter-e3f9f146 .2s linear forwards}.dialog1-leave-active[data-v-e3f9f146]{animation:dialogLeave-e3f9f146 .2s linear forwards}@keyframes rotateEnter-e3f9f146{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-e3f9f146]{animation:rotateEnter-e3f9f146 .7s;position:relative}.rotate-leave-active[data-v-e3f9f146]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-e3f9f146{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-e3f9f146{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-e3f9f146]{animation:slideOutTop-e3f9f146 .5s linear forwards}.slide-top-leave-active[data-v-e3f9f146],.slide-bottom-enter-active[data-v-e3f9f146]{animation:slideOutBottom-e3f9f146 .5s linear forwards}@keyframes slideInLeft-e3f9f146{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-e3f9f146{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-e3f9f146]{animation:slideInLeft-e3f9f146 .3s linear forwards}.slide-left-leave-active[data-v-e3f9f146]{animation:slideInRight-e3f9f146 .3s linear forwards}@keyframes slideOutLeft-e3f9f146{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-e3f9f146{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-e3f9f146]{animation:slideOutLeft-e3f9f146 .3s linear forwards}.slide-right-leave-active[data-v-e3f9f146]{animation:slideOutRight-e3f9f146 .3s linear forwards}@keyframes bganimation-e3f9f146{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-e3f9f146{0%{height:0}to{height:100px}}@keyframes fadeEnd-e3f9f146{0%{height:100%}to{height:0}}.fade-enter-active[data-v-e3f9f146]{animation:fadeStart-e3f9f146 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-e3f9f146]{animation:fadeEnd-e3f9f146 .1s linear forwards;overflow:hidden}.popups-container[data-v-e3f9f146]{width:100%;height:100%;display:flex;flex-wrap:wrap}.popups-container .popups-container_f[data-v-e3f9f146]{flex:0 0 100%;max-width:200px;height:100%;overflow:overlay;border-right:1px solid #4a4a4a;padding:1rem;background-color:#1b1b1be8;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}.popups-container .popups-container_f[data-v-e3f9f146] .network-menu_item{width:100%;height:32px;line-height:32px;font-size:14px;cursor:pointer;color:#eee;padding:0 10px;margin-bottom:.5rem;display:block;user-select:none}.popups-container .popups-container_f[data-v-e3f9f146] .network-menu_item.on,.popups-container .popups-container_f[data-v-e3f9f146] .network-menu_item:hover{transition:.3s;color:#fff;background-color:#fffefe36;border-radius:6px}.popups-container .popups-container_r[data-v-e3f9f146]{flex:0 0 100%;max-width:calc(100% - 200px);height:100%;overflow:overlay;background-color:#1b1b1be8;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}.popups-container[data-v-e3f9f146] main{display:block;width:100%;padding:1rem}.popups-container[data-v-e3f9f146] main .item-label{display:flex;flex-wrap:wrap;align-items:flex-start;align-content:flex-start;width:100%;margin:1rem 0}.popups-container[data-v-e3f9f146] main .item-label .item-label_key{flex:0 0 100%;max-width:100px;text-align:left}.popups-container[data-v-e3f9f146] main .item-label .item-label_key span{font-size:14px;color:#eee}.popups-container[data-v-e3f9f146] main .item-label .item-label_value{flex:1;text-align:left}.popups-container[data-v-e3f9f146] main .item-label .item-label_value span{font-size:14px;color:#eee}.popups-container[data-v-e3f9f146] form{display:block;width:100%;padding:1rem}.popups-container[data-v-e3f9f146] form .label-name{display:block;width:100%;margin-bottom:.5rem}.popups-container[data-v-e3f9f146] form .label-name span:before{content:"*";color:#f56c6c;margin-right:4px}.popups-container[data-v-e3f9f146] form .label-value{display:block;width:100%;margin-bottom:1rem}.popups-container[data-v-e3f9f146] form .label-value input,.popups-container[data-v-e3f9f146] form .label-value select{display:block;width:100%;height:36px;background:none;border:1px solid #747474;color:#eee;font-size:14px;padding:0 10px}.popups-container[data-v-e3f9f146] form .label-value input:placeholder{color:#eee}.popups-container[data-v-e3f9f146] form .label-value select{border-radius:3px;padding:0 10px}.popups-container[data-v-e3f9f146] form .label-value input{border-left:none;border-right:none;border-top:none}.popups-container[data-v-e3f9f146] form .label-value input[type=checkbox],.popups-container[data-v-e3f9f146] form .label-value input[type=radio]{width:auto}.popups-container[data-v-e3f9f146] form .label-btns{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}.popups-container[data-v-e3f9f146] form .label-btns button.sumbit{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}.popups-container[data-v-e3f9f146] form .label-btns button.sumbit:hover{background-color:#747474}.popups-container[data-v-e3f9f146] form .label-msg{display:block;width:100%;color:#ff3b3b;font-size:14px;margin-bottom:1rem}.popups-container[data-v-e3f9f146] form .label-flex{width:100%;display:flex;flex-wrap:wrap}.popups-container[data-v-e3f9f146] form .label-flex label{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer}.popups-container.setup1[data-v-e3f9f146]{overflow:overlay;padding:1rem;background-color:#1e1e1e}.popups-container.setup2[data-v-e3f9f146]{overflow:overlay;background-color:#1e1e1e}@keyframes turns-1fde8680{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-1fde8680]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-1fde8680]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-1fde8680]{color:#f9ad1e}.notice_info li[data-v-1fde8680]{font-size:14px;list-style:revert}.text-container[data-v-1fde8680]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-1fde8680]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-1fde8680]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-1fde8680]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-1fde8680]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-1fde8680]{width:100%}.text-container .text-container_item p.info-desc[data-v-1fde8680]{width:100%;color:#999;font-size:14px}.page-container[data-v-1fde8680]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-1fde8680]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-1fde8680]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-1fde8680]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-1fde8680],.page-container .page-flex .page-sidebar a[data-v-1fde8680]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-1fde8680]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-1fde8680]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-1fde8680]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-1fde8680]{border-radius:0;padding:1rem}ul.ul-container[data-v-1fde8680]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-1fde8680]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-1fde8680]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-1fde8680]{width:100%}form.form-container[data-v-1fde8680]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-1fde8680]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-1fde8680]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-1fde8680]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-1fde8680]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-1fde8680],form.form-container .label-value select[data-v-1fde8680]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-1fde8680]:focus,form.form-container .label-value select[data-v-1fde8680]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-1fde8680]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-1fde8680]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-1fde8680],form.form-container .label-value input[type=radio][data-v-1fde8680]{width:auto}form.form-container .label-value input[type=radio][data-v-1fde8680]{margin:0 4px 0 0}form.form-container .label-value input[data-v-1fde8680]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-1fde8680]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-1fde8680]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-1fde8680]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-1fde8680]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-1fde8680]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-1fde8680]:hover{background-color:#747474}form.form-container .label-msg[data-v-1fde8680]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-1fde8680]{color:#f9ad1e}form.form-container .label-flex[data-v-1fde8680]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-1fde8680]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-1fde8680]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-1fde8680]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-1fde8680]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-1fde8680]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-1fde8680]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-1fde8680],form.form-container1 .label-value select[data-v-1fde8680]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-1fde8680]:focus,form.form-container1 .label-value select[data-v-1fde8680]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-1fde8680]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-1fde8680],form.form-container1 .label-value input[type=radio][data-v-1fde8680]{width:auto}form.form-container1 .label-value input[type=radio][data-v-1fde8680]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-1fde8680]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-1fde8680]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-1fde8680]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-1fde8680]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-1fde8680]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-1fde8680]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-1fde8680]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-1fde8680]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-1fde8680]{color:#f9ad1e}form.form-container1 .label-flex[data-v-1fde8680]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-1fde8680]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-1fde8680]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-1fde8680]{width:100px}table.page-table th.checkbox[data-v-1fde8680]{width:50px;text-align:center}table.page-table th.setting[data-v-1fde8680]{width:100px;text-align:center}table.page-table thead[data-v-1fde8680]{color:#909399}table.page-table thead tr[data-v-1fde8680]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-1fde8680]{padding:10px 16px}table.page-table tbody tr[data-v-1fde8680]:hover{background-color:#eeee}table.page-table tbody tr[data-v-1fde8680]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-1fde8680]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-1fde8680]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-1fde8680]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-1fde8680]{width:100px}table.popups-table th.checkbox[data-v-1fde8680]{width:50px;text-align:center}table.popups-table th.setting[data-v-1fde8680]{width:100px;text-align:center}table.popups-table thead[data-v-1fde8680]{color:#eee}table.popups-table thead tr[data-v-1fde8680]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-1fde8680]{padding:10px 16px}table.popups-table tbody tr[data-v-1fde8680]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-1fde8680]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-1fde8680]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-1fde8680]{width:100%}header.header-desktop[data-v-1fde8680]{display:block}header.header-mobile[data-v-1fde8680]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-1fde8680]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-1fde8680]{width:100%;height:100%}header.header-mobile button svg path[data-v-1fde8680]{fill:#fff}nav.sidebar[data-v-1fde8680]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-1fde8680]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-1fde8680]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-1fde8680]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-1fde8680]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-1fde8680]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-1fde8680]{color:#fff}nav.sidebar .container .children[data-v-1fde8680]{padding-left:30px}@-moz-keyframes tada-1fde8680{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-1fde8680{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-1fde8680{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-1fde8680{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-1fde8680]{animation:dialogEnter-1fde8680 .3s linear forwards}.dialog-leave-active[data-v-1fde8680]{animation:dialogLeave-1fde8680 .3s linear forwards}@keyframes dialogEnter-1fde8680{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-1fde8680{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-1fde8680]{animation:dialogEnter-1fde8680 .2s linear forwards}.dialog1-leave-active[data-v-1fde8680]{animation:dialogLeave-1fde8680 .2s linear forwards}@keyframes rotateEnter-1fde8680{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-1fde8680]{animation:rotateEnter-1fde8680 .7s;position:relative}.rotate-leave-active[data-v-1fde8680]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-1fde8680{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-1fde8680{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-1fde8680]{animation:slideOutTop-1fde8680 .5s linear forwards}.slide-top-leave-active[data-v-1fde8680],.slide-bottom-enter-active[data-v-1fde8680]{animation:slideOutBottom-1fde8680 .5s linear forwards}@keyframes slideInLeft-1fde8680{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-1fde8680{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-1fde8680]{animation:slideInLeft-1fde8680 .3s linear forwards}.slide-left-leave-active[data-v-1fde8680]{animation:slideInRight-1fde8680 .3s linear forwards}@keyframes slideOutLeft-1fde8680{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-1fde8680{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-1fde8680]{animation:slideOutLeft-1fde8680 .3s linear forwards}.slide-right-leave-active[data-v-1fde8680]{animation:slideOutRight-1fde8680 .3s linear forwards}@keyframes bganimation-1fde8680{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-1fde8680{0%{height:0}to{height:100px}}@keyframes fadeEnd-1fde8680{0%{height:100%}to{height:0}}.fade-enter-active[data-v-1fde8680]{animation:fadeStart-1fde8680 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-1fde8680]{animation:fadeEnd-1fde8680 .1s linear forwards;overflow:hidden}#action[data-v-1fde8680]{position:fixed;z-index:1000;width:100%;height:100%;inset:0;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;overflow:auto}#action .bg[data-v-1fde8680]{position:fixed;inset:0;width:100%;height:100%;background:rgba(0,0,0,.5);z-index:9}#action[data-v-1fde8680] .action-container{width:720px;background-color:#fff;position:fixed;z-index:10;left:0;right:0;margin:auto;overflow:auto;border-radius:3px}#action[data-v-1fde8680] .action-container .action-container_header{width:100%;height:50px;line-height:50px;cursor:pointer;display:flex;flex-wrap:wrap;align-items:center;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;-khtml-user-select:none;user-select:none;padding:0 25px;border-bottom:1px solid #eee}#action[data-v-1fde8680] .action-container .action-container_header span.title{margin:0;color:#333;font:inherit;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;-moz-user-select:none;-webkit-user-select:none;user-select:none;font-size:20px}#action[data-v-1fde8680] .action-container .action-container_body{width:100%;min-height:400px;overflow:overlay;padding:0 25px}#action[data-v-1fde8680] .action-container .action-container_footer{width:100%;height:50px;line-height:50px;color:#333;display:flex;flex-wrap:wrap;align-items:center;padding:0 25px;border-top:1px solid #eee}#action[data-v-1fde8680] .action-container .action-container_footer .auto{flex:auto}#action[data-v-1fde8680] .action-container .action-container_footer button{margin-left:16px;height:30px;border-radius:4px;background:#0060ff;display:inline-flex;padding:4px 24px;justify-content:center;align-items:center;gap:10px;text-align:center;font-weight:500}#action[data-v-1fde8680] .action-container .action-container_footer button:hover{opacity:.9}#action[data-v-1fde8680] .action-container .action-container_footer .app-close{background-color:#fff}#action[data-v-1fde8680] .action-container .action-container_footer .app-next{background-color:#0060ff;color:#fff}@keyframes turns-177d395f{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-177d395f]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-177d395f]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-177d395f]{color:#f9ad1e}.notice_info li[data-v-177d395f]{font-size:14px;list-style:revert}.text-container[data-v-177d395f]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-177d395f]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-177d395f]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-177d395f]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-177d395f]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-177d395f]{width:100%}.text-container .text-container_item p.info-desc[data-v-177d395f]{width:100%;color:#999;font-size:14px}.page-container[data-v-177d395f]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-177d395f]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-177d395f]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-177d395f]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-177d395f],.page-container .page-flex .page-sidebar a[data-v-177d395f]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-177d395f]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-177d395f]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-177d395f]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-177d395f]{border-radius:0;padding:1rem}ul.ul-container[data-v-177d395f]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-177d395f]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-177d395f]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-177d395f]{width:100%}form.form-container[data-v-177d395f]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-177d395f]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-177d395f]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-177d395f]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-177d395f]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-177d395f],form.form-container .label-value select[data-v-177d395f]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-177d395f]:focus,form.form-container .label-value select[data-v-177d395f]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-177d395f]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-177d395f]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-177d395f],form.form-container .label-value input[type=radio][data-v-177d395f]{width:auto}form.form-container .label-value input[type=radio][data-v-177d395f]{margin:0 4px 0 0}form.form-container .label-value input[data-v-177d395f]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-177d395f]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-177d395f]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-177d395f]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-177d395f]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-177d395f]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-177d395f]:hover{background-color:#747474}form.form-container .label-msg[data-v-177d395f]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-177d395f]{color:#f9ad1e}form.form-container .label-flex[data-v-177d395f]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-177d395f]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-177d395f]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-177d395f]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-177d395f]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-177d395f]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-177d395f]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-177d395f],form.form-container1 .label-value select[data-v-177d395f]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-177d395f]:focus,form.form-container1 .label-value select[data-v-177d395f]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-177d395f]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-177d395f],form.form-container1 .label-value input[type=radio][data-v-177d395f]{width:auto}form.form-container1 .label-value input[type=radio][data-v-177d395f]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-177d395f]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-177d395f]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-177d395f]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-177d395f]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-177d395f]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-177d395f]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-177d395f]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-177d395f]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-177d395f]{color:#f9ad1e}form.form-container1 .label-flex[data-v-177d395f]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-177d395f]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-177d395f]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-177d395f]{width:100px}table.page-table th.checkbox[data-v-177d395f]{width:50px;text-align:center}table.page-table th.setting[data-v-177d395f]{width:100px;text-align:center}table.page-table thead[data-v-177d395f]{color:#909399}table.page-table thead tr[data-v-177d395f]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-177d395f]{padding:10px 16px}table.page-table tbody tr[data-v-177d395f]:hover{background-color:#eeee}table.page-table tbody tr[data-v-177d395f]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-177d395f]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-177d395f]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-177d395f]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-177d395f]{width:100px}table.popups-table th.checkbox[data-v-177d395f]{width:50px;text-align:center}table.popups-table th.setting[data-v-177d395f]{width:100px;text-align:center}table.popups-table thead[data-v-177d395f]{color:#eee}table.popups-table thead tr[data-v-177d395f]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-177d395f]{padding:10px 16px}table.popups-table tbody tr[data-v-177d395f]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-177d395f]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-177d395f]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-177d395f]{width:100%}header.header-desktop[data-v-177d395f]{display:block}header.header-mobile[data-v-177d395f]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-177d395f]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-177d395f]{width:100%;height:100%}header.header-mobile button svg path[data-v-177d395f]{fill:#fff}nav.sidebar[data-v-177d395f]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-177d395f]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-177d395f]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-177d395f]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-177d395f]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-177d395f]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-177d395f]{color:#fff}nav.sidebar .container .children[data-v-177d395f]{padding-left:30px}@-moz-keyframes tada-177d395f{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-177d395f{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-177d395f{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-177d395f{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-177d395f]{animation:dialogEnter-177d395f .3s linear forwards}.dialog-leave-active[data-v-177d395f]{animation:dialogLeave-177d395f .3s linear forwards}@keyframes dialogEnter-177d395f{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-177d395f{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-177d395f]{animation:dialogEnter-177d395f .2s linear forwards}.dialog1-leave-active[data-v-177d395f]{animation:dialogLeave-177d395f .2s linear forwards}@keyframes rotateEnter-177d395f{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-177d395f]{animation:rotateEnter-177d395f .7s;position:relative}.rotate-leave-active[data-v-177d395f]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-177d395f{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-177d395f{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-177d395f]{animation:slideOutTop-177d395f .5s linear forwards}.slide-top-leave-active[data-v-177d395f],.slide-bottom-enter-active[data-v-177d395f]{animation:slideOutBottom-177d395f .5s linear forwards}@keyframes slideInLeft-177d395f{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-177d395f{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-177d395f]{animation:slideInLeft-177d395f .3s linear forwards}.slide-left-leave-active[data-v-177d395f]{animation:slideInRight-177d395f .3s linear forwards}@keyframes slideOutLeft-177d395f{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-177d395f{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-177d395f]{animation:slideOutLeft-177d395f .3s linear forwards}.slide-right-leave-active[data-v-177d395f]{animation:slideOutRight-177d395f .3s linear forwards}@keyframes bganimation-177d395f{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-177d395f{0%{height:0}to{height:100px}}@keyframes fadeEnd-177d395f{0%{height:100%}to{height:0}}.fade-enter-active[data-v-177d395f]{animation:fadeStart-177d395f .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-177d395f]{animation:fadeEnd-177d395f .1s linear forwards;overflow:hidden}iframe[data-v-177d395f]{width:100%;height:100%;border:none;resize:vertical;background:#2b2b2b}@keyframes turns-c694747c{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-c694747c]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-c694747c]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-c694747c]{color:#f9ad1e}.notice_info li[data-v-c694747c]{font-size:14px;list-style:revert}.text-container[data-v-c694747c]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-c694747c]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-c694747c]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-c694747c]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-c694747c]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-c694747c]{width:100%}.text-container .text-container_item p.info-desc[data-v-c694747c]{width:100%;color:#999;font-size:14px}.page-container[data-v-c694747c]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-c694747c]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-c694747c]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-c694747c]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-c694747c],.page-container .page-flex .page-sidebar a[data-v-c694747c]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-c694747c]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-c694747c]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-c694747c]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-c694747c]{border-radius:0;padding:1rem}ul.ul-container[data-v-c694747c]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-c694747c]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-c694747c]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-c694747c]{width:100%}form.form-container[data-v-c694747c]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-c694747c]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-c694747c]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-c694747c]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-c694747c]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-c694747c],form.form-container .label-value select[data-v-c694747c]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-c694747c]:focus,form.form-container .label-value select[data-v-c694747c]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-c694747c]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-c694747c]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-c694747c],form.form-container .label-value input[type=radio][data-v-c694747c]{width:auto}form.form-container .label-value input[type=radio][data-v-c694747c]{margin:0 4px 0 0}form.form-container .label-value input[data-v-c694747c]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-c694747c]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-c694747c]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-c694747c]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-c694747c]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-c694747c]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-c694747c]:hover{background-color:#747474}form.form-container .label-msg[data-v-c694747c]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-c694747c]{color:#f9ad1e}form.form-container .label-flex[data-v-c694747c]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-c694747c]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-c694747c]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-c694747c]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-c694747c]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-c694747c]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-c694747c]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-c694747c],form.form-container1 .label-value select[data-v-c694747c]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-c694747c]:focus,form.form-container1 .label-value select[data-v-c694747c]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-c694747c]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-c694747c],form.form-container1 .label-value input[type=radio][data-v-c694747c]{width:auto}form.form-container1 .label-value input[type=radio][data-v-c694747c]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-c694747c]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-c694747c]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-c694747c]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-c694747c]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-c694747c]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-c694747c]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-c694747c]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-c694747c]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-c694747c]{color:#f9ad1e}form.form-container1 .label-flex[data-v-c694747c]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-c694747c]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-c694747c]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-c694747c]{width:100px}table.page-table th.checkbox[data-v-c694747c]{width:50px;text-align:center}table.page-table th.setting[data-v-c694747c]{width:100px;text-align:center}table.page-table thead[data-v-c694747c]{color:#909399}table.page-table thead tr[data-v-c694747c]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-c694747c]{padding:10px 16px}table.page-table tbody tr[data-v-c694747c]:hover{background-color:#eeee}table.page-table tbody tr[data-v-c694747c]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-c694747c]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-c694747c]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-c694747c]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-c694747c]{width:100px}table.popups-table th.checkbox[data-v-c694747c]{width:50px;text-align:center}table.popups-table th.setting[data-v-c694747c]{width:100px;text-align:center}table.popups-table thead[data-v-c694747c]{color:#eee}table.popups-table thead tr[data-v-c694747c]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-c694747c]{padding:10px 16px}table.popups-table tbody tr[data-v-c694747c]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-c694747c]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-c694747c]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-c694747c]{width:100%}header.header-desktop[data-v-c694747c]{display:block}header.header-mobile[data-v-c694747c]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-c694747c]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-c694747c]{width:100%;height:100%}header.header-mobile button svg path[data-v-c694747c]{fill:#fff}nav.sidebar[data-v-c694747c]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-c694747c]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-c694747c]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-c694747c]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-c694747c]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-c694747c]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-c694747c]{color:#fff}nav.sidebar .container .children[data-v-c694747c]{padding-left:30px}@-moz-keyframes tada-c694747c{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-c694747c{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-c694747c{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-c694747c{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-c694747c]{animation:dialogEnter-c694747c .3s linear forwards}.dialog-leave-active[data-v-c694747c]{animation:dialogLeave-c694747c .3s linear forwards}@keyframes dialogEnter-c694747c{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-c694747c{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-c694747c]{animation:dialogEnter-c694747c .2s linear forwards}.dialog1-leave-active[data-v-c694747c]{animation:dialogLeave-c694747c .2s linear forwards}@keyframes rotateEnter-c694747c{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-c694747c]{animation:rotateEnter-c694747c .7s;position:relative}.rotate-leave-active[data-v-c694747c]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-c694747c{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-c694747c{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-c694747c]{animation:slideOutTop-c694747c .5s linear forwards}.slide-top-leave-active[data-v-c694747c],.slide-bottom-enter-active[data-v-c694747c]{animation:slideOutBottom-c694747c .5s linear forwards}@keyframes slideInLeft-c694747c{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-c694747c{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-c694747c]{animation:slideInLeft-c694747c .3s linear forwards}.slide-left-leave-active[data-v-c694747c]{animation:slideInRight-c694747c .3s linear forwards}@keyframes slideOutLeft-c694747c{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-c694747c{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-c694747c]{animation:slideOutLeft-c694747c .3s linear forwards}.slide-right-leave-active[data-v-c694747c]{animation:slideOutRight-c694747c .3s linear forwards}@keyframes bganimation-c694747c{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-c694747c{0%{height:0}to{height:100px}}@keyframes fadeEnd-c694747c{0%{height:100%}to{height:0}}.fade-enter-active[data-v-c694747c]{animation:fadeStart-c694747c .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-c694747c]{animation:fadeEnd-c694747c .1s linear forwards;overflow:hidden}@keyframes turn-c694747c{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.locking[data-v-c694747c]{position:fixed;inset:0;width:100%;height:100%;z-index:9998}.toast[data-v-c694747c]{position:fixed;top:50%;left:50%;display:flex;flex-direction:column;align-items:center;justify-content:space-around;box-sizing:content-box;width:100px;max-width:70%;padding:16px;color:#fff;font-size:14px;text-align:center;background-color:#000000b3;border-radius:8px;transform:translate3d(-50%,-50%,0);z-index:9999;transition:.3s;cursor:pointer}.toast div.icon[data-v-c694747c]{width:50px;height:50px;margin:15px 0}.toast div.icon svg[data-v-c694747c]{width:100%;height:100%}.toast div.icon svg path[data-v-c694747c]{fill:#fff}.toast .loading[data-v-c694747c]{animation:turn-c694747c 5s linear infinite}.toast .message[data-v-c694747c]{display:block;width:100%}@keyframes turns-840edaba{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-840edaba]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-840edaba]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-840edaba]{color:#f9ad1e}.notice_info li[data-v-840edaba]{font-size:14px;list-style:revert}.text-container[data-v-840edaba]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-840edaba]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-840edaba]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-840edaba]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-840edaba]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-840edaba]{width:100%}.text-container .text-container_item p.info-desc[data-v-840edaba]{width:100%;color:#999;font-size:14px}.page-container[data-v-840edaba]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-840edaba]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-840edaba]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-840edaba]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-840edaba],.page-container .page-flex .page-sidebar a[data-v-840edaba]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-840edaba]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-840edaba]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-840edaba]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-840edaba]{border-radius:0;padding:1rem}ul.ul-container[data-v-840edaba]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-840edaba]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-840edaba]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-840edaba]{width:100%}form.form-container[data-v-840edaba]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-840edaba]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-840edaba]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-840edaba]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-840edaba]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-840edaba],form.form-container .label-value select[data-v-840edaba]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-840edaba]:focus,form.form-container .label-value select[data-v-840edaba]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-840edaba]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-840edaba]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-840edaba],form.form-container .label-value input[type=radio][data-v-840edaba]{width:auto}form.form-container .label-value input[type=radio][data-v-840edaba]{margin:0 4px 0 0}form.form-container .label-value input[data-v-840edaba]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-840edaba]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-840edaba]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-840edaba]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-840edaba]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-840edaba]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-840edaba]:hover{background-color:#747474}form.form-container .label-msg[data-v-840edaba]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-840edaba]{color:#f9ad1e}form.form-container .label-flex[data-v-840edaba]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-840edaba]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-840edaba]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-840edaba]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-840edaba]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-840edaba]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-840edaba]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-840edaba],form.form-container1 .label-value select[data-v-840edaba]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-840edaba]:focus,form.form-container1 .label-value select[data-v-840edaba]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-840edaba]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-840edaba],form.form-container1 .label-value input[type=radio][data-v-840edaba]{width:auto}form.form-container1 .label-value input[type=radio][data-v-840edaba]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-840edaba]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-840edaba]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-840edaba]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-840edaba]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-840edaba]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-840edaba]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-840edaba]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-840edaba]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-840edaba]{color:#f9ad1e}form.form-container1 .label-flex[data-v-840edaba]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-840edaba]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-840edaba]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-840edaba]{width:100px}table.page-table th.checkbox[data-v-840edaba]{width:50px;text-align:center}table.page-table th.setting[data-v-840edaba]{width:100px;text-align:center}table.page-table thead[data-v-840edaba]{color:#909399}table.page-table thead tr[data-v-840edaba]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-840edaba]{padding:10px 16px}table.page-table tbody tr[data-v-840edaba]:hover{background-color:#eeee}table.page-table tbody tr[data-v-840edaba]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-840edaba]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-840edaba]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-840edaba]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-840edaba]{width:100px}table.popups-table th.checkbox[data-v-840edaba]{width:50px;text-align:center}table.popups-table th.setting[data-v-840edaba]{width:100px;text-align:center}table.popups-table thead[data-v-840edaba]{color:#eee}table.popups-table thead tr[data-v-840edaba]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-840edaba]{padding:10px 16px}table.popups-table tbody tr[data-v-840edaba]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-840edaba]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-840edaba]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-840edaba]{width:100%}header.header-desktop[data-v-840edaba]{display:block}header.header-mobile[data-v-840edaba]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-840edaba]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-840edaba]{width:100%;height:100%}header.header-mobile button svg path[data-v-840edaba]{fill:#fff}nav.sidebar[data-v-840edaba]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-840edaba]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-840edaba]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-840edaba]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-840edaba]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-840edaba]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-840edaba]{color:#fff}nav.sidebar .container .children[data-v-840edaba]{padding-left:30px}@-moz-keyframes tada-840edaba{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-840edaba{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-840edaba{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-840edaba{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-840edaba]{animation:dialogEnter-840edaba .3s linear forwards}.dialog-leave-active[data-v-840edaba]{animation:dialogLeave-840edaba .3s linear forwards}@keyframes dialogEnter-840edaba{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-840edaba{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-840edaba]{animation:dialogEnter-840edaba .2s linear forwards}.dialog1-leave-active[data-v-840edaba]{animation:dialogLeave-840edaba .2s linear forwards}@keyframes rotateEnter-840edaba{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-840edaba]{animation:rotateEnter-840edaba .7s;position:relative}.rotate-leave-active[data-v-840edaba]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-840edaba{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-840edaba{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-840edaba]{animation:slideOutTop-840edaba .5s linear forwards}.slide-top-leave-active[data-v-840edaba],.slide-bottom-enter-active[data-v-840edaba]{animation:slideOutBottom-840edaba .5s linear forwards}@keyframes slideInLeft-840edaba{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-840edaba{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-840edaba]{animation:slideInLeft-840edaba .3s linear forwards}.slide-left-leave-active[data-v-840edaba]{animation:slideInRight-840edaba .3s linear forwards}@keyframes slideOutLeft-840edaba{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-840edaba{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-840edaba]{animation:slideOutLeft-840edaba .3s linear forwards}.slide-right-leave-active[data-v-840edaba]{animation:slideOutRight-840edaba .3s linear forwards}@keyframes bganimation-840edaba{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-840edaba{0%{height:0}to{height:100px}}@keyframes fadeEnd-840edaba{0%{height:100%}to{height:0}}.fade-enter-active[data-v-840edaba]{animation:fadeStart-840edaba .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-840edaba]{animation:fadeEnd-840edaba .1s linear forwards;overflow:hidden}form[data-v-840edaba]{margin-top:1rem;padding:0!important}button[disabled][data-v-840edaba],button[disabled][data-v-840edaba]:hover{opacity:.5}@keyframes turns-17e3ba10{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-17e3ba10]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-17e3ba10]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-17e3ba10]{color:#f9ad1e}.notice_info li[data-v-17e3ba10]{font-size:14px;list-style:revert}.text-container[data-v-17e3ba10]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-17e3ba10]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-17e3ba10]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-17e3ba10]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-17e3ba10]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-17e3ba10]{width:100%}.text-container .text-container_item p.info-desc[data-v-17e3ba10]{width:100%;color:#999;font-size:14px}.page-container[data-v-17e3ba10]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-17e3ba10]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-17e3ba10]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-17e3ba10]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-17e3ba10],.page-container .page-flex .page-sidebar a[data-v-17e3ba10]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-17e3ba10]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-17e3ba10]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-17e3ba10]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-17e3ba10]{border-radius:0;padding:1rem}ul.ul-container[data-v-17e3ba10]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-17e3ba10]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-17e3ba10]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-17e3ba10]{width:100%}form.form-container[data-v-17e3ba10]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-17e3ba10]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-17e3ba10]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-17e3ba10]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-17e3ba10]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-17e3ba10],form.form-container .label-value select[data-v-17e3ba10]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-17e3ba10]:focus,form.form-container .label-value select[data-v-17e3ba10]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-17e3ba10]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-17e3ba10]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-17e3ba10],form.form-container .label-value input[type=radio][data-v-17e3ba10]{width:auto}form.form-container .label-value input[type=radio][data-v-17e3ba10]{margin:0 4px 0 0}form.form-container .label-value input[data-v-17e3ba10]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-17e3ba10]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-17e3ba10]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-17e3ba10]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-17e3ba10]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-17e3ba10]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-17e3ba10]:hover{background-color:#747474}form.form-container .label-msg[data-v-17e3ba10]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-17e3ba10]{color:#f9ad1e}form.form-container .label-flex[data-v-17e3ba10]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-17e3ba10]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-17e3ba10]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-17e3ba10]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-17e3ba10]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-17e3ba10]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-17e3ba10]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-17e3ba10],form.form-container1 .label-value select[data-v-17e3ba10]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-17e3ba10]:focus,form.form-container1 .label-value select[data-v-17e3ba10]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-17e3ba10]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-17e3ba10],form.form-container1 .label-value input[type=radio][data-v-17e3ba10]{width:auto}form.form-container1 .label-value input[type=radio][data-v-17e3ba10]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-17e3ba10]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-17e3ba10]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-17e3ba10]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-17e3ba10]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-17e3ba10]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-17e3ba10]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-17e3ba10]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-17e3ba10]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-17e3ba10]{color:#f9ad1e}form.form-container1 .label-flex[data-v-17e3ba10]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-17e3ba10]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-17e3ba10]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-17e3ba10]{width:100px}table.page-table th.checkbox[data-v-17e3ba10]{width:50px;text-align:center}table.page-table th.setting[data-v-17e3ba10]{width:100px;text-align:center}table.page-table thead[data-v-17e3ba10]{color:#909399}table.page-table thead tr[data-v-17e3ba10]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-17e3ba10]{padding:10px 16px}table.page-table tbody tr[data-v-17e3ba10]:hover{background-color:#eeee}table.page-table tbody tr[data-v-17e3ba10]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-17e3ba10]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-17e3ba10]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-17e3ba10]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-17e3ba10]{width:100px}table.popups-table th.checkbox[data-v-17e3ba10]{width:50px;text-align:center}table.popups-table th.setting[data-v-17e3ba10]{width:100px;text-align:center}table.popups-table thead[data-v-17e3ba10]{color:#eee}table.popups-table thead tr[data-v-17e3ba10]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-17e3ba10]{padding:10px 16px}table.popups-table tbody tr[data-v-17e3ba10]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-17e3ba10]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-17e3ba10]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-17e3ba10]{width:100%}header.header-desktop[data-v-17e3ba10]{display:block}header.header-mobile[data-v-17e3ba10]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-17e3ba10]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-17e3ba10]{width:100%;height:100%}header.header-mobile button svg path[data-v-17e3ba10]{fill:#fff}nav.sidebar[data-v-17e3ba10]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-17e3ba10]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-17e3ba10]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-17e3ba10]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-17e3ba10]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-17e3ba10]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-17e3ba10]{color:#fff}nav.sidebar .container .children[data-v-17e3ba10]{padding-left:30px}@-moz-keyframes tada-17e3ba10{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-17e3ba10{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-17e3ba10{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-17e3ba10{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-17e3ba10]{animation:dialogEnter-17e3ba10 .3s linear forwards}.dialog-leave-active[data-v-17e3ba10]{animation:dialogLeave-17e3ba10 .3s linear forwards}@keyframes dialogEnter-17e3ba10{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-17e3ba10{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-17e3ba10]{animation:dialogEnter-17e3ba10 .2s linear forwards}.dialog1-leave-active[data-v-17e3ba10]{animation:dialogLeave-17e3ba10 .2s linear forwards}@keyframes rotateEnter-17e3ba10{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-17e3ba10]{animation:rotateEnter-17e3ba10 .7s;position:relative}.rotate-leave-active[data-v-17e3ba10]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-17e3ba10{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-17e3ba10{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-17e3ba10]{animation:slideOutTop-17e3ba10 .5s linear forwards}.slide-top-leave-active[data-v-17e3ba10],.slide-bottom-enter-active[data-v-17e3ba10]{animation:slideOutBottom-17e3ba10 .5s linear forwards}@keyframes slideInLeft-17e3ba10{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-17e3ba10{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-17e3ba10]{animation:slideInLeft-17e3ba10 .3s linear forwards}.slide-left-leave-active[data-v-17e3ba10]{animation:slideInRight-17e3ba10 .3s linear forwards}@keyframes slideOutLeft-17e3ba10{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-17e3ba10{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-17e3ba10]{animation:slideOutLeft-17e3ba10 .3s linear forwards}.slide-right-leave-active[data-v-17e3ba10]{animation:slideOutRight-17e3ba10 .3s linear forwards}@keyframes bganimation-17e3ba10{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-17e3ba10{0%{height:0}to{height:100px}}@keyframes fadeEnd-17e3ba10{0%{height:100%}to{height:0}}.fade-enter-active[data-v-17e3ba10]{animation:fadeStart-17e3ba10 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-17e3ba10]{animation:fadeEnd-17e3ba10 .1s linear forwards;overflow:hidden}iframe[data-v-17e3ba10]{width:100%;height:400px;border:none}@keyframes turns-394e5818{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-394e5818]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-394e5818]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-394e5818]{color:#f9ad1e}.notice_info li[data-v-394e5818]{font-size:14px;list-style:revert}.text-container[data-v-394e5818]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-394e5818]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-394e5818]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-394e5818]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-394e5818]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-394e5818]{width:100%}.text-container .text-container_item p.info-desc[data-v-394e5818]{width:100%;color:#999;font-size:14px}.page-container[data-v-394e5818]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-394e5818]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-394e5818]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-394e5818]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-394e5818],.page-container .page-flex .page-sidebar a[data-v-394e5818]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-394e5818]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-394e5818]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-394e5818]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-394e5818]{border-radius:0;padding:1rem}ul.ul-container[data-v-394e5818]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-394e5818]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-394e5818]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-394e5818]{width:100%}form.form-container[data-v-394e5818]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-394e5818]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-394e5818]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-394e5818]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-394e5818]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-394e5818],form.form-container .label-value select[data-v-394e5818]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-394e5818]:focus,form.form-container .label-value select[data-v-394e5818]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-394e5818]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-394e5818]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-394e5818],form.form-container .label-value input[type=radio][data-v-394e5818]{width:auto}form.form-container .label-value input[type=radio][data-v-394e5818]{margin:0 4px 0 0}form.form-container .label-value input[data-v-394e5818]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-394e5818]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-394e5818]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-394e5818]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-394e5818]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-394e5818]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-394e5818]:hover{background-color:#747474}form.form-container .label-msg[data-v-394e5818]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-394e5818]{color:#f9ad1e}form.form-container .label-flex[data-v-394e5818]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-394e5818]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-394e5818]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-394e5818]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-394e5818]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-394e5818]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-394e5818]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-394e5818],form.form-container1 .label-value select[data-v-394e5818]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-394e5818]:focus,form.form-container1 .label-value select[data-v-394e5818]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-394e5818]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-394e5818],form.form-container1 .label-value input[type=radio][data-v-394e5818]{width:auto}form.form-container1 .label-value input[type=radio][data-v-394e5818]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-394e5818]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-394e5818]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-394e5818]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-394e5818]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-394e5818]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-394e5818]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-394e5818]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-394e5818]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-394e5818]{color:#f9ad1e}form.form-container1 .label-flex[data-v-394e5818]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-394e5818]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-394e5818]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-394e5818]{width:100px}table.page-table th.checkbox[data-v-394e5818]{width:50px;text-align:center}table.page-table th.setting[data-v-394e5818]{width:100px;text-align:center}table.page-table thead[data-v-394e5818]{color:#909399}table.page-table thead tr[data-v-394e5818]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-394e5818]{padding:10px 16px}table.page-table tbody tr[data-v-394e5818]:hover{background-color:#eeee}table.page-table tbody tr[data-v-394e5818]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-394e5818]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-394e5818]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-394e5818]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-394e5818]{width:100px}table.popups-table th.checkbox[data-v-394e5818]{width:50px;text-align:center}table.popups-table th.setting[data-v-394e5818]{width:100px;text-align:center}table.popups-table thead[data-v-394e5818]{color:#eee}table.popups-table thead tr[data-v-394e5818]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-394e5818]{padding:10px 16px}table.popups-table tbody tr[data-v-394e5818]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-394e5818]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-394e5818]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-394e5818]{width:100%}header.header-desktop[data-v-394e5818]{display:block}header.header-mobile[data-v-394e5818]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-394e5818]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-394e5818]{width:100%;height:100%}header.header-mobile button svg path[data-v-394e5818]{fill:#fff}nav.sidebar[data-v-394e5818]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-394e5818]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-394e5818]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-394e5818]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-394e5818]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-394e5818]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-394e5818]{color:#fff}nav.sidebar .container .children[data-v-394e5818]{padding-left:30px}@-moz-keyframes tada-394e5818{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-394e5818{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-394e5818{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-394e5818{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-394e5818]{animation:dialogEnter-394e5818 .3s linear forwards}.dialog-leave-active[data-v-394e5818]{animation:dialogLeave-394e5818 .3s linear forwards}@keyframes dialogEnter-394e5818{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-394e5818{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-394e5818]{animation:dialogEnter-394e5818 .2s linear forwards}.dialog1-leave-active[data-v-394e5818]{animation:dialogLeave-394e5818 .2s linear forwards}@keyframes rotateEnter-394e5818{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-394e5818]{animation:rotateEnter-394e5818 .7s;position:relative}.rotate-leave-active[data-v-394e5818]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-394e5818{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-394e5818{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-394e5818]{animation:slideOutTop-394e5818 .5s linear forwards}.slide-top-leave-active[data-v-394e5818],.slide-bottom-enter-active[data-v-394e5818]{animation:slideOutBottom-394e5818 .5s linear forwards}@keyframes slideInLeft-394e5818{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-394e5818{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-394e5818]{animation:slideInLeft-394e5818 .3s linear forwards}.slide-left-leave-active[data-v-394e5818]{animation:slideInRight-394e5818 .3s linear forwards}@keyframes slideOutLeft-394e5818{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-394e5818{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-394e5818]{animation:slideOutLeft-394e5818 .3s linear forwards}.slide-right-leave-active[data-v-394e5818]{animation:slideOutRight-394e5818 .3s linear forwards}@keyframes bganimation-394e5818{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-394e5818{0%{height:0}to{height:100px}}@keyframes fadeEnd-394e5818{0%{height:100%}to{height:0}}.fade-enter-active[data-v-394e5818]{animation:fadeStart-394e5818 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-394e5818]{animation:fadeEnd-394e5818 .1s linear forwards;overflow:hidden}iframe[data-v-394e5818]{width:100%;height:400px;border:none}@keyframes turns-83f0ed5a{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-83f0ed5a]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-83f0ed5a]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-83f0ed5a]{color:#f9ad1e}.notice_info li[data-v-83f0ed5a]{font-size:14px;list-style:revert}.text-container[data-v-83f0ed5a]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-83f0ed5a]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-83f0ed5a]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-83f0ed5a]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-83f0ed5a]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-83f0ed5a]{width:100%}.text-container .text-container_item p.info-desc[data-v-83f0ed5a]{width:100%;color:#999;font-size:14px}.page-container[data-v-83f0ed5a]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-83f0ed5a]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-83f0ed5a]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-83f0ed5a]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-83f0ed5a],.page-container .page-flex .page-sidebar a[data-v-83f0ed5a]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-83f0ed5a]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-83f0ed5a]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-83f0ed5a]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-83f0ed5a]{border-radius:0;padding:1rem}ul.ul-container[data-v-83f0ed5a]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-83f0ed5a]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-83f0ed5a]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-83f0ed5a]{width:100%}form.form-container[data-v-83f0ed5a]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-83f0ed5a]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-83f0ed5a]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-83f0ed5a]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-83f0ed5a]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-83f0ed5a],form.form-container .label-value select[data-v-83f0ed5a]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-83f0ed5a]:focus,form.form-container .label-value select[data-v-83f0ed5a]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-83f0ed5a]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-83f0ed5a]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-83f0ed5a],form.form-container .label-value input[type=radio][data-v-83f0ed5a]{width:auto}form.form-container .label-value input[type=radio][data-v-83f0ed5a]{margin:0 4px 0 0}form.form-container .label-value input[data-v-83f0ed5a]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-83f0ed5a]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-83f0ed5a]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-83f0ed5a]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-83f0ed5a]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-83f0ed5a]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-83f0ed5a]:hover{background-color:#747474}form.form-container .label-msg[data-v-83f0ed5a]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-83f0ed5a]{color:#f9ad1e}form.form-container .label-flex[data-v-83f0ed5a]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-83f0ed5a]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-83f0ed5a]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-83f0ed5a]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-83f0ed5a]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-83f0ed5a]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-83f0ed5a]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-83f0ed5a],form.form-container1 .label-value select[data-v-83f0ed5a]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-83f0ed5a]:focus,form.form-container1 .label-value select[data-v-83f0ed5a]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-83f0ed5a]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-83f0ed5a],form.form-container1 .label-value input[type=radio][data-v-83f0ed5a]{width:auto}form.form-container1 .label-value input[type=radio][data-v-83f0ed5a]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-83f0ed5a]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-83f0ed5a]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-83f0ed5a]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-83f0ed5a]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-83f0ed5a]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-83f0ed5a]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-83f0ed5a]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-83f0ed5a]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-83f0ed5a]{color:#f9ad1e}form.form-container1 .label-flex[data-v-83f0ed5a]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-83f0ed5a]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-83f0ed5a]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-83f0ed5a]{width:100px}table.page-table th.checkbox[data-v-83f0ed5a]{width:50px;text-align:center}table.page-table th.setting[data-v-83f0ed5a]{width:100px;text-align:center}table.page-table thead[data-v-83f0ed5a]{color:#909399}table.page-table thead tr[data-v-83f0ed5a]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-83f0ed5a]{padding:10px 16px}table.page-table tbody tr[data-v-83f0ed5a]:hover{background-color:#eeee}table.page-table tbody tr[data-v-83f0ed5a]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-83f0ed5a]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-83f0ed5a]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-83f0ed5a]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-83f0ed5a]{width:100px}table.popups-table th.checkbox[data-v-83f0ed5a]{width:50px;text-align:center}table.popups-table th.setting[data-v-83f0ed5a]{width:100px;text-align:center}table.popups-table thead[data-v-83f0ed5a]{color:#eee}table.popups-table thead tr[data-v-83f0ed5a]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-83f0ed5a]{padding:10px 16px}table.popups-table tbody tr[data-v-83f0ed5a]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-83f0ed5a]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-83f0ed5a]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-83f0ed5a]{width:100%}header.header-desktop[data-v-83f0ed5a]{display:block}header.header-mobile[data-v-83f0ed5a]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-83f0ed5a]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-83f0ed5a]{width:100%;height:100%}header.header-mobile button svg path[data-v-83f0ed5a]{fill:#fff}nav.sidebar[data-v-83f0ed5a]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-83f0ed5a]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-83f0ed5a]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-83f0ed5a]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-83f0ed5a]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-83f0ed5a]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-83f0ed5a]{color:#fff}nav.sidebar .container .children[data-v-83f0ed5a]{padding-left:30px}@-moz-keyframes tada-83f0ed5a{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-83f0ed5a{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-83f0ed5a{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-83f0ed5a{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-83f0ed5a]{animation:dialogEnter-83f0ed5a .3s linear forwards}.dialog-leave-active[data-v-83f0ed5a]{animation:dialogLeave-83f0ed5a .3s linear forwards}@keyframes dialogEnter-83f0ed5a{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-83f0ed5a{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-83f0ed5a]{animation:dialogEnter-83f0ed5a .2s linear forwards}.dialog1-leave-active[data-v-83f0ed5a]{animation:dialogLeave-83f0ed5a .2s linear forwards}@keyframes rotateEnter-83f0ed5a{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-83f0ed5a]{animation:rotateEnter-83f0ed5a .7s;position:relative}.rotate-leave-active[data-v-83f0ed5a]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-83f0ed5a{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-83f0ed5a{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-83f0ed5a]{animation:slideOutTop-83f0ed5a .5s linear forwards}.slide-top-leave-active[data-v-83f0ed5a],.slide-bottom-enter-active[data-v-83f0ed5a]{animation:slideOutBottom-83f0ed5a .5s linear forwards}@keyframes slideInLeft-83f0ed5a{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-83f0ed5a{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-83f0ed5a]{animation:slideInLeft-83f0ed5a .3s linear forwards}.slide-left-leave-active[data-v-83f0ed5a]{animation:slideInRight-83f0ed5a .3s linear forwards}@keyframes slideOutLeft-83f0ed5a{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-83f0ed5a{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-83f0ed5a]{animation:slideOutLeft-83f0ed5a .3s linear forwards}.slide-right-leave-active[data-v-83f0ed5a]{animation:slideOutRight-83f0ed5a .3s linear forwards}@keyframes bganimation-83f0ed5a{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-83f0ed5a{0%{height:0}to{height:100px}}@keyframes fadeEnd-83f0ed5a{0%{height:100%}to{height:0}}.fade-enter-active[data-v-83f0ed5a]{animation:fadeStart-83f0ed5a .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-83f0ed5a]{animation:fadeEnd-83f0ed5a .1s linear forwards;overflow:hidden}[data-v-83f0ed5a] form{margin-top:1rem;padding:0!important}[data-v-83f0ed5a] form button[disabled],[data-v-83f0ed5a] form button[disabled]:hover{opacity:.5}[data-v-83f0ed5a] form .setup-install.message{text-align:center;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}@keyframes turns-6d7a2f13{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-6d7a2f13]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-6d7a2f13]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-6d7a2f13]{color:#f9ad1e}.notice_info li[data-v-6d7a2f13]{font-size:14px;list-style:revert}.text-container[data-v-6d7a2f13]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-6d7a2f13]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-6d7a2f13]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-6d7a2f13]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-6d7a2f13]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-6d7a2f13]{width:100%}.text-container .text-container_item p.info-desc[data-v-6d7a2f13]{width:100%;color:#999;font-size:14px}.page-container[data-v-6d7a2f13]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-6d7a2f13]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-6d7a2f13]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-6d7a2f13]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-6d7a2f13],.page-container .page-flex .page-sidebar a[data-v-6d7a2f13]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-6d7a2f13]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-6d7a2f13]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-6d7a2f13]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-6d7a2f13]{border-radius:0;padding:1rem}ul.ul-container[data-v-6d7a2f13]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-6d7a2f13]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-6d7a2f13]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-6d7a2f13]{width:100%}form.form-container[data-v-6d7a2f13]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-6d7a2f13]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-6d7a2f13]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-6d7a2f13]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-6d7a2f13]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-6d7a2f13],form.form-container .label-value select[data-v-6d7a2f13]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-6d7a2f13]:focus,form.form-container .label-value select[data-v-6d7a2f13]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-6d7a2f13]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-6d7a2f13]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-6d7a2f13],form.form-container .label-value input[type=radio][data-v-6d7a2f13]{width:auto}form.form-container .label-value input[type=radio][data-v-6d7a2f13]{margin:0 4px 0 0}form.form-container .label-value input[data-v-6d7a2f13]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-6d7a2f13]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-6d7a2f13]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-6d7a2f13]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-6d7a2f13]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-6d7a2f13]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-6d7a2f13]:hover{background-color:#747474}form.form-container .label-msg[data-v-6d7a2f13]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-6d7a2f13]{color:#f9ad1e}form.form-container .label-flex[data-v-6d7a2f13]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-6d7a2f13]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-6d7a2f13]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-6d7a2f13]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-6d7a2f13]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-6d7a2f13]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-6d7a2f13]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-6d7a2f13],form.form-container1 .label-value select[data-v-6d7a2f13]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-6d7a2f13]:focus,form.form-container1 .label-value select[data-v-6d7a2f13]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-6d7a2f13]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-6d7a2f13],form.form-container1 .label-value input[type=radio][data-v-6d7a2f13]{width:auto}form.form-container1 .label-value input[type=radio][data-v-6d7a2f13]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-6d7a2f13]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-6d7a2f13]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-6d7a2f13]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-6d7a2f13]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-6d7a2f13]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-6d7a2f13]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-6d7a2f13]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-6d7a2f13]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-6d7a2f13]{color:#f9ad1e}form.form-container1 .label-flex[data-v-6d7a2f13]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-6d7a2f13]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-6d7a2f13]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-6d7a2f13]{width:100px}table.page-table th.checkbox[data-v-6d7a2f13]{width:50px;text-align:center}table.page-table th.setting[data-v-6d7a2f13]{width:100px;text-align:center}table.page-table thead[data-v-6d7a2f13]{color:#909399}table.page-table thead tr[data-v-6d7a2f13]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-6d7a2f13]{padding:10px 16px}table.page-table tbody tr[data-v-6d7a2f13]:hover{background-color:#eeee}table.page-table tbody tr[data-v-6d7a2f13]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-6d7a2f13]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-6d7a2f13]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-6d7a2f13]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-6d7a2f13]{width:100px}table.popups-table th.checkbox[data-v-6d7a2f13]{width:50px;text-align:center}table.popups-table th.setting[data-v-6d7a2f13]{width:100px;text-align:center}table.popups-table thead[data-v-6d7a2f13]{color:#eee}table.popups-table thead tr[data-v-6d7a2f13]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-6d7a2f13]{padding:10px 16px}table.popups-table tbody tr[data-v-6d7a2f13]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-6d7a2f13]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-6d7a2f13]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-6d7a2f13]{width:100%}header.header-desktop[data-v-6d7a2f13]{display:block}header.header-mobile[data-v-6d7a2f13]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-6d7a2f13]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-6d7a2f13]{width:100%;height:100%}header.header-mobile button svg path[data-v-6d7a2f13]{fill:#fff}nav.sidebar[data-v-6d7a2f13]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-6d7a2f13]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-6d7a2f13]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-6d7a2f13]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-6d7a2f13]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-6d7a2f13]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-6d7a2f13]{color:#fff}nav.sidebar .container .children[data-v-6d7a2f13]{padding-left:30px}@-moz-keyframes tada-6d7a2f13{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-6d7a2f13{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-6d7a2f13{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-6d7a2f13{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-6d7a2f13]{animation:dialogEnter-6d7a2f13 .3s linear forwards}.dialog-leave-active[data-v-6d7a2f13]{animation:dialogLeave-6d7a2f13 .3s linear forwards}@keyframes dialogEnter-6d7a2f13{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-6d7a2f13{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-6d7a2f13]{animation:dialogEnter-6d7a2f13 .2s linear forwards}.dialog1-leave-active[data-v-6d7a2f13]{animation:dialogLeave-6d7a2f13 .2s linear forwards}@keyframes rotateEnter-6d7a2f13{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-6d7a2f13]{animation:rotateEnter-6d7a2f13 .7s;position:relative}.rotate-leave-active[data-v-6d7a2f13]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-6d7a2f13{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-6d7a2f13{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-6d7a2f13]{animation:slideOutTop-6d7a2f13 .5s linear forwards}.slide-top-leave-active[data-v-6d7a2f13],.slide-bottom-enter-active[data-v-6d7a2f13]{animation:slideOutBottom-6d7a2f13 .5s linear forwards}@keyframes slideInLeft-6d7a2f13{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-6d7a2f13{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-6d7a2f13]{animation:slideInLeft-6d7a2f13 .3s linear forwards}.slide-left-leave-active[data-v-6d7a2f13]{animation:slideInRight-6d7a2f13 .3s linear forwards}@keyframes slideOutLeft-6d7a2f13{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-6d7a2f13{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-6d7a2f13]{animation:slideOutLeft-6d7a2f13 .3s linear forwards}.slide-right-leave-active[data-v-6d7a2f13]{animation:slideOutRight-6d7a2f13 .3s linear forwards}@keyframes bganimation-6d7a2f13{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-6d7a2f13{0%{height:0}to{height:100px}}@keyframes fadeEnd-6d7a2f13{0%{height:100%}to{height:0}}.fade-enter-active[data-v-6d7a2f13]{animation:fadeStart-6d7a2f13 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-6d7a2f13]{animation:fadeEnd-6d7a2f13 .1s linear forwards;overflow:hidden}.action-container[data-v-6d7a2f13]{width:619px!important}.confirm[data-v-6d7a2f13],.success[data-v-6d7a2f13]{height:383px}.confirm>div[data-v-6d7a2f13],.success>div[data-v-6d7a2f13]{position:relative;top:50%;margin:0 auto;transform:translateY(-50%);width:242px}.confirm>div>svg[data-v-6d7a2f13],.success>div>svg[data-v-6d7a2f13]{display:block;margin:0 auto}.confirm>div span[data-v-6d7a2f13],.success>div span[data-v-6d7a2f13]{display:inline-block;width:100%;color:#000c;text-align:center}.confirm>div>span[data-v-6d7a2f13],.success>div>span[data-v-6d7a2f13]{margin:16px 0;font-size:15px;font-weight:600}.confirm>div>div>span[data-v-6d7a2f13]:first-of-type,.success>div>div>span[data-v-6d7a2f13]:first-of-type{font-size:15px}.confirm>div>div>span[data-v-6d7a2f13]:last-of-type,.success>div>div>span[data-v-6d7a2f13]:last-of-type{font-size:12px}@keyframes turns-16aaa3d0{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-16aaa3d0]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-16aaa3d0]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-16aaa3d0]{color:#f9ad1e}.notice_info li[data-v-16aaa3d0]{font-size:14px;list-style:revert}.text-container[data-v-16aaa3d0]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-16aaa3d0]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-16aaa3d0]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-16aaa3d0]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-16aaa3d0]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-16aaa3d0]{width:100%}.text-container .text-container_item p.info-desc[data-v-16aaa3d0]{width:100%;color:#999;font-size:14px}.page-container[data-v-16aaa3d0]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-16aaa3d0]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-16aaa3d0]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-16aaa3d0]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-16aaa3d0],.page-container .page-flex .page-sidebar a[data-v-16aaa3d0]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-16aaa3d0]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-16aaa3d0]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-16aaa3d0]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-16aaa3d0]{border-radius:0;padding:1rem}ul.ul-container[data-v-16aaa3d0]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-16aaa3d0]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-16aaa3d0]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-16aaa3d0]{width:100%}form.form-container[data-v-16aaa3d0]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-16aaa3d0]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-16aaa3d0]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-16aaa3d0]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-16aaa3d0]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-16aaa3d0],form.form-container .label-value select[data-v-16aaa3d0]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-16aaa3d0]:focus,form.form-container .label-value select[data-v-16aaa3d0]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-16aaa3d0]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-16aaa3d0]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-16aaa3d0],form.form-container .label-value input[type=radio][data-v-16aaa3d0]{width:auto}form.form-container .label-value input[type=radio][data-v-16aaa3d0]{margin:0 4px 0 0}form.form-container .label-value input[data-v-16aaa3d0]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-16aaa3d0]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-16aaa3d0]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-16aaa3d0]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-16aaa3d0]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-16aaa3d0]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-16aaa3d0]:hover{background-color:#747474}form.form-container .label-msg[data-v-16aaa3d0]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-16aaa3d0]{color:#f9ad1e}form.form-container .label-flex[data-v-16aaa3d0]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-16aaa3d0]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-16aaa3d0]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-16aaa3d0]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-16aaa3d0]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-16aaa3d0]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-16aaa3d0]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-16aaa3d0],form.form-container1 .label-value select[data-v-16aaa3d0]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-16aaa3d0]:focus,form.form-container1 .label-value select[data-v-16aaa3d0]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-16aaa3d0]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-16aaa3d0],form.form-container1 .label-value input[type=radio][data-v-16aaa3d0]{width:auto}form.form-container1 .label-value input[type=radio][data-v-16aaa3d0]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-16aaa3d0]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-16aaa3d0]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-16aaa3d0]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-16aaa3d0]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-16aaa3d0]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-16aaa3d0]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-16aaa3d0]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-16aaa3d0]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-16aaa3d0]{color:#f9ad1e}form.form-container1 .label-flex[data-v-16aaa3d0]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-16aaa3d0]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-16aaa3d0]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-16aaa3d0]{width:100px}table.page-table th.checkbox[data-v-16aaa3d0]{width:50px;text-align:center}table.page-table th.setting[data-v-16aaa3d0]{width:100px;text-align:center}table.page-table thead[data-v-16aaa3d0]{color:#909399}table.page-table thead tr[data-v-16aaa3d0]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-16aaa3d0]{padding:10px 16px}table.page-table tbody tr[data-v-16aaa3d0]:hover{background-color:#eeee}table.page-table tbody tr[data-v-16aaa3d0]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-16aaa3d0]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-16aaa3d0]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-16aaa3d0]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-16aaa3d0]{width:100px}table.popups-table th.checkbox[data-v-16aaa3d0]{width:50px;text-align:center}table.popups-table th.setting[data-v-16aaa3d0]{width:100px;text-align:center}table.popups-table thead[data-v-16aaa3d0]{color:#eee}table.popups-table thead tr[data-v-16aaa3d0]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-16aaa3d0]{padding:10px 16px}table.popups-table tbody tr[data-v-16aaa3d0]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-16aaa3d0]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-16aaa3d0]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-16aaa3d0]{width:100%}header.header-desktop[data-v-16aaa3d0]{display:block}header.header-mobile[data-v-16aaa3d0]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-16aaa3d0]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-16aaa3d0]{width:100%;height:100%}header.header-mobile button svg path[data-v-16aaa3d0]{fill:#fff}nav.sidebar[data-v-16aaa3d0]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-16aaa3d0]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-16aaa3d0]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-16aaa3d0]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-16aaa3d0]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-16aaa3d0]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-16aaa3d0]{color:#fff}nav.sidebar .container .children[data-v-16aaa3d0]{padding-left:30px}@-moz-keyframes tada-16aaa3d0{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-16aaa3d0{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-16aaa3d0{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-16aaa3d0{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-16aaa3d0]{animation:dialogEnter-16aaa3d0 .3s linear forwards}.dialog-leave-active[data-v-16aaa3d0]{animation:dialogLeave-16aaa3d0 .3s linear forwards}@keyframes dialogEnter-16aaa3d0{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-16aaa3d0{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-16aaa3d0]{animation:dialogEnter-16aaa3d0 .2s linear forwards}.dialog1-leave-active[data-v-16aaa3d0]{animation:dialogLeave-16aaa3d0 .2s linear forwards}@keyframes rotateEnter-16aaa3d0{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-16aaa3d0]{animation:rotateEnter-16aaa3d0 .7s;position:relative}.rotate-leave-active[data-v-16aaa3d0]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-16aaa3d0{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-16aaa3d0{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-16aaa3d0]{animation:slideOutTop-16aaa3d0 .5s linear forwards}.slide-top-leave-active[data-v-16aaa3d0],.slide-bottom-enter-active[data-v-16aaa3d0]{animation:slideOutBottom-16aaa3d0 .5s linear forwards}@keyframes slideInLeft-16aaa3d0{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-16aaa3d0{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-16aaa3d0]{animation:slideInLeft-16aaa3d0 .3s linear forwards}.slide-left-leave-active[data-v-16aaa3d0]{animation:slideInRight-16aaa3d0 .3s linear forwards}@keyframes slideOutLeft-16aaa3d0{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-16aaa3d0{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-16aaa3d0]{animation:slideOutLeft-16aaa3d0 .3s linear forwards}.slide-right-leave-active[data-v-16aaa3d0]{animation:slideOutRight-16aaa3d0 .3s linear forwards}@keyframes bganimation-16aaa3d0{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-16aaa3d0{0%{height:0}to{height:100px}}@keyframes fadeEnd-16aaa3d0{0%{height:100%}to{height:0}}.fade-enter-active[data-v-16aaa3d0]{animation:fadeStart-16aaa3d0 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-16aaa3d0]{animation:fadeEnd-16aaa3d0 .1s linear forwards;overflow:hidden}[data-v-16aaa3d0] form{margin-top:1rem;padding:0!important}[data-v-16aaa3d0] form button[disabled],[data-v-16aaa3d0] form button[disabled]:hover{opacity:.5}@keyframes turns-4a0aaeb7{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-4a0aaeb7]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-4a0aaeb7]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-4a0aaeb7]{color:#f9ad1e}.notice_info li[data-v-4a0aaeb7]{font-size:14px;list-style:revert}.text-container[data-v-4a0aaeb7]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-4a0aaeb7]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-4a0aaeb7]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-4a0aaeb7]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-4a0aaeb7]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-4a0aaeb7]{width:100%}.text-container .text-container_item p.info-desc[data-v-4a0aaeb7]{width:100%;color:#999;font-size:14px}.page-container[data-v-4a0aaeb7]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-4a0aaeb7]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-4a0aaeb7]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-4a0aaeb7]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-4a0aaeb7],.page-container .page-flex .page-sidebar a[data-v-4a0aaeb7]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-4a0aaeb7]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-4a0aaeb7]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-4a0aaeb7]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-4a0aaeb7]{border-radius:0;padding:1rem}ul.ul-container[data-v-4a0aaeb7]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-4a0aaeb7]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-4a0aaeb7]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-4a0aaeb7]{width:100%}form.form-container[data-v-4a0aaeb7]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-4a0aaeb7]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-4a0aaeb7]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-4a0aaeb7]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-4a0aaeb7]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-4a0aaeb7],form.form-container .label-value select[data-v-4a0aaeb7]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-4a0aaeb7]:focus,form.form-container .label-value select[data-v-4a0aaeb7]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-4a0aaeb7]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-4a0aaeb7]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-4a0aaeb7],form.form-container .label-value input[type=radio][data-v-4a0aaeb7]{width:auto}form.form-container .label-value input[type=radio][data-v-4a0aaeb7]{margin:0 4px 0 0}form.form-container .label-value input[data-v-4a0aaeb7]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-4a0aaeb7]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-4a0aaeb7]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-4a0aaeb7]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-4a0aaeb7]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-4a0aaeb7]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-4a0aaeb7]:hover{background-color:#747474}form.form-container .label-msg[data-v-4a0aaeb7]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-4a0aaeb7]{color:#f9ad1e}form.form-container .label-flex[data-v-4a0aaeb7]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-4a0aaeb7]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-4a0aaeb7]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-4a0aaeb7]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-4a0aaeb7]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-4a0aaeb7]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-4a0aaeb7]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-4a0aaeb7],form.form-container1 .label-value select[data-v-4a0aaeb7]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-4a0aaeb7]:focus,form.form-container1 .label-value select[data-v-4a0aaeb7]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-4a0aaeb7]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-4a0aaeb7],form.form-container1 .label-value input[type=radio][data-v-4a0aaeb7]{width:auto}form.form-container1 .label-value input[type=radio][data-v-4a0aaeb7]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-4a0aaeb7]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-4a0aaeb7]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-4a0aaeb7]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-4a0aaeb7]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-4a0aaeb7]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-4a0aaeb7]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-4a0aaeb7]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-4a0aaeb7]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-4a0aaeb7]{color:#f9ad1e}form.form-container1 .label-flex[data-v-4a0aaeb7]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-4a0aaeb7]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-4a0aaeb7]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-4a0aaeb7]{width:100px}table.page-table th.checkbox[data-v-4a0aaeb7]{width:50px;text-align:center}table.page-table th.setting[data-v-4a0aaeb7]{width:100px;text-align:center}table.page-table thead[data-v-4a0aaeb7]{color:#909399}table.page-table thead tr[data-v-4a0aaeb7]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-4a0aaeb7]{padding:10px 16px}table.page-table tbody tr[data-v-4a0aaeb7]:hover{background-color:#eeee}table.page-table tbody tr[data-v-4a0aaeb7]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-4a0aaeb7]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-4a0aaeb7]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-4a0aaeb7]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-4a0aaeb7]{width:100px}table.popups-table th.checkbox[data-v-4a0aaeb7]{width:50px;text-align:center}table.popups-table th.setting[data-v-4a0aaeb7]{width:100px;text-align:center}table.popups-table thead[data-v-4a0aaeb7]{color:#eee}table.popups-table thead tr[data-v-4a0aaeb7]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-4a0aaeb7]{padding:10px 16px}table.popups-table tbody tr[data-v-4a0aaeb7]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-4a0aaeb7]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-4a0aaeb7]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-4a0aaeb7]{width:100%}header.header-desktop[data-v-4a0aaeb7]{display:block}header.header-mobile[data-v-4a0aaeb7]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-4a0aaeb7]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-4a0aaeb7]{width:100%;height:100%}header.header-mobile button svg path[data-v-4a0aaeb7]{fill:#fff}nav.sidebar[data-v-4a0aaeb7]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-4a0aaeb7]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-4a0aaeb7]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-4a0aaeb7]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-4a0aaeb7]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-4a0aaeb7]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-4a0aaeb7]{color:#fff}nav.sidebar .container .children[data-v-4a0aaeb7]{padding-left:30px}@-moz-keyframes tada-4a0aaeb7{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-4a0aaeb7{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-4a0aaeb7{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-4a0aaeb7{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-4a0aaeb7]{animation:dialogEnter-4a0aaeb7 .3s linear forwards}.dialog-leave-active[data-v-4a0aaeb7]{animation:dialogLeave-4a0aaeb7 .3s linear forwards}@keyframes dialogEnter-4a0aaeb7{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-4a0aaeb7{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-4a0aaeb7]{animation:dialogEnter-4a0aaeb7 .2s linear forwards}.dialog1-leave-active[data-v-4a0aaeb7]{animation:dialogLeave-4a0aaeb7 .2s linear forwards}@keyframes rotateEnter-4a0aaeb7{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-4a0aaeb7]{animation:rotateEnter-4a0aaeb7 .7s;position:relative}.rotate-leave-active[data-v-4a0aaeb7]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-4a0aaeb7{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-4a0aaeb7{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-4a0aaeb7]{animation:slideOutTop-4a0aaeb7 .5s linear forwards}.slide-top-leave-active[data-v-4a0aaeb7],.slide-bottom-enter-active[data-v-4a0aaeb7]{animation:slideOutBottom-4a0aaeb7 .5s linear forwards}@keyframes slideInLeft-4a0aaeb7{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-4a0aaeb7{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-4a0aaeb7]{animation:slideInLeft-4a0aaeb7 .3s linear forwards}.slide-left-leave-active[data-v-4a0aaeb7]{animation:slideInRight-4a0aaeb7 .3s linear forwards}@keyframes slideOutLeft-4a0aaeb7{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-4a0aaeb7{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-4a0aaeb7]{animation:slideOutLeft-4a0aaeb7 .3s linear forwards}.slide-right-leave-active[data-v-4a0aaeb7]{animation:slideOutRight-4a0aaeb7 .3s linear forwards}@keyframes bganimation-4a0aaeb7{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-4a0aaeb7{0%{height:0}to{height:100px}}@keyframes fadeEnd-4a0aaeb7{0%{height:100%}to{height:0}}.fade-enter-active[data-v-4a0aaeb7]{animation:fadeStart-4a0aaeb7 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-4a0aaeb7]{animation:fadeEnd-4a0aaeb7 .1s linear forwards;overflow:hidden}.action-container[data-v-4a0aaeb7]{width:300px!important}form[data-v-4a0aaeb7]{margin-top:1rem;padding:0!important}.action-container_body[data-v-4a0aaeb7]{padding-top:12px!important;padding-bottom:24px!important;min-height:0!important}button[disabled][data-v-4a0aaeb7],button[disabled][data-v-4a0aaeb7]:hover{opacity:.5}@keyframes turns{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning{color:#f9ad1e}.notice_info li{font-size:14px;list-style:revert}.text-container{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block{width:100%}.text-container .text-container_item p.info-desc{width:100%;color:#999;font-size:14px}.page-container{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on,.page-container .page-flex .page-sidebar a:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile{border-radius:0;padding:1rem}ul.ul-container{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body{width:100%}form.form-container{display:block;width:100%;padding:0 1rem}form.form-container .label-info{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input,form.form-container .label-value select{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input:focus,form.form-container .label-value select:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select{border-radius:3px;padding:0 10px}form.form-container .label-value input{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox],form.form-container .label-value input[type=radio]{width:auto}form.form-container .label-value input[type=radio]{margin:0 4px 0 0}form.form-container .label-value input:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit:hover{background-color:#747474}form.form-container .label-msg{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning{color:#f9ad1e}form.form-container .label-flex{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input,form.form-container1 .label-value select{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input:focus,form.form-container1 .label-value select:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox],form.form-container1 .label-value input[type=radio]{width:auto}form.form-container1 .label-value input[type=radio]{margin:0 4px 0 0}form.form-container1 .label-value input:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit:hover{background-color:#747474}form.form-container1 .label-msg{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning{color:#f9ad1e}form.form-container1 .label-flex{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid{width:100px}table.page-table th.checkbox{width:50px;text-align:center}table.page-table th.setting{width:100px;text-align:center}table.page-table thead{color:#909399}table.page-table thead tr{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th{padding:10px 16px}table.page-table tbody tr:hover{background-color:#eeee}table.page-table tbody tr{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr:nth-child(odd){background-color:#f6f7f7}table.popups-table{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid{width:100px}table.popups-table th.checkbox{width:50px;text-align:center}table.popups-table th.setting{width:100px;text-align:center}table.popups-table thead{color:#eee}table.popups-table thead tr{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th{padding:10px 16px}table.popups-table tbody tr{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th{font-size:12px;padding:16px;vertical-align:top}.body{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header{width:100%}header.header-desktop{display:block}header.header-mobile{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg{width:100%;height:100%}header.header-mobile button svg path{fill:#fff}nav.sidebar{position:fixed;inset:0;z-index:101}nav.sidebar .bg{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active{color:#fff}nav.sidebar .container .children{padding-left:30px}@-moz-keyframes tada{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active{animation:dialogEnter .3s linear forwards}.dialog-leave-active{animation:dialogLeave .3s linear forwards}@keyframes dialogEnter{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active{animation:dialogEnter .2s linear forwards}.dialog1-leave-active{animation:dialogLeave .2s linear forwards}@keyframes rotateEnter{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active{animation:rotateEnter .7s;position:relative}.rotate-leave-active{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active{animation:slideOutTop .5s linear forwards}.slide-top-leave-active,.slide-bottom-enter-active{animation:slideOutBottom .5s linear forwards}@keyframes slideInLeft{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active{animation:slideInLeft .3s linear forwards}.slide-left-leave-active{animation:slideInRight .3s linear forwards}@keyframes slideOutLeft{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active{animation:slideOutLeft .3s linear forwards}.slide-right-leave-active{animation:slideOutRight .3s linear forwards}@keyframes bganimation{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart{0%{height:0}to{height:100px}}@keyframes fadeEnd{0%{height:100%}to{height:0}}.fade-enter-active{animation:fadeStart .1s linear forwards;overflow:hidden}.fade-leave-active{animation:fadeEnd .1s linear forwards;overflow:hidden}*{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}*{font-style:normal;font-family:PingFangSC-Regular,PingFang SC,Helvetica Neue,Helvetica,Arial,sans-serif}html,body,ul,p{margin:0;padding:0}html,body{width:100%;height:100%;position:relative;-webkit-overflow-scrolling:touch;overflow:hidden}a{cursor:pointer;text-decoration:none;outline:none}i{font-style:normal}img{object-fit:cover}img:not([src]){opacity:0}img:not([src]):not([srcset]){visibility:hidden}li{list-style:none}input,button{outline:none;cursor:pointer;border:none}.auto{flex:auto}body{font-size:100%;font-weight:500;font-style:normal;-webkit-font-smoothing:antialiased;-webkit-text-stroke-width:0;-moz-osx-font-smoothing:grayscale}body,html{background-color:#1e1e1e}body.modal-overlay-active div#modal_overlay{opacity:1;display:block}div#modal_overlay{position:fixed;z-index:9999;inset:0;background:rgba(0,0,0,.5);opacity:0;display:none}div#modal_overlay .modal{border-radius:6px;background:#fff;padding:1.875rem;max-width:90%;margin:0 auto;margin-top:3rem;width:720px}div#modal_overlay .modal h4{display:block;width:100%;text-align:center;font-size:1.6em;margin:0;padding:0}div#modal_overlay .modal .alert-message.warning{display:block;width:100%;text-align:center;font-size:1em;margin:2rem 0}div#modal_overlay .modal .right{text-align:right;margin-left:auto}div#modal_overlay .modal .right .btn.primary{width:100%;height:36px;line-height:36px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px;text-align:center;cursor:pointer}div#modal_overlay .modal .right .btn.primary:hover{opacity:.9}progress{width:300px;margin-right:10px;display:block;position:relative;border-radius:4px;height:12px;line-height:12px;cursor:pointer;overflow:hidden;background-color:#eee;color:#53c31b;border-radius:.1rem;transition:.3s}progress::-webkit-progress-bar{background-color:#eee;border-radius:.2rem}progress::-webkit-progress-value{background:rgb(83,195,27);border-radius:.2rem;transition:.3s}.dialog-footer{position:relative;height:30px}.dialog-footer>div{position:absolute;right:0}.dialog-footer>div>button{width:90px}.dialog-footer>div>button:first-of-type{background:#fff}.dialog-footer>div>button:last-of-type{margin-left:16px;height:30px;border-radius:4px;background:#0060ff;display:inline-flex;padding:4px 24px;justify-content:center;align-items:center;gap:10px;color:#fff;text-align:center;font-weight:500}#main .app-btn,#actioner .app-btn{display:inline-block}.btn.danger,.cbi-section-remove>.cbi-button,.cbi-button-remove,.cbi-button-reset,.cbi-button-negative,.cbi-button[value=Stop],.cbi-button[value=Kill],.cbi-button[onclick="reboot(this)"],.cbi-button-neutral[value=Restart]{background-color:#fff!important;border:1px solid #0060ff;margin-left:16px;height:30px;border-radius:4px;background:#0060ff;display:inline-flex;padding:4px 24px;justify-content:center;align-items:center;gap:10px;text-align:center;font-weight:500;color:#0060ff}.cbi-page-actions .cbi-button-apply,.cbi-section-actions .cbi-button-edit,.cbi-button-edit,.cbi-button-apply,.cbi-button-reload,.cbi-button-action,.cbi-button[value=Submit],.cbi-button[value=Upload],.cbi-button[value$=Apply],.cbi-button[onclick="addKey(event)"]{background-color:#0060ff;color:#fff;margin-left:16px;height:30px;border-radius:4px;background:#0060ff;display:inline-flex;padding:4px 12px;justify-content:center;align-items:center;gap:10px;text-align:center;font-weight:500}@keyframes turns-70156d34{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-70156d34]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-70156d34]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-70156d34]{color:#f9ad1e}.notice_info li[data-v-70156d34]{font-size:14px;list-style:revert}.text-container[data-v-70156d34]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-70156d34]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-70156d34]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-70156d34]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-70156d34]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-70156d34]{width:100%}.text-container .text-container_item p.info-desc[data-v-70156d34]{width:100%;color:#999;font-size:14px}.page-container[data-v-70156d34]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-70156d34]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-70156d34]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-70156d34]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-70156d34],.page-container .page-flex .page-sidebar a[data-v-70156d34]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-70156d34]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-70156d34]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-70156d34]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-70156d34]{border-radius:0;padding:1rem}ul.ul-container[data-v-70156d34]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-70156d34]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-70156d34]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-70156d34]{width:100%}form.form-container[data-v-70156d34]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-70156d34]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-70156d34]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-70156d34]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-70156d34]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-70156d34],form.form-container .label-value select[data-v-70156d34]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-70156d34]:focus,form.form-container .label-value select[data-v-70156d34]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-70156d34]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-70156d34]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-70156d34],form.form-container .label-value input[type=radio][data-v-70156d34]{width:auto}form.form-container .label-value input[type=radio][data-v-70156d34]{margin:0 4px 0 0}form.form-container .label-value input[data-v-70156d34]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-70156d34]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-70156d34]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-70156d34]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-70156d34]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-70156d34]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-70156d34]:hover{background-color:#747474}form.form-container .label-msg[data-v-70156d34]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-70156d34]{color:#f9ad1e}form.form-container .label-flex[data-v-70156d34]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-70156d34]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-70156d34]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-70156d34]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-70156d34]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-70156d34]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-70156d34]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-70156d34],form.form-container1 .label-value select[data-v-70156d34]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-70156d34]:focus,form.form-container1 .label-value select[data-v-70156d34]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-70156d34]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-70156d34],form.form-container1 .label-value input[type=radio][data-v-70156d34]{width:auto}form.form-container1 .label-value input[type=radio][data-v-70156d34]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-70156d34]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-70156d34]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-70156d34]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-70156d34]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-70156d34]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-70156d34]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-70156d34]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-70156d34]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-70156d34]{color:#f9ad1e}form.form-container1 .label-flex[data-v-70156d34]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-70156d34]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-70156d34]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-70156d34]{width:100px}table.page-table th.checkbox[data-v-70156d34]{width:50px;text-align:center}table.page-table th.setting[data-v-70156d34]{width:100px;text-align:center}table.page-table thead[data-v-70156d34]{color:#909399}table.page-table thead tr[data-v-70156d34]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-70156d34]{padding:10px 16px}table.page-table tbody tr[data-v-70156d34]:hover{background-color:#eeee}table.page-table tbody tr[data-v-70156d34]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-70156d34]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-70156d34]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-70156d34]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-70156d34]{width:100px}table.popups-table th.checkbox[data-v-70156d34]{width:50px;text-align:center}table.popups-table th.setting[data-v-70156d34]{width:100px;text-align:center}table.popups-table thead[data-v-70156d34]{color:#eee}table.popups-table thead tr[data-v-70156d34]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-70156d34]{padding:10px 16px}table.popups-table tbody tr[data-v-70156d34]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-70156d34]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-70156d34]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-70156d34]{width:100%}header.header-desktop[data-v-70156d34]{display:block}header.header-mobile[data-v-70156d34]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-70156d34]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-70156d34]{width:100%;height:100%}header.header-mobile button svg path[data-v-70156d34]{fill:#fff}nav.sidebar[data-v-70156d34]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-70156d34]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-70156d34]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-70156d34]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-70156d34]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-70156d34]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-70156d34]{color:#fff}nav.sidebar .container .children[data-v-70156d34]{padding-left:30px}@-moz-keyframes tada-70156d34{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-70156d34{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-70156d34{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-70156d34{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-70156d34]{animation:dialogEnter-70156d34 .3s linear forwards}.dialog-leave-active[data-v-70156d34]{animation:dialogLeave-70156d34 .3s linear forwards}@keyframes dialogEnter-70156d34{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-70156d34{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-70156d34]{animation:dialogEnter-70156d34 .2s linear forwards}.dialog1-leave-active[data-v-70156d34]{animation:dialogLeave-70156d34 .2s linear forwards}@keyframes rotateEnter-70156d34{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-70156d34]{animation:rotateEnter-70156d34 .7s;position:relative}.rotate-leave-active[data-v-70156d34]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-70156d34{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-70156d34{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-70156d34]{animation:slideOutTop-70156d34 .5s linear forwards}.slide-top-leave-active[data-v-70156d34],.slide-bottom-enter-active[data-v-70156d34]{animation:slideOutBottom-70156d34 .5s linear forwards}@keyframes slideInLeft-70156d34{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-70156d34{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-70156d34]{animation:slideInLeft-70156d34 .3s linear forwards}.slide-left-leave-active[data-v-70156d34]{animation:slideInRight-70156d34 .3s linear forwards}@keyframes slideOutLeft-70156d34{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-70156d34{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-70156d34]{animation:slideOutLeft-70156d34 .3s linear forwards}.slide-right-leave-active[data-v-70156d34]{animation:slideOutRight-70156d34 .3s linear forwards}@keyframes bganimation-70156d34{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-70156d34{0%{height:0}to{height:100px}}@keyframes fadeEnd-70156d34{0%{height:100%}to{height:0}}.fade-enter-active[data-v-70156d34]{animation:fadeStart-70156d34 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-70156d34]{animation:fadeEnd-70156d34 .1s linear forwards;overflow:hidden}@keyframes turn-70156d34{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}svg.icon[data-v-70156d34]{animation:turn-70156d34 5s linear infinite}@keyframes turns-d6bd3248{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-d6bd3248]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-d6bd3248]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-d6bd3248]{color:#f9ad1e}.notice_info li[data-v-d6bd3248]{font-size:14px;list-style:revert}.text-container[data-v-d6bd3248]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-d6bd3248]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-d6bd3248]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-d6bd3248]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-d6bd3248]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-d6bd3248]{width:100%}.text-container .text-container_item p.info-desc[data-v-d6bd3248]{width:100%;color:#999;font-size:14px}.page-container[data-v-d6bd3248]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-d6bd3248]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-d6bd3248]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-d6bd3248]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-d6bd3248],.page-container .page-flex .page-sidebar a[data-v-d6bd3248]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-d6bd3248]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-d6bd3248]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-d6bd3248]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-d6bd3248]{border-radius:0;padding:1rem}ul.ul-container[data-v-d6bd3248]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-d6bd3248]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-d6bd3248]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-d6bd3248]{width:100%}form.form-container[data-v-d6bd3248]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-d6bd3248]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-d6bd3248]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-d6bd3248]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-d6bd3248]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-d6bd3248],form.form-container .label-value select[data-v-d6bd3248]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-d6bd3248]:focus,form.form-container .label-value select[data-v-d6bd3248]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-d6bd3248]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-d6bd3248]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-d6bd3248],form.form-container .label-value input[type=radio][data-v-d6bd3248]{width:auto}form.form-container .label-value input[type=radio][data-v-d6bd3248]{margin:0 4px 0 0}form.form-container .label-value input[data-v-d6bd3248]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-d6bd3248]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-d6bd3248]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-d6bd3248]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-d6bd3248]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-d6bd3248]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-d6bd3248]:hover{background-color:#747474}form.form-container .label-msg[data-v-d6bd3248]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-d6bd3248]{color:#f9ad1e}form.form-container .label-flex[data-v-d6bd3248]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-d6bd3248]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-d6bd3248]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-d6bd3248]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-d6bd3248]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-d6bd3248]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-d6bd3248]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-d6bd3248],form.form-container1 .label-value select[data-v-d6bd3248]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-d6bd3248]:focus,form.form-container1 .label-value select[data-v-d6bd3248]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-d6bd3248]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-d6bd3248],form.form-container1 .label-value input[type=radio][data-v-d6bd3248]{width:auto}form.form-container1 .label-value input[type=radio][data-v-d6bd3248]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-d6bd3248]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-d6bd3248]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-d6bd3248]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-d6bd3248]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-d6bd3248]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-d6bd3248]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-d6bd3248]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-d6bd3248]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-d6bd3248]{color:#f9ad1e}form.form-container1 .label-flex[data-v-d6bd3248]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-d6bd3248]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-d6bd3248]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-d6bd3248]{width:100px}table.page-table th.checkbox[data-v-d6bd3248]{width:50px;text-align:center}table.page-table th.setting[data-v-d6bd3248]{width:100px;text-align:center}table.page-table thead[data-v-d6bd3248]{color:#909399}table.page-table thead tr[data-v-d6bd3248]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-d6bd3248]{padding:10px 16px}table.page-table tbody tr[data-v-d6bd3248]:hover{background-color:#eeee}table.page-table tbody tr[data-v-d6bd3248]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-d6bd3248]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-d6bd3248]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-d6bd3248]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-d6bd3248]{width:100px}table.popups-table th.checkbox[data-v-d6bd3248]{width:50px;text-align:center}table.popups-table th.setting[data-v-d6bd3248]{width:100px;text-align:center}table.popups-table thead[data-v-d6bd3248]{color:#eee}table.popups-table thead tr[data-v-d6bd3248]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-d6bd3248]{padding:10px 16px}table.popups-table tbody tr[data-v-d6bd3248]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-d6bd3248]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-d6bd3248]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-d6bd3248]{width:100%}header.header-desktop[data-v-d6bd3248]{display:block}header.header-mobile[data-v-d6bd3248]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-d6bd3248]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-d6bd3248]{width:100%;height:100%}header.header-mobile button svg path[data-v-d6bd3248]{fill:#fff}nav.sidebar[data-v-d6bd3248]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-d6bd3248]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-d6bd3248]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-d6bd3248]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-d6bd3248]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-d6bd3248]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-d6bd3248]{color:#fff}nav.sidebar .container .children[data-v-d6bd3248]{padding-left:30px}@-moz-keyframes tada-d6bd3248{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-d6bd3248{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-d6bd3248{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-d6bd3248{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-d6bd3248]{animation:dialogEnter-d6bd3248 .3s linear forwards}.dialog-leave-active[data-v-d6bd3248]{animation:dialogLeave-d6bd3248 .3s linear forwards}@keyframes dialogEnter-d6bd3248{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-d6bd3248{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-d6bd3248]{animation:dialogEnter-d6bd3248 .2s linear forwards}.dialog1-leave-active[data-v-d6bd3248]{animation:dialogLeave-d6bd3248 .2s linear forwards}@keyframes rotateEnter-d6bd3248{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-d6bd3248]{animation:rotateEnter-d6bd3248 .7s;position:relative}.rotate-leave-active[data-v-d6bd3248]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-d6bd3248{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-d6bd3248{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-d6bd3248]{animation:slideOutTop-d6bd3248 .5s linear forwards}.slide-top-leave-active[data-v-d6bd3248],.slide-bottom-enter-active[data-v-d6bd3248]{animation:slideOutBottom-d6bd3248 .5s linear forwards}@keyframes slideInLeft-d6bd3248{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-d6bd3248{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-d6bd3248]{animation:slideInLeft-d6bd3248 .3s linear forwards}.slide-left-leave-active[data-v-d6bd3248]{animation:slideInRight-d6bd3248 .3s linear forwards}@keyframes slideOutLeft-d6bd3248{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-d6bd3248{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-d6bd3248]{animation:slideOutLeft-d6bd3248 .3s linear forwards}.slide-right-leave-active[data-v-d6bd3248]{animation:slideOutRight-d6bd3248 .3s linear forwards}@keyframes bganimation-d6bd3248{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-d6bd3248{0%{height:0}to{height:100px}}@keyframes fadeEnd-d6bd3248{0%{height:100%}to{height:0}}.fade-enter-active[data-v-d6bd3248]{animation:fadeStart-d6bd3248 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-d6bd3248]{animation:fadeEnd-d6bd3248 .1s linear forwards;overflow:hidden}.toips-container[data-v-d6bd3248]{position:fixed;bottom:1rem;right:1rem;transition:1s}.toips-container li.toips-item[data-v-d6bd3248]{width:160px;background:rgba(0,0,0,.5);padding:6px 16px;color:#fff;font-size:14px;text-align:left;border-radius:4px;margin-bottom:.5rem;transition:1s;display:flex;flex-wrap:wrap;cursor:pointer}.toips-container li.toips-item a[data-v-d6bd3248]{display:block;font-size:14px;width:100%;color:#fff}@keyframes turns-ab2441f8{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-ab2441f8]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-ab2441f8]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-ab2441f8]{color:#f9ad1e}.notice_info li[data-v-ab2441f8]{font-size:14px;list-style:revert}.text-container[data-v-ab2441f8]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-ab2441f8]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-ab2441f8]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-ab2441f8]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-ab2441f8]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-ab2441f8]{width:100%}.text-container .text-container_item p.info-desc[data-v-ab2441f8]{width:100%;color:#999;font-size:14px}.page-container[data-v-ab2441f8]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-ab2441f8]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-ab2441f8]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-ab2441f8]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-ab2441f8],.page-container .page-flex .page-sidebar a[data-v-ab2441f8]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-ab2441f8]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-ab2441f8]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-ab2441f8]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-ab2441f8]{border-radius:0;padding:1rem}ul.ul-container[data-v-ab2441f8]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-ab2441f8]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-ab2441f8]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-ab2441f8]{width:100%}form.form-container[data-v-ab2441f8]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-ab2441f8]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-ab2441f8]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-ab2441f8]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-ab2441f8]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-ab2441f8],form.form-container .label-value select[data-v-ab2441f8]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-ab2441f8]:focus,form.form-container .label-value select[data-v-ab2441f8]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-ab2441f8]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-ab2441f8]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-ab2441f8],form.form-container .label-value input[type=radio][data-v-ab2441f8]{width:auto}form.form-container .label-value input[type=radio][data-v-ab2441f8]{margin:0 4px 0 0}form.form-container .label-value input[data-v-ab2441f8]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-ab2441f8]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-ab2441f8]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-ab2441f8]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-ab2441f8]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-ab2441f8]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-ab2441f8]:hover{background-color:#747474}form.form-container .label-msg[data-v-ab2441f8]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-ab2441f8]{color:#f9ad1e}form.form-container .label-flex[data-v-ab2441f8]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-ab2441f8]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-ab2441f8]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-ab2441f8]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-ab2441f8]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-ab2441f8]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-ab2441f8]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-ab2441f8],form.form-container1 .label-value select[data-v-ab2441f8]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-ab2441f8]:focus,form.form-container1 .label-value select[data-v-ab2441f8]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-ab2441f8]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-ab2441f8],form.form-container1 .label-value input[type=radio][data-v-ab2441f8]{width:auto}form.form-container1 .label-value input[type=radio][data-v-ab2441f8]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-ab2441f8]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-ab2441f8]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-ab2441f8]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-ab2441f8]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-ab2441f8]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-ab2441f8]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-ab2441f8]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-ab2441f8]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-ab2441f8]{color:#f9ad1e}form.form-container1 .label-flex[data-v-ab2441f8]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-ab2441f8]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-ab2441f8]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-ab2441f8]{width:100px}table.page-table th.checkbox[data-v-ab2441f8]{width:50px;text-align:center}table.page-table th.setting[data-v-ab2441f8]{width:100px;text-align:center}table.page-table thead[data-v-ab2441f8]{color:#909399}table.page-table thead tr[data-v-ab2441f8]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-ab2441f8]{padding:10px 16px}table.page-table tbody tr[data-v-ab2441f8]:hover{background-color:#eeee}table.page-table tbody tr[data-v-ab2441f8]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-ab2441f8]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-ab2441f8]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-ab2441f8]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-ab2441f8]{width:100px}table.popups-table th.checkbox[data-v-ab2441f8]{width:50px;text-align:center}table.popups-table th.setting[data-v-ab2441f8]{width:100px;text-align:center}table.popups-table thead[data-v-ab2441f8]{color:#eee}table.popups-table thead tr[data-v-ab2441f8]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-ab2441f8]{padding:10px 16px}table.popups-table tbody tr[data-v-ab2441f8]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-ab2441f8]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-ab2441f8]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-ab2441f8]{width:100%}header.header-desktop[data-v-ab2441f8]{display:block}header.header-mobile[data-v-ab2441f8]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-ab2441f8]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-ab2441f8]{width:100%;height:100%}header.header-mobile button svg path[data-v-ab2441f8]{fill:#fff}nav.sidebar[data-v-ab2441f8]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-ab2441f8]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-ab2441f8]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-ab2441f8]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-ab2441f8]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-ab2441f8]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-ab2441f8]{color:#fff}nav.sidebar .container .children[data-v-ab2441f8]{padding-left:30px}@-moz-keyframes tada-ab2441f8{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-ab2441f8{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-ab2441f8{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-ab2441f8{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-ab2441f8]{animation:dialogEnter-ab2441f8 .3s linear forwards}.dialog-leave-active[data-v-ab2441f8]{animation:dialogLeave-ab2441f8 .3s linear forwards}@keyframes dialogEnter-ab2441f8{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-ab2441f8{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-ab2441f8]{animation:dialogEnter-ab2441f8 .2s linear forwards}.dialog1-leave-active[data-v-ab2441f8]{animation:dialogLeave-ab2441f8 .2s linear forwards}@keyframes rotateEnter-ab2441f8{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-ab2441f8]{animation:rotateEnter-ab2441f8 .7s;position:relative}.rotate-leave-active[data-v-ab2441f8]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-ab2441f8{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-ab2441f8{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-ab2441f8]{animation:slideOutTop-ab2441f8 .5s linear forwards}.slide-top-leave-active[data-v-ab2441f8],.slide-bottom-enter-active[data-v-ab2441f8]{animation:slideOutBottom-ab2441f8 .5s linear forwards}@keyframes slideInLeft-ab2441f8{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-ab2441f8{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-ab2441f8]{animation:slideInLeft-ab2441f8 .3s linear forwards}.slide-left-leave-active[data-v-ab2441f8]{animation:slideInRight-ab2441f8 .3s linear forwards}@keyframes slideOutLeft-ab2441f8{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-ab2441f8{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-ab2441f8]{animation:slideOutLeft-ab2441f8 .3s linear forwards}.slide-right-leave-active[data-v-ab2441f8]{animation:slideOutRight-ab2441f8 .3s linear forwards}@keyframes bganimation-ab2441f8{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-ab2441f8{0%{height:0}to{height:100px}}@keyframes fadeEnd-ab2441f8{0%{height:100%}to{height:0}}.fade-enter-active[data-v-ab2441f8]{animation:fadeStart-ab2441f8 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-ab2441f8]{animation:fadeEnd-ab2441f8 .1s linear forwards;overflow:hidden}nav[data-v-ab2441f8]{width:100%;display:flex;flex-wrap:nowrap;align-items:center;height:50px}nav .logo[data-v-ab2441f8]{color:#fff;font-size:26px;font-weight:600;margin-right:10px}nav a.nav-item[data-v-ab2441f8]{color:#e3dfdf;font-size:16px;margin-right:1rem;width:100px;text-align:center}nav a.router-link-active[data-v-ab2441f8],nav a.router-link-exact-active[data-v-ab2441f8]{color:#fff;font-weight:600}nav a.nav-item.ota-upgrade[data-v-ab2441f8]{position:relative}nav a.nav-item.ota-upgrade span[data-v-ab2441f8]{opacity:.7}nav a.nav-item.ota-upgrade em[data-v-ab2441f8]{display:block;position:absolute;top:0;width:5px;height:5px;border-radius:50%;background-color:red;right:5px}nav a.outlogin[data-v-ab2441f8]{display:flex;align-items:center;justify-content:center;padding:5px;opacity:.6}nav a.outlogin[data-v-ab2441f8]:hover{opacity:1}nav a.outlogin[data-v-ab2441f8] svg.icon{width:14px;height:14px}nav a.outlogin[data-v-ab2441f8] svg.icon path{fill:#e3dfdf}@keyframes turns-0003d2de{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-0003d2de]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-0003d2de]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-0003d2de]{color:#f9ad1e}.notice_info li[data-v-0003d2de]{font-size:14px;list-style:revert}.text-container[data-v-0003d2de]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-0003d2de]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-0003d2de]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-0003d2de]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-0003d2de]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-0003d2de]{width:100%}.text-container .text-container_item p.info-desc[data-v-0003d2de]{width:100%;color:#999;font-size:14px}.page-container[data-v-0003d2de]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-0003d2de]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-0003d2de]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-0003d2de]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-0003d2de],.page-container .page-flex .page-sidebar a[data-v-0003d2de]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-0003d2de]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-0003d2de]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-0003d2de]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-0003d2de]{border-radius:0;padding:1rem}ul.ul-container[data-v-0003d2de]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-0003d2de]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-0003d2de]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-0003d2de]{width:100%}form.form-container[data-v-0003d2de]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-0003d2de]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-0003d2de]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-0003d2de]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-0003d2de]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-0003d2de],form.form-container .label-value select[data-v-0003d2de]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-0003d2de]:focus,form.form-container .label-value select[data-v-0003d2de]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-0003d2de]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-0003d2de]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-0003d2de],form.form-container .label-value input[type=radio][data-v-0003d2de]{width:auto}form.form-container .label-value input[type=radio][data-v-0003d2de]{margin:0 4px 0 0}form.form-container .label-value input[data-v-0003d2de]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-0003d2de]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-0003d2de]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-0003d2de]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-0003d2de]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-0003d2de]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-0003d2de]:hover{background-color:#747474}form.form-container .label-msg[data-v-0003d2de]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-0003d2de]{color:#f9ad1e}form.form-container .label-flex[data-v-0003d2de]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-0003d2de]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-0003d2de]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-0003d2de]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-0003d2de]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-0003d2de]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-0003d2de]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-0003d2de],form.form-container1 .label-value select[data-v-0003d2de]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-0003d2de]:focus,form.form-container1 .label-value select[data-v-0003d2de]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-0003d2de]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-0003d2de],form.form-container1 .label-value input[type=radio][data-v-0003d2de]{width:auto}form.form-container1 .label-value input[type=radio][data-v-0003d2de]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-0003d2de]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-0003d2de]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-0003d2de]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-0003d2de]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-0003d2de]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-0003d2de]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-0003d2de]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-0003d2de]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-0003d2de]{color:#f9ad1e}form.form-container1 .label-flex[data-v-0003d2de]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-0003d2de]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-0003d2de]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-0003d2de]{width:100px}table.page-table th.checkbox[data-v-0003d2de]{width:50px;text-align:center}table.page-table th.setting[data-v-0003d2de]{width:100px;text-align:center}table.page-table thead[data-v-0003d2de]{color:#909399}table.page-table thead tr[data-v-0003d2de]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-0003d2de]{padding:10px 16px}table.page-table tbody tr[data-v-0003d2de]:hover{background-color:#eeee}table.page-table tbody tr[data-v-0003d2de]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-0003d2de]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-0003d2de]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-0003d2de]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-0003d2de]{width:100px}table.popups-table th.checkbox[data-v-0003d2de]{width:50px;text-align:center}table.popups-table th.setting[data-v-0003d2de]{width:100px;text-align:center}table.popups-table thead[data-v-0003d2de]{color:#eee}table.popups-table thead tr[data-v-0003d2de]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-0003d2de]{padding:10px 16px}table.popups-table tbody tr[data-v-0003d2de]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-0003d2de]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-0003d2de]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-0003d2de]{width:100%}header.header-desktop[data-v-0003d2de]{display:block}header.header-mobile[data-v-0003d2de]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-0003d2de]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-0003d2de]{width:100%;height:100%}header.header-mobile button svg path[data-v-0003d2de]{fill:#fff}nav.sidebar[data-v-0003d2de]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-0003d2de]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-0003d2de]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-0003d2de]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-0003d2de]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-0003d2de]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-0003d2de]{color:#fff}nav.sidebar .container .children[data-v-0003d2de]{padding-left:30px}@-moz-keyframes tada-0003d2de{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-0003d2de{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-0003d2de{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-0003d2de{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-0003d2de]{animation:dialogEnter-0003d2de .3s linear forwards}.dialog-leave-active[data-v-0003d2de]{animation:dialogLeave-0003d2de .3s linear forwards}@keyframes dialogEnter-0003d2de{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-0003d2de{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-0003d2de]{animation:dialogEnter-0003d2de .2s linear forwards}.dialog1-leave-active[data-v-0003d2de]{animation:dialogLeave-0003d2de .2s linear forwards}@keyframes rotateEnter-0003d2de{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-0003d2de]{animation:rotateEnter-0003d2de .7s;position:relative}.rotate-leave-active[data-v-0003d2de]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-0003d2de{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-0003d2de{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-0003d2de]{animation:slideOutTop-0003d2de .5s linear forwards}.slide-top-leave-active[data-v-0003d2de],.slide-bottom-enter-active[data-v-0003d2de]{animation:slideOutBottom-0003d2de .5s linear forwards}@keyframes slideInLeft-0003d2de{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-0003d2de{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-0003d2de]{animation:slideInLeft-0003d2de .3s linear forwards}.slide-left-leave-active[data-v-0003d2de]{animation:slideInRight-0003d2de .3s linear forwards}@keyframes slideOutLeft-0003d2de{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-0003d2de{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-0003d2de]{animation:slideOutLeft-0003d2de .3s linear forwards}.slide-right-leave-active[data-v-0003d2de]{animation:slideOutRight-0003d2de .3s linear forwards}@keyframes bganimation-0003d2de{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-0003d2de{0%{height:0}to{height:100px}}@keyframes fadeEnd-0003d2de{0%{height:100%}to{height:0}}.fade-enter-active[data-v-0003d2de]{animation:fadeStart-0003d2de .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-0003d2de]{animation:fadeEnd-0003d2de .1s linear forwards;overflow:hidden}.tool[data-v-0003d2de]{width:100%;height:200px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.tool .tool-item[data-v-0003d2de]{width:100px;text-align:center;display:flex;flex-wrap:wrap;justify-content:center;cursor:pointer}.tool .tool-item .tool-item_icon[data-v-0003d2de]{width:80px;height:80px}.tool .tool-item .tool-item_icon svg[data-v-0003d2de]{width:100%;height:100%}.tool .tool-item .tool-item_name[data-v-0003d2de]{margin-top:.5rem;width:100%;text-align:center}.tool .tool-item .tool-item_name span[data-v-0003d2de]{color:#eee;font-size:16px}.tool em[data-v-0003d2de]{flex:auto;position:relative;padding:0 5px;display:inline-block;text-align:center}.tool em span[data-v-0003d2de]{position:absolute;width:100%;left:0;right:0;text-align:center;color:#fff}.tool em span.t[data-v-0003d2de]{top:-30px}.tool em span.b[data-v-0003d2de]{bottom:-30px;font-size:12px}.tool em[data-v-0003d2de]:after{content:"";background-color:#eeee;width:100%;height:1.5px;display:block;margin:0 auto}@keyframes turns-5fdbc26a{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-5fdbc26a]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-5fdbc26a]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-5fdbc26a]{color:#f9ad1e}.notice_info li[data-v-5fdbc26a]{font-size:14px;list-style:revert}.text-container[data-v-5fdbc26a]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-5fdbc26a]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-5fdbc26a]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-5fdbc26a]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-5fdbc26a]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-5fdbc26a]{width:100%}.text-container .text-container_item p.info-desc[data-v-5fdbc26a]{width:100%;color:#999;font-size:14px}.page-container[data-v-5fdbc26a]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-5fdbc26a]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-5fdbc26a]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-5fdbc26a]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-5fdbc26a],.page-container .page-flex .page-sidebar a[data-v-5fdbc26a]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-5fdbc26a]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-5fdbc26a]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-5fdbc26a]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-5fdbc26a]{border-radius:0;padding:1rem}ul.ul-container[data-v-5fdbc26a]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-5fdbc26a]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-5fdbc26a]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-5fdbc26a]{width:100%}form.form-container[data-v-5fdbc26a]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-5fdbc26a]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-5fdbc26a]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-5fdbc26a]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-5fdbc26a]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-5fdbc26a],form.form-container .label-value select[data-v-5fdbc26a]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-5fdbc26a]:focus,form.form-container .label-value select[data-v-5fdbc26a]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-5fdbc26a]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-5fdbc26a]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-5fdbc26a],form.form-container .label-value input[type=radio][data-v-5fdbc26a]{width:auto}form.form-container .label-value input[type=radio][data-v-5fdbc26a]{margin:0 4px 0 0}form.form-container .label-value input[data-v-5fdbc26a]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-5fdbc26a]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-5fdbc26a]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-5fdbc26a]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-5fdbc26a]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-5fdbc26a]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-5fdbc26a]:hover{background-color:#747474}form.form-container .label-msg[data-v-5fdbc26a]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-5fdbc26a]{color:#f9ad1e}form.form-container .label-flex[data-v-5fdbc26a]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-5fdbc26a]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-5fdbc26a]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-5fdbc26a]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-5fdbc26a]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-5fdbc26a]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-5fdbc26a]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-5fdbc26a],form.form-container1 .label-value select[data-v-5fdbc26a]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-5fdbc26a]:focus,form.form-container1 .label-value select[data-v-5fdbc26a]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-5fdbc26a]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-5fdbc26a],form.form-container1 .label-value input[type=radio][data-v-5fdbc26a]{width:auto}form.form-container1 .label-value input[type=radio][data-v-5fdbc26a]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-5fdbc26a]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-5fdbc26a]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-5fdbc26a]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-5fdbc26a]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-5fdbc26a]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-5fdbc26a]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-5fdbc26a]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-5fdbc26a]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-5fdbc26a]{color:#f9ad1e}form.form-container1 .label-flex[data-v-5fdbc26a]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-5fdbc26a]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-5fdbc26a]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-5fdbc26a]{width:100px}table.page-table th.checkbox[data-v-5fdbc26a]{width:50px;text-align:center}table.page-table th.setting[data-v-5fdbc26a]{width:100px;text-align:center}table.page-table thead[data-v-5fdbc26a]{color:#909399}table.page-table thead tr[data-v-5fdbc26a]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-5fdbc26a]{padding:10px 16px}table.page-table tbody tr[data-v-5fdbc26a]:hover{background-color:#eeee}table.page-table tbody tr[data-v-5fdbc26a]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-5fdbc26a]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-5fdbc26a]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-5fdbc26a]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-5fdbc26a]{width:100px}table.popups-table th.checkbox[data-v-5fdbc26a]{width:50px;text-align:center}table.popups-table th.setting[data-v-5fdbc26a]{width:100px;text-align:center}table.popups-table thead[data-v-5fdbc26a]{color:#eee}table.popups-table thead tr[data-v-5fdbc26a]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-5fdbc26a]{padding:10px 16px}table.popups-table tbody tr[data-v-5fdbc26a]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-5fdbc26a]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-5fdbc26a]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-5fdbc26a]{width:100%}header.header-desktop[data-v-5fdbc26a]{display:block}header.header-mobile[data-v-5fdbc26a]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-5fdbc26a]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-5fdbc26a]{width:100%;height:100%}header.header-mobile button svg path[data-v-5fdbc26a]{fill:#fff}nav.sidebar[data-v-5fdbc26a]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-5fdbc26a]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-5fdbc26a]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-5fdbc26a]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-5fdbc26a]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-5fdbc26a]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-5fdbc26a]{color:#fff}nav.sidebar .container .children[data-v-5fdbc26a]{padding-left:30px}@-moz-keyframes tada-5fdbc26a{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-5fdbc26a{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-5fdbc26a{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-5fdbc26a{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-5fdbc26a]{animation:dialogEnter-5fdbc26a .3s linear forwards}.dialog-leave-active[data-v-5fdbc26a]{animation:dialogLeave-5fdbc26a .3s linear forwards}@keyframes dialogEnter-5fdbc26a{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-5fdbc26a{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-5fdbc26a]{animation:dialogEnter-5fdbc26a .2s linear forwards}.dialog1-leave-active[data-v-5fdbc26a]{animation:dialogLeave-5fdbc26a .2s linear forwards}@keyframes rotateEnter-5fdbc26a{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-5fdbc26a]{animation:rotateEnter-5fdbc26a .7s;position:relative}.rotate-leave-active[data-v-5fdbc26a]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-5fdbc26a{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-5fdbc26a{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-5fdbc26a]{animation:slideOutTop-5fdbc26a .5s linear forwards}.slide-top-leave-active[data-v-5fdbc26a],.slide-bottom-enter-active[data-v-5fdbc26a]{animation:slideOutBottom-5fdbc26a .5s linear forwards}@keyframes slideInLeft-5fdbc26a{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-5fdbc26a{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-5fdbc26a]{animation:slideInLeft-5fdbc26a .3s linear forwards}.slide-left-leave-active[data-v-5fdbc26a]{animation:slideInRight-5fdbc26a .3s linear forwards}@keyframes slideOutLeft-5fdbc26a{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-5fdbc26a{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-5fdbc26a]{animation:slideOutLeft-5fdbc26a .3s linear forwards}.slide-right-leave-active[data-v-5fdbc26a]{animation:slideOutRight-5fdbc26a .3s linear forwards}@keyframes bganimation-5fdbc26a{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-5fdbc26a{0%{height:0}to{height:100px}}@keyframes fadeEnd-5fdbc26a{0%{height:100%}to{height:0}}.fade-enter-active[data-v-5fdbc26a]{animation:fadeStart-5fdbc26a .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-5fdbc26a]{animation:fadeEnd-5fdbc26a .1s linear forwards;overflow:hidden}.logo[data-v-5fdbc26a]{color:#fff;font-size:1.5em;font-weight:600;margin-left:10px}@keyframes turns-b888f30a{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-b888f30a]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-b888f30a]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-b888f30a]{color:#f9ad1e}.notice_info li[data-v-b888f30a]{font-size:14px;list-style:revert}.text-container[data-v-b888f30a]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-b888f30a]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-b888f30a]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-b888f30a]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-b888f30a]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-b888f30a]{width:100%}.text-container .text-container_item p.info-desc[data-v-b888f30a]{width:100%;color:#999;font-size:14px}.page-container[data-v-b888f30a]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-b888f30a]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-b888f30a]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-b888f30a]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-b888f30a],.page-container .page-flex .page-sidebar a[data-v-b888f30a]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-b888f30a]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-b888f30a]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-b888f30a]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-b888f30a]{border-radius:0;padding:1rem}ul.ul-container[data-v-b888f30a]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-b888f30a]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-b888f30a]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-b888f30a]{width:100%}form.form-container[data-v-b888f30a]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-b888f30a]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-b888f30a]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-b888f30a]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-b888f30a]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-b888f30a],form.form-container .label-value select[data-v-b888f30a]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-b888f30a]:focus,form.form-container .label-value select[data-v-b888f30a]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-b888f30a]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-b888f30a]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-b888f30a],form.form-container .label-value input[type=radio][data-v-b888f30a]{width:auto}form.form-container .label-value input[type=radio][data-v-b888f30a]{margin:0 4px 0 0}form.form-container .label-value input[data-v-b888f30a]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-b888f30a]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-b888f30a]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-b888f30a]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-b888f30a]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-b888f30a]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-b888f30a]:hover{background-color:#747474}form.form-container .label-msg[data-v-b888f30a]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-b888f30a]{color:#f9ad1e}form.form-container .label-flex[data-v-b888f30a]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-b888f30a]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-b888f30a]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-b888f30a]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-b888f30a]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-b888f30a]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-b888f30a]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-b888f30a],form.form-container1 .label-value select[data-v-b888f30a]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-b888f30a]:focus,form.form-container1 .label-value select[data-v-b888f30a]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-b888f30a]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-b888f30a],form.form-container1 .label-value input[type=radio][data-v-b888f30a]{width:auto}form.form-container1 .label-value input[type=radio][data-v-b888f30a]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-b888f30a]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-b888f30a]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-b888f30a]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-b888f30a]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-b888f30a]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-b888f30a]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-b888f30a]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-b888f30a]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-b888f30a]{color:#f9ad1e}form.form-container1 .label-flex[data-v-b888f30a]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-b888f30a]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-b888f30a]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-b888f30a]{width:100px}table.page-table th.checkbox[data-v-b888f30a]{width:50px;text-align:center}table.page-table th.setting[data-v-b888f30a]{width:100px;text-align:center}table.page-table thead[data-v-b888f30a]{color:#909399}table.page-table thead tr[data-v-b888f30a]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-b888f30a]{padding:10px 16px}table.page-table tbody tr[data-v-b888f30a]:hover{background-color:#eeee}table.page-table tbody tr[data-v-b888f30a]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-b888f30a]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-b888f30a]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-b888f30a]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-b888f30a]{width:100px}table.popups-table th.checkbox[data-v-b888f30a]{width:50px;text-align:center}table.popups-table th.setting[data-v-b888f30a]{width:100px;text-align:center}table.popups-table thead[data-v-b888f30a]{color:#eee}table.popups-table thead tr[data-v-b888f30a]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-b888f30a]{padding:10px 16px}table.popups-table tbody tr[data-v-b888f30a]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-b888f30a]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-b888f30a]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-b888f30a]{width:100%}header.header-desktop[data-v-b888f30a]{display:block}header.header-mobile[data-v-b888f30a]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-b888f30a]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-b888f30a]{width:100%;height:100%}header.header-mobile button svg path[data-v-b888f30a]{fill:#fff}nav.sidebar[data-v-b888f30a]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-b888f30a]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-b888f30a]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-b888f30a]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-b888f30a]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-b888f30a]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-b888f30a]{color:#fff}nav.sidebar .container .children[data-v-b888f30a]{padding-left:30px}@-moz-keyframes tada-b888f30a{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-b888f30a{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-b888f30a{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-b888f30a{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-b888f30a]{animation:dialogEnter-b888f30a .3s linear forwards}.dialog-leave-active[data-v-b888f30a]{animation:dialogLeave-b888f30a .3s linear forwards}@keyframes dialogEnter-b888f30a{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-b888f30a{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-b888f30a]{animation:dialogEnter-b888f30a .2s linear forwards}.dialog1-leave-active[data-v-b888f30a]{animation:dialogLeave-b888f30a .2s linear forwards}@keyframes rotateEnter-b888f30a{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-b888f30a]{animation:rotateEnter-b888f30a .7s;position:relative}.rotate-leave-active[data-v-b888f30a]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-b888f30a{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-b888f30a{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-b888f30a]{animation:slideOutTop-b888f30a .5s linear forwards}.slide-top-leave-active[data-v-b888f30a],.slide-bottom-enter-active[data-v-b888f30a]{animation:slideOutBottom-b888f30a .5s linear forwards}@keyframes slideInLeft-b888f30a{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-b888f30a{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-b888f30a]{animation:slideInLeft-b888f30a .3s linear forwards}.slide-left-leave-active[data-v-b888f30a]{animation:slideInRight-b888f30a .3s linear forwards}@keyframes slideOutLeft-b888f30a{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-b888f30a{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-b888f30a]{animation:slideOutLeft-b888f30a .3s linear forwards}.slide-right-leave-active[data-v-b888f30a]{animation:slideOutRight-b888f30a .3s linear forwards}@keyframes bganimation-b888f30a{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-b888f30a{0%{height:0}to{height:100px}}@keyframes fadeEnd-b888f30a{0%{height:100%}to{height:0}}.fade-enter-active[data-v-b888f30a]{animation:fadeStart-b888f30a .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-b888f30a]{animation:fadeEnd-b888f30a .1s linear forwards;overflow:hidden}.router-loading[data-v-b888f30a]{margin:1rem}.skeleton[data-v-b888f30a]{width:100%;padding:1rem}.skeleton .skeleton-item[data-v-b888f30a]{margin-top:20px;width:100%;height:16px;display:block;background-color:#f2f3f5}.skeleton .skeleton-item[data-v-b888f30a]:first-child{width:40%}.skeleton .skeleton-item[data-v-b888f30a]:last-child{width:70%}@keyframes turns-6a6bc058{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-6a6bc058]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-6a6bc058]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-6a6bc058]{color:#f9ad1e}.notice_info li[data-v-6a6bc058]{font-size:14px;list-style:revert}.text-container[data-v-6a6bc058]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-6a6bc058]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-6a6bc058]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-6a6bc058]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-6a6bc058]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-6a6bc058]{width:100%}.text-container .text-container_item p.info-desc[data-v-6a6bc058]{width:100%;color:#999;font-size:14px}.page-container[data-v-6a6bc058]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-6a6bc058]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-6a6bc058]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-6a6bc058]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-6a6bc058],.page-container .page-flex .page-sidebar a[data-v-6a6bc058]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-6a6bc058]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-6a6bc058]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-6a6bc058]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-6a6bc058]{border-radius:0;padding:1rem}ul.ul-container[data-v-6a6bc058]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-6a6bc058]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-6a6bc058]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-6a6bc058]{width:100%}form.form-container[data-v-6a6bc058]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-6a6bc058]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-6a6bc058]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-6a6bc058]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-6a6bc058]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-6a6bc058],form.form-container .label-value select[data-v-6a6bc058]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-6a6bc058]:focus,form.form-container .label-value select[data-v-6a6bc058]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-6a6bc058]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-6a6bc058]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-6a6bc058],form.form-container .label-value input[type=radio][data-v-6a6bc058]{width:auto}form.form-container .label-value input[type=radio][data-v-6a6bc058]{margin:0 4px 0 0}form.form-container .label-value input[data-v-6a6bc058]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-6a6bc058]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-6a6bc058]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-6a6bc058]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-6a6bc058]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-6a6bc058]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-6a6bc058]:hover{background-color:#747474}form.form-container .label-msg[data-v-6a6bc058]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-6a6bc058]{color:#f9ad1e}form.form-container .label-flex[data-v-6a6bc058]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-6a6bc058]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-6a6bc058]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-6a6bc058]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-6a6bc058]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-6a6bc058]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-6a6bc058]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-6a6bc058],form.form-container1 .label-value select[data-v-6a6bc058]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-6a6bc058]:focus,form.form-container1 .label-value select[data-v-6a6bc058]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-6a6bc058]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-6a6bc058],form.form-container1 .label-value input[type=radio][data-v-6a6bc058]{width:auto}form.form-container1 .label-value input[type=radio][data-v-6a6bc058]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-6a6bc058]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-6a6bc058]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-6a6bc058]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-6a6bc058]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-6a6bc058]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-6a6bc058]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-6a6bc058]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-6a6bc058]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-6a6bc058]{color:#f9ad1e}form.form-container1 .label-flex[data-v-6a6bc058]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-6a6bc058]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-6a6bc058]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-6a6bc058]{width:100px}table.page-table th.checkbox[data-v-6a6bc058]{width:50px;text-align:center}table.page-table th.setting[data-v-6a6bc058]{width:100px;text-align:center}table.page-table thead[data-v-6a6bc058]{color:#909399}table.page-table thead tr[data-v-6a6bc058]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-6a6bc058]{padding:10px 16px}table.page-table tbody tr[data-v-6a6bc058]:hover{background-color:#eeee}table.page-table tbody tr[data-v-6a6bc058]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-6a6bc058]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-6a6bc058]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-6a6bc058]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-6a6bc058]{width:100px}table.popups-table th.checkbox[data-v-6a6bc058]{width:50px;text-align:center}table.popups-table th.setting[data-v-6a6bc058]{width:100px;text-align:center}table.popups-table thead[data-v-6a6bc058]{color:#eee}table.popups-table thead tr[data-v-6a6bc058]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-6a6bc058]{padding:10px 16px}table.popups-table tbody tr[data-v-6a6bc058]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-6a6bc058]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-6a6bc058]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-6a6bc058]{width:100%}header.header-desktop[data-v-6a6bc058]{display:block}header.header-mobile[data-v-6a6bc058]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-6a6bc058]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-6a6bc058]{width:100%;height:100%}header.header-mobile button svg path[data-v-6a6bc058]{fill:#fff}nav.sidebar[data-v-6a6bc058]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-6a6bc058]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-6a6bc058]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-6a6bc058]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-6a6bc058]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-6a6bc058]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-6a6bc058]{color:#fff}nav.sidebar .container .children[data-v-6a6bc058]{padding-left:30px}@-moz-keyframes tada-6a6bc058{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-6a6bc058{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-6a6bc058{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-6a6bc058{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-6a6bc058]{animation:dialogEnter-6a6bc058 .3s linear forwards}.dialog-leave-active[data-v-6a6bc058]{animation:dialogLeave-6a6bc058 .3s linear forwards}@keyframes dialogEnter-6a6bc058{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-6a6bc058{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-6a6bc058]{animation:dialogEnter-6a6bc058 .2s linear forwards}.dialog1-leave-active[data-v-6a6bc058]{animation:dialogLeave-6a6bc058 .2s linear forwards}@keyframes rotateEnter-6a6bc058{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-6a6bc058]{animation:rotateEnter-6a6bc058 .7s;position:relative}.rotate-leave-active[data-v-6a6bc058]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-6a6bc058{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-6a6bc058{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-6a6bc058]{animation:slideOutTop-6a6bc058 .5s linear forwards}.slide-top-leave-active[data-v-6a6bc058],.slide-bottom-enter-active[data-v-6a6bc058]{animation:slideOutBottom-6a6bc058 .5s linear forwards}@keyframes slideInLeft-6a6bc058{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-6a6bc058{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-6a6bc058]{animation:slideInLeft-6a6bc058 .3s linear forwards}.slide-left-leave-active[data-v-6a6bc058]{animation:slideInRight-6a6bc058 .3s linear forwards}@keyframes slideOutLeft-6a6bc058{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-6a6bc058{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-6a6bc058]{animation:slideOutLeft-6a6bc058 .3s linear forwards}.slide-right-leave-active[data-v-6a6bc058]{animation:slideOutRight-6a6bc058 .3s linear forwards}@keyframes bganimation-6a6bc058{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-6a6bc058{0%{height:0}to{height:100px}}@keyframes fadeEnd-6a6bc058{0%{height:100%}to{height:0}}.fade-enter-active[data-v-6a6bc058]{animation:fadeStart-6a6bc058 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-6a6bc058]{animation:fadeEnd-6a6bc058 .1s linear forwards;overflow:hidden}section[data-v-6a6bc058]{width:100%;margin-bottom:1rem;display:block}@keyframes turns-5cb5900e{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-5cb5900e]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-5cb5900e]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-5cb5900e]{color:#f9ad1e}.notice_info li[data-v-5cb5900e]{font-size:14px;list-style:revert}.text-container[data-v-5cb5900e]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-5cb5900e]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-5cb5900e]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-5cb5900e]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-5cb5900e]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-5cb5900e]{width:100%}.text-container .text-container_item p.info-desc[data-v-5cb5900e]{width:100%;color:#999;font-size:14px}.page-container[data-v-5cb5900e]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-5cb5900e]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-5cb5900e]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-5cb5900e]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-5cb5900e],.page-container .page-flex .page-sidebar a[data-v-5cb5900e]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-5cb5900e]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-5cb5900e]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-5cb5900e]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-5cb5900e]{border-radius:0;padding:1rem}ul.ul-container[data-v-5cb5900e]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-5cb5900e]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-5cb5900e]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-5cb5900e]{width:100%}form.form-container[data-v-5cb5900e]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-5cb5900e]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-5cb5900e]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-5cb5900e]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-5cb5900e]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-5cb5900e],form.form-container .label-value select[data-v-5cb5900e]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-5cb5900e]:focus,form.form-container .label-value select[data-v-5cb5900e]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-5cb5900e]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-5cb5900e]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-5cb5900e],form.form-container .label-value input[type=radio][data-v-5cb5900e]{width:auto}form.form-container .label-value input[type=radio][data-v-5cb5900e]{margin:0 4px 0 0}form.form-container .label-value input[data-v-5cb5900e]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-5cb5900e]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-5cb5900e]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-5cb5900e]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-5cb5900e]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-5cb5900e]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-5cb5900e]:hover{background-color:#747474}form.form-container .label-msg[data-v-5cb5900e]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-5cb5900e]{color:#f9ad1e}form.form-container .label-flex[data-v-5cb5900e]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-5cb5900e]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-5cb5900e]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-5cb5900e]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-5cb5900e]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-5cb5900e]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-5cb5900e]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-5cb5900e],form.form-container1 .label-value select[data-v-5cb5900e]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-5cb5900e]:focus,form.form-container1 .label-value select[data-v-5cb5900e]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-5cb5900e]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-5cb5900e],form.form-container1 .label-value input[type=radio][data-v-5cb5900e]{width:auto}form.form-container1 .label-value input[type=radio][data-v-5cb5900e]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-5cb5900e]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-5cb5900e]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-5cb5900e]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-5cb5900e]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-5cb5900e]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-5cb5900e]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-5cb5900e]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-5cb5900e]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-5cb5900e]{color:#f9ad1e}form.form-container1 .label-flex[data-v-5cb5900e]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-5cb5900e]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-5cb5900e]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-5cb5900e]{width:100px}table.page-table th.checkbox[data-v-5cb5900e]{width:50px;text-align:center}table.page-table th.setting[data-v-5cb5900e]{width:100px;text-align:center}table.page-table thead[data-v-5cb5900e]{color:#909399}table.page-table thead tr[data-v-5cb5900e]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-5cb5900e]{padding:10px 16px}table.page-table tbody tr[data-v-5cb5900e]:hover{background-color:#eeee}table.page-table tbody tr[data-v-5cb5900e]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-5cb5900e]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-5cb5900e]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-5cb5900e]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-5cb5900e]{width:100px}table.popups-table th.checkbox[data-v-5cb5900e]{width:50px;text-align:center}table.popups-table th.setting[data-v-5cb5900e]{width:100px;text-align:center}table.popups-table thead[data-v-5cb5900e]{color:#eee}table.popups-table thead tr[data-v-5cb5900e]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-5cb5900e]{padding:10px 16px}table.popups-table tbody tr[data-v-5cb5900e]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-5cb5900e]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-5cb5900e]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-5cb5900e]{width:100%}header.header-desktop[data-v-5cb5900e]{display:block}header.header-mobile[data-v-5cb5900e]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-5cb5900e]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-5cb5900e]{width:100%;height:100%}header.header-mobile button svg path[data-v-5cb5900e]{fill:#fff}nav.sidebar[data-v-5cb5900e]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-5cb5900e]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-5cb5900e]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-5cb5900e]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-5cb5900e]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-5cb5900e]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-5cb5900e]{color:#fff}nav.sidebar .container .children[data-v-5cb5900e]{padding-left:30px}@-moz-keyframes tada-5cb5900e{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-5cb5900e{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-5cb5900e{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-5cb5900e{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-5cb5900e]{animation:dialogEnter-5cb5900e .3s linear forwards}.dialog-leave-active[data-v-5cb5900e]{animation:dialogLeave-5cb5900e .3s linear forwards}@keyframes dialogEnter-5cb5900e{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-5cb5900e{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-5cb5900e]{animation:dialogEnter-5cb5900e .2s linear forwards}.dialog1-leave-active[data-v-5cb5900e]{animation:dialogLeave-5cb5900e .2s linear forwards}@keyframes rotateEnter-5cb5900e{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-5cb5900e]{animation:rotateEnter-5cb5900e .7s;position:relative}.rotate-leave-active[data-v-5cb5900e]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-5cb5900e{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-5cb5900e{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-5cb5900e]{animation:slideOutTop-5cb5900e .5s linear forwards}.slide-top-leave-active[data-v-5cb5900e],.slide-bottom-enter-active[data-v-5cb5900e]{animation:slideOutBottom-5cb5900e .5s linear forwards}@keyframes slideInLeft-5cb5900e{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-5cb5900e{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-5cb5900e]{animation:slideInLeft-5cb5900e .3s linear forwards}.slide-left-leave-active[data-v-5cb5900e]{animation:slideInRight-5cb5900e .3s linear forwards}@keyframes slideOutLeft-5cb5900e{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-5cb5900e{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-5cb5900e]{animation:slideOutLeft-5cb5900e .3s linear forwards}.slide-right-leave-active[data-v-5cb5900e]{animation:slideOutRight-5cb5900e .3s linear forwards}@keyframes bganimation-5cb5900e{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-5cb5900e{0%{height:0}to{height:100px}}@keyframes fadeEnd-5cb5900e{0%{height:100%}to{height:0}}.fade-enter-active[data-v-5cb5900e]{animation:fadeStart-5cb5900e .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-5cb5900e]{animation:fadeEnd-5cb5900e .1s linear forwards;overflow:hidden}.section-title[data-v-5cb5900e]{margin-bottom:1rem;color:#fff;font-weight:bolder;font-size:1.125rem}@keyframes turns-790a0322{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-790a0322]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-790a0322]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-790a0322]{color:#f9ad1e}.notice_info li[data-v-790a0322]{font-size:14px;list-style:revert}.text-container[data-v-790a0322]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-790a0322]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-790a0322]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-790a0322]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-790a0322]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-790a0322]{width:100%}.text-container .text-container_item p.info-desc[data-v-790a0322]{width:100%;color:#999;font-size:14px}.page-container[data-v-790a0322]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-790a0322]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-790a0322]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-790a0322]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-790a0322],.page-container .page-flex .page-sidebar a[data-v-790a0322]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-790a0322]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-790a0322]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-790a0322]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-790a0322]{border-radius:0;padding:1rem}ul.ul-container[data-v-790a0322]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-790a0322]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-790a0322]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-790a0322]{width:100%}form.form-container[data-v-790a0322]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-790a0322]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-790a0322]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-790a0322]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-790a0322]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-790a0322],form.form-container .label-value select[data-v-790a0322]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-790a0322]:focus,form.form-container .label-value select[data-v-790a0322]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-790a0322]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-790a0322]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-790a0322],form.form-container .label-value input[type=radio][data-v-790a0322]{width:auto}form.form-container .label-value input[type=radio][data-v-790a0322]{margin:0 4px 0 0}form.form-container .label-value input[data-v-790a0322]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-790a0322]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-790a0322]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-790a0322]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-790a0322]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-790a0322]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-790a0322]:hover{background-color:#747474}form.form-container .label-msg[data-v-790a0322]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-790a0322]{color:#f9ad1e}form.form-container .label-flex[data-v-790a0322]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-790a0322]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-790a0322]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-790a0322]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-790a0322]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-790a0322]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-790a0322]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-790a0322],form.form-container1 .label-value select[data-v-790a0322]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-790a0322]:focus,form.form-container1 .label-value select[data-v-790a0322]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-790a0322]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-790a0322],form.form-container1 .label-value input[type=radio][data-v-790a0322]{width:auto}form.form-container1 .label-value input[type=radio][data-v-790a0322]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-790a0322]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-790a0322]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-790a0322]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-790a0322]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-790a0322]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-790a0322]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-790a0322]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-790a0322]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-790a0322]{color:#f9ad1e}form.form-container1 .label-flex[data-v-790a0322]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-790a0322]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-790a0322]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-790a0322]{width:100px}table.page-table th.checkbox[data-v-790a0322]{width:50px;text-align:center}table.page-table th.setting[data-v-790a0322]{width:100px;text-align:center}table.page-table thead[data-v-790a0322]{color:#909399}table.page-table thead tr[data-v-790a0322]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-790a0322]{padding:10px 16px}table.page-table tbody tr[data-v-790a0322]:hover{background-color:#eeee}table.page-table tbody tr[data-v-790a0322]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-790a0322]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-790a0322]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-790a0322]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-790a0322]{width:100px}table.popups-table th.checkbox[data-v-790a0322]{width:50px;text-align:center}table.popups-table th.setting[data-v-790a0322]{width:100px;text-align:center}table.popups-table thead[data-v-790a0322]{color:#eee}table.popups-table thead tr[data-v-790a0322]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-790a0322]{padding:10px 16px}table.popups-table tbody tr[data-v-790a0322]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-790a0322]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-790a0322]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-790a0322]{width:100%}header.header-desktop[data-v-790a0322]{display:block}header.header-mobile[data-v-790a0322]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-790a0322]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-790a0322]{width:100%;height:100%}header.header-mobile button svg path[data-v-790a0322]{fill:#fff}nav.sidebar[data-v-790a0322]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-790a0322]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-790a0322]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-790a0322]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-790a0322]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-790a0322]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-790a0322]{color:#fff}nav.sidebar .container .children[data-v-790a0322]{padding-left:30px}@-moz-keyframes tada-790a0322{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-790a0322{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-790a0322{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-790a0322{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-790a0322]{animation:dialogEnter-790a0322 .3s linear forwards}.dialog-leave-active[data-v-790a0322]{animation:dialogLeave-790a0322 .3s linear forwards}@keyframes dialogEnter-790a0322{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-790a0322{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-790a0322]{animation:dialogEnter-790a0322 .2s linear forwards}.dialog1-leave-active[data-v-790a0322]{animation:dialogLeave-790a0322 .2s linear forwards}@keyframes rotateEnter-790a0322{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-790a0322]{animation:rotateEnter-790a0322 .7s;position:relative}.rotate-leave-active[data-v-790a0322]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-790a0322{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-790a0322{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-790a0322]{animation:slideOutTop-790a0322 .5s linear forwards}.slide-top-leave-active[data-v-790a0322],.slide-bottom-enter-active[data-v-790a0322]{animation:slideOutBottom-790a0322 .5s linear forwards}@keyframes slideInLeft-790a0322{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-790a0322{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-790a0322]{animation:slideInLeft-790a0322 .3s linear forwards}.slide-left-leave-active[data-v-790a0322]{animation:slideInRight-790a0322 .3s linear forwards}@keyframes slideOutLeft-790a0322{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-790a0322{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-790a0322]{animation:slideOutLeft-790a0322 .3s linear forwards}.slide-right-leave-active[data-v-790a0322]{animation:slideOutRight-790a0322 .3s linear forwards}@keyframes bganimation-790a0322{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-790a0322{0%{height:0}to{height:100px}}@keyframes fadeEnd-790a0322{0%{height:100%}to{height:0}}.fade-enter-active[data-v-790a0322]{animation:fadeStart-790a0322 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-790a0322]{animation:fadeEnd-790a0322 .1s linear forwards;overflow:hidden}.section-container[data-v-790a0322]{display:grid;width:100%;grid-gap:1rem;grid-template-columns:repeat(auto-fill,minmax(50%,1fr))}@keyframes turns-abe9a852{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-abe9a852]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-abe9a852]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-abe9a852]{color:#f9ad1e}.notice_info li[data-v-abe9a852]{font-size:14px;list-style:revert}.text-container[data-v-abe9a852]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-abe9a852]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-abe9a852]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-abe9a852]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-abe9a852]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-abe9a852]{width:100%}.text-container .text-container_item p.info-desc[data-v-abe9a852]{width:100%;color:#999;font-size:14px}.page-container[data-v-abe9a852]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-abe9a852]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-abe9a852]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-abe9a852]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-abe9a852],.page-container .page-flex .page-sidebar a[data-v-abe9a852]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-abe9a852]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-abe9a852]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-abe9a852]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-abe9a852]{border-radius:0;padding:1rem}ul.ul-container[data-v-abe9a852]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-abe9a852]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-abe9a852]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-abe9a852]{width:100%}form.form-container[data-v-abe9a852]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-abe9a852]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-abe9a852]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-abe9a852]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-abe9a852]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-abe9a852],form.form-container .label-value select[data-v-abe9a852]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-abe9a852]:focus,form.form-container .label-value select[data-v-abe9a852]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-abe9a852]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-abe9a852]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-abe9a852],form.form-container .label-value input[type=radio][data-v-abe9a852]{width:auto}form.form-container .label-value input[type=radio][data-v-abe9a852]{margin:0 4px 0 0}form.form-container .label-value input[data-v-abe9a852]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-abe9a852]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-abe9a852]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-abe9a852]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-abe9a852]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-abe9a852]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-abe9a852]:hover{background-color:#747474}form.form-container .label-msg[data-v-abe9a852]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-abe9a852]{color:#f9ad1e}form.form-container .label-flex[data-v-abe9a852]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-abe9a852]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-abe9a852]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-abe9a852]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-abe9a852]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-abe9a852]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-abe9a852]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-abe9a852],form.form-container1 .label-value select[data-v-abe9a852]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-abe9a852]:focus,form.form-container1 .label-value select[data-v-abe9a852]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-abe9a852]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-abe9a852],form.form-container1 .label-value input[type=radio][data-v-abe9a852]{width:auto}form.form-container1 .label-value input[type=radio][data-v-abe9a852]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-abe9a852]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-abe9a852]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-abe9a852]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-abe9a852]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-abe9a852]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-abe9a852]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-abe9a852]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-abe9a852]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-abe9a852]{color:#f9ad1e}form.form-container1 .label-flex[data-v-abe9a852]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-abe9a852]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-abe9a852]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-abe9a852]{width:100px}table.page-table th.checkbox[data-v-abe9a852]{width:50px;text-align:center}table.page-table th.setting[data-v-abe9a852]{width:100px;text-align:center}table.page-table thead[data-v-abe9a852]{color:#909399}table.page-table thead tr[data-v-abe9a852]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-abe9a852]{padding:10px 16px}table.page-table tbody tr[data-v-abe9a852]:hover{background-color:#eeee}table.page-table tbody tr[data-v-abe9a852]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-abe9a852]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-abe9a852]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-abe9a852]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-abe9a852]{width:100px}table.popups-table th.checkbox[data-v-abe9a852]{width:50px;text-align:center}table.popups-table th.setting[data-v-abe9a852]{width:100px;text-align:center}table.popups-table thead[data-v-abe9a852]{color:#eee}table.popups-table thead tr[data-v-abe9a852]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-abe9a852]{padding:10px 16px}table.popups-table tbody tr[data-v-abe9a852]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-abe9a852]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-abe9a852]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-abe9a852]{width:100%}header.header-desktop[data-v-abe9a852]{display:block}header.header-mobile[data-v-abe9a852]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-abe9a852]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-abe9a852]{width:100%;height:100%}header.header-mobile button svg path[data-v-abe9a852]{fill:#fff}nav.sidebar[data-v-abe9a852]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-abe9a852]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-abe9a852]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-abe9a852]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-abe9a852]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-abe9a852]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-abe9a852]{color:#fff}nav.sidebar .container .children[data-v-abe9a852]{padding-left:30px}@-moz-keyframes tada-abe9a852{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-abe9a852{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-abe9a852{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-abe9a852{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-abe9a852]{animation:dialogEnter-abe9a852 .3s linear forwards}.dialog-leave-active[data-v-abe9a852]{animation:dialogLeave-abe9a852 .3s linear forwards}@keyframes dialogEnter-abe9a852{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-abe9a852{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-abe9a852]{animation:dialogEnter-abe9a852 .2s linear forwards}.dialog1-leave-active[data-v-abe9a852]{animation:dialogLeave-abe9a852 .2s linear forwards}@keyframes rotateEnter-abe9a852{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-abe9a852]{animation:rotateEnter-abe9a852 .7s;position:relative}.rotate-leave-active[data-v-abe9a852]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-abe9a852{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-abe9a852{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-abe9a852]{animation:slideOutTop-abe9a852 .5s linear forwards}.slide-top-leave-active[data-v-abe9a852],.slide-bottom-enter-active[data-v-abe9a852]{animation:slideOutBottom-abe9a852 .5s linear forwards}@keyframes slideInLeft-abe9a852{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-abe9a852{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-abe9a852]{animation:slideInLeft-abe9a852 .3s linear forwards}.slide-left-leave-active[data-v-abe9a852]{animation:slideInRight-abe9a852 .3s linear forwards}@keyframes slideOutLeft-abe9a852{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-abe9a852{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-abe9a852]{animation:slideOutLeft-abe9a852 .3s linear forwards}.slide-right-leave-active[data-v-abe9a852]{animation:slideOutRight-abe9a852 .3s linear forwards}@keyframes bganimation-abe9a852{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-abe9a852{0%{height:0}to{height:100px}}@keyframes fadeEnd-abe9a852{0%{height:100%}to{height:0}}.fade-enter-active[data-v-abe9a852]{animation:fadeStart-abe9a852 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-abe9a852]{animation:fadeEnd-abe9a852 .1s linear forwards;overflow:hidden}.section-item[data-v-abe9a852]{position:relative}.section-item[data-v-abe9a852]:hover{transition:.3s;box-shadow:0 0 17px #0003}.section-item[data-v-abe9a852]:before{content:"";background:hsla(217,5%,48%,.35);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-radius:.5rem;height:100%;overflow:hidden;position:absolute;width:100%;z-index:0;inset:0;z-index:-1}@keyframes turns-0af2e383{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-0af2e383]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-0af2e383]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-0af2e383]{color:#f9ad1e}.notice_info li[data-v-0af2e383]{font-size:14px;list-style:revert}.text-container[data-v-0af2e383]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-0af2e383]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-0af2e383]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-0af2e383]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-0af2e383]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-0af2e383]{width:100%}.text-container .text-container_item p.info-desc[data-v-0af2e383]{width:100%;color:#999;font-size:14px}.page-container[data-v-0af2e383]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-0af2e383]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-0af2e383]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-0af2e383]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-0af2e383],.page-container .page-flex .page-sidebar a[data-v-0af2e383]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-0af2e383]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-0af2e383]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-0af2e383]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-0af2e383]{border-radius:0;padding:1rem}ul.ul-container[data-v-0af2e383]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-0af2e383]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-0af2e383]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-0af2e383]{width:100%}form.form-container[data-v-0af2e383]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-0af2e383]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-0af2e383]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-0af2e383]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-0af2e383]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-0af2e383],form.form-container .label-value select[data-v-0af2e383]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-0af2e383]:focus,form.form-container .label-value select[data-v-0af2e383]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-0af2e383]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-0af2e383]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-0af2e383],form.form-container .label-value input[type=radio][data-v-0af2e383]{width:auto}form.form-container .label-value input[type=radio][data-v-0af2e383]{margin:0 4px 0 0}form.form-container .label-value input[data-v-0af2e383]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-0af2e383]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-0af2e383]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-0af2e383]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-0af2e383]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-0af2e383]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-0af2e383]:hover{background-color:#747474}form.form-container .label-msg[data-v-0af2e383]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-0af2e383]{color:#f9ad1e}form.form-container .label-flex[data-v-0af2e383]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-0af2e383]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-0af2e383]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-0af2e383]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-0af2e383]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-0af2e383]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-0af2e383]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-0af2e383],form.form-container1 .label-value select[data-v-0af2e383]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-0af2e383]:focus,form.form-container1 .label-value select[data-v-0af2e383]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-0af2e383]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-0af2e383],form.form-container1 .label-value input[type=radio][data-v-0af2e383]{width:auto}form.form-container1 .label-value input[type=radio][data-v-0af2e383]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-0af2e383]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-0af2e383]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-0af2e383]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-0af2e383]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-0af2e383]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-0af2e383]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-0af2e383]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-0af2e383]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-0af2e383]{color:#f9ad1e}form.form-container1 .label-flex[data-v-0af2e383]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-0af2e383]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-0af2e383]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-0af2e383]{width:100px}table.page-table th.checkbox[data-v-0af2e383]{width:50px;text-align:center}table.page-table th.setting[data-v-0af2e383]{width:100px;text-align:center}table.page-table thead[data-v-0af2e383]{color:#909399}table.page-table thead tr[data-v-0af2e383]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-0af2e383]{padding:10px 16px}table.page-table tbody tr[data-v-0af2e383]:hover{background-color:#eeee}table.page-table tbody tr[data-v-0af2e383]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-0af2e383]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-0af2e383]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-0af2e383]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-0af2e383]{width:100px}table.popups-table th.checkbox[data-v-0af2e383]{width:50px;text-align:center}table.popups-table th.setting[data-v-0af2e383]{width:100px;text-align:center}table.popups-table thead[data-v-0af2e383]{color:#eee}table.popups-table thead tr[data-v-0af2e383]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-0af2e383]{padding:10px 16px}table.popups-table tbody tr[data-v-0af2e383]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-0af2e383]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-0af2e383]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-0af2e383]{width:100%}header.header-desktop[data-v-0af2e383]{display:block}header.header-mobile[data-v-0af2e383]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-0af2e383]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-0af2e383]{width:100%;height:100%}header.header-mobile button svg path[data-v-0af2e383]{fill:#fff}nav.sidebar[data-v-0af2e383]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-0af2e383]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-0af2e383]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-0af2e383]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-0af2e383]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-0af2e383]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-0af2e383]{color:#fff}nav.sidebar .container .children[data-v-0af2e383]{padding-left:30px}@-moz-keyframes tada-0af2e383{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-0af2e383{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-0af2e383{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-0af2e383{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-0af2e383]{animation:dialogEnter-0af2e383 .3s linear forwards}.dialog-leave-active[data-v-0af2e383]{animation:dialogLeave-0af2e383 .3s linear forwards}@keyframes dialogEnter-0af2e383{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-0af2e383{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-0af2e383]{animation:dialogEnter-0af2e383 .2s linear forwards}.dialog1-leave-active[data-v-0af2e383]{animation:dialogLeave-0af2e383 .2s linear forwards}@keyframes rotateEnter-0af2e383{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-0af2e383]{animation:rotateEnter-0af2e383 .7s;position:relative}.rotate-leave-active[data-v-0af2e383]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-0af2e383{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-0af2e383{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-0af2e383]{animation:slideOutTop-0af2e383 .5s linear forwards}.slide-top-leave-active[data-v-0af2e383],.slide-bottom-enter-active[data-v-0af2e383]{animation:slideOutBottom-0af2e383 .5s linear forwards}@keyframes slideInLeft-0af2e383{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-0af2e383{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-0af2e383]{animation:slideInLeft-0af2e383 .3s linear forwards}.slide-left-leave-active[data-v-0af2e383]{animation:slideInRight-0af2e383 .3s linear forwards}@keyframes slideOutLeft-0af2e383{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-0af2e383{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-0af2e383]{animation:slideOutLeft-0af2e383 .3s linear forwards}.slide-right-leave-active[data-v-0af2e383]{animation:slideOutRight-0af2e383 .3s linear forwards}@keyframes bganimation-0af2e383{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-0af2e383{0%{height:0}to{height:100px}}@keyframes fadeEnd-0af2e383{0%{height:100%}to{height:0}}.fade-enter-active[data-v-0af2e383]{animation:fadeStart-0af2e383 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-0af2e383]{animation:fadeEnd-0af2e383 .1s linear forwards;overflow:hidden}#app-dialog[data-v-0af2e383]{display:flex;align-items:center;justify-content:center;position:fixed;inset:0;z-index:99}#app-dialog .app-dialog_bg[data-v-0af2e383]{position:fixed;background:rgba(0,0,0,.8);inset:-100%}#app-dialog .app-dialog_container[data-v-0af2e383]{position:relative;max-width:90%!important;background:#fff;border-radius:.5rem;display:flex;flex-direction:column;max-height:calc(100vh - 40px);overflow:auto;transition:all .3s;width:90vw;min-height:152px}#app-dialog .app-dialog_container .app-dialog_header[data-v-0af2e383]{height:56px;padding:0 24px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}#app-dialog .app-dialog_container .app-dialog_header[data-v-0af2e383]:after{content:"";width:100%;border-bottom:1px solid #cfcfcf}#app-dialog .app-dialog_container .app-dialog_header span[data-v-0af2e383]{color:#363636;font-size:1.25rem;line-height:56px;font-weight:600}#app-dialog .app-dialog_container .app-dialog_header button.close[data-v-0af2e383]{margin:0;padding:0;background:none;width:26px;height:26px}#app-dialog .app-dialog_container .app-dialog_header button.close svg.icon[data-v-0af2e383]{width:100%;height:100%}#app-dialog .app-dialog_container .app-dialog_header button.close svg.icon path[data-v-0af2e383]{fill:#363636}#app-dialog .app-dialog_container .app-dialog_body[data-v-0af2e383]{flex-grow:1;flex-shrink:1;overflow-y:auto;overflow-x:hidden;padding:12px 24px;background-color:transparent;border:none;position:relative;min-height:320px}@keyframes turns-24ffa06c{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-24ffa06c]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-24ffa06c]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-24ffa06c]{color:#f9ad1e}.notice_info li[data-v-24ffa06c]{font-size:14px;list-style:revert}.text-container[data-v-24ffa06c]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-24ffa06c]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-24ffa06c]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-24ffa06c]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-24ffa06c]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-24ffa06c]{width:100%}.text-container .text-container_item p.info-desc[data-v-24ffa06c]{width:100%;color:#999;font-size:14px}.page-container[data-v-24ffa06c]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-24ffa06c]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-24ffa06c]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-24ffa06c]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-24ffa06c],.page-container .page-flex .page-sidebar a[data-v-24ffa06c]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-24ffa06c]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-24ffa06c]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-24ffa06c]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-24ffa06c]{border-radius:0;padding:1rem}ul.ul-container[data-v-24ffa06c]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-24ffa06c]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-24ffa06c]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-24ffa06c]{width:100%}form.form-container[data-v-24ffa06c]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-24ffa06c]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-24ffa06c]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-24ffa06c]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-24ffa06c]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-24ffa06c],form.form-container .label-value select[data-v-24ffa06c]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-24ffa06c]:focus,form.form-container .label-value select[data-v-24ffa06c]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-24ffa06c]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-24ffa06c]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-24ffa06c],form.form-container .label-value input[type=radio][data-v-24ffa06c]{width:auto}form.form-container .label-value input[type=radio][data-v-24ffa06c]{margin:0 4px 0 0}form.form-container .label-value input[data-v-24ffa06c]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-24ffa06c]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-24ffa06c]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-24ffa06c]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-24ffa06c]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-24ffa06c]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-24ffa06c]:hover{background-color:#747474}form.form-container .label-msg[data-v-24ffa06c]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-24ffa06c]{color:#f9ad1e}form.form-container .label-flex[data-v-24ffa06c]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-24ffa06c]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-24ffa06c]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-24ffa06c]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-24ffa06c]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-24ffa06c]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-24ffa06c]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-24ffa06c],form.form-container1 .label-value select[data-v-24ffa06c]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-24ffa06c]:focus,form.form-container1 .label-value select[data-v-24ffa06c]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-24ffa06c]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-24ffa06c],form.form-container1 .label-value input[type=radio][data-v-24ffa06c]{width:auto}form.form-container1 .label-value input[type=radio][data-v-24ffa06c]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-24ffa06c]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-24ffa06c]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-24ffa06c]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-24ffa06c]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-24ffa06c]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-24ffa06c]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-24ffa06c]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-24ffa06c]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-24ffa06c]{color:#f9ad1e}form.form-container1 .label-flex[data-v-24ffa06c]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-24ffa06c]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-24ffa06c]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-24ffa06c]{width:100px}table.page-table th.checkbox[data-v-24ffa06c]{width:50px;text-align:center}table.page-table th.setting[data-v-24ffa06c]{width:100px;text-align:center}table.page-table thead[data-v-24ffa06c]{color:#909399}table.page-table thead tr[data-v-24ffa06c]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-24ffa06c]{padding:10px 16px}table.page-table tbody tr[data-v-24ffa06c]:hover{background-color:#eeee}table.page-table tbody tr[data-v-24ffa06c]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-24ffa06c]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-24ffa06c]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-24ffa06c]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-24ffa06c]{width:100px}table.popups-table th.checkbox[data-v-24ffa06c]{width:50px;text-align:center}table.popups-table th.setting[data-v-24ffa06c]{width:100px;text-align:center}table.popups-table thead[data-v-24ffa06c]{color:#eee}table.popups-table thead tr[data-v-24ffa06c]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-24ffa06c]{padding:10px 16px}table.popups-table tbody tr[data-v-24ffa06c]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-24ffa06c]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-24ffa06c]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-24ffa06c]{width:100%}header.header-desktop[data-v-24ffa06c]{display:block}header.header-mobile[data-v-24ffa06c]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-24ffa06c]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-24ffa06c]{width:100%;height:100%}header.header-mobile button svg path[data-v-24ffa06c]{fill:#fff}nav.sidebar[data-v-24ffa06c]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-24ffa06c]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-24ffa06c]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-24ffa06c]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-24ffa06c]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-24ffa06c]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-24ffa06c]{color:#fff}nav.sidebar .container .children[data-v-24ffa06c]{padding-left:30px}@-moz-keyframes tada-24ffa06c{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-24ffa06c{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-24ffa06c{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-24ffa06c{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-24ffa06c]{animation:dialogEnter-24ffa06c .3s linear forwards}.dialog-leave-active[data-v-24ffa06c]{animation:dialogLeave-24ffa06c .3s linear forwards}@keyframes dialogEnter-24ffa06c{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-24ffa06c{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-24ffa06c]{animation:dialogEnter-24ffa06c .2s linear forwards}.dialog1-leave-active[data-v-24ffa06c]{animation:dialogLeave-24ffa06c .2s linear forwards}@keyframes rotateEnter-24ffa06c{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-24ffa06c]{animation:rotateEnter-24ffa06c .7s;position:relative}.rotate-leave-active[data-v-24ffa06c]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-24ffa06c{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-24ffa06c{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-24ffa06c]{animation:slideOutTop-24ffa06c .5s linear forwards}.slide-top-leave-active[data-v-24ffa06c],.slide-bottom-enter-active[data-v-24ffa06c]{animation:slideOutBottom-24ffa06c .5s linear forwards}@keyframes slideInLeft-24ffa06c{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-24ffa06c{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-24ffa06c]{animation:slideInLeft-24ffa06c .3s linear forwards}.slide-left-leave-active[data-v-24ffa06c]{animation:slideInRight-24ffa06c .3s linear forwards}@keyframes slideOutLeft-24ffa06c{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-24ffa06c{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-24ffa06c]{animation:slideOutLeft-24ffa06c .3s linear forwards}.slide-right-leave-active[data-v-24ffa06c]{animation:slideOutRight-24ffa06c .3s linear forwards}@keyframes bganimation-24ffa06c{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-24ffa06c{0%{height:0}to{height:100px}}@keyframes fadeEnd-24ffa06c{0%{height:100%}to{height:0}}.fade-enter-active[data-v-24ffa06c]{animation:fadeStart-24ffa06c .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-24ffa06c]{animation:fadeEnd-24ffa06c .1s linear forwards;overflow:hidden}h1[data-v-24ffa06c]{margin:0;text-align:center;width:100%;font-size:26px;margin:2rem 0;color:#363636}p[data-v-24ffa06c]{width:100%;text-align:center;margin:.5rem 0}button.next[data-v-24ffa06c]{width:300px!important;height:32px!important;margin:1rem 0}@keyframes turns-99d95164{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-99d95164]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-99d95164]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-99d95164]{color:#f9ad1e}.notice_info li[data-v-99d95164]{font-size:14px;list-style:revert}.text-container[data-v-99d95164]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-99d95164]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-99d95164]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-99d95164]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-99d95164]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-99d95164]{width:100%}.text-container .text-container_item p.info-desc[data-v-99d95164]{width:100%;color:#999;font-size:14px}.page-container[data-v-99d95164]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-99d95164]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-99d95164]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-99d95164]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-99d95164],.page-container .page-flex .page-sidebar a[data-v-99d95164]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-99d95164]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-99d95164]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-99d95164]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-99d95164]{border-radius:0;padding:1rem}ul.ul-container[data-v-99d95164]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-99d95164]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-99d95164]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-99d95164]{width:100%}form.form-container[data-v-99d95164]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-99d95164]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-99d95164]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-99d95164]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-99d95164]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-99d95164],form.form-container .label-value select[data-v-99d95164]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-99d95164]:focus,form.form-container .label-value select[data-v-99d95164]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-99d95164]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-99d95164]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-99d95164],form.form-container .label-value input[type=radio][data-v-99d95164]{width:auto}form.form-container .label-value input[type=radio][data-v-99d95164]{margin:0 4px 0 0}form.form-container .label-value input[data-v-99d95164]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-99d95164]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-99d95164]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-99d95164]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-99d95164]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-99d95164]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-99d95164]:hover{background-color:#747474}form.form-container .label-msg[data-v-99d95164]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-99d95164]{color:#f9ad1e}form.form-container .label-flex[data-v-99d95164]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-99d95164]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-99d95164]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-99d95164]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-99d95164]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-99d95164]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-99d95164]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-99d95164],form.form-container1 .label-value select[data-v-99d95164]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-99d95164]:focus,form.form-container1 .label-value select[data-v-99d95164]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-99d95164]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-99d95164],form.form-container1 .label-value input[type=radio][data-v-99d95164]{width:auto}form.form-container1 .label-value input[type=radio][data-v-99d95164]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-99d95164]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-99d95164]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-99d95164]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-99d95164]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-99d95164]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-99d95164]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-99d95164]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-99d95164]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-99d95164]{color:#f9ad1e}form.form-container1 .label-flex[data-v-99d95164]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-99d95164]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-99d95164]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-99d95164]{width:100px}table.page-table th.checkbox[data-v-99d95164]{width:50px;text-align:center}table.page-table th.setting[data-v-99d95164]{width:100px;text-align:center}table.page-table thead[data-v-99d95164]{color:#909399}table.page-table thead tr[data-v-99d95164]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-99d95164]{padding:10px 16px}table.page-table tbody tr[data-v-99d95164]:hover{background-color:#eeee}table.page-table tbody tr[data-v-99d95164]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-99d95164]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-99d95164]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-99d95164]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-99d95164]{width:100px}table.popups-table th.checkbox[data-v-99d95164]{width:50px;text-align:center}table.popups-table th.setting[data-v-99d95164]{width:100px;text-align:center}table.popups-table thead[data-v-99d95164]{color:#eee}table.popups-table thead tr[data-v-99d95164]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-99d95164]{padding:10px 16px}table.popups-table tbody tr[data-v-99d95164]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-99d95164]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-99d95164]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-99d95164]{width:100%}header.header-desktop[data-v-99d95164]{display:block}header.header-mobile[data-v-99d95164]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-99d95164]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-99d95164]{width:100%;height:100%}header.header-mobile button svg path[data-v-99d95164]{fill:#fff}nav.sidebar[data-v-99d95164]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-99d95164]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-99d95164]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-99d95164]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-99d95164]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-99d95164]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-99d95164]{color:#fff}nav.sidebar .container .children[data-v-99d95164]{padding-left:30px}@-moz-keyframes tada-99d95164{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-99d95164{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-99d95164{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-99d95164{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-99d95164]{animation:dialogEnter-99d95164 .3s linear forwards}.dialog-leave-active[data-v-99d95164]{animation:dialogLeave-99d95164 .3s linear forwards}@keyframes dialogEnter-99d95164{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-99d95164{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-99d95164]{animation:dialogEnter-99d95164 .2s linear forwards}.dialog1-leave-active[data-v-99d95164]{animation:dialogLeave-99d95164 .2s linear forwards}@keyframes rotateEnter-99d95164{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-99d95164]{animation:rotateEnter-99d95164 .7s;position:relative}.rotate-leave-active[data-v-99d95164]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-99d95164{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-99d95164{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-99d95164]{animation:slideOutTop-99d95164 .5s linear forwards}.slide-top-leave-active[data-v-99d95164],.slide-bottom-enter-active[data-v-99d95164]{animation:slideOutBottom-99d95164 .5s linear forwards}@keyframes slideInLeft-99d95164{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-99d95164{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-99d95164]{animation:slideInLeft-99d95164 .3s linear forwards}.slide-left-leave-active[data-v-99d95164]{animation:slideInRight-99d95164 .3s linear forwards}@keyframes slideOutLeft-99d95164{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-99d95164{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-99d95164]{animation:slideOutLeft-99d95164 .3s linear forwards}.slide-right-leave-active[data-v-99d95164]{animation:slideOutRight-99d95164 .3s linear forwards}@keyframes bganimation-99d95164{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-99d95164{0%{height:0}to{height:100px}}@keyframes fadeEnd-99d95164{0%{height:100%}to{height:0}}.fade-enter-active[data-v-99d95164]{animation:fadeStart-99d95164 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-99d95164]{animation:fadeEnd-99d95164 .1s linear forwards;overflow:hidden}label input[data-v-99d95164]{margin-right:5px!important}@keyframes turns-7b090953{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-7b090953]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-7b090953]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-7b090953]{color:#f9ad1e}.notice_info li[data-v-7b090953]{font-size:14px;list-style:revert}.text-container[data-v-7b090953]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-7b090953]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-7b090953]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-7b090953]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-7b090953]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-7b090953]{width:100%}.text-container .text-container_item p.info-desc[data-v-7b090953]{width:100%;color:#999;font-size:14px}.page-container[data-v-7b090953]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-7b090953]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-7b090953]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-7b090953]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-7b090953],.page-container .page-flex .page-sidebar a[data-v-7b090953]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-7b090953]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-7b090953]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-7b090953]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-7b090953]{border-radius:0;padding:1rem}ul.ul-container[data-v-7b090953]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-7b090953]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-7b090953]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-7b090953]{width:100%}form.form-container[data-v-7b090953]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-7b090953]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-7b090953]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-7b090953]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-7b090953]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-7b090953],form.form-container .label-value select[data-v-7b090953]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-7b090953]:focus,form.form-container .label-value select[data-v-7b090953]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-7b090953]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-7b090953]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-7b090953],form.form-container .label-value input[type=radio][data-v-7b090953]{width:auto}form.form-container .label-value input[type=radio][data-v-7b090953]{margin:0 4px 0 0}form.form-container .label-value input[data-v-7b090953]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-7b090953]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-7b090953]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-7b090953]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-7b090953]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-7b090953]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-7b090953]:hover{background-color:#747474}form.form-container .label-msg[data-v-7b090953]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-7b090953]{color:#f9ad1e}form.form-container .label-flex[data-v-7b090953]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-7b090953]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-7b090953]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-7b090953]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-7b090953]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-7b090953]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-7b090953]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-7b090953],form.form-container1 .label-value select[data-v-7b090953]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-7b090953]:focus,form.form-container1 .label-value select[data-v-7b090953]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-7b090953]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-7b090953],form.form-container1 .label-value input[type=radio][data-v-7b090953]{width:auto}form.form-container1 .label-value input[type=radio][data-v-7b090953]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-7b090953]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-7b090953]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-7b090953]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-7b090953]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-7b090953]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-7b090953]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-7b090953]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-7b090953]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-7b090953]{color:#f9ad1e}form.form-container1 .label-flex[data-v-7b090953]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-7b090953]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-7b090953]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-7b090953]{width:100px}table.page-table th.checkbox[data-v-7b090953]{width:50px;text-align:center}table.page-table th.setting[data-v-7b090953]{width:100px;text-align:center}table.page-table thead[data-v-7b090953]{color:#909399}table.page-table thead tr[data-v-7b090953]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-7b090953]{padding:10px 16px}table.page-table tbody tr[data-v-7b090953]:hover{background-color:#eeee}table.page-table tbody tr[data-v-7b090953]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-7b090953]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-7b090953]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-7b090953]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-7b090953]{width:100px}table.popups-table th.checkbox[data-v-7b090953]{width:50px;text-align:center}table.popups-table th.setting[data-v-7b090953]{width:100px;text-align:center}table.popups-table thead[data-v-7b090953]{color:#eee}table.popups-table thead tr[data-v-7b090953]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-7b090953]{padding:10px 16px}table.popups-table tbody tr[data-v-7b090953]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-7b090953]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-7b090953]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-7b090953]{width:100%}header.header-desktop[data-v-7b090953]{display:block}header.header-mobile[data-v-7b090953]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-7b090953]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-7b090953]{width:100%;height:100%}header.header-mobile button svg path[data-v-7b090953]{fill:#fff}nav.sidebar[data-v-7b090953]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-7b090953]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-7b090953]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-7b090953]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-7b090953]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-7b090953]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-7b090953]{color:#fff}nav.sidebar .container .children[data-v-7b090953]{padding-left:30px}@-moz-keyframes tada-7b090953{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-7b090953{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-7b090953{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-7b090953{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-7b090953]{animation:dialogEnter-7b090953 .3s linear forwards}.dialog-leave-active[data-v-7b090953]{animation:dialogLeave-7b090953 .3s linear forwards}@keyframes dialogEnter-7b090953{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-7b090953{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-7b090953]{animation:dialogEnter-7b090953 .2s linear forwards}.dialog1-leave-active[data-v-7b090953]{animation:dialogLeave-7b090953 .2s linear forwards}@keyframes rotateEnter-7b090953{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-7b090953]{animation:rotateEnter-7b090953 .7s;position:relative}.rotate-leave-active[data-v-7b090953]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-7b090953{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-7b090953{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-7b090953]{animation:slideOutTop-7b090953 .5s linear forwards}.slide-top-leave-active[data-v-7b090953],.slide-bottom-enter-active[data-v-7b090953]{animation:slideOutBottom-7b090953 .5s linear forwards}@keyframes slideInLeft-7b090953{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-7b090953{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-7b090953]{animation:slideInLeft-7b090953 .3s linear forwards}.slide-left-leave-active[data-v-7b090953]{animation:slideInRight-7b090953 .3s linear forwards}@keyframes slideOutLeft-7b090953{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-7b090953{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-7b090953]{animation:slideOutLeft-7b090953 .3s linear forwards}.slide-right-leave-active[data-v-7b090953]{animation:slideOutRight-7b090953 .3s linear forwards}@keyframes bganimation-7b090953{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-7b090953{0%{height:0}to{height:100px}}@keyframes fadeEnd-7b090953{0%{height:100%}to{height:0}}.fade-enter-active[data-v-7b090953]{animation:fadeStart-7b090953 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-7b090953]{animation:fadeEnd-7b090953 .1s linear forwards;overflow:hidden}input[disabled][data-v-7b090953]{background-color:#eee!important}img[data-v-7b090953]{width:36px;margin:0 .5rem}@keyframes turns-4d855e61{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-4d855e61]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-4d855e61]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-4d855e61]{color:#f9ad1e}.notice_info li[data-v-4d855e61]{font-size:14px;list-style:revert}.text-container[data-v-4d855e61]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-4d855e61]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-4d855e61]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-4d855e61]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-4d855e61]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-4d855e61]{width:100%}.text-container .text-container_item p.info-desc[data-v-4d855e61]{width:100%;color:#999;font-size:14px}.page-container[data-v-4d855e61]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-4d855e61]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-4d855e61]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-4d855e61]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-4d855e61],.page-container .page-flex .page-sidebar a[data-v-4d855e61]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-4d855e61]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-4d855e61]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-4d855e61]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-4d855e61]{border-radius:0;padding:1rem}ul.ul-container[data-v-4d855e61]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-4d855e61]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-4d855e61]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-4d855e61]{width:100%}form.form-container[data-v-4d855e61]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-4d855e61]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-4d855e61]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-4d855e61]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-4d855e61]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-4d855e61],form.form-container .label-value select[data-v-4d855e61]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-4d855e61]:focus,form.form-container .label-value select[data-v-4d855e61]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-4d855e61]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-4d855e61]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-4d855e61],form.form-container .label-value input[type=radio][data-v-4d855e61]{width:auto}form.form-container .label-value input[type=radio][data-v-4d855e61]{margin:0 4px 0 0}form.form-container .label-value input[data-v-4d855e61]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-4d855e61]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-4d855e61]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-4d855e61]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-4d855e61]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-4d855e61]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-4d855e61]:hover{background-color:#747474}form.form-container .label-msg[data-v-4d855e61]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-4d855e61]{color:#f9ad1e}form.form-container .label-flex[data-v-4d855e61]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-4d855e61]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-4d855e61]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-4d855e61]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-4d855e61]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-4d855e61]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-4d855e61]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-4d855e61],form.form-container1 .label-value select[data-v-4d855e61]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-4d855e61]:focus,form.form-container1 .label-value select[data-v-4d855e61]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-4d855e61]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-4d855e61],form.form-container1 .label-value input[type=radio][data-v-4d855e61]{width:auto}form.form-container1 .label-value input[type=radio][data-v-4d855e61]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-4d855e61]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-4d855e61]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-4d855e61]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-4d855e61]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-4d855e61]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-4d855e61]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-4d855e61]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-4d855e61]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-4d855e61]{color:#f9ad1e}form.form-container1 .label-flex[data-v-4d855e61]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-4d855e61]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-4d855e61]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-4d855e61]{width:100px}table.page-table th.checkbox[data-v-4d855e61]{width:50px;text-align:center}table.page-table th.setting[data-v-4d855e61]{width:100px;text-align:center}table.page-table thead[data-v-4d855e61]{color:#909399}table.page-table thead tr[data-v-4d855e61]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-4d855e61]{padding:10px 16px}table.page-table tbody tr[data-v-4d855e61]:hover{background-color:#eeee}table.page-table tbody tr[data-v-4d855e61]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-4d855e61]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-4d855e61]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-4d855e61]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-4d855e61]{width:100px}table.popups-table th.checkbox[data-v-4d855e61]{width:50px;text-align:center}table.popups-table th.setting[data-v-4d855e61]{width:100px;text-align:center}table.popups-table thead[data-v-4d855e61]{color:#eee}table.popups-table thead tr[data-v-4d855e61]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-4d855e61]{padding:10px 16px}table.popups-table tbody tr[data-v-4d855e61]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-4d855e61]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-4d855e61]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-4d855e61]{width:100%}header.header-desktop[data-v-4d855e61]{display:block}header.header-mobile[data-v-4d855e61]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-4d855e61]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-4d855e61]{width:100%;height:100%}header.header-mobile button svg path[data-v-4d855e61]{fill:#fff}nav.sidebar[data-v-4d855e61]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-4d855e61]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-4d855e61]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-4d855e61]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-4d855e61]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-4d855e61]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-4d855e61]{color:#fff}nav.sidebar .container .children[data-v-4d855e61]{padding-left:30px}@-moz-keyframes tada-4d855e61{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-4d855e61{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-4d855e61{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-4d855e61{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-4d855e61]{animation:dialogEnter-4d855e61 .3s linear forwards}.dialog-leave-active[data-v-4d855e61]{animation:dialogLeave-4d855e61 .3s linear forwards}@keyframes dialogEnter-4d855e61{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-4d855e61{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-4d855e61]{animation:dialogEnter-4d855e61 .2s linear forwards}.dialog1-leave-active[data-v-4d855e61]{animation:dialogLeave-4d855e61 .2s linear forwards}@keyframes rotateEnter-4d855e61{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-4d855e61]{animation:rotateEnter-4d855e61 .7s;position:relative}.rotate-leave-active[data-v-4d855e61]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-4d855e61{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-4d855e61{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-4d855e61]{animation:slideOutTop-4d855e61 .5s linear forwards}.slide-top-leave-active[data-v-4d855e61],.slide-bottom-enter-active[data-v-4d855e61]{animation:slideOutBottom-4d855e61 .5s linear forwards}@keyframes slideInLeft-4d855e61{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-4d855e61{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-4d855e61]{animation:slideInLeft-4d855e61 .3s linear forwards}.slide-left-leave-active[data-v-4d855e61]{animation:slideInRight-4d855e61 .3s linear forwards}@keyframes slideOutLeft-4d855e61{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-4d855e61{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-4d855e61]{animation:slideOutLeft-4d855e61 .3s linear forwards}.slide-right-leave-active[data-v-4d855e61]{animation:slideOutRight-4d855e61 .3s linear forwards}@keyframes bganimation-4d855e61{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-4d855e61{0%{height:0}to{height:100px}}@keyframes fadeEnd-4d855e61{0%{height:100%}to{height:0}}.fade-enter-active[data-v-4d855e61]{animation:fadeStart-4d855e61 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-4d855e61]{animation:fadeEnd-4d855e61 .1s linear forwards;overflow:hidden}input[disabled][data-v-4d855e61]{background-color:#eee!important}img[data-v-4d855e61]{width:36px;margin:0 .5rem}@keyframes turns-2b6459ac{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-2b6459ac]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-2b6459ac]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-2b6459ac]{color:#f9ad1e}.notice_info li[data-v-2b6459ac]{font-size:14px;list-style:revert}.text-container[data-v-2b6459ac]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-2b6459ac]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-2b6459ac]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-2b6459ac]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-2b6459ac]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-2b6459ac]{width:100%}.text-container .text-container_item p.info-desc[data-v-2b6459ac]{width:100%;color:#999;font-size:14px}.page-container[data-v-2b6459ac]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-2b6459ac]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-2b6459ac]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-2b6459ac]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-2b6459ac],.page-container .page-flex .page-sidebar a[data-v-2b6459ac]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-2b6459ac]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-2b6459ac]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-2b6459ac]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-2b6459ac]{border-radius:0;padding:1rem}ul.ul-container[data-v-2b6459ac]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-2b6459ac]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-2b6459ac]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-2b6459ac]{width:100%}form.form-container[data-v-2b6459ac]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-2b6459ac]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-2b6459ac]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-2b6459ac]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-2b6459ac]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-2b6459ac],form.form-container .label-value select[data-v-2b6459ac]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-2b6459ac]:focus,form.form-container .label-value select[data-v-2b6459ac]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-2b6459ac]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-2b6459ac]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-2b6459ac],form.form-container .label-value input[type=radio][data-v-2b6459ac]{width:auto}form.form-container .label-value input[type=radio][data-v-2b6459ac]{margin:0 4px 0 0}form.form-container .label-value input[data-v-2b6459ac]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-2b6459ac]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-2b6459ac]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-2b6459ac]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-2b6459ac]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-2b6459ac]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-2b6459ac]:hover{background-color:#747474}form.form-container .label-msg[data-v-2b6459ac]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-2b6459ac]{color:#f9ad1e}form.form-container .label-flex[data-v-2b6459ac]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-2b6459ac]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-2b6459ac]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-2b6459ac]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-2b6459ac]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-2b6459ac]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-2b6459ac]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-2b6459ac],form.form-container1 .label-value select[data-v-2b6459ac]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-2b6459ac]:focus,form.form-container1 .label-value select[data-v-2b6459ac]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-2b6459ac]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-2b6459ac],form.form-container1 .label-value input[type=radio][data-v-2b6459ac]{width:auto}form.form-container1 .label-value input[type=radio][data-v-2b6459ac]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-2b6459ac]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-2b6459ac]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-2b6459ac]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-2b6459ac]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-2b6459ac]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-2b6459ac]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-2b6459ac]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-2b6459ac]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-2b6459ac]{color:#f9ad1e}form.form-container1 .label-flex[data-v-2b6459ac]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-2b6459ac]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-2b6459ac]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-2b6459ac]{width:100px}table.page-table th.checkbox[data-v-2b6459ac]{width:50px;text-align:center}table.page-table th.setting[data-v-2b6459ac]{width:100px;text-align:center}table.page-table thead[data-v-2b6459ac]{color:#909399}table.page-table thead tr[data-v-2b6459ac]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-2b6459ac]{padding:10px 16px}table.page-table tbody tr[data-v-2b6459ac]:hover{background-color:#eeee}table.page-table tbody tr[data-v-2b6459ac]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-2b6459ac]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-2b6459ac]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-2b6459ac]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-2b6459ac]{width:100px}table.popups-table th.checkbox[data-v-2b6459ac]{width:50px;text-align:center}table.popups-table th.setting[data-v-2b6459ac]{width:100px;text-align:center}table.popups-table thead[data-v-2b6459ac]{color:#eee}table.popups-table thead tr[data-v-2b6459ac]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-2b6459ac]{padding:10px 16px}table.popups-table tbody tr[data-v-2b6459ac]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-2b6459ac]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-2b6459ac]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-2b6459ac]{width:100%}header.header-desktop[data-v-2b6459ac]{display:block}header.header-mobile[data-v-2b6459ac]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-2b6459ac]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-2b6459ac]{width:100%;height:100%}header.header-mobile button svg path[data-v-2b6459ac]{fill:#fff}nav.sidebar[data-v-2b6459ac]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-2b6459ac]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-2b6459ac]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-2b6459ac]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-2b6459ac]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-2b6459ac]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-2b6459ac]{color:#fff}nav.sidebar .container .children[data-v-2b6459ac]{padding-left:30px}@-moz-keyframes tada-2b6459ac{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-2b6459ac{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-2b6459ac{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-2b6459ac{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-2b6459ac]{animation:dialogEnter-2b6459ac .3s linear forwards}.dialog-leave-active[data-v-2b6459ac]{animation:dialogLeave-2b6459ac .3s linear forwards}@keyframes dialogEnter-2b6459ac{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-2b6459ac{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-2b6459ac]{animation:dialogEnter-2b6459ac .2s linear forwards}.dialog1-leave-active[data-v-2b6459ac]{animation:dialogLeave-2b6459ac .2s linear forwards}@keyframes rotateEnter-2b6459ac{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-2b6459ac]{animation:rotateEnter-2b6459ac .7s;position:relative}.rotate-leave-active[data-v-2b6459ac]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-2b6459ac{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-2b6459ac{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-2b6459ac]{animation:slideOutTop-2b6459ac .5s linear forwards}.slide-top-leave-active[data-v-2b6459ac],.slide-bottom-enter-active[data-v-2b6459ac]{animation:slideOutBottom-2b6459ac .5s linear forwards}@keyframes slideInLeft-2b6459ac{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-2b6459ac{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-2b6459ac]{animation:slideInLeft-2b6459ac .3s linear forwards}.slide-left-leave-active[data-v-2b6459ac]{animation:slideInRight-2b6459ac .3s linear forwards}@keyframes slideOutLeft-2b6459ac{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-2b6459ac{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-2b6459ac]{animation:slideOutLeft-2b6459ac .3s linear forwards}.slide-right-leave-active[data-v-2b6459ac]{animation:slideOutRight-2b6459ac .3s linear forwards}@keyframes bganimation-2b6459ac{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-2b6459ac{0%{height:0}to{height:100px}}@keyframes fadeEnd-2b6459ac{0%{height:100%}to{height:0}}.fade-enter-active[data-v-2b6459ac]{animation:fadeStart-2b6459ac .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-2b6459ac]{animation:fadeEnd-2b6459ac .1s linear forwards;overflow:hidden}input[disabled][data-v-2b6459ac]{background-color:#eee!important}img[data-v-2b6459ac]{width:36px;margin:0 .5rem}@keyframes dialogEnter-a11bdd32{0%{transform:scale(.95)}to{transform:scale(1)}}@keyframes dialogLeave-a11bdd32{0%{transform:scale(1)}to{transform:scale(.95)}}.dialog-nlaert-enter-active[data-v-a11bdd32]{animation:dialogEnter-a11bdd32 .3s linear forwards}.dialog-nlaert-leave-active[data-v-a11bdd32]{animation:dialogLeave-a11bdd32 .3s linear forwards}@keyframes turns-a11bdd32{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-a11bdd32]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-a11bdd32]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-a11bdd32]{color:#f9ad1e}.notice_info li[data-v-a11bdd32]{font-size:14px;list-style:revert}.text-container[data-v-a11bdd32]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-a11bdd32]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-a11bdd32]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-a11bdd32]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-a11bdd32]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-a11bdd32]{width:100%}.text-container .text-container_item p.info-desc[data-v-a11bdd32]{width:100%;color:#999;font-size:14px}.page-container[data-v-a11bdd32]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-a11bdd32]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-a11bdd32]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-a11bdd32]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-a11bdd32],.page-container .page-flex .page-sidebar a[data-v-a11bdd32]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-a11bdd32]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-a11bdd32]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-a11bdd32]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-a11bdd32]{border-radius:0;padding:1rem}ul.ul-container[data-v-a11bdd32]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-a11bdd32]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-a11bdd32]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-a11bdd32]{width:100%}form.form-container[data-v-a11bdd32]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-a11bdd32]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-a11bdd32]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-a11bdd32]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-a11bdd32]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-a11bdd32],form.form-container .label-value select[data-v-a11bdd32]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-a11bdd32]:focus,form.form-container .label-value select[data-v-a11bdd32]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-a11bdd32]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-a11bdd32]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-a11bdd32],form.form-container .label-value input[type=radio][data-v-a11bdd32]{width:auto}form.form-container .label-value input[type=radio][data-v-a11bdd32]{margin:0 4px 0 0}form.form-container .label-value input[data-v-a11bdd32]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-a11bdd32]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-a11bdd32]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-a11bdd32]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-a11bdd32]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-a11bdd32]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-a11bdd32]:hover{background-color:#747474}form.form-container .label-msg[data-v-a11bdd32]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-a11bdd32]{color:#f9ad1e}form.form-container .label-flex[data-v-a11bdd32]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-a11bdd32]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-a11bdd32]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-a11bdd32]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-a11bdd32]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-a11bdd32]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-a11bdd32]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-a11bdd32],form.form-container1 .label-value select[data-v-a11bdd32]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-a11bdd32]:focus,form.form-container1 .label-value select[data-v-a11bdd32]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-a11bdd32]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-a11bdd32],form.form-container1 .label-value input[type=radio][data-v-a11bdd32]{width:auto}form.form-container1 .label-value input[type=radio][data-v-a11bdd32]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-a11bdd32]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-a11bdd32]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-a11bdd32]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-a11bdd32]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-a11bdd32]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-a11bdd32]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-a11bdd32]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-a11bdd32]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-a11bdd32]{color:#f9ad1e}form.form-container1 .label-flex[data-v-a11bdd32]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-a11bdd32]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-a11bdd32]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-a11bdd32]{width:100px}table.page-table th.checkbox[data-v-a11bdd32]{width:50px;text-align:center}table.page-table th.setting[data-v-a11bdd32]{width:100px;text-align:center}table.page-table thead[data-v-a11bdd32]{color:#909399}table.page-table thead tr[data-v-a11bdd32]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-a11bdd32]{padding:10px 16px}table.page-table tbody tr[data-v-a11bdd32]:hover{background-color:#eeee}table.page-table tbody tr[data-v-a11bdd32]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-a11bdd32]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-a11bdd32]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-a11bdd32]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-a11bdd32]{width:100px}table.popups-table th.checkbox[data-v-a11bdd32]{width:50px;text-align:center}table.popups-table th.setting[data-v-a11bdd32]{width:100px;text-align:center}table.popups-table thead[data-v-a11bdd32]{color:#eee}table.popups-table thead tr[data-v-a11bdd32]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-a11bdd32]{padding:10px 16px}table.popups-table tbody tr[data-v-a11bdd32]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-a11bdd32]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-a11bdd32]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-a11bdd32]{width:100%}header.header-desktop[data-v-a11bdd32]{display:block}header.header-mobile[data-v-a11bdd32]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-a11bdd32]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-a11bdd32]{width:100%;height:100%}header.header-mobile button svg path[data-v-a11bdd32]{fill:#fff}nav.sidebar[data-v-a11bdd32]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-a11bdd32]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-a11bdd32]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-a11bdd32]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-a11bdd32]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-a11bdd32]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-a11bdd32]{color:#fff}nav.sidebar .container .children[data-v-a11bdd32]{padding-left:30px}@-moz-keyframes tada-a11bdd32{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-a11bdd32{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-a11bdd32{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-a11bdd32{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-a11bdd32]{animation:dialogEnter-a11bdd32 .3s linear forwards}.dialog-leave-active[data-v-a11bdd32]{animation:dialogLeave-a11bdd32 .3s linear forwards}@keyframes dialogEnter-a11bdd32{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-a11bdd32{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-a11bdd32]{animation:dialogEnter-a11bdd32 .2s linear forwards}.dialog1-leave-active[data-v-a11bdd32]{animation:dialogLeave-a11bdd32 .2s linear forwards}@keyframes rotateEnter-a11bdd32{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-a11bdd32]{animation:rotateEnter-a11bdd32 .7s;position:relative}.rotate-leave-active[data-v-a11bdd32]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-a11bdd32{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-a11bdd32{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-a11bdd32]{animation:slideOutTop-a11bdd32 .5s linear forwards}.slide-top-leave-active[data-v-a11bdd32],.slide-bottom-enter-active[data-v-a11bdd32]{animation:slideOutBottom-a11bdd32 .5s linear forwards}@keyframes slideInLeft-a11bdd32{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-a11bdd32{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-a11bdd32]{animation:slideInLeft-a11bdd32 .3s linear forwards}.slide-left-leave-active[data-v-a11bdd32]{animation:slideInRight-a11bdd32 .3s linear forwards}@keyframes slideOutLeft-a11bdd32{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-a11bdd32{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-a11bdd32]{animation:slideOutLeft-a11bdd32 .3s linear forwards}.slide-right-leave-active[data-v-a11bdd32]{animation:slideOutRight-a11bdd32 .3s linear forwards}@keyframes bganimation-a11bdd32{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-a11bdd32{0%{height:0}to{height:100px}}@keyframes fadeEnd-a11bdd32{0%{height:100%}to{height:0}}.fade-enter-active[data-v-a11bdd32]{animation:fadeStart-a11bdd32 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-a11bdd32]{animation:fadeEnd-a11bdd32 .1s linear forwards;overflow:hidden}.nalert[data-v-a11bdd32]{position:fixed;inset:0;text-align:center;z-index:2001;overflow:auto}.nalert[data-v-a11bdd32]:after{content:"";display:inline-block;height:100%;width:0;vertical-align:middle}.nalert .nalert-bg[data-v-a11bdd32]{position:fixed;inset:-100%;opacity:.5;background:#000}.nalert .nalert-container[data-v-a11bdd32]{position:relative;display:inline-block;text-align:left;overflow:hidden;backface-visibility:hidden;width:560px;background:#FFFFFF;box-shadow:0 12px 48px 16px #00000008,0 9px 28px #0000000d,0 6px 16px -8px #00000014;border-radius:2px}.nalert .nalert-container .nalert-data[data-v-a11bdd32],.nalert .nalert-container .nalert-data .nalert-body[data-v-a11bdd32]{width:100%}.nalert .nalert-container .nalert-data .nalert-body .nalert-bodt_title[data-v-a11bdd32]{width:100%;padding:15px 15px 10px;display:flex;flex-wrap:wrap;align-items:center}.nalert .nalert-container .nalert-data .nalert-body .nalert-bodt_title svg.icon[data-v-a11bdd32]{width:16px;height:16px;margin:0 6px 0 0;padding:0}.nalert .nalert-container .nalert-data .nalert-body .nalert-bodt_title svg.icon path[data-v-a11bdd32]{fill:#faad14}.nalert .nalert-container .nalert-data .nalert-body .nalert-bodt_title span[data-v-a11bdd32]{font-size:16px;font-family:SFUIText-Medium,SFUIText;font-weight:500;color:#000000d9}.nalert .nalert-container .nalert-data .nalert-body[data-v-a11bdd32] .nalert-bodt_msg{font-size:14px;font-family:PingFangSC-Regular,PingFang SC;font-weight:400;color:#606266;width:100%;padding:10px 15px}.nalert .nalert-container .nalert-data .nalert-body[data-v-a11bdd32] .nalert-bodt_msg label{display:block;margin:8px 0;cursor:pointer}.nalert .nalert-container .nalert-data .nalert-body[data-v-a11bdd32] .nalert-bodt_msg a{color:#ff0202;font-size:16px;padding:0 8px}.nalert .nalert-container .nalert-data .nalert-body .nalert-bodt_btns[data-v-a11bdd32]{padding:5px 15px 10px;text-align:right}.nalert .nalert-container .nalert-data .nalert-body .nalert-bodt_btns button[data-v-a11bdd32]{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#fff;border:1px solid #dcdfe6;color:#606266;text-align:center;box-sizing:border-box;outline:none;transition:.1s;font-weight:500;padding:9px 15px;font-size:12px;border-radius:3px;margin:0 0 0 8px}.nalert .nalert-container .nalert-data .nalert-body .nalert-bodt_btns button[data-v-a11bdd32]:hover{opacity:.9}.nalert .nalert-container .nalert-data .nalert-body .nalert-bodt_btns button.next[data-v-a11bdd32]{color:#fff;background-color:#409eff;border-color:#409eff}@keyframes turns-11842e6c{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-11842e6c]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-11842e6c]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-11842e6c]{color:#f9ad1e}.notice_info li[data-v-11842e6c]{font-size:14px;list-style:revert}.text-container[data-v-11842e6c]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-11842e6c]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-11842e6c]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-11842e6c]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-11842e6c]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-11842e6c]{width:100%}.text-container .text-container_item p.info-desc[data-v-11842e6c]{width:100%;color:#999;font-size:14px}.page-container[data-v-11842e6c]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-11842e6c]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-11842e6c]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-11842e6c]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-11842e6c],.page-container .page-flex .page-sidebar a[data-v-11842e6c]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-11842e6c]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-11842e6c]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-11842e6c]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-11842e6c]{border-radius:0;padding:1rem}ul.ul-container[data-v-11842e6c]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-11842e6c]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-11842e6c]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-11842e6c]{width:100%}form.form-container[data-v-11842e6c]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-11842e6c]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-11842e6c]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-11842e6c]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-11842e6c]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-11842e6c],form.form-container .label-value select[data-v-11842e6c]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-11842e6c]:focus,form.form-container .label-value select[data-v-11842e6c]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-11842e6c]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-11842e6c]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-11842e6c],form.form-container .label-value input[type=radio][data-v-11842e6c]{width:auto}form.form-container .label-value input[type=radio][data-v-11842e6c]{margin:0 4px 0 0}form.form-container .label-value input[data-v-11842e6c]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-11842e6c]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-11842e6c]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-11842e6c]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-11842e6c]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-11842e6c]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-11842e6c]:hover{background-color:#747474}form.form-container .label-msg[data-v-11842e6c]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-11842e6c]{color:#f9ad1e}form.form-container .label-flex[data-v-11842e6c]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-11842e6c]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-11842e6c]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-11842e6c]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-11842e6c]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-11842e6c]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-11842e6c]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-11842e6c],form.form-container1 .label-value select[data-v-11842e6c]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-11842e6c]:focus,form.form-container1 .label-value select[data-v-11842e6c]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-11842e6c]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-11842e6c],form.form-container1 .label-value input[type=radio][data-v-11842e6c]{width:auto}form.form-container1 .label-value input[type=radio][data-v-11842e6c]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-11842e6c]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-11842e6c]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-11842e6c]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-11842e6c]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-11842e6c]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-11842e6c]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-11842e6c]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-11842e6c]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-11842e6c]{color:#f9ad1e}form.form-container1 .label-flex[data-v-11842e6c]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-11842e6c]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-11842e6c]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-11842e6c]{width:100px}table.page-table th.checkbox[data-v-11842e6c]{width:50px;text-align:center}table.page-table th.setting[data-v-11842e6c]{width:100px;text-align:center}table.page-table thead[data-v-11842e6c]{color:#909399}table.page-table thead tr[data-v-11842e6c]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-11842e6c]{padding:10px 16px}table.page-table tbody tr[data-v-11842e6c]:hover{background-color:#eeee}table.page-table tbody tr[data-v-11842e6c]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-11842e6c]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-11842e6c]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-11842e6c]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-11842e6c]{width:100px}table.popups-table th.checkbox[data-v-11842e6c]{width:50px;text-align:center}table.popups-table th.setting[data-v-11842e6c]{width:100px;text-align:center}table.popups-table thead[data-v-11842e6c]{color:#eee}table.popups-table thead tr[data-v-11842e6c]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-11842e6c]{padding:10px 16px}table.popups-table tbody tr[data-v-11842e6c]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-11842e6c]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-11842e6c]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-11842e6c]{width:100%}header.header-desktop[data-v-11842e6c]{display:block}header.header-mobile[data-v-11842e6c]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-11842e6c]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-11842e6c]{width:100%;height:100%}header.header-mobile button svg path[data-v-11842e6c]{fill:#fff}nav.sidebar[data-v-11842e6c]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-11842e6c]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-11842e6c]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-11842e6c]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-11842e6c]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-11842e6c]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-11842e6c]{color:#fff}nav.sidebar .container .children[data-v-11842e6c]{padding-left:30px}@-moz-keyframes tada-11842e6c{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-11842e6c{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-11842e6c{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-11842e6c{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-11842e6c]{animation:dialogEnter-11842e6c .3s linear forwards}.dialog-leave-active[data-v-11842e6c]{animation:dialogLeave-11842e6c .3s linear forwards}@keyframes dialogEnter-11842e6c{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-11842e6c{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-11842e6c]{animation:dialogEnter-11842e6c .2s linear forwards}.dialog1-leave-active[data-v-11842e6c]{animation:dialogLeave-11842e6c .2s linear forwards}@keyframes rotateEnter-11842e6c{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-11842e6c]{animation:rotateEnter-11842e6c .7s;position:relative}.rotate-leave-active[data-v-11842e6c]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-11842e6c{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-11842e6c{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-11842e6c]{animation:slideOutTop-11842e6c .5s linear forwards}.slide-top-leave-active[data-v-11842e6c],.slide-bottom-enter-active[data-v-11842e6c]{animation:slideOutBottom-11842e6c .5s linear forwards}@keyframes slideInLeft-11842e6c{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-11842e6c{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-11842e6c]{animation:slideInLeft-11842e6c .3s linear forwards}.slide-left-leave-active[data-v-11842e6c]{animation:slideInRight-11842e6c .3s linear forwards}@keyframes slideOutLeft-11842e6c{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-11842e6c{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-11842e6c]{animation:slideOutLeft-11842e6c .3s linear forwards}.slide-right-leave-active[data-v-11842e6c]{animation:slideOutRight-11842e6c .3s linear forwards}@keyframes bganimation-11842e6c{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-11842e6c{0%{height:0}to{height:100px}}@keyframes fadeEnd-11842e6c{0%{height:100%}to{height:0}}.fade-enter-active[data-v-11842e6c]{animation:fadeStart-11842e6c .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-11842e6c]{animation:fadeEnd-11842e6c .1s linear forwards;overflow:hidden}.block[data-v-11842e6c]{padding:0 10%;display:flex;flex-wrap:wrap;align-items:center;align-content:center}.block li[data-v-11842e6c]{margin-bottom:.5rem;width:100%;list-style:inherit;color:#333;font-size:16px}.block li .msg-item[data-v-11842e6c]{font-size:14px;display:inline-block;color:#0023ff!important;line-height:20px}.block li.msg-li[data-v-11842e6c]{margin:0}@keyframes turns-0dc4c17e{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-0dc4c17e]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-0dc4c17e]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-0dc4c17e]{color:#f9ad1e}.notice_info li[data-v-0dc4c17e]{font-size:14px;list-style:revert}.text-container[data-v-0dc4c17e]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-0dc4c17e]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-0dc4c17e]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-0dc4c17e]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-0dc4c17e]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-0dc4c17e]{width:100%}.text-container .text-container_item p.info-desc[data-v-0dc4c17e]{width:100%;color:#999;font-size:14px}.page-container[data-v-0dc4c17e]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-0dc4c17e]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-0dc4c17e]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-0dc4c17e]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-0dc4c17e],.page-container .page-flex .page-sidebar a[data-v-0dc4c17e]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-0dc4c17e]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-0dc4c17e]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-0dc4c17e]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-0dc4c17e]{border-radius:0;padding:1rem}ul.ul-container[data-v-0dc4c17e]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-0dc4c17e]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-0dc4c17e]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-0dc4c17e]{width:100%}form.form-container[data-v-0dc4c17e]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-0dc4c17e]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-0dc4c17e]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-0dc4c17e]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-0dc4c17e]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-0dc4c17e],form.form-container .label-value select[data-v-0dc4c17e]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-0dc4c17e]:focus,form.form-container .label-value select[data-v-0dc4c17e]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-0dc4c17e]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-0dc4c17e]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-0dc4c17e],form.form-container .label-value input[type=radio][data-v-0dc4c17e]{width:auto}form.form-container .label-value input[type=radio][data-v-0dc4c17e]{margin:0 4px 0 0}form.form-container .label-value input[data-v-0dc4c17e]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-0dc4c17e]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-0dc4c17e]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-0dc4c17e]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-0dc4c17e]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-0dc4c17e]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-0dc4c17e]:hover{background-color:#747474}form.form-container .label-msg[data-v-0dc4c17e]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-0dc4c17e]{color:#f9ad1e}form.form-container .label-flex[data-v-0dc4c17e]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-0dc4c17e]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-0dc4c17e]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-0dc4c17e]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-0dc4c17e]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-0dc4c17e]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-0dc4c17e]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-0dc4c17e],form.form-container1 .label-value select[data-v-0dc4c17e]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-0dc4c17e]:focus,form.form-container1 .label-value select[data-v-0dc4c17e]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-0dc4c17e]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-0dc4c17e],form.form-container1 .label-value input[type=radio][data-v-0dc4c17e]{width:auto}form.form-container1 .label-value input[type=radio][data-v-0dc4c17e]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-0dc4c17e]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-0dc4c17e]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-0dc4c17e]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-0dc4c17e]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-0dc4c17e]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-0dc4c17e]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-0dc4c17e]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-0dc4c17e]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-0dc4c17e]{color:#f9ad1e}form.form-container1 .label-flex[data-v-0dc4c17e]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-0dc4c17e]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-0dc4c17e]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-0dc4c17e]{width:100px}table.page-table th.checkbox[data-v-0dc4c17e]{width:50px;text-align:center}table.page-table th.setting[data-v-0dc4c17e]{width:100px;text-align:center}table.page-table thead[data-v-0dc4c17e]{color:#909399}table.page-table thead tr[data-v-0dc4c17e]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-0dc4c17e]{padding:10px 16px}table.page-table tbody tr[data-v-0dc4c17e]:hover{background-color:#eeee}table.page-table tbody tr[data-v-0dc4c17e]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-0dc4c17e]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-0dc4c17e]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-0dc4c17e]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-0dc4c17e]{width:100px}table.popups-table th.checkbox[data-v-0dc4c17e]{width:50px;text-align:center}table.popups-table th.setting[data-v-0dc4c17e]{width:100px;text-align:center}table.popups-table thead[data-v-0dc4c17e]{color:#eee}table.popups-table thead tr[data-v-0dc4c17e]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-0dc4c17e]{padding:10px 16px}table.popups-table tbody tr[data-v-0dc4c17e]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-0dc4c17e]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-0dc4c17e]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-0dc4c17e]{width:100%}header.header-desktop[data-v-0dc4c17e]{display:block}header.header-mobile[data-v-0dc4c17e]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-0dc4c17e]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-0dc4c17e]{width:100%;height:100%}header.header-mobile button svg path[data-v-0dc4c17e]{fill:#fff}nav.sidebar[data-v-0dc4c17e]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-0dc4c17e]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-0dc4c17e]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-0dc4c17e]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-0dc4c17e]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-0dc4c17e]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-0dc4c17e]{color:#fff}nav.sidebar .container .children[data-v-0dc4c17e]{padding-left:30px}@-moz-keyframes tada-0dc4c17e{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-0dc4c17e{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-0dc4c17e{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-0dc4c17e{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-0dc4c17e]{animation:dialogEnter-0dc4c17e .3s linear forwards}.dialog-leave-active[data-v-0dc4c17e]{animation:dialogLeave-0dc4c17e .3s linear forwards}@keyframes dialogEnter-0dc4c17e{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-0dc4c17e{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-0dc4c17e]{animation:dialogEnter-0dc4c17e .2s linear forwards}.dialog1-leave-active[data-v-0dc4c17e]{animation:dialogLeave-0dc4c17e .2s linear forwards}@keyframes rotateEnter-0dc4c17e{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-0dc4c17e]{animation:rotateEnter-0dc4c17e .7s;position:relative}.rotate-leave-active[data-v-0dc4c17e]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-0dc4c17e{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-0dc4c17e{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-0dc4c17e]{animation:slideOutTop-0dc4c17e .5s linear forwards}.slide-top-leave-active[data-v-0dc4c17e],.slide-bottom-enter-active[data-v-0dc4c17e]{animation:slideOutBottom-0dc4c17e .5s linear forwards}@keyframes slideInLeft-0dc4c17e{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-0dc4c17e{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-0dc4c17e]{animation:slideInLeft-0dc4c17e .3s linear forwards}.slide-left-leave-active[data-v-0dc4c17e]{animation:slideInRight-0dc4c17e .3s linear forwards}@keyframes slideOutLeft-0dc4c17e{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-0dc4c17e{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-0dc4c17e]{animation:slideOutLeft-0dc4c17e .3s linear forwards}.slide-right-leave-active[data-v-0dc4c17e]{animation:slideOutRight-0dc4c17e .3s linear forwards}@keyframes bganimation-0dc4c17e{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-0dc4c17e{0%{height:0}to{height:100px}}@keyframes fadeEnd-0dc4c17e{0%{height:100%}to{height:0}}.fade-enter-active[data-v-0dc4c17e]{animation:fadeStart-0dc4c17e .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-0dc4c17e]{animation:fadeEnd-0dc4c17e .1s linear forwards;overflow:hidden}.block[data-v-0dc4c17e]{min-height:160px;padding:0 10%;display:flex;flex-wrap:wrap;align-items:center;align-content:center;justify-content:center}.block p[data-v-0dc4c17e]{margin:.5rem 0;font-size:18px;width:100%;display:block;color:#333;text-align:center}@keyframes turns-c4e63fa4{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-c4e63fa4]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-c4e63fa4]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-c4e63fa4]{color:#f9ad1e}.notice_info li[data-v-c4e63fa4]{font-size:14px;list-style:revert}.text-container[data-v-c4e63fa4]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-c4e63fa4]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-c4e63fa4]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-c4e63fa4]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-c4e63fa4]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-c4e63fa4]{width:100%}.text-container .text-container_item p.info-desc[data-v-c4e63fa4]{width:100%;color:#999;font-size:14px}.page-container[data-v-c4e63fa4]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-c4e63fa4]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-c4e63fa4]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-c4e63fa4]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-c4e63fa4],.page-container .page-flex .page-sidebar a[data-v-c4e63fa4]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-c4e63fa4]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-c4e63fa4]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-c4e63fa4]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-c4e63fa4]{border-radius:0;padding:1rem}ul.ul-container[data-v-c4e63fa4]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-c4e63fa4]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-c4e63fa4]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-c4e63fa4]{width:100%}form.form-container[data-v-c4e63fa4]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-c4e63fa4]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-c4e63fa4]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-c4e63fa4]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-c4e63fa4]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-c4e63fa4],form.form-container .label-value select[data-v-c4e63fa4]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-c4e63fa4]:focus,form.form-container .label-value select[data-v-c4e63fa4]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-c4e63fa4]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-c4e63fa4]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-c4e63fa4],form.form-container .label-value input[type=radio][data-v-c4e63fa4]{width:auto}form.form-container .label-value input[type=radio][data-v-c4e63fa4]{margin:0 4px 0 0}form.form-container .label-value input[data-v-c4e63fa4]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-c4e63fa4]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-c4e63fa4]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-c4e63fa4]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-c4e63fa4]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-c4e63fa4]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-c4e63fa4]:hover{background-color:#747474}form.form-container .label-msg[data-v-c4e63fa4]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-c4e63fa4]{color:#f9ad1e}form.form-container .label-flex[data-v-c4e63fa4]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-c4e63fa4]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-c4e63fa4]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-c4e63fa4]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-c4e63fa4]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-c4e63fa4]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-c4e63fa4]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-c4e63fa4],form.form-container1 .label-value select[data-v-c4e63fa4]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-c4e63fa4]:focus,form.form-container1 .label-value select[data-v-c4e63fa4]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-c4e63fa4]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-c4e63fa4],form.form-container1 .label-value input[type=radio][data-v-c4e63fa4]{width:auto}form.form-container1 .label-value input[type=radio][data-v-c4e63fa4]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-c4e63fa4]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-c4e63fa4]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-c4e63fa4]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-c4e63fa4]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-c4e63fa4]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-c4e63fa4]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-c4e63fa4]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-c4e63fa4]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-c4e63fa4]{color:#f9ad1e}form.form-container1 .label-flex[data-v-c4e63fa4]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-c4e63fa4]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-c4e63fa4]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-c4e63fa4]{width:100px}table.page-table th.checkbox[data-v-c4e63fa4]{width:50px;text-align:center}table.page-table th.setting[data-v-c4e63fa4]{width:100px;text-align:center}table.page-table thead[data-v-c4e63fa4]{color:#909399}table.page-table thead tr[data-v-c4e63fa4]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-c4e63fa4]{padding:10px 16px}table.page-table tbody tr[data-v-c4e63fa4]:hover{background-color:#eeee}table.page-table tbody tr[data-v-c4e63fa4]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-c4e63fa4]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-c4e63fa4]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-c4e63fa4]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-c4e63fa4]{width:100px}table.popups-table th.checkbox[data-v-c4e63fa4]{width:50px;text-align:center}table.popups-table th.setting[data-v-c4e63fa4]{width:100px;text-align:center}table.popups-table thead[data-v-c4e63fa4]{color:#eee}table.popups-table thead tr[data-v-c4e63fa4]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-c4e63fa4]{padding:10px 16px}table.popups-table tbody tr[data-v-c4e63fa4]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-c4e63fa4]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-c4e63fa4]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-c4e63fa4]{width:100%}header.header-desktop[data-v-c4e63fa4]{display:block}header.header-mobile[data-v-c4e63fa4]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-c4e63fa4]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-c4e63fa4]{width:100%;height:100%}header.header-mobile button svg path[data-v-c4e63fa4]{fill:#fff}nav.sidebar[data-v-c4e63fa4]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-c4e63fa4]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-c4e63fa4]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-c4e63fa4]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-c4e63fa4]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-c4e63fa4]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-c4e63fa4]{color:#fff}nav.sidebar .container .children[data-v-c4e63fa4]{padding-left:30px}@-moz-keyframes tada-c4e63fa4{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-c4e63fa4{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-c4e63fa4{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-c4e63fa4{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-c4e63fa4]{animation:dialogEnter-c4e63fa4 .3s linear forwards}.dialog-leave-active[data-v-c4e63fa4]{animation:dialogLeave-c4e63fa4 .3s linear forwards}@keyframes dialogEnter-c4e63fa4{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-c4e63fa4{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-c4e63fa4]{animation:dialogEnter-c4e63fa4 .2s linear forwards}.dialog1-leave-active[data-v-c4e63fa4]{animation:dialogLeave-c4e63fa4 .2s linear forwards}@keyframes rotateEnter-c4e63fa4{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-c4e63fa4]{animation:rotateEnter-c4e63fa4 .7s;position:relative}.rotate-leave-active[data-v-c4e63fa4]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-c4e63fa4{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-c4e63fa4{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-c4e63fa4]{animation:slideOutTop-c4e63fa4 .5s linear forwards}.slide-top-leave-active[data-v-c4e63fa4],.slide-bottom-enter-active[data-v-c4e63fa4]{animation:slideOutBottom-c4e63fa4 .5s linear forwards}@keyframes slideInLeft-c4e63fa4{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-c4e63fa4{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-c4e63fa4]{animation:slideInLeft-c4e63fa4 .3s linear forwards}.slide-left-leave-active[data-v-c4e63fa4]{animation:slideInRight-c4e63fa4 .3s linear forwards}@keyframes slideOutLeft-c4e63fa4{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-c4e63fa4{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-c4e63fa4]{animation:slideOutLeft-c4e63fa4 .3s linear forwards}.slide-right-leave-active[data-v-c4e63fa4]{animation:slideOutRight-c4e63fa4 .3s linear forwards}@keyframes bganimation-c4e63fa4{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-c4e63fa4{0%{height:0}to{height:100px}}@keyframes fadeEnd-c4e63fa4{0%{height:100%}to{height:0}}.fade-enter-active[data-v-c4e63fa4]{animation:fadeStart-c4e63fa4 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-c4e63fa4]{animation:fadeEnd-c4e63fa4 .1s linear forwards;overflow:hidden}.nas-dialog[data-v-c4e63fa4] .app-dialog_container{overflow:hidden!important}.nas-dialog[data-v-c4e63fa4] .app-dialog_container .app-dialog_body{padding:0!important;overflow:hidden!important}.nas-tools[data-v-c4e63fa4]{width:100%;display:flex;flex-wrap:nowrap;position:relative;transition:.3s;min-height:300px}.nas-tools .nas-tools_item[data-v-c4e63fa4]{display:block;width:100%;flex:0 0 100%}.nas-tools[data-v-c4e63fa4] .tools-container{display:block;width:100%;flex:0 0 100%;padding:0 2rem}.nas-tools[data-v-c4e63fa4] .tools-container .msg{width:100%;font-size:14px;margin:.3rem 0;color:#999}.nas-tools[data-v-c4e63fa4] .tools-container .form-item{width:100%;margin-bottom:1rem;border-bottom:1px solid rgba(238,238,238,.5019607843)}.nas-tools[data-v-c4e63fa4] .tools-container .form-item p{font-size:1em;color:#333;width:100%;height:26px;display:block}.nas-tools[data-v-c4e63fa4] .tools-container .form-item label{display:flex;flex-wrap:wrap;margin:.5rem 0;align-items:center;font-size:14px;cursor:pointer}.nas-tools[data-v-c4e63fa4] .tools-container .form-item input{margin:0}.nas-tools[data-v-c4e63fa4] .tools-container .btns{margin:1rem 0;display:flex;justify-content:center}.nas-tools[data-v-c4e63fa4] .tools-container .btns button{width:300px;margin:1rem;height:32px;font-size:14px;border-radius:4px}.nas-tools[data-v-c4e63fa4] .tools-container .btns button:hover{opacity:.8}.nas-tools[data-v-c4e63fa4] .tools-container .btns button.next{background-color:#70b5ff;color:#fff}.nas-tools[data-v-c4e63fa4] .tools-container .label-name,.nas-tools[data-v-c4e63fa4] .tools-container .label-value{display:block;width:100%;margin-bottom:1rem}.nas-tools[data-v-c4e63fa4] .tools-container .label-value select,.nas-tools[data-v-c4e63fa4] .tools-container .label-value input{display:block;width:100%;height:36px;background:none;border:1px solid #adadad;color:#1e1e1e;font-size:14px;border-radius:3px;padding:0 10px}.nas-tools[data-v-c4e63fa4] .tools-container .label-value2{display:block;width:100%;margin-bottom:1rem}@keyframes turns-529c6a5d{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-529c6a5d]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-529c6a5d]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-529c6a5d]{color:#f9ad1e}.notice_info li[data-v-529c6a5d]{font-size:14px;list-style:revert}.text-container[data-v-529c6a5d]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-529c6a5d]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-529c6a5d]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-529c6a5d]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-529c6a5d]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-529c6a5d]{width:100%}.text-container .text-container_item p.info-desc[data-v-529c6a5d]{width:100%;color:#999;font-size:14px}.page-container[data-v-529c6a5d]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-529c6a5d]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-529c6a5d]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-529c6a5d]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-529c6a5d],.page-container .page-flex .page-sidebar a[data-v-529c6a5d]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-529c6a5d]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-529c6a5d]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-529c6a5d]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-529c6a5d]{border-radius:0;padding:1rem}ul.ul-container[data-v-529c6a5d]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-529c6a5d]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-529c6a5d]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-529c6a5d]{width:100%}form.form-container[data-v-529c6a5d]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-529c6a5d]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-529c6a5d]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-529c6a5d]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-529c6a5d]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-529c6a5d],form.form-container .label-value select[data-v-529c6a5d]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-529c6a5d]:focus,form.form-container .label-value select[data-v-529c6a5d]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-529c6a5d]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-529c6a5d]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-529c6a5d],form.form-container .label-value input[type=radio][data-v-529c6a5d]{width:auto}form.form-container .label-value input[type=radio][data-v-529c6a5d]{margin:0 4px 0 0}form.form-container .label-value input[data-v-529c6a5d]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-529c6a5d]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-529c6a5d]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-529c6a5d]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-529c6a5d]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-529c6a5d]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-529c6a5d]:hover{background-color:#747474}form.form-container .label-msg[data-v-529c6a5d]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-529c6a5d]{color:#f9ad1e}form.form-container .label-flex[data-v-529c6a5d]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-529c6a5d]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-529c6a5d]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-529c6a5d]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-529c6a5d]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-529c6a5d]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-529c6a5d]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-529c6a5d],form.form-container1 .label-value select[data-v-529c6a5d]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-529c6a5d]:focus,form.form-container1 .label-value select[data-v-529c6a5d]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-529c6a5d]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-529c6a5d],form.form-container1 .label-value input[type=radio][data-v-529c6a5d]{width:auto}form.form-container1 .label-value input[type=radio][data-v-529c6a5d]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-529c6a5d]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-529c6a5d]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-529c6a5d]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-529c6a5d]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-529c6a5d]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-529c6a5d]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-529c6a5d]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-529c6a5d]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-529c6a5d]{color:#f9ad1e}form.form-container1 .label-flex[data-v-529c6a5d]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-529c6a5d]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-529c6a5d]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-529c6a5d]{width:100px}table.page-table th.checkbox[data-v-529c6a5d]{width:50px;text-align:center}table.page-table th.setting[data-v-529c6a5d]{width:100px;text-align:center}table.page-table thead[data-v-529c6a5d]{color:#909399}table.page-table thead tr[data-v-529c6a5d]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-529c6a5d]{padding:10px 16px}table.page-table tbody tr[data-v-529c6a5d]:hover{background-color:#eeee}table.page-table tbody tr[data-v-529c6a5d]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-529c6a5d]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-529c6a5d]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-529c6a5d]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-529c6a5d]{width:100px}table.popups-table th.checkbox[data-v-529c6a5d]{width:50px;text-align:center}table.popups-table th.setting[data-v-529c6a5d]{width:100px;text-align:center}table.popups-table thead[data-v-529c6a5d]{color:#eee}table.popups-table thead tr[data-v-529c6a5d]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-529c6a5d]{padding:10px 16px}table.popups-table tbody tr[data-v-529c6a5d]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-529c6a5d]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-529c6a5d]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-529c6a5d]{width:100%}header.header-desktop[data-v-529c6a5d]{display:block}header.header-mobile[data-v-529c6a5d]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-529c6a5d]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-529c6a5d]{width:100%;height:100%}header.header-mobile button svg path[data-v-529c6a5d]{fill:#fff}nav.sidebar[data-v-529c6a5d]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-529c6a5d]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-529c6a5d]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-529c6a5d]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-529c6a5d]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-529c6a5d]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-529c6a5d]{color:#fff}nav.sidebar .container .children[data-v-529c6a5d]{padding-left:30px}@-moz-keyframes tada-529c6a5d{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-529c6a5d{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-529c6a5d{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-529c6a5d{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-529c6a5d]{animation:dialogEnter-529c6a5d .3s linear forwards}.dialog-leave-active[data-v-529c6a5d]{animation:dialogLeave-529c6a5d .3s linear forwards}@keyframes dialogEnter-529c6a5d{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-529c6a5d{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-529c6a5d]{animation:dialogEnter-529c6a5d .2s linear forwards}.dialog1-leave-active[data-v-529c6a5d]{animation:dialogLeave-529c6a5d .2s linear forwards}@keyframes rotateEnter-529c6a5d{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-529c6a5d]{animation:rotateEnter-529c6a5d .7s;position:relative}.rotate-leave-active[data-v-529c6a5d]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-529c6a5d{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-529c6a5d{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-529c6a5d]{animation:slideOutTop-529c6a5d .5s linear forwards}.slide-top-leave-active[data-v-529c6a5d],.slide-bottom-enter-active[data-v-529c6a5d]{animation:slideOutBottom-529c6a5d .5s linear forwards}@keyframes slideInLeft-529c6a5d{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-529c6a5d{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-529c6a5d]{animation:slideInLeft-529c6a5d .3s linear forwards}.slide-left-leave-active[data-v-529c6a5d]{animation:slideInRight-529c6a5d .3s linear forwards}@keyframes slideOutLeft-529c6a5d{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-529c6a5d{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-529c6a5d]{animation:slideOutLeft-529c6a5d .3s linear forwards}.slide-right-leave-active[data-v-529c6a5d]{animation:slideOutRight-529c6a5d .3s linear forwards}@keyframes bganimation-529c6a5d{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-529c6a5d{0%{height:0}to{height:100px}}@keyframes fadeEnd-529c6a5d{0%{height:100%}to{height:0}}.fade-enter-active[data-v-529c6a5d]{animation:fadeStart-529c6a5d .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-529c6a5d]{animation:fadeEnd-529c6a5d .1s linear forwards;overflow:hidden}.app-item[data-v-529c6a5d]{padding:.75rem}.app-item .app-card[data-v-529c6a5d]{display:flex}.app-item .app-card .app-item_icon[data-v-529c6a5d]{width:72px;height:72px;background-color:#f3f5f8;padding:.5rem;border-radius:1rem;flex:0 0 100%;max-width:72px}.app-item .app-card .app-item_icon img[data-v-529c6a5d]{width:100%}.app-item .app-card .app-item_info[data-v-529c6a5d]{flex:1;padding-left:1rem}.app-item .app-card .app-item_info .app-title[data-v-529c6a5d]{overflow:hidden;color:#363636;font-size:1em;line-height:1.125;font-weight:600}.app-item .app-card .app-item_info .app-title em[data-v-529c6a5d]{font-size:.8125rem}.app-item .app-card .app-item_info .app-desc[data-v-529c6a5d]{word-break:break-all;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;font-size:.75em;color:#4a4a4a;font-weight:400;line-height:1.5}.app-item .app-btn[data-v-529c6a5d]{margin-top:5px;display:flex;justify-content:flex-end}.app-item .app-btn button[data-v-529c6a5d]{background-color:#ecf3fe;color:#0b5cd5;font-size:.75rem;padding-bottom:calc(.1875rem - 1px);padding-top:calc(.1875rem - 1px);border-radius:1rem;padding-left:1.25em;padding-right:1.25em;margin-left:.5rem}.app-item .app-btn button[data-v-529c6a5d]:hover{opacity:.8}.app-item .app-as[data-v-529c6a5d]{width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin:.1rem 0}.app-item .app-as span[data-v-529c6a5d]{font-size:.75em;color:#4a4a4a;font-weight:400}.app-item .app-as .star-btn[data-v-529c6a5d]{padding:0;margin:0 0 0 10px;width:30px;border:none!important;cursor:pointer;background:none;box-shadow:none}.app-item .app-as .star-btn[data-v-529c6a5d] svg path{fill:currentColor}.app-item .app-as .star-btn[data-v-529c6a5d]:hover svg path{filter:invert(.6)}.app-item .app-author[data-v-529c6a5d],.app-item .app-date[data-v-529c6a5d]{width:100%;height:20px;line-height:20px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:.75em;color:#4a4a4a;font-weight:400}@keyframes turns-19021bf0{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-19021bf0]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-19021bf0]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-19021bf0]{color:#f9ad1e}.notice_info li[data-v-19021bf0]{font-size:14px;list-style:revert}.text-container[data-v-19021bf0]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-19021bf0]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-19021bf0]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-19021bf0]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-19021bf0]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-19021bf0]{width:100%}.text-container .text-container_item p.info-desc[data-v-19021bf0]{width:100%;color:#999;font-size:14px}.page-container[data-v-19021bf0]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-19021bf0]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-19021bf0]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-19021bf0]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-19021bf0],.page-container .page-flex .page-sidebar a[data-v-19021bf0]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-19021bf0]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-19021bf0]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-19021bf0]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-19021bf0]{border-radius:0;padding:1rem}ul.ul-container[data-v-19021bf0]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-19021bf0]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-19021bf0]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-19021bf0]{width:100%}form.form-container[data-v-19021bf0]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-19021bf0]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-19021bf0]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-19021bf0]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-19021bf0]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-19021bf0],form.form-container .label-value select[data-v-19021bf0]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-19021bf0]:focus,form.form-container .label-value select[data-v-19021bf0]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-19021bf0]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-19021bf0]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-19021bf0],form.form-container .label-value input[type=radio][data-v-19021bf0]{width:auto}form.form-container .label-value input[type=radio][data-v-19021bf0]{margin:0 4px 0 0}form.form-container .label-value input[data-v-19021bf0]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-19021bf0]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-19021bf0]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-19021bf0]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-19021bf0]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-19021bf0]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-19021bf0]:hover{background-color:#747474}form.form-container .label-msg[data-v-19021bf0]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-19021bf0]{color:#f9ad1e}form.form-container .label-flex[data-v-19021bf0]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-19021bf0]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-19021bf0]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-19021bf0]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-19021bf0]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-19021bf0]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-19021bf0]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-19021bf0],form.form-container1 .label-value select[data-v-19021bf0]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-19021bf0]:focus,form.form-container1 .label-value select[data-v-19021bf0]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-19021bf0]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-19021bf0],form.form-container1 .label-value input[type=radio][data-v-19021bf0]{width:auto}form.form-container1 .label-value input[type=radio][data-v-19021bf0]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-19021bf0]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-19021bf0]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-19021bf0]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-19021bf0]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-19021bf0]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-19021bf0]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-19021bf0]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-19021bf0]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-19021bf0]{color:#f9ad1e}form.form-container1 .label-flex[data-v-19021bf0]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-19021bf0]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-19021bf0]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-19021bf0]{width:100px}table.page-table th.checkbox[data-v-19021bf0]{width:50px;text-align:center}table.page-table th.setting[data-v-19021bf0]{width:100px;text-align:center}table.page-table thead[data-v-19021bf0]{color:#909399}table.page-table thead tr[data-v-19021bf0]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-19021bf0]{padding:10px 16px}table.page-table tbody tr[data-v-19021bf0]:hover{background-color:#eeee}table.page-table tbody tr[data-v-19021bf0]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-19021bf0]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-19021bf0]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-19021bf0]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-19021bf0]{width:100px}table.popups-table th.checkbox[data-v-19021bf0]{width:50px;text-align:center}table.popups-table th.setting[data-v-19021bf0]{width:100px;text-align:center}table.popups-table thead[data-v-19021bf0]{color:#eee}table.popups-table thead tr[data-v-19021bf0]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-19021bf0]{padding:10px 16px}table.popups-table tbody tr[data-v-19021bf0]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-19021bf0]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-19021bf0]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-19021bf0]{width:100%}header.header-desktop[data-v-19021bf0]{display:block}header.header-mobile[data-v-19021bf0]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-19021bf0]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-19021bf0]{width:100%;height:100%}header.header-mobile button svg path[data-v-19021bf0]{fill:#fff}nav.sidebar[data-v-19021bf0]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-19021bf0]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-19021bf0]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-19021bf0]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-19021bf0]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-19021bf0]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-19021bf0]{color:#fff}nav.sidebar .container .children[data-v-19021bf0]{padding-left:30px}@-moz-keyframes tada-19021bf0{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-19021bf0{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-19021bf0{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-19021bf0{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-19021bf0]{animation:dialogEnter-19021bf0 .3s linear forwards}.dialog-leave-active[data-v-19021bf0]{animation:dialogLeave-19021bf0 .3s linear forwards}@keyframes dialogEnter-19021bf0{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-19021bf0{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-19021bf0]{animation:dialogEnter-19021bf0 .2s linear forwards}.dialog1-leave-active[data-v-19021bf0]{animation:dialogLeave-19021bf0 .2s linear forwards}@keyframes rotateEnter-19021bf0{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-19021bf0]{animation:rotateEnter-19021bf0 .7s;position:relative}.rotate-leave-active[data-v-19021bf0]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-19021bf0{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-19021bf0{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-19021bf0]{animation:slideOutTop-19021bf0 .5s linear forwards}.slide-top-leave-active[data-v-19021bf0],.slide-bottom-enter-active[data-v-19021bf0]{animation:slideOutBottom-19021bf0 .5s linear forwards}@keyframes slideInLeft-19021bf0{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-19021bf0{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-19021bf0]{animation:slideInLeft-19021bf0 .3s linear forwards}.slide-left-leave-active[data-v-19021bf0]{animation:slideInRight-19021bf0 .3s linear forwards}@keyframes slideOutLeft-19021bf0{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-19021bf0{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-19021bf0]{animation:slideOutLeft-19021bf0 .3s linear forwards}.slide-right-leave-active[data-v-19021bf0]{animation:slideOutRight-19021bf0 .3s linear forwards}@keyframes bganimation-19021bf0{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-19021bf0{0%{height:0}to{height:100px}}@keyframes fadeEnd-19021bf0{0%{height:100%}to{height:0}}.fade-enter-active[data-v-19021bf0]{animation:fadeStart-19021bf0 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-19021bf0]{animation:fadeEnd-19021bf0 .1s linear forwards;overflow:hidden}section[data-v-19021bf0]{margin-top:8px}section .section-list[data-v-19021bf0]{width:100%;display:grid;grid-gap:15px 15px;grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}.tab[data-v-19021bf0]{margin-bottom:16px;font-size:15px;color:#0009;font-weight:500}.tab span[data-v-19021bf0]{margin-right:18px;cursor:pointer}.tab span.active[data-v-19021bf0]{color:#06f}.search[data-v-19021bf0]{width:100%;padding:8px 32px;border-radius:32px;border:1px solid rgba(0,0,0,.11);background:rgba(255,255,255,.05);backdrop-filter:blur(12px);margin-bottom:16px;cursor:text}.filter[data-v-19021bf0]{display:flex;font-size:13px;line-height:13px}.filter>span[data-v-19021bf0]{width:112px;color:#000c}.filter>span>span.default[data-v-19021bf0]{width:60px}.filter>div[data-v-19021bf0]{flex:1}.filter span.active[data-v-19021bf0]{background:rgba(255,164,27,.08);border:1px solid #ffa41b!important;color:#ffa41b}.filter span.tag[data-v-19021bf0]{line-height:25px;text-align:center;display:inline-block;width:100px;height:28px;border-radius:4px;border:1px solid rgba(0,0,0,.08);background:#fafafa;margin:0 4px 8px;cursor:pointer}@keyframes turns-7d47f8ad{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-7d47f8ad]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-7d47f8ad]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-7d47f8ad]{color:#f9ad1e}.notice_info li[data-v-7d47f8ad]{font-size:14px;list-style:revert}.text-container[data-v-7d47f8ad]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-7d47f8ad]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-7d47f8ad]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-7d47f8ad]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-7d47f8ad]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-7d47f8ad]{width:100%}.text-container .text-container_item p.info-desc[data-v-7d47f8ad]{width:100%;color:#999;font-size:14px}.page-container[data-v-7d47f8ad]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-7d47f8ad]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-7d47f8ad]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-7d47f8ad]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-7d47f8ad],.page-container .page-flex .page-sidebar a[data-v-7d47f8ad]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-7d47f8ad]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-7d47f8ad]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-7d47f8ad]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-7d47f8ad]{border-radius:0;padding:1rem}ul.ul-container[data-v-7d47f8ad]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-7d47f8ad]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-7d47f8ad]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-7d47f8ad]{width:100%}form.form-container[data-v-7d47f8ad]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-7d47f8ad]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-7d47f8ad]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-7d47f8ad]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-7d47f8ad]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-7d47f8ad],form.form-container .label-value select[data-v-7d47f8ad]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-7d47f8ad]:focus,form.form-container .label-value select[data-v-7d47f8ad]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-7d47f8ad]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-7d47f8ad]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-7d47f8ad],form.form-container .label-value input[type=radio][data-v-7d47f8ad]{width:auto}form.form-container .label-value input[type=radio][data-v-7d47f8ad]{margin:0 4px 0 0}form.form-container .label-value input[data-v-7d47f8ad]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-7d47f8ad]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-7d47f8ad]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-7d47f8ad]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-7d47f8ad]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-7d47f8ad]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-7d47f8ad]:hover{background-color:#747474}form.form-container .label-msg[data-v-7d47f8ad]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-7d47f8ad]{color:#f9ad1e}form.form-container .label-flex[data-v-7d47f8ad]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-7d47f8ad]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-7d47f8ad]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-7d47f8ad]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-7d47f8ad]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-7d47f8ad]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-7d47f8ad]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-7d47f8ad],form.form-container1 .label-value select[data-v-7d47f8ad]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-7d47f8ad]:focus,form.form-container1 .label-value select[data-v-7d47f8ad]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-7d47f8ad]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-7d47f8ad],form.form-container1 .label-value input[type=radio][data-v-7d47f8ad]{width:auto}form.form-container1 .label-value input[type=radio][data-v-7d47f8ad]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-7d47f8ad]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-7d47f8ad]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-7d47f8ad]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-7d47f8ad]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-7d47f8ad]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-7d47f8ad]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-7d47f8ad]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-7d47f8ad]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-7d47f8ad]{color:#f9ad1e}form.form-container1 .label-flex[data-v-7d47f8ad]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-7d47f8ad]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-7d47f8ad]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-7d47f8ad]{width:100px}table.page-table th.checkbox[data-v-7d47f8ad]{width:50px;text-align:center}table.page-table th.setting[data-v-7d47f8ad]{width:100px;text-align:center}table.page-table thead[data-v-7d47f8ad]{color:#909399}table.page-table thead tr[data-v-7d47f8ad]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-7d47f8ad]{padding:10px 16px}table.page-table tbody tr[data-v-7d47f8ad]:hover{background-color:#eeee}table.page-table tbody tr[data-v-7d47f8ad]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-7d47f8ad]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-7d47f8ad]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-7d47f8ad]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-7d47f8ad]{width:100px}table.popups-table th.checkbox[data-v-7d47f8ad]{width:50px;text-align:center}table.popups-table th.setting[data-v-7d47f8ad]{width:100px;text-align:center}table.popups-table thead[data-v-7d47f8ad]{color:#eee}table.popups-table thead tr[data-v-7d47f8ad]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-7d47f8ad]{padding:10px 16px}table.popups-table tbody tr[data-v-7d47f8ad]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-7d47f8ad]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-7d47f8ad]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-7d47f8ad]{width:100%}header.header-desktop[data-v-7d47f8ad]{display:block}header.header-mobile[data-v-7d47f8ad]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-7d47f8ad]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-7d47f8ad]{width:100%;height:100%}header.header-mobile button svg path[data-v-7d47f8ad]{fill:#fff}nav.sidebar[data-v-7d47f8ad]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-7d47f8ad]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-7d47f8ad]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-7d47f8ad]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-7d47f8ad]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-7d47f8ad]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-7d47f8ad]{color:#fff}nav.sidebar .container .children[data-v-7d47f8ad]{padding-left:30px}@-moz-keyframes tada-7d47f8ad{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-7d47f8ad{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-7d47f8ad{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-7d47f8ad{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-7d47f8ad]{animation:dialogEnter-7d47f8ad .3s linear forwards}.dialog-leave-active[data-v-7d47f8ad]{animation:dialogLeave-7d47f8ad .3s linear forwards}@keyframes dialogEnter-7d47f8ad{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-7d47f8ad{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-7d47f8ad]{animation:dialogEnter-7d47f8ad .2s linear forwards}.dialog1-leave-active[data-v-7d47f8ad]{animation:dialogLeave-7d47f8ad .2s linear forwards}@keyframes rotateEnter-7d47f8ad{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-7d47f8ad]{animation:rotateEnter-7d47f8ad .7s;position:relative}.rotate-leave-active[data-v-7d47f8ad]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-7d47f8ad{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-7d47f8ad{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-7d47f8ad]{animation:slideOutTop-7d47f8ad .5s linear forwards}.slide-top-leave-active[data-v-7d47f8ad],.slide-bottom-enter-active[data-v-7d47f8ad]{animation:slideOutBottom-7d47f8ad .5s linear forwards}@keyframes slideInLeft-7d47f8ad{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-7d47f8ad{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-7d47f8ad]{animation:slideInLeft-7d47f8ad .3s linear forwards}.slide-left-leave-active[data-v-7d47f8ad]{animation:slideInRight-7d47f8ad .3s linear forwards}@keyframes slideOutLeft-7d47f8ad{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-7d47f8ad{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-7d47f8ad]{animation:slideOutLeft-7d47f8ad .3s linear forwards}.slide-right-leave-active[data-v-7d47f8ad]{animation:slideOutRight-7d47f8ad .3s linear forwards}@keyframes bganimation-7d47f8ad{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-7d47f8ad{0%{height:0}to{height:100px}}@keyframes fadeEnd-7d47f8ad{0%{height:100%}to{height:0}}.fade-enter-active[data-v-7d47f8ad]{animation:fadeStart-7d47f8ad .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-7d47f8ad]{animation:fadeEnd-7d47f8ad .1s linear forwards;overflow:hidden}label.disk-item[data-v-7d47f8ad]{display:flex;flex-wrap:wrap;align-items:center;width:100%;margin:.5rem 0;font-size:14px;cursor:pointer}label.disk-item input[data-v-7d47f8ad]{margin:0;margin-right:.5rem}label.disk-item em[data-v-7d47f8ad]{font-size:12px;background-color:#2276f3;padding:2px 5px;color:#fff;border-radius:3px;margin-right:.5rem;font-style:none}label.disk-item .disk_main[data-v-7d47f8ad]{background-color:#f32222}@keyframes turns-1b963653{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-1b963653]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-1b963653]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-1b963653]{color:#f9ad1e}.notice_info li[data-v-1b963653]{font-size:14px;list-style:revert}.text-container[data-v-1b963653]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-1b963653]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-1b963653]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-1b963653]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-1b963653]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-1b963653]{width:100%}.text-container .text-container_item p.info-desc[data-v-1b963653]{width:100%;color:#999;font-size:14px}.page-container[data-v-1b963653]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-1b963653]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-1b963653]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-1b963653]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-1b963653],.page-container .page-flex .page-sidebar a[data-v-1b963653]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-1b963653]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-1b963653]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-1b963653]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-1b963653]{border-radius:0;padding:1rem}ul.ul-container[data-v-1b963653]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-1b963653]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-1b963653]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-1b963653]{width:100%}form.form-container[data-v-1b963653]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-1b963653]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-1b963653]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-1b963653]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-1b963653]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-1b963653],form.form-container .label-value select[data-v-1b963653]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-1b963653]:focus,form.form-container .label-value select[data-v-1b963653]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-1b963653]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-1b963653]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-1b963653],form.form-container .label-value input[type=radio][data-v-1b963653]{width:auto}form.form-container .label-value input[type=radio][data-v-1b963653]{margin:0 4px 0 0}form.form-container .label-value input[data-v-1b963653]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-1b963653]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-1b963653]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-1b963653]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-1b963653]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-1b963653]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-1b963653]:hover{background-color:#747474}form.form-container .label-msg[data-v-1b963653]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-1b963653]{color:#f9ad1e}form.form-container .label-flex[data-v-1b963653]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-1b963653]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-1b963653]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-1b963653]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-1b963653]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-1b963653]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-1b963653]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-1b963653],form.form-container1 .label-value select[data-v-1b963653]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-1b963653]:focus,form.form-container1 .label-value select[data-v-1b963653]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-1b963653]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-1b963653],form.form-container1 .label-value input[type=radio][data-v-1b963653]{width:auto}form.form-container1 .label-value input[type=radio][data-v-1b963653]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-1b963653]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-1b963653]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-1b963653]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-1b963653]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-1b963653]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-1b963653]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-1b963653]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-1b963653]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-1b963653]{color:#f9ad1e}form.form-container1 .label-flex[data-v-1b963653]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-1b963653]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-1b963653]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-1b963653]{width:100px}table.page-table th.checkbox[data-v-1b963653]{width:50px;text-align:center}table.page-table th.setting[data-v-1b963653]{width:100px;text-align:center}table.page-table thead[data-v-1b963653]{color:#909399}table.page-table thead tr[data-v-1b963653]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-1b963653]{padding:10px 16px}table.page-table tbody tr[data-v-1b963653]:hover{background-color:#eeee}table.page-table tbody tr[data-v-1b963653]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-1b963653]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-1b963653]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-1b963653]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-1b963653]{width:100px}table.popups-table th.checkbox[data-v-1b963653]{width:50px;text-align:center}table.popups-table th.setting[data-v-1b963653]{width:100px;text-align:center}table.popups-table thead[data-v-1b963653]{color:#eee}table.popups-table thead tr[data-v-1b963653]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-1b963653]{padding:10px 16px}table.popups-table tbody tr[data-v-1b963653]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-1b963653]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-1b963653]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-1b963653]{width:100%}header.header-desktop[data-v-1b963653]{display:block}header.header-mobile[data-v-1b963653]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-1b963653]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-1b963653]{width:100%;height:100%}header.header-mobile button svg path[data-v-1b963653]{fill:#fff}nav.sidebar[data-v-1b963653]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-1b963653]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-1b963653]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-1b963653]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-1b963653]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-1b963653]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-1b963653]{color:#fff}nav.sidebar .container .children[data-v-1b963653]{padding-left:30px}@-moz-keyframes tada-1b963653{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-1b963653{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-1b963653{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-1b963653{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-1b963653]{animation:dialogEnter-1b963653 .3s linear forwards}.dialog-leave-active[data-v-1b963653]{animation:dialogLeave-1b963653 .3s linear forwards}@keyframes dialogEnter-1b963653{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-1b963653{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-1b963653]{animation:dialogEnter-1b963653 .2s linear forwards}.dialog1-leave-active[data-v-1b963653]{animation:dialogLeave-1b963653 .2s linear forwards}@keyframes rotateEnter-1b963653{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-1b963653]{animation:rotateEnter-1b963653 .7s;position:relative}.rotate-leave-active[data-v-1b963653]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-1b963653{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-1b963653{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-1b963653]{animation:slideOutTop-1b963653 .5s linear forwards}.slide-top-leave-active[data-v-1b963653],.slide-bottom-enter-active[data-v-1b963653]{animation:slideOutBottom-1b963653 .5s linear forwards}@keyframes slideInLeft-1b963653{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-1b963653{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-1b963653]{animation:slideInLeft-1b963653 .3s linear forwards}.slide-left-leave-active[data-v-1b963653]{animation:slideInRight-1b963653 .3s linear forwards}@keyframes slideOutLeft-1b963653{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-1b963653{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-1b963653]{animation:slideOutLeft-1b963653 .3s linear forwards}.slide-right-leave-active[data-v-1b963653]{animation:slideOutRight-1b963653 .3s linear forwards}@keyframes bganimation-1b963653{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-1b963653{0%{height:0}to{height:100px}}@keyframes fadeEnd-1b963653{0%{height:100%}to{height:0}}.fade-enter-active[data-v-1b963653]{animation:fadeStart-1b963653 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-1b963653]{animation:fadeEnd-1b963653 .1s linear forwards;overflow:hidden}ul.tabls[data-v-1b963653]{display:flex;flex-wrap:wrap;align-items:center}ul.tabls button[data-v-1b963653]{padding:0;margin:0;background:none;color:#898989;font-size:1.2rem;margin-right:1rem;cursor:pointer}ul.tabls button[data-v-1b963653]:hover{color:#2276f3}ul.tabls button.on[data-v-1b963653]{font-size:1.3rem;font-weight:700;color:#2276f3;border-bottom:2px solid rgb(32,117,243)!important}[data-v-1b963653] section.tab-content{margin:2rem 0}[data-v-1b963653] section.tab-content section.tab-content{margin:1rem 0}[data-v-1b963653] section.tab-content .item-label{display:flex;flex-wrap:wrap;align-items:flex-start;align-content:flex-start;width:100%;margin:1rem 0}[data-v-1b963653] section.tab-content .item-label .item-label_key{flex:0 0 100%;max-width:100px;text-align:left}[data-v-1b963653] section.tab-content .item-label .item-label_value{flex:1;text-align:left}[data-v-1b963653] section.tab-content .item-label .item-label_key span,[data-v-1b963653] section.tab-content .item-label .item-label_value span{font-size:1em;color:#373737}[data-v-1b963653] section.tab-content table{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#373737}[data-v-1b963653] section.tab-content table th.uid{width:100px}[data-v-1b963653] section.tab-content table th.checkbox{width:50px;text-align:center}[data-v-1b963653] section.tab-content table th.setting{width:100px;text-align:center}[data-v-1b963653] section.tab-content table thead{color:#373737}[data-v-1b963653] section.tab-content table thead tr{width:100%;height:28px;line-height:28px;color:#373737;font-size:14px}[data-v-1b963653] section.tab-content table thead tr th{padding:16px 10px}[data-v-1b963653] section.tab-content table tbody tr{cursor:pointer;width:100%;color:#373737}[data-v-1b963653] section.tab-content table tbody tr th{font-size:14px;padding:16px 10px;vertical-align:top}[data-v-1b963653] section.tab-content table tbody tr th a{color:#ff7373}[data-v-1b963653] section.tab-content .label-name{display:block;width:100%;margin-bottom:.5rem}[data-v-1b963653] section.tab-content .label-value{display:block;width:100%;margin-bottom:1rem}[data-v-1b963653] section.tab-content .label-value select,[data-v-1b963653] section.tab-content .label-value input{display:block;width:100%;height:36px;background:none;border:1px solid #adadad;color:#1e1e1e;font-size:14px;border-radius:3px;padding:0 10px}[data-v-1b963653] section.tab-content .label-value2{display:block;width:100%;margin-bottom:1rem}[data-v-1b963653] section.tab-content .label-btns{display:flex;justify-content:flex-end}[data-v-1b963653] section.tab-content .label-btns button{width:100px;height:28px;border-radius:3px;font-size:14px}[data-v-1b963653] section.tab-content .label-btns button:hover{opacity:.9}[data-v-1b963653] section.tab-content .label-btns button.mount{background-color:#70b5ff;color:#fff}@keyframes turns-5f4eb506{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-5f4eb506]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-5f4eb506]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-5f4eb506]{color:#f9ad1e}.notice_info li[data-v-5f4eb506]{font-size:14px;list-style:revert}.text-container[data-v-5f4eb506]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-5f4eb506]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-5f4eb506]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-5f4eb506]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-5f4eb506]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-5f4eb506]{width:100%}.text-container .text-container_item p.info-desc[data-v-5f4eb506]{width:100%;color:#999;font-size:14px}.page-container[data-v-5f4eb506]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-5f4eb506]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-5f4eb506]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-5f4eb506]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-5f4eb506],.page-container .page-flex .page-sidebar a[data-v-5f4eb506]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-5f4eb506]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-5f4eb506]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-5f4eb506]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-5f4eb506]{border-radius:0;padding:1rem}ul.ul-container[data-v-5f4eb506]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-5f4eb506]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-5f4eb506]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-5f4eb506]{width:100%}form.form-container[data-v-5f4eb506]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-5f4eb506]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-5f4eb506]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-5f4eb506]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-5f4eb506]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-5f4eb506],form.form-container .label-value select[data-v-5f4eb506]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-5f4eb506]:focus,form.form-container .label-value select[data-v-5f4eb506]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-5f4eb506]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-5f4eb506]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-5f4eb506],form.form-container .label-value input[type=radio][data-v-5f4eb506]{width:auto}form.form-container .label-value input[type=radio][data-v-5f4eb506]{margin:0 4px 0 0}form.form-container .label-value input[data-v-5f4eb506]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-5f4eb506]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-5f4eb506]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-5f4eb506]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-5f4eb506]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-5f4eb506]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-5f4eb506]:hover{background-color:#747474}form.form-container .label-msg[data-v-5f4eb506]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-5f4eb506]{color:#f9ad1e}form.form-container .label-flex[data-v-5f4eb506]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-5f4eb506]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-5f4eb506]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-5f4eb506]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-5f4eb506]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-5f4eb506]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-5f4eb506]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-5f4eb506],form.form-container1 .label-value select[data-v-5f4eb506]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-5f4eb506]:focus,form.form-container1 .label-value select[data-v-5f4eb506]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-5f4eb506]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-5f4eb506],form.form-container1 .label-value input[type=radio][data-v-5f4eb506]{width:auto}form.form-container1 .label-value input[type=radio][data-v-5f4eb506]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-5f4eb506]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-5f4eb506]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-5f4eb506]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-5f4eb506]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-5f4eb506]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-5f4eb506]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-5f4eb506]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-5f4eb506]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-5f4eb506]{color:#f9ad1e}form.form-container1 .label-flex[data-v-5f4eb506]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-5f4eb506]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-5f4eb506]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-5f4eb506]{width:100px}table.page-table th.checkbox[data-v-5f4eb506]{width:50px;text-align:center}table.page-table th.setting[data-v-5f4eb506]{width:100px;text-align:center}table.page-table thead[data-v-5f4eb506]{color:#909399}table.page-table thead tr[data-v-5f4eb506]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-5f4eb506]{padding:10px 16px}table.page-table tbody tr[data-v-5f4eb506]:hover{background-color:#eeee}table.page-table tbody tr[data-v-5f4eb506]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-5f4eb506]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-5f4eb506]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-5f4eb506]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-5f4eb506]{width:100px}table.popups-table th.checkbox[data-v-5f4eb506]{width:50px;text-align:center}table.popups-table th.setting[data-v-5f4eb506]{width:100px;text-align:center}table.popups-table thead[data-v-5f4eb506]{color:#eee}table.popups-table thead tr[data-v-5f4eb506]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-5f4eb506]{padding:10px 16px}table.popups-table tbody tr[data-v-5f4eb506]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-5f4eb506]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-5f4eb506]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-5f4eb506]{width:100%}header.header-desktop[data-v-5f4eb506]{display:block}header.header-mobile[data-v-5f4eb506]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-5f4eb506]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-5f4eb506]{width:100%;height:100%}header.header-mobile button svg path[data-v-5f4eb506]{fill:#fff}nav.sidebar[data-v-5f4eb506]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-5f4eb506]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-5f4eb506]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-5f4eb506]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-5f4eb506]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-5f4eb506]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-5f4eb506]{color:#fff}nav.sidebar .container .children[data-v-5f4eb506]{padding-left:30px}@-moz-keyframes tada-5f4eb506{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-5f4eb506{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-5f4eb506{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-5f4eb506{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-5f4eb506]{animation:dialogEnter-5f4eb506 .3s linear forwards}.dialog-leave-active[data-v-5f4eb506]{animation:dialogLeave-5f4eb506 .3s linear forwards}@keyframes dialogEnter-5f4eb506{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-5f4eb506{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-5f4eb506]{animation:dialogEnter-5f4eb506 .2s linear forwards}.dialog1-leave-active[data-v-5f4eb506]{animation:dialogLeave-5f4eb506 .2s linear forwards}@keyframes rotateEnter-5f4eb506{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-5f4eb506]{animation:rotateEnter-5f4eb506 .7s;position:relative}.rotate-leave-active[data-v-5f4eb506]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-5f4eb506{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-5f4eb506{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-5f4eb506]{animation:slideOutTop-5f4eb506 .5s linear forwards}.slide-top-leave-active[data-v-5f4eb506],.slide-bottom-enter-active[data-v-5f4eb506]{animation:slideOutBottom-5f4eb506 .5s linear forwards}@keyframes slideInLeft-5f4eb506{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-5f4eb506{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-5f4eb506]{animation:slideInLeft-5f4eb506 .3s linear forwards}.slide-left-leave-active[data-v-5f4eb506]{animation:slideInRight-5f4eb506 .3s linear forwards}@keyframes slideOutLeft-5f4eb506{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-5f4eb506{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-5f4eb506]{animation:slideOutLeft-5f4eb506 .3s linear forwards}.slide-right-leave-active[data-v-5f4eb506]{animation:slideOutRight-5f4eb506 .3s linear forwards}@keyframes bganimation-5f4eb506{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-5f4eb506{0%{height:0}to{height:100px}}@keyframes fadeEnd-5f4eb506{0%{height:100%}to{height:0}}.fade-enter-active[data-v-5f4eb506]{animation:fadeStart-5f4eb506 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-5f4eb506]{animation:fadeEnd-5f4eb506 .1s linear forwards;overflow:hidden}#main[data-v-5f4eb506]{width:100vw;height:100vh;overflow:auto;overflow:overlay;background:linear-gradient(180deg,#4587ff,#3f90fe,#6dd5fa,#fff)}@keyframes turns-a9949144{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-a9949144]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-a9949144]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-a9949144]{color:#f9ad1e}.notice_info li[data-v-a9949144]{font-size:14px;list-style:revert}.text-container[data-v-a9949144]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-a9949144]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-a9949144]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-a9949144]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-a9949144]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-a9949144]{width:100%}.text-container .text-container_item p.info-desc[data-v-a9949144]{width:100%;color:#999;font-size:14px}.page-container[data-v-a9949144]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-a9949144]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-a9949144]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-a9949144]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-a9949144],.page-container .page-flex .page-sidebar a[data-v-a9949144]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-a9949144]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-a9949144]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-a9949144]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-a9949144]{border-radius:0;padding:1rem}ul.ul-container[data-v-a9949144]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-a9949144]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-a9949144]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-a9949144]{width:100%}form.form-container[data-v-a9949144]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-a9949144]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-a9949144]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-a9949144]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-a9949144]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-a9949144],form.form-container .label-value select[data-v-a9949144]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-a9949144]:focus,form.form-container .label-value select[data-v-a9949144]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-a9949144]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-a9949144]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-a9949144],form.form-container .label-value input[type=radio][data-v-a9949144]{width:auto}form.form-container .label-value input[type=radio][data-v-a9949144]{margin:0 4px 0 0}form.form-container .label-value input[data-v-a9949144]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-a9949144]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-a9949144]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-a9949144]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-a9949144]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-a9949144]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-a9949144]:hover{background-color:#747474}form.form-container .label-msg[data-v-a9949144]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-a9949144]{color:#f9ad1e}form.form-container .label-flex[data-v-a9949144]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-a9949144]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-a9949144]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-a9949144]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-a9949144]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-a9949144]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-a9949144]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-a9949144],form.form-container1 .label-value select[data-v-a9949144]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-a9949144]:focus,form.form-container1 .label-value select[data-v-a9949144]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-a9949144]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-a9949144],form.form-container1 .label-value input[type=radio][data-v-a9949144]{width:auto}form.form-container1 .label-value input[type=radio][data-v-a9949144]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-a9949144]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-a9949144]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-a9949144]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-a9949144]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-a9949144]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-a9949144]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-a9949144]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-a9949144]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-a9949144]{color:#f9ad1e}form.form-container1 .label-flex[data-v-a9949144]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-a9949144]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-a9949144]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-a9949144]{width:100px}table.page-table th.checkbox[data-v-a9949144]{width:50px;text-align:center}table.page-table th.setting[data-v-a9949144]{width:100px;text-align:center}table.page-table thead[data-v-a9949144]{color:#909399}table.page-table thead tr[data-v-a9949144]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-a9949144]{padding:10px 16px}table.page-table tbody tr[data-v-a9949144]:hover{background-color:#eeee}table.page-table tbody tr[data-v-a9949144]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-a9949144]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-a9949144]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-a9949144]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-a9949144]{width:100px}table.popups-table th.checkbox[data-v-a9949144]{width:50px;text-align:center}table.popups-table th.setting[data-v-a9949144]{width:100px;text-align:center}table.popups-table thead[data-v-a9949144]{color:#eee}table.popups-table thead tr[data-v-a9949144]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-a9949144]{padding:10px 16px}table.popups-table tbody tr[data-v-a9949144]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-a9949144]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-a9949144]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-a9949144]{width:100%}header.header-desktop[data-v-a9949144]{display:block}header.header-mobile[data-v-a9949144]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-a9949144]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-a9949144]{width:100%;height:100%}header.header-mobile button svg path[data-v-a9949144]{fill:#fff}nav.sidebar[data-v-a9949144]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-a9949144]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-a9949144]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-a9949144]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-a9949144]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-a9949144]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-a9949144]{color:#fff}nav.sidebar .container .children[data-v-a9949144]{padding-left:30px}@-moz-keyframes tada-a9949144{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-a9949144{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-a9949144{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-a9949144{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-a9949144]{animation:dialogEnter-a9949144 .3s linear forwards}.dialog-leave-active[data-v-a9949144]{animation:dialogLeave-a9949144 .3s linear forwards}@keyframes dialogEnter-a9949144{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-a9949144{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-a9949144]{animation:dialogEnter-a9949144 .2s linear forwards}.dialog1-leave-active[data-v-a9949144]{animation:dialogLeave-a9949144 .2s linear forwards}@keyframes rotateEnter-a9949144{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-a9949144]{animation:rotateEnter-a9949144 .7s;position:relative}.rotate-leave-active[data-v-a9949144]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-a9949144{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-a9949144{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-a9949144]{animation:slideOutTop-a9949144 .5s linear forwards}.slide-top-leave-active[data-v-a9949144],.slide-bottom-enter-active[data-v-a9949144]{animation:slideOutBottom-a9949144 .5s linear forwards}@keyframes slideInLeft-a9949144{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-a9949144{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-a9949144]{animation:slideInLeft-a9949144 .3s linear forwards}.slide-left-leave-active[data-v-a9949144]{animation:slideInRight-a9949144 .3s linear forwards}@keyframes slideOutLeft-a9949144{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-a9949144{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-a9949144]{animation:slideOutLeft-a9949144 .3s linear forwards}.slide-right-leave-active[data-v-a9949144]{animation:slideOutRight-a9949144 .3s linear forwards}@keyframes bganimation-a9949144{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-a9949144{0%{height:0}to{height:100px}}@keyframes fadeEnd-a9949144{0%{height:100%}to{height:0}}.fade-enter-active[data-v-a9949144]{animation:fadeStart-a9949144 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-a9949144]{animation:fadeEnd-a9949144 .1s linear forwards;overflow:hidden}.progress-container[data-v-a9949144]{height:40px;display:flex;flex-wrap:wrap;align-items:center}.progress-container .progress[data-v-a9949144]{width:300px;margin-right:10px}.progress-container span[data-v-a9949144]{font-size:14px;color:#999}@keyframes turns-c5783954{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-c5783954]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-c5783954]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-c5783954]{color:#f9ad1e}.notice_info li[data-v-c5783954]{font-size:14px;list-style:revert}.text-container[data-v-c5783954]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-c5783954]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-c5783954]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-c5783954]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-c5783954]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-c5783954]{width:100%}.text-container .text-container_item p.info-desc[data-v-c5783954]{width:100%;color:#999;font-size:14px}.page-container[data-v-c5783954]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-c5783954]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-c5783954]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-c5783954]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-c5783954],.page-container .page-flex .page-sidebar a[data-v-c5783954]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-c5783954]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-c5783954]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-c5783954]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-c5783954]{border-radius:0;padding:1rem}ul.ul-container[data-v-c5783954]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-c5783954]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-c5783954]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-c5783954]{width:100%}form.form-container[data-v-c5783954]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-c5783954]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-c5783954]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-c5783954]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-c5783954]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-c5783954],form.form-container .label-value select[data-v-c5783954]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-c5783954]:focus,form.form-container .label-value select[data-v-c5783954]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-c5783954]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-c5783954]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-c5783954],form.form-container .label-value input[type=radio][data-v-c5783954]{width:auto}form.form-container .label-value input[type=radio][data-v-c5783954]{margin:0 4px 0 0}form.form-container .label-value input[data-v-c5783954]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-c5783954]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-c5783954]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-c5783954]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-c5783954]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-c5783954]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-c5783954]:hover{background-color:#747474}form.form-container .label-msg[data-v-c5783954]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-c5783954]{color:#f9ad1e}form.form-container .label-flex[data-v-c5783954]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-c5783954]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-c5783954]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-c5783954]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-c5783954]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-c5783954]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-c5783954]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-c5783954],form.form-container1 .label-value select[data-v-c5783954]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-c5783954]:focus,form.form-container1 .label-value select[data-v-c5783954]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-c5783954]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-c5783954],form.form-container1 .label-value input[type=radio][data-v-c5783954]{width:auto}form.form-container1 .label-value input[type=radio][data-v-c5783954]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-c5783954]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-c5783954]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-c5783954]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-c5783954]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-c5783954]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-c5783954]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-c5783954]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-c5783954]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-c5783954]{color:#f9ad1e}form.form-container1 .label-flex[data-v-c5783954]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-c5783954]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-c5783954]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-c5783954]{width:100px}table.page-table th.checkbox[data-v-c5783954]{width:50px;text-align:center}table.page-table th.setting[data-v-c5783954]{width:100px;text-align:center}table.page-table thead[data-v-c5783954]{color:#909399}table.page-table thead tr[data-v-c5783954]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-c5783954]{padding:10px 16px}table.page-table tbody tr[data-v-c5783954]:hover{background-color:#eeee}table.page-table tbody tr[data-v-c5783954]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-c5783954]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-c5783954]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-c5783954]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-c5783954]{width:100px}table.popups-table th.checkbox[data-v-c5783954]{width:50px;text-align:center}table.popups-table th.setting[data-v-c5783954]{width:100px;text-align:center}table.popups-table thead[data-v-c5783954]{color:#eee}table.popups-table thead tr[data-v-c5783954]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-c5783954]{padding:10px 16px}table.popups-table tbody tr[data-v-c5783954]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-c5783954]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-c5783954]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-c5783954]{width:100%}header.header-desktop[data-v-c5783954]{display:block}header.header-mobile[data-v-c5783954]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-c5783954]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-c5783954]{width:100%;height:100%}header.header-mobile button svg path[data-v-c5783954]{fill:#fff}nav.sidebar[data-v-c5783954]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-c5783954]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-c5783954]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-c5783954]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-c5783954]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-c5783954]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-c5783954]{color:#fff}nav.sidebar .container .children[data-v-c5783954]{padding-left:30px}@-moz-keyframes tada-c5783954{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-c5783954{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-c5783954{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-c5783954{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-c5783954]{animation:dialogEnter-c5783954 .3s linear forwards}.dialog-leave-active[data-v-c5783954]{animation:dialogLeave-c5783954 .3s linear forwards}@keyframes dialogEnter-c5783954{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-c5783954{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-c5783954]{animation:dialogEnter-c5783954 .2s linear forwards}.dialog1-leave-active[data-v-c5783954]{animation:dialogLeave-c5783954 .2s linear forwards}@keyframes rotateEnter-c5783954{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-c5783954]{animation:rotateEnter-c5783954 .7s;position:relative}.rotate-leave-active[data-v-c5783954]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-c5783954{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-c5783954{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-c5783954]{animation:slideOutTop-c5783954 .5s linear forwards}.slide-top-leave-active[data-v-c5783954],.slide-bottom-enter-active[data-v-c5783954]{animation:slideOutBottom-c5783954 .5s linear forwards}@keyframes slideInLeft-c5783954{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-c5783954{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-c5783954]{animation:slideInLeft-c5783954 .3s linear forwards}.slide-left-leave-active[data-v-c5783954]{animation:slideInRight-c5783954 .3s linear forwards}@keyframes slideOutLeft-c5783954{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-c5783954{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-c5783954]{animation:slideOutLeft-c5783954 .3s linear forwards}.slide-right-leave-active[data-v-c5783954]{animation:slideOutRight-c5783954 .3s linear forwards}@keyframes bganimation-c5783954{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-c5783954{0%{height:0}to{height:100px}}@keyframes fadeEnd-c5783954{0%{height:100%}to{height:0}}.fade-enter-active[data-v-c5783954]{animation:fadeStart-c5783954 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-c5783954]{animation:fadeEnd-c5783954 .1s linear forwards;overflow:hidden}p[data-v-c5783954]{font-size:1em;color:#999;line-height:26px;text-align:left;margin-bottom:1rem}@keyframes turns-6bbc1a4d{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-6bbc1a4d]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-6bbc1a4d]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-6bbc1a4d]{color:#f9ad1e}.notice_info li[data-v-6bbc1a4d]{font-size:14px;list-style:revert}.text-container[data-v-6bbc1a4d]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-6bbc1a4d]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-6bbc1a4d]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-6bbc1a4d]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-6bbc1a4d]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-6bbc1a4d]{width:100%}.text-container .text-container_item p.info-desc[data-v-6bbc1a4d]{width:100%;color:#999;font-size:14px}.page-container[data-v-6bbc1a4d]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-6bbc1a4d]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-6bbc1a4d]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-6bbc1a4d]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-6bbc1a4d],.page-container .page-flex .page-sidebar a[data-v-6bbc1a4d]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-6bbc1a4d]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-6bbc1a4d]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-6bbc1a4d]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-6bbc1a4d]{border-radius:0;padding:1rem}ul.ul-container[data-v-6bbc1a4d]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-6bbc1a4d]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-6bbc1a4d]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-6bbc1a4d]{width:100%}form.form-container[data-v-6bbc1a4d]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-6bbc1a4d]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-6bbc1a4d]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-6bbc1a4d]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-6bbc1a4d]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-6bbc1a4d],form.form-container .label-value select[data-v-6bbc1a4d]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-6bbc1a4d]:focus,form.form-container .label-value select[data-v-6bbc1a4d]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-6bbc1a4d]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-6bbc1a4d]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-6bbc1a4d],form.form-container .label-value input[type=radio][data-v-6bbc1a4d]{width:auto}form.form-container .label-value input[type=radio][data-v-6bbc1a4d]{margin:0 4px 0 0}form.form-container .label-value input[data-v-6bbc1a4d]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-6bbc1a4d]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-6bbc1a4d]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-6bbc1a4d]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-6bbc1a4d]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-6bbc1a4d]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-6bbc1a4d]:hover{background-color:#747474}form.form-container .label-msg[data-v-6bbc1a4d]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-6bbc1a4d]{color:#f9ad1e}form.form-container .label-flex[data-v-6bbc1a4d]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-6bbc1a4d]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-6bbc1a4d]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-6bbc1a4d]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-6bbc1a4d]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-6bbc1a4d]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-6bbc1a4d]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-6bbc1a4d],form.form-container1 .label-value select[data-v-6bbc1a4d]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-6bbc1a4d]:focus,form.form-container1 .label-value select[data-v-6bbc1a4d]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-6bbc1a4d]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-6bbc1a4d],form.form-container1 .label-value input[type=radio][data-v-6bbc1a4d]{width:auto}form.form-container1 .label-value input[type=radio][data-v-6bbc1a4d]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-6bbc1a4d]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-6bbc1a4d]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-6bbc1a4d]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-6bbc1a4d]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-6bbc1a4d]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-6bbc1a4d]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-6bbc1a4d]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-6bbc1a4d]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-6bbc1a4d]{color:#f9ad1e}form.form-container1 .label-flex[data-v-6bbc1a4d]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-6bbc1a4d]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-6bbc1a4d]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-6bbc1a4d]{width:100px}table.page-table th.checkbox[data-v-6bbc1a4d]{width:50px;text-align:center}table.page-table th.setting[data-v-6bbc1a4d]{width:100px;text-align:center}table.page-table thead[data-v-6bbc1a4d]{color:#909399}table.page-table thead tr[data-v-6bbc1a4d]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-6bbc1a4d]{padding:10px 16px}table.page-table tbody tr[data-v-6bbc1a4d]:hover{background-color:#eeee}table.page-table tbody tr[data-v-6bbc1a4d]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-6bbc1a4d]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-6bbc1a4d]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-6bbc1a4d]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-6bbc1a4d]{width:100px}table.popups-table th.checkbox[data-v-6bbc1a4d]{width:50px;text-align:center}table.popups-table th.setting[data-v-6bbc1a4d]{width:100px;text-align:center}table.popups-table thead[data-v-6bbc1a4d]{color:#eee}table.popups-table thead tr[data-v-6bbc1a4d]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-6bbc1a4d]{padding:10px 16px}table.popups-table tbody tr[data-v-6bbc1a4d]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-6bbc1a4d]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-6bbc1a4d]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-6bbc1a4d]{width:100%}header.header-desktop[data-v-6bbc1a4d]{display:block}header.header-mobile[data-v-6bbc1a4d]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-6bbc1a4d]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-6bbc1a4d]{width:100%;height:100%}header.header-mobile button svg path[data-v-6bbc1a4d]{fill:#fff}nav.sidebar[data-v-6bbc1a4d]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-6bbc1a4d]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-6bbc1a4d]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-6bbc1a4d]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-6bbc1a4d]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-6bbc1a4d]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-6bbc1a4d]{color:#fff}nav.sidebar .container .children[data-v-6bbc1a4d]{padding-left:30px}@-moz-keyframes tada-6bbc1a4d{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-6bbc1a4d{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-6bbc1a4d{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-6bbc1a4d{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-6bbc1a4d]{animation:dialogEnter-6bbc1a4d .3s linear forwards}.dialog-leave-active[data-v-6bbc1a4d]{animation:dialogLeave-6bbc1a4d .3s linear forwards}@keyframes dialogEnter-6bbc1a4d{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-6bbc1a4d{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-6bbc1a4d]{animation:dialogEnter-6bbc1a4d .2s linear forwards}.dialog1-leave-active[data-v-6bbc1a4d]{animation:dialogLeave-6bbc1a4d .2s linear forwards}@keyframes rotateEnter-6bbc1a4d{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-6bbc1a4d]{animation:rotateEnter-6bbc1a4d .7s;position:relative}.rotate-leave-active[data-v-6bbc1a4d]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-6bbc1a4d{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-6bbc1a4d{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-6bbc1a4d]{animation:slideOutTop-6bbc1a4d .5s linear forwards}.slide-top-leave-active[data-v-6bbc1a4d],.slide-bottom-enter-active[data-v-6bbc1a4d]{animation:slideOutBottom-6bbc1a4d .5s linear forwards}@keyframes slideInLeft-6bbc1a4d{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-6bbc1a4d{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-6bbc1a4d]{animation:slideInLeft-6bbc1a4d .3s linear forwards}.slide-left-leave-active[data-v-6bbc1a4d]{animation:slideInRight-6bbc1a4d .3s linear forwards}@keyframes slideOutLeft-6bbc1a4d{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-6bbc1a4d{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-6bbc1a4d]{animation:slideOutLeft-6bbc1a4d .3s linear forwards}.slide-right-leave-active[data-v-6bbc1a4d]{animation:slideOutRight-6bbc1a4d .3s linear forwards}@keyframes bganimation-6bbc1a4d{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-6bbc1a4d{0%{height:0}to{height:100px}}@keyframes fadeEnd-6bbc1a4d{0%{height:100%}to{height:0}}.fade-enter-active[data-v-6bbc1a4d]{animation:fadeStart-6bbc1a4d .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-6bbc1a4d]{animation:fadeEnd-6bbc1a4d .1s linear forwards;overflow:hidden}p[data-v-6bbc1a4d]{font-size:1em;color:#999;line-height:20px;text-align:center}.label-msg.warning[data-v-6bbc1a4d]{width:100%;text-align:center;height:300px;line-height:300px}@keyframes turns-f0f8da84{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-f0f8da84]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-f0f8da84]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-f0f8da84]{color:#f9ad1e}.notice_info li[data-v-f0f8da84]{font-size:14px;list-style:revert}.text-container[data-v-f0f8da84]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-f0f8da84]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-f0f8da84]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-f0f8da84]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-f0f8da84]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-f0f8da84]{width:100%}.text-container .text-container_item p.info-desc[data-v-f0f8da84]{width:100%;color:#999;font-size:14px}.page-container[data-v-f0f8da84]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-f0f8da84]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-f0f8da84]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-f0f8da84]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-f0f8da84],.page-container .page-flex .page-sidebar a[data-v-f0f8da84]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-f0f8da84]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-f0f8da84]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-f0f8da84]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-f0f8da84]{border-radius:0;padding:1rem}ul.ul-container[data-v-f0f8da84]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-f0f8da84]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-f0f8da84]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-f0f8da84]{width:100%}form.form-container[data-v-f0f8da84]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-f0f8da84]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-f0f8da84]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-f0f8da84]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-f0f8da84]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-f0f8da84],form.form-container .label-value select[data-v-f0f8da84]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-f0f8da84]:focus,form.form-container .label-value select[data-v-f0f8da84]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-f0f8da84]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-f0f8da84]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-f0f8da84],form.form-container .label-value input[type=radio][data-v-f0f8da84]{width:auto}form.form-container .label-value input[type=radio][data-v-f0f8da84]{margin:0 4px 0 0}form.form-container .label-value input[data-v-f0f8da84]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-f0f8da84]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-f0f8da84]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-f0f8da84]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-f0f8da84]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-f0f8da84]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-f0f8da84]:hover{background-color:#747474}form.form-container .label-msg[data-v-f0f8da84]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-f0f8da84]{color:#f9ad1e}form.form-container .label-flex[data-v-f0f8da84]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-f0f8da84]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-f0f8da84]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-f0f8da84]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-f0f8da84]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-f0f8da84]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-f0f8da84]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-f0f8da84],form.form-container1 .label-value select[data-v-f0f8da84]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-f0f8da84]:focus,form.form-container1 .label-value select[data-v-f0f8da84]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-f0f8da84]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-f0f8da84],form.form-container1 .label-value input[type=radio][data-v-f0f8da84]{width:auto}form.form-container1 .label-value input[type=radio][data-v-f0f8da84]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-f0f8da84]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-f0f8da84]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-f0f8da84]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-f0f8da84]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-f0f8da84]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-f0f8da84]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-f0f8da84]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-f0f8da84]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-f0f8da84]{color:#f9ad1e}form.form-container1 .label-flex[data-v-f0f8da84]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-f0f8da84]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-f0f8da84]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-f0f8da84]{width:100px}table.page-table th.checkbox[data-v-f0f8da84]{width:50px;text-align:center}table.page-table th.setting[data-v-f0f8da84]{width:100px;text-align:center}table.page-table thead[data-v-f0f8da84]{color:#909399}table.page-table thead tr[data-v-f0f8da84]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-f0f8da84]{padding:10px 16px}table.page-table tbody tr[data-v-f0f8da84]:hover{background-color:#eeee}table.page-table tbody tr[data-v-f0f8da84]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-f0f8da84]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-f0f8da84]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-f0f8da84]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-f0f8da84]{width:100px}table.popups-table th.checkbox[data-v-f0f8da84]{width:50px;text-align:center}table.popups-table th.setting[data-v-f0f8da84]{width:100px;text-align:center}table.popups-table thead[data-v-f0f8da84]{color:#eee}table.popups-table thead tr[data-v-f0f8da84]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-f0f8da84]{padding:10px 16px}table.popups-table tbody tr[data-v-f0f8da84]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-f0f8da84]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-f0f8da84]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-f0f8da84]{width:100%}header.header-desktop[data-v-f0f8da84]{display:block}header.header-mobile[data-v-f0f8da84]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-f0f8da84]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-f0f8da84]{width:100%;height:100%}header.header-mobile button svg path[data-v-f0f8da84]{fill:#fff}nav.sidebar[data-v-f0f8da84]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-f0f8da84]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-f0f8da84]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-f0f8da84]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-f0f8da84]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-f0f8da84]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-f0f8da84]{color:#fff}nav.sidebar .container .children[data-v-f0f8da84]{padding-left:30px}@-moz-keyframes tada-f0f8da84{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-f0f8da84{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-f0f8da84{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-f0f8da84{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-f0f8da84]{animation:dialogEnter-f0f8da84 .3s linear forwards}.dialog-leave-active[data-v-f0f8da84]{animation:dialogLeave-f0f8da84 .3s linear forwards}@keyframes dialogEnter-f0f8da84{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-f0f8da84{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-f0f8da84]{animation:dialogEnter-f0f8da84 .2s linear forwards}.dialog1-leave-active[data-v-f0f8da84]{animation:dialogLeave-f0f8da84 .2s linear forwards}@keyframes rotateEnter-f0f8da84{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-f0f8da84]{animation:rotateEnter-f0f8da84 .7s;position:relative}.rotate-leave-active[data-v-f0f8da84]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-f0f8da84{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-f0f8da84{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-f0f8da84]{animation:slideOutTop-f0f8da84 .5s linear forwards}.slide-top-leave-active[data-v-f0f8da84],.slide-bottom-enter-active[data-v-f0f8da84]{animation:slideOutBottom-f0f8da84 .5s linear forwards}@keyframes slideInLeft-f0f8da84{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-f0f8da84{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-f0f8da84]{animation:slideInLeft-f0f8da84 .3s linear forwards}.slide-left-leave-active[data-v-f0f8da84]{animation:slideInRight-f0f8da84 .3s linear forwards}@keyframes slideOutLeft-f0f8da84{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-f0f8da84{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-f0f8da84]{animation:slideOutLeft-f0f8da84 .3s linear forwards}.slide-right-leave-active[data-v-f0f8da84]{animation:slideOutRight-f0f8da84 .3s linear forwards}@keyframes bganimation-f0f8da84{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-f0f8da84{0%{height:0}to{height:100px}}@keyframes fadeEnd-f0f8da84{0%{height:100%}to{height:0}}.fade-enter-active[data-v-f0f8da84]{animation:fadeStart-f0f8da84 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-f0f8da84]{animation:fadeEnd-f0f8da84 .1s linear forwards;overflow:hidden}.disk-item[data-v-f0f8da84]{width:100%;margin-top:10px;padding-bottom:5px;border-bottom:1px solid #eee;cursor:pointer}.disk-item .disk-item_contanier[data-v-f0f8da84]{width:100%;display:flex;flex-wrap:wrap;align-items:center}.disk-item .disk-item_contanier .disk-item_icon[data-v-f0f8da84]{width:30px;height:30px;margin-right:10px}.disk-item .disk-item_contanier .disk-item_icon svg[data-v-f0f8da84]{width:100%;height:100%}.disk-item .disk-item_contanier .disk-item_name[data-v-f0f8da84]{color:#666;font-size:14px}.disk-item .disk-item_contanier .disk-item_used[data-v-f0f8da84]{color:#666;font-size:13px}.disk-item .disk-item_info[data-v-f0f8da84]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end;margin-top:10px}.disk-item .disk-item_info span[data-v-f0f8da84]{margin-right:10px;color:#666;font-size:14px}.disk-item .disk-item_info a[data-v-f0f8da84]{margin-left:16px;color:#666;font-size:14px}.disk-item .disk-item_info span[data-v-f0f8da84]:hover,.disk-item .disk-item_info a[data-v-f0f8da84]:hover{color:#418cff}@keyframes turns-bf0d8af0{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-bf0d8af0]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-bf0d8af0]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-bf0d8af0]{color:#f9ad1e}.notice_info li[data-v-bf0d8af0]{font-size:14px;list-style:revert}.text-container[data-v-bf0d8af0]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-bf0d8af0]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-bf0d8af0]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-bf0d8af0]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-bf0d8af0]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-bf0d8af0]{width:100%}.text-container .text-container_item p.info-desc[data-v-bf0d8af0]{width:100%;color:#999;font-size:14px}.page-container[data-v-bf0d8af0]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-bf0d8af0]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-bf0d8af0]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-bf0d8af0]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-bf0d8af0],.page-container .page-flex .page-sidebar a[data-v-bf0d8af0]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-bf0d8af0]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-bf0d8af0]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-bf0d8af0]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-bf0d8af0]{border-radius:0;padding:1rem}ul.ul-container[data-v-bf0d8af0]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-bf0d8af0]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-bf0d8af0]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-bf0d8af0]{width:100%}form.form-container[data-v-bf0d8af0]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-bf0d8af0]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-bf0d8af0]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-bf0d8af0]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-bf0d8af0]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-bf0d8af0],form.form-container .label-value select[data-v-bf0d8af0]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-bf0d8af0]:focus,form.form-container .label-value select[data-v-bf0d8af0]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-bf0d8af0]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-bf0d8af0]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-bf0d8af0],form.form-container .label-value input[type=radio][data-v-bf0d8af0]{width:auto}form.form-container .label-value input[type=radio][data-v-bf0d8af0]{margin:0 4px 0 0}form.form-container .label-value input[data-v-bf0d8af0]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-bf0d8af0]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-bf0d8af0]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-bf0d8af0]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-bf0d8af0]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-bf0d8af0]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-bf0d8af0]:hover{background-color:#747474}form.form-container .label-msg[data-v-bf0d8af0]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-bf0d8af0]{color:#f9ad1e}form.form-container .label-flex[data-v-bf0d8af0]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-bf0d8af0]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-bf0d8af0]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-bf0d8af0]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-bf0d8af0]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-bf0d8af0]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-bf0d8af0]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-bf0d8af0],form.form-container1 .label-value select[data-v-bf0d8af0]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-bf0d8af0]:focus,form.form-container1 .label-value select[data-v-bf0d8af0]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-bf0d8af0]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-bf0d8af0],form.form-container1 .label-value input[type=radio][data-v-bf0d8af0]{width:auto}form.form-container1 .label-value input[type=radio][data-v-bf0d8af0]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-bf0d8af0]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-bf0d8af0]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-bf0d8af0]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-bf0d8af0]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-bf0d8af0]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-bf0d8af0]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-bf0d8af0]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-bf0d8af0]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-bf0d8af0]{color:#f9ad1e}form.form-container1 .label-flex[data-v-bf0d8af0]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-bf0d8af0]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-bf0d8af0]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-bf0d8af0]{width:100px}table.page-table th.checkbox[data-v-bf0d8af0]{width:50px;text-align:center}table.page-table th.setting[data-v-bf0d8af0]{width:100px;text-align:center}table.page-table thead[data-v-bf0d8af0]{color:#909399}table.page-table thead tr[data-v-bf0d8af0]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-bf0d8af0]{padding:10px 16px}table.page-table tbody tr[data-v-bf0d8af0]:hover{background-color:#eeee}table.page-table tbody tr[data-v-bf0d8af0]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-bf0d8af0]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-bf0d8af0]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-bf0d8af0]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-bf0d8af0]{width:100px}table.popups-table th.checkbox[data-v-bf0d8af0]{width:50px;text-align:center}table.popups-table th.setting[data-v-bf0d8af0]{width:100px;text-align:center}table.popups-table thead[data-v-bf0d8af0]{color:#eee}table.popups-table thead tr[data-v-bf0d8af0]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-bf0d8af0]{padding:10px 16px}table.popups-table tbody tr[data-v-bf0d8af0]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-bf0d8af0]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-bf0d8af0]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-bf0d8af0]{width:100%}header.header-desktop[data-v-bf0d8af0]{display:block}header.header-mobile[data-v-bf0d8af0]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-bf0d8af0]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-bf0d8af0]{width:100%;height:100%}header.header-mobile button svg path[data-v-bf0d8af0]{fill:#fff}nav.sidebar[data-v-bf0d8af0]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-bf0d8af0]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-bf0d8af0]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-bf0d8af0]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-bf0d8af0]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-bf0d8af0]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-bf0d8af0]{color:#fff}nav.sidebar .container .children[data-v-bf0d8af0]{padding-left:30px}@-moz-keyframes tada-bf0d8af0{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-bf0d8af0{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-bf0d8af0{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-bf0d8af0{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-bf0d8af0]{animation:dialogEnter-bf0d8af0 .3s linear forwards}.dialog-leave-active[data-v-bf0d8af0]{animation:dialogLeave-bf0d8af0 .3s linear forwards}@keyframes dialogEnter-bf0d8af0{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-bf0d8af0{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-bf0d8af0]{animation:dialogEnter-bf0d8af0 .2s linear forwards}.dialog1-leave-active[data-v-bf0d8af0]{animation:dialogLeave-bf0d8af0 .2s linear forwards}@keyframes rotateEnter-bf0d8af0{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-bf0d8af0]{animation:rotateEnter-bf0d8af0 .7s;position:relative}.rotate-leave-active[data-v-bf0d8af0]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-bf0d8af0{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-bf0d8af0{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-bf0d8af0]{animation:slideOutTop-bf0d8af0 .5s linear forwards}.slide-top-leave-active[data-v-bf0d8af0],.slide-bottom-enter-active[data-v-bf0d8af0]{animation:slideOutBottom-bf0d8af0 .5s linear forwards}@keyframes slideInLeft-bf0d8af0{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-bf0d8af0{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-bf0d8af0]{animation:slideInLeft-bf0d8af0 .3s linear forwards}.slide-left-leave-active[data-v-bf0d8af0]{animation:slideInRight-bf0d8af0 .3s linear forwards}@keyframes slideOutLeft-bf0d8af0{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-bf0d8af0{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-bf0d8af0]{animation:slideOutLeft-bf0d8af0 .3s linear forwards}.slide-right-leave-active[data-v-bf0d8af0]{animation:slideOutRight-bf0d8af0 .3s linear forwards}@keyframes bganimation-bf0d8af0{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-bf0d8af0{0%{height:0}to{height:100px}}@keyframes fadeEnd-bf0d8af0{0%{height:100%}to{height:0}}.fade-enter-active[data-v-bf0d8af0]{animation:fadeStart-bf0d8af0 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-bf0d8af0]{animation:fadeEnd-bf0d8af0 .1s linear forwards;overflow:hidden}main[data-v-bf0d8af0]{padding:0 1rem}@keyframes turns-701aba0b{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-701aba0b]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-701aba0b]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-701aba0b]{color:#f9ad1e}.notice_info li[data-v-701aba0b]{font-size:14px;list-style:revert}.text-container[data-v-701aba0b]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-701aba0b]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-701aba0b]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-701aba0b]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-701aba0b]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-701aba0b]{width:100%}.text-container .text-container_item p.info-desc[data-v-701aba0b]{width:100%;color:#999;font-size:14px}.page-container[data-v-701aba0b]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-701aba0b]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-701aba0b]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-701aba0b]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-701aba0b],.page-container .page-flex .page-sidebar a[data-v-701aba0b]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-701aba0b]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-701aba0b]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-701aba0b]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-701aba0b]{border-radius:0;padding:1rem}ul.ul-container[data-v-701aba0b]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-701aba0b]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-701aba0b]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-701aba0b]{width:100%}form.form-container[data-v-701aba0b]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-701aba0b]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-701aba0b]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-701aba0b]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-701aba0b]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-701aba0b],form.form-container .label-value select[data-v-701aba0b]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-701aba0b]:focus,form.form-container .label-value select[data-v-701aba0b]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-701aba0b]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-701aba0b]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-701aba0b],form.form-container .label-value input[type=radio][data-v-701aba0b]{width:auto}form.form-container .label-value input[type=radio][data-v-701aba0b]{margin:0 4px 0 0}form.form-container .label-value input[data-v-701aba0b]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-701aba0b]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-701aba0b]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-701aba0b]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-701aba0b]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-701aba0b]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-701aba0b]:hover{background-color:#747474}form.form-container .label-msg[data-v-701aba0b]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-701aba0b]{color:#f9ad1e}form.form-container .label-flex[data-v-701aba0b]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-701aba0b]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-701aba0b]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-701aba0b]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-701aba0b]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-701aba0b]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-701aba0b]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-701aba0b],form.form-container1 .label-value select[data-v-701aba0b]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-701aba0b]:focus,form.form-container1 .label-value select[data-v-701aba0b]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-701aba0b]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-701aba0b],form.form-container1 .label-value input[type=radio][data-v-701aba0b]{width:auto}form.form-container1 .label-value input[type=radio][data-v-701aba0b]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-701aba0b]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-701aba0b]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-701aba0b]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-701aba0b]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-701aba0b]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-701aba0b]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-701aba0b]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-701aba0b]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-701aba0b]{color:#f9ad1e}form.form-container1 .label-flex[data-v-701aba0b]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-701aba0b]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-701aba0b]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-701aba0b]{width:100px}table.page-table th.checkbox[data-v-701aba0b]{width:50px;text-align:center}table.page-table th.setting[data-v-701aba0b]{width:100px;text-align:center}table.page-table thead[data-v-701aba0b]{color:#909399}table.page-table thead tr[data-v-701aba0b]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-701aba0b]{padding:10px 16px}table.page-table tbody tr[data-v-701aba0b]:hover{background-color:#eeee}table.page-table tbody tr[data-v-701aba0b]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-701aba0b]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-701aba0b]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-701aba0b]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-701aba0b]{width:100px}table.popups-table th.checkbox[data-v-701aba0b]{width:50px;text-align:center}table.popups-table th.setting[data-v-701aba0b]{width:100px;text-align:center}table.popups-table thead[data-v-701aba0b]{color:#eee}table.popups-table thead tr[data-v-701aba0b]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-701aba0b]{padding:10px 16px}table.popups-table tbody tr[data-v-701aba0b]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-701aba0b]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-701aba0b]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-701aba0b]{width:100%}header.header-desktop[data-v-701aba0b]{display:block}header.header-mobile[data-v-701aba0b]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-701aba0b]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-701aba0b]{width:100%;height:100%}header.header-mobile button svg path[data-v-701aba0b]{fill:#fff}nav.sidebar[data-v-701aba0b]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-701aba0b]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-701aba0b]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-701aba0b]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-701aba0b]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-701aba0b]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-701aba0b]{color:#fff}nav.sidebar .container .children[data-v-701aba0b]{padding-left:30px}@-moz-keyframes tada-701aba0b{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-701aba0b{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-701aba0b{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-701aba0b{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-701aba0b]{animation:dialogEnter-701aba0b .3s linear forwards}.dialog-leave-active[data-v-701aba0b]{animation:dialogLeave-701aba0b .3s linear forwards}@keyframes dialogEnter-701aba0b{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-701aba0b{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-701aba0b]{animation:dialogEnter-701aba0b .2s linear forwards}.dialog1-leave-active[data-v-701aba0b]{animation:dialogLeave-701aba0b .2s linear forwards}@keyframes rotateEnter-701aba0b{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-701aba0b]{animation:rotateEnter-701aba0b .7s;position:relative}.rotate-leave-active[data-v-701aba0b]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-701aba0b{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-701aba0b{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-701aba0b]{animation:slideOutTop-701aba0b .5s linear forwards}.slide-top-leave-active[data-v-701aba0b],.slide-bottom-enter-active[data-v-701aba0b]{animation:slideOutBottom-701aba0b .5s linear forwards}@keyframes slideInLeft-701aba0b{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-701aba0b{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-701aba0b]{animation:slideInLeft-701aba0b .3s linear forwards}.slide-left-leave-active[data-v-701aba0b]{animation:slideInRight-701aba0b .3s linear forwards}@keyframes slideOutLeft-701aba0b{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-701aba0b{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-701aba0b]{animation:slideOutLeft-701aba0b .3s linear forwards}.slide-right-leave-active[data-v-701aba0b]{animation:slideOutRight-701aba0b .3s linear forwards}@keyframes bganimation-701aba0b{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-701aba0b{0%{height:0}to{height:100px}}@keyframes fadeEnd-701aba0b{0%{height:100%}to{height:0}}.fade-enter-active[data-v-701aba0b]{animation:fadeStart-701aba0b .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-701aba0b]{animation:fadeEnd-701aba0b .1s linear forwards;overflow:hidden}.page-top-container[data-v-701aba0b]{background-color:#fff;padding:1rem;border-radius:1rem}.page-top-container .page-tabs[data-v-701aba0b]{width:100%;display:flex;flex-wrap:wrap;align-items:center;background-color:#fff;padding:0 1rem;border-radius:6px;margin-bottom:1rem;backdrop-filter:blur(20px)}.page-top-container .page-tabs a[data-v-701aba0b]{display:inline-block;transition:all .2s;margin:0;color:#404040;text-decoration:none;padding:1.3rem .8rem;font-size:1.1em;position:relative}.page-top-container .page-tabs a.router-link-active.router-link-exact-active[data-v-701aba0b]{color:#4388ff}.page-top-container .page-tabs a.router-link-active.router-link-exact-active[data-v-701aba0b]:after{content:"";display:block;position:absolute;background-color:#4388ff;bottom:0;left:15%;right:15%;height:4px;border-radius:6px}.page-top-container .page-main[data-v-701aba0b]{width:100%;display:flex;flex-wrap:wrap;align-items:center;border-radius:6px}.page-top-container .page-footer[data-v-701aba0b]{padding:160px 0 40px;text-align:center;color:#666;font-size:14px}.page-top-container .page-footer a[data-v-701aba0b]{color:#666}@keyframes turns-16a9b49b{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-16a9b49b]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-16a9b49b]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-16a9b49b]{color:#f9ad1e}.notice_info li[data-v-16a9b49b]{font-size:14px;list-style:revert}.text-container[data-v-16a9b49b]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-16a9b49b]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-16a9b49b]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-16a9b49b]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-16a9b49b]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-16a9b49b]{width:100%}.text-container .text-container_item p.info-desc[data-v-16a9b49b]{width:100%;color:#999;font-size:14px}.page-container[data-v-16a9b49b]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-16a9b49b]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-16a9b49b]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-16a9b49b]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-16a9b49b],.page-container .page-flex .page-sidebar a[data-v-16a9b49b]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-16a9b49b]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-16a9b49b]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-16a9b49b]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-16a9b49b]{border-radius:0;padding:1rem}ul.ul-container[data-v-16a9b49b]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-16a9b49b]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-16a9b49b]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-16a9b49b]{width:100%}form.form-container[data-v-16a9b49b]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-16a9b49b]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-16a9b49b]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-16a9b49b]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-16a9b49b]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-16a9b49b],form.form-container .label-value select[data-v-16a9b49b]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-16a9b49b]:focus,form.form-container .label-value select[data-v-16a9b49b]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-16a9b49b]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-16a9b49b]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-16a9b49b],form.form-container .label-value input[type=radio][data-v-16a9b49b]{width:auto}form.form-container .label-value input[type=radio][data-v-16a9b49b]{margin:0 4px 0 0}form.form-container .label-value input[data-v-16a9b49b]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-16a9b49b]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-16a9b49b]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-16a9b49b]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-16a9b49b]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-16a9b49b]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-16a9b49b]:hover{background-color:#747474}form.form-container .label-msg[data-v-16a9b49b]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-16a9b49b]{color:#f9ad1e}form.form-container .label-flex[data-v-16a9b49b]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-16a9b49b]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-16a9b49b]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-16a9b49b]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-16a9b49b]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-16a9b49b]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-16a9b49b]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-16a9b49b],form.form-container1 .label-value select[data-v-16a9b49b]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-16a9b49b]:focus,form.form-container1 .label-value select[data-v-16a9b49b]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-16a9b49b]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-16a9b49b],form.form-container1 .label-value input[type=radio][data-v-16a9b49b]{width:auto}form.form-container1 .label-value input[type=radio][data-v-16a9b49b]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-16a9b49b]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-16a9b49b]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-16a9b49b]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-16a9b49b]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-16a9b49b]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-16a9b49b]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-16a9b49b]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-16a9b49b]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-16a9b49b]{color:#f9ad1e}form.form-container1 .label-flex[data-v-16a9b49b]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-16a9b49b]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-16a9b49b]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-16a9b49b]{width:100px}table.page-table th.checkbox[data-v-16a9b49b]{width:50px;text-align:center}table.page-table th.setting[data-v-16a9b49b]{width:100px;text-align:center}table.page-table thead[data-v-16a9b49b]{color:#909399}table.page-table thead tr[data-v-16a9b49b]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-16a9b49b]{padding:10px 16px}table.page-table tbody tr[data-v-16a9b49b]:hover{background-color:#eeee}table.page-table tbody tr[data-v-16a9b49b]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-16a9b49b]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-16a9b49b]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-16a9b49b]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-16a9b49b]{width:100px}table.popups-table th.checkbox[data-v-16a9b49b]{width:50px;text-align:center}table.popups-table th.setting[data-v-16a9b49b]{width:100px;text-align:center}table.popups-table thead[data-v-16a9b49b]{color:#eee}table.popups-table thead tr[data-v-16a9b49b]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-16a9b49b]{padding:10px 16px}table.popups-table tbody tr[data-v-16a9b49b]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-16a9b49b]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-16a9b49b]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-16a9b49b]{width:100%}header.header-desktop[data-v-16a9b49b]{display:block}header.header-mobile[data-v-16a9b49b]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-16a9b49b]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-16a9b49b]{width:100%;height:100%}header.header-mobile button svg path[data-v-16a9b49b]{fill:#fff}nav.sidebar[data-v-16a9b49b]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-16a9b49b]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-16a9b49b]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-16a9b49b]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-16a9b49b]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-16a9b49b]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-16a9b49b]{color:#fff}nav.sidebar .container .children[data-v-16a9b49b]{padding-left:30px}@-moz-keyframes tada-16a9b49b{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-16a9b49b{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-16a9b49b{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-16a9b49b{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-16a9b49b]{animation:dialogEnter-16a9b49b .3s linear forwards}.dialog-leave-active[data-v-16a9b49b]{animation:dialogLeave-16a9b49b .3s linear forwards}@keyframes dialogEnter-16a9b49b{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-16a9b49b{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-16a9b49b]{animation:dialogEnter-16a9b49b .2s linear forwards}.dialog1-leave-active[data-v-16a9b49b]{animation:dialogLeave-16a9b49b .2s linear forwards}@keyframes rotateEnter-16a9b49b{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-16a9b49b]{animation:rotateEnter-16a9b49b .7s;position:relative}.rotate-leave-active[data-v-16a9b49b]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-16a9b49b{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-16a9b49b{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-16a9b49b]{animation:slideOutTop-16a9b49b .5s linear forwards}.slide-top-leave-active[data-v-16a9b49b],.slide-bottom-enter-active[data-v-16a9b49b]{animation:slideOutBottom-16a9b49b .5s linear forwards}@keyframes slideInLeft-16a9b49b{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-16a9b49b{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-16a9b49b]{animation:slideInLeft-16a9b49b .3s linear forwards}.slide-left-leave-active[data-v-16a9b49b]{animation:slideInRight-16a9b49b .3s linear forwards}@keyframes slideOutLeft-16a9b49b{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-16a9b49b{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-16a9b49b]{animation:slideOutLeft-16a9b49b .3s linear forwards}.slide-right-leave-active[data-v-16a9b49b]{animation:slideOutRight-16a9b49b .3s linear forwards}@keyframes bganimation-16a9b49b{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-16a9b49b{0%{height:0}to{height:100px}}@keyframes fadeEnd-16a9b49b{0%{height:100%}to{height:0}}.fade-enter-active[data-v-16a9b49b]{animation:fadeStart-16a9b49b .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-16a9b49b]{animation:fadeEnd-16a9b49b .1s linear forwards;overflow:hidden}th.flex-icon[data-v-16a9b49b]{display:flex;align-items:center}th.flex-icon svg[data-v-16a9b49b]{width:35px;height:35px;margin-right:5px}@keyframes turns-613b66e3{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-613b66e3]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-613b66e3]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-613b66e3]{color:#f9ad1e}.notice_info li[data-v-613b66e3]{font-size:14px;list-style:revert}.text-container[data-v-613b66e3]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-613b66e3]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-613b66e3]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-613b66e3]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-613b66e3]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-613b66e3]{width:100%}.text-container .text-container_item p.info-desc[data-v-613b66e3]{width:100%;color:#999;font-size:14px}.page-container[data-v-613b66e3]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-613b66e3]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-613b66e3]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-613b66e3]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-613b66e3],.page-container .page-flex .page-sidebar a[data-v-613b66e3]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-613b66e3]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-613b66e3]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-613b66e3]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-613b66e3]{border-radius:0;padding:1rem}ul.ul-container[data-v-613b66e3]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-613b66e3]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-613b66e3]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-613b66e3]{width:100%}form.form-container[data-v-613b66e3]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-613b66e3]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-613b66e3]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-613b66e3]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-613b66e3]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-613b66e3],form.form-container .label-value select[data-v-613b66e3]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-613b66e3]:focus,form.form-container .label-value select[data-v-613b66e3]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-613b66e3]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-613b66e3]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-613b66e3],form.form-container .label-value input[type=radio][data-v-613b66e3]{width:auto}form.form-container .label-value input[type=radio][data-v-613b66e3]{margin:0 4px 0 0}form.form-container .label-value input[data-v-613b66e3]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-613b66e3]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-613b66e3]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-613b66e3]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-613b66e3]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-613b66e3]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-613b66e3]:hover{background-color:#747474}form.form-container .label-msg[data-v-613b66e3]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-613b66e3]{color:#f9ad1e}form.form-container .label-flex[data-v-613b66e3]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-613b66e3]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-613b66e3]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-613b66e3]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-613b66e3]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-613b66e3]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-613b66e3]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-613b66e3],form.form-container1 .label-value select[data-v-613b66e3]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-613b66e3]:focus,form.form-container1 .label-value select[data-v-613b66e3]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-613b66e3]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-613b66e3],form.form-container1 .label-value input[type=radio][data-v-613b66e3]{width:auto}form.form-container1 .label-value input[type=radio][data-v-613b66e3]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-613b66e3]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-613b66e3]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-613b66e3]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-613b66e3]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-613b66e3]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-613b66e3]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-613b66e3]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-613b66e3]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-613b66e3]{color:#f9ad1e}form.form-container1 .label-flex[data-v-613b66e3]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-613b66e3]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-613b66e3]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-613b66e3]{width:100px}table.page-table th.checkbox[data-v-613b66e3]{width:50px;text-align:center}table.page-table th.setting[data-v-613b66e3]{width:100px;text-align:center}table.page-table thead[data-v-613b66e3]{color:#909399}table.page-table thead tr[data-v-613b66e3]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-613b66e3]{padding:10px 16px}table.page-table tbody tr[data-v-613b66e3]:hover{background-color:#eeee}table.page-table tbody tr[data-v-613b66e3]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-613b66e3]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-613b66e3]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-613b66e3]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-613b66e3]{width:100px}table.popups-table th.checkbox[data-v-613b66e3]{width:50px;text-align:center}table.popups-table th.setting[data-v-613b66e3]{width:100px;text-align:center}table.popups-table thead[data-v-613b66e3]{color:#eee}table.popups-table thead tr[data-v-613b66e3]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-613b66e3]{padding:10px 16px}table.popups-table tbody tr[data-v-613b66e3]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-613b66e3]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-613b66e3]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-613b66e3]{width:100%}header.header-desktop[data-v-613b66e3]{display:block}header.header-mobile[data-v-613b66e3]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-613b66e3]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-613b66e3]{width:100%;height:100%}header.header-mobile button svg path[data-v-613b66e3]{fill:#fff}nav.sidebar[data-v-613b66e3]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-613b66e3]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-613b66e3]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-613b66e3]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-613b66e3]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-613b66e3]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-613b66e3]{color:#fff}nav.sidebar .container .children[data-v-613b66e3]{padding-left:30px}@-moz-keyframes tada-613b66e3{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-613b66e3{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-613b66e3{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-613b66e3{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-613b66e3]{animation:dialogEnter-613b66e3 .3s linear forwards}.dialog-leave-active[data-v-613b66e3]{animation:dialogLeave-613b66e3 .3s linear forwards}@keyframes dialogEnter-613b66e3{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-613b66e3{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-613b66e3]{animation:dialogEnter-613b66e3 .2s linear forwards}.dialog1-leave-active[data-v-613b66e3]{animation:dialogLeave-613b66e3 .2s linear forwards}@keyframes rotateEnter-613b66e3{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-613b66e3]{animation:rotateEnter-613b66e3 .7s;position:relative}.rotate-leave-active[data-v-613b66e3]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-613b66e3{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-613b66e3{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-613b66e3]{animation:slideOutTop-613b66e3 .5s linear forwards}.slide-top-leave-active[data-v-613b66e3],.slide-bottom-enter-active[data-v-613b66e3]{animation:slideOutBottom-613b66e3 .5s linear forwards}@keyframes slideInLeft-613b66e3{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-613b66e3{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-613b66e3]{animation:slideInLeft-613b66e3 .3s linear forwards}.slide-left-leave-active[data-v-613b66e3]{animation:slideInRight-613b66e3 .3s linear forwards}@keyframes slideOutLeft-613b66e3{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-613b66e3{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-613b66e3]{animation:slideOutLeft-613b66e3 .3s linear forwards}.slide-right-leave-active[data-v-613b66e3]{animation:slideOutRight-613b66e3 .3s linear forwards}@keyframes bganimation-613b66e3{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-613b66e3{0%{height:0}to{height:100px}}@keyframes fadeEnd-613b66e3{0%{height:100%}to{height:0}}.fade-enter-active[data-v-613b66e3]{animation:fadeStart-613b66e3 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-613b66e3]{animation:fadeEnd-613b66e3 .1s linear forwards;overflow:hidden}.text-container_item_title[data-v-613b66e3]{width:200px}.text-container_item_flex .text-container_item_block[data-v-613b66e3]{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.text-container_item_flex a[data-v-613b66e3]{font-size:14px}.text-container_item_flex a[href^=h][data-v-613b66e3]{color:#418cff}.text-container_item_flex a[href^=h][data-v-613b66e3]:hover{opacity:.8}.text-container_item_flex a.setting[data-v-613b66e3]{border-radius:4px;font-size:12px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;color:#418cff;display:inline-block;border:1px solid #418cff;cursor:pointer;background:none;padding:0 6px;height:26px;line-height:26px;margin-left:2rem}.text-container_item_flex a.setting[data-v-613b66e3]:hover{background-color:#418cff;color:#fff;transition:.2s}.text-container_item_flex button[data-v-613b66e3]{border-radius:4px;font-size:14px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;color:#418cff;display:inline-block;padding:6px 16px;border:1px solid #418cff;cursor:pointer;background:none}.text-container_item_flex button[data-v-613b66e3]:hover{background-color:#418cff;color:#fff;transition:.2s}.text-container_item_flex p.info-desc[data-v-613b66e3]{vertical-align:middle;line-height:22px}.text-container_item_flex p.info-desc svg[data-v-613b66e3]{width:16px;height:16px;opacity:.5;vertical-align:sub}@keyframes turns-7b2637d8{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-7b2637d8]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-7b2637d8]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-7b2637d8]{color:#f9ad1e}.notice_info li[data-v-7b2637d8]{font-size:14px;list-style:revert}.text-container[data-v-7b2637d8]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-7b2637d8]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-7b2637d8]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-7b2637d8]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-7b2637d8]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-7b2637d8]{width:100%}.text-container .text-container_item p.info-desc[data-v-7b2637d8]{width:100%;color:#999;font-size:14px}.page-container[data-v-7b2637d8]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-7b2637d8]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-7b2637d8]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-7b2637d8]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-7b2637d8],.page-container .page-flex .page-sidebar a[data-v-7b2637d8]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-7b2637d8]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-7b2637d8]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-7b2637d8]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-7b2637d8]{border-radius:0;padding:1rem}ul.ul-container[data-v-7b2637d8]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-7b2637d8]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-7b2637d8]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-7b2637d8]{width:100%}form.form-container[data-v-7b2637d8]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-7b2637d8]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-7b2637d8]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-7b2637d8]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-7b2637d8]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-7b2637d8],form.form-container .label-value select[data-v-7b2637d8]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-7b2637d8]:focus,form.form-container .label-value select[data-v-7b2637d8]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-7b2637d8]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-7b2637d8]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-7b2637d8],form.form-container .label-value input[type=radio][data-v-7b2637d8]{width:auto}form.form-container .label-value input[type=radio][data-v-7b2637d8]{margin:0 4px 0 0}form.form-container .label-value input[data-v-7b2637d8]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-7b2637d8]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-7b2637d8]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-7b2637d8]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-7b2637d8]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-7b2637d8]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-7b2637d8]:hover{background-color:#747474}form.form-container .label-msg[data-v-7b2637d8]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-7b2637d8]{color:#f9ad1e}form.form-container .label-flex[data-v-7b2637d8]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-7b2637d8]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-7b2637d8]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-7b2637d8]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-7b2637d8]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-7b2637d8]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-7b2637d8]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-7b2637d8],form.form-container1 .label-value select[data-v-7b2637d8]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-7b2637d8]:focus,form.form-container1 .label-value select[data-v-7b2637d8]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-7b2637d8]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-7b2637d8],form.form-container1 .label-value input[type=radio][data-v-7b2637d8]{width:auto}form.form-container1 .label-value input[type=radio][data-v-7b2637d8]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-7b2637d8]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-7b2637d8]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-7b2637d8]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-7b2637d8]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-7b2637d8]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-7b2637d8]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-7b2637d8]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-7b2637d8]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-7b2637d8]{color:#f9ad1e}form.form-container1 .label-flex[data-v-7b2637d8]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-7b2637d8]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-7b2637d8]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-7b2637d8]{width:100px}table.page-table th.checkbox[data-v-7b2637d8]{width:50px;text-align:center}table.page-table th.setting[data-v-7b2637d8]{width:100px;text-align:center}table.page-table thead[data-v-7b2637d8]{color:#909399}table.page-table thead tr[data-v-7b2637d8]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-7b2637d8]{padding:10px 16px}table.page-table tbody tr[data-v-7b2637d8]:hover{background-color:#eeee}table.page-table tbody tr[data-v-7b2637d8]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-7b2637d8]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-7b2637d8]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-7b2637d8]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-7b2637d8]{width:100px}table.popups-table th.checkbox[data-v-7b2637d8]{width:50px;text-align:center}table.popups-table th.setting[data-v-7b2637d8]{width:100px;text-align:center}table.popups-table thead[data-v-7b2637d8]{color:#eee}table.popups-table thead tr[data-v-7b2637d8]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-7b2637d8]{padding:10px 16px}table.popups-table tbody tr[data-v-7b2637d8]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-7b2637d8]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-7b2637d8]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-7b2637d8]{width:100%}header.header-desktop[data-v-7b2637d8]{display:block}header.header-mobile[data-v-7b2637d8]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-7b2637d8]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-7b2637d8]{width:100%;height:100%}header.header-mobile button svg path[data-v-7b2637d8]{fill:#fff}nav.sidebar[data-v-7b2637d8]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-7b2637d8]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-7b2637d8]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-7b2637d8]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-7b2637d8]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-7b2637d8]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-7b2637d8]{color:#fff}nav.sidebar .container .children[data-v-7b2637d8]{padding-left:30px}@-moz-keyframes tada-7b2637d8{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-7b2637d8{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-7b2637d8{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-7b2637d8{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-7b2637d8]{animation:dialogEnter-7b2637d8 .3s linear forwards}.dialog-leave-active[data-v-7b2637d8]{animation:dialogLeave-7b2637d8 .3s linear forwards}@keyframes dialogEnter-7b2637d8{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-7b2637d8{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-7b2637d8]{animation:dialogEnter-7b2637d8 .2s linear forwards}.dialog1-leave-active[data-v-7b2637d8]{animation:dialogLeave-7b2637d8 .2s linear forwards}@keyframes rotateEnter-7b2637d8{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-7b2637d8]{animation:rotateEnter-7b2637d8 .7s;position:relative}.rotate-leave-active[data-v-7b2637d8]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-7b2637d8{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-7b2637d8{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-7b2637d8]{animation:slideOutTop-7b2637d8 .5s linear forwards}.slide-top-leave-active[data-v-7b2637d8],.slide-bottom-enter-active[data-v-7b2637d8]{animation:slideOutBottom-7b2637d8 .5s linear forwards}@keyframes slideInLeft-7b2637d8{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-7b2637d8{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-7b2637d8]{animation:slideInLeft-7b2637d8 .3s linear forwards}.slide-left-leave-active[data-v-7b2637d8]{animation:slideInRight-7b2637d8 .3s linear forwards}@keyframes slideOutLeft-7b2637d8{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-7b2637d8{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-7b2637d8]{animation:slideOutLeft-7b2637d8 .3s linear forwards}.slide-right-leave-active[data-v-7b2637d8]{animation:slideOutRight-7b2637d8 .3s linear forwards}@keyframes bganimation-7b2637d8{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-7b2637d8{0%{height:0}to{height:100px}}@keyframes fadeEnd-7b2637d8{0%{height:100%}to{height:0}}.fade-enter-active[data-v-7b2637d8]{animation:fadeStart-7b2637d8 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-7b2637d8]{animation:fadeEnd-7b2637d8 .1s linear forwards;overflow:hidden}form[data-v-7b2637d8]{width:740px;height:100%;display:table;margin:0 auto;padding-top:30px}form .f[data-v-7b2637d8]{display:table-cell;width:200px;color:#007aff;text-align:right;vertical-align:top;color:#92650f}form .f .titleMain[data-v-7b2637d8]{line-height:50px;font-size:40px;font-weight:700}form .f .titleSub[data-v-7b2637d8]{font-size:22px}form .r[data-v-7b2637d8]{width:calc(100% - 250px);padding-left:15px;display:table-cell}form .title[data-v-7b2637d8]{font-size:1.4em;color:#eee;margin:20px 0 30px;text-align:left;font-weight:bolder;width:100%}form .title span[data-v-7b2637d8]{display:block;color:#92650f;font-size:1.4em;font-weight:700;margin-bottom:4px}form .selector-container .selector-container_item[data-v-7b2637d8]{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;border-bottom:1px solid #999;padding:1rem 0;width:100%;color:#ccc;cursor:pointer}form .selector-container .selector-container_item[data-v-7b2637d8]:hover{color:#92650f}form .selector-container .selector-container_item:hover .narrow-container[data-v-7b2637d8] svg.icon path{fill:#92650f}form .selector-container .selector-container_item .select-bar[data-v-7b2637d8]{font-size:1.6em;font-weight:700;cursor:pointer}form .selector-container .selector-container_item .narrow-container[data-v-7b2637d8]{width:24px;height:24px}form .selector-container .selector-container_item .narrow-container[data-v-7b2637d8] svg.icon{width:100%;height:100%}form .selector-container .selector-container_item .narrow-container[data-v-7b2637d8] svg.icon path{fill:#ccc}form .btns[data-v-7b2637d8]{width:100%;margin-top:50px;display:flex;flex-wrap:wrap;justify-content:space-between}form .btns button[data-v-7b2637d8]{display:inline-block;width:40%;height:46px;line-height:46px;font-size:1em;cursor:pointer;border-radius:35px}form .btns button[data-v-7b2637d8]:hover{opacity:.9}form .btns button.back[data-v-7b2637d8]{color:#007aff;background:#FFF}form .btns button.next[data-v-7b2637d8]{color:#fff;background:rgb(255,165,35)}@keyframes turns-041c9ebc{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-041c9ebc]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-041c9ebc]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-041c9ebc]{color:#f9ad1e}.notice_info li[data-v-041c9ebc]{font-size:14px;list-style:revert}.text-container[data-v-041c9ebc]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-041c9ebc]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-041c9ebc]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-041c9ebc]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-041c9ebc]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-041c9ebc]{width:100%}.text-container .text-container_item p.info-desc[data-v-041c9ebc]{width:100%;color:#999;font-size:14px}.page-container[data-v-041c9ebc]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-041c9ebc]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-041c9ebc]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-041c9ebc]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-041c9ebc],.page-container .page-flex .page-sidebar a[data-v-041c9ebc]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-041c9ebc]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-041c9ebc]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-041c9ebc]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-041c9ebc]{border-radius:0;padding:1rem}ul.ul-container[data-v-041c9ebc]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-041c9ebc]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-041c9ebc]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-041c9ebc]{width:100%}form.form-container[data-v-041c9ebc]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-041c9ebc]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-041c9ebc]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-041c9ebc]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-041c9ebc]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-041c9ebc],form.form-container .label-value select[data-v-041c9ebc]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-041c9ebc]:focus,form.form-container .label-value select[data-v-041c9ebc]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-041c9ebc]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-041c9ebc]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-041c9ebc],form.form-container .label-value input[type=radio][data-v-041c9ebc]{width:auto}form.form-container .label-value input[type=radio][data-v-041c9ebc]{margin:0 4px 0 0}form.form-container .label-value input[data-v-041c9ebc]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-041c9ebc]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-041c9ebc]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-041c9ebc]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-041c9ebc]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-041c9ebc]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-041c9ebc]:hover{background-color:#747474}form.form-container .label-msg[data-v-041c9ebc]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-041c9ebc]{color:#f9ad1e}form.form-container .label-flex[data-v-041c9ebc]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-041c9ebc]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-041c9ebc]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-041c9ebc]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-041c9ebc]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-041c9ebc]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-041c9ebc]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-041c9ebc],form.form-container1 .label-value select[data-v-041c9ebc]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-041c9ebc]:focus,form.form-container1 .label-value select[data-v-041c9ebc]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-041c9ebc]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-041c9ebc],form.form-container1 .label-value input[type=radio][data-v-041c9ebc]{width:auto}form.form-container1 .label-value input[type=radio][data-v-041c9ebc]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-041c9ebc]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-041c9ebc]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-041c9ebc]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-041c9ebc]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-041c9ebc]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-041c9ebc]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-041c9ebc]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-041c9ebc]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-041c9ebc]{color:#f9ad1e}form.form-container1 .label-flex[data-v-041c9ebc]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-041c9ebc]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-041c9ebc]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-041c9ebc]{width:100px}table.page-table th.checkbox[data-v-041c9ebc]{width:50px;text-align:center}table.page-table th.setting[data-v-041c9ebc]{width:100px;text-align:center}table.page-table thead[data-v-041c9ebc]{color:#909399}table.page-table thead tr[data-v-041c9ebc]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-041c9ebc]{padding:10px 16px}table.page-table tbody tr[data-v-041c9ebc]:hover{background-color:#eeee}table.page-table tbody tr[data-v-041c9ebc]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-041c9ebc]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-041c9ebc]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-041c9ebc]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-041c9ebc]{width:100px}table.popups-table th.checkbox[data-v-041c9ebc]{width:50px;text-align:center}table.popups-table th.setting[data-v-041c9ebc]{width:100px;text-align:center}table.popups-table thead[data-v-041c9ebc]{color:#eee}table.popups-table thead tr[data-v-041c9ebc]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-041c9ebc]{padding:10px 16px}table.popups-table tbody tr[data-v-041c9ebc]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-041c9ebc]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-041c9ebc]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-041c9ebc]{width:100%}header.header-desktop[data-v-041c9ebc]{display:block}header.header-mobile[data-v-041c9ebc]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-041c9ebc]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-041c9ebc]{width:100%;height:100%}header.header-mobile button svg path[data-v-041c9ebc]{fill:#fff}nav.sidebar[data-v-041c9ebc]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-041c9ebc]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-041c9ebc]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-041c9ebc]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-041c9ebc]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-041c9ebc]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-041c9ebc]{color:#fff}nav.sidebar .container .children[data-v-041c9ebc]{padding-left:30px}@-moz-keyframes tada-041c9ebc{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-041c9ebc{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-041c9ebc{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-041c9ebc{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-041c9ebc]{animation:dialogEnter-041c9ebc .3s linear forwards}.dialog-leave-active[data-v-041c9ebc]{animation:dialogLeave-041c9ebc .3s linear forwards}@keyframes dialogEnter-041c9ebc{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-041c9ebc{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-041c9ebc]{animation:dialogEnter-041c9ebc .2s linear forwards}.dialog1-leave-active[data-v-041c9ebc]{animation:dialogLeave-041c9ebc .2s linear forwards}@keyframes rotateEnter-041c9ebc{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-041c9ebc]{animation:rotateEnter-041c9ebc .7s;position:relative}.rotate-leave-active[data-v-041c9ebc]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-041c9ebc{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-041c9ebc{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-041c9ebc]{animation:slideOutTop-041c9ebc .5s linear forwards}.slide-top-leave-active[data-v-041c9ebc],.slide-bottom-enter-active[data-v-041c9ebc]{animation:slideOutBottom-041c9ebc .5s linear forwards}@keyframes slideInLeft-041c9ebc{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-041c9ebc{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-041c9ebc]{animation:slideInLeft-041c9ebc .3s linear forwards}.slide-left-leave-active[data-v-041c9ebc]{animation:slideInRight-041c9ebc .3s linear forwards}@keyframes slideOutLeft-041c9ebc{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-041c9ebc{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-041c9ebc]{animation:slideOutLeft-041c9ebc .3s linear forwards}.slide-right-leave-active[data-v-041c9ebc]{animation:slideOutRight-041c9ebc .3s linear forwards}@keyframes bganimation-041c9ebc{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-041c9ebc{0%{height:0}to{height:100px}}@keyframes fadeEnd-041c9ebc{0%{height:100%}to{height:0}}.fade-enter-active[data-v-041c9ebc]{animation:fadeStart-041c9ebc .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-041c9ebc]{animation:fadeEnd-041c9ebc .1s linear forwards;overflow:hidden}#wizard[data-v-041c9ebc]{width:100%;height:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;align-content:center}#wizard h1.wizard_title[data-v-041c9ebc]{font-size:2.6rem;margin:0 46px 50px;color:#fff}#wizard .wizard_body[data-v-041c9ebc]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}#wizard .wizard_body .wizard-item[data-v-041c9ebc]{margin:0 3rem;text-align:center;cursor:pointer}#wizard .wizard_body .wizard-item[data-v-041c9ebc]:hover{transition:.3s;transform:scale(1.1)}#wizard .wizard_body .wizard-item .wizard-item_icon[data-v-041c9ebc]{background-color:#eee;border-radius:1rem;padding:2rem}#wizard .wizard_body .wizard-item .wizard-item_icon svg.icon[data-v-041c9ebc]{width:100%;height:100%}#wizard .wizard_body .wizard-item .wizard-item_name[data-v-041c9ebc]{margin:1rem 0;color:#fff;font-size:2rem;font-weight:700}#wizard .wizard_body .wizard-item[disabled][data-v-041c9ebc]{cursor:not-allowed}@keyframes turns-72afa128{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-72afa128]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-72afa128]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-72afa128]{color:#f9ad1e}.notice_info li[data-v-72afa128]{font-size:14px;list-style:revert}.text-container[data-v-72afa128]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-72afa128]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-72afa128]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-72afa128]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-72afa128]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-72afa128]{width:100%}.text-container .text-container_item p.info-desc[data-v-72afa128]{width:100%;color:#999;font-size:14px}.page-container[data-v-72afa128]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-72afa128]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-72afa128]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-72afa128]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-72afa128],.page-container .page-flex .page-sidebar a[data-v-72afa128]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-72afa128]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-72afa128]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-72afa128]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-72afa128]{border-radius:0;padding:1rem}ul.ul-container[data-v-72afa128]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-72afa128]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-72afa128]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-72afa128]{width:100%}form.form-container[data-v-72afa128]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-72afa128]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-72afa128]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-72afa128]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-72afa128]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-72afa128],form.form-container .label-value select[data-v-72afa128]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-72afa128]:focus,form.form-container .label-value select[data-v-72afa128]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-72afa128]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-72afa128]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-72afa128],form.form-container .label-value input[type=radio][data-v-72afa128]{width:auto}form.form-container .label-value input[type=radio][data-v-72afa128]{margin:0 4px 0 0}form.form-container .label-value input[data-v-72afa128]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-72afa128]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-72afa128]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-72afa128]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-72afa128]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-72afa128]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-72afa128]:hover{background-color:#747474}form.form-container .label-msg[data-v-72afa128]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-72afa128]{color:#f9ad1e}form.form-container .label-flex[data-v-72afa128]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-72afa128]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-72afa128]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-72afa128]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-72afa128]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-72afa128]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-72afa128]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-72afa128],form.form-container1 .label-value select[data-v-72afa128]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-72afa128]:focus,form.form-container1 .label-value select[data-v-72afa128]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-72afa128]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-72afa128],form.form-container1 .label-value input[type=radio][data-v-72afa128]{width:auto}form.form-container1 .label-value input[type=radio][data-v-72afa128]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-72afa128]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-72afa128]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-72afa128]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-72afa128]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-72afa128]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-72afa128]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-72afa128]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-72afa128]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-72afa128]{color:#f9ad1e}form.form-container1 .label-flex[data-v-72afa128]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-72afa128]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-72afa128]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-72afa128]{width:100px}table.page-table th.checkbox[data-v-72afa128]{width:50px;text-align:center}table.page-table th.setting[data-v-72afa128]{width:100px;text-align:center}table.page-table thead[data-v-72afa128]{color:#909399}table.page-table thead tr[data-v-72afa128]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-72afa128]{padding:10px 16px}table.page-table tbody tr[data-v-72afa128]:hover{background-color:#eeee}table.page-table tbody tr[data-v-72afa128]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-72afa128]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-72afa128]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-72afa128]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-72afa128]{width:100px}table.popups-table th.checkbox[data-v-72afa128]{width:50px;text-align:center}table.popups-table th.setting[data-v-72afa128]{width:100px;text-align:center}table.popups-table thead[data-v-72afa128]{color:#eee}table.popups-table thead tr[data-v-72afa128]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-72afa128]{padding:10px 16px}table.popups-table tbody tr[data-v-72afa128]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-72afa128]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-72afa128]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-72afa128]{width:100%}header.header-desktop[data-v-72afa128]{display:block}header.header-mobile[data-v-72afa128]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-72afa128]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-72afa128]{width:100%;height:100%}header.header-mobile button svg path[data-v-72afa128]{fill:#fff}nav.sidebar[data-v-72afa128]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-72afa128]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-72afa128]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-72afa128]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-72afa128]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-72afa128]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-72afa128]{color:#fff}nav.sidebar .container .children[data-v-72afa128]{padding-left:30px}@-moz-keyframes tada-72afa128{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-72afa128{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-72afa128{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-72afa128{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-72afa128]{animation:dialogEnter-72afa128 .3s linear forwards}.dialog-leave-active[data-v-72afa128]{animation:dialogLeave-72afa128 .3s linear forwards}@keyframes dialogEnter-72afa128{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-72afa128{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-72afa128]{animation:dialogEnter-72afa128 .2s linear forwards}.dialog1-leave-active[data-v-72afa128]{animation:dialogLeave-72afa128 .2s linear forwards}@keyframes rotateEnter-72afa128{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-72afa128]{animation:rotateEnter-72afa128 .7s;position:relative}.rotate-leave-active[data-v-72afa128]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-72afa128{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-72afa128{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-72afa128]{animation:slideOutTop-72afa128 .5s linear forwards}.slide-top-leave-active[data-v-72afa128],.slide-bottom-enter-active[data-v-72afa128]{animation:slideOutBottom-72afa128 .5s linear forwards}@keyframes slideInLeft-72afa128{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-72afa128{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-72afa128]{animation:slideInLeft-72afa128 .3s linear forwards}.slide-left-leave-active[data-v-72afa128]{animation:slideInRight-72afa128 .3s linear forwards}@keyframes slideOutLeft-72afa128{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-72afa128{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-72afa128]{animation:slideOutLeft-72afa128 .3s linear forwards}.slide-right-leave-active[data-v-72afa128]{animation:slideOutRight-72afa128 .3s linear forwards}@keyframes bganimation-72afa128{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-72afa128{0%{height:0}to{height:100px}}@keyframes fadeEnd-72afa128{0%{height:100%}to{height:0}}.fade-enter-active[data-v-72afa128]{animation:fadeStart-72afa128 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-72afa128]{animation:fadeEnd-72afa128 .1s linear forwards;overflow:hidden}form[data-v-72afa128]{width:600px;height:100%;display:flex;flex-wrap:wrap;align-items:flex-start;align-content:flex-start;justify-content:center;margin:0 auto}form .title[data-v-72afa128]{font-size:1.4em;color:#eee;margin:30px 0;text-align:left;font-weight:bolder;width:100%}form .title span[data-v-72afa128]{display:block;color:#92650f;font-size:1.4em;font-weight:700;margin-bottom:4px}form .form-item[data-v-72afa128]{display:block;width:100%}form .form-item span.name[data-v-72afa128]{font-size:1.6em;color:#ccc;display:flex;justify-content:space-between;align-items:center;margin:30px 0 20px;width:100%}form .form-item label[data-v-72afa128]{display:block;width:100%}form .form-item label input[data-v-72afa128]{width:100%;height:52px;border-radius:35px;padding:0 1.25rem;font-size:1.25em;background:rgba(48,48,48,.2);border:1px solid #DBDBDB;color:#ccc}form .form-item label input[data-v-72afa128]:focus{transition:1s;border:1px solid rgb(255,165,35)}form .btns[data-v-72afa128]{width:100%;margin-top:50px;display:flex;flex-wrap:wrap;justify-content:space-between}form .btns button[data-v-72afa128]{display:inline-block;width:40%;height:46px;line-height:46px;font-size:1.3em;cursor:pointer;border-radius:35px}form .btns button[data-v-72afa128]:hover{opacity:.9}form .btns button.back[data-v-72afa128]{color:#007aff;background:#FFF}form .btns button.next[data-v-72afa128]{color:#fff;background:rgb(255,165,35)}form .target[data-v-72afa128]{width:100%;text-align:center;font-size:1em;color:#eee;margin-top:50px;cursor:pointer}form .target[data-v-72afa128]:hover{color:#ffa523}@keyframes turns-56e86acc{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-56e86acc]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-56e86acc]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-56e86acc]{color:#f9ad1e}.notice_info li[data-v-56e86acc]{font-size:14px;list-style:revert}.text-container[data-v-56e86acc]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-56e86acc]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-56e86acc]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-56e86acc]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-56e86acc]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-56e86acc]{width:100%}.text-container .text-container_item p.info-desc[data-v-56e86acc]{width:100%;color:#999;font-size:14px}.page-container[data-v-56e86acc]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-56e86acc]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-56e86acc]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-56e86acc]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-56e86acc],.page-container .page-flex .page-sidebar a[data-v-56e86acc]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-56e86acc]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-56e86acc]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-56e86acc]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-56e86acc]{border-radius:0;padding:1rem}ul.ul-container[data-v-56e86acc]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-56e86acc]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-56e86acc]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-56e86acc]{width:100%}form.form-container[data-v-56e86acc]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-56e86acc]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-56e86acc]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-56e86acc]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-56e86acc]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-56e86acc],form.form-container .label-value select[data-v-56e86acc]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-56e86acc]:focus,form.form-container .label-value select[data-v-56e86acc]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-56e86acc]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-56e86acc]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-56e86acc],form.form-container .label-value input[type=radio][data-v-56e86acc]{width:auto}form.form-container .label-value input[type=radio][data-v-56e86acc]{margin:0 4px 0 0}form.form-container .label-value input[data-v-56e86acc]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-56e86acc]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-56e86acc]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-56e86acc]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-56e86acc]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-56e86acc]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-56e86acc]:hover{background-color:#747474}form.form-container .label-msg[data-v-56e86acc]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-56e86acc]{color:#f9ad1e}form.form-container .label-flex[data-v-56e86acc]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-56e86acc]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-56e86acc]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-56e86acc]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-56e86acc]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-56e86acc]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-56e86acc]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-56e86acc],form.form-container1 .label-value select[data-v-56e86acc]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-56e86acc]:focus,form.form-container1 .label-value select[data-v-56e86acc]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-56e86acc]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-56e86acc],form.form-container1 .label-value input[type=radio][data-v-56e86acc]{width:auto}form.form-container1 .label-value input[type=radio][data-v-56e86acc]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-56e86acc]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-56e86acc]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-56e86acc]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-56e86acc]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-56e86acc]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-56e86acc]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-56e86acc]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-56e86acc]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-56e86acc]{color:#f9ad1e}form.form-container1 .label-flex[data-v-56e86acc]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-56e86acc]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-56e86acc]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-56e86acc]{width:100px}table.page-table th.checkbox[data-v-56e86acc]{width:50px;text-align:center}table.page-table th.setting[data-v-56e86acc]{width:100px;text-align:center}table.page-table thead[data-v-56e86acc]{color:#909399}table.page-table thead tr[data-v-56e86acc]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-56e86acc]{padding:10px 16px}table.page-table tbody tr[data-v-56e86acc]:hover{background-color:#eeee}table.page-table tbody tr[data-v-56e86acc]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-56e86acc]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-56e86acc]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-56e86acc]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-56e86acc]{width:100px}table.popups-table th.checkbox[data-v-56e86acc]{width:50px;text-align:center}table.popups-table th.setting[data-v-56e86acc]{width:100px;text-align:center}table.popups-table thead[data-v-56e86acc]{color:#eee}table.popups-table thead tr[data-v-56e86acc]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-56e86acc]{padding:10px 16px}table.popups-table tbody tr[data-v-56e86acc]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-56e86acc]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-56e86acc]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-56e86acc]{width:100%}header.header-desktop[data-v-56e86acc]{display:block}header.header-mobile[data-v-56e86acc]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-56e86acc]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-56e86acc]{width:100%;height:100%}header.header-mobile button svg path[data-v-56e86acc]{fill:#fff}nav.sidebar[data-v-56e86acc]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-56e86acc]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-56e86acc]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-56e86acc]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-56e86acc]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-56e86acc]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-56e86acc]{color:#fff}nav.sidebar .container .children[data-v-56e86acc]{padding-left:30px}@-moz-keyframes tada-56e86acc{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-56e86acc{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-56e86acc{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-56e86acc{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-56e86acc]{animation:dialogEnter-56e86acc .3s linear forwards}.dialog-leave-active[data-v-56e86acc]{animation:dialogLeave-56e86acc .3s linear forwards}@keyframes dialogEnter-56e86acc{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-56e86acc{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-56e86acc]{animation:dialogEnter-56e86acc .2s linear forwards}.dialog1-leave-active[data-v-56e86acc]{animation:dialogLeave-56e86acc .2s linear forwards}@keyframes rotateEnter-56e86acc{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-56e86acc]{animation:rotateEnter-56e86acc .7s;position:relative}.rotate-leave-active[data-v-56e86acc]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-56e86acc{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-56e86acc{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-56e86acc]{animation:slideOutTop-56e86acc .5s linear forwards}.slide-top-leave-active[data-v-56e86acc],.slide-bottom-enter-active[data-v-56e86acc]{animation:slideOutBottom-56e86acc .5s linear forwards}@keyframes slideInLeft-56e86acc{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-56e86acc{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-56e86acc]{animation:slideInLeft-56e86acc .3s linear forwards}.slide-left-leave-active[data-v-56e86acc]{animation:slideInRight-56e86acc .3s linear forwards}@keyframes slideOutLeft-56e86acc{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-56e86acc{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-56e86acc]{animation:slideOutLeft-56e86acc .3s linear forwards}.slide-right-leave-active[data-v-56e86acc]{animation:slideOutRight-56e86acc .3s linear forwards}@keyframes bganimation-56e86acc{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-56e86acc{0%{height:0}to{height:100px}}@keyframes fadeEnd-56e86acc{0%{height:100%}to{height:0}}.fade-enter-active[data-v-56e86acc]{animation:fadeStart-56e86acc .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-56e86acc]{animation:fadeEnd-56e86acc .1s linear forwards;overflow:hidden}form[data-v-56e86acc]{width:600px;height:100%;display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:center;align-content:flex-start;margin:0 auto}form .title[data-v-56e86acc]{font-size:1.4em;color:#eee;margin:30px 0;text-align:left;font-weight:bolder;width:100%}form .title span[data-v-56e86acc]{display:block;color:#92650f;font-size:1.4em;font-weight:700;margin-bottom:4px}form .form-item[data-v-56e86acc]{display:block;width:100%}form .form-item span.name[data-v-56e86acc]{font-size:1.6em;color:#ccc;display:flex;justify-content:space-between;align-items:center;margin:30px 0 20px;width:100%}form .form-item label[data-v-56e86acc]{display:block;width:100%}form .form-item label input[data-v-56e86acc],form .form-item label select[data-v-56e86acc]{width:100%;height:52px;font-size:1.25em;background:rgba(48,48,48,.2);border:1px solid #DBDBDB;color:#ccc}form .form-item label input[data-v-56e86acc]:focus,form .form-item label select[data-v-56e86acc]:focus{transition:1s;border:1px solid rgb(255,165,35)}form .form-item label input[data-v-56e86acc]{border-radius:35px;padding:0 1.25rem}form .form-item label select[data-v-56e86acc]{border-radius:3px;padding:0 .5rem}form .btns[data-v-56e86acc]{width:100%;margin-top:50px;display:flex;flex-wrap:wrap;justify-content:space-between}form .btns button[data-v-56e86acc]{display:inline-block;width:40%;height:46px;line-height:46px;font-size:1.3em;cursor:pointer;border-radius:35px}form .btns button[data-v-56e86acc]:hover{opacity:.9}form .btns button.back[data-v-56e86acc]{color:#007aff;background:#FFF}form .btns button.next[data-v-56e86acc]{color:#fff;background:rgb(255,165,35)}form .target[data-v-56e86acc]{width:100%;text-align:center;font-size:1em;color:#eee;margin-top:50px;cursor:pointer}form .target[data-v-56e86acc]:hover{color:#ffa523}@keyframes turns-06e7b595{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-06e7b595]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-06e7b595]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-06e7b595]{color:#f9ad1e}.notice_info li[data-v-06e7b595]{font-size:14px;list-style:revert}.text-container[data-v-06e7b595]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-06e7b595]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-06e7b595]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-06e7b595]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-06e7b595]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-06e7b595]{width:100%}.text-container .text-container_item p.info-desc[data-v-06e7b595]{width:100%;color:#999;font-size:14px}.page-container[data-v-06e7b595]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-06e7b595]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-06e7b595]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-06e7b595]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-06e7b595],.page-container .page-flex .page-sidebar a[data-v-06e7b595]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-06e7b595]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-06e7b595]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-06e7b595]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-06e7b595]{border-radius:0;padding:1rem}ul.ul-container[data-v-06e7b595]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-06e7b595]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-06e7b595]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-06e7b595]{width:100%}form.form-container[data-v-06e7b595]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-06e7b595]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-06e7b595]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-06e7b595]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-06e7b595]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-06e7b595],form.form-container .label-value select[data-v-06e7b595]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-06e7b595]:focus,form.form-container .label-value select[data-v-06e7b595]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-06e7b595]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-06e7b595]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-06e7b595],form.form-container .label-value input[type=radio][data-v-06e7b595]{width:auto}form.form-container .label-value input[type=radio][data-v-06e7b595]{margin:0 4px 0 0}form.form-container .label-value input[data-v-06e7b595]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-06e7b595]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-06e7b595]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-06e7b595]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-06e7b595]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-06e7b595]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-06e7b595]:hover{background-color:#747474}form.form-container .label-msg[data-v-06e7b595]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-06e7b595]{color:#f9ad1e}form.form-container .label-flex[data-v-06e7b595]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-06e7b595]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-06e7b595]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-06e7b595]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-06e7b595]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-06e7b595]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-06e7b595]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-06e7b595],form.form-container1 .label-value select[data-v-06e7b595]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-06e7b595]:focus,form.form-container1 .label-value select[data-v-06e7b595]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-06e7b595]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-06e7b595],form.form-container1 .label-value input[type=radio][data-v-06e7b595]{width:auto}form.form-container1 .label-value input[type=radio][data-v-06e7b595]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-06e7b595]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-06e7b595]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-06e7b595]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-06e7b595]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-06e7b595]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-06e7b595]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-06e7b595]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-06e7b595]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-06e7b595]{color:#f9ad1e}form.form-container1 .label-flex[data-v-06e7b595]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-06e7b595]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-06e7b595]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-06e7b595]{width:100px}table.page-table th.checkbox[data-v-06e7b595]{width:50px;text-align:center}table.page-table th.setting[data-v-06e7b595]{width:100px;text-align:center}table.page-table thead[data-v-06e7b595]{color:#909399}table.page-table thead tr[data-v-06e7b595]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-06e7b595]{padding:10px 16px}table.page-table tbody tr[data-v-06e7b595]:hover{background-color:#eeee}table.page-table tbody tr[data-v-06e7b595]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-06e7b595]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-06e7b595]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-06e7b595]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-06e7b595]{width:100px}table.popups-table th.checkbox[data-v-06e7b595]{width:50px;text-align:center}table.popups-table th.setting[data-v-06e7b595]{width:100px;text-align:center}table.popups-table thead[data-v-06e7b595]{color:#eee}table.popups-table thead tr[data-v-06e7b595]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-06e7b595]{padding:10px 16px}table.popups-table tbody tr[data-v-06e7b595]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-06e7b595]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-06e7b595]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-06e7b595]{width:100%}header.header-desktop[data-v-06e7b595]{display:block}header.header-mobile[data-v-06e7b595]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-06e7b595]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-06e7b595]{width:100%;height:100%}header.header-mobile button svg path[data-v-06e7b595]{fill:#fff}nav.sidebar[data-v-06e7b595]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-06e7b595]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-06e7b595]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-06e7b595]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-06e7b595]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-06e7b595]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-06e7b595]{color:#fff}nav.sidebar .container .children[data-v-06e7b595]{padding-left:30px}@-moz-keyframes tada-06e7b595{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-06e7b595{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-06e7b595{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-06e7b595{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-06e7b595]{animation:dialogEnter-06e7b595 .3s linear forwards}.dialog-leave-active[data-v-06e7b595]{animation:dialogLeave-06e7b595 .3s linear forwards}@keyframes dialogEnter-06e7b595{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-06e7b595{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-06e7b595]{animation:dialogEnter-06e7b595 .2s linear forwards}.dialog1-leave-active[data-v-06e7b595]{animation:dialogLeave-06e7b595 .2s linear forwards}@keyframes rotateEnter-06e7b595{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-06e7b595]{animation:rotateEnter-06e7b595 .7s;position:relative}.rotate-leave-active[data-v-06e7b595]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-06e7b595{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-06e7b595{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-06e7b595]{animation:slideOutTop-06e7b595 .5s linear forwards}.slide-top-leave-active[data-v-06e7b595],.slide-bottom-enter-active[data-v-06e7b595]{animation:slideOutBottom-06e7b595 .5s linear forwards}@keyframes slideInLeft-06e7b595{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-06e7b595{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-06e7b595]{animation:slideInLeft-06e7b595 .3s linear forwards}.slide-left-leave-active[data-v-06e7b595]{animation:slideInRight-06e7b595 .3s linear forwards}@keyframes slideOutLeft-06e7b595{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-06e7b595{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-06e7b595]{animation:slideOutLeft-06e7b595 .3s linear forwards}.slide-right-leave-active[data-v-06e7b595]{animation:slideOutRight-06e7b595 .3s linear forwards}@keyframes bganimation-06e7b595{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-06e7b595{0%{height:0}to{height:100px}}@keyframes fadeEnd-06e7b595{0%{height:100%}to{height:0}}.fade-enter-active[data-v-06e7b595]{animation:fadeStart-06e7b595 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-06e7b595]{animation:fadeEnd-06e7b595 .1s linear forwards;overflow:hidden}#main[data-v-06e7b595]{width:100vw;height:100vh;overflow:overlay;background-color:#1e1e1e}@keyframes turns-37664f80{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-37664f80]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-37664f80]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-37664f80]{color:#f9ad1e}.notice_info li[data-v-37664f80]{font-size:14px;list-style:revert}.text-container[data-v-37664f80]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-37664f80]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-37664f80]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-37664f80]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-37664f80]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-37664f80]{width:100%}.text-container .text-container_item p.info-desc[data-v-37664f80]{width:100%;color:#999;font-size:14px}.page-container[data-v-37664f80]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-37664f80]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-37664f80]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-37664f80]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-37664f80],.page-container .page-flex .page-sidebar a[data-v-37664f80]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-37664f80]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-37664f80]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-37664f80]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-37664f80]{border-radius:0;padding:1rem}ul.ul-container[data-v-37664f80]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-37664f80]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-37664f80]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-37664f80]{width:100%}form.form-container[data-v-37664f80]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-37664f80]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-37664f80]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-37664f80]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-37664f80]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-37664f80],form.form-container .label-value select[data-v-37664f80]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-37664f80]:focus,form.form-container .label-value select[data-v-37664f80]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-37664f80]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-37664f80]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-37664f80],form.form-container .label-value input[type=radio][data-v-37664f80]{width:auto}form.form-container .label-value input[type=radio][data-v-37664f80]{margin:0 4px 0 0}form.form-container .label-value input[data-v-37664f80]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-37664f80]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-37664f80]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-37664f80]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-37664f80]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-37664f80]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-37664f80]:hover{background-color:#747474}form.form-container .label-msg[data-v-37664f80]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-37664f80]{color:#f9ad1e}form.form-container .label-flex[data-v-37664f80]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-37664f80]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-37664f80]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-37664f80]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-37664f80]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-37664f80]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-37664f80]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-37664f80],form.form-container1 .label-value select[data-v-37664f80]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-37664f80]:focus,form.form-container1 .label-value select[data-v-37664f80]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-37664f80]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-37664f80],form.form-container1 .label-value input[type=radio][data-v-37664f80]{width:auto}form.form-container1 .label-value input[type=radio][data-v-37664f80]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-37664f80]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-37664f80]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-37664f80]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-37664f80]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-37664f80]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-37664f80]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-37664f80]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-37664f80]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-37664f80]{color:#f9ad1e}form.form-container1 .label-flex[data-v-37664f80]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-37664f80]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-37664f80]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-37664f80]{width:100px}table.page-table th.checkbox[data-v-37664f80]{width:50px;text-align:center}table.page-table th.setting[data-v-37664f80]{width:100px;text-align:center}table.page-table thead[data-v-37664f80]{color:#909399}table.page-table thead tr[data-v-37664f80]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-37664f80]{padding:10px 16px}table.page-table tbody tr[data-v-37664f80]:hover{background-color:#eeee}table.page-table tbody tr[data-v-37664f80]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-37664f80]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-37664f80]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-37664f80]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-37664f80]{width:100px}table.popups-table th.checkbox[data-v-37664f80]{width:50px;text-align:center}table.popups-table th.setting[data-v-37664f80]{width:100px;text-align:center}table.popups-table thead[data-v-37664f80]{color:#eee}table.popups-table thead tr[data-v-37664f80]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-37664f80]{padding:10px 16px}table.popups-table tbody tr[data-v-37664f80]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-37664f80]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-37664f80]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-37664f80]{width:100%}header.header-desktop[data-v-37664f80]{display:block}header.header-mobile[data-v-37664f80]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-37664f80]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-37664f80]{width:100%;height:100%}header.header-mobile button svg path[data-v-37664f80]{fill:#fff}nav.sidebar[data-v-37664f80]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-37664f80]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-37664f80]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-37664f80]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-37664f80]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-37664f80]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-37664f80]{color:#fff}nav.sidebar .container .children[data-v-37664f80]{padding-left:30px}@-moz-keyframes tada-37664f80{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-37664f80{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-37664f80{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-37664f80{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-37664f80]{animation:dialogEnter-37664f80 .3s linear forwards}.dialog-leave-active[data-v-37664f80]{animation:dialogLeave-37664f80 .3s linear forwards}@keyframes dialogEnter-37664f80{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-37664f80{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-37664f80]{animation:dialogEnter-37664f80 .2s linear forwards}.dialog1-leave-active[data-v-37664f80]{animation:dialogLeave-37664f80 .2s linear forwards}@keyframes rotateEnter-37664f80{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-37664f80]{animation:rotateEnter-37664f80 .7s;position:relative}.rotate-leave-active[data-v-37664f80]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-37664f80{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-37664f80{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-37664f80]{animation:slideOutTop-37664f80 .5s linear forwards}.slide-top-leave-active[data-v-37664f80],.slide-bottom-enter-active[data-v-37664f80]{animation:slideOutBottom-37664f80 .5s linear forwards}@keyframes slideInLeft-37664f80{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-37664f80{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-37664f80]{animation:slideInLeft-37664f80 .3s linear forwards}.slide-left-leave-active[data-v-37664f80]{animation:slideInRight-37664f80 .3s linear forwards}@keyframes slideOutLeft-37664f80{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-37664f80{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-37664f80]{animation:slideOutLeft-37664f80 .3s linear forwards}.slide-right-leave-active[data-v-37664f80]{animation:slideOutRight-37664f80 .3s linear forwards}@keyframes bganimation-37664f80{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-37664f80{0%{height:0}to{height:100px}}@keyframes fadeEnd-37664f80{0%{height:100%}to{height:0}}.fade-enter-active[data-v-37664f80]{animation:fadeStart-37664f80 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-37664f80]{animation:fadeEnd-37664f80 .1s linear forwards;overflow:hidden}.section-app-container[data-v-37664f80]{grid-template-columns:repeat(auto-fill,minmax(190px,1fr))!important}.app-content[data-v-37664f80]{position:relative;width:100%;height:100%;color:#fff;font-style:normal;font-weight:300;text-align:center;padding:2rem;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;cursor:pointer}.app-content:hover .app-icon[data-v-37664f80]{transition:.3s;transform:scale(1.1)}.app-content .app-icon[data-v-37664f80]{width:80px;height:80px;background-color:#fff;padding:.5rem;border-radius:1rem;overflow:hidden}.app-content .app-icon img[data-v-37664f80],.app-content .app-icon svg.icon[data-v-37664f80]{width:100%;height:100%;object-fit:contain}.app-content .app-name[data-v-37664f80]{width:100%;text-align:center;margin-top:.75rem!important;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.app-item:hover .app-footer[data-v-37664f80]{visibility:visible;transition:.3s;opacity:1}.app-footer[data-v-37664f80]{position:absolute;bottom:0;left:0;right:0;width:100%;display:flex;flex-wrap:wrap;height:28px;border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem;overflow:hidden;visibility:hidden;opacity:0}.app-footer a[data-v-37664f80],.app-footer button[data-v-37664f80]{flex-grow:1;flex-shrink:1;text-align:center;font-size:14px;display:flex;align-items:center;justify-content:center}.app-footer a[data-v-37664f80]:hover,.app-footer button[data-v-37664f80]:hover{opacity:.8}.app-footer .open[data-v-37664f80]{background-color:#636363;color:#fff}.app-footer .setting[data-v-37664f80]{background-color:#6b6b6b;color:#fff}@keyframes turns-c01a3f98{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-c01a3f98]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-c01a3f98]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-c01a3f98]{color:#f9ad1e}.notice_info li[data-v-c01a3f98]{font-size:14px;list-style:revert}.text-container[data-v-c01a3f98]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-c01a3f98]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-c01a3f98]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-c01a3f98]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-c01a3f98]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-c01a3f98]{width:100%}.text-container .text-container_item p.info-desc[data-v-c01a3f98]{width:100%;color:#999;font-size:14px}.page-container[data-v-c01a3f98]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-c01a3f98]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-c01a3f98]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-c01a3f98]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-c01a3f98],.page-container .page-flex .page-sidebar a[data-v-c01a3f98]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-c01a3f98]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-c01a3f98]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-c01a3f98]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-c01a3f98]{border-radius:0;padding:1rem}ul.ul-container[data-v-c01a3f98]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-c01a3f98]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-c01a3f98]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-c01a3f98]{width:100%}form.form-container[data-v-c01a3f98]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-c01a3f98]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-c01a3f98]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-c01a3f98]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-c01a3f98]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-c01a3f98],form.form-container .label-value select[data-v-c01a3f98]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-c01a3f98]:focus,form.form-container .label-value select[data-v-c01a3f98]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-c01a3f98]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-c01a3f98]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-c01a3f98],form.form-container .label-value input[type=radio][data-v-c01a3f98]{width:auto}form.form-container .label-value input[type=radio][data-v-c01a3f98]{margin:0 4px 0 0}form.form-container .label-value input[data-v-c01a3f98]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-c01a3f98]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-c01a3f98]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-c01a3f98]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-c01a3f98]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-c01a3f98]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-c01a3f98]:hover{background-color:#747474}form.form-container .label-msg[data-v-c01a3f98]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-c01a3f98]{color:#f9ad1e}form.form-container .label-flex[data-v-c01a3f98]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-c01a3f98]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-c01a3f98]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-c01a3f98]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-c01a3f98]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-c01a3f98]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-c01a3f98]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-c01a3f98],form.form-container1 .label-value select[data-v-c01a3f98]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-c01a3f98]:focus,form.form-container1 .label-value select[data-v-c01a3f98]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-c01a3f98]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-c01a3f98],form.form-container1 .label-value input[type=radio][data-v-c01a3f98]{width:auto}form.form-container1 .label-value input[type=radio][data-v-c01a3f98]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-c01a3f98]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-c01a3f98]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-c01a3f98]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-c01a3f98]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-c01a3f98]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-c01a3f98]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-c01a3f98]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-c01a3f98]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-c01a3f98]{color:#f9ad1e}form.form-container1 .label-flex[data-v-c01a3f98]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-c01a3f98]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-c01a3f98]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-c01a3f98]{width:100px}table.page-table th.checkbox[data-v-c01a3f98]{width:50px;text-align:center}table.page-table th.setting[data-v-c01a3f98]{width:100px;text-align:center}table.page-table thead[data-v-c01a3f98]{color:#909399}table.page-table thead tr[data-v-c01a3f98]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-c01a3f98]{padding:10px 16px}table.page-table tbody tr[data-v-c01a3f98]:hover{background-color:#eeee}table.page-table tbody tr[data-v-c01a3f98]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-c01a3f98]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-c01a3f98]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-c01a3f98]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-c01a3f98]{width:100px}table.popups-table th.checkbox[data-v-c01a3f98]{width:50px;text-align:center}table.popups-table th.setting[data-v-c01a3f98]{width:100px;text-align:center}table.popups-table thead[data-v-c01a3f98]{color:#eee}table.popups-table thead tr[data-v-c01a3f98]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-c01a3f98]{padding:10px 16px}table.popups-table tbody tr[data-v-c01a3f98]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-c01a3f98]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-c01a3f98]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-c01a3f98]{width:100%}header.header-desktop[data-v-c01a3f98]{display:block}header.header-mobile[data-v-c01a3f98]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-c01a3f98]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-c01a3f98]{width:100%;height:100%}header.header-mobile button svg path[data-v-c01a3f98]{fill:#fff}nav.sidebar[data-v-c01a3f98]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-c01a3f98]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-c01a3f98]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-c01a3f98]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-c01a3f98]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-c01a3f98]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-c01a3f98]{color:#fff}nav.sidebar .container .children[data-v-c01a3f98]{padding-left:30px}@-moz-keyframes tada-c01a3f98{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-c01a3f98{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-c01a3f98{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-c01a3f98{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-c01a3f98]{animation:dialogEnter-c01a3f98 .3s linear forwards}.dialog-leave-active[data-v-c01a3f98]{animation:dialogLeave-c01a3f98 .3s linear forwards}@keyframes dialogEnter-c01a3f98{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-c01a3f98{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-c01a3f98]{animation:dialogEnter-c01a3f98 .2s linear forwards}.dialog1-leave-active[data-v-c01a3f98]{animation:dialogLeave-c01a3f98 .2s linear forwards}@keyframes rotateEnter-c01a3f98{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-c01a3f98]{animation:rotateEnter-c01a3f98 .7s;position:relative}.rotate-leave-active[data-v-c01a3f98]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-c01a3f98{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-c01a3f98{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-c01a3f98]{animation:slideOutTop-c01a3f98 .5s linear forwards}.slide-top-leave-active[data-v-c01a3f98],.slide-bottom-enter-active[data-v-c01a3f98]{animation:slideOutBottom-c01a3f98 .5s linear forwards}@keyframes slideInLeft-c01a3f98{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-c01a3f98{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-c01a3f98]{animation:slideInLeft-c01a3f98 .3s linear forwards}.slide-left-leave-active[data-v-c01a3f98]{animation:slideInRight-c01a3f98 .3s linear forwards}@keyframes slideOutLeft-c01a3f98{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-c01a3f98{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-c01a3f98]{animation:slideOutLeft-c01a3f98 .3s linear forwards}.slide-right-leave-active[data-v-c01a3f98]{animation:slideOutRight-c01a3f98 .3s linear forwards}@keyframes bganimation-c01a3f98{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-c01a3f98{0%{height:0}to{height:100px}}@keyframes fadeEnd-c01a3f98{0%{height:100%}to{height:0}}.fade-enter-active[data-v-c01a3f98]{animation:fadeStart-c01a3f98 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-c01a3f98]{animation:fadeEnd-c01a3f98 .1s linear forwards;overflow:hidden}ul.tabls[data-v-c01a3f98]{display:flex;flex-wrap:wrap;align-items:center}ul.tabls button[data-v-c01a3f98]{padding:0;margin:0;background:none;color:#898989;font-size:1.2rem;margin-right:1rem;cursor:pointer}ul.tabls button[data-v-c01a3f98]:hover{color:#2276f3}ul.tabls button.on[data-v-c01a3f98]{font-size:1.3rem;font-weight:700;color:#2276f3;border-bottom:2px solid rgb(32,117,243)!important}[data-v-c01a3f98] section.tab-content{margin:2rem 0}[data-v-c01a3f98] section.tab-content section.tab-content{margin:1rem 0}[data-v-c01a3f98] section.tab-content .item-label{display:flex;flex-wrap:wrap;align-items:flex-start;align-content:flex-start;width:100%;margin:1rem 0}[data-v-c01a3f98] section.tab-content .item-label .item-label_key{flex:0 0 100%;max-width:100px;text-align:left}[data-v-c01a3f98] section.tab-content .item-label .item-label_value{flex:1;text-align:left}[data-v-c01a3f98] section.tab-content .item-label .item-label_key span,[data-v-c01a3f98] section.tab-content .item-label .item-label_value span{font-size:1em;color:#373737}[data-v-c01a3f98] section.tab-content table{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#373737}[data-v-c01a3f98] section.tab-content table th.uid{width:100px}[data-v-c01a3f98] section.tab-content table th.checkbox{width:50px;text-align:center}[data-v-c01a3f98] section.tab-content table th.setting{width:100px;text-align:center}[data-v-c01a3f98] section.tab-content table thead{color:#373737}[data-v-c01a3f98] section.tab-content table thead tr{width:100%;height:28px;line-height:28px;color:#373737;font-size:14px}[data-v-c01a3f98] section.tab-content table thead tr th{padding:16px 10px}[data-v-c01a3f98] section.tab-content table tbody tr{cursor:pointer;width:100%;color:#373737}[data-v-c01a3f98] section.tab-content table tbody tr th{font-size:14px;padding:16px 10px;vertical-align:top}[data-v-c01a3f98] section.tab-content table tbody tr th a{color:#ff7373}[data-v-c01a3f98] section.tab-content .label-name{display:block;width:100%;margin-bottom:.5rem}[data-v-c01a3f98] section.tab-content .label-value{display:block;width:100%;margin-bottom:1rem}[data-v-c01a3f98] section.tab-content .label-value select,[data-v-c01a3f98] section.tab-content .label-value input{display:block;width:100%;height:36px;background:none;border:1px solid #adadad;color:#1e1e1e;font-size:14px;border-radius:3px;padding:0 10px}[data-v-c01a3f98] section.tab-content .label-value2{display:block;width:100%;margin-bottom:1rem}[data-v-c01a3f98] section.tab-content .label-btns{display:flex;justify-content:flex-end}[data-v-c01a3f98] section.tab-content .label-btns button{width:100px;height:28px;border-radius:3px;font-size:14px}[data-v-c01a3f98] section.tab-content .label-btns button:hover{opacity:.9}[data-v-c01a3f98] section.tab-content .label-btns button.mount{background-color:#70b5ff;color:#fff}@keyframes turns-2815b650{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-2815b650]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-2815b650]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-2815b650]{color:#f9ad1e}.notice_info li[data-v-2815b650]{font-size:14px;list-style:revert}.text-container[data-v-2815b650]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-2815b650]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-2815b650]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-2815b650]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-2815b650]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-2815b650]{width:100%}.text-container .text-container_item p.info-desc[data-v-2815b650]{width:100%;color:#999;font-size:14px}.page-container[data-v-2815b650]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-2815b650]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-2815b650]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-2815b650]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-2815b650],.page-container .page-flex .page-sidebar a[data-v-2815b650]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-2815b650]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-2815b650]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-2815b650]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-2815b650]{border-radius:0;padding:1rem}ul.ul-container[data-v-2815b650]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-2815b650]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-2815b650]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-2815b650]{width:100%}form.form-container[data-v-2815b650]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-2815b650]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-2815b650]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-2815b650]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-2815b650]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-2815b650],form.form-container .label-value select[data-v-2815b650]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-2815b650]:focus,form.form-container .label-value select[data-v-2815b650]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-2815b650]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-2815b650]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-2815b650],form.form-container .label-value input[type=radio][data-v-2815b650]{width:auto}form.form-container .label-value input[type=radio][data-v-2815b650]{margin:0 4px 0 0}form.form-container .label-value input[data-v-2815b650]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-2815b650]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-2815b650]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-2815b650]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-2815b650]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-2815b650]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-2815b650]:hover{background-color:#747474}form.form-container .label-msg[data-v-2815b650]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-2815b650]{color:#f9ad1e}form.form-container .label-flex[data-v-2815b650]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-2815b650]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-2815b650]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-2815b650]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-2815b650]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-2815b650]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-2815b650]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-2815b650],form.form-container1 .label-value select[data-v-2815b650]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-2815b650]:focus,form.form-container1 .label-value select[data-v-2815b650]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-2815b650]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-2815b650],form.form-container1 .label-value input[type=radio][data-v-2815b650]{width:auto}form.form-container1 .label-value input[type=radio][data-v-2815b650]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-2815b650]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-2815b650]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-2815b650]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-2815b650]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-2815b650]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-2815b650]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-2815b650]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-2815b650]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-2815b650]{color:#f9ad1e}form.form-container1 .label-flex[data-v-2815b650]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-2815b650]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-2815b650]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-2815b650]{width:100px}table.page-table th.checkbox[data-v-2815b650]{width:50px;text-align:center}table.page-table th.setting[data-v-2815b650]{width:100px;text-align:center}table.page-table thead[data-v-2815b650]{color:#909399}table.page-table thead tr[data-v-2815b650]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-2815b650]{padding:10px 16px}table.page-table tbody tr[data-v-2815b650]:hover{background-color:#eeee}table.page-table tbody tr[data-v-2815b650]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-2815b650]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-2815b650]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-2815b650]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-2815b650]{width:100px}table.popups-table th.checkbox[data-v-2815b650]{width:50px;text-align:center}table.popups-table th.setting[data-v-2815b650]{width:100px;text-align:center}table.popups-table thead[data-v-2815b650]{color:#eee}table.popups-table thead tr[data-v-2815b650]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-2815b650]{padding:10px 16px}table.popups-table tbody tr[data-v-2815b650]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-2815b650]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-2815b650]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-2815b650]{width:100%}header.header-desktop[data-v-2815b650]{display:block}header.header-mobile[data-v-2815b650]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-2815b650]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-2815b650]{width:100%;height:100%}header.header-mobile button svg path[data-v-2815b650]{fill:#fff}nav.sidebar[data-v-2815b650]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-2815b650]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-2815b650]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-2815b650]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-2815b650]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-2815b650]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-2815b650]{color:#fff}nav.sidebar .container .children[data-v-2815b650]{padding-left:30px}@-moz-keyframes tada-2815b650{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-2815b650{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-2815b650{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-2815b650{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-2815b650]{animation:dialogEnter-2815b650 .3s linear forwards}.dialog-leave-active[data-v-2815b650]{animation:dialogLeave-2815b650 .3s linear forwards}@keyframes dialogEnter-2815b650{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-2815b650{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-2815b650]{animation:dialogEnter-2815b650 .2s linear forwards}.dialog1-leave-active[data-v-2815b650]{animation:dialogLeave-2815b650 .2s linear forwards}@keyframes rotateEnter-2815b650{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-2815b650]{animation:rotateEnter-2815b650 .7s;position:relative}.rotate-leave-active[data-v-2815b650]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-2815b650{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-2815b650{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-2815b650]{animation:slideOutTop-2815b650 .5s linear forwards}.slide-top-leave-active[data-v-2815b650],.slide-bottom-enter-active[data-v-2815b650]{animation:slideOutBottom-2815b650 .5s linear forwards}@keyframes slideInLeft-2815b650{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-2815b650{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-2815b650]{animation:slideInLeft-2815b650 .3s linear forwards}.slide-left-leave-active[data-v-2815b650]{animation:slideInRight-2815b650 .3s linear forwards}@keyframes slideOutLeft-2815b650{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-2815b650{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-2815b650]{animation:slideOutLeft-2815b650 .3s linear forwards}.slide-right-leave-active[data-v-2815b650]{animation:slideOutRight-2815b650 .3s linear forwards}@keyframes bganimation-2815b650{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-2815b650{0%{height:0}to{height:100px}}@keyframes fadeEnd-2815b650{0%{height:100%}to{height:0}}.fade-enter-active[data-v-2815b650]{animation:fadeStart-2815b650 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-2815b650]{animation:fadeEnd-2815b650 .1s linear forwards;overflow:hidden}.section-setting-container[data-v-2815b650]{grid-template-columns:repeat(auto-fill,minmax(500px,1fr))!important}.tool-content[data-v-2815b650]{position:relative;width:100%;height:100%;color:#fff;font-style:normal;font-weight:300;padding:2rem;display:flex;flex-wrap:wrap;align-items:center}.tool-content .f[data-v-2815b650]{flex:1;max-width:calc(100% - 100px)}.tool-content .f .title[data-v-2815b650]{font-size:1.125rem;font-weight:6;margin-bottom:0}.tool-content .f .desc[data-v-2815b650]{color:#eee;margin-right:1rem;width:100%;font-size:14px;margin:.8rem 0}.tool-content .f .btns[data-v-2815b650]{width:100%}.tool-content .f .btns a[data-v-2815b650],.tool-content .f .btns button[data-v-2815b650]{border-radius:.3rem;color:#eee;min-width:70px;font-size:13px;padding:.2rem 1rem;cursor:pointer;box-shadow:0 0 17px #0000001a}.tool-content .f .btns a[data-v-2815b650]:hover,.tool-content .f .btns button[data-v-2815b650]:hover{opacity:.9}.tool-content .f .btns a.open[data-v-2815b650],.tool-content .f .btns button.open[data-v-2815b650]{background-color:#2075f3}.tool-content .r[data-v-2815b650]{flex:0 0 100%;max-width:100px;text-align:right}.tool-content .r svg.icon[data-v-2815b650]{width:64px;height:64px;background:#fff;border-radius:1rem}.tool-content .content[data-v-2815b650]{width:304px;display:flex;justify-content:space-between}.tool-content .content>div[data-v-2815b650]{width:84px}.tool-content .content>div>div[data-v-2815b650]{height:84px;border:1px solid;border-radius:12px;background:#FFF;cursor:pointer}.tool-content .content>div>span[data-v-2815b650]{display:inline-block;width:100%;text-align:center;font-size:12px}@keyframes turns-1880f8c7{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-1880f8c7]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-1880f8c7]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-1880f8c7]{color:#f9ad1e}.notice_info li[data-v-1880f8c7]{font-size:14px;list-style:revert}.text-container[data-v-1880f8c7]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-1880f8c7]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-1880f8c7]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-1880f8c7]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-1880f8c7]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-1880f8c7]{width:100%}.text-container .text-container_item p.info-desc[data-v-1880f8c7]{width:100%;color:#999;font-size:14px}.page-container[data-v-1880f8c7]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-1880f8c7]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-1880f8c7]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-1880f8c7]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-1880f8c7],.page-container .page-flex .page-sidebar a[data-v-1880f8c7]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-1880f8c7]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-1880f8c7]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-1880f8c7]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-1880f8c7]{border-radius:0;padding:1rem}ul.ul-container[data-v-1880f8c7]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-1880f8c7]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-1880f8c7]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-1880f8c7]{width:100%}form.form-container[data-v-1880f8c7]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-1880f8c7]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-1880f8c7]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-1880f8c7]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-1880f8c7]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-1880f8c7],form.form-container .label-value select[data-v-1880f8c7]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-1880f8c7]:focus,form.form-container .label-value select[data-v-1880f8c7]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-1880f8c7]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-1880f8c7]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-1880f8c7],form.form-container .label-value input[type=radio][data-v-1880f8c7]{width:auto}form.form-container .label-value input[type=radio][data-v-1880f8c7]{margin:0 4px 0 0}form.form-container .label-value input[data-v-1880f8c7]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-1880f8c7]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-1880f8c7]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-1880f8c7]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-1880f8c7]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-1880f8c7]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-1880f8c7]:hover{background-color:#747474}form.form-container .label-msg[data-v-1880f8c7]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-1880f8c7]{color:#f9ad1e}form.form-container .label-flex[data-v-1880f8c7]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-1880f8c7]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-1880f8c7]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-1880f8c7]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-1880f8c7]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-1880f8c7]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-1880f8c7]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-1880f8c7],form.form-container1 .label-value select[data-v-1880f8c7]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-1880f8c7]:focus,form.form-container1 .label-value select[data-v-1880f8c7]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-1880f8c7]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-1880f8c7],form.form-container1 .label-value input[type=radio][data-v-1880f8c7]{width:auto}form.form-container1 .label-value input[type=radio][data-v-1880f8c7]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-1880f8c7]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-1880f8c7]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-1880f8c7]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-1880f8c7]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-1880f8c7]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-1880f8c7]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-1880f8c7]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-1880f8c7]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-1880f8c7]{color:#f9ad1e}form.form-container1 .label-flex[data-v-1880f8c7]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-1880f8c7]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-1880f8c7]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-1880f8c7]{width:100px}table.page-table th.checkbox[data-v-1880f8c7]{width:50px;text-align:center}table.page-table th.setting[data-v-1880f8c7]{width:100px;text-align:center}table.page-table thead[data-v-1880f8c7]{color:#909399}table.page-table thead tr[data-v-1880f8c7]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-1880f8c7]{padding:10px 16px}table.page-table tbody tr[data-v-1880f8c7]:hover{background-color:#eeee}table.page-table tbody tr[data-v-1880f8c7]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-1880f8c7]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-1880f8c7]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-1880f8c7]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-1880f8c7]{width:100px}table.popups-table th.checkbox[data-v-1880f8c7]{width:50px;text-align:center}table.popups-table th.setting[data-v-1880f8c7]{width:100px;text-align:center}table.popups-table thead[data-v-1880f8c7]{color:#eee}table.popups-table thead tr[data-v-1880f8c7]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-1880f8c7]{padding:10px 16px}table.popups-table tbody tr[data-v-1880f8c7]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-1880f8c7]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-1880f8c7]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-1880f8c7]{width:100%}header.header-desktop[data-v-1880f8c7]{display:block}header.header-mobile[data-v-1880f8c7]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-1880f8c7]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-1880f8c7]{width:100%;height:100%}header.header-mobile button svg path[data-v-1880f8c7]{fill:#fff}nav.sidebar[data-v-1880f8c7]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-1880f8c7]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-1880f8c7]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-1880f8c7]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-1880f8c7]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-1880f8c7]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-1880f8c7]{color:#fff}nav.sidebar .container .children[data-v-1880f8c7]{padding-left:30px}@-moz-keyframes tada-1880f8c7{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-1880f8c7{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-1880f8c7{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-1880f8c7{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-1880f8c7]{animation:dialogEnter-1880f8c7 .3s linear forwards}.dialog-leave-active[data-v-1880f8c7]{animation:dialogLeave-1880f8c7 .3s linear forwards}@keyframes dialogEnter-1880f8c7{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-1880f8c7{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-1880f8c7]{animation:dialogEnter-1880f8c7 .2s linear forwards}.dialog1-leave-active[data-v-1880f8c7]{animation:dialogLeave-1880f8c7 .2s linear forwards}@keyframes rotateEnter-1880f8c7{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-1880f8c7]{animation:rotateEnter-1880f8c7 .7s;position:relative}.rotate-leave-active[data-v-1880f8c7]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-1880f8c7{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-1880f8c7{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-1880f8c7]{animation:slideOutTop-1880f8c7 .5s linear forwards}.slide-top-leave-active[data-v-1880f8c7],.slide-bottom-enter-active[data-v-1880f8c7]{animation:slideOutBottom-1880f8c7 .5s linear forwards}@keyframes slideInLeft-1880f8c7{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-1880f8c7{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-1880f8c7]{animation:slideInLeft-1880f8c7 .3s linear forwards}.slide-left-leave-active[data-v-1880f8c7]{animation:slideInRight-1880f8c7 .3s linear forwards}@keyframes slideOutLeft-1880f8c7{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-1880f8c7{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-1880f8c7]{animation:slideOutLeft-1880f8c7 .3s linear forwards}.slide-right-leave-active[data-v-1880f8c7]{animation:slideOutRight-1880f8c7 .3s linear forwards}@keyframes bganimation-1880f8c7{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-1880f8c7{0%{height:0}to{height:100px}}@keyframes fadeEnd-1880f8c7{0%{height:100%}to{height:0}}.fade-enter-active[data-v-1880f8c7]{animation:fadeStart-1880f8c7 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-1880f8c7]{animation:fadeEnd-1880f8c7 .1s linear forwards;overflow:hidden}.disk-content[data-v-1880f8c7]{position:relative;width:100%;height:100%;color:#fff;font-style:normal;font-weight:300;padding:2rem;display:flex;flex-wrap:wrap;align-items:center}.disk-content .name[data-v-1880f8c7]{font-size:1rem;font-weight:400;color:#eee;width:100%}.disk-content .info[data-v-1880f8c7]{width:100%;margin:.5rem 0;display:flex;flex-wrap:wrap}.disk-content .info .icon[data-v-1880f8c7]{width:50px;height:50px}.disk-content .info .card[data-v-1880f8c7]{flex:0 0 100%;max-width:calc(100% - 50px);padding-left:1rem;font-size:14px}.disk-content progress[data-v-1880f8c7]{width:100%;height:12px}.info .card li[data-v-1880f8c7]{margin:5px 0}.info .status[data-v-1880f8c7]{display:inline-block;height:1.125rem;padding-left:.5rem;padding-right:.5rem;border-radius:2px;line-height:1.5;text-align:center;font-size:.75rem;height:1.3rem;line-height:2;margin-right:.5rem}.info .main[data-v-1880f8c7]{background-color:#2175f3;color:#fff}.info .success[data-v-1880f8c7]{background-color:#48c78e;color:#fff}.info .error[data-v-1880f8c7]{background-color:#c7486d;color:#fff}.info .load[data-v-1880f8c7]{background-color:#b5c748}.info .unmounted[data-v-1880f8c7]{background-color:#48c752}@keyframes turns-32ba2e94{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-32ba2e94]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-32ba2e94]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-32ba2e94]{color:#f9ad1e}.notice_info li[data-v-32ba2e94]{font-size:14px;list-style:revert}.text-container[data-v-32ba2e94]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-32ba2e94]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-32ba2e94]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-32ba2e94]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-32ba2e94]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-32ba2e94]{width:100%}.text-container .text-container_item p.info-desc[data-v-32ba2e94]{width:100%;color:#999;font-size:14px}.page-container[data-v-32ba2e94]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-32ba2e94]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-32ba2e94]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-32ba2e94]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-32ba2e94],.page-container .page-flex .page-sidebar a[data-v-32ba2e94]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-32ba2e94]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-32ba2e94]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-32ba2e94]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-32ba2e94]{border-radius:0;padding:1rem}ul.ul-container[data-v-32ba2e94]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-32ba2e94]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-32ba2e94]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-32ba2e94]{width:100%}form.form-container[data-v-32ba2e94]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-32ba2e94]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-32ba2e94]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-32ba2e94]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-32ba2e94]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-32ba2e94],form.form-container .label-value select[data-v-32ba2e94]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-32ba2e94]:focus,form.form-container .label-value select[data-v-32ba2e94]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-32ba2e94]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-32ba2e94]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-32ba2e94],form.form-container .label-value input[type=radio][data-v-32ba2e94]{width:auto}form.form-container .label-value input[type=radio][data-v-32ba2e94]{margin:0 4px 0 0}form.form-container .label-value input[data-v-32ba2e94]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-32ba2e94]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-32ba2e94]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-32ba2e94]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-32ba2e94]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-32ba2e94]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-32ba2e94]:hover{background-color:#747474}form.form-container .label-msg[data-v-32ba2e94]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-32ba2e94]{color:#f9ad1e}form.form-container .label-flex[data-v-32ba2e94]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-32ba2e94]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-32ba2e94]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-32ba2e94]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-32ba2e94]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-32ba2e94]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-32ba2e94]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-32ba2e94],form.form-container1 .label-value select[data-v-32ba2e94]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-32ba2e94]:focus,form.form-container1 .label-value select[data-v-32ba2e94]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-32ba2e94]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-32ba2e94],form.form-container1 .label-value input[type=radio][data-v-32ba2e94]{width:auto}form.form-container1 .label-value input[type=radio][data-v-32ba2e94]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-32ba2e94]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-32ba2e94]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-32ba2e94]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-32ba2e94]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-32ba2e94]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-32ba2e94]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-32ba2e94]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-32ba2e94]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-32ba2e94]{color:#f9ad1e}form.form-container1 .label-flex[data-v-32ba2e94]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-32ba2e94]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-32ba2e94]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-32ba2e94]{width:100px}table.page-table th.checkbox[data-v-32ba2e94]{width:50px;text-align:center}table.page-table th.setting[data-v-32ba2e94]{width:100px;text-align:center}table.page-table thead[data-v-32ba2e94]{color:#909399}table.page-table thead tr[data-v-32ba2e94]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-32ba2e94]{padding:10px 16px}table.page-table tbody tr[data-v-32ba2e94]:hover{background-color:#eeee}table.page-table tbody tr[data-v-32ba2e94]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-32ba2e94]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-32ba2e94]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-32ba2e94]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-32ba2e94]{width:100px}table.popups-table th.checkbox[data-v-32ba2e94]{width:50px;text-align:center}table.popups-table th.setting[data-v-32ba2e94]{width:100px;text-align:center}table.popups-table thead[data-v-32ba2e94]{color:#eee}table.popups-table thead tr[data-v-32ba2e94]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-32ba2e94]{padding:10px 16px}table.popups-table tbody tr[data-v-32ba2e94]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-32ba2e94]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-32ba2e94]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-32ba2e94]{width:100%}header.header-desktop[data-v-32ba2e94]{display:block}header.header-mobile[data-v-32ba2e94]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-32ba2e94]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-32ba2e94]{width:100%;height:100%}header.header-mobile button svg path[data-v-32ba2e94]{fill:#fff}nav.sidebar[data-v-32ba2e94]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-32ba2e94]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-32ba2e94]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-32ba2e94]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-32ba2e94]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-32ba2e94]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-32ba2e94]{color:#fff}nav.sidebar .container .children[data-v-32ba2e94]{padding-left:30px}@-moz-keyframes tada-32ba2e94{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-32ba2e94{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-32ba2e94{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-32ba2e94{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-32ba2e94]{animation:dialogEnter-32ba2e94 .3s linear forwards}.dialog-leave-active[data-v-32ba2e94]{animation:dialogLeave-32ba2e94 .3s linear forwards}@keyframes dialogEnter-32ba2e94{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-32ba2e94{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-32ba2e94]{animation:dialogEnter-32ba2e94 .2s linear forwards}.dialog1-leave-active[data-v-32ba2e94]{animation:dialogLeave-32ba2e94 .2s linear forwards}@keyframes rotateEnter-32ba2e94{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-32ba2e94]{animation:rotateEnter-32ba2e94 .7s;position:relative}.rotate-leave-active[data-v-32ba2e94]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-32ba2e94{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-32ba2e94{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-32ba2e94]{animation:slideOutTop-32ba2e94 .5s linear forwards}.slide-top-leave-active[data-v-32ba2e94],.slide-bottom-enter-active[data-v-32ba2e94]{animation:slideOutBottom-32ba2e94 .5s linear forwards}@keyframes slideInLeft-32ba2e94{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-32ba2e94{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-32ba2e94]{animation:slideInLeft-32ba2e94 .3s linear forwards}.slide-left-leave-active[data-v-32ba2e94]{animation:slideInRight-32ba2e94 .3s linear forwards}@keyframes slideOutLeft-32ba2e94{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-32ba2e94{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-32ba2e94]{animation:slideOutLeft-32ba2e94 .3s linear forwards}.slide-right-leave-active[data-v-32ba2e94]{animation:slideOutRight-32ba2e94 .3s linear forwards}@keyframes bganimation-32ba2e94{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-32ba2e94{0%{height:0}to{height:100px}}@keyframes fadeEnd-32ba2e94{0%{height:100%}to{height:0}}.fade-enter-active[data-v-32ba2e94]{animation:fadeStart-32ba2e94 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-32ba2e94]{animation:fadeEnd-32ba2e94 .1s linear forwards;overflow:hidden}.section-disk-container[data-v-32ba2e94]{grid-template-columns:repeat(auto-fill,minmax(500px,1fr))!important}@keyframes turns-eb492a5a{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-eb492a5a]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-eb492a5a]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-eb492a5a]{color:#f9ad1e}.notice_info li[data-v-eb492a5a]{font-size:14px;list-style:revert}.text-container[data-v-eb492a5a]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-eb492a5a]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-eb492a5a]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-eb492a5a]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-eb492a5a]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-eb492a5a]{width:100%}.text-container .text-container_item p.info-desc[data-v-eb492a5a]{width:100%;color:#999;font-size:14px}.page-container[data-v-eb492a5a]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-eb492a5a]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-eb492a5a]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-eb492a5a]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-eb492a5a],.page-container .page-flex .page-sidebar a[data-v-eb492a5a]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-eb492a5a]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-eb492a5a]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-eb492a5a]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-eb492a5a]{border-radius:0;padding:1rem}ul.ul-container[data-v-eb492a5a]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-eb492a5a]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-eb492a5a]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-eb492a5a]{width:100%}form.form-container[data-v-eb492a5a]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-eb492a5a]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-eb492a5a]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-eb492a5a]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-eb492a5a]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-eb492a5a],form.form-container .label-value select[data-v-eb492a5a]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-eb492a5a]:focus,form.form-container .label-value select[data-v-eb492a5a]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-eb492a5a]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-eb492a5a]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-eb492a5a],form.form-container .label-value input[type=radio][data-v-eb492a5a]{width:auto}form.form-container .label-value input[type=radio][data-v-eb492a5a]{margin:0 4px 0 0}form.form-container .label-value input[data-v-eb492a5a]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-eb492a5a]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-eb492a5a]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-eb492a5a]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-eb492a5a]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-eb492a5a]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-eb492a5a]:hover{background-color:#747474}form.form-container .label-msg[data-v-eb492a5a]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-eb492a5a]{color:#f9ad1e}form.form-container .label-flex[data-v-eb492a5a]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-eb492a5a]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-eb492a5a]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-eb492a5a]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-eb492a5a]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-eb492a5a]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-eb492a5a]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-eb492a5a],form.form-container1 .label-value select[data-v-eb492a5a]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-eb492a5a]:focus,form.form-container1 .label-value select[data-v-eb492a5a]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-eb492a5a]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-eb492a5a],form.form-container1 .label-value input[type=radio][data-v-eb492a5a]{width:auto}form.form-container1 .label-value input[type=radio][data-v-eb492a5a]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-eb492a5a]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-eb492a5a]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-eb492a5a]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-eb492a5a]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-eb492a5a]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-eb492a5a]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-eb492a5a]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-eb492a5a]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-eb492a5a]{color:#f9ad1e}form.form-container1 .label-flex[data-v-eb492a5a]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-eb492a5a]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-eb492a5a]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-eb492a5a]{width:100px}table.page-table th.checkbox[data-v-eb492a5a]{width:50px;text-align:center}table.page-table th.setting[data-v-eb492a5a]{width:100px;text-align:center}table.page-table thead[data-v-eb492a5a]{color:#909399}table.page-table thead tr[data-v-eb492a5a]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-eb492a5a]{padding:10px 16px}table.page-table tbody tr[data-v-eb492a5a]:hover{background-color:#eeee}table.page-table tbody tr[data-v-eb492a5a]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-eb492a5a]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-eb492a5a]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-eb492a5a]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-eb492a5a]{width:100px}table.popups-table th.checkbox[data-v-eb492a5a]{width:50px;text-align:center}table.popups-table th.setting[data-v-eb492a5a]{width:100px;text-align:center}table.popups-table thead[data-v-eb492a5a]{color:#eee}table.popups-table thead tr[data-v-eb492a5a]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-eb492a5a]{padding:10px 16px}table.popups-table tbody tr[data-v-eb492a5a]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-eb492a5a]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-eb492a5a]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-eb492a5a]{width:100%}header.header-desktop[data-v-eb492a5a]{display:block}header.header-mobile[data-v-eb492a5a]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-eb492a5a]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-eb492a5a]{width:100%;height:100%}header.header-mobile button svg path[data-v-eb492a5a]{fill:#fff}nav.sidebar[data-v-eb492a5a]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-eb492a5a]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-eb492a5a]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-eb492a5a]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-eb492a5a]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-eb492a5a]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-eb492a5a]{color:#fff}nav.sidebar .container .children[data-v-eb492a5a]{padding-left:30px}@-moz-keyframes tada-eb492a5a{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-eb492a5a{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-eb492a5a{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-eb492a5a{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-eb492a5a]{animation:dialogEnter-eb492a5a .3s linear forwards}.dialog-leave-active[data-v-eb492a5a]{animation:dialogLeave-eb492a5a .3s linear forwards}@keyframes dialogEnter-eb492a5a{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-eb492a5a{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-eb492a5a]{animation:dialogEnter-eb492a5a .2s linear forwards}.dialog1-leave-active[data-v-eb492a5a]{animation:dialogLeave-eb492a5a .2s linear forwards}@keyframes rotateEnter-eb492a5a{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-eb492a5a]{animation:rotateEnter-eb492a5a .7s;position:relative}.rotate-leave-active[data-v-eb492a5a]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-eb492a5a{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-eb492a5a{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-eb492a5a]{animation:slideOutTop-eb492a5a .5s linear forwards}.slide-top-leave-active[data-v-eb492a5a],.slide-bottom-enter-active[data-v-eb492a5a]{animation:slideOutBottom-eb492a5a .5s linear forwards}@keyframes slideInLeft-eb492a5a{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-eb492a5a{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-eb492a5a]{animation:slideInLeft-eb492a5a .3s linear forwards}.slide-left-leave-active[data-v-eb492a5a]{animation:slideInRight-eb492a5a .3s linear forwards}@keyframes slideOutLeft-eb492a5a{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-eb492a5a{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-eb492a5a]{animation:slideOutLeft-eb492a5a .3s linear forwards}.slide-right-leave-active[data-v-eb492a5a]{animation:slideOutRight-eb492a5a .3s linear forwards}@keyframes bganimation-eb492a5a{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-eb492a5a{0%{height:0}to{height:100px}}@keyframes fadeEnd-eb492a5a{0%{height:100%}to{height:0}}.fade-enter-active[data-v-eb492a5a]{animation:fadeStart-eb492a5a .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-eb492a5a]{animation:fadeEnd-eb492a5a .1s linear forwards;overflow:hidden}.widget-content[data-v-eb492a5a]{width:100%;display:flex}.gauge[data-v-eb492a5a]{width:50%;height:160px;text-align:center;display:flex;justify-content:center;align-items:center}@keyframes turns-5efc00dc{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-5efc00dc]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-5efc00dc]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-5efc00dc]{color:#f9ad1e}.notice_info li[data-v-5efc00dc]{font-size:14px;list-style:revert}.text-container[data-v-5efc00dc]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-5efc00dc]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-5efc00dc]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-5efc00dc]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-5efc00dc]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-5efc00dc]{width:100%}.text-container .text-container_item p.info-desc[data-v-5efc00dc]{width:100%;color:#999;font-size:14px}.page-container[data-v-5efc00dc]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-5efc00dc]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-5efc00dc]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-5efc00dc]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-5efc00dc],.page-container .page-flex .page-sidebar a[data-v-5efc00dc]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-5efc00dc]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-5efc00dc]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-5efc00dc]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-5efc00dc]{border-radius:0;padding:1rem}ul.ul-container[data-v-5efc00dc]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-5efc00dc]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-5efc00dc]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-5efc00dc]{width:100%}form.form-container[data-v-5efc00dc]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-5efc00dc]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-5efc00dc]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-5efc00dc]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-5efc00dc]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-5efc00dc],form.form-container .label-value select[data-v-5efc00dc]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-5efc00dc]:focus,form.form-container .label-value select[data-v-5efc00dc]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-5efc00dc]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-5efc00dc]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-5efc00dc],form.form-container .label-value input[type=radio][data-v-5efc00dc]{width:auto}form.form-container .label-value input[type=radio][data-v-5efc00dc]{margin:0 4px 0 0}form.form-container .label-value input[data-v-5efc00dc]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-5efc00dc]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-5efc00dc]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-5efc00dc]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-5efc00dc]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-5efc00dc]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-5efc00dc]:hover{background-color:#747474}form.form-container .label-msg[data-v-5efc00dc]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-5efc00dc]{color:#f9ad1e}form.form-container .label-flex[data-v-5efc00dc]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-5efc00dc]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-5efc00dc]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-5efc00dc]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-5efc00dc]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-5efc00dc]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-5efc00dc]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-5efc00dc],form.form-container1 .label-value select[data-v-5efc00dc]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-5efc00dc]:focus,form.form-container1 .label-value select[data-v-5efc00dc]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-5efc00dc]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-5efc00dc],form.form-container1 .label-value input[type=radio][data-v-5efc00dc]{width:auto}form.form-container1 .label-value input[type=radio][data-v-5efc00dc]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-5efc00dc]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-5efc00dc]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-5efc00dc]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-5efc00dc]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-5efc00dc]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-5efc00dc]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-5efc00dc]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-5efc00dc]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-5efc00dc]{color:#f9ad1e}form.form-container1 .label-flex[data-v-5efc00dc]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-5efc00dc]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-5efc00dc]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-5efc00dc]{width:100px}table.page-table th.checkbox[data-v-5efc00dc]{width:50px;text-align:center}table.page-table th.setting[data-v-5efc00dc]{width:100px;text-align:center}table.page-table thead[data-v-5efc00dc]{color:#909399}table.page-table thead tr[data-v-5efc00dc]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-5efc00dc]{padding:10px 16px}table.page-table tbody tr[data-v-5efc00dc]:hover{background-color:#eeee}table.page-table tbody tr[data-v-5efc00dc]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-5efc00dc]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-5efc00dc]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-5efc00dc]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-5efc00dc]{width:100px}table.popups-table th.checkbox[data-v-5efc00dc]{width:50px;text-align:center}table.popups-table th.setting[data-v-5efc00dc]{width:100px;text-align:center}table.popups-table thead[data-v-5efc00dc]{color:#eee}table.popups-table thead tr[data-v-5efc00dc]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-5efc00dc]{padding:10px 16px}table.popups-table tbody tr[data-v-5efc00dc]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-5efc00dc]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-5efc00dc]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-5efc00dc]{width:100%}header.header-desktop[data-v-5efc00dc]{display:block}header.header-mobile[data-v-5efc00dc]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-5efc00dc]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-5efc00dc]{width:100%;height:100%}header.header-mobile button svg path[data-v-5efc00dc]{fill:#fff}nav.sidebar[data-v-5efc00dc]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-5efc00dc]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-5efc00dc]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-5efc00dc]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-5efc00dc]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-5efc00dc]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-5efc00dc]{color:#fff}nav.sidebar .container .children[data-v-5efc00dc]{padding-left:30px}@-moz-keyframes tada-5efc00dc{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-5efc00dc{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-5efc00dc{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-5efc00dc{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-5efc00dc]{animation:dialogEnter-5efc00dc .3s linear forwards}.dialog-leave-active[data-v-5efc00dc]{animation:dialogLeave-5efc00dc .3s linear forwards}@keyframes dialogEnter-5efc00dc{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-5efc00dc{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-5efc00dc]{animation:dialogEnter-5efc00dc .2s linear forwards}.dialog1-leave-active[data-v-5efc00dc]{animation:dialogLeave-5efc00dc .2s linear forwards}@keyframes rotateEnter-5efc00dc{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-5efc00dc]{animation:rotateEnter-5efc00dc .7s;position:relative}.rotate-leave-active[data-v-5efc00dc]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-5efc00dc{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-5efc00dc{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-5efc00dc]{animation:slideOutTop-5efc00dc .5s linear forwards}.slide-top-leave-active[data-v-5efc00dc],.slide-bottom-enter-active[data-v-5efc00dc]{animation:slideOutBottom-5efc00dc .5s linear forwards}@keyframes slideInLeft-5efc00dc{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-5efc00dc{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-5efc00dc]{animation:slideInLeft-5efc00dc .3s linear forwards}.slide-left-leave-active[data-v-5efc00dc]{animation:slideInRight-5efc00dc .3s linear forwards}@keyframes slideOutLeft-5efc00dc{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-5efc00dc{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-5efc00dc]{animation:slideOutLeft-5efc00dc .3s linear forwards}.slide-right-leave-active[data-v-5efc00dc]{animation:slideOutRight-5efc00dc .3s linear forwards}@keyframes bganimation-5efc00dc{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-5efc00dc{0%{height:0}to{height:100px}}@keyframes fadeEnd-5efc00dc{0%{height:100%}to{height:0}}.fade-enter-active[data-v-5efc00dc]{animation:fadeStart-5efc00dc .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-5efc00dc]{animation:fadeEnd-5efc00dc .1s linear forwards;overflow:hidden}.widget-main[data-v-5efc00dc]{position:relative;padding:1rem}.widget-main .widget-title[data-v-5efc00dc]{position:relative;width:100%;color:#fff;font-style:normal;font-weight:300;text-align:left}.widget-main .widget-item[data-v-5efc00dc]{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;margin:1rem 0}.widget-main .widget-item .widget-item_title[data-v-5efc00dc]{color:#fff;font-size:1em;font-weight:6}.widget-main .widget-item .widget-item_value[data-v-5efc00dc]{color:#eee;font-size:14px}@keyframes turns-ce99f322{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-ce99f322]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-ce99f322]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-ce99f322]{color:#f9ad1e}.notice_info li[data-v-ce99f322]{font-size:14px;list-style:revert}.text-container[data-v-ce99f322]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-ce99f322]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-ce99f322]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-ce99f322]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-ce99f322]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-ce99f322]{width:100%}.text-container .text-container_item p.info-desc[data-v-ce99f322]{width:100%;color:#999;font-size:14px}.page-container[data-v-ce99f322]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-ce99f322]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-ce99f322]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-ce99f322]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-ce99f322],.page-container .page-flex .page-sidebar a[data-v-ce99f322]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-ce99f322]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-ce99f322]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-ce99f322]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-ce99f322]{border-radius:0;padding:1rem}ul.ul-container[data-v-ce99f322]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-ce99f322]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-ce99f322]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-ce99f322]{width:100%}form.form-container[data-v-ce99f322]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-ce99f322]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-ce99f322]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-ce99f322]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-ce99f322]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-ce99f322],form.form-container .label-value select[data-v-ce99f322]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-ce99f322]:focus,form.form-container .label-value select[data-v-ce99f322]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-ce99f322]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-ce99f322]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-ce99f322],form.form-container .label-value input[type=radio][data-v-ce99f322]{width:auto}form.form-container .label-value input[type=radio][data-v-ce99f322]{margin:0 4px 0 0}form.form-container .label-value input[data-v-ce99f322]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-ce99f322]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-ce99f322]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-ce99f322]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-ce99f322]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-ce99f322]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-ce99f322]:hover{background-color:#747474}form.form-container .label-msg[data-v-ce99f322]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-ce99f322]{color:#f9ad1e}form.form-container .label-flex[data-v-ce99f322]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-ce99f322]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-ce99f322]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-ce99f322]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-ce99f322]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-ce99f322]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-ce99f322]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-ce99f322],form.form-container1 .label-value select[data-v-ce99f322]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-ce99f322]:focus,form.form-container1 .label-value select[data-v-ce99f322]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-ce99f322]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-ce99f322],form.form-container1 .label-value input[type=radio][data-v-ce99f322]{width:auto}form.form-container1 .label-value input[type=radio][data-v-ce99f322]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-ce99f322]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-ce99f322]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-ce99f322]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-ce99f322]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-ce99f322]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-ce99f322]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-ce99f322]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-ce99f322]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-ce99f322]{color:#f9ad1e}form.form-container1 .label-flex[data-v-ce99f322]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-ce99f322]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-ce99f322]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-ce99f322]{width:100px}table.page-table th.checkbox[data-v-ce99f322]{width:50px;text-align:center}table.page-table th.setting[data-v-ce99f322]{width:100px;text-align:center}table.page-table thead[data-v-ce99f322]{color:#909399}table.page-table thead tr[data-v-ce99f322]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-ce99f322]{padding:10px 16px}table.page-table tbody tr[data-v-ce99f322]:hover{background-color:#eeee}table.page-table tbody tr[data-v-ce99f322]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-ce99f322]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-ce99f322]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-ce99f322]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-ce99f322]{width:100px}table.popups-table th.checkbox[data-v-ce99f322]{width:50px;text-align:center}table.popups-table th.setting[data-v-ce99f322]{width:100px;text-align:center}table.popups-table thead[data-v-ce99f322]{color:#eee}table.popups-table thead tr[data-v-ce99f322]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-ce99f322]{padding:10px 16px}table.popups-table tbody tr[data-v-ce99f322]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-ce99f322]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-ce99f322]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-ce99f322]{width:100%}header.header-desktop[data-v-ce99f322]{display:block}header.header-mobile[data-v-ce99f322]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-ce99f322]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-ce99f322]{width:100%;height:100%}header.header-mobile button svg path[data-v-ce99f322]{fill:#fff}nav.sidebar[data-v-ce99f322]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-ce99f322]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-ce99f322]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-ce99f322]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-ce99f322]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-ce99f322]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-ce99f322]{color:#fff}nav.sidebar .container .children[data-v-ce99f322]{padding-left:30px}@-moz-keyframes tada-ce99f322{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-ce99f322{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-ce99f322{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-ce99f322{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-ce99f322]{animation:dialogEnter-ce99f322 .3s linear forwards}.dialog-leave-active[data-v-ce99f322]{animation:dialogLeave-ce99f322 .3s linear forwards}@keyframes dialogEnter-ce99f322{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-ce99f322{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-ce99f322]{animation:dialogEnter-ce99f322 .2s linear forwards}.dialog1-leave-active[data-v-ce99f322]{animation:dialogLeave-ce99f322 .2s linear forwards}@keyframes rotateEnter-ce99f322{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-ce99f322]{animation:rotateEnter-ce99f322 .7s;position:relative}.rotate-leave-active[data-v-ce99f322]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-ce99f322{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-ce99f322{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-ce99f322]{animation:slideOutTop-ce99f322 .5s linear forwards}.slide-top-leave-active[data-v-ce99f322],.slide-bottom-enter-active[data-v-ce99f322]{animation:slideOutBottom-ce99f322 .5s linear forwards}@keyframes slideInLeft-ce99f322{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-ce99f322{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-ce99f322]{animation:slideInLeft-ce99f322 .3s linear forwards}.slide-left-leave-active[data-v-ce99f322]{animation:slideInRight-ce99f322 .3s linear forwards}@keyframes slideOutLeft-ce99f322{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-ce99f322{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-ce99f322]{animation:slideOutLeft-ce99f322 .3s linear forwards}.slide-right-leave-active[data-v-ce99f322]{animation:slideOutRight-ce99f322 .3s linear forwards}@keyframes bganimation-ce99f322{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-ce99f322{0%{height:0}to{height:100px}}@keyframes fadeEnd-ce99f322{0%{height:100%}to{height:0}}.fade-enter-active[data-v-ce99f322]{animation:fadeStart-ce99f322 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-ce99f322]{animation:fadeEnd-ce99f322 .1s linear forwards;overflow:hidden}.widget-content[data-v-ce99f322]{position:relative;width:100%;height:100%;color:#fff;font-style:normal;font-weight:300;text-align:left;padding:1rem 1.25rem}.widget-content .time[data-v-ce99f322]{font-size:2rem;font-weight:500}.widget-content .date[data-v-ce99f322]{font-size:.875rem}@keyframes turns-642968c3{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-642968c3]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-642968c3]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-642968c3]{color:#f9ad1e}.notice_info li[data-v-642968c3]{font-size:14px;list-style:revert}.text-container[data-v-642968c3]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-642968c3]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-642968c3]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-642968c3]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-642968c3]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-642968c3]{width:100%}.text-container .text-container_item p.info-desc[data-v-642968c3]{width:100%;color:#999;font-size:14px}.page-container[data-v-642968c3]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-642968c3]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-642968c3]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-642968c3]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-642968c3],.page-container .page-flex .page-sidebar a[data-v-642968c3]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-642968c3]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-642968c3]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-642968c3]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-642968c3]{border-radius:0;padding:1rem}ul.ul-container[data-v-642968c3]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-642968c3]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-642968c3]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-642968c3]{width:100%}form.form-container[data-v-642968c3]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-642968c3]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-642968c3]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-642968c3]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-642968c3]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-642968c3],form.form-container .label-value select[data-v-642968c3]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-642968c3]:focus,form.form-container .label-value select[data-v-642968c3]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-642968c3]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-642968c3]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-642968c3],form.form-container .label-value input[type=radio][data-v-642968c3]{width:auto}form.form-container .label-value input[type=radio][data-v-642968c3]{margin:0 4px 0 0}form.form-container .label-value input[data-v-642968c3]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-642968c3]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-642968c3]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-642968c3]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-642968c3]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-642968c3]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-642968c3]:hover{background-color:#747474}form.form-container .label-msg[data-v-642968c3]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-642968c3]{color:#f9ad1e}form.form-container .label-flex[data-v-642968c3]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-642968c3]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-642968c3]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-642968c3]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-642968c3]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-642968c3]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-642968c3]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-642968c3],form.form-container1 .label-value select[data-v-642968c3]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-642968c3]:focus,form.form-container1 .label-value select[data-v-642968c3]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-642968c3]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-642968c3],form.form-container1 .label-value input[type=radio][data-v-642968c3]{width:auto}form.form-container1 .label-value input[type=radio][data-v-642968c3]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-642968c3]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-642968c3]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-642968c3]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-642968c3]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-642968c3]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-642968c3]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-642968c3]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-642968c3]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-642968c3]{color:#f9ad1e}form.form-container1 .label-flex[data-v-642968c3]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-642968c3]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-642968c3]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-642968c3]{width:100px}table.page-table th.checkbox[data-v-642968c3]{width:50px;text-align:center}table.page-table th.setting[data-v-642968c3]{width:100px;text-align:center}table.page-table thead[data-v-642968c3]{color:#909399}table.page-table thead tr[data-v-642968c3]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-642968c3]{padding:10px 16px}table.page-table tbody tr[data-v-642968c3]:hover{background-color:#eeee}table.page-table tbody tr[data-v-642968c3]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-642968c3]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-642968c3]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-642968c3]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-642968c3]{width:100px}table.popups-table th.checkbox[data-v-642968c3]{width:50px;text-align:center}table.popups-table th.setting[data-v-642968c3]{width:100px;text-align:center}table.popups-table thead[data-v-642968c3]{color:#eee}table.popups-table thead tr[data-v-642968c3]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-642968c3]{padding:10px 16px}table.popups-table tbody tr[data-v-642968c3]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-642968c3]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-642968c3]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-642968c3]{width:100%}header.header-desktop[data-v-642968c3]{display:block}header.header-mobile[data-v-642968c3]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-642968c3]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-642968c3]{width:100%;height:100%}header.header-mobile button svg path[data-v-642968c3]{fill:#fff}nav.sidebar[data-v-642968c3]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-642968c3]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-642968c3]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-642968c3]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-642968c3]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-642968c3]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-642968c3]{color:#fff}nav.sidebar .container .children[data-v-642968c3]{padding-left:30px}@-moz-keyframes tada-642968c3{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-642968c3{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-642968c3{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-642968c3{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-642968c3]{animation:dialogEnter-642968c3 .3s linear forwards}.dialog-leave-active[data-v-642968c3]{animation:dialogLeave-642968c3 .3s linear forwards}@keyframes dialogEnter-642968c3{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-642968c3{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-642968c3]{animation:dialogEnter-642968c3 .2s linear forwards}.dialog1-leave-active[data-v-642968c3]{animation:dialogLeave-642968c3 .2s linear forwards}@keyframes rotateEnter-642968c3{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-642968c3]{animation:rotateEnter-642968c3 .7s;position:relative}.rotate-leave-active[data-v-642968c3]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-642968c3{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-642968c3{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-642968c3]{animation:slideOutTop-642968c3 .5s linear forwards}.slide-top-leave-active[data-v-642968c3],.slide-bottom-enter-active[data-v-642968c3]{animation:slideOutBottom-642968c3 .5s linear forwards}@keyframes slideInLeft-642968c3{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-642968c3{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-642968c3]{animation:slideInLeft-642968c3 .3s linear forwards}.slide-left-leave-active[data-v-642968c3]{animation:slideInRight-642968c3 .3s linear forwards}@keyframes slideOutLeft-642968c3{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-642968c3{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-642968c3]{animation:slideOutLeft-642968c3 .3s linear forwards}.slide-right-leave-active[data-v-642968c3]{animation:slideOutRight-642968c3 .3s linear forwards}@keyframes bganimation-642968c3{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-642968c3{0%{height:0}to{height:100px}}@keyframes fadeEnd-642968c3{0%{height:100%}to{height:0}}.fade-enter-active[data-v-642968c3]{animation:fadeStart-642968c3 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-642968c3]{animation:fadeEnd-642968c3 .1s linear forwards;overflow:hidden}.dropdown-container[data-v-642968c3]{padding:0!important}.dropdown-container h2.title[data-v-642968c3]{display:flex;align-items:center;padding:0 1.25rem}.dropdown-container h2.title a[data-v-642968c3]{font-size:14px;color:#666}.dropdown-container h2.title a[data-v-642968c3]:hover{color:#418cff}.dropdown-container .status[data-v-642968c3]{display:flex;align-items:center}.dropdown-container .status span[data-v-642968c3]{font-size:13px;margin-left:.3rem}.dropdown-container .dropdown-container_menus[data-v-642968c3]{max-height:460px;overflow:auto;padding:0 1.25rem}@keyframes turns-6eeee710{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-6eeee710]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-6eeee710]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-6eeee710]{color:#f9ad1e}.notice_info li[data-v-6eeee710]{font-size:14px;list-style:revert}.text-container[data-v-6eeee710]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-6eeee710]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-6eeee710]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-6eeee710]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-6eeee710]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-6eeee710]{width:100%}.text-container .text-container_item p.info-desc[data-v-6eeee710]{width:100%;color:#999;font-size:14px}.page-container[data-v-6eeee710]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-6eeee710]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-6eeee710]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-6eeee710]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-6eeee710],.page-container .page-flex .page-sidebar a[data-v-6eeee710]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-6eeee710]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-6eeee710]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-6eeee710]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-6eeee710]{border-radius:0;padding:1rem}ul.ul-container[data-v-6eeee710]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-6eeee710]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-6eeee710]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-6eeee710]{width:100%}form.form-container[data-v-6eeee710]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-6eeee710]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-6eeee710]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-6eeee710]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-6eeee710]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-6eeee710],form.form-container .label-value select[data-v-6eeee710]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-6eeee710]:focus,form.form-container .label-value select[data-v-6eeee710]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-6eeee710]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-6eeee710]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-6eeee710],form.form-container .label-value input[type=radio][data-v-6eeee710]{width:auto}form.form-container .label-value input[type=radio][data-v-6eeee710]{margin:0 4px 0 0}form.form-container .label-value input[data-v-6eeee710]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-6eeee710]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-6eeee710]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-6eeee710]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-6eeee710]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-6eeee710]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-6eeee710]:hover{background-color:#747474}form.form-container .label-msg[data-v-6eeee710]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-6eeee710]{color:#f9ad1e}form.form-container .label-flex[data-v-6eeee710]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-6eeee710]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-6eeee710]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-6eeee710]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-6eeee710]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-6eeee710]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-6eeee710]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-6eeee710],form.form-container1 .label-value select[data-v-6eeee710]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-6eeee710]:focus,form.form-container1 .label-value select[data-v-6eeee710]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-6eeee710]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-6eeee710],form.form-container1 .label-value input[type=radio][data-v-6eeee710]{width:auto}form.form-container1 .label-value input[type=radio][data-v-6eeee710]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-6eeee710]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-6eeee710]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-6eeee710]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-6eeee710]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-6eeee710]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-6eeee710]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-6eeee710]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-6eeee710]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-6eeee710]{color:#f9ad1e}form.form-container1 .label-flex[data-v-6eeee710]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-6eeee710]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-6eeee710]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-6eeee710]{width:100px}table.page-table th.checkbox[data-v-6eeee710]{width:50px;text-align:center}table.page-table th.setting[data-v-6eeee710]{width:100px;text-align:center}table.page-table thead[data-v-6eeee710]{color:#909399}table.page-table thead tr[data-v-6eeee710]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-6eeee710]{padding:10px 16px}table.page-table tbody tr[data-v-6eeee710]:hover{background-color:#eeee}table.page-table tbody tr[data-v-6eeee710]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-6eeee710]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-6eeee710]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-6eeee710]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-6eeee710]{width:100px}table.popups-table th.checkbox[data-v-6eeee710]{width:50px;text-align:center}table.popups-table th.setting[data-v-6eeee710]{width:100px;text-align:center}table.popups-table thead[data-v-6eeee710]{color:#eee}table.popups-table thead tr[data-v-6eeee710]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-6eeee710]{padding:10px 16px}table.popups-table tbody tr[data-v-6eeee710]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-6eeee710]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-6eeee710]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-6eeee710]{width:100%}header.header-desktop[data-v-6eeee710]{display:block}header.header-mobile[data-v-6eeee710]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-6eeee710]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-6eeee710]{width:100%;height:100%}header.header-mobile button svg path[data-v-6eeee710]{fill:#fff}nav.sidebar[data-v-6eeee710]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-6eeee710]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-6eeee710]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-6eeee710]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-6eeee710]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-6eeee710]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-6eeee710]{color:#fff}nav.sidebar .container .children[data-v-6eeee710]{padding-left:30px}@-moz-keyframes tada-6eeee710{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-6eeee710{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-6eeee710{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-6eeee710{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-6eeee710]{animation:dialogEnter-6eeee710 .3s linear forwards}.dialog-leave-active[data-v-6eeee710]{animation:dialogLeave-6eeee710 .3s linear forwards}@keyframes dialogEnter-6eeee710{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-6eeee710{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-6eeee710]{animation:dialogEnter-6eeee710 .2s linear forwards}.dialog1-leave-active[data-v-6eeee710]{animation:dialogLeave-6eeee710 .2s linear forwards}@keyframes rotateEnter-6eeee710{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-6eeee710]{animation:rotateEnter-6eeee710 .7s;position:relative}.rotate-leave-active[data-v-6eeee710]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-6eeee710{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-6eeee710{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-6eeee710]{animation:slideOutTop-6eeee710 .5s linear forwards}.slide-top-leave-active[data-v-6eeee710],.slide-bottom-enter-active[data-v-6eeee710]{animation:slideOutBottom-6eeee710 .5s linear forwards}@keyframes slideInLeft-6eeee710{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-6eeee710{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-6eeee710]{animation:slideInLeft-6eeee710 .3s linear forwards}.slide-left-leave-active[data-v-6eeee710]{animation:slideInRight-6eeee710 .3s linear forwards}@keyframes slideOutLeft-6eeee710{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-6eeee710{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-6eeee710]{animation:slideOutLeft-6eeee710 .3s linear forwards}.slide-right-leave-active[data-v-6eeee710]{animation:slideOutRight-6eeee710 .3s linear forwards}@keyframes bganimation-6eeee710{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-6eeee710{0%{height:0}to{height:100px}}@keyframes fadeEnd-6eeee710{0%{height:100%}to{height:0}}.fade-enter-active[data-v-6eeee710]{animation:fadeStart-6eeee710 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-6eeee710]{animation:fadeEnd-6eeee710 .1s linear forwards;overflow:hidden}header[data-v-6eeee710]{position:relative;width:100%;height:42px;background-color:#35363a;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:0 2rem}header .f .hostname[data-v-6eeee710]{margin-left:.5rem;display:inline-block;font-size:1.5rem;font-style:normal;font-variant:normal;font-weight:500;line-height:1;text-transform:none;color:#fff}header .r[data-v-6eeee710]{display:flex;align-items:center;justify-content:flex-end}header .r[data-v-6eeee710] .dropdown-item{position:relative;margin-left:.5rem}header .r[data-v-6eeee710] .dropdown-item .dropdown-bg{position:fixed;inset:0;z-index:10}header .r[data-v-6eeee710] .dropdown-item .dropdown-container{right:0;position:absolute;top:100%;z-index:20;margin-top:.5rem;min-width:20rem;backdrop-filter:blur(1rem);background:#fff;border-radius:4px;padding:0 1.25rem;text-align:left;z-index:11}header .r[data-v-6eeee710] .dropdown-item .dropdown-container h2.title{font-size:1.125rem;margin-top:1.5rem;margin-bottom:1.5rem;font-weight:600;color:#363636;line-height:1.125}header .r[data-v-6eeee710] .dropdown-item .dropdown-container .dropdown-menu_item{width:100%;display:flex;align-items:center;margin-bottom:1rem}header .r[data-v-6eeee710] .dropdown-item .dropdown-container .dropdown-menu_item>span{color:#4a4a4a;display:block;font-size:.875rem;font-weight:700;position:relative}header .r[data-v-6eeee710] .dropdown-item .dropdown-container .dropdown-menu_item>span em{position:absolute;padding:3px;border-radius:50%;background:#ef6a6a;right:-.3rem}header .r[data-v-6eeee710] .dropdown-item .dropdown-container .dropdown-menu_item .icons{width:16px;height:16px;margin:0;padding:0;margin-right:.1rem;display:flex}header .r[data-v-6eeee710] .dropdown-item .dropdown-container .dropdown-menu_item label{background-color:#363636;border-color:transparent;color:#fff;border-radius:9999px;padding:.1rem .8rem;font-size:12px;cursor:pointer}header .r[data-v-6eeee710] .dropdown-item .dropdown-container .dropdown-menu_item a{color:#4a4a4a;display:block;font-size:.875rem;line-height:1.5;position:relative}header .r[data-v-6eeee710] .dropdown-item .dropdown-container .dropdown-menu_item .btn{width:18px;height:18px;margin:0;padding:0;margin-left:.1rem}header .r[data-v-6eeee710] .dropdown-item .dropdown-container .dropdown-menu_item svg.icon{width:100%;height:100%}header .r[data-v-6eeee710] .dropdown-item .dropdown-container .dropdown-menu_item svg.icon path{fill:#363636}header .r[data-v-6eeee710] button{background:none;margin:0;padding:0;width:14px;height:14px;margin-left:1rem;display:flex;cursor:pointer;position:relative}header .r[data-v-6eeee710] button svg{width:100%;height:100%}header .r[data-v-6eeee710] button path{fill:#d5d5d5}header .r[data-v-6eeee710] button:hover path{fill:#fff}header .r[data-v-6eeee710] button em{position:absolute;padding:3px;border-radius:50%;background:#ef6a6a;right:-.5rem;top:-.3rem}@keyframes turns-763fd268{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-763fd268]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-763fd268]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-763fd268]{color:#f9ad1e}.notice_info li[data-v-763fd268]{font-size:14px;list-style:revert}.text-container[data-v-763fd268]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-763fd268]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-763fd268]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-763fd268]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-763fd268]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-763fd268]{width:100%}.text-container .text-container_item p.info-desc[data-v-763fd268]{width:100%;color:#999;font-size:14px}.page-container[data-v-763fd268]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-763fd268]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-763fd268]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-763fd268]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-763fd268],.page-container .page-flex .page-sidebar a[data-v-763fd268]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-763fd268]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-763fd268]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-763fd268]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-763fd268]{border-radius:0;padding:1rem}ul.ul-container[data-v-763fd268]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-763fd268]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-763fd268]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-763fd268]{width:100%}form.form-container[data-v-763fd268]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-763fd268]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-763fd268]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-763fd268]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-763fd268]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-763fd268],form.form-container .label-value select[data-v-763fd268]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-763fd268]:focus,form.form-container .label-value select[data-v-763fd268]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-763fd268]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-763fd268]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-763fd268],form.form-container .label-value input[type=radio][data-v-763fd268]{width:auto}form.form-container .label-value input[type=radio][data-v-763fd268]{margin:0 4px 0 0}form.form-container .label-value input[data-v-763fd268]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-763fd268]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-763fd268]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-763fd268]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-763fd268]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-763fd268]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-763fd268]:hover{background-color:#747474}form.form-container .label-msg[data-v-763fd268]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-763fd268]{color:#f9ad1e}form.form-container .label-flex[data-v-763fd268]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-763fd268]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-763fd268]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-763fd268]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-763fd268]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-763fd268]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-763fd268]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-763fd268],form.form-container1 .label-value select[data-v-763fd268]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-763fd268]:focus,form.form-container1 .label-value select[data-v-763fd268]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-763fd268]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-763fd268],form.form-container1 .label-value input[type=radio][data-v-763fd268]{width:auto}form.form-container1 .label-value input[type=radio][data-v-763fd268]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-763fd268]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-763fd268]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-763fd268]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-763fd268]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-763fd268]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-763fd268]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-763fd268]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-763fd268]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-763fd268]{color:#f9ad1e}form.form-container1 .label-flex[data-v-763fd268]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-763fd268]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-763fd268]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-763fd268]{width:100px}table.page-table th.checkbox[data-v-763fd268]{width:50px;text-align:center}table.page-table th.setting[data-v-763fd268]{width:100px;text-align:center}table.page-table thead[data-v-763fd268]{color:#909399}table.page-table thead tr[data-v-763fd268]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-763fd268]{padding:10px 16px}table.page-table tbody tr[data-v-763fd268]:hover{background-color:#eeee}table.page-table tbody tr[data-v-763fd268]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-763fd268]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-763fd268]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-763fd268]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-763fd268]{width:100px}table.popups-table th.checkbox[data-v-763fd268]{width:50px;text-align:center}table.popups-table th.setting[data-v-763fd268]{width:100px;text-align:center}table.popups-table thead[data-v-763fd268]{color:#eee}table.popups-table thead tr[data-v-763fd268]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-763fd268]{padding:10px 16px}table.popups-table tbody tr[data-v-763fd268]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-763fd268]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-763fd268]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-763fd268]{width:100%}header.header-desktop[data-v-763fd268]{display:block}header.header-mobile[data-v-763fd268]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-763fd268]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-763fd268]{width:100%;height:100%}header.header-mobile button svg path[data-v-763fd268]{fill:#fff}nav.sidebar[data-v-763fd268]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-763fd268]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-763fd268]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-763fd268]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-763fd268]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-763fd268]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-763fd268]{color:#fff}nav.sidebar .container .children[data-v-763fd268]{padding-left:30px}@-moz-keyframes tada-763fd268{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-763fd268{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-763fd268{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-763fd268{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-763fd268]{animation:dialogEnter-763fd268 .3s linear forwards}.dialog-leave-active[data-v-763fd268]{animation:dialogLeave-763fd268 .3s linear forwards}@keyframes dialogEnter-763fd268{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-763fd268{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-763fd268]{animation:dialogEnter-763fd268 .2s linear forwards}.dialog1-leave-active[data-v-763fd268]{animation:dialogLeave-763fd268 .2s linear forwards}@keyframes rotateEnter-763fd268{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-763fd268]{animation:rotateEnter-763fd268 .7s;position:relative}.rotate-leave-active[data-v-763fd268]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-763fd268{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-763fd268{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-763fd268]{animation:slideOutTop-763fd268 .5s linear forwards}.slide-top-leave-active[data-v-763fd268],.slide-bottom-enter-active[data-v-763fd268]{animation:slideOutBottom-763fd268 .5s linear forwards}@keyframes slideInLeft-763fd268{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-763fd268{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-763fd268]{animation:slideInLeft-763fd268 .3s linear forwards}.slide-left-leave-active[data-v-763fd268]{animation:slideInRight-763fd268 .3s linear forwards}@keyframes slideOutLeft-763fd268{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-763fd268{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-763fd268]{animation:slideOutLeft-763fd268 .3s linear forwards}.slide-right-leave-active[data-v-763fd268]{animation:slideOutRight-763fd268 .3s linear forwards}@keyframes bganimation-763fd268{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-763fd268{0%{height:0}to{height:100px}}@keyframes fadeEnd-763fd268{0%{height:100%}to{height:0}}.fade-enter-active[data-v-763fd268]{animation:fadeStart-763fd268 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-763fd268]{animation:fadeEnd-763fd268 .1s linear forwards;overflow:hidden}#page *[data-v-763fd268]{font-family:BlinkMacSystemFont,-apple-system,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif}#page[data-v-763fd268]{width:100vw;height:100vh;background-repeat:no-repeat;background-size:100% 100%;position:relative}#page .bg[data-v-763fd268]{animation-duration:.5s;background-position:50%;background-repeat:no-repeat;background-size:cover;height:100%;overflow:hidden;position:fixed;transition:background-image .3s ease;width:100%;z-index:0}#page #main[data-v-763fd268]{width:100%;height:calc(100% - 42px);overflow:auto;overflow:overlay;padding:2rem 0;position:relative;z-index:1}#page #main .main-container[data-v-763fd268]{flex:0 0 100%;width:100%}#page #main .body[data-v-763fd268]{display:flex;max-width:1380px;min-width:1380px;position:relative}#page #main .f[data-v-763fd268]{flex:0 0 100%;max-width:20rem;padding-right:1rem}#page #main .r[data-v-763fd268]{flex:0 0 100%;max-width:calc(100% - 20rem)}#page #main[data-v-763fd268]::-webkit-scrollbar{width:8px;height:0}#page #main[data-v-763fd268]::-webkit-scrollbar-thumb{background-color:#fff6;border-radius:10px;outline:none;border:none;height:30px}#page #main[data-v-763fd268]::-webkit-scrollbar-track{background:none;-webkit-border-radius:0;border-radius:0}@keyframes turns-8009221e{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-8009221e]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-8009221e]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-8009221e]{color:#f9ad1e}.notice_info li[data-v-8009221e]{font-size:14px;list-style:revert}.text-container[data-v-8009221e]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-8009221e]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-8009221e]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-8009221e]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-8009221e]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-8009221e]{width:100%}.text-container .text-container_item p.info-desc[data-v-8009221e]{width:100%;color:#999;font-size:14px}.page-container[data-v-8009221e]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-8009221e]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-8009221e]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-8009221e]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-8009221e],.page-container .page-flex .page-sidebar a[data-v-8009221e]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-8009221e]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-8009221e]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-8009221e]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-8009221e]{border-radius:0;padding:1rem}ul.ul-container[data-v-8009221e]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-8009221e]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-8009221e]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-8009221e]{width:100%}form.form-container[data-v-8009221e]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-8009221e]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-8009221e]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-8009221e]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-8009221e]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-8009221e],form.form-container .label-value select[data-v-8009221e]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-8009221e]:focus,form.form-container .label-value select[data-v-8009221e]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-8009221e]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-8009221e]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-8009221e],form.form-container .label-value input[type=radio][data-v-8009221e]{width:auto}form.form-container .label-value input[type=radio][data-v-8009221e]{margin:0 4px 0 0}form.form-container .label-value input[data-v-8009221e]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-8009221e]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-8009221e]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-8009221e]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-8009221e]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-8009221e]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-8009221e]:hover{background-color:#747474}form.form-container .label-msg[data-v-8009221e]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-8009221e]{color:#f9ad1e}form.form-container .label-flex[data-v-8009221e]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-8009221e]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-8009221e]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-8009221e]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-8009221e]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-8009221e]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-8009221e]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-8009221e],form.form-container1 .label-value select[data-v-8009221e]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-8009221e]:focus,form.form-container1 .label-value select[data-v-8009221e]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-8009221e]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-8009221e],form.form-container1 .label-value input[type=radio][data-v-8009221e]{width:auto}form.form-container1 .label-value input[type=radio][data-v-8009221e]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-8009221e]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-8009221e]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-8009221e]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-8009221e]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-8009221e]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-8009221e]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-8009221e]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-8009221e]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-8009221e]{color:#f9ad1e}form.form-container1 .label-flex[data-v-8009221e]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-8009221e]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-8009221e]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-8009221e]{width:100px}table.page-table th.checkbox[data-v-8009221e]{width:50px;text-align:center}table.page-table th.setting[data-v-8009221e]{width:100px;text-align:center}table.page-table thead[data-v-8009221e]{color:#909399}table.page-table thead tr[data-v-8009221e]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-8009221e]{padding:10px 16px}table.page-table tbody tr[data-v-8009221e]:hover{background-color:#eeee}table.page-table tbody tr[data-v-8009221e]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-8009221e]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-8009221e]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-8009221e]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-8009221e]{width:100px}table.popups-table th.checkbox[data-v-8009221e]{width:50px;text-align:center}table.popups-table th.setting[data-v-8009221e]{width:100px;text-align:center}table.popups-table thead[data-v-8009221e]{color:#eee}table.popups-table thead tr[data-v-8009221e]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-8009221e]{padding:10px 16px}table.popups-table tbody tr[data-v-8009221e]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-8009221e]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-8009221e]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-8009221e]{width:100%}header.header-desktop[data-v-8009221e]{display:block}header.header-mobile[data-v-8009221e]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-8009221e]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-8009221e]{width:100%;height:100%}header.header-mobile button svg path[data-v-8009221e]{fill:#fff}nav.sidebar[data-v-8009221e]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-8009221e]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-8009221e]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-8009221e]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-8009221e]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-8009221e]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-8009221e]{color:#fff}nav.sidebar .container .children[data-v-8009221e]{padding-left:30px}@-moz-keyframes tada-8009221e{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-8009221e{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-8009221e{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-8009221e{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-8009221e]{animation:dialogEnter-8009221e .3s linear forwards}.dialog-leave-active[data-v-8009221e]{animation:dialogLeave-8009221e .3s linear forwards}@keyframes dialogEnter-8009221e{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-8009221e{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-8009221e]{animation:dialogEnter-8009221e .2s linear forwards}.dialog1-leave-active[data-v-8009221e]{animation:dialogLeave-8009221e .2s linear forwards}@keyframes rotateEnter-8009221e{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-8009221e]{animation:rotateEnter-8009221e .7s;position:relative}.rotate-leave-active[data-v-8009221e]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-8009221e{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-8009221e{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-8009221e]{animation:slideOutTop-8009221e .5s linear forwards}.slide-top-leave-active[data-v-8009221e],.slide-bottom-enter-active[data-v-8009221e]{animation:slideOutBottom-8009221e .5s linear forwards}@keyframes slideInLeft-8009221e{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-8009221e{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-8009221e]{animation:slideInLeft-8009221e .3s linear forwards}.slide-left-leave-active[data-v-8009221e]{animation:slideInRight-8009221e .3s linear forwards}@keyframes slideOutLeft-8009221e{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-8009221e{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-8009221e]{animation:slideOutLeft-8009221e .3s linear forwards}.slide-right-leave-active[data-v-8009221e]{animation:slideOutRight-8009221e .3s linear forwards}@keyframes bganimation-8009221e{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-8009221e{0%{height:0}to{height:100px}}@keyframes fadeEnd-8009221e{0%{height:100%}to{height:0}}.fade-enter-active[data-v-8009221e]{animation:fadeStart-8009221e .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-8009221e]{animation:fadeEnd-8009221e .1s linear forwards;overflow:hidden}.folder-body[data-v-8009221e]{margin-left:24px;margin-top:2px}.folder-body>div.content[data-v-8009221e]{cursor:pointer;display:flex;align-items:center;padding:0 6px}.folder-body>div.content[data-v-8009221e]:hover{background-color:#ecf5ff}.folder-body>div.content>span[data-v-8009221e]{color:#000000d4;font-size:13px;line-height:32px;font-weight:500}.folder-body>div.content>img[data-v-8009221e]{width:24px;margin-right:10px;margin-left:16px}.empty[data-v-8009221e]{color:#000000d4;font-size:12px;margin-left:38px;line-height:32px}@keyframes turns-2ec06138{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-2ec06138]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-2ec06138]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-2ec06138]{color:#f9ad1e}.notice_info li[data-v-2ec06138]{font-size:14px;list-style:revert}.text-container[data-v-2ec06138]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-2ec06138]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-2ec06138]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-2ec06138]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-2ec06138]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-2ec06138]{width:100%}.text-container .text-container_item p.info-desc[data-v-2ec06138]{width:100%;color:#999;font-size:14px}.page-container[data-v-2ec06138]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-2ec06138]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-2ec06138]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-2ec06138]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-2ec06138],.page-container .page-flex .page-sidebar a[data-v-2ec06138]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-2ec06138]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-2ec06138]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-2ec06138]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-2ec06138]{border-radius:0;padding:1rem}ul.ul-container[data-v-2ec06138]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-2ec06138]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-2ec06138]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-2ec06138]{width:100%}form.form-container[data-v-2ec06138]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-2ec06138]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-2ec06138]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-2ec06138]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-2ec06138]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-2ec06138],form.form-container .label-value select[data-v-2ec06138]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-2ec06138]:focus,form.form-container .label-value select[data-v-2ec06138]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-2ec06138]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-2ec06138]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-2ec06138],form.form-container .label-value input[type=radio][data-v-2ec06138]{width:auto}form.form-container .label-value input[type=radio][data-v-2ec06138]{margin:0 4px 0 0}form.form-container .label-value input[data-v-2ec06138]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-2ec06138]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-2ec06138]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-2ec06138]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-2ec06138]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-2ec06138]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-2ec06138]:hover{background-color:#747474}form.form-container .label-msg[data-v-2ec06138]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-2ec06138]{color:#f9ad1e}form.form-container .label-flex[data-v-2ec06138]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-2ec06138]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-2ec06138]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-2ec06138]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-2ec06138]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-2ec06138]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-2ec06138]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-2ec06138],form.form-container1 .label-value select[data-v-2ec06138]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-2ec06138]:focus,form.form-container1 .label-value select[data-v-2ec06138]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-2ec06138]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-2ec06138],form.form-container1 .label-value input[type=radio][data-v-2ec06138]{width:auto}form.form-container1 .label-value input[type=radio][data-v-2ec06138]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-2ec06138]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-2ec06138]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-2ec06138]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-2ec06138]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-2ec06138]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-2ec06138]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-2ec06138]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-2ec06138]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-2ec06138]{color:#f9ad1e}form.form-container1 .label-flex[data-v-2ec06138]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-2ec06138]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-2ec06138]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-2ec06138]{width:100px}table.page-table th.checkbox[data-v-2ec06138]{width:50px;text-align:center}table.page-table th.setting[data-v-2ec06138]{width:100px;text-align:center}table.page-table thead[data-v-2ec06138]{color:#909399}table.page-table thead tr[data-v-2ec06138]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-2ec06138]{padding:10px 16px}table.page-table tbody tr[data-v-2ec06138]:hover{background-color:#eeee}table.page-table tbody tr[data-v-2ec06138]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-2ec06138]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-2ec06138]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-2ec06138]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-2ec06138]{width:100px}table.popups-table th.checkbox[data-v-2ec06138]{width:50px;text-align:center}table.popups-table th.setting[data-v-2ec06138]{width:100px;text-align:center}table.popups-table thead[data-v-2ec06138]{color:#eee}table.popups-table thead tr[data-v-2ec06138]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-2ec06138]{padding:10px 16px}table.popups-table tbody tr[data-v-2ec06138]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-2ec06138]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-2ec06138]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-2ec06138]{width:100%}header.header-desktop[data-v-2ec06138]{display:block}header.header-mobile[data-v-2ec06138]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-2ec06138]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-2ec06138]{width:100%;height:100%}header.header-mobile button svg path[data-v-2ec06138]{fill:#fff}nav.sidebar[data-v-2ec06138]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-2ec06138]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-2ec06138]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-2ec06138]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-2ec06138]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-2ec06138]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-2ec06138]{color:#fff}nav.sidebar .container .children[data-v-2ec06138]{padding-left:30px}@-moz-keyframes tada-2ec06138{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-2ec06138{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-2ec06138{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-2ec06138{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-2ec06138]{animation:dialogEnter-2ec06138 .3s linear forwards}.dialog-leave-active[data-v-2ec06138]{animation:dialogLeave-2ec06138 .3s linear forwards}@keyframes dialogEnter-2ec06138{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-2ec06138{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-2ec06138]{animation:dialogEnter-2ec06138 .2s linear forwards}.dialog1-leave-active[data-v-2ec06138]{animation:dialogLeave-2ec06138 .2s linear forwards}@keyframes rotateEnter-2ec06138{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-2ec06138]{animation:rotateEnter-2ec06138 .7s;position:relative}.rotate-leave-active[data-v-2ec06138]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-2ec06138{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-2ec06138{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-2ec06138]{animation:slideOutTop-2ec06138 .5s linear forwards}.slide-top-leave-active[data-v-2ec06138],.slide-bottom-enter-active[data-v-2ec06138]{animation:slideOutBottom-2ec06138 .5s linear forwards}@keyframes slideInLeft-2ec06138{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-2ec06138{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-2ec06138]{animation:slideInLeft-2ec06138 .3s linear forwards}.slide-left-leave-active[data-v-2ec06138]{animation:slideInRight-2ec06138 .3s linear forwards}@keyframes slideOutLeft-2ec06138{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-2ec06138{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-2ec06138]{animation:slideOutLeft-2ec06138 .3s linear forwards}.slide-right-leave-active[data-v-2ec06138]{animation:slideOutRight-2ec06138 .3s linear forwards}@keyframes bganimation-2ec06138{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-2ec06138{0%{height:0}to{height:100px}}@keyframes fadeEnd-2ec06138{0%{height:100%}to{height:0}}.fade-enter-active[data-v-2ec06138]{animation:fadeStart-2ec06138 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-2ec06138]{animation:fadeEnd-2ec06138 .1s linear forwards;overflow:hidden}ul.disk-item[data-v-2ec06138]{width:100%;margin-bottom:10px}ul.disk-item .auto[data-v-2ec06138]{flex:auto}ul.disk-item .disk-item_icon[data-v-2ec06138]{width:24px;height:24px;margin-right:.5rem}ul.disk-item .disk-item_icon img[data-v-2ec06138]{width:100%;height:100%}ul.disk-item li.disk-info[data-v-2ec06138]{display:flex;flex-wrap:nowrap;align-items:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%;padding:5px 8px;height:50px;cursor:pointer;color:#666;font-size:12px}ul.disk-item li.disk-info>svg[data-v-2ec06138]{margin-right:8px}ul.disk-item li.disk-info[data-v-2ec06138]:hover{background-color:#ecf5ff}ul.disk-item li.disk-info .disk-item_icon svg path[data-v-2ec06138]{fill:#09aaff}ul.disk-item li.disk-info .disk-item_f[data-v-2ec06138]{display:flex;flex-wrap:wrap;color:#000000d4}ul.disk-item li.disk-info .disk-item_f .disk-item_venderModel[data-v-2ec06138]{width:100%;font-size:14px;font-weight:500}ul.disk-item li.disk-info .disk-item_f .disk-item_used[data-v-2ec06138]{width:100%;font-size:12px}ul.disk-item .disk-children[data-v-2ec06138]{width:100%;color:#666;padding-left:24px;margin-top:4px}ul.disk-item .disk-children li.disk-children-item[data-v-2ec06138]{height:40px;font-size:12px;cursor:pointer;display:flex;flex-wrap:nowrap;align-items:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 6px}ul.disk-item .disk-children li.disk-children-item>svg[data-v-2ec06138]{margin-right:20px}ul.disk-item .disk-children li.disk-children-item[data-v-2ec06138]:hover{background-color:#ecf5ff}ul.disk-item .disk-children li.disk-children-item>.disk-children-item_f[data-v-2ec06138]{color:#000000d4;display:flex;justify-content:center;justify-items:center}ul.disk-item .disk-children li.disk-children-item>.disk-children-item_f>div>span[data-v-2ec06138]{font-size:14px;font-weight:500}ul.disk-item .disk-children li.disk-children-item>.disk-children-item_f>div>div[data-v-2ec06138]{transform:scale(.8);transform-origin:0 50%}span.tag[data-v-2ec06138]{cursor:pointer;height:14px;margin-left:8px;display:inline-flex;padding:2px 8px;justify-content:center;align-items:center;font-size:12px;border-radius:16px;background:rgba(97,216,4,.2);line-height:12px}@keyframes turns-0763aef7{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-0763aef7]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-0763aef7]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-0763aef7]{color:#f9ad1e}.notice_info li[data-v-0763aef7]{font-size:14px;list-style:revert}.text-container[data-v-0763aef7]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-0763aef7]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-0763aef7]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-0763aef7]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-0763aef7]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-0763aef7]{width:100%}.text-container .text-container_item p.info-desc[data-v-0763aef7]{width:100%;color:#999;font-size:14px}.page-container[data-v-0763aef7]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-0763aef7]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-0763aef7]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-0763aef7]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-0763aef7],.page-container .page-flex .page-sidebar a[data-v-0763aef7]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-0763aef7]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-0763aef7]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-0763aef7]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-0763aef7]{border-radius:0;padding:1rem}ul.ul-container[data-v-0763aef7]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-0763aef7]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-0763aef7]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-0763aef7]{width:100%}form.form-container[data-v-0763aef7]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-0763aef7]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-0763aef7]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-0763aef7]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-0763aef7]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-0763aef7],form.form-container .label-value select[data-v-0763aef7]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-0763aef7]:focus,form.form-container .label-value select[data-v-0763aef7]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-0763aef7]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-0763aef7]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-0763aef7],form.form-container .label-value input[type=radio][data-v-0763aef7]{width:auto}form.form-container .label-value input[type=radio][data-v-0763aef7]{margin:0 4px 0 0}form.form-container .label-value input[data-v-0763aef7]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-0763aef7]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-0763aef7]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-0763aef7]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-0763aef7]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-0763aef7]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-0763aef7]:hover{background-color:#747474}form.form-container .label-msg[data-v-0763aef7]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-0763aef7]{color:#f9ad1e}form.form-container .label-flex[data-v-0763aef7]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-0763aef7]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-0763aef7]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-0763aef7]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-0763aef7]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-0763aef7]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-0763aef7]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-0763aef7],form.form-container1 .label-value select[data-v-0763aef7]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-0763aef7]:focus,form.form-container1 .label-value select[data-v-0763aef7]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-0763aef7]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-0763aef7],form.form-container1 .label-value input[type=radio][data-v-0763aef7]{width:auto}form.form-container1 .label-value input[type=radio][data-v-0763aef7]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-0763aef7]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-0763aef7]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-0763aef7]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-0763aef7]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-0763aef7]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-0763aef7]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-0763aef7]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-0763aef7]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-0763aef7]{color:#f9ad1e}form.form-container1 .label-flex[data-v-0763aef7]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-0763aef7]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-0763aef7]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-0763aef7]{width:100px}table.page-table th.checkbox[data-v-0763aef7]{width:50px;text-align:center}table.page-table th.setting[data-v-0763aef7]{width:100px;text-align:center}table.page-table thead[data-v-0763aef7]{color:#909399}table.page-table thead tr[data-v-0763aef7]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-0763aef7]{padding:10px 16px}table.page-table tbody tr[data-v-0763aef7]:hover{background-color:#eeee}table.page-table tbody tr[data-v-0763aef7]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-0763aef7]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-0763aef7]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-0763aef7]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-0763aef7]{width:100px}table.popups-table th.checkbox[data-v-0763aef7]{width:50px;text-align:center}table.popups-table th.setting[data-v-0763aef7]{width:100px;text-align:center}table.popups-table thead[data-v-0763aef7]{color:#eee}table.popups-table thead tr[data-v-0763aef7]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-0763aef7]{padding:10px 16px}table.popups-table tbody tr[data-v-0763aef7]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-0763aef7]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-0763aef7]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-0763aef7]{width:100%}header.header-desktop[data-v-0763aef7]{display:block}header.header-mobile[data-v-0763aef7]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-0763aef7]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-0763aef7]{width:100%;height:100%}header.header-mobile button svg path[data-v-0763aef7]{fill:#fff}nav.sidebar[data-v-0763aef7]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-0763aef7]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-0763aef7]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-0763aef7]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-0763aef7]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-0763aef7]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-0763aef7]{color:#fff}nav.sidebar .container .children[data-v-0763aef7]{padding-left:30px}@-moz-keyframes tada-0763aef7{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-0763aef7{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-0763aef7{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-0763aef7{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-0763aef7]{animation:dialogEnter-0763aef7 .3s linear forwards}.dialog-leave-active[data-v-0763aef7]{animation:dialogLeave-0763aef7 .3s linear forwards}@keyframes dialogEnter-0763aef7{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-0763aef7{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-0763aef7]{animation:dialogEnter-0763aef7 .2s linear forwards}.dialog1-leave-active[data-v-0763aef7]{animation:dialogLeave-0763aef7 .2s linear forwards}@keyframes rotateEnter-0763aef7{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-0763aef7]{animation:rotateEnter-0763aef7 .7s;position:relative}.rotate-leave-active[data-v-0763aef7]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-0763aef7{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-0763aef7{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-0763aef7]{animation:slideOutTop-0763aef7 .5s linear forwards}.slide-top-leave-active[data-v-0763aef7],.slide-bottom-enter-active[data-v-0763aef7]{animation:slideOutBottom-0763aef7 .5s linear forwards}@keyframes slideInLeft-0763aef7{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-0763aef7{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-0763aef7]{animation:slideInLeft-0763aef7 .3s linear forwards}.slide-left-leave-active[data-v-0763aef7]{animation:slideInRight-0763aef7 .3s linear forwards}@keyframes slideOutLeft-0763aef7{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-0763aef7{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-0763aef7]{animation:slideOutLeft-0763aef7 .3s linear forwards}.slide-right-leave-active[data-v-0763aef7]{animation:slideOutRight-0763aef7 .3s linear forwards}@keyframes bganimation-0763aef7{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-0763aef7{0%{height:0}to{height:100px}}@keyframes fadeEnd-0763aef7{0%{height:100%}to{height:0}}.fade-enter-active[data-v-0763aef7]{animation:fadeStart-0763aef7 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-0763aef7]{animation:fadeEnd-0763aef7 .1s linear forwards;overflow:hidden}.content .header[data-v-0763aef7]{font-size:12px;display:flex;justify-content:space-between;margin-bottom:16px}.content .header>div[data-v-0763aef7]:first-of-type{color:#000000a1}.content .header>div[data-v-0763aef7]:last-of-type{color:#0060ff;cursor:pointer}@keyframes turns-e79621ae{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-e79621ae]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-e79621ae]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-e79621ae]{color:#f9ad1e}.notice_info li[data-v-e79621ae]{font-size:14px;list-style:revert}.text-container[data-v-e79621ae]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-e79621ae]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-e79621ae]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-e79621ae]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-e79621ae]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-e79621ae]{width:100%}.text-container .text-container_item p.info-desc[data-v-e79621ae]{width:100%;color:#999;font-size:14px}.page-container[data-v-e79621ae]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-e79621ae]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-e79621ae]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-e79621ae]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-e79621ae],.page-container .page-flex .page-sidebar a[data-v-e79621ae]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-e79621ae]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-e79621ae]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-e79621ae]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-e79621ae]{border-radius:0;padding:1rem}ul.ul-container[data-v-e79621ae]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-e79621ae]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-e79621ae]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-e79621ae]{width:100%}form.form-container[data-v-e79621ae]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-e79621ae]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-e79621ae]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-e79621ae]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-e79621ae]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-e79621ae],form.form-container .label-value select[data-v-e79621ae]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-e79621ae]:focus,form.form-container .label-value select[data-v-e79621ae]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-e79621ae]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-e79621ae]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-e79621ae],form.form-container .label-value input[type=radio][data-v-e79621ae]{width:auto}form.form-container .label-value input[type=radio][data-v-e79621ae]{margin:0 4px 0 0}form.form-container .label-value input[data-v-e79621ae]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-e79621ae]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-e79621ae]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-e79621ae]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-e79621ae]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-e79621ae]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-e79621ae]:hover{background-color:#747474}form.form-container .label-msg[data-v-e79621ae]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-e79621ae]{color:#f9ad1e}form.form-container .label-flex[data-v-e79621ae]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-e79621ae]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-e79621ae]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-e79621ae]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-e79621ae]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-e79621ae]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-e79621ae]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-e79621ae],form.form-container1 .label-value select[data-v-e79621ae]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-e79621ae]:focus,form.form-container1 .label-value select[data-v-e79621ae]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-e79621ae]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-e79621ae],form.form-container1 .label-value input[type=radio][data-v-e79621ae]{width:auto}form.form-container1 .label-value input[type=radio][data-v-e79621ae]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-e79621ae]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-e79621ae]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-e79621ae]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-e79621ae]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-e79621ae]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-e79621ae]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-e79621ae]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-e79621ae]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-e79621ae]{color:#f9ad1e}form.form-container1 .label-flex[data-v-e79621ae]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-e79621ae]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-e79621ae]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-e79621ae]{width:100px}table.page-table th.checkbox[data-v-e79621ae]{width:50px;text-align:center}table.page-table th.setting[data-v-e79621ae]{width:100px;text-align:center}table.page-table thead[data-v-e79621ae]{color:#909399}table.page-table thead tr[data-v-e79621ae]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-e79621ae]{padding:10px 16px}table.page-table tbody tr[data-v-e79621ae]:hover{background-color:#eeee}table.page-table tbody tr[data-v-e79621ae]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-e79621ae]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-e79621ae]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-e79621ae]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-e79621ae]{width:100px}table.popups-table th.checkbox[data-v-e79621ae]{width:50px;text-align:center}table.popups-table th.setting[data-v-e79621ae]{width:100px;text-align:center}table.popups-table thead[data-v-e79621ae]{color:#eee}table.popups-table thead tr[data-v-e79621ae]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-e79621ae]{padding:10px 16px}table.popups-table tbody tr[data-v-e79621ae]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-e79621ae]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-e79621ae]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-e79621ae]{width:100%}header.header-desktop[data-v-e79621ae]{display:block}header.header-mobile[data-v-e79621ae]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-e79621ae]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-e79621ae]{width:100%;height:100%}header.header-mobile button svg path[data-v-e79621ae]{fill:#fff}nav.sidebar[data-v-e79621ae]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-e79621ae]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-e79621ae]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-e79621ae]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-e79621ae]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-e79621ae]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-e79621ae]{color:#fff}nav.sidebar .container .children[data-v-e79621ae]{padding-left:30px}@-moz-keyframes tada-e79621ae{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-e79621ae{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-e79621ae{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-e79621ae{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-e79621ae]{animation:dialogEnter-e79621ae .3s linear forwards}.dialog-leave-active[data-v-e79621ae]{animation:dialogLeave-e79621ae .3s linear forwards}@keyframes dialogEnter-e79621ae{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-e79621ae{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-e79621ae]{animation:dialogEnter-e79621ae .2s linear forwards}.dialog1-leave-active[data-v-e79621ae]{animation:dialogLeave-e79621ae .2s linear forwards}@keyframes rotateEnter-e79621ae{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-e79621ae]{animation:rotateEnter-e79621ae .7s;position:relative}.rotate-leave-active[data-v-e79621ae]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-e79621ae{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-e79621ae{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-e79621ae]{animation:slideOutTop-e79621ae .5s linear forwards}.slide-top-leave-active[data-v-e79621ae],.slide-bottom-enter-active[data-v-e79621ae]{animation:slideOutBottom-e79621ae .5s linear forwards}@keyframes slideInLeft-e79621ae{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-e79621ae{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-e79621ae]{animation:slideInLeft-e79621ae .3s linear forwards}.slide-left-leave-active[data-v-e79621ae]{animation:slideInRight-e79621ae .3s linear forwards}@keyframes slideOutLeft-e79621ae{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-e79621ae{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-e79621ae]{animation:slideOutLeft-e79621ae .3s linear forwards}.slide-right-leave-active[data-v-e79621ae]{animation:slideOutRight-e79621ae .3s linear forwards}@keyframes bganimation-e79621ae{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-e79621ae{0%{height:0}to{height:100px}}@keyframes fadeEnd-e79621ae{0%{height:100%}to{height:0}}.fade-enter-active[data-v-e79621ae]{animation:fadeStart-e79621ae .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-e79621ae]{animation:fadeEnd-e79621ae .1s linear forwards;overflow:hidden}.content[data-v-e79621ae]{height:230px}.form-container1 .label-value[data-v-e79621ae]{display:flex!important}.form-container1 .label-value>input[data-v-e79621ae]{height:30px!important;width:400px!important}.form-container1 .label-value input[type=checkbox][data-v-e79621ae]{height:auto!important}.form-container1 .label-value>.button[data-v-e79621ae]{cursor:pointer;margin-left:16px;color:#fff;font-size:14px;font-weight:500;display:flex;width:76px;height:30px;padding:5px 24px;justify-content:center;align-items:center;flex-shrink:0;border-radius:4px;background:#0060ff;box-shadow:0 1px 2px #00000026}@keyframes turns-6363551b{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-6363551b]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-6363551b]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-6363551b]{color:#f9ad1e}.notice_info li[data-v-6363551b]{font-size:14px;list-style:revert}.text-container[data-v-6363551b]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-6363551b]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-6363551b]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-6363551b]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-6363551b]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-6363551b]{width:100%}.text-container .text-container_item p.info-desc[data-v-6363551b]{width:100%;color:#999;font-size:14px}.page-container[data-v-6363551b]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-6363551b]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-6363551b]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-6363551b]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-6363551b],.page-container .page-flex .page-sidebar a[data-v-6363551b]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-6363551b]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-6363551b]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-6363551b]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-6363551b]{border-radius:0;padding:1rem}ul.ul-container[data-v-6363551b]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-6363551b]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-6363551b]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-6363551b]{width:100%}form.form-container[data-v-6363551b]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-6363551b]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-6363551b]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-6363551b]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-6363551b]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-6363551b],form.form-container .label-value select[data-v-6363551b]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-6363551b]:focus,form.form-container .label-value select[data-v-6363551b]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-6363551b]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-6363551b]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-6363551b],form.form-container .label-value input[type=radio][data-v-6363551b]{width:auto}form.form-container .label-value input[type=radio][data-v-6363551b]{margin:0 4px 0 0}form.form-container .label-value input[data-v-6363551b]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-6363551b]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-6363551b]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-6363551b]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-6363551b]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-6363551b]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-6363551b]:hover{background-color:#747474}form.form-container .label-msg[data-v-6363551b]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-6363551b]{color:#f9ad1e}form.form-container .label-flex[data-v-6363551b]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-6363551b]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-6363551b]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-6363551b]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-6363551b]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-6363551b]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-6363551b]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-6363551b],form.form-container1 .label-value select[data-v-6363551b]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-6363551b]:focus,form.form-container1 .label-value select[data-v-6363551b]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-6363551b]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-6363551b],form.form-container1 .label-value input[type=radio][data-v-6363551b]{width:auto}form.form-container1 .label-value input[type=radio][data-v-6363551b]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-6363551b]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-6363551b]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-6363551b]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-6363551b]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-6363551b]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-6363551b]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-6363551b]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-6363551b]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-6363551b]{color:#f9ad1e}form.form-container1 .label-flex[data-v-6363551b]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-6363551b]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-6363551b]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-6363551b]{width:100px}table.page-table th.checkbox[data-v-6363551b]{width:50px;text-align:center}table.page-table th.setting[data-v-6363551b]{width:100px;text-align:center}table.page-table thead[data-v-6363551b]{color:#909399}table.page-table thead tr[data-v-6363551b]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-6363551b]{padding:10px 16px}table.page-table tbody tr[data-v-6363551b]:hover{background-color:#eeee}table.page-table tbody tr[data-v-6363551b]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-6363551b]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-6363551b]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-6363551b]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-6363551b]{width:100px}table.popups-table th.checkbox[data-v-6363551b]{width:50px;text-align:center}table.popups-table th.setting[data-v-6363551b]{width:100px;text-align:center}table.popups-table thead[data-v-6363551b]{color:#eee}table.popups-table thead tr[data-v-6363551b]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-6363551b]{padding:10px 16px}table.popups-table tbody tr[data-v-6363551b]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-6363551b]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-6363551b]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-6363551b]{width:100%}header.header-desktop[data-v-6363551b]{display:block}header.header-mobile[data-v-6363551b]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-6363551b]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-6363551b]{width:100%;height:100%}header.header-mobile button svg path[data-v-6363551b]{fill:#fff}nav.sidebar[data-v-6363551b]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-6363551b]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-6363551b]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-6363551b]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-6363551b]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-6363551b]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-6363551b]{color:#fff}nav.sidebar .container .children[data-v-6363551b]{padding-left:30px}@-moz-keyframes tada-6363551b{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-6363551b{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-6363551b{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-6363551b{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-6363551b]{animation:dialogEnter-6363551b .3s linear forwards}.dialog-leave-active[data-v-6363551b]{animation:dialogLeave-6363551b .3s linear forwards}@keyframes dialogEnter-6363551b{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-6363551b{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-6363551b]{animation:dialogEnter-6363551b .2s linear forwards}.dialog1-leave-active[data-v-6363551b]{animation:dialogLeave-6363551b .2s linear forwards}@keyframes rotateEnter-6363551b{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-6363551b]{animation:rotateEnter-6363551b .7s;position:relative}.rotate-leave-active[data-v-6363551b]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-6363551b{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-6363551b{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-6363551b]{animation:slideOutTop-6363551b .5s linear forwards}.slide-top-leave-active[data-v-6363551b],.slide-bottom-enter-active[data-v-6363551b]{animation:slideOutBottom-6363551b .5s linear forwards}@keyframes slideInLeft-6363551b{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-6363551b{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-6363551b]{animation:slideInLeft-6363551b .3s linear forwards}.slide-left-leave-active[data-v-6363551b]{animation:slideInRight-6363551b .3s linear forwards}@keyframes slideOutLeft-6363551b{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-6363551b{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-6363551b]{animation:slideOutLeft-6363551b .3s linear forwards}.slide-right-leave-active[data-v-6363551b]{animation:slideOutRight-6363551b .3s linear forwards}@keyframes bganimation-6363551b{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-6363551b{0%{height:0}to{height:100px}}@keyframes fadeEnd-6363551b{0%{height:100%}to{height:0}}.fade-enter-active[data-v-6363551b]{animation:fadeStart-6363551b .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-6363551b]{animation:fadeEnd-6363551b .1s linear forwards;overflow:hidden}span[data-v-6363551b]{display:inline-block}.title[data-v-6363551b]{margin-top:18px;width:100%;text-align:center;color:#3c4149;font-size:20px;font-weight:600}.detail[data-v-6363551b]{padding:32px;margin-bottom:12px}.detail>div>span[data-v-6363551b]{color:#3c4149;font-size:13px;font-weight:500;line-height:23px}.detail>div>span[data-v-6363551b]:first-of-type{margin-right:8px}@keyframes turns-26847234{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-26847234]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-26847234]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-26847234]{color:#f9ad1e}.notice_info li[data-v-26847234]{font-size:14px;list-style:revert}.text-container[data-v-26847234]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-26847234]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-26847234]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-26847234]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-26847234]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-26847234]{width:100%}.text-container .text-container_item p.info-desc[data-v-26847234]{width:100%;color:#999;font-size:14px}.page-container[data-v-26847234]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-26847234]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-26847234]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-26847234]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-26847234],.page-container .page-flex .page-sidebar a[data-v-26847234]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-26847234]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-26847234]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-26847234]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-26847234]{border-radius:0;padding:1rem}ul.ul-container[data-v-26847234]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-26847234]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-26847234]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-26847234]{width:100%}form.form-container[data-v-26847234]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-26847234]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-26847234]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-26847234]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-26847234]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-26847234],form.form-container .label-value select[data-v-26847234]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-26847234]:focus,form.form-container .label-value select[data-v-26847234]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-26847234]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-26847234]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-26847234],form.form-container .label-value input[type=radio][data-v-26847234]{width:auto}form.form-container .label-value input[type=radio][data-v-26847234]{margin:0 4px 0 0}form.form-container .label-value input[data-v-26847234]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-26847234]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-26847234]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-26847234]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-26847234]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-26847234]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-26847234]:hover{background-color:#747474}form.form-container .label-msg[data-v-26847234]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-26847234]{color:#f9ad1e}form.form-container .label-flex[data-v-26847234]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-26847234]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-26847234]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-26847234]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-26847234]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-26847234]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-26847234]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-26847234],form.form-container1 .label-value select[data-v-26847234]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-26847234]:focus,form.form-container1 .label-value select[data-v-26847234]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-26847234]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-26847234],form.form-container1 .label-value input[type=radio][data-v-26847234]{width:auto}form.form-container1 .label-value input[type=radio][data-v-26847234]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-26847234]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-26847234]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-26847234]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-26847234]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-26847234]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-26847234]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-26847234]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-26847234]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-26847234]{color:#f9ad1e}form.form-container1 .label-flex[data-v-26847234]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-26847234]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-26847234]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-26847234]{width:100px}table.page-table th.checkbox[data-v-26847234]{width:50px;text-align:center}table.page-table th.setting[data-v-26847234]{width:100px;text-align:center}table.page-table thead[data-v-26847234]{color:#909399}table.page-table thead tr[data-v-26847234]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-26847234]{padding:10px 16px}table.page-table tbody tr[data-v-26847234]:hover{background-color:#eeee}table.page-table tbody tr[data-v-26847234]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-26847234]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-26847234]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-26847234]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-26847234]{width:100px}table.popups-table th.checkbox[data-v-26847234]{width:50px;text-align:center}table.popups-table th.setting[data-v-26847234]{width:100px;text-align:center}table.popups-table thead[data-v-26847234]{color:#eee}table.popups-table thead tr[data-v-26847234]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-26847234]{padding:10px 16px}table.popups-table tbody tr[data-v-26847234]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-26847234]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-26847234]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-26847234]{width:100%}header.header-desktop[data-v-26847234]{display:block}header.header-mobile[data-v-26847234]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-26847234]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-26847234]{width:100%;height:100%}header.header-mobile button svg path[data-v-26847234]{fill:#fff}nav.sidebar[data-v-26847234]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-26847234]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-26847234]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-26847234]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-26847234]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-26847234]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-26847234]{color:#fff}nav.sidebar .container .children[data-v-26847234]{padding-left:30px}@-moz-keyframes tada-26847234{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-26847234{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-26847234{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-26847234{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-26847234]{animation:dialogEnter-26847234 .3s linear forwards}.dialog-leave-active[data-v-26847234]{animation:dialogLeave-26847234 .3s linear forwards}@keyframes dialogEnter-26847234{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-26847234{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-26847234]{animation:dialogEnter-26847234 .2s linear forwards}.dialog1-leave-active[data-v-26847234]{animation:dialogLeave-26847234 .2s linear forwards}@keyframes rotateEnter-26847234{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-26847234]{animation:rotateEnter-26847234 .7s;position:relative}.rotate-leave-active[data-v-26847234]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-26847234{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-26847234{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-26847234]{animation:slideOutTop-26847234 .5s linear forwards}.slide-top-leave-active[data-v-26847234],.slide-bottom-enter-active[data-v-26847234]{animation:slideOutBottom-26847234 .5s linear forwards}@keyframes slideInLeft-26847234{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-26847234{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-26847234]{animation:slideInLeft-26847234 .3s linear forwards}.slide-left-leave-active[data-v-26847234]{animation:slideInRight-26847234 .3s linear forwards}@keyframes slideOutLeft-26847234{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-26847234{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-26847234]{animation:slideOutLeft-26847234 .3s linear forwards}.slide-right-leave-active[data-v-26847234]{animation:slideOutRight-26847234 .3s linear forwards}@keyframes bganimation-26847234{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-26847234{0%{height:0}to{height:100px}}@keyframes fadeEnd-26847234{0%{height:100%}to{height:0}}.fade-enter-active[data-v-26847234]{animation:fadeStart-26847234 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-26847234]{animation:fadeEnd-26847234 .1s linear forwards;overflow:hidden}.add-user[data-v-26847234]{display:inline-flex;padding:4px 24px;justify-content:center;align-items:center;gap:10px;border-radius:4px;background:#0060ff;color:#fff;text-align:center;font-size:14px;line-height:22px;margin-bottom:12px}@keyframes turns-9c961df4{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-9c961df4]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-9c961df4]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-9c961df4]{color:#f9ad1e}.notice_info li[data-v-9c961df4]{font-size:14px;list-style:revert}.text-container[data-v-9c961df4]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-9c961df4]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-9c961df4]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-9c961df4]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-9c961df4]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-9c961df4]{width:100%}.text-container .text-container_item p.info-desc[data-v-9c961df4]{width:100%;color:#999;font-size:14px}.page-container[data-v-9c961df4]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-9c961df4]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-9c961df4]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-9c961df4]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-9c961df4],.page-container .page-flex .page-sidebar a[data-v-9c961df4]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-9c961df4]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-9c961df4]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-9c961df4]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-9c961df4]{border-radius:0;padding:1rem}ul.ul-container[data-v-9c961df4]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-9c961df4]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-9c961df4]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-9c961df4]{width:100%}form.form-container[data-v-9c961df4]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-9c961df4]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-9c961df4]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-9c961df4]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-9c961df4]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-9c961df4],form.form-container .label-value select[data-v-9c961df4]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-9c961df4]:focus,form.form-container .label-value select[data-v-9c961df4]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-9c961df4]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-9c961df4]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-9c961df4],form.form-container .label-value input[type=radio][data-v-9c961df4]{width:auto}form.form-container .label-value input[type=radio][data-v-9c961df4]{margin:0 4px 0 0}form.form-container .label-value input[data-v-9c961df4]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-9c961df4]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-9c961df4]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-9c961df4]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-9c961df4]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-9c961df4]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-9c961df4]:hover{background-color:#747474}form.form-container .label-msg[data-v-9c961df4]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-9c961df4]{color:#f9ad1e}form.form-container .label-flex[data-v-9c961df4]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-9c961df4]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-9c961df4]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-9c961df4]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-9c961df4]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-9c961df4]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-9c961df4]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-9c961df4],form.form-container1 .label-value select[data-v-9c961df4]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-9c961df4]:focus,form.form-container1 .label-value select[data-v-9c961df4]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-9c961df4]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-9c961df4],form.form-container1 .label-value input[type=radio][data-v-9c961df4]{width:auto}form.form-container1 .label-value input[type=radio][data-v-9c961df4]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-9c961df4]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-9c961df4]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-9c961df4]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-9c961df4]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-9c961df4]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-9c961df4]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-9c961df4]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-9c961df4]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-9c961df4]{color:#f9ad1e}form.form-container1 .label-flex[data-v-9c961df4]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-9c961df4]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-9c961df4]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-9c961df4]{width:100px}table.page-table th.checkbox[data-v-9c961df4]{width:50px;text-align:center}table.page-table th.setting[data-v-9c961df4]{width:100px;text-align:center}table.page-table thead[data-v-9c961df4]{color:#909399}table.page-table thead tr[data-v-9c961df4]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-9c961df4]{padding:10px 16px}table.page-table tbody tr[data-v-9c961df4]:hover{background-color:#eeee}table.page-table tbody tr[data-v-9c961df4]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-9c961df4]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-9c961df4]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-9c961df4]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-9c961df4]{width:100px}table.popups-table th.checkbox[data-v-9c961df4]{width:50px;text-align:center}table.popups-table th.setting[data-v-9c961df4]{width:100px;text-align:center}table.popups-table thead[data-v-9c961df4]{color:#eee}table.popups-table thead tr[data-v-9c961df4]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-9c961df4]{padding:10px 16px}table.popups-table tbody tr[data-v-9c961df4]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-9c961df4]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-9c961df4]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-9c961df4]{width:100%}header.header-desktop[data-v-9c961df4]{display:block}header.header-mobile[data-v-9c961df4]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-9c961df4]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-9c961df4]{width:100%;height:100%}header.header-mobile button svg path[data-v-9c961df4]{fill:#fff}nav.sidebar[data-v-9c961df4]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-9c961df4]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-9c961df4]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-9c961df4]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-9c961df4]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-9c961df4]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-9c961df4]{color:#fff}nav.sidebar .container .children[data-v-9c961df4]{padding-left:30px}@-moz-keyframes tada-9c961df4{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-9c961df4{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-9c961df4{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-9c961df4{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-9c961df4]{animation:dialogEnter-9c961df4 .3s linear forwards}.dialog-leave-active[data-v-9c961df4]{animation:dialogLeave-9c961df4 .3s linear forwards}@keyframes dialogEnter-9c961df4{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-9c961df4{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-9c961df4]{animation:dialogEnter-9c961df4 .2s linear forwards}.dialog1-leave-active[data-v-9c961df4]{animation:dialogLeave-9c961df4 .2s linear forwards}@keyframes rotateEnter-9c961df4{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-9c961df4]{animation:rotateEnter-9c961df4 .7s;position:relative}.rotate-leave-active[data-v-9c961df4]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-9c961df4{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-9c961df4{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-9c961df4]{animation:slideOutTop-9c961df4 .5s linear forwards}.slide-top-leave-active[data-v-9c961df4],.slide-bottom-enter-active[data-v-9c961df4]{animation:slideOutBottom-9c961df4 .5s linear forwards}@keyframes slideInLeft-9c961df4{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-9c961df4{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-9c961df4]{animation:slideInLeft-9c961df4 .3s linear forwards}.slide-left-leave-active[data-v-9c961df4]{animation:slideInRight-9c961df4 .3s linear forwards}@keyframes slideOutLeft-9c961df4{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-9c961df4{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-9c961df4]{animation:slideOutLeft-9c961df4 .3s linear forwards}.slide-right-leave-active[data-v-9c961df4]{animation:slideOutRight-9c961df4 .3s linear forwards}@keyframes bganimation-9c961df4{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-9c961df4{0%{height:0}to{height:100px}}@keyframes fadeEnd-9c961df4{0%{height:100%}to{height:0}}.fade-enter-active[data-v-9c961df4]{animation:fadeStart-9c961df4 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-9c961df4]{animation:fadeEnd-9c961df4 .1s linear forwards;overflow:hidden}.list[data-v-9c961df4]{min-height:230px}.list>div>div[data-v-9c961df4]{width:100%;height:80px;border:1px solid #d1d1d1;padding:0 16px;display:flex;align-items:center;margin-bottom:8px}.list>div>div>div.img[data-v-9c961df4]{display:inline-block;width:60px;height:60px;margin-right:12px}.list>div>div>div.img>svg[data-v-9c961df4]{width:100%}.list>div>div>div.name[data-v-9c961df4]{flex:1}.list>div>div>div.name>div[data-v-9c961df4]{width:125%;transform:scale(.8);transform-origin:0 0;color:#000c;font-size:12px;font-weight:400;line-height:24px;display:flex}.list>div>div>div.name>div>span[data-v-9c961df4]{display:inline-block}.list>div>div>div.name>div>span[data-v-9c961df4]:first-of-type{margin-right:12px}.list>div>div>div.name>div>span[data-v-9c961df4]:last-of-type{flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.list>div>div>div.name>span[data-v-9c961df4]:first-of-type{color:#000;font-size:18px;font-weight:700;width:100%;display:inline-block}.list>div>div>div.name>span[data-v-9c961df4]:last-of-type{color:#3c4149;font-size:13px}.list>div>div>div.action[data-v-9c961df4]{width:82px;display:flex;justify-content:space-between;cursor:pointer}.list>div>div>div.action>span[data-v-9c961df4]{display:inline-block;width:30px;height:30px}.list>div>div>div.action>span>svg[data-v-9c961df4]{height:100%;width:100%}.list>button[data-v-9c961df4]{display:inline-flex;padding:4px 24px;justify-content:center;align-items:center;gap:10px;border-radius:4px;background:#0060ff;color:#fff;text-align:center;font-size:14px;line-height:22px;margin-bottom:10px}.no-data[data-v-9c961df4]{height:230px;position:relative}.no-data>div[data-v-9c961df4]{width:176px;height:94px;display:block;position:relative;top:50%;margin:0 auto;transform:translateY(-50%)}.no-data>div>span[data-v-9c961df4]{display:inline-block;width:100%;text-align:center;font-size:14px;margin-bottom:32px}.no-data>div .btns[data-v-9c961df4]{margin:0 auto;width:120px;border-radius:.3rem;color:#eee;min-width:70px;font-size:13px;height:32px;line-height:32px;cursor:pointer;box-shadow:0 0 17px #0000001a;background-color:#2075f3}.no-data>div .btns>span[data-v-9c961df4]{display:inline-block;width:100%;text-align:center}@keyframes turns-4a2e9fae{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-4a2e9fae]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-4a2e9fae]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-4a2e9fae]{color:#f9ad1e}.notice_info li[data-v-4a2e9fae]{font-size:14px;list-style:revert}.text-container[data-v-4a2e9fae]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-4a2e9fae]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-4a2e9fae]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-4a2e9fae]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-4a2e9fae]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-4a2e9fae]{width:100%}.text-container .text-container_item p.info-desc[data-v-4a2e9fae]{width:100%;color:#999;font-size:14px}.page-container[data-v-4a2e9fae]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-4a2e9fae]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-4a2e9fae]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-4a2e9fae]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-4a2e9fae],.page-container .page-flex .page-sidebar a[data-v-4a2e9fae]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-4a2e9fae]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-4a2e9fae]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-4a2e9fae]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-4a2e9fae]{border-radius:0;padding:1rem}ul.ul-container[data-v-4a2e9fae]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-4a2e9fae]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-4a2e9fae]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-4a2e9fae]{width:100%}form.form-container[data-v-4a2e9fae]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-4a2e9fae]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-4a2e9fae]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-4a2e9fae]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-4a2e9fae]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-4a2e9fae],form.form-container .label-value select[data-v-4a2e9fae]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-4a2e9fae]:focus,form.form-container .label-value select[data-v-4a2e9fae]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-4a2e9fae]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-4a2e9fae]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-4a2e9fae],form.form-container .label-value input[type=radio][data-v-4a2e9fae]{width:auto}form.form-container .label-value input[type=radio][data-v-4a2e9fae]{margin:0 4px 0 0}form.form-container .label-value input[data-v-4a2e9fae]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-4a2e9fae]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-4a2e9fae]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-4a2e9fae]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-4a2e9fae]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-4a2e9fae]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-4a2e9fae]:hover{background-color:#747474}form.form-container .label-msg[data-v-4a2e9fae]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-4a2e9fae]{color:#f9ad1e}form.form-container .label-flex[data-v-4a2e9fae]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-4a2e9fae]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-4a2e9fae]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-4a2e9fae]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-4a2e9fae]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-4a2e9fae]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-4a2e9fae]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-4a2e9fae],form.form-container1 .label-value select[data-v-4a2e9fae]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-4a2e9fae]:focus,form.form-container1 .label-value select[data-v-4a2e9fae]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-4a2e9fae]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-4a2e9fae],form.form-container1 .label-value input[type=radio][data-v-4a2e9fae]{width:auto}form.form-container1 .label-value input[type=radio][data-v-4a2e9fae]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-4a2e9fae]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-4a2e9fae]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-4a2e9fae]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-4a2e9fae]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-4a2e9fae]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-4a2e9fae]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-4a2e9fae]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-4a2e9fae]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-4a2e9fae]{color:#f9ad1e}form.form-container1 .label-flex[data-v-4a2e9fae]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-4a2e9fae]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-4a2e9fae]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-4a2e9fae]{width:100px}table.page-table th.checkbox[data-v-4a2e9fae]{width:50px;text-align:center}table.page-table th.setting[data-v-4a2e9fae]{width:100px;text-align:center}table.page-table thead[data-v-4a2e9fae]{color:#909399}table.page-table thead tr[data-v-4a2e9fae]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-4a2e9fae]{padding:10px 16px}table.page-table tbody tr[data-v-4a2e9fae]:hover{background-color:#eeee}table.page-table tbody tr[data-v-4a2e9fae]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-4a2e9fae]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-4a2e9fae]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-4a2e9fae]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-4a2e9fae]{width:100px}table.popups-table th.checkbox[data-v-4a2e9fae]{width:50px;text-align:center}table.popups-table th.setting[data-v-4a2e9fae]{width:100px;text-align:center}table.popups-table thead[data-v-4a2e9fae]{color:#eee}table.popups-table thead tr[data-v-4a2e9fae]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-4a2e9fae]{padding:10px 16px}table.popups-table tbody tr[data-v-4a2e9fae]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-4a2e9fae]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-4a2e9fae]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-4a2e9fae]{width:100%}header.header-desktop[data-v-4a2e9fae]{display:block}header.header-mobile[data-v-4a2e9fae]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-4a2e9fae]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-4a2e9fae]{width:100%;height:100%}header.header-mobile button svg path[data-v-4a2e9fae]{fill:#fff}nav.sidebar[data-v-4a2e9fae]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-4a2e9fae]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-4a2e9fae]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-4a2e9fae]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-4a2e9fae]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-4a2e9fae]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-4a2e9fae]{color:#fff}nav.sidebar .container .children[data-v-4a2e9fae]{padding-left:30px}@-moz-keyframes tada-4a2e9fae{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-4a2e9fae{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-4a2e9fae{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-4a2e9fae{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-4a2e9fae]{animation:dialogEnter-4a2e9fae .3s linear forwards}.dialog-leave-active[data-v-4a2e9fae]{animation:dialogLeave-4a2e9fae .3s linear forwards}@keyframes dialogEnter-4a2e9fae{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-4a2e9fae{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-4a2e9fae]{animation:dialogEnter-4a2e9fae .2s linear forwards}.dialog1-leave-active[data-v-4a2e9fae]{animation:dialogLeave-4a2e9fae .2s linear forwards}@keyframes rotateEnter-4a2e9fae{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-4a2e9fae]{animation:rotateEnter-4a2e9fae .7s;position:relative}.rotate-leave-active[data-v-4a2e9fae]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-4a2e9fae{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-4a2e9fae{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-4a2e9fae]{animation:slideOutTop-4a2e9fae .5s linear forwards}.slide-top-leave-active[data-v-4a2e9fae],.slide-bottom-enter-active[data-v-4a2e9fae]{animation:slideOutBottom-4a2e9fae .5s linear forwards}@keyframes slideInLeft-4a2e9fae{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-4a2e9fae{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-4a2e9fae]{animation:slideInLeft-4a2e9fae .3s linear forwards}.slide-left-leave-active[data-v-4a2e9fae]{animation:slideInRight-4a2e9fae .3s linear forwards}@keyframes slideOutLeft-4a2e9fae{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-4a2e9fae{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-4a2e9fae]{animation:slideOutLeft-4a2e9fae .3s linear forwards}.slide-right-leave-active[data-v-4a2e9fae]{animation:slideOutRight-4a2e9fae .3s linear forwards}@keyframes bganimation-4a2e9fae{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-4a2e9fae{0%{height:0}to{height:100px}}@keyframes fadeEnd-4a2e9fae{0%{height:100%}to{height:0}}.fade-enter-active[data-v-4a2e9fae]{animation:fadeStart-4a2e9fae .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-4a2e9fae]{animation:fadeEnd-4a2e9fae .1s linear forwards;overflow:hidden}.list>button[data-v-4a2e9fae]{display:inline-flex;padding:4px 24px;justify-content:center;align-items:center;gap:10px;border-radius:4px;background:#0060ff;color:#fff;text-align:center;font-size:14px;line-height:22px;margin-bottom:10px}.action[data-v-4a2e9fae]{display:flex;flex:1;justify-items:center;justify-content:space-between}.action>span[data-v-4a2e9fae]{display:inline-block;width:80px;height:30px;line-height:30px;text-align:center;cursor:pointer}.action>span>svg[data-v-4a2e9fae]{height:100%;width:100%}.no-data[data-v-4a2e9fae]{height:230px;position:relative}.no-data>div[data-v-4a2e9fae]{width:176px;height:94px;display:block;position:relative;top:50%;margin:0 auto;transform:translateY(-50%)}.no-data>div>span[data-v-4a2e9fae]{display:inline-block;width:100%;text-align:center;font-size:14px;margin-bottom:32px}.no-data>div .btns[data-v-4a2e9fae]{margin:0 auto;width:120px;border-radius:.3rem;color:#eee;min-width:70px;font-size:13px;height:32px;line-height:32px;cursor:pointer;box-shadow:0 0 17px #0000001a;background-color:#2075f3}.no-data>div .btns>span[data-v-4a2e9fae]{display:inline-block;width:100%;text-align:center}@keyframes turns-019a9ac0{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-019a9ac0]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-019a9ac0]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-019a9ac0]{color:#f9ad1e}.notice_info li[data-v-019a9ac0]{font-size:14px;list-style:revert}.text-container[data-v-019a9ac0]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-019a9ac0]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-019a9ac0]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-019a9ac0]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-019a9ac0]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-019a9ac0]{width:100%}.text-container .text-container_item p.info-desc[data-v-019a9ac0]{width:100%;color:#999;font-size:14px}.page-container[data-v-019a9ac0]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-019a9ac0]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-019a9ac0]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-019a9ac0]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-019a9ac0],.page-container .page-flex .page-sidebar a[data-v-019a9ac0]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-019a9ac0]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-019a9ac0]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-019a9ac0]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-019a9ac0]{border-radius:0;padding:1rem}ul.ul-container[data-v-019a9ac0]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-019a9ac0]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-019a9ac0]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-019a9ac0]{width:100%}form.form-container[data-v-019a9ac0]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-019a9ac0]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-019a9ac0]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-019a9ac0]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-019a9ac0]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-019a9ac0],form.form-container .label-value select[data-v-019a9ac0]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-019a9ac0]:focus,form.form-container .label-value select[data-v-019a9ac0]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-019a9ac0]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-019a9ac0]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-019a9ac0],form.form-container .label-value input[type=radio][data-v-019a9ac0]{width:auto}form.form-container .label-value input[type=radio][data-v-019a9ac0]{margin:0 4px 0 0}form.form-container .label-value input[data-v-019a9ac0]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-019a9ac0]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-019a9ac0]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-019a9ac0]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-019a9ac0]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-019a9ac0]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-019a9ac0]:hover{background-color:#747474}form.form-container .label-msg[data-v-019a9ac0]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-019a9ac0]{color:#f9ad1e}form.form-container .label-flex[data-v-019a9ac0]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-019a9ac0]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-019a9ac0]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-019a9ac0]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-019a9ac0]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-019a9ac0]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-019a9ac0]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-019a9ac0],form.form-container1 .label-value select[data-v-019a9ac0]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-019a9ac0]:focus,form.form-container1 .label-value select[data-v-019a9ac0]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-019a9ac0]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-019a9ac0],form.form-container1 .label-value input[type=radio][data-v-019a9ac0]{width:auto}form.form-container1 .label-value input[type=radio][data-v-019a9ac0]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-019a9ac0]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-019a9ac0]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-019a9ac0]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-019a9ac0]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-019a9ac0]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-019a9ac0]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-019a9ac0]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-019a9ac0]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-019a9ac0]{color:#f9ad1e}form.form-container1 .label-flex[data-v-019a9ac0]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-019a9ac0]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-019a9ac0]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-019a9ac0]{width:100px}table.page-table th.checkbox[data-v-019a9ac0]{width:50px;text-align:center}table.page-table th.setting[data-v-019a9ac0]{width:100px;text-align:center}table.page-table thead[data-v-019a9ac0]{color:#909399}table.page-table thead tr[data-v-019a9ac0]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-019a9ac0]{padding:10px 16px}table.page-table tbody tr[data-v-019a9ac0]:hover{background-color:#eeee}table.page-table tbody tr[data-v-019a9ac0]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-019a9ac0]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-019a9ac0]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-019a9ac0]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-019a9ac0]{width:100px}table.popups-table th.checkbox[data-v-019a9ac0]{width:50px;text-align:center}table.popups-table th.setting[data-v-019a9ac0]{width:100px;text-align:center}table.popups-table thead[data-v-019a9ac0]{color:#eee}table.popups-table thead tr[data-v-019a9ac0]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-019a9ac0]{padding:10px 16px}table.popups-table tbody tr[data-v-019a9ac0]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-019a9ac0]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-019a9ac0]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-019a9ac0]{width:100%}header.header-desktop[data-v-019a9ac0]{display:block}header.header-mobile[data-v-019a9ac0]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-019a9ac0]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-019a9ac0]{width:100%;height:100%}header.header-mobile button svg path[data-v-019a9ac0]{fill:#fff}nav.sidebar[data-v-019a9ac0]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-019a9ac0]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-019a9ac0]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-019a9ac0]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-019a9ac0]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-019a9ac0]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-019a9ac0]{color:#fff}nav.sidebar .container .children[data-v-019a9ac0]{padding-left:30px}@-moz-keyframes tada-019a9ac0{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-019a9ac0{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-019a9ac0{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-019a9ac0{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-019a9ac0]{animation:dialogEnter-019a9ac0 .3s linear forwards}.dialog-leave-active[data-v-019a9ac0]{animation:dialogLeave-019a9ac0 .3s linear forwards}@keyframes dialogEnter-019a9ac0{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-019a9ac0{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-019a9ac0]{animation:dialogEnter-019a9ac0 .2s linear forwards}.dialog1-leave-active[data-v-019a9ac0]{animation:dialogLeave-019a9ac0 .2s linear forwards}@keyframes rotateEnter-019a9ac0{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-019a9ac0]{animation:rotateEnter-019a9ac0 .7s;position:relative}.rotate-leave-active[data-v-019a9ac0]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-019a9ac0{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-019a9ac0{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-019a9ac0]{animation:slideOutTop-019a9ac0 .5s linear forwards}.slide-top-leave-active[data-v-019a9ac0],.slide-bottom-enter-active[data-v-019a9ac0]{animation:slideOutBottom-019a9ac0 .5s linear forwards}@keyframes slideInLeft-019a9ac0{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-019a9ac0{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-019a9ac0]{animation:slideInLeft-019a9ac0 .3s linear forwards}.slide-left-leave-active[data-v-019a9ac0]{animation:slideInRight-019a9ac0 .3s linear forwards}@keyframes slideOutLeft-019a9ac0{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-019a9ac0{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-019a9ac0]{animation:slideOutLeft-019a9ac0 .3s linear forwards}.slide-right-leave-active[data-v-019a9ac0]{animation:slideOutRight-019a9ac0 .3s linear forwards}@keyframes bganimation-019a9ac0{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-019a9ac0{0%{height:0}to{height:100px}}@keyframes fadeEnd-019a9ac0{0%{height:100%}to{height:0}}.fade-enter-active[data-v-019a9ac0]{animation:fadeStart-019a9ac0 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-019a9ac0]{animation:fadeEnd-019a9ac0 .1s linear forwards;overflow:hidden}.header[data-v-019a9ac0]{position:relative;height:44px;width:100%;background:linear-gradient(180deg,rgba(255,255,255,.64) 0%,rgba(255,255,255,.4) 100%);display:flex;justify-content:space-between;align-items:center;padding:0 32px 0 80px}.header>img[data-v-019a9ac0]{height:28px}.header>.menu[data-v-019a9ac0]{position:relative;display:flex}.header>.menu>*[data-v-019a9ac0]{margin-left:16px;cursor:pointer;width:28px;height:28px}.header>.menu .language[data-v-019a9ac0]{position:relative}.header>.menu .language .actions[data-v-019a9ac0]{position:absolute;z-index:999;width:30%;right:0;top:1em}.header>.menu .language .actions .menu_background[data-v-019a9ac0]{position:fixed;inset:0}.header>.menu .language .actions ul[data-v-019a9ac0]{background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:4px 8px;border-radius:6px;top:18px;right:0;text-align:center;position:absolute;word-break:keep-all}.header>.menu .language .actions ul li[data-v-019a9ac0]{margin:6px 0;cursor:pointer;font-size:12px;font-weight:400}.header>.menu .language .actions ul li[data-v-019a9ac0]:hover{background-color:#eee}.header>.menu>.dropdown-container[data-v-019a9ac0]{position:relative}.dropdown-container[data-v-019a9ac0]{width:240px;right:0;position:absolute;top:100%;z-index:20;margin-top:.5rem;backdrop-filter:blur(1rem);background:#fff;border-radius:4px;padding:8px;text-align:left}.dropdown-container h2.title[data-v-019a9ac0]{font-size:14px;font-weight:600;color:#363636;line-height:1.125;width:100%;display:flex}.dropdown-container h2.title a[data-v-019a9ac0]{font-size:14px;color:#666}.dropdown-container h2.title a[data-v-019a9ac0]:hover{color:#418cff}.dropdown-container .dropdown-menu_item[data-v-019a9ac0]{width:100%;display:flex;align-items:center;margin-bottom:1rem;font-size:12px;font-weight:400}.dropdown-container .dropdown-menu_item>span[data-v-019a9ac0]{color:#4a4a4a;display:block;font-size:.875rem;font-weight:700;position:relative}.dropdown-container .dropdown-menu_item>span em[data-v-019a9ac0]{position:absolute;padding:3px;border-radius:50%;background:#ef6a6a;right:-.3rem}.dropdown-container .dropdown-menu_item .icons[data-v-019a9ac0]{width:16px;height:16px;margin:0;padding:0;margin-right:.1rem;display:flex}.dropdown-container .dropdown-menu_item label[data-v-019a9ac0]{background-color:#363636;border-color:transparent;color:#fff;border-radius:9999px;padding:.1rem .8rem;font-size:12px;cursor:pointer}.dropdown-container .dropdown-menu_item a[data-v-019a9ac0]{color:#4a4a4a;display:block;font-size:.875rem;line-height:1.5;position:relative}.dropdown-container .dropdown-menu_item .status[data-v-019a9ac0]{display:flex;align-items:center}.dropdown-container .dropdown-menu_item .status span[data-v-019a9ac0]{font-size:13px;margin-left:.3rem}.dropdown-container .dropdown-menu_item .btn[data-v-019a9ac0]{width:18px;height:18px;margin:0;padding:0;margin-left:.1rem}.dropdown-container .dropdown-menu_item svg.icon[data-v-019a9ac0]{width:100%;height:100%}.dropdown-container .dropdown-menu_item svg.icon path[data-v-019a9ac0]{fill:#363636}.dropdown-bg[data-v-019a9ac0]{position:fixed;inset:0;z-index:10}.i18n[data-v-019a9ac0]{fill:#297ff3}@media screen and (max-width: 668px){.header[data-v-019a9ac0]{padding:0 8px}.header>img[data-v-019a9ac0]{height:22px}.header>.menu>*[data-v-019a9ac0]{margin-left:4px;cursor:pointer}}@keyframes turns-a531abbc{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-a531abbc]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-a531abbc]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-a531abbc]{color:#f9ad1e}.notice_info li[data-v-a531abbc]{font-size:14px;list-style:revert}.text-container[data-v-a531abbc]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-a531abbc]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-a531abbc]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-a531abbc]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-a531abbc]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-a531abbc]{width:100%}.text-container .text-container_item p.info-desc[data-v-a531abbc]{width:100%;color:#999;font-size:14px}.page-container[data-v-a531abbc]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-a531abbc]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-a531abbc]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-a531abbc]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-a531abbc],.page-container .page-flex .page-sidebar a[data-v-a531abbc]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-a531abbc]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-a531abbc]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-a531abbc]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-a531abbc]{border-radius:0;padding:1rem}ul.ul-container[data-v-a531abbc]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-a531abbc]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-a531abbc]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-a531abbc]{width:100%}form.form-container[data-v-a531abbc]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-a531abbc]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-a531abbc]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-a531abbc]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-a531abbc]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-a531abbc],form.form-container .label-value select[data-v-a531abbc]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-a531abbc]:focus,form.form-container .label-value select[data-v-a531abbc]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-a531abbc]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-a531abbc]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-a531abbc],form.form-container .label-value input[type=radio][data-v-a531abbc]{width:auto}form.form-container .label-value input[type=radio][data-v-a531abbc]{margin:0 4px 0 0}form.form-container .label-value input[data-v-a531abbc]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-a531abbc]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-a531abbc]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-a531abbc]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-a531abbc]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-a531abbc]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-a531abbc]:hover{background-color:#747474}form.form-container .label-msg[data-v-a531abbc]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-a531abbc]{color:#f9ad1e}form.form-container .label-flex[data-v-a531abbc]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-a531abbc]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-a531abbc]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-a531abbc]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-a531abbc]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-a531abbc]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-a531abbc]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-a531abbc],form.form-container1 .label-value select[data-v-a531abbc]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-a531abbc]:focus,form.form-container1 .label-value select[data-v-a531abbc]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-a531abbc]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-a531abbc],form.form-container1 .label-value input[type=radio][data-v-a531abbc]{width:auto}form.form-container1 .label-value input[type=radio][data-v-a531abbc]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-a531abbc]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-a531abbc]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-a531abbc]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-a531abbc]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-a531abbc]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-a531abbc]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-a531abbc]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-a531abbc]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-a531abbc]{color:#f9ad1e}form.form-container1 .label-flex[data-v-a531abbc]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-a531abbc]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-a531abbc]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-a531abbc]{width:100px}table.page-table th.checkbox[data-v-a531abbc]{width:50px;text-align:center}table.page-table th.setting[data-v-a531abbc]{width:100px;text-align:center}table.page-table thead[data-v-a531abbc]{color:#909399}table.page-table thead tr[data-v-a531abbc]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-a531abbc]{padding:10px 16px}table.page-table tbody tr[data-v-a531abbc]:hover{background-color:#eeee}table.page-table tbody tr[data-v-a531abbc]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-a531abbc]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-a531abbc]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-a531abbc]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-a531abbc]{width:100px}table.popups-table th.checkbox[data-v-a531abbc]{width:50px;text-align:center}table.popups-table th.setting[data-v-a531abbc]{width:100px;text-align:center}table.popups-table thead[data-v-a531abbc]{color:#eee}table.popups-table thead tr[data-v-a531abbc]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-a531abbc]{padding:10px 16px}table.popups-table tbody tr[data-v-a531abbc]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-a531abbc]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-a531abbc]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-a531abbc]{width:100%}header.header-desktop[data-v-a531abbc]{display:block}header.header-mobile[data-v-a531abbc]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-a531abbc]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-a531abbc]{width:100%;height:100%}header.header-mobile button svg path[data-v-a531abbc]{fill:#fff}nav.sidebar[data-v-a531abbc]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-a531abbc]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-a531abbc]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-a531abbc]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-a531abbc]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-a531abbc]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-a531abbc]{color:#fff}nav.sidebar .container .children[data-v-a531abbc]{padding-left:30px}@-moz-keyframes tada-a531abbc{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-a531abbc{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-a531abbc{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-a531abbc{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-a531abbc]{animation:dialogEnter-a531abbc .3s linear forwards}.dialog-leave-active[data-v-a531abbc]{animation:dialogLeave-a531abbc .3s linear forwards}@keyframes dialogEnter-a531abbc{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-a531abbc{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-a531abbc]{animation:dialogEnter-a531abbc .2s linear forwards}.dialog1-leave-active[data-v-a531abbc]{animation:dialogLeave-a531abbc .2s linear forwards}@keyframes rotateEnter-a531abbc{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-a531abbc]{animation:rotateEnter-a531abbc .7s;position:relative}.rotate-leave-active[data-v-a531abbc]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-a531abbc{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-a531abbc{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-a531abbc]{animation:slideOutTop-a531abbc .5s linear forwards}.slide-top-leave-active[data-v-a531abbc],.slide-bottom-enter-active[data-v-a531abbc]{animation:slideOutBottom-a531abbc .5s linear forwards}@keyframes slideInLeft-a531abbc{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-a531abbc{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-a531abbc]{animation:slideInLeft-a531abbc .3s linear forwards}.slide-left-leave-active[data-v-a531abbc]{animation:slideInRight-a531abbc .3s linear forwards}@keyframes slideOutLeft-a531abbc{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-a531abbc{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-a531abbc]{animation:slideOutLeft-a531abbc .3s linear forwards}.slide-right-leave-active[data-v-a531abbc]{animation:slideOutRight-a531abbc .3s linear forwards}@keyframes bganimation-a531abbc{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-a531abbc{0%{height:0}to{height:100px}}@keyframes fadeEnd-a531abbc{0%{height:100%}to{height:0}}.fade-enter-active[data-v-a531abbc]{animation:fadeStart-a531abbc .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-a531abbc]{animation:fadeEnd-a531abbc .1s linear forwards;overflow:hidden}.SearchBar[data-v-a531abbc]{height:56px;width:100%;box-sizing:border-box;padding:4px}.SearchBar>input[data-v-a531abbc]{width:100%;height:100%;border-radius:32px;background:rgba(255,255,255,.6);backdrop-filter:blur(12px);padding:16px 32px;justify-content:center;align-items:center;gap:10px;font-size:14px}@keyframes turns-261e10c6{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-261e10c6]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-261e10c6]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-261e10c6]{color:#f9ad1e}.notice_info li[data-v-261e10c6]{font-size:14px;list-style:revert}.text-container[data-v-261e10c6]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-261e10c6]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-261e10c6]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-261e10c6]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-261e10c6]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-261e10c6]{width:100%}.text-container .text-container_item p.info-desc[data-v-261e10c6]{width:100%;color:#999;font-size:14px}.page-container[data-v-261e10c6]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-261e10c6]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-261e10c6]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-261e10c6]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-261e10c6],.page-container .page-flex .page-sidebar a[data-v-261e10c6]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-261e10c6]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-261e10c6]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-261e10c6]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-261e10c6]{border-radius:0;padding:1rem}ul.ul-container[data-v-261e10c6]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-261e10c6]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-261e10c6]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-261e10c6]{width:100%}form.form-container[data-v-261e10c6]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-261e10c6]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-261e10c6]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-261e10c6]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-261e10c6]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-261e10c6],form.form-container .label-value select[data-v-261e10c6]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-261e10c6]:focus,form.form-container .label-value select[data-v-261e10c6]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-261e10c6]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-261e10c6]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-261e10c6],form.form-container .label-value input[type=radio][data-v-261e10c6]{width:auto}form.form-container .label-value input[type=radio][data-v-261e10c6]{margin:0 4px 0 0}form.form-container .label-value input[data-v-261e10c6]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-261e10c6]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-261e10c6]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-261e10c6]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-261e10c6]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-261e10c6]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-261e10c6]:hover{background-color:#747474}form.form-container .label-msg[data-v-261e10c6]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-261e10c6]{color:#f9ad1e}form.form-container .label-flex[data-v-261e10c6]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-261e10c6]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-261e10c6]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-261e10c6]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-261e10c6]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-261e10c6]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-261e10c6]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-261e10c6],form.form-container1 .label-value select[data-v-261e10c6]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-261e10c6]:focus,form.form-container1 .label-value select[data-v-261e10c6]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-261e10c6]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-261e10c6],form.form-container1 .label-value input[type=radio][data-v-261e10c6]{width:auto}form.form-container1 .label-value input[type=radio][data-v-261e10c6]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-261e10c6]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-261e10c6]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-261e10c6]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-261e10c6]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-261e10c6]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-261e10c6]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-261e10c6]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-261e10c6]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-261e10c6]{color:#f9ad1e}form.form-container1 .label-flex[data-v-261e10c6]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-261e10c6]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-261e10c6]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-261e10c6]{width:100px}table.page-table th.checkbox[data-v-261e10c6]{width:50px;text-align:center}table.page-table th.setting[data-v-261e10c6]{width:100px;text-align:center}table.page-table thead[data-v-261e10c6]{color:#909399}table.page-table thead tr[data-v-261e10c6]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-261e10c6]{padding:10px 16px}table.page-table tbody tr[data-v-261e10c6]:hover{background-color:#eeee}table.page-table tbody tr[data-v-261e10c6]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-261e10c6]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-261e10c6]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-261e10c6]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-261e10c6]{width:100px}table.popups-table th.checkbox[data-v-261e10c6]{width:50px;text-align:center}table.popups-table th.setting[data-v-261e10c6]{width:100px;text-align:center}table.popups-table thead[data-v-261e10c6]{color:#eee}table.popups-table thead tr[data-v-261e10c6]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-261e10c6]{padding:10px 16px}table.popups-table tbody tr[data-v-261e10c6]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-261e10c6]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-261e10c6]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-261e10c6]{width:100%}header.header-desktop[data-v-261e10c6]{display:block}header.header-mobile[data-v-261e10c6]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-261e10c6]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-261e10c6]{width:100%;height:100%}header.header-mobile button svg path[data-v-261e10c6]{fill:#fff}nav.sidebar[data-v-261e10c6]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-261e10c6]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-261e10c6]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-261e10c6]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-261e10c6]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-261e10c6]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-261e10c6]{color:#fff}nav.sidebar .container .children[data-v-261e10c6]{padding-left:30px}@-moz-keyframes tada-261e10c6{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-261e10c6{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-261e10c6{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-261e10c6{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-261e10c6]{animation:dialogEnter-261e10c6 .3s linear forwards}.dialog-leave-active[data-v-261e10c6]{animation:dialogLeave-261e10c6 .3s linear forwards}@keyframes dialogEnter-261e10c6{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-261e10c6{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-261e10c6]{animation:dialogEnter-261e10c6 .2s linear forwards}.dialog1-leave-active[data-v-261e10c6]{animation:dialogLeave-261e10c6 .2s linear forwards}@keyframes rotateEnter-261e10c6{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-261e10c6]{animation:rotateEnter-261e10c6 .7s;position:relative}.rotate-leave-active[data-v-261e10c6]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-261e10c6{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-261e10c6{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-261e10c6]{animation:slideOutTop-261e10c6 .5s linear forwards}.slide-top-leave-active[data-v-261e10c6],.slide-bottom-enter-active[data-v-261e10c6]{animation:slideOutBottom-261e10c6 .5s linear forwards}@keyframes slideInLeft-261e10c6{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-261e10c6{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-261e10c6]{animation:slideInLeft-261e10c6 .3s linear forwards}.slide-left-leave-active[data-v-261e10c6]{animation:slideInRight-261e10c6 .3s linear forwards}@keyframes slideOutLeft-261e10c6{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-261e10c6{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-261e10c6]{animation:slideOutLeft-261e10c6 .3s linear forwards}.slide-right-leave-active[data-v-261e10c6]{animation:slideOutRight-261e10c6 .3s linear forwards}@keyframes bganimation-261e10c6{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-261e10c6{0%{height:0}to{height:100px}}@keyframes fadeEnd-261e10c6{0%{height:100%}to{height:0}}.fade-enter-active[data-v-261e10c6]{animation:fadeStart-261e10c6 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-261e10c6]{animation:fadeEnd-261e10c6 .1s linear forwards;overflow:hidden}.widget[data-v-261e10c6]{box-sizing:border-box;padding:4px}.widget>div[data-v-261e10c6]{padding:12px 8px;border-radius:12px;background:rgba(255,255,255,.6);background:linear-gradient(180deg,rgba(255,255,255,.64) 0%,rgba(255,255,255,.4) 100%);height:100%}.widget>div>.title[data-v-261e10c6]{display:inline-block;width:100%;margin-bottom:8px;margin-left:4px;color:#000c;font-size:15px;font-weight:600}@media screen and (max-width: 668px){.widget>div[data-v-261e10c6]{padding:6px}}[lock-scroll=true]{overflow:hidden!important;height:100vh}@keyframes turns-664f08dd{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-664f08dd]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-664f08dd]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-664f08dd]{color:#f9ad1e}.notice_info li[data-v-664f08dd]{font-size:14px;list-style:revert}.text-container[data-v-664f08dd]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-664f08dd]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-664f08dd]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-664f08dd]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-664f08dd]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-664f08dd]{width:100%}.text-container .text-container_item p.info-desc[data-v-664f08dd]{width:100%;color:#999;font-size:14px}.page-container[data-v-664f08dd]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-664f08dd]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-664f08dd]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-664f08dd]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-664f08dd],.page-container .page-flex .page-sidebar a[data-v-664f08dd]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-664f08dd]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-664f08dd]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-664f08dd]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-664f08dd]{border-radius:0;padding:1rem}ul.ul-container[data-v-664f08dd]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-664f08dd]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-664f08dd]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-664f08dd]{width:100%}form.form-container[data-v-664f08dd]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-664f08dd]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-664f08dd]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-664f08dd]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-664f08dd]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-664f08dd],form.form-container .label-value select[data-v-664f08dd]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-664f08dd]:focus,form.form-container .label-value select[data-v-664f08dd]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-664f08dd]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-664f08dd]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-664f08dd],form.form-container .label-value input[type=radio][data-v-664f08dd]{width:auto}form.form-container .label-value input[type=radio][data-v-664f08dd]{margin:0 4px 0 0}form.form-container .label-value input[data-v-664f08dd]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-664f08dd]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-664f08dd]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-664f08dd]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-664f08dd]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-664f08dd]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-664f08dd]:hover{background-color:#747474}form.form-container .label-msg[data-v-664f08dd]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-664f08dd]{color:#f9ad1e}form.form-container .label-flex[data-v-664f08dd]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-664f08dd]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-664f08dd]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-664f08dd]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-664f08dd]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-664f08dd]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-664f08dd]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-664f08dd],form.form-container1 .label-value select[data-v-664f08dd]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-664f08dd]:focus,form.form-container1 .label-value select[data-v-664f08dd]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-664f08dd]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-664f08dd],form.form-container1 .label-value input[type=radio][data-v-664f08dd]{width:auto}form.form-container1 .label-value input[type=radio][data-v-664f08dd]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-664f08dd]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-664f08dd]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-664f08dd]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-664f08dd]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-664f08dd]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-664f08dd]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-664f08dd]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-664f08dd]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-664f08dd]{color:#f9ad1e}form.form-container1 .label-flex[data-v-664f08dd]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-664f08dd]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-664f08dd]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-664f08dd]{width:100px}table.page-table th.checkbox[data-v-664f08dd]{width:50px;text-align:center}table.page-table th.setting[data-v-664f08dd]{width:100px;text-align:center}table.page-table thead[data-v-664f08dd]{color:#909399}table.page-table thead tr[data-v-664f08dd]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-664f08dd]{padding:10px 16px}table.page-table tbody tr[data-v-664f08dd]:hover{background-color:#eeee}table.page-table tbody tr[data-v-664f08dd]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-664f08dd]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-664f08dd]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-664f08dd]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-664f08dd]{width:100px}table.popups-table th.checkbox[data-v-664f08dd]{width:50px;text-align:center}table.popups-table th.setting[data-v-664f08dd]{width:100px;text-align:center}table.popups-table thead[data-v-664f08dd]{color:#eee}table.popups-table thead tr[data-v-664f08dd]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-664f08dd]{padding:10px 16px}table.popups-table tbody tr[data-v-664f08dd]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-664f08dd]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-664f08dd]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-664f08dd]{width:100%}header.header-desktop[data-v-664f08dd]{display:block}header.header-mobile[data-v-664f08dd]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-664f08dd]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-664f08dd]{width:100%;height:100%}header.header-mobile button svg path[data-v-664f08dd]{fill:#fff}nav.sidebar[data-v-664f08dd]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-664f08dd]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-664f08dd]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-664f08dd]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-664f08dd]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-664f08dd]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-664f08dd]{color:#fff}nav.sidebar .container .children[data-v-664f08dd]{padding-left:30px}@-moz-keyframes tada-664f08dd{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-664f08dd{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-664f08dd{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-664f08dd{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-664f08dd]{animation:dialogEnter-664f08dd .3s linear forwards}.dialog-leave-active[data-v-664f08dd]{animation:dialogLeave-664f08dd .3s linear forwards}@keyframes dialogEnter-664f08dd{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-664f08dd{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-664f08dd]{animation:dialogEnter-664f08dd .2s linear forwards}.dialog1-leave-active[data-v-664f08dd]{animation:dialogLeave-664f08dd .2s linear forwards}@keyframes rotateEnter-664f08dd{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-664f08dd]{animation:rotateEnter-664f08dd .7s;position:relative}.rotate-leave-active[data-v-664f08dd]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-664f08dd{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-664f08dd{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-664f08dd]{animation:slideOutTop-664f08dd .5s linear forwards}.slide-top-leave-active[data-v-664f08dd],.slide-bottom-enter-active[data-v-664f08dd]{animation:slideOutBottom-664f08dd .5s linear forwards}@keyframes slideInLeft-664f08dd{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-664f08dd{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-664f08dd]{animation:slideInLeft-664f08dd .3s linear forwards}.slide-left-leave-active[data-v-664f08dd]{animation:slideInRight-664f08dd .3s linear forwards}@keyframes slideOutLeft-664f08dd{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-664f08dd{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-664f08dd]{animation:slideOutLeft-664f08dd .3s linear forwards}.slide-right-leave-active[data-v-664f08dd]{animation:slideOutRight-664f08dd .3s linear forwards}@keyframes bganimation-664f08dd{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-664f08dd{0%{height:0}to{height:100px}}@keyframes fadeEnd-664f08dd{0%{height:100%}to{height:0}}.fade-enter-active[data-v-664f08dd]{animation:fadeStart-664f08dd .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-664f08dd]{animation:fadeEnd-664f08dd .1s linear forwards;overflow:hidden}.bg[data-v-664f08dd]{position:fixed;inset:0;width:100%;height:100%;background:rgba(0,0,0,.5);z-index:999}#actioner[data-v-664f08dd]{position:fixed;z-index:1000;width:100%;height:100%;inset:0;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;overflow:auto}#actioner[data-v-664f08dd],#actioner[data-v-664f08dd] *{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.action-container[data-v-664f08dd]{width:100%;height:100%;background-color:#fff;position:fixed;z-index:9999;inset:0;margin:auto;overflow:auto}.action-container .action-container_header[data-v-664f08dd]{width:100%;height:36px;line-height:36px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:0 .625rem;position:absolute;top:0;left:0;right:0;border-bottom:1px solid #1e1e1e;background-color:#252526}.action-container .action-container_header .title[data-v-664f08dd]{color:#eee;font-size:16px}.action-container .action-container_header button.close[data-v-664f08dd]{width:36px;height:36px;margin:0;padding:10px;background:none;border:none;cursor:pointer;opacity:1}.action-container .action-container_header button.close[data-v-664f08dd] svg.icon{width:100%;height:100%}.action-container .action-container_header button.close[data-v-664f08dd] svg.icon path{fill:#eee}.action-container .action-container_header button.close[data-v-664f08dd]:hover{opacity:.9}.action-container .action-container_body[data-v-664f08dd]{width:100%;height:100%;padding-top:36px}@keyframes turns{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning{color:#f9ad1e}.notice_info li{font-size:14px;list-style:revert}.text-container{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block{width:100%}.text-container .text-container_item p.info-desc{width:100%;color:#999;font-size:14px}.page-container{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on,.page-container .page-flex .page-sidebar a:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile{border-radius:0;padding:1rem}ul.ul-container{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body{width:100%}form.form-container{display:block;width:100%;padding:0 1rem}form.form-container .label-info{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input,form.form-container .label-value select{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input:focus,form.form-container .label-value select:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select{border-radius:3px;padding:0 10px}form.form-container .label-value input{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox],form.form-container .label-value input[type=radio]{width:auto}form.form-container .label-value input[type=radio]{margin:0 4px 0 0}form.form-container .label-value input:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit:hover{background-color:#747474}form.form-container .label-msg{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning{color:#f9ad1e}form.form-container .label-flex{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input,form.form-container1 .label-value select{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input:focus,form.form-container1 .label-value select:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox],form.form-container1 .label-value input[type=radio]{width:auto}form.form-container1 .label-value input[type=radio]{margin:0 4px 0 0}form.form-container1 .label-value input:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit:hover{background-color:#747474}form.form-container1 .label-msg{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning{color:#f9ad1e}form.form-container1 .label-flex{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid{width:100px}table.page-table th.checkbox{width:50px;text-align:center}table.page-table th.setting{width:100px;text-align:center}table.page-table thead{color:#909399}table.page-table thead tr{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th{padding:10px 16px}table.page-table tbody tr:hover{background-color:#eeee}table.page-table tbody tr{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr:nth-child(odd){background-color:#f6f7f7}table.popups-table{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid{width:100px}table.popups-table th.checkbox{width:50px;text-align:center}table.popups-table th.setting{width:100px;text-align:center}table.popups-table thead{color:#eee}table.popups-table thead tr{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th{padding:10px 16px}table.popups-table tbody tr{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th{font-size:12px;padding:16px;vertical-align:top}.body{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header{width:100%}header.header-desktop{display:block}header.header-mobile{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg{width:100%;height:100%}header.header-mobile button svg path{fill:#fff}nav.sidebar{position:fixed;inset:0;z-index:101}nav.sidebar .bg{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active{color:#fff}nav.sidebar .container .children{padding-left:30px}@-moz-keyframes tada{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active{animation:dialogEnter .2s linear forwards}.dialog1-leave-active{animation:dialogLeave .2s linear forwards}@keyframes rotateEnter{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active{animation:rotateEnter .7s;position:relative}.rotate-leave-active{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active{animation:slideOutTop .5s linear forwards}.slide-top-leave-active,.slide-bottom-enter-active{animation:slideOutBottom .5s linear forwards}@keyframes slideInLeft{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active{animation:slideInLeft .3s linear forwards}.slide-left-leave-active{animation:slideInRight .3s linear forwards}@keyframes slideOutLeft{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active{animation:slideOutLeft .3s linear forwards}.slide-right-leave-active{animation:slideOutRight .3s linear forwards}@keyframes bganimation{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart{0%{height:0}to{height:100px}}@keyframes fadeEnd{0%{height:100%}to{height:0}}.fade-enter-active{animation:fadeStart .1s linear forwards;overflow:hidden}.fade-leave-active{animation:fadeEnd .1s linear forwards;overflow:hidden}@keyframes dialogEnter{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active{animation:dialogEnter .3s linear forwards}.dialog-leave-active{animation:dialogLeave .3s linear forwards}@keyframes turns-1b6cddbc{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-1b6cddbc]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-1b6cddbc]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-1b6cddbc]{color:#f9ad1e}.notice_info li[data-v-1b6cddbc]{font-size:14px;list-style:revert}.text-container[data-v-1b6cddbc]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-1b6cddbc]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-1b6cddbc]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-1b6cddbc]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-1b6cddbc]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-1b6cddbc]{width:100%}.text-container .text-container_item p.info-desc[data-v-1b6cddbc]{width:100%;color:#999;font-size:14px}.page-container[data-v-1b6cddbc]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-1b6cddbc]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-1b6cddbc]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-1b6cddbc]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-1b6cddbc],.page-container .page-flex .page-sidebar a[data-v-1b6cddbc]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-1b6cddbc]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-1b6cddbc]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-1b6cddbc]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-1b6cddbc]{border-radius:0;padding:1rem}ul.ul-container[data-v-1b6cddbc]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-1b6cddbc]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-1b6cddbc]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-1b6cddbc]{width:100%}form.form-container[data-v-1b6cddbc]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-1b6cddbc]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-1b6cddbc]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-1b6cddbc]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-1b6cddbc]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-1b6cddbc],form.form-container .label-value select[data-v-1b6cddbc]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-1b6cddbc]:focus,form.form-container .label-value select[data-v-1b6cddbc]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-1b6cddbc]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-1b6cddbc]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-1b6cddbc],form.form-container .label-value input[type=radio][data-v-1b6cddbc]{width:auto}form.form-container .label-value input[type=radio][data-v-1b6cddbc]{margin:0 4px 0 0}form.form-container .label-value input[data-v-1b6cddbc]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-1b6cddbc]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-1b6cddbc]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-1b6cddbc]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-1b6cddbc]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-1b6cddbc]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-1b6cddbc]:hover{background-color:#747474}form.form-container .label-msg[data-v-1b6cddbc]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-1b6cddbc]{color:#f9ad1e}form.form-container .label-flex[data-v-1b6cddbc]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-1b6cddbc]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-1b6cddbc]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-1b6cddbc]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-1b6cddbc]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-1b6cddbc]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-1b6cddbc]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-1b6cddbc],form.form-container1 .label-value select[data-v-1b6cddbc]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-1b6cddbc]:focus,form.form-container1 .label-value select[data-v-1b6cddbc]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-1b6cddbc]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-1b6cddbc],form.form-container1 .label-value input[type=radio][data-v-1b6cddbc]{width:auto}form.form-container1 .label-value input[type=radio][data-v-1b6cddbc]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-1b6cddbc]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-1b6cddbc]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-1b6cddbc]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-1b6cddbc]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-1b6cddbc]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-1b6cddbc]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-1b6cddbc]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-1b6cddbc]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-1b6cddbc]{color:#f9ad1e}form.form-container1 .label-flex[data-v-1b6cddbc]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-1b6cddbc]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-1b6cddbc]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-1b6cddbc]{width:100px}table.page-table th.checkbox[data-v-1b6cddbc]{width:50px;text-align:center}table.page-table th.setting[data-v-1b6cddbc]{width:100px;text-align:center}table.page-table thead[data-v-1b6cddbc]{color:#909399}table.page-table thead tr[data-v-1b6cddbc]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-1b6cddbc]{padding:10px 16px}table.page-table tbody tr[data-v-1b6cddbc]:hover{background-color:#eeee}table.page-table tbody tr[data-v-1b6cddbc]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-1b6cddbc]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-1b6cddbc]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-1b6cddbc]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-1b6cddbc]{width:100px}table.popups-table th.checkbox[data-v-1b6cddbc]{width:50px;text-align:center}table.popups-table th.setting[data-v-1b6cddbc]{width:100px;text-align:center}table.popups-table thead[data-v-1b6cddbc]{color:#eee}table.popups-table thead tr[data-v-1b6cddbc]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-1b6cddbc]{padding:10px 16px}table.popups-table tbody tr[data-v-1b6cddbc]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-1b6cddbc]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-1b6cddbc]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-1b6cddbc]{width:100%}header.header-desktop[data-v-1b6cddbc]{display:block}header.header-mobile[data-v-1b6cddbc]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-1b6cddbc]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-1b6cddbc]{width:100%;height:100%}header.header-mobile button svg path[data-v-1b6cddbc]{fill:#fff}nav.sidebar[data-v-1b6cddbc]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-1b6cddbc]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-1b6cddbc]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-1b6cddbc]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-1b6cddbc]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-1b6cddbc]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-1b6cddbc]{color:#fff}nav.sidebar .container .children[data-v-1b6cddbc]{padding-left:30px}@-moz-keyframes tada-1b6cddbc{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-1b6cddbc{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-1b6cddbc{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-1b6cddbc{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-1b6cddbc]{animation:dialogEnter-1b6cddbc .3s linear forwards}.dialog-leave-active[data-v-1b6cddbc]{animation:dialogLeave-1b6cddbc .3s linear forwards}@keyframes dialogEnter-1b6cddbc{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-1b6cddbc{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-1b6cddbc]{animation:dialogEnter-1b6cddbc .2s linear forwards}.dialog1-leave-active[data-v-1b6cddbc]{animation:dialogLeave-1b6cddbc .2s linear forwards}@keyframes rotateEnter-1b6cddbc{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-1b6cddbc]{animation:rotateEnter-1b6cddbc .7s;position:relative}.rotate-leave-active[data-v-1b6cddbc]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-1b6cddbc{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-1b6cddbc{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-1b6cddbc]{animation:slideOutTop-1b6cddbc .5s linear forwards}.slide-top-leave-active[data-v-1b6cddbc],.slide-bottom-enter-active[data-v-1b6cddbc]{animation:slideOutBottom-1b6cddbc .5s linear forwards}@keyframes slideInLeft-1b6cddbc{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-1b6cddbc{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-1b6cddbc]{animation:slideInLeft-1b6cddbc .3s linear forwards}.slide-left-leave-active[data-v-1b6cddbc]{animation:slideInRight-1b6cddbc .3s linear forwards}@keyframes slideOutLeft-1b6cddbc{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-1b6cddbc{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-1b6cddbc]{animation:slideOutLeft-1b6cddbc .3s linear forwards}.slide-right-leave-active[data-v-1b6cddbc]{animation:slideOutRight-1b6cddbc .3s linear forwards}@keyframes bganimation-1b6cddbc{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-1b6cddbc{0%{height:0}to{height:100px}}@keyframes fadeEnd-1b6cddbc{0%{height:100%}to{height:0}}.fade-enter-active[data-v-1b6cddbc]{animation:fadeStart-1b6cddbc .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-1b6cddbc]{animation:fadeEnd-1b6cddbc .1s linear forwards;overflow:hidden}label.checkbox_switch[data-v-1b6cddbc]{cursor:pointer;display:flex!important;width:initial!important}label.checkbox_switch input[type=checkbox][data-v-1b6cddbc]{display:none!important}label.checkbox_switch .checkbox_switch_on[data-v-1b6cddbc],label.checkbox_switch .checkbox_switch_off[data-v-1b6cddbc]{flex:none}label.checkbox_switch .checkbox_switch_on[data-v-1b6cddbc]{display:none!important}label.checkbox_switch .checkbox_switch_off[data-v-1b6cddbc]{display:inline-flex!important}label.checkbox_switch input[type=checkbox]:checked~.checkbox_switch_on[data-v-1b6cddbc]{display:inline-flex!important}label.checkbox_switch input[type=checkbox]:checked~.checkbox_switch_off[data-v-1b6cddbc]{display:none!important}.actioner-dns[data-v-76799e09]{width:860px;background-color:#fff;position:relative;z-index:99999;margin:auto;overflow:auto}.actioner-dns .actioner-dns_header[data-v-76799e09]{width:100%;display:flex;flex-wrap:wrap;align-items:center;padding:1rem;font-size:2em;border-bottom:1px solid #eee}.actioner-dns .actioner-dns_body[data-v-76799e09]{padding:1rem;min-height:50vh}.actioner-dns .actioner-dns_body .label-item[data-v-76799e09]{width:100%;margin:1rem 0}.actioner-dns .actioner-dns_body .label-item .label-item_key[data-v-76799e09]{width:100%;font-size:12px;color:#666}.actioner-dns .actioner-dns_body .label-item .label-item_key span[data-v-76799e09]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.actioner-dns .actioner-dns_body .label-item .label-item_key span[data-v-76799e09]:before{content:"*";color:#f56c6c;margin-right:4px}.actioner-dns .actioner-dns_body .label-item .label-item_value[data-v-76799e09]{width:100%;margin-top:5px}.actioner-dns .actioner-dns_body .label-item .label-item_value select[data-v-76799e09],.actioner-dns .actioner-dns_body .label-item .label-item_value input[data-v-76799e09]{width:100%;height:36px}.actioner-dns .actioner-dns_body .chose_dhcp[data-v-76799e09]{height:1em;font-size:1.3em}.actioner-dns .actioner-dns_body .chose_dhcp .dhcp_info[data-v-76799e09]{margin-left:10px;user-select:none}.actioner-dns .actioner-dns_body .label-message[data-v-76799e09]{width:100%;text-align:left;font-size:14px;color:red;text-align:center}.actioner-dns .config-message[data-v-76799e09]{width:100%;min-height:inherit;height:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;font-size:2em}.actioner-dns .actioner-dns_footer[data-v-76799e09]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:1rem;font-size:2em;border-top:1px solid #eee}.actioner-dns .actioner-dns_footer button[data-v-76799e09]{display:inline-block;width:100px!important;margin:0;margin-left:1rem}.setting_status[data-v-76799e09]{text-align:center}.setting_status p[data-v-76799e09]{margin:10px 0}.setting_status a[data-v-76799e09]{text-align:center;display:block;text-decoration:none}.NewAdress[data-v-76799e09]{margin-top:10px}@keyframes turns-76799e09{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-76799e09]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-76799e09]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-76799e09]{color:#f9ad1e}.notice_info li[data-v-76799e09]{font-size:14px;list-style:revert}.text-container[data-v-76799e09]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-76799e09]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-76799e09]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-76799e09]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-76799e09]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-76799e09]{width:100%}.text-container .text-container_item p.info-desc[data-v-76799e09]{width:100%;color:#999;font-size:14px}.page-container[data-v-76799e09]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-76799e09]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-76799e09]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-76799e09]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-76799e09],.page-container .page-flex .page-sidebar a[data-v-76799e09]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-76799e09]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-76799e09]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-76799e09]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-76799e09]{border-radius:0;padding:1rem}ul.ul-container[data-v-76799e09]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-76799e09]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-76799e09]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-76799e09]{width:100%}form.form-container[data-v-76799e09]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-76799e09]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-76799e09]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-76799e09]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-76799e09]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-76799e09],form.form-container .label-value select[data-v-76799e09]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-76799e09]:focus,form.form-container .label-value select[data-v-76799e09]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-76799e09]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-76799e09]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-76799e09],form.form-container .label-value input[type=radio][data-v-76799e09]{width:auto}form.form-container .label-value input[type=radio][data-v-76799e09]{margin:0 4px 0 0}form.form-container .label-value input[data-v-76799e09]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-76799e09]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-76799e09]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-76799e09]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-76799e09]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-76799e09]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-76799e09]:hover{background-color:#747474}form.form-container .label-msg[data-v-76799e09]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-76799e09]{color:#f9ad1e}form.form-container .label-flex[data-v-76799e09]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-76799e09]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-76799e09]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-76799e09]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-76799e09]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-76799e09]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-76799e09]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-76799e09],form.form-container1 .label-value select[data-v-76799e09]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-76799e09]:focus,form.form-container1 .label-value select[data-v-76799e09]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-76799e09]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-76799e09],form.form-container1 .label-value input[type=radio][data-v-76799e09]{width:auto}form.form-container1 .label-value input[type=radio][data-v-76799e09]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-76799e09]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-76799e09]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-76799e09]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-76799e09]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-76799e09]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-76799e09]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-76799e09]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-76799e09]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-76799e09]{color:#f9ad1e}form.form-container1 .label-flex[data-v-76799e09]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-76799e09]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-76799e09]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-76799e09]{width:100px}table.page-table th.checkbox[data-v-76799e09]{width:50px;text-align:center}table.page-table th.setting[data-v-76799e09]{width:100px;text-align:center}table.page-table thead[data-v-76799e09]{color:#909399}table.page-table thead tr[data-v-76799e09]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-76799e09]{padding:10px 16px}table.page-table tbody tr[data-v-76799e09]:hover{background-color:#eeee}table.page-table tbody tr[data-v-76799e09]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-76799e09]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-76799e09]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-76799e09]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-76799e09]{width:100px}table.popups-table th.checkbox[data-v-76799e09]{width:50px;text-align:center}table.popups-table th.setting[data-v-76799e09]{width:100px;text-align:center}table.popups-table thead[data-v-76799e09]{color:#eee}table.popups-table thead tr[data-v-76799e09]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-76799e09]{padding:10px 16px}table.popups-table tbody tr[data-v-76799e09]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-76799e09]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-76799e09]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-76799e09]{width:100%}header.header-desktop[data-v-76799e09]{display:block}header.header-mobile[data-v-76799e09]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-76799e09]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-76799e09]{width:100%;height:100%}header.header-mobile button svg path[data-v-76799e09]{fill:#fff}nav.sidebar[data-v-76799e09]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-76799e09]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-76799e09]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-76799e09]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-76799e09]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-76799e09]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-76799e09]{color:#fff}nav.sidebar .container .children[data-v-76799e09]{padding-left:30px}@-moz-keyframes tada-76799e09{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-76799e09{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-76799e09{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-76799e09{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-76799e09]{animation:dialogEnter-76799e09 .3s linear forwards}.dialog-leave-active[data-v-76799e09]{animation:dialogLeave-76799e09 .3s linear forwards}@keyframes dialogEnter-76799e09{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-76799e09{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-76799e09]{animation:dialogEnter-76799e09 .2s linear forwards}.dialog1-leave-active[data-v-76799e09]{animation:dialogLeave-76799e09 .2s linear forwards}@keyframes rotateEnter-76799e09{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-76799e09]{animation:rotateEnter-76799e09 .7s;position:relative}.rotate-leave-active[data-v-76799e09]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-76799e09{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-76799e09{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-76799e09]{animation:slideOutTop-76799e09 .5s linear forwards}.slide-top-leave-active[data-v-76799e09],.slide-bottom-enter-active[data-v-76799e09]{animation:slideOutBottom-76799e09 .5s linear forwards}@keyframes slideInLeft-76799e09{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-76799e09{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-76799e09]{animation:slideInLeft-76799e09 .3s linear forwards}.slide-left-leave-active[data-v-76799e09]{animation:slideInRight-76799e09 .3s linear forwards}@keyframes slideOutLeft-76799e09{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-76799e09{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-76799e09]{animation:slideOutLeft-76799e09 .3s linear forwards}.slide-right-leave-active[data-v-76799e09]{animation:slideOutRight-76799e09 .3s linear forwards}@keyframes bganimation-76799e09{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-76799e09{0%{height:0}to{height:100px}}@keyframes fadeEnd-76799e09{0%{height:100%}to{height:0}}.fade-enter-active[data-v-76799e09]{animation:fadeStart-76799e09 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-76799e09]{animation:fadeEnd-76799e09 .1s linear forwards;overflow:hidden}@media screen and (max-width: 1400px){.actioner-dns .actioner-dns_body[data-v-76799e09]{min-height:34vh}}@media screen and (max-width: 800px){.actioner-dns[data-v-76799e09]{width:100%}}.actioner-dns[data-v-95c09170]{width:860px;background-color:#fff;position:relative;z-index:99999;margin:auto;overflow:auto}.actioner-dns .actioner-dns_header[data-v-95c09170]{width:100%;display:flex;flex-wrap:wrap;align-items:center;padding:1rem;font-size:2em;border-bottom:1px solid #eee}.actioner-dns .actioner-dns_body[data-v-95c09170]{padding:1rem;min-height:50vh}.actioner-dns .actioner-dns_body .label-item[data-v-95c09170]{width:100%;margin:1rem 0}.actioner-dns .actioner-dns_body .label-item .label-item_key[data-v-95c09170]{width:100%;font-size:12px;color:#666}.actioner-dns .actioner-dns_body .label-item .label-item_key span[data-v-95c09170]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.actioner-dns .actioner-dns_body .label-item .label-item_key span[data-v-95c09170]:before{content:"*";color:#f56c6c;margin-right:4px}.actioner-dns .actioner-dns_body .label-item .label-item_value[data-v-95c09170]{width:100%;margin-top:5px}.actioner-dns .actioner-dns_body .label-item .label-item_value select[data-v-95c09170],.actioner-dns .actioner-dns_body .label-item .label-item_value input[data-v-95c09170]{width:100%;height:36px}.actioner-dns .actioner-dns_body .label-message[data-v-95c09170]{width:100%;text-align:left;font-size:14px;color:red;text-align:center}.actioner-dns .config-message[data-v-95c09170]{width:100%;min-height:inherit;height:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;font-size:2em}.actioner-dns .actioner-dns_footer[data-v-95c09170]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:1rem;font-size:2em;border-top:1px solid #eee}.actioner-dns .actioner-dns_footer button[data-v-95c09170]{display:inline-block;width:100px!important;margin:0;margin-left:1rem}@keyframes turns-95c09170{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-95c09170]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-95c09170]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-95c09170]{color:#f9ad1e}.notice_info li[data-v-95c09170]{font-size:14px;list-style:revert}.text-container[data-v-95c09170]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-95c09170]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-95c09170]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-95c09170]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-95c09170]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-95c09170]{width:100%}.text-container .text-container_item p.info-desc[data-v-95c09170]{width:100%;color:#999;font-size:14px}.page-container[data-v-95c09170]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-95c09170]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-95c09170]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-95c09170]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-95c09170],.page-container .page-flex .page-sidebar a[data-v-95c09170]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-95c09170]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-95c09170]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-95c09170]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-95c09170]{border-radius:0;padding:1rem}ul.ul-container[data-v-95c09170]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-95c09170]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-95c09170]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-95c09170]{width:100%}form.form-container[data-v-95c09170]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-95c09170]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-95c09170]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-95c09170]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-95c09170]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-95c09170],form.form-container .label-value select[data-v-95c09170]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-95c09170]:focus,form.form-container .label-value select[data-v-95c09170]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-95c09170]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-95c09170]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-95c09170],form.form-container .label-value input[type=radio][data-v-95c09170]{width:auto}form.form-container .label-value input[type=radio][data-v-95c09170]{margin:0 4px 0 0}form.form-container .label-value input[data-v-95c09170]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-95c09170]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-95c09170]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-95c09170]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-95c09170]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-95c09170]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-95c09170]:hover{background-color:#747474}form.form-container .label-msg[data-v-95c09170]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-95c09170]{color:#f9ad1e}form.form-container .label-flex[data-v-95c09170]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-95c09170]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-95c09170]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-95c09170]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-95c09170]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-95c09170]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-95c09170]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-95c09170],form.form-container1 .label-value select[data-v-95c09170]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-95c09170]:focus,form.form-container1 .label-value select[data-v-95c09170]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-95c09170]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-95c09170],form.form-container1 .label-value input[type=radio][data-v-95c09170]{width:auto}form.form-container1 .label-value input[type=radio][data-v-95c09170]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-95c09170]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-95c09170]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-95c09170]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-95c09170]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-95c09170]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-95c09170]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-95c09170]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-95c09170]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-95c09170]{color:#f9ad1e}form.form-container1 .label-flex[data-v-95c09170]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-95c09170]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-95c09170]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-95c09170]{width:100px}table.page-table th.checkbox[data-v-95c09170]{width:50px;text-align:center}table.page-table th.setting[data-v-95c09170]{width:100px;text-align:center}table.page-table thead[data-v-95c09170]{color:#909399}table.page-table thead tr[data-v-95c09170]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-95c09170]{padding:10px 16px}table.page-table tbody tr[data-v-95c09170]:hover{background-color:#eeee}table.page-table tbody tr[data-v-95c09170]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-95c09170]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-95c09170]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-95c09170]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-95c09170]{width:100px}table.popups-table th.checkbox[data-v-95c09170]{width:50px;text-align:center}table.popups-table th.setting[data-v-95c09170]{width:100px;text-align:center}table.popups-table thead[data-v-95c09170]{color:#eee}table.popups-table thead tr[data-v-95c09170]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-95c09170]{padding:10px 16px}table.popups-table tbody tr[data-v-95c09170]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-95c09170]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-95c09170]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-95c09170]{width:100%}header.header-desktop[data-v-95c09170]{display:block}header.header-mobile[data-v-95c09170]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-95c09170]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-95c09170]{width:100%;height:100%}header.header-mobile button svg path[data-v-95c09170]{fill:#fff}nav.sidebar[data-v-95c09170]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-95c09170]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-95c09170]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-95c09170]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-95c09170]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-95c09170]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-95c09170]{color:#fff}nav.sidebar .container .children[data-v-95c09170]{padding-left:30px}@-moz-keyframes tada-95c09170{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-95c09170{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-95c09170{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-95c09170{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-95c09170]{animation:dialogEnter-95c09170 .3s linear forwards}.dialog-leave-active[data-v-95c09170]{animation:dialogLeave-95c09170 .3s linear forwards}@keyframes dialogEnter-95c09170{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-95c09170{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-95c09170]{animation:dialogEnter-95c09170 .2s linear forwards}.dialog1-leave-active[data-v-95c09170]{animation:dialogLeave-95c09170 .2s linear forwards}@keyframes rotateEnter-95c09170{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-95c09170]{animation:rotateEnter-95c09170 .7s;position:relative}.rotate-leave-active[data-v-95c09170]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-95c09170{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-95c09170{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-95c09170]{animation:slideOutTop-95c09170 .5s linear forwards}.slide-top-leave-active[data-v-95c09170],.slide-bottom-enter-active[data-v-95c09170]{animation:slideOutBottom-95c09170 .5s linear forwards}@keyframes slideInLeft-95c09170{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-95c09170{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-95c09170]{animation:slideInLeft-95c09170 .3s linear forwards}.slide-left-leave-active[data-v-95c09170]{animation:slideInRight-95c09170 .3s linear forwards}@keyframes slideOutLeft-95c09170{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-95c09170{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-95c09170]{animation:slideOutLeft-95c09170 .3s linear forwards}.slide-right-leave-active[data-v-95c09170]{animation:slideOutRight-95c09170 .3s linear forwards}@keyframes bganimation-95c09170{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-95c09170{0%{height:0}to{height:100px}}@keyframes fadeEnd-95c09170{0%{height:100%}to{height:0}}.fade-enter-active[data-v-95c09170]{animation:fadeStart-95c09170 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-95c09170]{animation:fadeEnd-95c09170 .1s linear forwards;overflow:hidden}@media screen and (max-width: 1400px){.actioner-dns .actioner-dns_body[data-v-95c09170]{min-height:34vh}}@media screen and (max-width: 800px){.actioner-dns[data-v-95c09170]{width:100%}}.actioner-dns[data-v-5141058a]{width:860px;background-color:#fff;position:relative;z-index:99999;margin:auto;overflow:auto}.actioner-dns .actioner-dns_header[data-v-5141058a]{width:100%;display:flex;flex-wrap:wrap;align-items:center;padding:1rem;font-size:2em;border-bottom:1px solid #eee}.actioner-dns .actioner-dns_header span[data-v-5141058a]{margin:0 auto}.actioner-dns .actioner-dns_body[data-v-5141058a]{padding:1rem;min-height:50vh}.actioner-dns .actioner-dns_body .sandbox_roboot_tips[data-v-5141058a]{margin-top:24px;text-align:center}.actioner-dns .actioner-dns_body .disk_loading_icon[data-v-5141058a]{position:absolute;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;padding:10px}.actioner-dns .actioner-dns_body .disk_loading_icon .disk_loading_info[data-v-5141058a]{margin-top:5px}.actioner-dns .actioner-dns_body .disk_tips[data-v-5141058a]{text-align:center;font-size:16px;margin-top:159px;color:#f9ad1e}.actioner-dns .actioner-dns_body .disk_tips svg[data-v-5141058a]{vertical-align:middle}.actioner-dns .actioner-dns_body .disk_tips span[data-v-5141058a]{margin-left:6px}.actioner-dns .actioner-dns_body .sandbox_info[data-v-5141058a]{text-align:center;line-height:22px}.actioner-dns .actioner-dns_body .label-item[data-v-5141058a]{width:100%;margin:1rem 0}.actioner-dns .actioner-dns_body .label-item .label-item_key[data-v-5141058a]{width:100%;font-size:12px;color:#666}.actioner-dns .actioner-dns_body .label-item .label-item_key span[data-v-5141058a]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.actioner-dns .actioner-dns_body .label-item .label-item_key span[data-v-5141058a]:before{content:"*";color:#f56c6c;margin-right:4px}.actioner-dns .actioner-dns_body .label-item .label-item_value[data-v-5141058a]{width:100%;margin-top:5px}.actioner-dns .actioner-dns_body .label-item .label-item_value select[data-v-5141058a],.actioner-dns .actioner-dns_body .label-item .label-item_value input[data-v-5141058a]{width:100%;height:36px}.actioner-dns .actioner-dns_body .label-message[data-v-5141058a]{width:100%;text-align:left;font-size:14px;color:red;text-align:center}.actioner-dns .actioner-dns_body .sandbox_tips svg[data-v-5141058a]{vertical-align:middle}.actioner-dns .actioner-dns_body .sandbox_tips span[data-v-5141058a]{font-size:12px;margin-left:4px}.actioner-dns .config-message[data-v-5141058a]{width:100%;min-height:inherit;height:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;font-size:2em}.actioner-dns .actioner-dns_footer[data-v-5141058a]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:1rem;font-size:2em;border-top:1px solid #eee}.actioner-dns .actioner-dns_footer button[data-v-5141058a]{display:inline-block;width:100px!important;margin:0;margin-left:1rem}.actioner-tips[data-v-5141058a]{width:400px;background-color:#fff;position:relative;z-index:99999;margin:auto;overflow:auto}.actioner-tips .actioner-tips_header[data-v-5141058a]{width:100%;display:flex;flex-wrap:wrap;align-items:center;padding:1rem;font-size:2em;border-bottom:1px solid #eee}.actioner-tips .sandbox_info[data-v-5141058a]{padding:62px 54px;line-height:20px}.actioner-tips .actioner-tips_footer[data-v-5141058a]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:1rem;font-size:2em;border-top:1px solid #eee}.timeout[data-v-5141058a]{margin-top:114px}.timeout span[data-v-5141058a],.sandbox_roboot_refresh[data-v-5141058a]{color:#5e72e4}option[data-v-5141058a]:disabled{background-color:#e0e0e0}@keyframes turns-5141058a{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-5141058a]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-5141058a]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-5141058a]{color:#f9ad1e}.notice_info li[data-v-5141058a]{font-size:14px;list-style:revert}.text-container[data-v-5141058a]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-5141058a]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-5141058a]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-5141058a]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-5141058a]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-5141058a]{width:100%}.text-container .text-container_item p.info-desc[data-v-5141058a]{width:100%;color:#999;font-size:14px}.page-container[data-v-5141058a]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-5141058a]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-5141058a]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-5141058a]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-5141058a],.page-container .page-flex .page-sidebar a[data-v-5141058a]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-5141058a]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-5141058a]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-5141058a]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-5141058a]{border-radius:0;padding:1rem}ul.ul-container[data-v-5141058a]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-5141058a]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-5141058a]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-5141058a]{width:100%}form.form-container[data-v-5141058a]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-5141058a]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-5141058a]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-5141058a]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-5141058a]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-5141058a],form.form-container .label-value select[data-v-5141058a]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-5141058a]:focus,form.form-container .label-value select[data-v-5141058a]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-5141058a]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-5141058a]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-5141058a],form.form-container .label-value input[type=radio][data-v-5141058a]{width:auto}form.form-container .label-value input[type=radio][data-v-5141058a]{margin:0 4px 0 0}form.form-container .label-value input[data-v-5141058a]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-5141058a]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-5141058a]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-5141058a]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-5141058a]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-5141058a]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-5141058a]:hover{background-color:#747474}form.form-container .label-msg[data-v-5141058a]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-5141058a]{color:#f9ad1e}form.form-container .label-flex[data-v-5141058a]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-5141058a]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-5141058a]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-5141058a]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-5141058a]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-5141058a]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-5141058a]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-5141058a],form.form-container1 .label-value select[data-v-5141058a]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-5141058a]:focus,form.form-container1 .label-value select[data-v-5141058a]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-5141058a]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-5141058a],form.form-container1 .label-value input[type=radio][data-v-5141058a]{width:auto}form.form-container1 .label-value input[type=radio][data-v-5141058a]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-5141058a]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-5141058a]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-5141058a]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-5141058a]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-5141058a]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-5141058a]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-5141058a]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-5141058a]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-5141058a]{color:#f9ad1e}form.form-container1 .label-flex[data-v-5141058a]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-5141058a]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-5141058a]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-5141058a]{width:100px}table.page-table th.checkbox[data-v-5141058a]{width:50px;text-align:center}table.page-table th.setting[data-v-5141058a]{width:100px;text-align:center}table.page-table thead[data-v-5141058a]{color:#909399}table.page-table thead tr[data-v-5141058a]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-5141058a]{padding:10px 16px}table.page-table tbody tr[data-v-5141058a]:hover{background-color:#eeee}table.page-table tbody tr[data-v-5141058a]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-5141058a]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-5141058a]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-5141058a]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-5141058a]{width:100px}table.popups-table th.checkbox[data-v-5141058a]{width:50px;text-align:center}table.popups-table th.setting[data-v-5141058a]{width:100px;text-align:center}table.popups-table thead[data-v-5141058a]{color:#eee}table.popups-table thead tr[data-v-5141058a]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-5141058a]{padding:10px 16px}table.popups-table tbody tr[data-v-5141058a]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-5141058a]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-5141058a]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-5141058a]{width:100%}header.header-desktop[data-v-5141058a]{display:block}header.header-mobile[data-v-5141058a]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-5141058a]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-5141058a]{width:100%;height:100%}header.header-mobile button svg path[data-v-5141058a]{fill:#fff}nav.sidebar[data-v-5141058a]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-5141058a]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-5141058a]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-5141058a]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-5141058a]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-5141058a]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-5141058a]{color:#fff}nav.sidebar .container .children[data-v-5141058a]{padding-left:30px}@-moz-keyframes tada-5141058a{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-5141058a{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-5141058a{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-5141058a{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-5141058a]{animation:dialogEnter-5141058a .3s linear forwards}.dialog-leave-active[data-v-5141058a]{animation:dialogLeave-5141058a .3s linear forwards}@keyframes dialogEnter-5141058a{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-5141058a{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-5141058a]{animation:dialogEnter-5141058a .2s linear forwards}.dialog1-leave-active[data-v-5141058a]{animation:dialogLeave-5141058a .2s linear forwards}@keyframes rotateEnter-5141058a{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-5141058a]{animation:rotateEnter-5141058a .7s;position:relative}.rotate-leave-active[data-v-5141058a]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-5141058a{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-5141058a{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-5141058a]{animation:slideOutTop-5141058a .5s linear forwards}.slide-top-leave-active[data-v-5141058a],.slide-bottom-enter-active[data-v-5141058a]{animation:slideOutBottom-5141058a .5s linear forwards}@keyframes slideInLeft-5141058a{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-5141058a{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-5141058a]{animation:slideInLeft-5141058a .3s linear forwards}.slide-left-leave-active[data-v-5141058a]{animation:slideInRight-5141058a .3s linear forwards}@keyframes slideOutLeft-5141058a{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-5141058a{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-5141058a]{animation:slideOutLeft-5141058a .3s linear forwards}.slide-right-leave-active[data-v-5141058a]{animation:slideOutRight-5141058a .3s linear forwards}@keyframes bganimation-5141058a{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-5141058a{0%{height:0}to{height:100px}}@keyframes fadeEnd-5141058a{0%{height:100%}to{height:0}}.fade-enter-active[data-v-5141058a]{animation:fadeStart-5141058a .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-5141058a]{animation:fadeEnd-5141058a .1s linear forwards;overflow:hidden}@media screen and (max-width: 1400px){.actioner-tips_footer button[data-v-5141058a]{width:100%!important}}@media screen and (max-width: 900px){.actioner-dns[data-v-5141058a]{width:100%}}@media screen and (max-width: 700px){.actioner-dns .actioner-dns_body[data-v-5141058a]{min-height:42vh}.actioner-tips[data-v-5141058a]{width:80%;line-height:22px}.actioner-tips .sandbox_info[data-v-5141058a]{padding:34px 10px;font-size:10px}.actioner-tips .actioner-tips_header[data-v-5141058a]{font-size:20px}.actioner-tips .actioner-tips_footer button[data-v-5141058a]{width:100%!important}}@media screen and (max-width: 600px){.actioner-dns .actioner-dns_footer button[data-v-5141058a]{width:100%!important;margin-bottom:10px;margin-left:0}}@media screen and (max-width: 500px){.actioner-dns .actioner-dns_body .label-item .label-item_key[data-v-5141058a]{width:228px;overflow:hidden;text-overflow:ellipsis}}@media screen and (max-width: 400px){.actioner-dns .actioner-dns_body .label-item .label-item_key[data-v-5141058a]{width:163px;overflow:hidden;text-overflow:ellipsis}.actioner-dns .actioner-dns_footer button[data-v-5141058a]{width:100%!important;margin-bottom:10px}.actioner-tips .sandbox_info[data-v-5141058a]{padding:3px 10px}}.actioner-dns[data-v-5cf1870c]{width:800px;background-color:#fff;position:relative;z-index:99999;margin:auto;overflow:auto}.actioner-dns .actioner-dns_header[data-v-5cf1870c]{width:100%;display:flex;flex-wrap:wrap;align-items:center;padding:1rem;font-size:2em;border-bottom:1px solid #eee}.actioner-dns .actioner-dns_body[data-v-5cf1870c]{padding:1rem;min-height:50vh}.actioner-dns .actioner-dns_body .label-item[data-v-5cf1870c]{width:100%;margin:1rem 0}.actioner-dns .actioner-dns_body .label-item .label-item_key[data-v-5cf1870c]{width:100%;font-size:12px;color:#666}.actioner-dns .actioner-dns_body .label-item .label-item_key span[data-v-5cf1870c]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.actioner-dns .actioner-dns_body .label-item .label-item_key span[data-v-5cf1870c]:before{content:"*";color:#f56c6c;margin-right:4px}.actioner-dns .actioner-dns_body .label-item .label-item_value[data-v-5cf1870c]{width:100%;margin-top:5px}.actioner-dns .actioner-dns_body .label-item .label-item_value select[data-v-5cf1870c],.actioner-dns .actioner-dns_body .label-item .label-item_value input[data-v-5cf1870c]{height:36px}.actioner-dns .actioner-dns_body .label-message[data-v-5cf1870c]{width:100%;text-align:left;font-size:14px;color:red;text-align:center}.actioner-dns .config-message[data-v-5cf1870c]{width:100%;min-height:inherit;height:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;font-size:2em}.actioner-dns .actioner-dns_footer[data-v-5cf1870c]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:1rem;font-size:2em;border-top:1px solid #eee}.actioner-dns .actioner-dns_footer button[data-v-5cf1870c]{display:inline-block;width:100px!important;margin:0;margin-left:1rem}.actioner-dns .select-editable[data-v-5cf1870c]{position:relative;border:solid grey 1px;width:100%}.actioner-dns .select-editable select[data-v-5cf1870c]{top:0;left:0;font-size:14px;border:none;width:100%;margin:0}.actioner-dns .select-editable input[data-v-5cf1870c]{position:absolute;top:-4px;left:0;width:95%;padding:1px;font-size:14px;border:none}.actioner-dns .select-editable select[data-v-5cf1870c]:focus,.actioner-dns .select-editable input[data-v-5cf1870c]:focus{outline:none}.actioner-dns[data-v-5cf1870c] ::placeholder{color:#999}.successed[data-v-5cf1870c]{text-align:center;font-size:14px;margin-bottom:104px}.finished[data-v-5cf1870c]{display:flex;justify-content:center;margin:80px 80px 28px}.docker_moves[data-v-5cf1870c]{text-align:center}.docker_moves .moves[data-v-5cf1870c]{margin-top:10px}.docker_moves .moves input[data-v-5cf1870c]{cursor:pointer}.docker_moves .moves label[data-v-5cf1870c]{margin-left:10px;cursor:pointer}.btns[data-v-5cf1870c]{text-align:center}.item_info[data-v-5cf1870c]{margin-left:10px}.softsource_tit[data-v-5cf1870c]{margin:0 auto}.softsource_successed[data-v-5cf1870c]{width:20%!important}@keyframes turns-5cf1870c{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-5cf1870c]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-5cf1870c]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-5cf1870c]{color:#f9ad1e}.notice_info li[data-v-5cf1870c]{font-size:14px;list-style:revert}.text-container[data-v-5cf1870c]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-5cf1870c]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-5cf1870c]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-5cf1870c]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-5cf1870c]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-5cf1870c]{width:100%}.text-container .text-container_item p.info-desc[data-v-5cf1870c]{width:100%;color:#999;font-size:14px}.page-container[data-v-5cf1870c]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-5cf1870c]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-5cf1870c]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-5cf1870c]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-5cf1870c],.page-container .page-flex .page-sidebar a[data-v-5cf1870c]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-5cf1870c]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-5cf1870c]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-5cf1870c]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-5cf1870c]{border-radius:0;padding:1rem}ul.ul-container[data-v-5cf1870c]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-5cf1870c]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-5cf1870c]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-5cf1870c]{width:100%}form.form-container[data-v-5cf1870c]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-5cf1870c]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-5cf1870c]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-5cf1870c]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-5cf1870c]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-5cf1870c],form.form-container .label-value select[data-v-5cf1870c]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-5cf1870c]:focus,form.form-container .label-value select[data-v-5cf1870c]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-5cf1870c]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-5cf1870c]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-5cf1870c],form.form-container .label-value input[type=radio][data-v-5cf1870c]{width:auto}form.form-container .label-value input[type=radio][data-v-5cf1870c]{margin:0 4px 0 0}form.form-container .label-value input[data-v-5cf1870c]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-5cf1870c]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-5cf1870c]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-5cf1870c]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-5cf1870c]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-5cf1870c]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-5cf1870c]:hover{background-color:#747474}form.form-container .label-msg[data-v-5cf1870c]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-5cf1870c]{color:#f9ad1e}form.form-container .label-flex[data-v-5cf1870c]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-5cf1870c]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-5cf1870c]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-5cf1870c]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-5cf1870c]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-5cf1870c]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-5cf1870c]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-5cf1870c],form.form-container1 .label-value select[data-v-5cf1870c]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-5cf1870c]:focus,form.form-container1 .label-value select[data-v-5cf1870c]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-5cf1870c]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-5cf1870c],form.form-container1 .label-value input[type=radio][data-v-5cf1870c]{width:auto}form.form-container1 .label-value input[type=radio][data-v-5cf1870c]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-5cf1870c]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-5cf1870c]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-5cf1870c]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-5cf1870c]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-5cf1870c]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-5cf1870c]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-5cf1870c]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-5cf1870c]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-5cf1870c]{color:#f9ad1e}form.form-container1 .label-flex[data-v-5cf1870c]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-5cf1870c]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-5cf1870c]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-5cf1870c]{width:100px}table.page-table th.checkbox[data-v-5cf1870c]{width:50px;text-align:center}table.page-table th.setting[data-v-5cf1870c]{width:100px;text-align:center}table.page-table thead[data-v-5cf1870c]{color:#909399}table.page-table thead tr[data-v-5cf1870c]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-5cf1870c]{padding:10px 16px}table.page-table tbody tr[data-v-5cf1870c]:hover{background-color:#eeee}table.page-table tbody tr[data-v-5cf1870c]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-5cf1870c]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-5cf1870c]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-5cf1870c]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-5cf1870c]{width:100px}table.popups-table th.checkbox[data-v-5cf1870c]{width:50px;text-align:center}table.popups-table th.setting[data-v-5cf1870c]{width:100px;text-align:center}table.popups-table thead[data-v-5cf1870c]{color:#eee}table.popups-table thead tr[data-v-5cf1870c]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-5cf1870c]{padding:10px 16px}table.popups-table tbody tr[data-v-5cf1870c]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-5cf1870c]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-5cf1870c]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-5cf1870c]{width:100%}header.header-desktop[data-v-5cf1870c]{display:block}header.header-mobile[data-v-5cf1870c]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-5cf1870c]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-5cf1870c]{width:100%;height:100%}header.header-mobile button svg path[data-v-5cf1870c]{fill:#fff}nav.sidebar[data-v-5cf1870c]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-5cf1870c]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-5cf1870c]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-5cf1870c]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-5cf1870c]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-5cf1870c]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-5cf1870c]{color:#fff}nav.sidebar .container .children[data-v-5cf1870c]{padding-left:30px}@-moz-keyframes tada-5cf1870c{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-5cf1870c{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-5cf1870c{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-5cf1870c{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-5cf1870c]{animation:dialogEnter-5cf1870c .3s linear forwards}.dialog-leave-active[data-v-5cf1870c]{animation:dialogLeave-5cf1870c .3s linear forwards}@keyframes dialogEnter-5cf1870c{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-5cf1870c{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-5cf1870c]{animation:dialogEnter-5cf1870c .2s linear forwards}.dialog1-leave-active[data-v-5cf1870c]{animation:dialogLeave-5cf1870c .2s linear forwards}@keyframes rotateEnter-5cf1870c{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-5cf1870c]{animation:rotateEnter-5cf1870c .7s;position:relative}.rotate-leave-active[data-v-5cf1870c]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-5cf1870c{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-5cf1870c{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-5cf1870c]{animation:slideOutTop-5cf1870c .5s linear forwards}.slide-top-leave-active[data-v-5cf1870c],.slide-bottom-enter-active[data-v-5cf1870c]{animation:slideOutBottom-5cf1870c .5s linear forwards}@keyframes slideInLeft-5cf1870c{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-5cf1870c{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-5cf1870c]{animation:slideInLeft-5cf1870c .3s linear forwards}.slide-left-leave-active[data-v-5cf1870c]{animation:slideInRight-5cf1870c .3s linear forwards}@keyframes slideOutLeft-5cf1870c{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-5cf1870c{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-5cf1870c]{animation:slideOutLeft-5cf1870c .3s linear forwards}.slide-right-leave-active[data-v-5cf1870c]{animation:slideOutRight-5cf1870c .3s linear forwards}@keyframes bganimation-5cf1870c{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-5cf1870c{0%{height:0}to{height:100px}}@keyframes fadeEnd-5cf1870c{0%{height:100%}to{height:0}}.fade-enter-active[data-v-5cf1870c]{animation:fadeStart-5cf1870c .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-5cf1870c]{animation:fadeEnd-5cf1870c .1s linear forwards;overflow:hidden}@media screen and (max-width: 1400px){.actioner-dns .actioner-dns_body[data-v-5cf1870c]{min-height:34vh}}@media screen and (max-width: 860px){.actioner-dns[data-v-5cf1870c]{width:100%}}@keyframes turns-47b0529a{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-47b0529a]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-47b0529a]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-47b0529a]{color:#f9ad1e}.notice_info li[data-v-47b0529a]{font-size:14px;list-style:revert}.text-container[data-v-47b0529a]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-47b0529a]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-47b0529a]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-47b0529a]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-47b0529a]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-47b0529a]{width:100%}.text-container .text-container_item p.info-desc[data-v-47b0529a]{width:100%;color:#999;font-size:14px}.page-container[data-v-47b0529a]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-47b0529a]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-47b0529a]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-47b0529a]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-47b0529a],.page-container .page-flex .page-sidebar a[data-v-47b0529a]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-47b0529a]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-47b0529a]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-47b0529a]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-47b0529a]{border-radius:0;padding:1rem}ul.ul-container[data-v-47b0529a]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-47b0529a]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-47b0529a]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-47b0529a]{width:100%}form.form-container[data-v-47b0529a]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-47b0529a]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-47b0529a]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-47b0529a]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-47b0529a]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-47b0529a],form.form-container .label-value select[data-v-47b0529a]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-47b0529a]:focus,form.form-container .label-value select[data-v-47b0529a]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-47b0529a]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-47b0529a]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-47b0529a],form.form-container .label-value input[type=radio][data-v-47b0529a]{width:auto}form.form-container .label-value input[type=radio][data-v-47b0529a]{margin:0 4px 0 0}form.form-container .label-value input[data-v-47b0529a]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-47b0529a]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-47b0529a]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-47b0529a]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-47b0529a]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-47b0529a]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-47b0529a]:hover{background-color:#747474}form.form-container .label-msg[data-v-47b0529a]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-47b0529a]{color:#f9ad1e}form.form-container .label-flex[data-v-47b0529a]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-47b0529a]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-47b0529a]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-47b0529a]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-47b0529a]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-47b0529a]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-47b0529a]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-47b0529a],form.form-container1 .label-value select[data-v-47b0529a]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-47b0529a]:focus,form.form-container1 .label-value select[data-v-47b0529a]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-47b0529a]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-47b0529a],form.form-container1 .label-value input[type=radio][data-v-47b0529a]{width:auto}form.form-container1 .label-value input[type=radio][data-v-47b0529a]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-47b0529a]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-47b0529a]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-47b0529a]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-47b0529a]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-47b0529a]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-47b0529a]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-47b0529a]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-47b0529a]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-47b0529a]{color:#f9ad1e}form.form-container1 .label-flex[data-v-47b0529a]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-47b0529a]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-47b0529a]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-47b0529a]{width:100px}table.page-table th.checkbox[data-v-47b0529a]{width:50px;text-align:center}table.page-table th.setting[data-v-47b0529a]{width:100px;text-align:center}table.page-table thead[data-v-47b0529a]{color:#909399}table.page-table thead tr[data-v-47b0529a]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-47b0529a]{padding:10px 16px}table.page-table tbody tr[data-v-47b0529a]:hover{background-color:#eeee}table.page-table tbody tr[data-v-47b0529a]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-47b0529a]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-47b0529a]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-47b0529a]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-47b0529a]{width:100px}table.popups-table th.checkbox[data-v-47b0529a]{width:50px;text-align:center}table.popups-table th.setting[data-v-47b0529a]{width:100px;text-align:center}table.popups-table thead[data-v-47b0529a]{color:#eee}table.popups-table thead tr[data-v-47b0529a]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-47b0529a]{padding:10px 16px}table.popups-table tbody tr[data-v-47b0529a]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-47b0529a]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-47b0529a]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-47b0529a]{width:100%}header.header-desktop[data-v-47b0529a]{display:block}header.header-mobile[data-v-47b0529a]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-47b0529a]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-47b0529a]{width:100%;height:100%}header.header-mobile button svg path[data-v-47b0529a]{fill:#fff}nav.sidebar[data-v-47b0529a]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-47b0529a]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-47b0529a]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-47b0529a]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-47b0529a]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-47b0529a]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-47b0529a]{color:#fff}nav.sidebar .container .children[data-v-47b0529a]{padding-left:30px}@-moz-keyframes tada-47b0529a{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-47b0529a{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-47b0529a{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-47b0529a{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-47b0529a]{animation:dialogEnter-47b0529a .3s linear forwards}.dialog-leave-active[data-v-47b0529a]{animation:dialogLeave-47b0529a .3s linear forwards}@keyframes dialogEnter-47b0529a{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-47b0529a{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-47b0529a]{animation:dialogEnter-47b0529a .2s linear forwards}.dialog1-leave-active[data-v-47b0529a]{animation:dialogLeave-47b0529a .2s linear forwards}@keyframes rotateEnter-47b0529a{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-47b0529a]{animation:rotateEnter-47b0529a .7s;position:relative}.rotate-leave-active[data-v-47b0529a]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-47b0529a{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-47b0529a{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-47b0529a]{animation:slideOutTop-47b0529a .5s linear forwards}.slide-top-leave-active[data-v-47b0529a],.slide-bottom-enter-active[data-v-47b0529a]{animation:slideOutBottom-47b0529a .5s linear forwards}@keyframes slideInLeft-47b0529a{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-47b0529a{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-47b0529a]{animation:slideInLeft-47b0529a .3s linear forwards}.slide-left-leave-active[data-v-47b0529a]{animation:slideInRight-47b0529a .3s linear forwards}@keyframes slideOutLeft-47b0529a{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-47b0529a{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-47b0529a]{animation:slideOutLeft-47b0529a .3s linear forwards}.slide-right-leave-active[data-v-47b0529a]{animation:slideOutRight-47b0529a .3s linear forwards}@keyframes bganimation-47b0529a{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-47b0529a{0%{height:0}to{height:100px}}@keyframes fadeEnd-47b0529a{0%{height:100%}to{height:0}}.fade-enter-active[data-v-47b0529a]{animation:fadeStart-47b0529a .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-47b0529a]{animation:fadeEnd-47b0529a .1s linear forwards;overflow:hidden}.utilities[data-v-47b0529a]{width:100%}.utilities>div[data-v-47b0529a]{display:inline-block;cursor:pointer;position:relative;height:42px;margin-right:8px;margin-bottom:4px;border-radius:8px;padding:0 12px;background-size:100% 100%}.utilities>div>span[data-v-47b0529a]{display:inline-block;line-height:42px;color:#fff;font-size:14px;font-weight:600;z-index:999;width:100%;text-align:center}.utilities>div[data-v-47b0529a]:nth-of-type(1){background-image:url(/luci-static/istorex/tag-0.png?v=3b986a1b)}.utilities>div[data-v-47b0529a]:nth-of-type(2){background-image:url(/luci-static/istorex/tag-1.png?v=16e2fe5a)}.utilities>div[data-v-47b0529a]:nth-of-type(3){background-image:url(/luci-static/istorex/tag-2.png?v=b66239bc)}.utilities>div[data-v-47b0529a]:nth-of-type(4){background-image:url(/luci-static/istorex/tag-3.png?v=537ee5e7)}.utilities>div[data-v-47b0529a]:nth-of-type(5){background-image:url(/luci-static/istorex/tag-4.png?v=5f48ef97)}.utilities>div[data-v-47b0529a]:nth-of-type(6){background-image:url(/luci-static/istorex/tag-0.png?v=3b986a1b)}i[data-v-47b0529a]{display:inline-block;padding:3px;background-color:red;border-radius:50%}@keyframes turns-21e54302{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-21e54302]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-21e54302]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-21e54302]{color:#f9ad1e}.notice_info li[data-v-21e54302]{font-size:14px;list-style:revert}.text-container[data-v-21e54302]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-21e54302]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-21e54302]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-21e54302]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-21e54302]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-21e54302]{width:100%}.text-container .text-container_item p.info-desc[data-v-21e54302]{width:100%;color:#999;font-size:14px}.page-container[data-v-21e54302]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-21e54302]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-21e54302]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-21e54302]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-21e54302],.page-container .page-flex .page-sidebar a[data-v-21e54302]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-21e54302]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-21e54302]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-21e54302]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-21e54302]{border-radius:0;padding:1rem}ul.ul-container[data-v-21e54302]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-21e54302]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-21e54302]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-21e54302]{width:100%}form.form-container[data-v-21e54302]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-21e54302]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-21e54302]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-21e54302]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-21e54302]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-21e54302],form.form-container .label-value select[data-v-21e54302]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-21e54302]:focus,form.form-container .label-value select[data-v-21e54302]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-21e54302]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-21e54302]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-21e54302],form.form-container .label-value input[type=radio][data-v-21e54302]{width:auto}form.form-container .label-value input[type=radio][data-v-21e54302]{margin:0 4px 0 0}form.form-container .label-value input[data-v-21e54302]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-21e54302]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-21e54302]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-21e54302]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-21e54302]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-21e54302]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-21e54302]:hover{background-color:#747474}form.form-container .label-msg[data-v-21e54302]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-21e54302]{color:#f9ad1e}form.form-container .label-flex[data-v-21e54302]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-21e54302]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-21e54302]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-21e54302]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-21e54302]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-21e54302]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-21e54302]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-21e54302],form.form-container1 .label-value select[data-v-21e54302]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-21e54302]:focus,form.form-container1 .label-value select[data-v-21e54302]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-21e54302]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-21e54302],form.form-container1 .label-value input[type=radio][data-v-21e54302]{width:auto}form.form-container1 .label-value input[type=radio][data-v-21e54302]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-21e54302]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-21e54302]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-21e54302]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-21e54302]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-21e54302]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-21e54302]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-21e54302]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-21e54302]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-21e54302]{color:#f9ad1e}form.form-container1 .label-flex[data-v-21e54302]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-21e54302]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-21e54302]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-21e54302]{width:100px}table.page-table th.checkbox[data-v-21e54302]{width:50px;text-align:center}table.page-table th.setting[data-v-21e54302]{width:100px;text-align:center}table.page-table thead[data-v-21e54302]{color:#909399}table.page-table thead tr[data-v-21e54302]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-21e54302]{padding:10px 16px}table.page-table tbody tr[data-v-21e54302]:hover{background-color:#eeee}table.page-table tbody tr[data-v-21e54302]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-21e54302]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-21e54302]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-21e54302]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-21e54302]{width:100px}table.popups-table th.checkbox[data-v-21e54302]{width:50px;text-align:center}table.popups-table th.setting[data-v-21e54302]{width:100px;text-align:center}table.popups-table thead[data-v-21e54302]{color:#eee}table.popups-table thead tr[data-v-21e54302]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-21e54302]{padding:10px 16px}table.popups-table tbody tr[data-v-21e54302]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-21e54302]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-21e54302]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-21e54302]{width:100%}header.header-desktop[data-v-21e54302]{display:block}header.header-mobile[data-v-21e54302]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-21e54302]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-21e54302]{width:100%;height:100%}header.header-mobile button svg path[data-v-21e54302]{fill:#fff}nav.sidebar[data-v-21e54302]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-21e54302]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-21e54302]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-21e54302]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-21e54302]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-21e54302]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-21e54302]{color:#fff}nav.sidebar .container .children[data-v-21e54302]{padding-left:30px}@-moz-keyframes tada-21e54302{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-21e54302{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-21e54302{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-21e54302{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-21e54302]{animation:dialogEnter-21e54302 .3s linear forwards}.dialog-leave-active[data-v-21e54302]{animation:dialogLeave-21e54302 .3s linear forwards}@keyframes dialogEnter-21e54302{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-21e54302{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-21e54302]{animation:dialogEnter-21e54302 .2s linear forwards}.dialog1-leave-active[data-v-21e54302]{animation:dialogLeave-21e54302 .2s linear forwards}@keyframes rotateEnter-21e54302{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-21e54302]{animation:rotateEnter-21e54302 .7s;position:relative}.rotate-leave-active[data-v-21e54302]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-21e54302{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-21e54302{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-21e54302]{animation:slideOutTop-21e54302 .5s linear forwards}.slide-top-leave-active[data-v-21e54302],.slide-bottom-enter-active[data-v-21e54302]{animation:slideOutBottom-21e54302 .5s linear forwards}@keyframes slideInLeft-21e54302{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-21e54302{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-21e54302]{animation:slideInLeft-21e54302 .3s linear forwards}.slide-left-leave-active[data-v-21e54302]{animation:slideInRight-21e54302 .3s linear forwards}@keyframes slideOutLeft-21e54302{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-21e54302{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-21e54302]{animation:slideOutLeft-21e54302 .3s linear forwards}.slide-right-leave-active[data-v-21e54302]{animation:slideOutRight-21e54302 .3s linear forwards}@keyframes bganimation-21e54302{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-21e54302{0%{height:0}to{height:100px}}@keyframes fadeEnd-21e54302{0%{height:100%}to{height:0}}.fade-enter-active[data-v-21e54302]{animation:fadeStart-21e54302 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-21e54302]{animation:fadeEnd-21e54302 .1s linear forwards;overflow:hidden}.card[data-v-21e54302]{display:inline-block;width:100%;padding:4px;box-sizing:content-box;vertical-align:top}.card>div[data-v-21e54302]{border-radius:12px;background:#fff;width:100%;height:100%}.card>div>.title[data-v-21e54302]{padding:12px 12px 8px;color:#000c;font-size:14px;font-weight:600;position:relative}.card>div>.title>span[data-v-21e54302]{margin-right:6px}.card>div>.title>a>svg[data-v-21e54302]{position:relative;top:2px}.card>div>.title .toolbar[data-v-21e54302]{position:absolute;right:10px;top:8px;display:flex;flex-wrap:wrap;align-items:center}.card>div>.title .toolbar .action[data-v-21e54302]{display:inline-block;border:1px solid #eaeaea;padding:0 6px;height:26px;color:#000c;text-align:center;font-size:12px;cursor:pointer;line-height:26px;border-radius:5px}.card>div>.title .toolbar .actions[data-v-21e54302]{position:absolute;z-index:999;width:30%;right:0}.card>div>.title .toolbar .actions .menu_background[data-v-21e54302]{position:fixed;inset:0}.card>div>.title .toolbar .actions ul[data-v-21e54302]{background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:4px 8px;border-radius:6px;top:18px;right:0;text-align:center;position:absolute;word-break:keep-all}.card>div>.title .toolbar .actions ul li[data-v-21e54302]{margin:6px 0;cursor:pointer;font-size:12px;font-weight:400}.card>div>.title .toolbar .actions ul li[data-v-21e54302]:hover{background-color:#eee}.card>div>.title .toolbar .more-icon[data-v-21e54302]{border-radius:4px;border:1px solid #eaeaea;height:18px;width:18px;display:inline-block;cursor:pointer;display:flex;align-items:center;justify-content:center}.card>div>.card-body[data-v-21e54302]{height:100%}@keyframes turns-475e377c{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-475e377c]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-475e377c]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-475e377c]{color:#f9ad1e}.notice_info li[data-v-475e377c]{font-size:14px;list-style:revert}.text-container[data-v-475e377c]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-475e377c]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-475e377c]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-475e377c]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-475e377c]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-475e377c]{width:100%}.text-container .text-container_item p.info-desc[data-v-475e377c]{width:100%;color:#999;font-size:14px}.page-container[data-v-475e377c]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-475e377c]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-475e377c]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-475e377c]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-475e377c],.page-container .page-flex .page-sidebar a[data-v-475e377c]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-475e377c]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-475e377c]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-475e377c]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-475e377c]{border-radius:0;padding:1rem}ul.ul-container[data-v-475e377c]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-475e377c]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-475e377c]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-475e377c]{width:100%}form.form-container[data-v-475e377c]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-475e377c]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-475e377c]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-475e377c]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-475e377c]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-475e377c],form.form-container .label-value select[data-v-475e377c]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-475e377c]:focus,form.form-container .label-value select[data-v-475e377c]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-475e377c]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-475e377c]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-475e377c],form.form-container .label-value input[type=radio][data-v-475e377c]{width:auto}form.form-container .label-value input[type=radio][data-v-475e377c]{margin:0 4px 0 0}form.form-container .label-value input[data-v-475e377c]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-475e377c]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-475e377c]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-475e377c]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-475e377c]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-475e377c]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-475e377c]:hover{background-color:#747474}form.form-container .label-msg[data-v-475e377c]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-475e377c]{color:#f9ad1e}form.form-container .label-flex[data-v-475e377c]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-475e377c]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-475e377c]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-475e377c]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-475e377c]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-475e377c]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-475e377c]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-475e377c],form.form-container1 .label-value select[data-v-475e377c]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-475e377c]:focus,form.form-container1 .label-value select[data-v-475e377c]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-475e377c]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-475e377c],form.form-container1 .label-value input[type=radio][data-v-475e377c]{width:auto}form.form-container1 .label-value input[type=radio][data-v-475e377c]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-475e377c]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-475e377c]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-475e377c]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-475e377c]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-475e377c]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-475e377c]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-475e377c]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-475e377c]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-475e377c]{color:#f9ad1e}form.form-container1 .label-flex[data-v-475e377c]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-475e377c]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-475e377c]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-475e377c]{width:100px}table.page-table th.checkbox[data-v-475e377c]{width:50px;text-align:center}table.page-table th.setting[data-v-475e377c]{width:100px;text-align:center}table.page-table thead[data-v-475e377c]{color:#909399}table.page-table thead tr[data-v-475e377c]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-475e377c]{padding:10px 16px}table.page-table tbody tr[data-v-475e377c]:hover{background-color:#eeee}table.page-table tbody tr[data-v-475e377c]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-475e377c]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-475e377c]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-475e377c]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-475e377c]{width:100px}table.popups-table th.checkbox[data-v-475e377c]{width:50px;text-align:center}table.popups-table th.setting[data-v-475e377c]{width:100px;text-align:center}table.popups-table thead[data-v-475e377c]{color:#eee}table.popups-table thead tr[data-v-475e377c]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-475e377c]{padding:10px 16px}table.popups-table tbody tr[data-v-475e377c]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-475e377c]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-475e377c]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-475e377c]{width:100%}header.header-desktop[data-v-475e377c]{display:block}header.header-mobile[data-v-475e377c]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-475e377c]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-475e377c]{width:100%;height:100%}header.header-mobile button svg path[data-v-475e377c]{fill:#fff}nav.sidebar[data-v-475e377c]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-475e377c]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-475e377c]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-475e377c]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-475e377c]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-475e377c]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-475e377c]{color:#fff}nav.sidebar .container .children[data-v-475e377c]{padding-left:30px}@-moz-keyframes tada-475e377c{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-475e377c{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-475e377c{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-475e377c{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-475e377c]{animation:dialogEnter-475e377c .3s linear forwards}.dialog-leave-active[data-v-475e377c]{animation:dialogLeave-475e377c .3s linear forwards}@keyframes dialogEnter-475e377c{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-475e377c{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-475e377c]{animation:dialogEnter-475e377c .2s linear forwards}.dialog1-leave-active[data-v-475e377c]{animation:dialogLeave-475e377c .2s linear forwards}@keyframes rotateEnter-475e377c{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-475e377c]{animation:rotateEnter-475e377c .7s;position:relative}.rotate-leave-active[data-v-475e377c]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-475e377c{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-475e377c{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-475e377c]{animation:slideOutTop-475e377c .5s linear forwards}.slide-top-leave-active[data-v-475e377c],.slide-bottom-enter-active[data-v-475e377c]{animation:slideOutBottom-475e377c .5s linear forwards}@keyframes slideInLeft-475e377c{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-475e377c{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-475e377c]{animation:slideInLeft-475e377c .3s linear forwards}.slide-left-leave-active[data-v-475e377c]{animation:slideInRight-475e377c .3s linear forwards}@keyframes slideOutLeft-475e377c{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-475e377c{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-475e377c]{animation:slideOutLeft-475e377c .3s linear forwards}.slide-right-leave-active[data-v-475e377c]{animation:slideOutRight-475e377c .3s linear forwards}@keyframes bganimation-475e377c{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-475e377c{0%{height:0}to{height:100px}}@keyframes fadeEnd-475e377c{0%{height:100%}to{height:0}}.fade-enter-active[data-v-475e377c]{animation:fadeStart-475e377c .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-475e377c]{animation:fadeEnd-475e377c .1s linear forwards;overflow:hidden}.flow[data-v-475e377c]{position:relative;height:176px}.flow .echart[data-v-475e377c]{width:100%;height:100%}.flow .flow-data[data-v-475e377c]{position:absolute;right:4px;top:-30px;font-size:12px}.flow .flow-data span[data-v-475e377c]{display:block;color:#0009;transform:scale(.9)}@keyframes turns-39628bee{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-39628bee]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-39628bee]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-39628bee]{color:#f9ad1e}.notice_info li[data-v-39628bee]{font-size:14px;list-style:revert}.text-container[data-v-39628bee]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-39628bee]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-39628bee]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-39628bee]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-39628bee]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-39628bee]{width:100%}.text-container .text-container_item p.info-desc[data-v-39628bee]{width:100%;color:#999;font-size:14px}.page-container[data-v-39628bee]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-39628bee]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-39628bee]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-39628bee]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-39628bee],.page-container .page-flex .page-sidebar a[data-v-39628bee]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-39628bee]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-39628bee]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-39628bee]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-39628bee]{border-radius:0;padding:1rem}ul.ul-container[data-v-39628bee]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-39628bee]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-39628bee]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-39628bee]{width:100%}form.form-container[data-v-39628bee]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-39628bee]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-39628bee]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-39628bee]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-39628bee]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-39628bee],form.form-container .label-value select[data-v-39628bee]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-39628bee]:focus,form.form-container .label-value select[data-v-39628bee]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-39628bee]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-39628bee]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-39628bee],form.form-container .label-value input[type=radio][data-v-39628bee]{width:auto}form.form-container .label-value input[type=radio][data-v-39628bee]{margin:0 4px 0 0}form.form-container .label-value input[data-v-39628bee]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-39628bee]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-39628bee]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-39628bee]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-39628bee]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-39628bee]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-39628bee]:hover{background-color:#747474}form.form-container .label-msg[data-v-39628bee]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-39628bee]{color:#f9ad1e}form.form-container .label-flex[data-v-39628bee]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-39628bee]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-39628bee]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-39628bee]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-39628bee]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-39628bee]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-39628bee]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-39628bee],form.form-container1 .label-value select[data-v-39628bee]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-39628bee]:focus,form.form-container1 .label-value select[data-v-39628bee]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-39628bee]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-39628bee],form.form-container1 .label-value input[type=radio][data-v-39628bee]{width:auto}form.form-container1 .label-value input[type=radio][data-v-39628bee]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-39628bee]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-39628bee]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-39628bee]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-39628bee]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-39628bee]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-39628bee]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-39628bee]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-39628bee]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-39628bee]{color:#f9ad1e}form.form-container1 .label-flex[data-v-39628bee]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-39628bee]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-39628bee]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-39628bee]{width:100px}table.page-table th.checkbox[data-v-39628bee]{width:50px;text-align:center}table.page-table th.setting[data-v-39628bee]{width:100px;text-align:center}table.page-table thead[data-v-39628bee]{color:#909399}table.page-table thead tr[data-v-39628bee]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-39628bee]{padding:10px 16px}table.page-table tbody tr[data-v-39628bee]:hover{background-color:#eeee}table.page-table tbody tr[data-v-39628bee]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-39628bee]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-39628bee]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-39628bee]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-39628bee]{width:100px}table.popups-table th.checkbox[data-v-39628bee]{width:50px;text-align:center}table.popups-table th.setting[data-v-39628bee]{width:100px;text-align:center}table.popups-table thead[data-v-39628bee]{color:#eee}table.popups-table thead tr[data-v-39628bee]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-39628bee]{padding:10px 16px}table.popups-table tbody tr[data-v-39628bee]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-39628bee]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-39628bee]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-39628bee]{width:100%}header.header-desktop[data-v-39628bee]{display:block}header.header-mobile[data-v-39628bee]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-39628bee]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-39628bee]{width:100%;height:100%}header.header-mobile button svg path[data-v-39628bee]{fill:#fff}nav.sidebar[data-v-39628bee]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-39628bee]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-39628bee]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-39628bee]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-39628bee]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-39628bee]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-39628bee]{color:#fff}nav.sidebar .container .children[data-v-39628bee]{padding-left:30px}@-moz-keyframes tada-39628bee{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-39628bee{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-39628bee{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-39628bee{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-39628bee]{animation:dialogEnter-39628bee .3s linear forwards}.dialog-leave-active[data-v-39628bee]{animation:dialogLeave-39628bee .3s linear forwards}@keyframes dialogEnter-39628bee{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-39628bee{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-39628bee]{animation:dialogEnter-39628bee .2s linear forwards}.dialog1-leave-active[data-v-39628bee]{animation:dialogLeave-39628bee .2s linear forwards}@keyframes rotateEnter-39628bee{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-39628bee]{animation:rotateEnter-39628bee .7s;position:relative}.rotate-leave-active[data-v-39628bee]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-39628bee{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-39628bee{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-39628bee]{animation:slideOutTop-39628bee .5s linear forwards}.slide-top-leave-active[data-v-39628bee],.slide-bottom-enter-active[data-v-39628bee]{animation:slideOutBottom-39628bee .5s linear forwards}@keyframes slideInLeft-39628bee{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-39628bee{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-39628bee]{animation:slideInLeft-39628bee .3s linear forwards}.slide-left-leave-active[data-v-39628bee]{animation:slideInRight-39628bee .3s linear forwards}@keyframes slideOutLeft-39628bee{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-39628bee{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-39628bee]{animation:slideOutLeft-39628bee .3s linear forwards}.slide-right-leave-active[data-v-39628bee]{animation:slideOutRight-39628bee .3s linear forwards}@keyframes bganimation-39628bee{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-39628bee{0%{height:0}to{height:100px}}@keyframes fadeEnd-39628bee{0%{height:100%}to{height:0}}.fade-enter-active[data-v-39628bee]{animation:fadeStart-39628bee .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-39628bee]{animation:fadeEnd-39628bee .1s linear forwards;overflow:hidden}.network[data-v-39628bee],.device[data-v-39628bee]{display:flex;align-items:center;padding:8px}.network img[data-v-39628bee],.device img[data-v-39628bee]{display:inline-block;margin-right:8px;width:32px}.network div[data-v-39628bee],.device div[data-v-39628bee]{display:inline-block;overflow:hidden}.network div>span[data-v-39628bee],.device div>span[data-v-39628bee]{display:inline-block;width:100%}.network div>span[data-v-39628bee]:first-of-type,.device div>span[data-v-39628bee]:first-of-type{font-size:13px;font-weight:600}.network div>span[data-v-39628bee]:last-of-type,.device div>span[data-v-39628bee]:last-of-type{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#000c;font-size:12px;font-weight:500}.ip-dns[data-v-39628bee]{padding:12px}.ip-dns>div[data-v-39628bee]{color:#000c;font-size:12px;font-weight:500}.ip-dns>div[data-v-39628bee]:not(:last-of-type){margin-bottom:16px}.ip-dns>div>span[data-v-39628bee]{display:inline-block;margin-bottom:4px}.ip-dns>div.ip>span[data-v-39628bee]{width:100%}.ip-dns>div.dns>span[data-v-39628bee]{display:inline-block;width:50%;padding-right:8px}.ip-dns>.title[data-v-39628bee]{font-size:13px;font-weight:600;margin-bottom:10px}.width-45[data-v-39628bee]{display:inline-block;vertical-align:top;width:45%}.width-55[data-v-39628bee]{display:inline-block;vertical-align:top;width:55%}@media screen and (max-width: 668px){.responsive[data-v-39628bee]{width:100%}}.action .action-footer button[data-v-bd2acf72]{display:inline-block;width:100px!important;margin:0;margin-left:1rem}.action.format[data-v-bd2acf72]{width:700px;height:560px;max-height:90%;background-color:#fff;position:relative;z-index:1000;margin:auto;overflow:auto;padding:0 25px;border:1px solid #dfdfdf;border-radius:4px;background:#fff;box-shadow:0 1px 4px #0000004d}.action.format .action-header[data-v-bd2acf72]{width:100%;height:70px;line-height:70px}.action.format .action-header .action-header_title[data-v-bd2acf72]{margin:0;color:#333;font:inherit;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;-moz-user-select:none;-webkit-user-select:none;user-select:none;font-size:20px}.action.format .action-body[data-v-bd2acf72]{width:100%;height:calc(100% - 140px);overflow:auto}.action.format .action-footer[data-v-bd2acf72]{width:100%;height:70px;line-height:70px;color:#333;display:flex;flex-wrap:wrap;align-items:center}.action.format .action-footer .auto[data-v-bd2acf72]{flex:auto}.action.format .disk-list[data-v-bd2acf72]{width:100%;height:100%;border:1px solid #dfe1e5;overflow:auto}.action.format .label-item[data-v-bd2acf72]{width:100%;margin:1rem 0}.action.format .label-item .label-item_key[data-v-bd2acf72]{width:100%;font-size:16px;color:#666}.action.format .label-item .label-item_key span[data-v-bd2acf72]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.action.format .label-item .label-item_key span[data-v-bd2acf72]:before{content:"*";color:#f56c6c;margin-right:4px}.action.format .label-item .label-item_value[data-v-bd2acf72]{width:100%;margin-top:5px}.action.format .label-item .label-item_value select[data-v-bd2acf72],.action.format .label-item .label-item_value input[data-v-bd2acf72]{width:100%;height:36px}.action.format .label-item .label-item_path[data-v-bd2acf72]{padding:0 14px;background-color:#e5e5e5;width:100%;height:28px;line-height:28px;margin-top:10px}.action.format .auto[data-v-bd2acf72]{flex:auto}.action.format p.msg[data-v-bd2acf72]{margin:.5rem 0;color:red}.action.format .disk-info[data-v-bd2acf72]{width:100%;text-align:center}.action.format .disk-info .disk-info_icon[data-v-bd2acf72]{width:100px;height:100px;margin:0 auto}.action.format .disk-info .disk-info_icon svg[data-v-bd2acf72]{width:100%;height:100%}.action.format .disk-info .disk-info_mount-name[data-v-bd2acf72]{margin:1rem 0;font-size:1.5em;color:#333}.action.result[data-v-bd2acf72]{width:700px;height:560px;max-height:90%;background-color:#fff;position:relative;z-index:1000;margin:auto;overflow:auto;padding:0 25px;border:1px solid #dfdfdf;border-radius:4px;background:#fff;box-shadow:0 1px 4px #0000004d}.action.result .action-body[data-v-bd2acf72]{width:100%;height:100%;display:flex;flex-wrap:wrap;align-items:center;align-content:center;justify-content:center}.action.result .action-body .action-body_icon[data-v-bd2acf72]{width:100px;height:100px}.action.result .action-body .action-body_icon svg.icon[data-v-bd2acf72]{width:100%;height:100%}.action.result .action-body .action-body_msg[data-v-bd2acf72]{font-size:2em;color:#666;text-align:center;width:100%;margin:1rem 0}.action.result .action-body .action-body_info[data-v-bd2acf72]{margin:1rem 0;width:100%;text-align:center;color:#666;font-size:1.2em}.action.result .action-body .action-body_info a[data-v-bd2acf72]{color:#0000fb}.action.result .btns[data-v-bd2acf72]{width:100%;text-align:center;margin:1rem 0}@keyframes turns-bd2acf72{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-bd2acf72]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-bd2acf72]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-bd2acf72]{color:#f9ad1e}.notice_info li[data-v-bd2acf72]{font-size:14px;list-style:revert}.text-container[data-v-bd2acf72]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-bd2acf72]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-bd2acf72]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-bd2acf72]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-bd2acf72]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-bd2acf72]{width:100%}.text-container .text-container_item p.info-desc[data-v-bd2acf72]{width:100%;color:#999;font-size:14px}.page-container[data-v-bd2acf72]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-bd2acf72]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-bd2acf72]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-bd2acf72]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-bd2acf72],.page-container .page-flex .page-sidebar a[data-v-bd2acf72]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-bd2acf72]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-bd2acf72]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-bd2acf72]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-bd2acf72]{border-radius:0;padding:1rem}ul.ul-container[data-v-bd2acf72]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-bd2acf72]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-bd2acf72]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-bd2acf72]{width:100%}form.form-container[data-v-bd2acf72]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-bd2acf72]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-bd2acf72]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-bd2acf72]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-bd2acf72]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-bd2acf72],form.form-container .label-value select[data-v-bd2acf72]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-bd2acf72]:focus,form.form-container .label-value select[data-v-bd2acf72]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-bd2acf72]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-bd2acf72]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-bd2acf72],form.form-container .label-value input[type=radio][data-v-bd2acf72]{width:auto}form.form-container .label-value input[type=radio][data-v-bd2acf72]{margin:0 4px 0 0}form.form-container .label-value input[data-v-bd2acf72]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-bd2acf72]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-bd2acf72]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-bd2acf72]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-bd2acf72]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-bd2acf72]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-bd2acf72]:hover{background-color:#747474}form.form-container .label-msg[data-v-bd2acf72]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-bd2acf72]{color:#f9ad1e}form.form-container .label-flex[data-v-bd2acf72]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-bd2acf72]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-bd2acf72]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-bd2acf72]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-bd2acf72]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-bd2acf72]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-bd2acf72]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-bd2acf72],form.form-container1 .label-value select[data-v-bd2acf72]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-bd2acf72]:focus,form.form-container1 .label-value select[data-v-bd2acf72]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-bd2acf72]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-bd2acf72],form.form-container1 .label-value input[type=radio][data-v-bd2acf72]{width:auto}form.form-container1 .label-value input[type=radio][data-v-bd2acf72]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-bd2acf72]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-bd2acf72]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-bd2acf72]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-bd2acf72]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-bd2acf72]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-bd2acf72]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-bd2acf72]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-bd2acf72]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-bd2acf72]{color:#f9ad1e}form.form-container1 .label-flex[data-v-bd2acf72]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-bd2acf72]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-bd2acf72]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-bd2acf72]{width:100px}table.page-table th.checkbox[data-v-bd2acf72]{width:50px;text-align:center}table.page-table th.setting[data-v-bd2acf72]{width:100px;text-align:center}table.page-table thead[data-v-bd2acf72]{color:#909399}table.page-table thead tr[data-v-bd2acf72]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-bd2acf72]{padding:10px 16px}table.page-table tbody tr[data-v-bd2acf72]:hover{background-color:#eeee}table.page-table tbody tr[data-v-bd2acf72]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-bd2acf72]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-bd2acf72]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-bd2acf72]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-bd2acf72]{width:100px}table.popups-table th.checkbox[data-v-bd2acf72]{width:50px;text-align:center}table.popups-table th.setting[data-v-bd2acf72]{width:100px;text-align:center}table.popups-table thead[data-v-bd2acf72]{color:#eee}table.popups-table thead tr[data-v-bd2acf72]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-bd2acf72]{padding:10px 16px}table.popups-table tbody tr[data-v-bd2acf72]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-bd2acf72]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-bd2acf72]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-bd2acf72]{width:100%}header.header-desktop[data-v-bd2acf72]{display:block}header.header-mobile[data-v-bd2acf72]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-bd2acf72]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-bd2acf72]{width:100%;height:100%}header.header-mobile button svg path[data-v-bd2acf72]{fill:#fff}nav.sidebar[data-v-bd2acf72]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-bd2acf72]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-bd2acf72]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-bd2acf72]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-bd2acf72]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-bd2acf72]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-bd2acf72]{color:#fff}nav.sidebar .container .children[data-v-bd2acf72]{padding-left:30px}@-moz-keyframes tada-bd2acf72{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-bd2acf72{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-bd2acf72{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-bd2acf72{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-bd2acf72]{animation:dialogEnter-bd2acf72 .3s linear forwards}.dialog-leave-active[data-v-bd2acf72]{animation:dialogLeave-bd2acf72 .3s linear forwards}@keyframes dialogEnter-bd2acf72{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-bd2acf72{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-bd2acf72]{animation:dialogEnter-bd2acf72 .2s linear forwards}.dialog1-leave-active[data-v-bd2acf72]{animation:dialogLeave-bd2acf72 .2s linear forwards}@keyframes rotateEnter-bd2acf72{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-bd2acf72]{animation:rotateEnter-bd2acf72 .7s;position:relative}.rotate-leave-active[data-v-bd2acf72]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-bd2acf72{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-bd2acf72{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-bd2acf72]{animation:slideOutTop-bd2acf72 .5s linear forwards}.slide-top-leave-active[data-v-bd2acf72],.slide-bottom-enter-active[data-v-bd2acf72]{animation:slideOutBottom-bd2acf72 .5s linear forwards}@keyframes slideInLeft-bd2acf72{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-bd2acf72{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-bd2acf72]{animation:slideInLeft-bd2acf72 .3s linear forwards}.slide-left-leave-active[data-v-bd2acf72]{animation:slideInRight-bd2acf72 .3s linear forwards}@keyframes slideOutLeft-bd2acf72{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-bd2acf72{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-bd2acf72]{animation:slideOutLeft-bd2acf72 .3s linear forwards}.slide-right-leave-active[data-v-bd2acf72]{animation:slideOutRight-bd2acf72 .3s linear forwards}@keyframes bganimation-bd2acf72{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-bd2acf72{0%{height:0}to{height:100px}}@keyframes fadeEnd-bd2acf72{0%{height:100%}to{height:0}}.fade-enter-active[data-v-bd2acf72]{animation:fadeStart-bd2acf72 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-bd2acf72]{animation:fadeEnd-bd2acf72 .1s linear forwards;overflow:hidden}@media screen and (max-width: 1000px){.action.format[data-v-bd2acf72]{width:168%}}@media screen and (max-width: 900px){.action.format[data-v-bd2acf72]{width:146%}}@media screen and (max-width: 800px){.action.format[data-v-bd2acf72]{width:136%}}@media screen and (max-width: 700px){.action.format[data-v-bd2acf72]{width:116%}}@media screen and (max-width: 500px){.action.format[data-v-bd2acf72]{width:100%}}.action .action-footer button[data-v-3a7479d2]{display:inline-block;width:100px!important;margin:0;margin-left:1rem}.app-container[data-v-3a7479d2]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-3a7479d2]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-3a7479d2]{color:#f9ad1e}.notice_info li[data-v-3a7479d2]{font-size:14px;list-style:revert}.text-container[data-v-3a7479d2]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-3a7479d2]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-3a7479d2]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-3a7479d2]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-3a7479d2]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-3a7479d2]{width:100%}.text-container .text-container_item p.info-desc[data-v-3a7479d2]{width:100%;color:#999;font-size:14px}.page-container[data-v-3a7479d2]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-3a7479d2]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-3a7479d2]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-3a7479d2]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-3a7479d2],.page-container .page-flex .page-sidebar a[data-v-3a7479d2]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-3a7479d2]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-3a7479d2]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-3a7479d2]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-3a7479d2]{border-radius:0;padding:1rem}ul.ul-container[data-v-3a7479d2]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-3a7479d2]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-3a7479d2]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-3a7479d2]{width:100%}form.form-container[data-v-3a7479d2]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-3a7479d2]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-3a7479d2]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-3a7479d2]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-3a7479d2]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-3a7479d2],form.form-container .label-value select[data-v-3a7479d2]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-3a7479d2]:focus,form.form-container .label-value select[data-v-3a7479d2]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-3a7479d2]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-3a7479d2]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-3a7479d2],form.form-container .label-value input[type=radio][data-v-3a7479d2]{width:auto}form.form-container .label-value input[type=radio][data-v-3a7479d2]{margin:0 4px 0 0}form.form-container .label-value input[data-v-3a7479d2]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-3a7479d2]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-3a7479d2]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-3a7479d2]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-3a7479d2]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-3a7479d2]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-3a7479d2]:hover{background-color:#747474}form.form-container .label-msg[data-v-3a7479d2]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-3a7479d2]{color:#f9ad1e}form.form-container .label-flex[data-v-3a7479d2]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-3a7479d2]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-3a7479d2]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-3a7479d2]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-3a7479d2]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-3a7479d2]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-3a7479d2]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-3a7479d2],form.form-container1 .label-value select[data-v-3a7479d2]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-3a7479d2]:focus,form.form-container1 .label-value select[data-v-3a7479d2]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-3a7479d2]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-3a7479d2],form.form-container1 .label-value input[type=radio][data-v-3a7479d2]{width:auto}form.form-container1 .label-value input[type=radio][data-v-3a7479d2]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-3a7479d2]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-3a7479d2]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-3a7479d2]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-3a7479d2]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-3a7479d2]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-3a7479d2]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-3a7479d2]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-3a7479d2]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-3a7479d2]{color:#f9ad1e}form.form-container1 .label-flex[data-v-3a7479d2]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-3a7479d2]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-3a7479d2]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-3a7479d2]{width:100px}table.page-table th.checkbox[data-v-3a7479d2]{width:50px;text-align:center}table.page-table th.setting[data-v-3a7479d2]{width:100px;text-align:center}table.page-table thead[data-v-3a7479d2]{color:#909399}table.page-table thead tr[data-v-3a7479d2]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-3a7479d2]{padding:10px 16px}table.page-table tbody tr[data-v-3a7479d2]:hover{background-color:#eeee}table.page-table tbody tr[data-v-3a7479d2]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-3a7479d2]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-3a7479d2]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-3a7479d2]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-3a7479d2]{width:100px}table.popups-table th.checkbox[data-v-3a7479d2]{width:50px;text-align:center}table.popups-table th.setting[data-v-3a7479d2]{width:100px;text-align:center}table.popups-table thead[data-v-3a7479d2]{color:#eee}table.popups-table thead tr[data-v-3a7479d2]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-3a7479d2]{padding:10px 16px}table.popups-table tbody tr[data-v-3a7479d2]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-3a7479d2]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-3a7479d2]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-3a7479d2]{width:100%}header.header-desktop[data-v-3a7479d2]{display:block}header.header-mobile[data-v-3a7479d2]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-3a7479d2]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-3a7479d2]{width:100%;height:100%}header.header-mobile button svg path[data-v-3a7479d2]{fill:#fff}nav.sidebar[data-v-3a7479d2]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-3a7479d2]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-3a7479d2]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-3a7479d2]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-3a7479d2]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-3a7479d2]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-3a7479d2]{color:#fff}nav.sidebar .container .children[data-v-3a7479d2]{padding-left:30px}@-moz-keyframes tada-3a7479d2{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-3a7479d2{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-3a7479d2{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-3a7479d2{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-3a7479d2]{animation:dialogEnter-3a7479d2 .3s linear forwards}.dialog-leave-active[data-v-3a7479d2]{animation:dialogLeave-3a7479d2 .3s linear forwards}@keyframes dialogEnter-3a7479d2{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-3a7479d2{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-3a7479d2]{animation:dialogEnter-3a7479d2 .2s linear forwards}.dialog1-leave-active[data-v-3a7479d2]{animation:dialogLeave-3a7479d2 .2s linear forwards}@keyframes rotateEnter-3a7479d2{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-3a7479d2]{animation:rotateEnter-3a7479d2 .7s;position:relative}.rotate-leave-active[data-v-3a7479d2]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-3a7479d2{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-3a7479d2{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-3a7479d2]{animation:slideOutTop-3a7479d2 .5s linear forwards}.slide-top-leave-active[data-v-3a7479d2],.slide-bottom-enter-active[data-v-3a7479d2]{animation:slideOutBottom-3a7479d2 .5s linear forwards}@keyframes slideInLeft-3a7479d2{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-3a7479d2{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-3a7479d2]{animation:slideInLeft-3a7479d2 .3s linear forwards}.slide-left-leave-active[data-v-3a7479d2]{animation:slideInRight-3a7479d2 .3s linear forwards}@keyframes slideOutLeft-3a7479d2{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-3a7479d2{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-3a7479d2]{animation:slideOutLeft-3a7479d2 .3s linear forwards}.slide-right-leave-active[data-v-3a7479d2]{animation:slideOutRight-3a7479d2 .3s linear forwards}@keyframes bganimation-3a7479d2{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-3a7479d2{0%{height:0}to{height:100px}}@keyframes fadeEnd-3a7479d2{0%{height:100%}to{height:0}}.fade-enter-active[data-v-3a7479d2]{animation:fadeStart-3a7479d2 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-3a7479d2]{animation:fadeEnd-3a7479d2 .1s linear forwards;overflow:hidden}.action.format[data-v-3a7479d2]{width:700px;height:560px;max-height:90%;background-color:#fff;position:relative;z-index:1000;margin:auto;overflow:auto;padding:0 25px;border:1px solid #dfdfdf;border-radius:4px;background:#fff;box-shadow:0 1px 4px #0000004d}.action.format .action-header[data-v-3a7479d2]{width:100%;height:70px;line-height:70px}.action.format .action-header .action-header_title[data-v-3a7479d2]{margin:0;color:#333;font:inherit;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;-moz-user-select:none;-webkit-user-select:none;user-select:none;font-size:20px}.action.format .action-body[data-v-3a7479d2]{width:100%;height:calc(100% - 140px);overflow:auto}.action.format .action-footer[data-v-3a7479d2]{width:100%;height:70px;line-height:70px;color:#333;display:flex;flex-wrap:wrap;align-items:center}.action.format .action-footer .auto[data-v-3a7479d2]{flex:auto}.action.format .disk-list[data-v-3a7479d2]{width:100%;height:100%;border:1px solid #dfe1e5;overflow:auto}.action.format .label-item[data-v-3a7479d2]{width:100%;margin:1rem 0}.action.format .label-item .label-item_key[data-v-3a7479d2]{width:100%;font-size:16px;color:#666}.action.format .label-item .label-item_key span[data-v-3a7479d2]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.action.format .label-item .label-item_key span[data-v-3a7479d2]:before{content:"*";color:#f56c6c;margin-right:4px}.action.format .label-item .label-item_value[data-v-3a7479d2]{width:100%;margin-top:5px}.action.format .label-item .label-item_value select[data-v-3a7479d2],.action.format .label-item .label-item_value input[data-v-3a7479d2]{width:100%;height:36px}.action.format .label-item .label-item_path[data-v-3a7479d2]{padding:0 14px;background-color:#e5e5e5;width:100%;height:28px;line-height:28px;margin-top:10px}.action.format .auto[data-v-3a7479d2]{flex:auto}.action.format p.msg[data-v-3a7479d2]{margin:.5rem 0;color:red}.action.format .disk-info[data-v-3a7479d2]{width:100%;text-align:center}.action.format .disk-info .disk-info_icon[data-v-3a7479d2]{width:100px;height:100px;margin:0 auto}.action.format .disk-info .disk-info_icon svg[data-v-3a7479d2]{width:100%;height:100%}.action.format .disk-info .disk-info_mount-name[data-v-3a7479d2]{margin:1rem 0;font-size:1.5em;color:#333}@keyframes turns-3a7479d2{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-3a7479d2]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-3a7479d2]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-3a7479d2]{color:#f9ad1e}.notice_info li[data-v-3a7479d2]{font-size:14px;list-style:revert}.text-container[data-v-3a7479d2]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-3a7479d2]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-3a7479d2]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-3a7479d2]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-3a7479d2]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-3a7479d2]{width:100%}.text-container .text-container_item p.info-desc[data-v-3a7479d2]{width:100%;color:#999;font-size:14px}.page-container[data-v-3a7479d2]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-3a7479d2]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-3a7479d2]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-3a7479d2]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-3a7479d2],.page-container .page-flex .page-sidebar a[data-v-3a7479d2]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-3a7479d2]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-3a7479d2]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-3a7479d2]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-3a7479d2]{border-radius:0;padding:1rem}ul.ul-container[data-v-3a7479d2]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-3a7479d2]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-3a7479d2]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-3a7479d2]{width:100%}form.form-container[data-v-3a7479d2]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-3a7479d2]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-3a7479d2]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-3a7479d2]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-3a7479d2]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-3a7479d2],form.form-container .label-value select[data-v-3a7479d2]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-3a7479d2]:focus,form.form-container .label-value select[data-v-3a7479d2]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-3a7479d2]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-3a7479d2]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-3a7479d2],form.form-container .label-value input[type=radio][data-v-3a7479d2]{width:auto}form.form-container .label-value input[type=radio][data-v-3a7479d2]{margin:0 4px 0 0}form.form-container .label-value input[data-v-3a7479d2]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-3a7479d2]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-3a7479d2]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-3a7479d2]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-3a7479d2]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-3a7479d2]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-3a7479d2]:hover{background-color:#747474}form.form-container .label-msg[data-v-3a7479d2]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-3a7479d2]{color:#f9ad1e}form.form-container .label-flex[data-v-3a7479d2]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-3a7479d2]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-3a7479d2]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-3a7479d2]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-3a7479d2]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-3a7479d2]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-3a7479d2]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-3a7479d2],form.form-container1 .label-value select[data-v-3a7479d2]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-3a7479d2]:focus,form.form-container1 .label-value select[data-v-3a7479d2]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-3a7479d2]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-3a7479d2],form.form-container1 .label-value input[type=radio][data-v-3a7479d2]{width:auto}form.form-container1 .label-value input[type=radio][data-v-3a7479d2]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-3a7479d2]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-3a7479d2]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-3a7479d2]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-3a7479d2]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-3a7479d2]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-3a7479d2]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-3a7479d2]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-3a7479d2]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-3a7479d2]{color:#f9ad1e}form.form-container1 .label-flex[data-v-3a7479d2]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-3a7479d2]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-3a7479d2]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-3a7479d2]{width:100px}table.page-table th.checkbox[data-v-3a7479d2]{width:50px;text-align:center}table.page-table th.setting[data-v-3a7479d2]{width:100px;text-align:center}table.page-table thead[data-v-3a7479d2]{color:#909399}table.page-table thead tr[data-v-3a7479d2]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-3a7479d2]{padding:10px 16px}table.page-table tbody tr[data-v-3a7479d2]:hover{background-color:#eeee}table.page-table tbody tr[data-v-3a7479d2]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-3a7479d2]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-3a7479d2]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-3a7479d2]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-3a7479d2]{width:100px}table.popups-table th.checkbox[data-v-3a7479d2]{width:50px;text-align:center}table.popups-table th.setting[data-v-3a7479d2]{width:100px;text-align:center}table.popups-table thead[data-v-3a7479d2]{color:#eee}table.popups-table thead tr[data-v-3a7479d2]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-3a7479d2]{padding:10px 16px}table.popups-table tbody tr[data-v-3a7479d2]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-3a7479d2]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-3a7479d2]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-3a7479d2]{width:100%}header.header-desktop[data-v-3a7479d2]{display:block}header.header-mobile[data-v-3a7479d2]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-3a7479d2]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-3a7479d2]{width:100%;height:100%}header.header-mobile button svg path[data-v-3a7479d2]{fill:#fff}nav.sidebar[data-v-3a7479d2]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-3a7479d2]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-3a7479d2]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-3a7479d2]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-3a7479d2]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-3a7479d2]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-3a7479d2]{color:#fff}nav.sidebar .container .children[data-v-3a7479d2]{padding-left:30px}@-moz-keyframes tada-3a7479d2{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-3a7479d2{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-3a7479d2{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-3a7479d2{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-3a7479d2]{animation:dialogEnter-3a7479d2 .3s linear forwards}.dialog-leave-active[data-v-3a7479d2]{animation:dialogLeave-3a7479d2 .3s linear forwards}@keyframes dialogEnter-3a7479d2{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-3a7479d2{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-3a7479d2]{animation:dialogEnter-3a7479d2 .2s linear forwards}.dialog1-leave-active[data-v-3a7479d2]{animation:dialogLeave-3a7479d2 .2s linear forwards}@keyframes rotateEnter-3a7479d2{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-3a7479d2]{animation:rotateEnter-3a7479d2 .7s;position:relative}.rotate-leave-active[data-v-3a7479d2]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-3a7479d2{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-3a7479d2{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-3a7479d2]{animation:slideOutTop-3a7479d2 .5s linear forwards}.slide-top-leave-active[data-v-3a7479d2],.slide-bottom-enter-active[data-v-3a7479d2]{animation:slideOutBottom-3a7479d2 .5s linear forwards}@keyframes slideInLeft-3a7479d2{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-3a7479d2{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-3a7479d2]{animation:slideInLeft-3a7479d2 .3s linear forwards}.slide-left-leave-active[data-v-3a7479d2]{animation:slideInRight-3a7479d2 .3s linear forwards}@keyframes slideOutLeft-3a7479d2{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-3a7479d2{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-3a7479d2]{animation:slideOutLeft-3a7479d2 .3s linear forwards}.slide-right-leave-active[data-v-3a7479d2]{animation:slideOutRight-3a7479d2 .3s linear forwards}@keyframes bganimation-3a7479d2{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-3a7479d2{0%{height:0}to{height:100px}}@keyframes fadeEnd-3a7479d2{0%{height:100%}to{height:0}}.fade-enter-active[data-v-3a7479d2]{animation:fadeStart-3a7479d2 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-3a7479d2]{animation:fadeEnd-3a7479d2 .1s linear forwards;overflow:hidden}.action.result[data-v-3a7479d2]{width:700px;height:560px;max-height:90%;background-color:#fff;position:relative;z-index:1000;margin:auto;overflow:auto;padding:0 25px;border:1px solid #dfdfdf;border-radius:4px;background:#fff;box-shadow:0 1px 4px #0000004d}.action.result .action-body[data-v-3a7479d2]{width:100%;height:100%;display:flex;flex-wrap:wrap;align-items:center;align-content:center;justify-content:center}.action.result .action-body .action-body_icon[data-v-3a7479d2]{width:100px;height:100px}.action.result .action-body .action-body_icon svg.icon[data-v-3a7479d2]{width:100%;height:100%}.action.result .action-body .action-body_msg[data-v-3a7479d2]{font-size:2em;color:#666;text-align:center;width:100%;margin:1rem 0}.action.result .action-body .action-body_info[data-v-3a7479d2]{margin:1rem 0;width:100%;text-align:center;color:#666;font-size:1.2em}.action.result .action-body .action-body_info a[data-v-3a7479d2]{color:#0000fb}.action.result .btns[data-v-3a7479d2]{width:100%;text-align:center;margin:1rem 0}@keyframes turns-733828e1{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.app-container[data-v-733828e1]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-733828e1]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-733828e1]{color:#f9ad1e}.notice_info li[data-v-733828e1]{font-size:14px;list-style:revert}.text-container[data-v-733828e1]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-733828e1]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-733828e1]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-733828e1]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-733828e1]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-733828e1]{width:100%}.text-container .text-container_item p.info-desc[data-v-733828e1]{width:100%;color:#999;font-size:14px}.page-container[data-v-733828e1]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-733828e1]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-733828e1]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-733828e1]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-733828e1],.page-container .page-flex .page-sidebar a[data-v-733828e1]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-733828e1]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-733828e1]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-733828e1]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-733828e1]{border-radius:0;padding:1rem}ul.ul-container[data-v-733828e1]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-733828e1]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-733828e1]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-733828e1]{width:100%}form.form-container[data-v-733828e1]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-733828e1]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-733828e1]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-733828e1]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-733828e1]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-733828e1],form.form-container .label-value select[data-v-733828e1]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-733828e1]:focus,form.form-container .label-value select[data-v-733828e1]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-733828e1]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-733828e1]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-733828e1],form.form-container .label-value input[type=radio][data-v-733828e1]{width:auto}form.form-container .label-value input[type=radio][data-v-733828e1]{margin:0 4px 0 0}form.form-container .label-value input[data-v-733828e1]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-733828e1]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-733828e1]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-733828e1]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-733828e1]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-733828e1]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-733828e1]:hover{background-color:#747474}form.form-container .label-msg[data-v-733828e1]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-733828e1]{color:#f9ad1e}form.form-container .label-flex[data-v-733828e1]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-733828e1]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-733828e1]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-733828e1]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-733828e1]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-733828e1]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-733828e1]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-733828e1],form.form-container1 .label-value select[data-v-733828e1]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-733828e1]:focus,form.form-container1 .label-value select[data-v-733828e1]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-733828e1]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-733828e1],form.form-container1 .label-value input[type=radio][data-v-733828e1]{width:auto}form.form-container1 .label-value input[type=radio][data-v-733828e1]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-733828e1]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-733828e1]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-733828e1]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-733828e1]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-733828e1]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-733828e1]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-733828e1]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-733828e1]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-733828e1]{color:#f9ad1e}form.form-container1 .label-flex[data-v-733828e1]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-733828e1]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-733828e1]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-733828e1]{width:100px}table.page-table th.checkbox[data-v-733828e1]{width:50px;text-align:center}table.page-table th.setting[data-v-733828e1]{width:100px;text-align:center}table.page-table thead[data-v-733828e1]{color:#909399}table.page-table thead tr[data-v-733828e1]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-733828e1]{padding:10px 16px}table.page-table tbody tr[data-v-733828e1]:hover{background-color:#eeee}table.page-table tbody tr[data-v-733828e1]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-733828e1]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-733828e1]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-733828e1]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-733828e1]{width:100px}table.popups-table th.checkbox[data-v-733828e1]{width:50px;text-align:center}table.popups-table th.setting[data-v-733828e1]{width:100px;text-align:center}table.popups-table thead[data-v-733828e1]{color:#eee}table.popups-table thead tr[data-v-733828e1]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-733828e1]{padding:10px 16px}table.popups-table tbody tr[data-v-733828e1]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-733828e1]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-733828e1]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-733828e1]{width:100%}header.header-desktop[data-v-733828e1]{display:block}header.header-mobile[data-v-733828e1]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-733828e1]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-733828e1]{width:100%;height:100%}header.header-mobile button svg path[data-v-733828e1]{fill:#fff}nav.sidebar[data-v-733828e1]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-733828e1]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-733828e1]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-733828e1]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-733828e1]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-733828e1]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-733828e1]{color:#fff}nav.sidebar .container .children[data-v-733828e1]{padding-left:30px}@-moz-keyframes tada-733828e1{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-733828e1{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-733828e1{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-733828e1{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-733828e1]{animation:dialogEnter-733828e1 .3s linear forwards}.dialog-leave-active[data-v-733828e1]{animation:dialogLeave-733828e1 .3s linear forwards}@keyframes dialogEnter-733828e1{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-733828e1{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-733828e1]{animation:dialogEnter-733828e1 .2s linear forwards}.dialog1-leave-active[data-v-733828e1]{animation:dialogLeave-733828e1 .2s linear forwards}@keyframes rotateEnter-733828e1{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-733828e1]{animation:rotateEnter-733828e1 .7s;position:relative}.rotate-leave-active[data-v-733828e1]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-733828e1{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-733828e1{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-733828e1]{animation:slideOutTop-733828e1 .5s linear forwards}.slide-top-leave-active[data-v-733828e1],.slide-bottom-enter-active[data-v-733828e1]{animation:slideOutBottom-733828e1 .5s linear forwards}@keyframes slideInLeft-733828e1{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-733828e1{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-733828e1]{animation:slideInLeft-733828e1 .3s linear forwards}.slide-left-leave-active[data-v-733828e1]{animation:slideInRight-733828e1 .3s linear forwards}@keyframes slideOutLeft-733828e1{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-733828e1{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-733828e1]{animation:slideOutLeft-733828e1 .3s linear forwards}.slide-right-leave-active[data-v-733828e1]{animation:slideOutRight-733828e1 .3s linear forwards}@keyframes bganimation-733828e1{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-733828e1{0%{height:0}to{height:100px}}@keyframes fadeEnd-733828e1{0%{height:100%}to{height:0}}.fade-enter-active[data-v-733828e1]{animation:fadeStart-733828e1 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-733828e1]{animation:fadeEnd-733828e1 .1s linear forwards;overflow:hidden}.progress[data-v-733828e1]{width:100%;display:block;position:relative;background-color:#eee;border-radius:4px;height:18px;line-height:18px;overflow:hidden}.progress .progress-value[data-v-733828e1]{transition:.5s;position:absolute;left:0;top:0;bottom:0;height:100%;text-align:center;color:#fff;vertical-align:middle;font-size:12px}@keyframes bganimation-4b3c5909{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes rotateEnter-4b3c5909{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}@keyframes turns-4b3c5909{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}@keyframes slideInLeft-4b3c5909{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-4b3c5909{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-4b3c5909]{animation:slideInLeft-4b3c5909 .3s linear forwards}.slide-left-leave-active[data-v-4b3c5909]{animation:slideInRight-4b3c5909 .3s linear forwards}@keyframes slideOutLeft-4b3c5909{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-4b3c5909{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-4b3c5909]{animation:slideOutLeft-4b3c5909 .3s linear forwards}.slide-right-leave-active[data-v-4b3c5909]{animation:slideOutRight-4b3c5909 .3s linear forwards}.app-container[data-v-4b3c5909]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-4b3c5909]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-4b3c5909]{color:#f9ad1e}.notice_info li[data-v-4b3c5909]{font-size:14px;list-style:revert}.text-container[data-v-4b3c5909]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-4b3c5909]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-4b3c5909]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-4b3c5909]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-4b3c5909]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-4b3c5909]{width:100%}.text-container .text-container_item p.info-desc[data-v-4b3c5909]{width:100%;color:#999;font-size:14px}.page-container[data-v-4b3c5909]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-4b3c5909]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-4b3c5909]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-4b3c5909]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-4b3c5909],.page-container .page-flex .page-sidebar a[data-v-4b3c5909]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-4b3c5909]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-4b3c5909]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-4b3c5909]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-4b3c5909]{border-radius:0;padding:1rem}ul.ul-container[data-v-4b3c5909]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-4b3c5909]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-4b3c5909]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-4b3c5909]{width:100%}form.form-container[data-v-4b3c5909]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-4b3c5909]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-4b3c5909]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-4b3c5909]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-4b3c5909]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-4b3c5909],form.form-container .label-value select[data-v-4b3c5909]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-4b3c5909]:focus,form.form-container .label-value select[data-v-4b3c5909]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-4b3c5909]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-4b3c5909]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-4b3c5909],form.form-container .label-value input[type=radio][data-v-4b3c5909]{width:auto}form.form-container .label-value input[type=radio][data-v-4b3c5909]{margin:0 4px 0 0}form.form-container .label-value input[data-v-4b3c5909]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-4b3c5909]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-4b3c5909]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-4b3c5909]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-4b3c5909]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-4b3c5909]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-4b3c5909]:hover{background-color:#747474}form.form-container .label-msg[data-v-4b3c5909]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-4b3c5909]{color:#f9ad1e}form.form-container .label-flex[data-v-4b3c5909]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-4b3c5909]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-4b3c5909]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-4b3c5909]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-4b3c5909]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-4b3c5909]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-4b3c5909]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-4b3c5909],form.form-container1 .label-value select[data-v-4b3c5909]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-4b3c5909]:focus,form.form-container1 .label-value select[data-v-4b3c5909]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-4b3c5909]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-4b3c5909],form.form-container1 .label-value input[type=radio][data-v-4b3c5909]{width:auto}form.form-container1 .label-value input[type=radio][data-v-4b3c5909]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-4b3c5909]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-4b3c5909]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-4b3c5909]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-4b3c5909]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-4b3c5909]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-4b3c5909]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-4b3c5909]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-4b3c5909]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-4b3c5909]{color:#f9ad1e}form.form-container1 .label-flex[data-v-4b3c5909]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-4b3c5909]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-4b3c5909]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-4b3c5909]{width:100px}table.page-table th.checkbox[data-v-4b3c5909]{width:50px;text-align:center}table.page-table th.setting[data-v-4b3c5909]{width:100px;text-align:center}table.page-table thead[data-v-4b3c5909]{color:#909399}table.page-table thead tr[data-v-4b3c5909]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-4b3c5909]{padding:10px 16px}table.page-table tbody tr[data-v-4b3c5909]:hover{background-color:#eeee}table.page-table tbody tr[data-v-4b3c5909]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-4b3c5909]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-4b3c5909]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-4b3c5909]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-4b3c5909]{width:100px}table.popups-table th.checkbox[data-v-4b3c5909]{width:50px;text-align:center}table.popups-table th.setting[data-v-4b3c5909]{width:100px;text-align:center}table.popups-table thead[data-v-4b3c5909]{color:#eee}table.popups-table thead tr[data-v-4b3c5909]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-4b3c5909]{padding:10px 16px}table.popups-table tbody tr[data-v-4b3c5909]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-4b3c5909]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-4b3c5909]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-4b3c5909]{width:100%}header.header-desktop[data-v-4b3c5909]{display:block}header.header-mobile[data-v-4b3c5909]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-4b3c5909]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-4b3c5909]{width:100%;height:100%}header.header-mobile button svg path[data-v-4b3c5909]{fill:#fff}nav.sidebar[data-v-4b3c5909]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-4b3c5909]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-4b3c5909]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-4b3c5909]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-4b3c5909]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-4b3c5909]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-4b3c5909]{color:#fff}nav.sidebar .container .children[data-v-4b3c5909]{padding-left:30px}@-moz-keyframes tada-4b3c5909{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-4b3c5909{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-4b3c5909{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-4b3c5909{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-4b3c5909]{animation:dialogEnter-4b3c5909 .3s linear forwards}.dialog-leave-active[data-v-4b3c5909]{animation:dialogLeave-4b3c5909 .3s linear forwards}@keyframes dialogEnter-4b3c5909{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-4b3c5909{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-4b3c5909]{animation:dialogEnter-4b3c5909 .2s linear forwards}.dialog1-leave-active[data-v-4b3c5909]{animation:dialogLeave-4b3c5909 .2s linear forwards}.rotate-enter-active[data-v-4b3c5909]{animation:rotateEnter-4b3c5909 .7s;position:relative}.rotate-leave-active[data-v-4b3c5909]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-4b3c5909{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-4b3c5909{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-4b3c5909]{animation:slideOutTop-4b3c5909 .5s linear forwards}.slide-top-leave-active[data-v-4b3c5909],.slide-bottom-enter-active[data-v-4b3c5909]{animation:slideOutBottom-4b3c5909 .5s linear forwards}@keyframes fadeStart-4b3c5909{0%{height:0}to{height:100px}}@keyframes fadeEnd-4b3c5909{0%{height:100%}to{height:0}}.fade-enter-active[data-v-4b3c5909]{animation:fadeStart-4b3c5909 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-4b3c5909]{animation:fadeEnd-4b3c5909 .1s linear forwards;overflow:hidden}li.disk-item.error[data-v-4b3c5909]{color:red}.disk-content[data-v-4b3c5909]{padding:1rem;border:1px solid #cfcfcf;margin:16px 0}.disk-content li.disk-item[data-v-4b3c5909]{width:100%;display:flex;align-items:center}.disk-content li.disk-item .disk-item_name[data-v-4b3c5909]{flex:0 0 50%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-right:10px}.disk-content li.disk-item .disk_value[data-v-4b3c5909]{flex:0 0 50%;display:flex;justify-content:space-between;align-items:center}.disk-content li.disk-item .disk_value .cbi-button[data-v-4b3c5909]{margin-left:10px}.disk-content li.disk-item .disk_value .disk-item_value[data-v-4b3c5909]{flex:auto;padding-left:10px;position:relative}.disk-content li.disk-item .disk_value .disk-item_value .value-data[data-v-4b3c5909]{width:100%;text-overflow:ellipsis;white-space:nowrap;height:100%;color:#297ff3;cursor:default}.disk-content li.disk-item .disk_value .disk-item_value .value-data button[data-v-4b3c5909]{background:none;border:none;width:100%;text-align:right;color:#297ff3;cursor:pointer}.disk-content li.disk-item .disk_value .disk-item_value .value-data button[data-v-4b3c5909]:hover{opacity:.7}.disk-content li.disk-item .disk_value .disk-item_value .value-data.buttondiv[data-v-4b3c5909]{cursor:pointer}.disk-content li.disk-item .disk_value .disk-item_value .disk-item-tooltip[data-v-4b3c5909]{position:absolute;background:rgba(0,0,0,.7);z-index:10111;color:#fff;padding:.5rem 1rem;left:10px;right:0;bottom:100%;margin-bottom:6px;text-align:center;font-size:1em;visibility:hidden;opacity:0}.disk-content li.disk-item .disk_value .disk-item_value .disk-item-tooltip[data-v-4b3c5909]:after{content:"";position:absolute;bottom:-6px;border-color:#4c4c4c rgba(0,0,0,0) rgba(0,0,0,0);left:0;right:0;text-align:center;width:0;margin:0 auto;border-width:6px 8px 0;border-style:solid}.disk-content li.disk-item .disk_value .disk-item_value:hover .disk-item-tooltip[data-v-4b3c5909]{visibility:visible;transition:.7s;opacity:1}.disk-content .disk_status[data-v-4b3c5909]{display:flex;text-align:left;padding-left:10px;font-size:12px;padding-top:6px}.disk-content .disk_status .disk_status_item[data-v-4b3c5909]{display:flex;margin-right:20px}.disk-content .disk_status .disk_status_item .disk_tip[data-v-4b3c5909]{display:flex;align-items:center}.disk_infoicon[data-v-4b3c5909]{margin-left:10px;cursor:pointer}.tooltip-trigger[data-v-4b3c5909]{flex:none}.tooltip-trigger[data-v-4b3c5909]{position:relative;display:inline-block;cursor:help;margin-right:6px;margin-left:10px}.tooltip-trigger .tooltip-text[data-v-4b3c5909]{visibility:hidden;position:absolute;padding:.5rem 1rem;background-color:#555;color:#fff;text-align:center;border-radius:6px;opacity:0;transition:opacity .6s}.tooltip-trigger .tooltip-text span[data-v-4b3c5909]{color:#fff}.tooltip-trigger .tooltip-text .disk_dir_tip[data-v-4b3c5909]{min-width:15rem;display:inline-block}.tooltip-trigger:hover .tooltip-text[data-v-4b3c5909]{visibility:visible;opacity:1}.tooltip-top[data-v-4b3c5909]{bottom:100%;left:50%;margin-bottom:5px;transform:translate(-50%)}.tooltip-top[data-v-4b3c5909]:after{content:"";position:absolute;top:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:#555 transparent transparent transparent}.tooltip-bottom[data-v-4b3c5909]:after{content:"";position:absolute;bottom:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:transparent transparent #555 transparent}@keyframes bganimation-4b3c5909{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes rotateEnter-4b3c5909{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}@keyframes turns-4b3c5909{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}@keyframes slideInLeft-4b3c5909{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-4b3c5909{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-4b3c5909]{animation:slideInLeft-4b3c5909 .3s linear forwards}.slide-left-leave-active[data-v-4b3c5909]{animation:slideInRight-4b3c5909 .3s linear forwards}@keyframes slideOutLeft-4b3c5909{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-4b3c5909{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-4b3c5909]{animation:slideOutLeft-4b3c5909 .3s linear forwards}.slide-right-leave-active[data-v-4b3c5909]{animation:slideOutRight-4b3c5909 .3s linear forwards}.app-container[data-v-4b3c5909]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-4b3c5909]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-4b3c5909]{color:#f9ad1e}.notice_info li[data-v-4b3c5909]{font-size:14px;list-style:revert}.text-container[data-v-4b3c5909]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-4b3c5909]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-4b3c5909]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-4b3c5909]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-4b3c5909]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-4b3c5909]{width:100%}.text-container .text-container_item p.info-desc[data-v-4b3c5909]{width:100%;color:#999;font-size:14px}.page-container[data-v-4b3c5909]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-4b3c5909]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-4b3c5909]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-4b3c5909]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-4b3c5909],.page-container .page-flex .page-sidebar a[data-v-4b3c5909]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-4b3c5909]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-4b3c5909]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-4b3c5909]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-4b3c5909]{border-radius:0;padding:1rem}ul.ul-container[data-v-4b3c5909]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-4b3c5909]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-4b3c5909]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-4b3c5909]{width:100%}form.form-container[data-v-4b3c5909]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-4b3c5909]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-4b3c5909]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-4b3c5909]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-4b3c5909]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-4b3c5909],form.form-container .label-value select[data-v-4b3c5909]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-4b3c5909]:focus,form.form-container .label-value select[data-v-4b3c5909]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-4b3c5909]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-4b3c5909]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-4b3c5909],form.form-container .label-value input[type=radio][data-v-4b3c5909]{width:auto}form.form-container .label-value input[type=radio][data-v-4b3c5909]{margin:0 4px 0 0}form.form-container .label-value input[data-v-4b3c5909]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-4b3c5909]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-4b3c5909]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-4b3c5909]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-4b3c5909]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-4b3c5909]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-4b3c5909]:hover{background-color:#747474}form.form-container .label-msg[data-v-4b3c5909]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-4b3c5909]{color:#f9ad1e}form.form-container .label-flex[data-v-4b3c5909]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-4b3c5909]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-4b3c5909]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-4b3c5909]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-4b3c5909]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-4b3c5909]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-4b3c5909]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-4b3c5909],form.form-container1 .label-value select[data-v-4b3c5909]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-4b3c5909]:focus,form.form-container1 .label-value select[data-v-4b3c5909]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-4b3c5909]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-4b3c5909],form.form-container1 .label-value input[type=radio][data-v-4b3c5909]{width:auto}form.form-container1 .label-value input[type=radio][data-v-4b3c5909]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-4b3c5909]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-4b3c5909]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-4b3c5909]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-4b3c5909]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-4b3c5909]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-4b3c5909]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-4b3c5909]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-4b3c5909]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-4b3c5909]{color:#f9ad1e}form.form-container1 .label-flex[data-v-4b3c5909]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-4b3c5909]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-4b3c5909]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-4b3c5909]{width:100px}table.page-table th.checkbox[data-v-4b3c5909]{width:50px;text-align:center}table.page-table th.setting[data-v-4b3c5909]{width:100px;text-align:center}table.page-table thead[data-v-4b3c5909]{color:#909399}table.page-table thead tr[data-v-4b3c5909]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-4b3c5909]{padding:10px 16px}table.page-table tbody tr[data-v-4b3c5909]:hover{background-color:#eeee}table.page-table tbody tr[data-v-4b3c5909]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-4b3c5909]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-4b3c5909]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-4b3c5909]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-4b3c5909]{width:100px}table.popups-table th.checkbox[data-v-4b3c5909]{width:50px;text-align:center}table.popups-table th.setting[data-v-4b3c5909]{width:100px;text-align:center}table.popups-table thead[data-v-4b3c5909]{color:#eee}table.popups-table thead tr[data-v-4b3c5909]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-4b3c5909]{padding:10px 16px}table.popups-table tbody tr[data-v-4b3c5909]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-4b3c5909]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-4b3c5909]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-4b3c5909]{width:100%}header.header-desktop[data-v-4b3c5909]{display:block}header.header-mobile[data-v-4b3c5909]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-4b3c5909]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-4b3c5909]{width:100%;height:100%}header.header-mobile button svg path[data-v-4b3c5909]{fill:#fff}nav.sidebar[data-v-4b3c5909]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-4b3c5909]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-4b3c5909]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-4b3c5909]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-4b3c5909]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-4b3c5909]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-4b3c5909]{color:#fff}nav.sidebar .container .children[data-v-4b3c5909]{padding-left:30px}@-moz-keyframes tada-4b3c5909{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-4b3c5909{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-4b3c5909{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-4b3c5909{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-4b3c5909]{animation:dialogEnter-4b3c5909 .3s linear forwards}.dialog-leave-active[data-v-4b3c5909]{animation:dialogLeave-4b3c5909 .3s linear forwards}@keyframes dialogEnter-4b3c5909{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-4b3c5909{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-4b3c5909]{animation:dialogEnter-4b3c5909 .2s linear forwards}.dialog1-leave-active[data-v-4b3c5909]{animation:dialogLeave-4b3c5909 .2s linear forwards}@keyframes rotateEnter-4b3c5909{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-4b3c5909]{animation:rotateEnter-4b3c5909 .7s;position:relative}.rotate-leave-active[data-v-4b3c5909]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-4b3c5909{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-4b3c5909{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-4b3c5909]{animation:slideOutTop-4b3c5909 .5s linear forwards}.slide-top-leave-active[data-v-4b3c5909],.slide-bottom-enter-active[data-v-4b3c5909]{animation:slideOutBottom-4b3c5909 .5s linear forwards}@keyframes slideInLeft-4b3c5909{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-4b3c5909{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-4b3c5909]{animation:slideInLeft-4b3c5909 .3s linear forwards}.slide-left-leave-active[data-v-4b3c5909]{animation:slideInRight-4b3c5909 .3s linear forwards}@keyframes slideOutLeft-4b3c5909{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-4b3c5909{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-4b3c5909]{animation:slideOutLeft-4b3c5909 .3s linear forwards}.slide-right-leave-active[data-v-4b3c5909]{animation:slideOutRight-4b3c5909 .3s linear forwards}@keyframes bganimation-4b3c5909{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-4b3c5909{0%{height:0}to{height:100px}}@keyframes fadeEnd-4b3c5909{0%{height:100%}to{height:0}}.fade-enter-active[data-v-4b3c5909]{animation:fadeStart-4b3c5909 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-4b3c5909]{animation:fadeEnd-4b3c5909 .1s linear forwards;overflow:hidden}@media screen and (max-width: 1000px){.disk-content li.disk-item .disk_value[data-v-4b3c5909]{display:block}.disk-content .disk_status[data-v-4b3c5909]{flex-wrap:wrap}}@keyframes bganimation-5f29973e{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes rotateEnter-5f29973e{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}@keyframes turns-5f29973e{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}@keyframes slideInLeft-5f29973e{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-5f29973e{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-5f29973e]{animation:slideInLeft-5f29973e .3s linear forwards}.slide-left-leave-active[data-v-5f29973e]{animation:slideInRight-5f29973e .3s linear forwards}@keyframes slideOutLeft-5f29973e{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-5f29973e{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-5f29973e]{animation:slideOutLeft-5f29973e .3s linear forwards}.slide-right-leave-active[data-v-5f29973e]{animation:slideOutRight-5f29973e .3s linear forwards}.rotate-enter-active[data-v-5f29973e]{animation:rotateEnter-5f29973e .7s;position:relative}.rotate-leave-active[data-v-5f29973e]{opacity:0;display:none;position:relative;z-index:-999}.app-container[data-v-5f29973e]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-5f29973e]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-5f29973e]{color:#f9ad1e}.notice_info li[data-v-5f29973e]{font-size:14px;list-style:revert}.text-container[data-v-5f29973e]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-5f29973e]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-5f29973e]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-5f29973e]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-5f29973e]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-5f29973e]{width:100%}.text-container .text-container_item p.info-desc[data-v-5f29973e]{width:100%;color:#999;font-size:14px}.page-container[data-v-5f29973e]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-5f29973e]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-5f29973e]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-5f29973e]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-5f29973e],.page-container .page-flex .page-sidebar a[data-v-5f29973e]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-5f29973e]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-5f29973e]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-5f29973e]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-5f29973e]{border-radius:0;padding:1rem}ul.ul-container[data-v-5f29973e]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-5f29973e]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-5f29973e]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-5f29973e]{width:100%}form.form-container[data-v-5f29973e]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-5f29973e]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-5f29973e]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-5f29973e]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-5f29973e]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-5f29973e],form.form-container .label-value select[data-v-5f29973e]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-5f29973e]:focus,form.form-container .label-value select[data-v-5f29973e]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-5f29973e]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-5f29973e]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-5f29973e],form.form-container .label-value input[type=radio][data-v-5f29973e]{width:auto}form.form-container .label-value input[type=radio][data-v-5f29973e]{margin:0 4px 0 0}form.form-container .label-value input[data-v-5f29973e]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-5f29973e]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-5f29973e]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-5f29973e]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-5f29973e]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-5f29973e]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-5f29973e]:hover{background-color:#747474}form.form-container .label-msg[data-v-5f29973e]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-5f29973e]{color:#f9ad1e}form.form-container .label-flex[data-v-5f29973e]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-5f29973e]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-5f29973e]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-5f29973e]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-5f29973e]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-5f29973e]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-5f29973e]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-5f29973e],form.form-container1 .label-value select[data-v-5f29973e]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-5f29973e]:focus,form.form-container1 .label-value select[data-v-5f29973e]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-5f29973e]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-5f29973e],form.form-container1 .label-value input[type=radio][data-v-5f29973e]{width:auto}form.form-container1 .label-value input[type=radio][data-v-5f29973e]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-5f29973e]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-5f29973e]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-5f29973e]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-5f29973e]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-5f29973e]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-5f29973e]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-5f29973e]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-5f29973e]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-5f29973e]{color:#f9ad1e}form.form-container1 .label-flex[data-v-5f29973e]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-5f29973e]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-5f29973e]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-5f29973e]{width:100px}table.page-table th.checkbox[data-v-5f29973e]{width:50px;text-align:center}table.page-table th.setting[data-v-5f29973e]{width:100px;text-align:center}table.page-table thead[data-v-5f29973e]{color:#909399}table.page-table thead tr[data-v-5f29973e]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-5f29973e]{padding:10px 16px}table.page-table tbody tr[data-v-5f29973e]:hover{background-color:#eeee}table.page-table tbody tr[data-v-5f29973e]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-5f29973e]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-5f29973e]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-5f29973e]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-5f29973e]{width:100px}table.popups-table th.checkbox[data-v-5f29973e]{width:50px;text-align:center}table.popups-table th.setting[data-v-5f29973e]{width:100px;text-align:center}table.popups-table thead[data-v-5f29973e]{color:#eee}table.popups-table thead tr[data-v-5f29973e]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-5f29973e]{padding:10px 16px}table.popups-table tbody tr[data-v-5f29973e]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-5f29973e]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-5f29973e]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-5f29973e]{width:100%}header.header-desktop[data-v-5f29973e]{display:block}header.header-mobile[data-v-5f29973e]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-5f29973e]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-5f29973e]{width:100%;height:100%}header.header-mobile button svg path[data-v-5f29973e]{fill:#fff}nav.sidebar[data-v-5f29973e]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-5f29973e]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-5f29973e]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-5f29973e]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-5f29973e]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-5f29973e]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-5f29973e]{color:#fff}nav.sidebar .container .children[data-v-5f29973e]{padding-left:30px}@-moz-keyframes tada-5f29973e{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-5f29973e{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-5f29973e{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-5f29973e{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-5f29973e]{animation:dialogEnter-5f29973e .3s linear forwards}.dialog-leave-active[data-v-5f29973e]{animation:dialogLeave-5f29973e .3s linear forwards}@keyframes dialogEnter-5f29973e{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-5f29973e{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-5f29973e]{animation:dialogEnter-5f29973e .2s linear forwards}.dialog1-leave-active[data-v-5f29973e]{animation:dialogLeave-5f29973e .2s linear forwards}@keyframes slideOutTop-5f29973e{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-5f29973e{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-5f29973e]{animation:slideOutTop-5f29973e .5s linear forwards}.slide-top-leave-active[data-v-5f29973e],.slide-bottom-enter-active[data-v-5f29973e]{animation:slideOutBottom-5f29973e .5s linear forwards}@keyframes fadeStart-5f29973e{0%{height:0}to{height:100px}}@keyframes fadeEnd-5f29973e{0%{height:100%}to{height:0}}.fade-enter-active[data-v-5f29973e]{animation:fadeStart-5f29973e .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-5f29973e]{animation:fadeEnd-5f29973e .1s linear forwards;overflow:hidden}.action[data-v-5f29973e]{width:860px;max-height:90%;background-color:#fff;position:relative;z-index:1000;margin:auto;padding:3rem;border-radius:6px;display:flex;flex-direction:column;flex-wrap:nowrap}.action ul[data-v-5f29973e]{overflow:auto}.action ul .app-container_info[data-v-5f29973e]{display:flex;justify-content:space-between;max-width:56%;margin-top:18px;font-weight:600}.action ul .app-container_body[data-v-5f29973e]{width:100%;height:100%}.action .action-footer[data-v-5f29973e]{text-align:center;margin-top:46px}.action .action-footer button[data-v-5f29973e]{display:inline-block;width:100px!important;margin:0;margin-left:1rem}@keyframes bganimation-5f29973e{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes rotateEnter-5f29973e{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}@keyframes turns-5f29973e{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}@keyframes slideInLeft-5f29973e{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-5f29973e{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-5f29973e]{animation:slideInLeft-5f29973e .3s linear forwards}.slide-left-leave-active[data-v-5f29973e]{animation:slideInRight-5f29973e .3s linear forwards}@keyframes slideOutLeft-5f29973e{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-5f29973e{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-5f29973e]{animation:slideOutLeft-5f29973e .3s linear forwards}.slide-right-leave-active[data-v-5f29973e]{animation:slideOutRight-5f29973e .3s linear forwards}.rotate-enter-active[data-v-5f29973e]{animation:rotateEnter-5f29973e .7s;position:relative}.rotate-leave-active[data-v-5f29973e]{opacity:0;display:none;position:relative;z-index:-999}.app-container[data-v-5f29973e]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-5f29973e]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-5f29973e]{color:#f9ad1e}.notice_info li[data-v-5f29973e]{font-size:14px;list-style:revert}.text-container[data-v-5f29973e]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-5f29973e]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-5f29973e]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-5f29973e]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-5f29973e]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-5f29973e]{width:100%}.text-container .text-container_item p.info-desc[data-v-5f29973e]{width:100%;color:#999;font-size:14px}.page-container[data-v-5f29973e]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-5f29973e]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-5f29973e]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-5f29973e]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-5f29973e],.page-container .page-flex .page-sidebar a[data-v-5f29973e]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-5f29973e]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-5f29973e]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-5f29973e]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-5f29973e]{border-radius:0;padding:1rem}ul.ul-container[data-v-5f29973e]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-5f29973e]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-5f29973e]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-5f29973e]{width:100%}form.form-container[data-v-5f29973e]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-5f29973e]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-5f29973e]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-5f29973e]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-5f29973e]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-5f29973e],form.form-container .label-value select[data-v-5f29973e]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-5f29973e]:focus,form.form-container .label-value select[data-v-5f29973e]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-5f29973e]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-5f29973e]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-5f29973e],form.form-container .label-value input[type=radio][data-v-5f29973e]{width:auto}form.form-container .label-value input[type=radio][data-v-5f29973e]{margin:0 4px 0 0}form.form-container .label-value input[data-v-5f29973e]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-5f29973e]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-5f29973e]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-5f29973e]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-5f29973e]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-5f29973e]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-5f29973e]:hover{background-color:#747474}form.form-container .label-msg[data-v-5f29973e]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-5f29973e]{color:#f9ad1e}form.form-container .label-flex[data-v-5f29973e]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-5f29973e]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-5f29973e]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-5f29973e]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-5f29973e]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-5f29973e]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-5f29973e]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-5f29973e],form.form-container1 .label-value select[data-v-5f29973e]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-5f29973e]:focus,form.form-container1 .label-value select[data-v-5f29973e]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-5f29973e]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-5f29973e],form.form-container1 .label-value input[type=radio][data-v-5f29973e]{width:auto}form.form-container1 .label-value input[type=radio][data-v-5f29973e]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-5f29973e]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-5f29973e]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-5f29973e]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-5f29973e]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-5f29973e]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-5f29973e]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-5f29973e]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-5f29973e]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-5f29973e]{color:#f9ad1e}form.form-container1 .label-flex[data-v-5f29973e]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-5f29973e]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-5f29973e]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-5f29973e]{width:100px}table.page-table th.checkbox[data-v-5f29973e]{width:50px;text-align:center}table.page-table th.setting[data-v-5f29973e]{width:100px;text-align:center}table.page-table thead[data-v-5f29973e]{color:#909399}table.page-table thead tr[data-v-5f29973e]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-5f29973e]{padding:10px 16px}table.page-table tbody tr[data-v-5f29973e]:hover{background-color:#eeee}table.page-table tbody tr[data-v-5f29973e]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-5f29973e]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-5f29973e]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-5f29973e]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-5f29973e]{width:100px}table.popups-table th.checkbox[data-v-5f29973e]{width:50px;text-align:center}table.popups-table th.setting[data-v-5f29973e]{width:100px;text-align:center}table.popups-table thead[data-v-5f29973e]{color:#eee}table.popups-table thead tr[data-v-5f29973e]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-5f29973e]{padding:10px 16px}table.popups-table tbody tr[data-v-5f29973e]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-5f29973e]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-5f29973e]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-5f29973e]{width:100%}header.header-desktop[data-v-5f29973e]{display:block}header.header-mobile[data-v-5f29973e]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-5f29973e]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-5f29973e]{width:100%;height:100%}header.header-mobile button svg path[data-v-5f29973e]{fill:#fff}nav.sidebar[data-v-5f29973e]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-5f29973e]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-5f29973e]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-5f29973e]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-5f29973e]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-5f29973e]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-5f29973e]{color:#fff}nav.sidebar .container .children[data-v-5f29973e]{padding-left:30px}@-moz-keyframes tada-5f29973e{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-5f29973e{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-5f29973e{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-5f29973e{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-5f29973e]{animation:dialogEnter-5f29973e .3s linear forwards}.dialog-leave-active[data-v-5f29973e]{animation:dialogLeave-5f29973e .3s linear forwards}@keyframes dialogEnter-5f29973e{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-5f29973e{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-5f29973e]{animation:dialogEnter-5f29973e .2s linear forwards}.dialog1-leave-active[data-v-5f29973e]{animation:dialogLeave-5f29973e .2s linear forwards}@keyframes rotateEnter-5f29973e{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-5f29973e]{animation:rotateEnter-5f29973e .7s;position:relative}.rotate-leave-active[data-v-5f29973e]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-5f29973e{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-5f29973e{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-5f29973e]{animation:slideOutTop-5f29973e .5s linear forwards}.slide-top-leave-active[data-v-5f29973e],.slide-bottom-enter-active[data-v-5f29973e]{animation:slideOutBottom-5f29973e .5s linear forwards}@keyframes slideInLeft-5f29973e{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-5f29973e{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-5f29973e]{animation:slideInLeft-5f29973e .3s linear forwards}.slide-left-leave-active[data-v-5f29973e]{animation:slideInRight-5f29973e .3s linear forwards}@keyframes slideOutLeft-5f29973e{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-5f29973e{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-5f29973e]{animation:slideOutLeft-5f29973e .3s linear forwards}.slide-right-leave-active[data-v-5f29973e]{animation:slideOutRight-5f29973e .3s linear forwards}@keyframes bganimation-5f29973e{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-5f29973e{0%{height:0}to{height:100px}}@keyframes fadeEnd-5f29973e{0%{height:100%}to{height:0}}.fade-enter-active[data-v-5f29973e]{animation:fadeStart-5f29973e .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-5f29973e]{animation:fadeEnd-5f29973e .1s linear forwards;overflow:hidden}@media screen and (max-width: 1000px){.action[data-v-5f29973e]{width:160%}}@media screen and (max-width: 800px){.action[data-v-5f29973e]{width:138%}}@media screen and (max-width: 700px){.action[data-v-5f29973e]{width:132%}}@media screen and (max-width: 600px){.action[data-v-5f29973e]{width:116%}}@media screen and (max-width: 500px){.action[data-v-5f29973e]{width:100%}}@media screen and (max-width: 400px){.action[data-v-5f29973e]{width:90%}}@media screen and (max-width: 300px){.action[data-v-5f29973e]{width:100%}}@keyframes bganimation-e039a994{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes rotateEnter-e039a994{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}@keyframes turns-e039a994{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}@keyframes slideInLeft-e039a994{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-e039a994{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-e039a994]{animation:slideInLeft-e039a994 .3s linear forwards}.slide-left-leave-active[data-v-e039a994]{animation:slideInRight-e039a994 .3s linear forwards}@keyframes slideOutLeft-e039a994{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-e039a994{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-e039a994]{animation:slideOutLeft-e039a994 .3s linear forwards}.slide-right-leave-active[data-v-e039a994]{animation:slideOutRight-e039a994 .3s linear forwards}.rotate-enter-active[data-v-e039a994]{animation:rotateEnter-e039a994 .7s;position:relative}.rotate-leave-active[data-v-e039a994]{opacity:0;display:none;position:relative;z-index:-999}.app-container[data-v-e039a994]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-e039a994]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-e039a994]{color:#f9ad1e}.notice_info li[data-v-e039a994]{font-size:14px;list-style:revert}.text-container[data-v-e039a994]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-e039a994]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-e039a994]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-e039a994]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-e039a994]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-e039a994]{width:100%}.text-container .text-container_item p.info-desc[data-v-e039a994]{width:100%;color:#999;font-size:14px}.page-container[data-v-e039a994]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-e039a994]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-e039a994]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-e039a994]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-e039a994],.page-container .page-flex .page-sidebar a[data-v-e039a994]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-e039a994]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-e039a994]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-e039a994]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-e039a994]{border-radius:0;padding:1rem}ul.ul-container[data-v-e039a994]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-e039a994]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-e039a994]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-e039a994]{width:100%}form.form-container[data-v-e039a994]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-e039a994]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-e039a994]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-e039a994]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-e039a994]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-e039a994],form.form-container .label-value select[data-v-e039a994]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-e039a994]:focus,form.form-container .label-value select[data-v-e039a994]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-e039a994]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-e039a994]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-e039a994],form.form-container .label-value input[type=radio][data-v-e039a994]{width:auto}form.form-container .label-value input[type=radio][data-v-e039a994]{margin:0 4px 0 0}form.form-container .label-value input[data-v-e039a994]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-e039a994]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-e039a994]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-e039a994]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-e039a994]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-e039a994]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-e039a994]:hover{background-color:#747474}form.form-container .label-msg[data-v-e039a994]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-e039a994]{color:#f9ad1e}form.form-container .label-flex[data-v-e039a994]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-e039a994]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-e039a994]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-e039a994]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-e039a994]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-e039a994]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-e039a994]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-e039a994],form.form-container1 .label-value select[data-v-e039a994]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-e039a994]:focus,form.form-container1 .label-value select[data-v-e039a994]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-e039a994]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-e039a994],form.form-container1 .label-value input[type=radio][data-v-e039a994]{width:auto}form.form-container1 .label-value input[type=radio][data-v-e039a994]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-e039a994]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-e039a994]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-e039a994]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-e039a994]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-e039a994]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-e039a994]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-e039a994]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-e039a994]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-e039a994]{color:#f9ad1e}form.form-container1 .label-flex[data-v-e039a994]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-e039a994]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-e039a994]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-e039a994]{width:100px}table.page-table th.checkbox[data-v-e039a994]{width:50px;text-align:center}table.page-table th.setting[data-v-e039a994]{width:100px;text-align:center}table.page-table thead[data-v-e039a994]{color:#909399}table.page-table thead tr[data-v-e039a994]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-e039a994]{padding:10px 16px}table.page-table tbody tr[data-v-e039a994]:hover{background-color:#eeee}table.page-table tbody tr[data-v-e039a994]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-e039a994]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-e039a994]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-e039a994]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-e039a994]{width:100px}table.popups-table th.checkbox[data-v-e039a994]{width:50px;text-align:center}table.popups-table th.setting[data-v-e039a994]{width:100px;text-align:center}table.popups-table thead[data-v-e039a994]{color:#eee}table.popups-table thead tr[data-v-e039a994]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-e039a994]{padding:10px 16px}table.popups-table tbody tr[data-v-e039a994]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-e039a994]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-e039a994]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-e039a994]{width:100%}header.header-desktop[data-v-e039a994]{display:block}header.header-mobile[data-v-e039a994]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-e039a994]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-e039a994]{width:100%;height:100%}header.header-mobile button svg path[data-v-e039a994]{fill:#fff}nav.sidebar[data-v-e039a994]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-e039a994]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-e039a994]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-e039a994]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-e039a994]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-e039a994]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-e039a994]{color:#fff}nav.sidebar .container .children[data-v-e039a994]{padding-left:30px}@-moz-keyframes tada-e039a994{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-e039a994{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-e039a994{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-e039a994{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-e039a994]{animation:dialogEnter-e039a994 .3s linear forwards}.dialog-leave-active[data-v-e039a994]{animation:dialogLeave-e039a994 .3s linear forwards}@keyframes dialogEnter-e039a994{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-e039a994{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-e039a994]{animation:dialogEnter-e039a994 .2s linear forwards}.dialog1-leave-active[data-v-e039a994]{animation:dialogLeave-e039a994 .2s linear forwards}@keyframes rotateEnter-e039a994{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-e039a994]{animation:rotateEnter-e039a994 .7s;position:relative}.rotate-leave-active[data-v-e039a994]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-e039a994{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-e039a994{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-e039a994]{animation:slideOutTop-e039a994 .5s linear forwards}.slide-top-leave-active[data-v-e039a994],.slide-bottom-enter-active[data-v-e039a994]{animation:slideOutBottom-e039a994 .5s linear forwards}@keyframes slideInLeft-e039a994{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-e039a994{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-e039a994]{animation:slideInLeft-e039a994 .3s linear forwards}.slide-left-leave-active[data-v-e039a994]{animation:slideInRight-e039a994 .3s linear forwards}@keyframes slideOutLeft-e039a994{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-e039a994{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-e039a994]{animation:slideOutLeft-e039a994 .3s linear forwards}.slide-right-leave-active[data-v-e039a994]{animation:slideOutRight-e039a994 .3s linear forwards}@keyframes bganimation-e039a994{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-e039a994{0%{height:0}to{height:100px}}@keyframes fadeEnd-e039a994{0%{height:100%}to{height:0}}.fade-enter-active[data-v-e039a994]{animation:fadeStart-e039a994 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-e039a994]{animation:fadeEnd-e039a994 .1s linear forwards;overflow:hidden}.disk[data-v-e039a994]{line-height:14px;color:#000c;margin-bottom:13px}.disk>span.title[data-v-e039a994]{display:inline-block;font-size:12px;font-weight:500;margin-bottom:6px}.disk>div.item[data-v-e039a994]{border-radius:8px;background:#f2efee;padding:6px 8px;margin-bottom:4px}.disk>div.item>span[data-v-e039a994]{display:inline-block;font-size:12px;font-weight:600;margin-bottom:4px}.disk>div.item>.not-progress>span[data-v-e039a994]{font-size:12px}.disk>div.item>.not-progress>span.btn[data-v-e039a994]{cursor:pointer;color:#297ff3}.disk>div.item>div[data-v-e039a994]{height:22px;display:flex;align-items:center;justify-items:center}.disk>div.item>div>.progress[data-v-e039a994]{position:relative;flex:1;border-radius:6px;background:rgba(0,0,0,.04);height:14px}.disk>div.item>div>.progress>div[data-v-e039a994]{border-radius:6px;background:rgb(0,0,0);height:100%}.disk>div.item>div>.progress>span[data-v-e039a994]{display:inline-block;width:100%;position:absolute;top:0;left:0;color:#000c;text-align:center;font-size:20px;transform:scale(.7);font-size:12px}.disk>div.item>div>.button[data-v-e039a994]{display:inline-block;text-align:right}.disk>div.item>div>.button>span.btn[data-v-e039a994]{display:flex;align-items:center;border-radius:12px;background:rgba(0,0,0,.04);color:#0009;font-size:12px;font-weight:600;padding:4px 10px;cursor:pointer;line-height:12px;transform:scale(.8)}.disk>div.item>div>.button>span.btn>img[data-v-e039a994]{margin-right:2px;transform:scale(.8)}.disk>div.item>div>.button>img[data-v-e039a994]{cursor:pointer;width:16px;margin-left:6px}.tooltip-trigger[data-v-e039a994]{flex:none;cursor:help}.tooltip-trigger[data-v-e039a994]{position:relative;display:inline-block;cursor:help;margin-right:6px;margin-left:10px}.tooltip-trigger .tooltip-text[data-v-e039a994]{visibility:visible;position:absolute;padding:.5rem 1rem;background-color:#555;color:#fff;text-align:center;border-radius:6px;opacity:0;transition:opacity .6s}.tooltip-trigger .tooltip-text span[data-v-e039a994]{color:#fff}.tooltip-trigger .tooltip-text .disk_dir_tip[data-v-e039a994]{font-size:12px;min-width:15rem;display:inline-block}.tooltip-trigger:hover .tooltip-text[data-v-e039a994]{visibility:visible;opacity:1}.tooltip-top[data-v-e039a994]{bottom:100%;left:50%;margin-bottom:5px;transform:translate(-50%)}.tooltip-top[data-v-e039a994]:after{content:"";position:absolute;top:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:#555 transparent transparent transparent}.tooltip-bottom[data-v-e039a994]:after{content:"";position:absolute;bottom:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:transparent transparent #555 transparent}@keyframes bganimation-580b5628{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes rotateEnter-580b5628{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}@keyframes turns-580b5628{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}@keyframes slideInLeft-580b5628{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-580b5628{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-580b5628]{animation:slideInLeft-580b5628 .3s linear forwards}.slide-left-leave-active[data-v-580b5628]{animation:slideInRight-580b5628 .3s linear forwards}@keyframes slideOutLeft-580b5628{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-580b5628{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-580b5628]{animation:slideOutLeft-580b5628 .3s linear forwards}.slide-right-leave-active[data-v-580b5628]{animation:slideOutRight-580b5628 .3s linear forwards}.rotate-enter-active[data-v-580b5628]{animation:rotateEnter-580b5628 .7s;position:relative}.rotate-leave-active[data-v-580b5628]{opacity:0;display:none;position:relative;z-index:-999}.app-container[data-v-580b5628]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-580b5628]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-580b5628]{color:#f9ad1e}.notice_info li[data-v-580b5628]{font-size:14px;list-style:revert}.text-container[data-v-580b5628]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-580b5628]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-580b5628]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-580b5628]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-580b5628]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-580b5628]{width:100%}.text-container .text-container_item p.info-desc[data-v-580b5628]{width:100%;color:#999;font-size:14px}.page-container[data-v-580b5628]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-580b5628]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-580b5628]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-580b5628]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-580b5628],.page-container .page-flex .page-sidebar a[data-v-580b5628]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-580b5628]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-580b5628]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-580b5628]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-580b5628]{border-radius:0;padding:1rem}ul.ul-container[data-v-580b5628]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-580b5628]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-580b5628]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-580b5628]{width:100%}form.form-container[data-v-580b5628]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-580b5628]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-580b5628]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-580b5628]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-580b5628]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-580b5628],form.form-container .label-value select[data-v-580b5628]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-580b5628]:focus,form.form-container .label-value select[data-v-580b5628]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-580b5628]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-580b5628]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-580b5628],form.form-container .label-value input[type=radio][data-v-580b5628]{width:auto}form.form-container .label-value input[type=radio][data-v-580b5628]{margin:0 4px 0 0}form.form-container .label-value input[data-v-580b5628]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-580b5628]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-580b5628]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-580b5628]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-580b5628]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-580b5628]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-580b5628]:hover{background-color:#747474}form.form-container .label-msg[data-v-580b5628]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-580b5628]{color:#f9ad1e}form.form-container .label-flex[data-v-580b5628]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-580b5628]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-580b5628]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-580b5628]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-580b5628]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-580b5628]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-580b5628]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-580b5628],form.form-container1 .label-value select[data-v-580b5628]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-580b5628]:focus,form.form-container1 .label-value select[data-v-580b5628]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-580b5628]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-580b5628],form.form-container1 .label-value input[type=radio][data-v-580b5628]{width:auto}form.form-container1 .label-value input[type=radio][data-v-580b5628]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-580b5628]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-580b5628]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-580b5628]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-580b5628]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-580b5628]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-580b5628]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-580b5628]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-580b5628]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-580b5628]{color:#f9ad1e}form.form-container1 .label-flex[data-v-580b5628]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-580b5628]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-580b5628]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-580b5628]{width:100px}table.page-table th.checkbox[data-v-580b5628]{width:50px;text-align:center}table.page-table th.setting[data-v-580b5628]{width:100px;text-align:center}table.page-table thead[data-v-580b5628]{color:#909399}table.page-table thead tr[data-v-580b5628]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-580b5628]{padding:10px 16px}table.page-table tbody tr[data-v-580b5628]:hover{background-color:#eeee}table.page-table tbody tr[data-v-580b5628]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-580b5628]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-580b5628]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-580b5628]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-580b5628]{width:100px}table.popups-table th.checkbox[data-v-580b5628]{width:50px;text-align:center}table.popups-table th.setting[data-v-580b5628]{width:100px;text-align:center}table.popups-table thead[data-v-580b5628]{color:#eee}table.popups-table thead tr[data-v-580b5628]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-580b5628]{padding:10px 16px}table.popups-table tbody tr[data-v-580b5628]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-580b5628]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-580b5628]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-580b5628]{width:100%}header.header-desktop[data-v-580b5628]{display:block}header.header-mobile[data-v-580b5628]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-580b5628]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-580b5628]{width:100%;height:100%}header.header-mobile button svg path[data-v-580b5628]{fill:#fff}nav.sidebar[data-v-580b5628]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-580b5628]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-580b5628]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-580b5628]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-580b5628]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-580b5628]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-580b5628]{color:#fff}nav.sidebar .container .children[data-v-580b5628]{padding-left:30px}@-moz-keyframes tada-580b5628{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-580b5628{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-580b5628{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-580b5628{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-580b5628]{animation:dialogEnter-580b5628 .3s linear forwards}.dialog-leave-active[data-v-580b5628]{animation:dialogLeave-580b5628 .3s linear forwards}@keyframes dialogEnter-580b5628{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-580b5628{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-580b5628]{animation:dialogEnter-580b5628 .2s linear forwards}.dialog1-leave-active[data-v-580b5628]{animation:dialogLeave-580b5628 .2s linear forwards}@keyframes rotateEnter-580b5628{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-580b5628]{animation:rotateEnter-580b5628 .7s;position:relative}.rotate-leave-active[data-v-580b5628]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-580b5628{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-580b5628{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-580b5628]{animation:slideOutTop-580b5628 .5s linear forwards}.slide-top-leave-active[data-v-580b5628],.slide-bottom-enter-active[data-v-580b5628]{animation:slideOutBottom-580b5628 .5s linear forwards}@keyframes slideInLeft-580b5628{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-580b5628{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-580b5628]{animation:slideInLeft-580b5628 .3s linear forwards}.slide-left-leave-active[data-v-580b5628]{animation:slideInRight-580b5628 .3s linear forwards}@keyframes slideOutLeft-580b5628{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-580b5628{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-580b5628]{animation:slideOutLeft-580b5628 .3s linear forwards}.slide-right-leave-active[data-v-580b5628]{animation:slideOutRight-580b5628 .3s linear forwards}@keyframes bganimation-580b5628{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-580b5628{0%{height:0}to{height:100px}}@keyframes fadeEnd-580b5628{0%{height:100%}to{height:0}}.fade-enter-active[data-v-580b5628]{animation:fadeStart-580b5628 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-580b5628]{animation:fadeEnd-580b5628 .1s linear forwards;overflow:hidden}.app-container_status-label_bg[data-v-580b5628]{flex:0 0 128px;width:128px;height:100%;display:flex;background:#f3f3f3;align-items:center;padding:10px;margin-right:10px;transition:.3s;border-radius:4px;opacity:.8;background:#f2efee}.app-container_status-label_bg .app-container_status-label_text[data-v-580b5628]{margin-left:6px;font-size:20px;transform:scale(.5);line-height:22px;text-align:left;transform-origin:left}.app-container_status-label_bg .app-container_status-label_text .text_status[data-v-580b5628]{color:#999}.app-container_status-label_bg .app-container_status-label_text .text_style[data-v-580b5628]{margin:6px 0}.app-container_status-label_bg .app-container_status-label_text .text_style.close[data-v-580b5628]{color:#999}.app-container_status-label_bg .app-container_status-label_text .text_info[data-v-580b5628]{font-weight:700;font-size:14px}@keyframes bganimation-92f8fb6c{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes rotateEnter-92f8fb6c{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}@keyframes turns-92f8fb6c{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}@keyframes slideInLeft-92f8fb6c{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-92f8fb6c{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-92f8fb6c]{animation:slideInLeft-92f8fb6c .3s linear forwards}.slide-left-leave-active[data-v-92f8fb6c]{animation:slideInRight-92f8fb6c .3s linear forwards}@keyframes slideOutLeft-92f8fb6c{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-92f8fb6c{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-92f8fb6c]{animation:slideOutLeft-92f8fb6c .3s linear forwards}.slide-right-leave-active[data-v-92f8fb6c]{animation:slideOutRight-92f8fb6c .3s linear forwards}.rotate-enter-active[data-v-92f8fb6c]{animation:rotateEnter-92f8fb6c .7s;position:relative}.rotate-leave-active[data-v-92f8fb6c]{opacity:0;display:none;position:relative;z-index:-999}.app-container[data-v-92f8fb6c]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-92f8fb6c]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-92f8fb6c]{color:#f9ad1e}.notice_info li[data-v-92f8fb6c]{font-size:14px;list-style:revert}.text-container[data-v-92f8fb6c]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-92f8fb6c]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-92f8fb6c]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-92f8fb6c]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-92f8fb6c]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-92f8fb6c]{width:100%}.text-container .text-container_item p.info-desc[data-v-92f8fb6c]{width:100%;color:#999;font-size:14px}.page-container[data-v-92f8fb6c]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-92f8fb6c]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-92f8fb6c]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-92f8fb6c]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-92f8fb6c],.page-container .page-flex .page-sidebar a[data-v-92f8fb6c]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-92f8fb6c]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-92f8fb6c]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-92f8fb6c]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-92f8fb6c]{border-radius:0;padding:1rem}ul.ul-container[data-v-92f8fb6c]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-92f8fb6c]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-92f8fb6c]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-92f8fb6c]{width:100%}form.form-container[data-v-92f8fb6c]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-92f8fb6c]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-92f8fb6c]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-92f8fb6c]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-92f8fb6c]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-92f8fb6c],form.form-container .label-value select[data-v-92f8fb6c]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-92f8fb6c]:focus,form.form-container .label-value select[data-v-92f8fb6c]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-92f8fb6c]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-92f8fb6c]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-92f8fb6c],form.form-container .label-value input[type=radio][data-v-92f8fb6c]{width:auto}form.form-container .label-value input[type=radio][data-v-92f8fb6c]{margin:0 4px 0 0}form.form-container .label-value input[data-v-92f8fb6c]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-92f8fb6c]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-92f8fb6c]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-92f8fb6c]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-92f8fb6c]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-92f8fb6c]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-92f8fb6c]:hover{background-color:#747474}form.form-container .label-msg[data-v-92f8fb6c]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-92f8fb6c]{color:#f9ad1e}form.form-container .label-flex[data-v-92f8fb6c]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-92f8fb6c]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-92f8fb6c]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-92f8fb6c]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-92f8fb6c]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-92f8fb6c]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-92f8fb6c]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-92f8fb6c],form.form-container1 .label-value select[data-v-92f8fb6c]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-92f8fb6c]:focus,form.form-container1 .label-value select[data-v-92f8fb6c]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-92f8fb6c]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-92f8fb6c],form.form-container1 .label-value input[type=radio][data-v-92f8fb6c]{width:auto}form.form-container1 .label-value input[type=radio][data-v-92f8fb6c]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-92f8fb6c]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-92f8fb6c]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-92f8fb6c]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-92f8fb6c]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-92f8fb6c]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-92f8fb6c]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-92f8fb6c]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-92f8fb6c]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-92f8fb6c]{color:#f9ad1e}form.form-container1 .label-flex[data-v-92f8fb6c]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-92f8fb6c]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-92f8fb6c]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-92f8fb6c]{width:100px}table.page-table th.checkbox[data-v-92f8fb6c]{width:50px;text-align:center}table.page-table th.setting[data-v-92f8fb6c]{width:100px;text-align:center}table.page-table thead[data-v-92f8fb6c]{color:#909399}table.page-table thead tr[data-v-92f8fb6c]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-92f8fb6c]{padding:10px 16px}table.page-table tbody tr[data-v-92f8fb6c]:hover{background-color:#eeee}table.page-table tbody tr[data-v-92f8fb6c]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-92f8fb6c]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-92f8fb6c]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-92f8fb6c]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-92f8fb6c]{width:100px}table.popups-table th.checkbox[data-v-92f8fb6c]{width:50px;text-align:center}table.popups-table th.setting[data-v-92f8fb6c]{width:100px;text-align:center}table.popups-table thead[data-v-92f8fb6c]{color:#eee}table.popups-table thead tr[data-v-92f8fb6c]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-92f8fb6c]{padding:10px 16px}table.popups-table tbody tr[data-v-92f8fb6c]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-92f8fb6c]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-92f8fb6c]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-92f8fb6c]{width:100%}header.header-desktop[data-v-92f8fb6c]{display:block}header.header-mobile[data-v-92f8fb6c]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-92f8fb6c]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-92f8fb6c]{width:100%;height:100%}header.header-mobile button svg path[data-v-92f8fb6c]{fill:#fff}nav.sidebar[data-v-92f8fb6c]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-92f8fb6c]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-92f8fb6c]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-92f8fb6c]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-92f8fb6c]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-92f8fb6c]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-92f8fb6c]{color:#fff}nav.sidebar .container .children[data-v-92f8fb6c]{padding-left:30px}@-moz-keyframes tada-92f8fb6c{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-92f8fb6c{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-92f8fb6c{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-92f8fb6c{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-92f8fb6c]{animation:dialogEnter-92f8fb6c .3s linear forwards}.dialog-leave-active[data-v-92f8fb6c]{animation:dialogLeave-92f8fb6c .3s linear forwards}@keyframes dialogEnter-92f8fb6c{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-92f8fb6c{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-92f8fb6c]{animation:dialogEnter-92f8fb6c .2s linear forwards}.dialog1-leave-active[data-v-92f8fb6c]{animation:dialogLeave-92f8fb6c .2s linear forwards}@keyframes rotateEnter-92f8fb6c{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-92f8fb6c]{animation:rotateEnter-92f8fb6c .7s;position:relative}.rotate-leave-active[data-v-92f8fb6c]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-92f8fb6c{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-92f8fb6c{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-92f8fb6c]{animation:slideOutTop-92f8fb6c .5s linear forwards}.slide-top-leave-active[data-v-92f8fb6c],.slide-bottom-enter-active[data-v-92f8fb6c]{animation:slideOutBottom-92f8fb6c .5s linear forwards}@keyframes slideInLeft-92f8fb6c{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-92f8fb6c{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-92f8fb6c]{animation:slideInLeft-92f8fb6c .3s linear forwards}.slide-left-leave-active[data-v-92f8fb6c]{animation:slideInRight-92f8fb6c .3s linear forwards}@keyframes slideOutLeft-92f8fb6c{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-92f8fb6c{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-92f8fb6c]{animation:slideOutLeft-92f8fb6c .3s linear forwards}.slide-right-leave-active[data-v-92f8fb6c]{animation:slideOutRight-92f8fb6c .3s linear forwards}@keyframes bganimation-92f8fb6c{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-92f8fb6c{0%{height:0}to{height:100px}}@keyframes fadeEnd-92f8fb6c{0%{height:100%}to{height:0}}.fade-enter-active[data-v-92f8fb6c]{animation:fadeStart-92f8fb6c .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-92f8fb6c]{animation:fadeEnd-92f8fb6c .1s linear forwards;overflow:hidden}.app-interfaces[data-v-92f8fb6c]{width:100%;height:58px;display:flex;flex-wrap:nowrap;overflow:hidden;position:relative}.app-interfaces a[data-v-92f8fb6c]{list-style:none;text-decoration:none}.app-interfaces img.btn-f[data-v-92f8fb6c]{position:absolute;left:-15px;top:-10px;cursor:pointer;opacity:0;transition:.3s;z-index:1}.app-interfaces img.btn-f[data-v-92f8fb6c]:hover{opacity:1;transition:.3s}.app-interfaces img.btn-r[data-v-92f8fb6c]{position:absolute;right:-15px;top:-10px;transform:rotateY(180deg);cursor:pointer;opacity:0;transition:.3s;z-index:1}.app-interfaces img.btn-r[data-v-92f8fb6c]:hover{opacity:1;transition:.3s}@keyframes bganimation-2244abae{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes rotateEnter-2244abae{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}@keyframes turns-2244abae{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}@keyframes slideInLeft-2244abae{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-2244abae{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-2244abae]{animation:slideInLeft-2244abae .3s linear forwards}.slide-left-leave-active[data-v-2244abae]{animation:slideInRight-2244abae .3s linear forwards}@keyframes slideOutLeft-2244abae{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-2244abae{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-2244abae]{animation:slideOutLeft-2244abae .3s linear forwards}.slide-right-leave-active[data-v-2244abae]{animation:slideOutRight-2244abae .3s linear forwards}.rotate-enter-active[data-v-2244abae]{animation:rotateEnter-2244abae .7s;position:relative}.rotate-leave-active[data-v-2244abae]{opacity:0;display:none;position:relative;z-index:-999}.app-container[data-v-2244abae]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-2244abae]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-2244abae]{color:#f9ad1e}.notice_info li[data-v-2244abae]{font-size:14px;list-style:revert}.text-container[data-v-2244abae]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-2244abae]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-2244abae]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-2244abae]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-2244abae]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-2244abae]{width:100%}.text-container .text-container_item p.info-desc[data-v-2244abae]{width:100%;color:#999;font-size:14px}.page-container[data-v-2244abae]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-2244abae]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-2244abae]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-2244abae]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-2244abae],.page-container .page-flex .page-sidebar a[data-v-2244abae]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-2244abae]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-2244abae]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-2244abae]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-2244abae]{border-radius:0;padding:1rem}ul.ul-container[data-v-2244abae]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-2244abae]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-2244abae]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-2244abae]{width:100%}form.form-container[data-v-2244abae]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-2244abae]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-2244abae]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-2244abae]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-2244abae]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-2244abae],form.form-container .label-value select[data-v-2244abae]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-2244abae]:focus,form.form-container .label-value select[data-v-2244abae]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-2244abae]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-2244abae]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-2244abae],form.form-container .label-value input[type=radio][data-v-2244abae]{width:auto}form.form-container .label-value input[type=radio][data-v-2244abae]{margin:0 4px 0 0}form.form-container .label-value input[data-v-2244abae]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-2244abae]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-2244abae]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-2244abae]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-2244abae]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-2244abae]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-2244abae]:hover{background-color:#747474}form.form-container .label-msg[data-v-2244abae]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-2244abae]{color:#f9ad1e}form.form-container .label-flex[data-v-2244abae]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-2244abae]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-2244abae]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-2244abae]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-2244abae]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-2244abae]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-2244abae]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-2244abae],form.form-container1 .label-value select[data-v-2244abae]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-2244abae]:focus,form.form-container1 .label-value select[data-v-2244abae]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-2244abae]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-2244abae],form.form-container1 .label-value input[type=radio][data-v-2244abae]{width:auto}form.form-container1 .label-value input[type=radio][data-v-2244abae]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-2244abae]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-2244abae]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-2244abae]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-2244abae]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-2244abae]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-2244abae]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-2244abae]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-2244abae]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-2244abae]{color:#f9ad1e}form.form-container1 .label-flex[data-v-2244abae]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-2244abae]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-2244abae]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-2244abae]{width:100px}table.page-table th.checkbox[data-v-2244abae]{width:50px;text-align:center}table.page-table th.setting[data-v-2244abae]{width:100px;text-align:center}table.page-table thead[data-v-2244abae]{color:#909399}table.page-table thead tr[data-v-2244abae]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-2244abae]{padding:10px 16px}table.page-table tbody tr[data-v-2244abae]:hover{background-color:#eeee}table.page-table tbody tr[data-v-2244abae]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-2244abae]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-2244abae]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-2244abae]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-2244abae]{width:100px}table.popups-table th.checkbox[data-v-2244abae]{width:50px;text-align:center}table.popups-table th.setting[data-v-2244abae]{width:100px;text-align:center}table.popups-table thead[data-v-2244abae]{color:#eee}table.popups-table thead tr[data-v-2244abae]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-2244abae]{padding:10px 16px}table.popups-table tbody tr[data-v-2244abae]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-2244abae]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-2244abae]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-2244abae]{width:100%}header.header-desktop[data-v-2244abae]{display:block}header.header-mobile[data-v-2244abae]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-2244abae]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-2244abae]{width:100%;height:100%}header.header-mobile button svg path[data-v-2244abae]{fill:#fff}nav.sidebar[data-v-2244abae]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-2244abae]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-2244abae]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-2244abae]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-2244abae]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-2244abae]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-2244abae]{color:#fff}nav.sidebar .container .children[data-v-2244abae]{padding-left:30px}@-moz-keyframes tada-2244abae{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-2244abae{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-2244abae{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-2244abae{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-2244abae]{animation:dialogEnter-2244abae .3s linear forwards}.dialog-leave-active[data-v-2244abae]{animation:dialogLeave-2244abae .3s linear forwards}@keyframes dialogEnter-2244abae{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-2244abae{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-2244abae]{animation:dialogEnter-2244abae .2s linear forwards}.dialog1-leave-active[data-v-2244abae]{animation:dialogLeave-2244abae .2s linear forwards}@keyframes rotateEnter-2244abae{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-2244abae]{animation:rotateEnter-2244abae .7s;position:relative}.rotate-leave-active[data-v-2244abae]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-2244abae{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-2244abae{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-2244abae]{animation:slideOutTop-2244abae .5s linear forwards}.slide-top-leave-active[data-v-2244abae],.slide-bottom-enter-active[data-v-2244abae]{animation:slideOutBottom-2244abae .5s linear forwards}@keyframes slideInLeft-2244abae{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-2244abae{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-2244abae]{animation:slideInLeft-2244abae .3s linear forwards}.slide-left-leave-active[data-v-2244abae]{animation:slideInRight-2244abae .3s linear forwards}@keyframes slideOutLeft-2244abae{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-2244abae{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-2244abae]{animation:slideOutLeft-2244abae .3s linear forwards}.slide-right-leave-active[data-v-2244abae]{animation:slideOutRight-2244abae .3s linear forwards}@keyframes bganimation-2244abae{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-2244abae{0%{height:0}to{height:100px}}@keyframes fadeEnd-2244abae{0%{height:100%}to{height:0}}.fade-enter-active[data-v-2244abae]{animation:fadeStart-2244abae .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-2244abae]{animation:fadeEnd-2244abae .1s linear forwards;overflow:hidden}.status-card[data-v-2244abae]{overflow-x:hidden;white-space:nowrap}@keyframes bganimation-3f470552{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes rotateEnter-3f470552{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}@keyframes turns-3f470552{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}@keyframes slideInLeft-3f470552{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-3f470552{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-3f470552]{animation:slideInLeft-3f470552 .3s linear forwards}.slide-left-leave-active[data-v-3f470552]{animation:slideInRight-3f470552 .3s linear forwards}@keyframes slideOutLeft-3f470552{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-3f470552{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-3f470552]{animation:slideOutLeft-3f470552 .3s linear forwards}.slide-right-leave-active[data-v-3f470552]{animation:slideOutRight-3f470552 .3s linear forwards}.rotate-enter-active[data-v-3f470552]{animation:rotateEnter-3f470552 .7s;position:relative}.rotate-leave-active[data-v-3f470552]{opacity:0;display:none;position:relative;z-index:-999}.app-container[data-v-3f470552]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-3f470552]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-3f470552]{color:#f9ad1e}.notice_info li[data-v-3f470552]{font-size:14px;list-style:revert}.text-container[data-v-3f470552]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-3f470552]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-3f470552]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-3f470552]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-3f470552]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-3f470552]{width:100%}.text-container .text-container_item p.info-desc[data-v-3f470552]{width:100%;color:#999;font-size:14px}.page-container[data-v-3f470552]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-3f470552]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-3f470552]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-3f470552]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-3f470552],.page-container .page-flex .page-sidebar a[data-v-3f470552]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-3f470552]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-3f470552]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-3f470552]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-3f470552]{border-radius:0;padding:1rem}ul.ul-container[data-v-3f470552]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-3f470552]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-3f470552]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-3f470552]{width:100%}form.form-container[data-v-3f470552]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-3f470552]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-3f470552]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-3f470552]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-3f470552]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-3f470552],form.form-container .label-value select[data-v-3f470552]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-3f470552]:focus,form.form-container .label-value select[data-v-3f470552]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-3f470552]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-3f470552]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-3f470552],form.form-container .label-value input[type=radio][data-v-3f470552]{width:auto}form.form-container .label-value input[type=radio][data-v-3f470552]{margin:0 4px 0 0}form.form-container .label-value input[data-v-3f470552]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-3f470552]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-3f470552]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-3f470552]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-3f470552]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-3f470552]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-3f470552]:hover{background-color:#747474}form.form-container .label-msg[data-v-3f470552]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-3f470552]{color:#f9ad1e}form.form-container .label-flex[data-v-3f470552]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-3f470552]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-3f470552]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-3f470552]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-3f470552]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-3f470552]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-3f470552]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-3f470552],form.form-container1 .label-value select[data-v-3f470552]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-3f470552]:focus,form.form-container1 .label-value select[data-v-3f470552]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-3f470552]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-3f470552],form.form-container1 .label-value input[type=radio][data-v-3f470552]{width:auto}form.form-container1 .label-value input[type=radio][data-v-3f470552]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-3f470552]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-3f470552]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-3f470552]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-3f470552]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-3f470552]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-3f470552]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-3f470552]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-3f470552]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-3f470552]{color:#f9ad1e}form.form-container1 .label-flex[data-v-3f470552]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-3f470552]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-3f470552]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-3f470552]{width:100px}table.page-table th.checkbox[data-v-3f470552]{width:50px;text-align:center}table.page-table th.setting[data-v-3f470552]{width:100px;text-align:center}table.page-table thead[data-v-3f470552]{color:#909399}table.page-table thead tr[data-v-3f470552]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-3f470552]{padding:10px 16px}table.page-table tbody tr[data-v-3f470552]:hover{background-color:#eeee}table.page-table tbody tr[data-v-3f470552]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-3f470552]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-3f470552]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-3f470552]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-3f470552]{width:100px}table.popups-table th.checkbox[data-v-3f470552]{width:50px;text-align:center}table.popups-table th.setting[data-v-3f470552]{width:100px;text-align:center}table.popups-table thead[data-v-3f470552]{color:#eee}table.popups-table thead tr[data-v-3f470552]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-3f470552]{padding:10px 16px}table.popups-table tbody tr[data-v-3f470552]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-3f470552]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-3f470552]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-3f470552]{width:100%}header.header-desktop[data-v-3f470552]{display:block}header.header-mobile[data-v-3f470552]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-3f470552]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-3f470552]{width:100%;height:100%}header.header-mobile button svg path[data-v-3f470552]{fill:#fff}nav.sidebar[data-v-3f470552]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-3f470552]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-3f470552]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-3f470552]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-3f470552]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-3f470552]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-3f470552]{color:#fff}nav.sidebar .container .children[data-v-3f470552]{padding-left:30px}@-moz-keyframes tada-3f470552{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-3f470552{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-3f470552{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-3f470552{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-3f470552]{animation:dialogEnter-3f470552 .3s linear forwards}.dialog-leave-active[data-v-3f470552]{animation:dialogLeave-3f470552 .3s linear forwards}@keyframes dialogEnter-3f470552{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-3f470552{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-3f470552]{animation:dialogEnter-3f470552 .2s linear forwards}.dialog1-leave-active[data-v-3f470552]{animation:dialogLeave-3f470552 .2s linear forwards}@keyframes rotateEnter-3f470552{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-3f470552]{animation:rotateEnter-3f470552 .7s;position:relative}.rotate-leave-active[data-v-3f470552]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-3f470552{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-3f470552{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-3f470552]{animation:slideOutTop-3f470552 .5s linear forwards}.slide-top-leave-active[data-v-3f470552],.slide-bottom-enter-active[data-v-3f470552]{animation:slideOutBottom-3f470552 .5s linear forwards}@keyframes slideInLeft-3f470552{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-3f470552{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-3f470552]{animation:slideInLeft-3f470552 .3s linear forwards}.slide-left-leave-active[data-v-3f470552]{animation:slideInRight-3f470552 .3s linear forwards}@keyframes slideOutLeft-3f470552{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-3f470552{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-3f470552]{animation:slideOutLeft-3f470552 .3s linear forwards}.slide-right-leave-active[data-v-3f470552]{animation:slideOutRight-3f470552 .3s linear forwards}@keyframes bganimation-3f470552{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-3f470552{0%{height:0}to{height:100px}}@keyframes fadeEnd-3f470552{0%{height:100%}to{height:0}}.fade-enter-active[data-v-3f470552]{animation:fadeStart-3f470552 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-3f470552]{animation:fadeEnd-3f470552 .1s linear forwards;overflow:hidden}.disk-info[data-v-3f470552]{padding:4px 20px}.gauge[data-v-3f470552]{width:78px;height:78px;text-align:center;display:flex;justify-content:center;align-items:center}.chart[data-v-3f470552]{display:flex;justify-content:space-between;padding:0 12px;margin:0 auto}.info[data-v-3f470552]{padding-top:14px}.info>div[data-v-3f470552]{display:flex;align-items:center;margin-bottom:3px}.info>div>span[data-v-3f470552]:first-of-type{color:#000c;font-size:12px;font-weight:600}.info>div>span[data-v-3f470552]:last-of-type{color:#000c;font-size:12px}.width-50[data-v-3f470552]{display:inline-block;vertical-align:top;width:50%}@media screen and (max-width: 668px){.responsive[data-v-3f470552]{width:100%}}@keyframes bganimation-61b6e601{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes rotateEnter-61b6e601{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}@keyframes turns-61b6e601{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}@keyframes slideInLeft-61b6e601{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-61b6e601{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-61b6e601]{animation:slideInLeft-61b6e601 .3s linear forwards}.slide-left-leave-active[data-v-61b6e601]{animation:slideInRight-61b6e601 .3s linear forwards}@keyframes slideOutLeft-61b6e601{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-61b6e601{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-61b6e601]{animation:slideOutLeft-61b6e601 .3s linear forwards}.slide-right-leave-active[data-v-61b6e601]{animation:slideOutRight-61b6e601 .3s linear forwards}.rotate-enter-active[data-v-61b6e601]{animation:rotateEnter-61b6e601 .7s;position:relative}.rotate-leave-active[data-v-61b6e601]{opacity:0;display:none;position:relative;z-index:-999}.app-container[data-v-61b6e601]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-61b6e601]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-61b6e601]{color:#f9ad1e}.notice_info li[data-v-61b6e601]{font-size:14px;list-style:revert}.text-container[data-v-61b6e601]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-61b6e601]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-61b6e601]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-61b6e601]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-61b6e601]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-61b6e601]{width:100%}.text-container .text-container_item p.info-desc[data-v-61b6e601]{width:100%;color:#999;font-size:14px}.page-container[data-v-61b6e601]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-61b6e601]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-61b6e601]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-61b6e601]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-61b6e601],.page-container .page-flex .page-sidebar a[data-v-61b6e601]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-61b6e601]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-61b6e601]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-61b6e601]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-61b6e601]{border-radius:0;padding:1rem}ul.ul-container[data-v-61b6e601]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-61b6e601]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-61b6e601]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-61b6e601]{width:100%}form.form-container[data-v-61b6e601]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-61b6e601]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-61b6e601]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-61b6e601]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-61b6e601]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-61b6e601],form.form-container .label-value select[data-v-61b6e601]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-61b6e601]:focus,form.form-container .label-value select[data-v-61b6e601]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-61b6e601]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-61b6e601]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-61b6e601],form.form-container .label-value input[type=radio][data-v-61b6e601]{width:auto}form.form-container .label-value input[type=radio][data-v-61b6e601]{margin:0 4px 0 0}form.form-container .label-value input[data-v-61b6e601]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-61b6e601]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-61b6e601]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-61b6e601]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-61b6e601]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-61b6e601]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-61b6e601]:hover{background-color:#747474}form.form-container .label-msg[data-v-61b6e601]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-61b6e601]{color:#f9ad1e}form.form-container .label-flex[data-v-61b6e601]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-61b6e601]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-61b6e601]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-61b6e601]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-61b6e601]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-61b6e601]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-61b6e601]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-61b6e601],form.form-container1 .label-value select[data-v-61b6e601]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-61b6e601]:focus,form.form-container1 .label-value select[data-v-61b6e601]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-61b6e601]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-61b6e601],form.form-container1 .label-value input[type=radio][data-v-61b6e601]{width:auto}form.form-container1 .label-value input[type=radio][data-v-61b6e601]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-61b6e601]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-61b6e601]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-61b6e601]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-61b6e601]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-61b6e601]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-61b6e601]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-61b6e601]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-61b6e601]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-61b6e601]{color:#f9ad1e}form.form-container1 .label-flex[data-v-61b6e601]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-61b6e601]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-61b6e601]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-61b6e601]{width:100px}table.page-table th.checkbox[data-v-61b6e601]{width:50px;text-align:center}table.page-table th.setting[data-v-61b6e601]{width:100px;text-align:center}table.page-table thead[data-v-61b6e601]{color:#909399}table.page-table thead tr[data-v-61b6e601]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-61b6e601]{padding:10px 16px}table.page-table tbody tr[data-v-61b6e601]:hover{background-color:#eeee}table.page-table tbody tr[data-v-61b6e601]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-61b6e601]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-61b6e601]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-61b6e601]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-61b6e601]{width:100px}table.popups-table th.checkbox[data-v-61b6e601]{width:50px;text-align:center}table.popups-table th.setting[data-v-61b6e601]{width:100px;text-align:center}table.popups-table thead[data-v-61b6e601]{color:#eee}table.popups-table thead tr[data-v-61b6e601]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-61b6e601]{padding:10px 16px}table.popups-table tbody tr[data-v-61b6e601]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-61b6e601]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-61b6e601]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-61b6e601]{width:100%}header.header-desktop[data-v-61b6e601]{display:block}header.header-mobile[data-v-61b6e601]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-61b6e601]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-61b6e601]{width:100%;height:100%}header.header-mobile button svg path[data-v-61b6e601]{fill:#fff}nav.sidebar[data-v-61b6e601]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-61b6e601]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-61b6e601]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-61b6e601]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-61b6e601]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-61b6e601]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-61b6e601]{color:#fff}nav.sidebar .container .children[data-v-61b6e601]{padding-left:30px}@-moz-keyframes tada-61b6e601{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-61b6e601{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-61b6e601{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-61b6e601{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-61b6e601]{animation:dialogEnter-61b6e601 .3s linear forwards}.dialog-leave-active[data-v-61b6e601]{animation:dialogLeave-61b6e601 .3s linear forwards}@keyframes dialogEnter-61b6e601{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-61b6e601{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-61b6e601]{animation:dialogEnter-61b6e601 .2s linear forwards}.dialog1-leave-active[data-v-61b6e601]{animation:dialogLeave-61b6e601 .2s linear forwards}@keyframes rotateEnter-61b6e601{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-61b6e601]{animation:rotateEnter-61b6e601 .7s;position:relative}.rotate-leave-active[data-v-61b6e601]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-61b6e601{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-61b6e601{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-61b6e601]{animation:slideOutTop-61b6e601 .5s linear forwards}.slide-top-leave-active[data-v-61b6e601],.slide-bottom-enter-active[data-v-61b6e601]{animation:slideOutBottom-61b6e601 .5s linear forwards}@keyframes slideInLeft-61b6e601{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-61b6e601{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-61b6e601]{animation:slideInLeft-61b6e601 .3s linear forwards}.slide-left-leave-active[data-v-61b6e601]{animation:slideInRight-61b6e601 .3s linear forwards}@keyframes slideOutLeft-61b6e601{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-61b6e601{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-61b6e601]{animation:slideOutLeft-61b6e601 .3s linear forwards}.slide-right-leave-active[data-v-61b6e601]{animation:slideOutRight-61b6e601 .3s linear forwards}@keyframes bganimation-61b6e601{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-61b6e601{0%{height:0}to{height:100px}}@keyframes fadeEnd-61b6e601{0%{height:100%}to{height:0}}.fade-enter-active[data-v-61b6e601]{animation:fadeStart-61b6e601 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-61b6e601]{animation:fadeEnd-61b6e601 .1s linear forwards;overflow:hidden}.app[data-v-61b6e601]{width:20%;padding:4px;height:120px}.app>div[data-v-61b6e601]{border-radius:16px;background:#fff;backdrop-filter:blur(12px);position:relative;width:100%;height:100%;cursor:pointer}.app>div .setting[data-v-61b6e601]{position:absolute;top:6px;right:10px;border-radius:4px;border:1px solid #eaeaea;height:18px;width:18px;display:inline-block;cursor:pointer;display:flex;align-items:center;justify-content:center}.app>div .setting>img[data-v-61b6e601]{width:16px}.app>div>div[data-v-61b6e601]{position:absolute;width:80%;top:50%;left:50%;transform:translate(-50%,-50%)}.app>div>div>img[data-v-61b6e601]{display:block;width:54px;height:54px;margin:0 auto 6px}.app>div>div>span[data-v-61b6e601]{display:inline-block;width:100%;color:#000;text-align:center;font-size:12px}.app>div:hover .app-icon[data-v-61b6e601]{transition:.3s;transform:scale(1.1)}@media screen and (max-width: 668px){.app[data-v-61b6e601]{width:120px;height:126px}}@keyframes bganimation-283b2956{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes rotateEnter-283b2956{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}@keyframes turns-283b2956{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}@keyframes slideInLeft-283b2956{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-283b2956{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-283b2956]{animation:slideInLeft-283b2956 .3s linear forwards}.slide-left-leave-active[data-v-283b2956]{animation:slideInRight-283b2956 .3s linear forwards}@keyframes slideOutLeft-283b2956{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-283b2956{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-283b2956]{animation:slideOutLeft-283b2956 .3s linear forwards}.slide-right-leave-active[data-v-283b2956]{animation:slideOutRight-283b2956 .3s linear forwards}.rotate-enter-active[data-v-283b2956]{animation:rotateEnter-283b2956 .7s;position:relative}.rotate-leave-active[data-v-283b2956]{opacity:0;display:none;position:relative;z-index:-999}.app-container[data-v-283b2956]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-283b2956]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-283b2956]{color:#f9ad1e}.notice_info li[data-v-283b2956]{font-size:14px;list-style:revert}.text-container[data-v-283b2956]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-283b2956]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-283b2956]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-283b2956]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-283b2956]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-283b2956]{width:100%}.text-container .text-container_item p.info-desc[data-v-283b2956]{width:100%;color:#999;font-size:14px}.page-container[data-v-283b2956]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-283b2956]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-283b2956]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-283b2956]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-283b2956],.page-container .page-flex .page-sidebar a[data-v-283b2956]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-283b2956]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-283b2956]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-283b2956]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-283b2956]{border-radius:0;padding:1rem}ul.ul-container[data-v-283b2956]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-283b2956]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-283b2956]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-283b2956]{width:100%}form.form-container[data-v-283b2956]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-283b2956]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-283b2956]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-283b2956]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-283b2956]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-283b2956],form.form-container .label-value select[data-v-283b2956]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-283b2956]:focus,form.form-container .label-value select[data-v-283b2956]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-283b2956]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-283b2956]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-283b2956],form.form-container .label-value input[type=radio][data-v-283b2956]{width:auto}form.form-container .label-value input[type=radio][data-v-283b2956]{margin:0 4px 0 0}form.form-container .label-value input[data-v-283b2956]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-283b2956]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-283b2956]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-283b2956]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-283b2956]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-283b2956]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-283b2956]:hover{background-color:#747474}form.form-container .label-msg[data-v-283b2956]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-283b2956]{color:#f9ad1e}form.form-container .label-flex[data-v-283b2956]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-283b2956]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-283b2956]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-283b2956]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-283b2956]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-283b2956]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-283b2956]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-283b2956],form.form-container1 .label-value select[data-v-283b2956]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-283b2956]:focus,form.form-container1 .label-value select[data-v-283b2956]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-283b2956]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-283b2956],form.form-container1 .label-value input[type=radio][data-v-283b2956]{width:auto}form.form-container1 .label-value input[type=radio][data-v-283b2956]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-283b2956]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-283b2956]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-283b2956]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-283b2956]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-283b2956]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-283b2956]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-283b2956]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-283b2956]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-283b2956]{color:#f9ad1e}form.form-container1 .label-flex[data-v-283b2956]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-283b2956]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-283b2956]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-283b2956]{width:100px}table.page-table th.checkbox[data-v-283b2956]{width:50px;text-align:center}table.page-table th.setting[data-v-283b2956]{width:100px;text-align:center}table.page-table thead[data-v-283b2956]{color:#909399}table.page-table thead tr[data-v-283b2956]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-283b2956]{padding:10px 16px}table.page-table tbody tr[data-v-283b2956]:hover{background-color:#eeee}table.page-table tbody tr[data-v-283b2956]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-283b2956]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-283b2956]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-283b2956]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-283b2956]{width:100px}table.popups-table th.checkbox[data-v-283b2956]{width:50px;text-align:center}table.popups-table th.setting[data-v-283b2956]{width:100px;text-align:center}table.popups-table thead[data-v-283b2956]{color:#eee}table.popups-table thead tr[data-v-283b2956]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-283b2956]{padding:10px 16px}table.popups-table tbody tr[data-v-283b2956]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-283b2956]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-283b2956]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-283b2956]{width:100%}header.header-desktop[data-v-283b2956]{display:block}header.header-mobile[data-v-283b2956]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-283b2956]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-283b2956]{width:100%;height:100%}header.header-mobile button svg path[data-v-283b2956]{fill:#fff}nav.sidebar[data-v-283b2956]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-283b2956]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-283b2956]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-283b2956]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-283b2956]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-283b2956]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-283b2956]{color:#fff}nav.sidebar .container .children[data-v-283b2956]{padding-left:30px}@-moz-keyframes tada-283b2956{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-283b2956{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-283b2956{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-283b2956{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-283b2956]{animation:dialogEnter-283b2956 .3s linear forwards}.dialog-leave-active[data-v-283b2956]{animation:dialogLeave-283b2956 .3s linear forwards}@keyframes dialogEnter-283b2956{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-283b2956{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-283b2956]{animation:dialogEnter-283b2956 .2s linear forwards}.dialog1-leave-active[data-v-283b2956]{animation:dialogLeave-283b2956 .2s linear forwards}@keyframes rotateEnter-283b2956{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-283b2956]{animation:rotateEnter-283b2956 .7s;position:relative}.rotate-leave-active[data-v-283b2956]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-283b2956{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-283b2956{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-283b2956]{animation:slideOutTop-283b2956 .5s linear forwards}.slide-top-leave-active[data-v-283b2956],.slide-bottom-enter-active[data-v-283b2956]{animation:slideOutBottom-283b2956 .5s linear forwards}@keyframes slideInLeft-283b2956{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-283b2956{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-283b2956]{animation:slideInLeft-283b2956 .3s linear forwards}.slide-left-leave-active[data-v-283b2956]{animation:slideInRight-283b2956 .3s linear forwards}@keyframes slideOutLeft-283b2956{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-283b2956{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-283b2956]{animation:slideOutLeft-283b2956 .3s linear forwards}.slide-right-leave-active[data-v-283b2956]{animation:slideOutRight-283b2956 .3s linear forwards}@keyframes bganimation-283b2956{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-283b2956{0%{height:0}to{height:100px}}@keyframes fadeEnd-283b2956{0%{height:100%}to{height:0}}.fade-enter-active[data-v-283b2956]{animation:fadeStart-283b2956 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-283b2956]{animation:fadeEnd-283b2956 .1s linear forwards;overflow:hidden}.app-store[data-v-283b2956]{width:100%;display:flex;justify-content:flex-start;flex-wrap:wrap;transition-duration:1s}.app-store>div.store[data-v-283b2956]{position:relative;padding:4px;width:40%;height:120px;cursor:pointer}.app-store>div.store>div[data-v-283b2956]{border-radius:12px;height:100%;width:100%;background:url(/luci-static/istorex/store@3x.png?v=01a7e93b) no-repeat;background-size:cover}.app-store>div.store>div>div[data-v-283b2956]{position:absolute;top:50%;left:32px;transform:translateY(-50%)}.app-store>div.store>div>div>span[data-v-283b2956]{width:100%;display:inline-block}.app-store>div.store>div>div>span[data-v-283b2956]:first-of-type{font-size:16px;font-weight:600}.app-store>div.store>div>div>span[data-v-283b2956]:last-of-type{margin-top:4px;color:#0000004d;font-size:16px}@media screen and (max-width: 668px){.app-store div.store[data-v-283b2956]{width:100%;height:138px}}@keyframes bganimation-43beecef{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes rotateEnter-43beecef{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}@keyframes turns-43beecef{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}@keyframes slideInLeft-43beecef{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-43beecef{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-43beecef]{animation:slideInLeft-43beecef .3s linear forwards}.slide-left-leave-active[data-v-43beecef]{animation:slideInRight-43beecef .3s linear forwards}@keyframes slideOutLeft-43beecef{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-43beecef{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-43beecef]{animation:slideOutLeft-43beecef .3s linear forwards}.slide-right-leave-active[data-v-43beecef]{animation:slideOutRight-43beecef .3s linear forwards}.rotate-enter-active[data-v-43beecef]{animation:rotateEnter-43beecef .7s;position:relative}.rotate-leave-active[data-v-43beecef]{opacity:0;display:none;position:relative;z-index:-999}.app-container[data-v-43beecef]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-43beecef]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-43beecef]{color:#f9ad1e}.notice_info li[data-v-43beecef]{font-size:14px;list-style:revert}.text-container[data-v-43beecef]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-43beecef]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-43beecef]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-43beecef]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-43beecef]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-43beecef]{width:100%}.text-container .text-container_item p.info-desc[data-v-43beecef]{width:100%;color:#999;font-size:14px}.page-container[data-v-43beecef]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-43beecef]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-43beecef]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-43beecef]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-43beecef],.page-container .page-flex .page-sidebar a[data-v-43beecef]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-43beecef]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-43beecef]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-43beecef]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-43beecef]{border-radius:0;padding:1rem}ul.ul-container[data-v-43beecef]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-43beecef]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-43beecef]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-43beecef]{width:100%}form.form-container[data-v-43beecef]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-43beecef]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-43beecef]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-43beecef]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-43beecef]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-43beecef],form.form-container .label-value select[data-v-43beecef]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-43beecef]:focus,form.form-container .label-value select[data-v-43beecef]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-43beecef]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-43beecef]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-43beecef],form.form-container .label-value input[type=radio][data-v-43beecef]{width:auto}form.form-container .label-value input[type=radio][data-v-43beecef]{margin:0 4px 0 0}form.form-container .label-value input[data-v-43beecef]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-43beecef]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-43beecef]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-43beecef]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-43beecef]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-43beecef]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-43beecef]:hover{background-color:#747474}form.form-container .label-msg[data-v-43beecef]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-43beecef]{color:#f9ad1e}form.form-container .label-flex[data-v-43beecef]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-43beecef]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-43beecef]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-43beecef]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-43beecef]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-43beecef]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-43beecef]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-43beecef],form.form-container1 .label-value select[data-v-43beecef]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-43beecef]:focus,form.form-container1 .label-value select[data-v-43beecef]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-43beecef]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-43beecef],form.form-container1 .label-value input[type=radio][data-v-43beecef]{width:auto}form.form-container1 .label-value input[type=radio][data-v-43beecef]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-43beecef]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-43beecef]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-43beecef]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-43beecef]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-43beecef]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-43beecef]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-43beecef]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-43beecef]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-43beecef]{color:#f9ad1e}form.form-container1 .label-flex[data-v-43beecef]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-43beecef]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-43beecef]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-43beecef]{width:100px}table.page-table th.checkbox[data-v-43beecef]{width:50px;text-align:center}table.page-table th.setting[data-v-43beecef]{width:100px;text-align:center}table.page-table thead[data-v-43beecef]{color:#909399}table.page-table thead tr[data-v-43beecef]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-43beecef]{padding:10px 16px}table.page-table tbody tr[data-v-43beecef]:hover{background-color:#eeee}table.page-table tbody tr[data-v-43beecef]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-43beecef]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-43beecef]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-43beecef]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-43beecef]{width:100px}table.popups-table th.checkbox[data-v-43beecef]{width:50px;text-align:center}table.popups-table th.setting[data-v-43beecef]{width:100px;text-align:center}table.popups-table thead[data-v-43beecef]{color:#eee}table.popups-table thead tr[data-v-43beecef]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-43beecef]{padding:10px 16px}table.popups-table tbody tr[data-v-43beecef]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-43beecef]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-43beecef]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-43beecef]{width:100%}header.header-desktop[data-v-43beecef]{display:block}header.header-mobile[data-v-43beecef]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-43beecef]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-43beecef]{width:100%;height:100%}header.header-mobile button svg path[data-v-43beecef]{fill:#fff}nav.sidebar[data-v-43beecef]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-43beecef]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-43beecef]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-43beecef]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-43beecef]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-43beecef]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-43beecef]{color:#fff}nav.sidebar .container .children[data-v-43beecef]{padding-left:30px}@-moz-keyframes tada-43beecef{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-43beecef{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-43beecef{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-43beecef{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-43beecef]{animation:dialogEnter-43beecef .3s linear forwards}.dialog-leave-active[data-v-43beecef]{animation:dialogLeave-43beecef .3s linear forwards}@keyframes dialogEnter-43beecef{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-43beecef{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-43beecef]{animation:dialogEnter-43beecef .2s linear forwards}.dialog1-leave-active[data-v-43beecef]{animation:dialogLeave-43beecef .2s linear forwards}@keyframes rotateEnter-43beecef{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-43beecef]{animation:rotateEnter-43beecef .7s;position:relative}.rotate-leave-active[data-v-43beecef]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-43beecef{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-43beecef{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-43beecef]{animation:slideOutTop-43beecef .5s linear forwards}.slide-top-leave-active[data-v-43beecef],.slide-bottom-enter-active[data-v-43beecef]{animation:slideOutBottom-43beecef .5s linear forwards}@keyframes slideInLeft-43beecef{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-43beecef{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-43beecef]{animation:slideInLeft-43beecef .3s linear forwards}.slide-left-leave-active[data-v-43beecef]{animation:slideInRight-43beecef .3s linear forwards}@keyframes slideOutLeft-43beecef{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-43beecef{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-43beecef]{animation:slideOutLeft-43beecef .3s linear forwards}.slide-right-leave-active[data-v-43beecef]{animation:slideOutRight-43beecef .3s linear forwards}@keyframes bganimation-43beecef{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-43beecef{0%{height:0}to{height:100px}}@keyframes fadeEnd-43beecef{0%{height:100%}to{height:0}}.fade-enter-active[data-v-43beecef]{animation:fadeStart-43beecef .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-43beecef]{animation:fadeEnd-43beecef .1s linear forwards;overflow:hidden}h3[data-v-43beecef]{text-align:center;margin-bottom:20px}.label-item[data-v-43beecef]{display:flex;align-items:center;flex-wrap:wrap;margin:1rem 0;padding:0 30px}.label-item label[data-v-43beecef]{display:flex;flex-wrap:wrap;align-items:center;width:100%;height:26px;line-height:26px;cursor:pointer}.label-item label input[type=radio][data-v-43beecef]{top:0;right:0;vertical-align:middle}.label-item label span[data-v-43beecef]{font-size:14px;font-family:PingFangSC-Regular,PingFang SC;font-weight:400;color:#000000d4;display:inline-block;margin-left:10px}.label-item p.label_info[data-v-43beecef]{color:#999;font-size:12px;padding-left:24px;line-height:20px}.label-item .label-item_key[data-v-43beecef]{display:flex;flex-wrap:wrap;align-items:center}.label-item .label-item_key .ddnsto_serve[data-v-43beecef]{flex:0 0 100%;display:flex;justify-content:space-between;margin-bottom:14px}.label-item .label-item_key .ddnsto_serve_item[data-v-43beecef]{flex:0 0 100%;display:flex;justify-content:space-between}@keyframes bganimation-43dd65a2{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes rotateEnter-43dd65a2{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}@keyframes turns-43dd65a2{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}@keyframes slideInLeft-43dd65a2{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-43dd65a2{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-43dd65a2]{animation:slideInLeft-43dd65a2 .3s linear forwards}.slide-left-leave-active[data-v-43dd65a2]{animation:slideInRight-43dd65a2 .3s linear forwards}@keyframes slideOutLeft-43dd65a2{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-43dd65a2{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-43dd65a2]{animation:slideOutLeft-43dd65a2 .3s linear forwards}.slide-right-leave-active[data-v-43dd65a2]{animation:slideOutRight-43dd65a2 .3s linear forwards}.rotate-enter-active[data-v-43dd65a2]{animation:rotateEnter-43dd65a2 .7s;position:relative}.rotate-leave-active[data-v-43dd65a2]{opacity:0;display:none;position:relative;z-index:-999}.app-container[data-v-43dd65a2]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-43dd65a2]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-43dd65a2]{color:#f9ad1e}.notice_info li[data-v-43dd65a2]{font-size:14px;list-style:revert}.text-container[data-v-43dd65a2]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-43dd65a2]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-43dd65a2]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-43dd65a2]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-43dd65a2]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-43dd65a2]{width:100%}.text-container .text-container_item p.info-desc[data-v-43dd65a2]{width:100%;color:#999;font-size:14px}.page-container[data-v-43dd65a2]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-43dd65a2]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-43dd65a2]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-43dd65a2]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-43dd65a2],.page-container .page-flex .page-sidebar a[data-v-43dd65a2]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-43dd65a2]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-43dd65a2]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-43dd65a2]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-43dd65a2]{border-radius:0;padding:1rem}ul.ul-container[data-v-43dd65a2]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-43dd65a2]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-43dd65a2]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-43dd65a2]{width:100%}form.form-container[data-v-43dd65a2]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-43dd65a2]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-43dd65a2]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-43dd65a2]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-43dd65a2]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-43dd65a2],form.form-container .label-value select[data-v-43dd65a2]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-43dd65a2]:focus,form.form-container .label-value select[data-v-43dd65a2]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-43dd65a2]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-43dd65a2]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-43dd65a2],form.form-container .label-value input[type=radio][data-v-43dd65a2]{width:auto}form.form-container .label-value input[type=radio][data-v-43dd65a2]{margin:0 4px 0 0}form.form-container .label-value input[data-v-43dd65a2]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-43dd65a2]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-43dd65a2]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-43dd65a2]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-43dd65a2]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-43dd65a2]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-43dd65a2]:hover{background-color:#747474}form.form-container .label-msg[data-v-43dd65a2]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-43dd65a2]{color:#f9ad1e}form.form-container .label-flex[data-v-43dd65a2]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-43dd65a2]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-43dd65a2]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-43dd65a2]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-43dd65a2]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-43dd65a2]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-43dd65a2]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-43dd65a2],form.form-container1 .label-value select[data-v-43dd65a2]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-43dd65a2]:focus,form.form-container1 .label-value select[data-v-43dd65a2]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-43dd65a2]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-43dd65a2],form.form-container1 .label-value input[type=radio][data-v-43dd65a2]{width:auto}form.form-container1 .label-value input[type=radio][data-v-43dd65a2]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-43dd65a2]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-43dd65a2]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-43dd65a2]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-43dd65a2]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-43dd65a2]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-43dd65a2]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-43dd65a2]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-43dd65a2]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-43dd65a2]{color:#f9ad1e}form.form-container1 .label-flex[data-v-43dd65a2]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-43dd65a2]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-43dd65a2]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-43dd65a2]{width:100px}table.page-table th.checkbox[data-v-43dd65a2]{width:50px;text-align:center}table.page-table th.setting[data-v-43dd65a2]{width:100px;text-align:center}table.page-table thead[data-v-43dd65a2]{color:#909399}table.page-table thead tr[data-v-43dd65a2]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-43dd65a2]{padding:10px 16px}table.page-table tbody tr[data-v-43dd65a2]:hover{background-color:#eeee}table.page-table tbody tr[data-v-43dd65a2]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-43dd65a2]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-43dd65a2]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-43dd65a2]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-43dd65a2]{width:100px}table.popups-table th.checkbox[data-v-43dd65a2]{width:50px;text-align:center}table.popups-table th.setting[data-v-43dd65a2]{width:100px;text-align:center}table.popups-table thead[data-v-43dd65a2]{color:#eee}table.popups-table thead tr[data-v-43dd65a2]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-43dd65a2]{padding:10px 16px}table.popups-table tbody tr[data-v-43dd65a2]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-43dd65a2]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-43dd65a2]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-43dd65a2]{width:100%}header.header-desktop[data-v-43dd65a2]{display:block}header.header-mobile[data-v-43dd65a2]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-43dd65a2]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-43dd65a2]{width:100%;height:100%}header.header-mobile button svg path[data-v-43dd65a2]{fill:#fff}nav.sidebar[data-v-43dd65a2]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-43dd65a2]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-43dd65a2]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-43dd65a2]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-43dd65a2]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-43dd65a2]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-43dd65a2]{color:#fff}nav.sidebar .container .children[data-v-43dd65a2]{padding-left:30px}@-moz-keyframes tada-43dd65a2{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-43dd65a2{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-43dd65a2{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-43dd65a2{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-43dd65a2]{animation:dialogEnter-43dd65a2 .3s linear forwards}.dialog-leave-active[data-v-43dd65a2]{animation:dialogLeave-43dd65a2 .3s linear forwards}@keyframes dialogEnter-43dd65a2{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-43dd65a2{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-43dd65a2]{animation:dialogEnter-43dd65a2 .2s linear forwards}.dialog1-leave-active[data-v-43dd65a2]{animation:dialogLeave-43dd65a2 .2s linear forwards}@keyframes rotateEnter-43dd65a2{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-43dd65a2]{animation:rotateEnter-43dd65a2 .7s;position:relative}.rotate-leave-active[data-v-43dd65a2]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-43dd65a2{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-43dd65a2{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-43dd65a2]{animation:slideOutTop-43dd65a2 .5s linear forwards}.slide-top-leave-active[data-v-43dd65a2],.slide-bottom-enter-active[data-v-43dd65a2]{animation:slideOutBottom-43dd65a2 .5s linear forwards}@keyframes slideInLeft-43dd65a2{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-43dd65a2{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-43dd65a2]{animation:slideInLeft-43dd65a2 .3s linear forwards}.slide-left-leave-active[data-v-43dd65a2]{animation:slideInRight-43dd65a2 .3s linear forwards}@keyframes slideOutLeft-43dd65a2{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-43dd65a2{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-43dd65a2]{animation:slideOutLeft-43dd65a2 .3s linear forwards}.slide-right-leave-active[data-v-43dd65a2]{animation:slideOutRight-43dd65a2 .3s linear forwards}@keyframes bganimation-43dd65a2{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-43dd65a2{0%{height:0}to{height:100px}}@keyframes fadeEnd-43dd65a2{0%{height:100%}to{height:0}}.fade-enter-active[data-v-43dd65a2]{animation:fadeStart-43dd65a2 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-43dd65a2]{animation:fadeEnd-43dd65a2 .1s linear forwards;overflow:hidden}.actioner-container_body[data-v-43dd65a2]{display:flex;flex-wrap:wrap;align-items:center;align-content:center;justify-content:center}.actioner-container_body svg.icon[data-v-43dd65a2]{width:100px;height:100px}.actioner-container_body .body-title[data-v-43dd65a2]{width:100%;display:block;color:#1e1e1e;font-size:2em;padding:0;margin:1rem 0;text-align:center}.actioner-container_body .body-tips[data-v-43dd65a2]{text-align:center}.actioner-container_body .body-info[data-v-43dd65a2]{color:#666;font-size:1.3em;margin:1rem 0;width:100%;text-align:center}.actioner-container_body .body-tips[data-v-43dd65a2]{margin:1rem 0;display:block;width:100%}.actioner-container_body .body-btns[data-v-43dd65a2]{width:100%;margin-top:3rem}.actioner-container_body .body-btns button[data-v-43dd65a2]{display:block;width:100%!important;margin:.5rem 0}@keyframes bganimation-7790f1da{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes rotateEnter-7790f1da{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}@keyframes turns-7790f1da{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}@keyframes slideInLeft-7790f1da{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-7790f1da{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-7790f1da]{animation:slideInLeft-7790f1da .3s linear forwards}.slide-left-leave-active[data-v-7790f1da]{animation:slideInRight-7790f1da .3s linear forwards}@keyframes slideOutLeft-7790f1da{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-7790f1da{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-7790f1da]{animation:slideOutLeft-7790f1da .3s linear forwards}.slide-right-leave-active[data-v-7790f1da]{animation:slideOutRight-7790f1da .3s linear forwards}.rotate-enter-active[data-v-7790f1da]{animation:rotateEnter-7790f1da .7s;position:relative}.rotate-leave-active[data-v-7790f1da]{opacity:0;display:none;position:relative;z-index:-999}.app-container[data-v-7790f1da]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-7790f1da]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-7790f1da]{color:#f9ad1e}.notice_info li[data-v-7790f1da]{font-size:14px;list-style:revert}.text-container[data-v-7790f1da]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-7790f1da]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-7790f1da]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-7790f1da]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-7790f1da]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-7790f1da]{width:100%}.text-container .text-container_item p.info-desc[data-v-7790f1da]{width:100%;color:#999;font-size:14px}.page-container[data-v-7790f1da]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-7790f1da]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-7790f1da]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-7790f1da]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-7790f1da],.page-container .page-flex .page-sidebar a[data-v-7790f1da]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-7790f1da]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-7790f1da]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-7790f1da]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-7790f1da]{border-radius:0;padding:1rem}ul.ul-container[data-v-7790f1da]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-7790f1da]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-7790f1da]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-7790f1da]{width:100%}form.form-container[data-v-7790f1da]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-7790f1da]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-7790f1da]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-7790f1da]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-7790f1da]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-7790f1da],form.form-container .label-value select[data-v-7790f1da]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-7790f1da]:focus,form.form-container .label-value select[data-v-7790f1da]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-7790f1da]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-7790f1da]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-7790f1da],form.form-container .label-value input[type=radio][data-v-7790f1da]{width:auto}form.form-container .label-value input[type=radio][data-v-7790f1da]{margin:0 4px 0 0}form.form-container .label-value input[data-v-7790f1da]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-7790f1da]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-7790f1da]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-7790f1da]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-7790f1da]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-7790f1da]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-7790f1da]:hover{background-color:#747474}form.form-container .label-msg[data-v-7790f1da]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-7790f1da]{color:#f9ad1e}form.form-container .label-flex[data-v-7790f1da]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-7790f1da]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-7790f1da]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-7790f1da]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-7790f1da]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-7790f1da]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-7790f1da]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-7790f1da],form.form-container1 .label-value select[data-v-7790f1da]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-7790f1da]:focus,form.form-container1 .label-value select[data-v-7790f1da]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-7790f1da]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-7790f1da],form.form-container1 .label-value input[type=radio][data-v-7790f1da]{width:auto}form.form-container1 .label-value input[type=radio][data-v-7790f1da]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-7790f1da]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-7790f1da]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-7790f1da]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-7790f1da]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-7790f1da]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-7790f1da]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-7790f1da]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-7790f1da]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-7790f1da]{color:#f9ad1e}form.form-container1 .label-flex[data-v-7790f1da]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-7790f1da]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-7790f1da]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-7790f1da]{width:100px}table.page-table th.checkbox[data-v-7790f1da]{width:50px;text-align:center}table.page-table th.setting[data-v-7790f1da]{width:100px;text-align:center}table.page-table thead[data-v-7790f1da]{color:#909399}table.page-table thead tr[data-v-7790f1da]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-7790f1da]{padding:10px 16px}table.page-table tbody tr[data-v-7790f1da]:hover{background-color:#eeee}table.page-table tbody tr[data-v-7790f1da]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-7790f1da]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-7790f1da]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-7790f1da]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-7790f1da]{width:100px}table.popups-table th.checkbox[data-v-7790f1da]{width:50px;text-align:center}table.popups-table th.setting[data-v-7790f1da]{width:100px;text-align:center}table.popups-table thead[data-v-7790f1da]{color:#eee}table.popups-table thead tr[data-v-7790f1da]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-7790f1da]{padding:10px 16px}table.popups-table tbody tr[data-v-7790f1da]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-7790f1da]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-7790f1da]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-7790f1da]{width:100%}header.header-desktop[data-v-7790f1da]{display:block}header.header-mobile[data-v-7790f1da]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-7790f1da]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-7790f1da]{width:100%;height:100%}header.header-mobile button svg path[data-v-7790f1da]{fill:#fff}nav.sidebar[data-v-7790f1da]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-7790f1da]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-7790f1da]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-7790f1da]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-7790f1da]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-7790f1da]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-7790f1da]{color:#fff}nav.sidebar .container .children[data-v-7790f1da]{padding-left:30px}@-moz-keyframes tada-7790f1da{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-7790f1da{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-7790f1da{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-7790f1da{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-7790f1da]{animation:dialogEnter-7790f1da .3s linear forwards}.dialog-leave-active[data-v-7790f1da]{animation:dialogLeave-7790f1da .3s linear forwards}@keyframes dialogEnter-7790f1da{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-7790f1da{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-7790f1da]{animation:dialogEnter-7790f1da .2s linear forwards}.dialog1-leave-active[data-v-7790f1da]{animation:dialogLeave-7790f1da .2s linear forwards}@keyframes rotateEnter-7790f1da{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-7790f1da]{animation:rotateEnter-7790f1da .7s;position:relative}.rotate-leave-active[data-v-7790f1da]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-7790f1da{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-7790f1da{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-7790f1da]{animation:slideOutTop-7790f1da .5s linear forwards}.slide-top-leave-active[data-v-7790f1da],.slide-bottom-enter-active[data-v-7790f1da]{animation:slideOutBottom-7790f1da .5s linear forwards}@keyframes slideInLeft-7790f1da{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-7790f1da{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-7790f1da]{animation:slideInLeft-7790f1da .3s linear forwards}.slide-left-leave-active[data-v-7790f1da]{animation:slideInRight-7790f1da .3s linear forwards}@keyframes slideOutLeft-7790f1da{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-7790f1da{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-7790f1da]{animation:slideOutLeft-7790f1da .3s linear forwards}.slide-right-leave-active[data-v-7790f1da]{animation:slideOutRight-7790f1da .3s linear forwards}@keyframes bganimation-7790f1da{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-7790f1da{0%{height:0}to{height:100px}}@keyframes fadeEnd-7790f1da{0%{height:100%}to{height:0}}.fade-enter-active[data-v-7790f1da]{animation:fadeStart-7790f1da .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-7790f1da]{animation:fadeEnd-7790f1da .1s linear forwards;overflow:hidden}iframe[data-v-7790f1da]{width:100%;height:100%;border:none}@keyframes bganimation-5baf4b05{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes rotateEnter-5baf4b05{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}@keyframes turns-5baf4b05{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}@keyframes slideInLeft-5baf4b05{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-5baf4b05{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-5baf4b05]{animation:slideInLeft-5baf4b05 .3s linear forwards}.slide-left-leave-active[data-v-5baf4b05]{animation:slideInRight-5baf4b05 .3s linear forwards}@keyframes slideOutLeft-5baf4b05{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-5baf4b05{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-5baf4b05]{animation:slideOutLeft-5baf4b05 .3s linear forwards}.slide-right-leave-active[data-v-5baf4b05]{animation:slideOutRight-5baf4b05 .3s linear forwards}.rotate-enter-active[data-v-5baf4b05]{animation:rotateEnter-5baf4b05 .7s;position:relative}.rotate-leave-active[data-v-5baf4b05]{opacity:0;display:none;position:relative;z-index:-999}.app-container[data-v-5baf4b05]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-5baf4b05]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-5baf4b05]{color:#f9ad1e}.notice_info li[data-v-5baf4b05]{font-size:14px;list-style:revert}.text-container[data-v-5baf4b05]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-5baf4b05]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-5baf4b05]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-5baf4b05]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-5baf4b05]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-5baf4b05]{width:100%}.text-container .text-container_item p.info-desc[data-v-5baf4b05]{width:100%;color:#999;font-size:14px}.page-container[data-v-5baf4b05]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-5baf4b05]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-5baf4b05]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-5baf4b05]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-5baf4b05],.page-container .page-flex .page-sidebar a[data-v-5baf4b05]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-5baf4b05]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-5baf4b05]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-5baf4b05]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-5baf4b05]{border-radius:0;padding:1rem}ul.ul-container[data-v-5baf4b05]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-5baf4b05]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-5baf4b05]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-5baf4b05]{width:100%}form.form-container[data-v-5baf4b05]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-5baf4b05]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-5baf4b05]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-5baf4b05]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-5baf4b05]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-5baf4b05],form.form-container .label-value select[data-v-5baf4b05]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-5baf4b05]:focus,form.form-container .label-value select[data-v-5baf4b05]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-5baf4b05]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-5baf4b05]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-5baf4b05],form.form-container .label-value input[type=radio][data-v-5baf4b05]{width:auto}form.form-container .label-value input[type=radio][data-v-5baf4b05]{margin:0 4px 0 0}form.form-container .label-value input[data-v-5baf4b05]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-5baf4b05]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-5baf4b05]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-5baf4b05]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-5baf4b05]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-5baf4b05]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-5baf4b05]:hover{background-color:#747474}form.form-container .label-msg[data-v-5baf4b05]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-5baf4b05]{color:#f9ad1e}form.form-container .label-flex[data-v-5baf4b05]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-5baf4b05]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-5baf4b05]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-5baf4b05]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-5baf4b05]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-5baf4b05]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-5baf4b05]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-5baf4b05],form.form-container1 .label-value select[data-v-5baf4b05]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-5baf4b05]:focus,form.form-container1 .label-value select[data-v-5baf4b05]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-5baf4b05]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-5baf4b05],form.form-container1 .label-value input[type=radio][data-v-5baf4b05]{width:auto}form.form-container1 .label-value input[type=radio][data-v-5baf4b05]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-5baf4b05]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-5baf4b05]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-5baf4b05]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-5baf4b05]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-5baf4b05]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-5baf4b05]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-5baf4b05]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-5baf4b05]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-5baf4b05]{color:#f9ad1e}form.form-container1 .label-flex[data-v-5baf4b05]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-5baf4b05]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-5baf4b05]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-5baf4b05]{width:100px}table.page-table th.checkbox[data-v-5baf4b05]{width:50px;text-align:center}table.page-table th.setting[data-v-5baf4b05]{width:100px;text-align:center}table.page-table thead[data-v-5baf4b05]{color:#909399}table.page-table thead tr[data-v-5baf4b05]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-5baf4b05]{padding:10px 16px}table.page-table tbody tr[data-v-5baf4b05]:hover{background-color:#eeee}table.page-table tbody tr[data-v-5baf4b05]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-5baf4b05]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-5baf4b05]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-5baf4b05]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-5baf4b05]{width:100px}table.popups-table th.checkbox[data-v-5baf4b05]{width:50px;text-align:center}table.popups-table th.setting[data-v-5baf4b05]{width:100px;text-align:center}table.popups-table thead[data-v-5baf4b05]{color:#eee}table.popups-table thead tr[data-v-5baf4b05]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-5baf4b05]{padding:10px 16px}table.popups-table tbody tr[data-v-5baf4b05]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-5baf4b05]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-5baf4b05]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-5baf4b05]{width:100%}header.header-desktop[data-v-5baf4b05]{display:block}header.header-mobile[data-v-5baf4b05]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-5baf4b05]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-5baf4b05]{width:100%;height:100%}header.header-mobile button svg path[data-v-5baf4b05]{fill:#fff}nav.sidebar[data-v-5baf4b05]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-5baf4b05]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-5baf4b05]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-5baf4b05]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-5baf4b05]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-5baf4b05]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-5baf4b05]{color:#fff}nav.sidebar .container .children[data-v-5baf4b05]{padding-left:30px}@-moz-keyframes tada-5baf4b05{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-5baf4b05{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-5baf4b05{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-5baf4b05{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-5baf4b05]{animation:dialogEnter-5baf4b05 .3s linear forwards}.dialog-leave-active[data-v-5baf4b05]{animation:dialogLeave-5baf4b05 .3s linear forwards}@keyframes dialogEnter-5baf4b05{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-5baf4b05{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-5baf4b05]{animation:dialogEnter-5baf4b05 .2s linear forwards}.dialog1-leave-active[data-v-5baf4b05]{animation:dialogLeave-5baf4b05 .2s linear forwards}@keyframes rotateEnter-5baf4b05{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-5baf4b05]{animation:rotateEnter-5baf4b05 .7s;position:relative}.rotate-leave-active[data-v-5baf4b05]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-5baf4b05{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-5baf4b05{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-5baf4b05]{animation:slideOutTop-5baf4b05 .5s linear forwards}.slide-top-leave-active[data-v-5baf4b05],.slide-bottom-enter-active[data-v-5baf4b05]{animation:slideOutBottom-5baf4b05 .5s linear forwards}@keyframes slideInLeft-5baf4b05{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-5baf4b05{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-5baf4b05]{animation:slideInLeft-5baf4b05 .3s linear forwards}.slide-left-leave-active[data-v-5baf4b05]{animation:slideInRight-5baf4b05 .3s linear forwards}@keyframes slideOutLeft-5baf4b05{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-5baf4b05{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-5baf4b05]{animation:slideOutLeft-5baf4b05 .3s linear forwards}.slide-right-leave-active[data-v-5baf4b05]{animation:slideOutRight-5baf4b05 .3s linear forwards}@keyframes bganimation-5baf4b05{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-5baf4b05{0%{height:0}to{height:100px}}@keyframes fadeEnd-5baf4b05{0%{height:100%}to{height:0}}.fade-enter-active[data-v-5baf4b05]{animation:fadeStart-5baf4b05 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-5baf4b05]{animation:fadeEnd-5baf4b05 .1s linear forwards;overflow:hidden}iframe[data-v-5baf4b05]{width:100%;height:100%;border:none}@keyframes bganimation-02a6c9d8{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes rotateEnter-02a6c9d8{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}@keyframes turns-02a6c9d8{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}@keyframes slideInLeft-02a6c9d8{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-02a6c9d8{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-02a6c9d8]{animation:slideInLeft-02a6c9d8 .3s linear forwards}.slide-left-leave-active[data-v-02a6c9d8]{animation:slideInRight-02a6c9d8 .3s linear forwards}@keyframes slideOutLeft-02a6c9d8{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-02a6c9d8{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-02a6c9d8]{animation:slideOutLeft-02a6c9d8 .3s linear forwards}.slide-right-leave-active[data-v-02a6c9d8]{animation:slideOutRight-02a6c9d8 .3s linear forwards}.rotate-enter-active[data-v-02a6c9d8]{animation:rotateEnter-02a6c9d8 .7s;position:relative}.rotate-leave-active[data-v-02a6c9d8]{opacity:0;display:none;position:relative;z-index:-999}.app-container[data-v-02a6c9d8]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-02a6c9d8]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-02a6c9d8]{color:#f9ad1e}.notice_info li[data-v-02a6c9d8]{font-size:14px;list-style:revert}.text-container[data-v-02a6c9d8]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-02a6c9d8]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-02a6c9d8]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-02a6c9d8]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-02a6c9d8]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-02a6c9d8]{width:100%}.text-container .text-container_item p.info-desc[data-v-02a6c9d8]{width:100%;color:#999;font-size:14px}.page-container[data-v-02a6c9d8]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-02a6c9d8]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-02a6c9d8]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-02a6c9d8]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-02a6c9d8],.page-container .page-flex .page-sidebar a[data-v-02a6c9d8]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-02a6c9d8]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-02a6c9d8]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-02a6c9d8]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-02a6c9d8]{border-radius:0;padding:1rem}ul.ul-container[data-v-02a6c9d8]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-02a6c9d8]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-02a6c9d8]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-02a6c9d8]{width:100%}form.form-container[data-v-02a6c9d8]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-02a6c9d8]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-02a6c9d8]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-02a6c9d8]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-02a6c9d8]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-02a6c9d8],form.form-container .label-value select[data-v-02a6c9d8]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-02a6c9d8]:focus,form.form-container .label-value select[data-v-02a6c9d8]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-02a6c9d8]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-02a6c9d8]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-02a6c9d8],form.form-container .label-value input[type=radio][data-v-02a6c9d8]{width:auto}form.form-container .label-value input[type=radio][data-v-02a6c9d8]{margin:0 4px 0 0}form.form-container .label-value input[data-v-02a6c9d8]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-02a6c9d8]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-02a6c9d8]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-02a6c9d8]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-02a6c9d8]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-02a6c9d8]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-02a6c9d8]:hover{background-color:#747474}form.form-container .label-msg[data-v-02a6c9d8]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-02a6c9d8]{color:#f9ad1e}form.form-container .label-flex[data-v-02a6c9d8]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-02a6c9d8]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-02a6c9d8]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-02a6c9d8]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-02a6c9d8]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-02a6c9d8]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-02a6c9d8]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-02a6c9d8],form.form-container1 .label-value select[data-v-02a6c9d8]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-02a6c9d8]:focus,form.form-container1 .label-value select[data-v-02a6c9d8]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-02a6c9d8]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-02a6c9d8],form.form-container1 .label-value input[type=radio][data-v-02a6c9d8]{width:auto}form.form-container1 .label-value input[type=radio][data-v-02a6c9d8]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-02a6c9d8]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-02a6c9d8]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-02a6c9d8]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-02a6c9d8]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-02a6c9d8]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-02a6c9d8]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-02a6c9d8]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-02a6c9d8]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-02a6c9d8]{color:#f9ad1e}form.form-container1 .label-flex[data-v-02a6c9d8]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-02a6c9d8]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-02a6c9d8]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-02a6c9d8]{width:100px}table.page-table th.checkbox[data-v-02a6c9d8]{width:50px;text-align:center}table.page-table th.setting[data-v-02a6c9d8]{width:100px;text-align:center}table.page-table thead[data-v-02a6c9d8]{color:#909399}table.page-table thead tr[data-v-02a6c9d8]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-02a6c9d8]{padding:10px 16px}table.page-table tbody tr[data-v-02a6c9d8]:hover{background-color:#eeee}table.page-table tbody tr[data-v-02a6c9d8]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-02a6c9d8]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-02a6c9d8]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-02a6c9d8]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-02a6c9d8]{width:100px}table.popups-table th.checkbox[data-v-02a6c9d8]{width:50px;text-align:center}table.popups-table th.setting[data-v-02a6c9d8]{width:100px;text-align:center}table.popups-table thead[data-v-02a6c9d8]{color:#eee}table.popups-table thead tr[data-v-02a6c9d8]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-02a6c9d8]{padding:10px 16px}table.popups-table tbody tr[data-v-02a6c9d8]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-02a6c9d8]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-02a6c9d8]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-02a6c9d8]{width:100%}header.header-desktop[data-v-02a6c9d8]{display:block}header.header-mobile[data-v-02a6c9d8]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-02a6c9d8]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-02a6c9d8]{width:100%;height:100%}header.header-mobile button svg path[data-v-02a6c9d8]{fill:#fff}nav.sidebar[data-v-02a6c9d8]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-02a6c9d8]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-02a6c9d8]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-02a6c9d8]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-02a6c9d8]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-02a6c9d8]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-02a6c9d8]{color:#fff}nav.sidebar .container .children[data-v-02a6c9d8]{padding-left:30px}@-moz-keyframes tada-02a6c9d8{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-02a6c9d8{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-02a6c9d8{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-02a6c9d8{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-02a6c9d8]{animation:dialogEnter-02a6c9d8 .3s linear forwards}.dialog-leave-active[data-v-02a6c9d8]{animation:dialogLeave-02a6c9d8 .3s linear forwards}@keyframes dialogEnter-02a6c9d8{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-02a6c9d8{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-02a6c9d8]{animation:dialogEnter-02a6c9d8 .2s linear forwards}.dialog1-leave-active[data-v-02a6c9d8]{animation:dialogLeave-02a6c9d8 .2s linear forwards}@keyframes rotateEnter-02a6c9d8{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-02a6c9d8]{animation:rotateEnter-02a6c9d8 .7s;position:relative}.rotate-leave-active[data-v-02a6c9d8]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-02a6c9d8{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-02a6c9d8{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-02a6c9d8]{animation:slideOutTop-02a6c9d8 .5s linear forwards}.slide-top-leave-active[data-v-02a6c9d8],.slide-bottom-enter-active[data-v-02a6c9d8]{animation:slideOutBottom-02a6c9d8 .5s linear forwards}@keyframes slideInLeft-02a6c9d8{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-02a6c9d8{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-02a6c9d8]{animation:slideInLeft-02a6c9d8 .3s linear forwards}.slide-left-leave-active[data-v-02a6c9d8]{animation:slideInRight-02a6c9d8 .3s linear forwards}@keyframes slideOutLeft-02a6c9d8{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-02a6c9d8{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-02a6c9d8]{animation:slideOutLeft-02a6c9d8 .3s linear forwards}.slide-right-leave-active[data-v-02a6c9d8]{animation:slideOutRight-02a6c9d8 .3s linear forwards}@keyframes bganimation-02a6c9d8{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-02a6c9d8{0%{height:0}to{height:100px}}@keyframes fadeEnd-02a6c9d8{0%{height:100%}to{height:0}}.fade-enter-active[data-v-02a6c9d8]{animation:fadeStart-02a6c9d8 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-02a6c9d8]{animation:fadeEnd-02a6c9d8 .1s linear forwards;overflow:hidden}.actioner-container_body[data-v-02a6c9d8]{display:flex;flex-wrap:wrap;align-items:center;align-content:center;justify-content:center}.actioner-container_body svg.icon[data-v-02a6c9d8]{width:100px;height:100px}.actioner-container_body .body-title[data-v-02a6c9d8]{width:100%;display:block;color:#1e1e1e;font-size:2em;padding:0;margin:1rem 0;text-align:center}.actioner-container_body .body-info[data-v-02a6c9d8]{color:#666;font-size:1.3em;margin:1rem 0;width:100%}.actioner-container_body .body-tips[data-v-02a6c9d8]{margin:1rem 0;display:block;width:100%}.actioner-container_body .body-btns[data-v-02a6c9d8]{width:100%;margin-top:3rem}.actioner-container_body .body-btns button[data-v-02a6c9d8]{display:block;width:100%!important;margin:.5rem 0}@keyframes bganimation-4f87c1d1{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes rotateEnter-4f87c1d1{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}@keyframes turns-4f87c1d1{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}@keyframes slideInLeft-4f87c1d1{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-4f87c1d1{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-4f87c1d1]{animation:slideInLeft-4f87c1d1 .3s linear forwards}.slide-left-leave-active[data-v-4f87c1d1]{animation:slideInRight-4f87c1d1 .3s linear forwards}@keyframes slideOutLeft-4f87c1d1{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-4f87c1d1{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-4f87c1d1]{animation:slideOutLeft-4f87c1d1 .3s linear forwards}.slide-right-leave-active[data-v-4f87c1d1]{animation:slideOutRight-4f87c1d1 .3s linear forwards}.rotate-enter-active[data-v-4f87c1d1]{animation:rotateEnter-4f87c1d1 .7s;position:relative}.rotate-leave-active[data-v-4f87c1d1]{opacity:0;display:none;position:relative;z-index:-999}.app-container[data-v-4f87c1d1]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-4f87c1d1]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-4f87c1d1]{color:#f9ad1e}.notice_info li[data-v-4f87c1d1]{font-size:14px;list-style:revert}.text-container[data-v-4f87c1d1]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-4f87c1d1]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-4f87c1d1]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-4f87c1d1]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-4f87c1d1]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-4f87c1d1]{width:100%}.text-container .text-container_item p.info-desc[data-v-4f87c1d1]{width:100%;color:#999;font-size:14px}.page-container[data-v-4f87c1d1]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-4f87c1d1]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-4f87c1d1]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-4f87c1d1]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-4f87c1d1],.page-container .page-flex .page-sidebar a[data-v-4f87c1d1]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-4f87c1d1]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-4f87c1d1]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-4f87c1d1]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-4f87c1d1]{border-radius:0;padding:1rem}ul.ul-container[data-v-4f87c1d1]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-4f87c1d1]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-4f87c1d1]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-4f87c1d1]{width:100%}form.form-container[data-v-4f87c1d1]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-4f87c1d1]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-4f87c1d1]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-4f87c1d1]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-4f87c1d1]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-4f87c1d1],form.form-container .label-value select[data-v-4f87c1d1]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-4f87c1d1]:focus,form.form-container .label-value select[data-v-4f87c1d1]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-4f87c1d1]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-4f87c1d1]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-4f87c1d1],form.form-container .label-value input[type=radio][data-v-4f87c1d1]{width:auto}form.form-container .label-value input[type=radio][data-v-4f87c1d1]{margin:0 4px 0 0}form.form-container .label-value input[data-v-4f87c1d1]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-4f87c1d1]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-4f87c1d1]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-4f87c1d1]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-4f87c1d1]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-4f87c1d1]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-4f87c1d1]:hover{background-color:#747474}form.form-container .label-msg[data-v-4f87c1d1]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-4f87c1d1]{color:#f9ad1e}form.form-container .label-flex[data-v-4f87c1d1]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-4f87c1d1]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-4f87c1d1]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-4f87c1d1]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-4f87c1d1]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-4f87c1d1]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-4f87c1d1]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-4f87c1d1],form.form-container1 .label-value select[data-v-4f87c1d1]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-4f87c1d1]:focus,form.form-container1 .label-value select[data-v-4f87c1d1]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-4f87c1d1]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-4f87c1d1],form.form-container1 .label-value input[type=radio][data-v-4f87c1d1]{width:auto}form.form-container1 .label-value input[type=radio][data-v-4f87c1d1]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-4f87c1d1]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-4f87c1d1]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-4f87c1d1]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-4f87c1d1]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-4f87c1d1]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-4f87c1d1]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-4f87c1d1]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-4f87c1d1]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-4f87c1d1]{color:#f9ad1e}form.form-container1 .label-flex[data-v-4f87c1d1]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-4f87c1d1]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-4f87c1d1]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-4f87c1d1]{width:100px}table.page-table th.checkbox[data-v-4f87c1d1]{width:50px;text-align:center}table.page-table th.setting[data-v-4f87c1d1]{width:100px;text-align:center}table.page-table thead[data-v-4f87c1d1]{color:#909399}table.page-table thead tr[data-v-4f87c1d1]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-4f87c1d1]{padding:10px 16px}table.page-table tbody tr[data-v-4f87c1d1]:hover{background-color:#eeee}table.page-table tbody tr[data-v-4f87c1d1]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-4f87c1d1]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-4f87c1d1]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-4f87c1d1]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-4f87c1d1]{width:100px}table.popups-table th.checkbox[data-v-4f87c1d1]{width:50px;text-align:center}table.popups-table th.setting[data-v-4f87c1d1]{width:100px;text-align:center}table.popups-table thead[data-v-4f87c1d1]{color:#eee}table.popups-table thead tr[data-v-4f87c1d1]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-4f87c1d1]{padding:10px 16px}table.popups-table tbody tr[data-v-4f87c1d1]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-4f87c1d1]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-4f87c1d1]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-4f87c1d1]{width:100%}header.header-desktop[data-v-4f87c1d1]{display:block}header.header-mobile[data-v-4f87c1d1]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-4f87c1d1]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-4f87c1d1]{width:100%;height:100%}header.header-mobile button svg path[data-v-4f87c1d1]{fill:#fff}nav.sidebar[data-v-4f87c1d1]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-4f87c1d1]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-4f87c1d1]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-4f87c1d1]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-4f87c1d1]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-4f87c1d1]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-4f87c1d1]{color:#fff}nav.sidebar .container .children[data-v-4f87c1d1]{padding-left:30px}@-moz-keyframes tada-4f87c1d1{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-4f87c1d1{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-4f87c1d1{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-4f87c1d1{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-4f87c1d1]{animation:dialogEnter-4f87c1d1 .3s linear forwards}.dialog-leave-active[data-v-4f87c1d1]{animation:dialogLeave-4f87c1d1 .3s linear forwards}@keyframes dialogEnter-4f87c1d1{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-4f87c1d1{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-4f87c1d1]{animation:dialogEnter-4f87c1d1 .2s linear forwards}.dialog1-leave-active[data-v-4f87c1d1]{animation:dialogLeave-4f87c1d1 .2s linear forwards}@keyframes rotateEnter-4f87c1d1{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-4f87c1d1]{animation:rotateEnter-4f87c1d1 .7s;position:relative}.rotate-leave-active[data-v-4f87c1d1]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-4f87c1d1{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-4f87c1d1{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-4f87c1d1]{animation:slideOutTop-4f87c1d1 .5s linear forwards}.slide-top-leave-active[data-v-4f87c1d1],.slide-bottom-enter-active[data-v-4f87c1d1]{animation:slideOutBottom-4f87c1d1 .5s linear forwards}@keyframes slideInLeft-4f87c1d1{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-4f87c1d1{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-4f87c1d1]{animation:slideInLeft-4f87c1d1 .3s linear forwards}.slide-left-leave-active[data-v-4f87c1d1]{animation:slideInRight-4f87c1d1 .3s linear forwards}@keyframes slideOutLeft-4f87c1d1{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-4f87c1d1{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-4f87c1d1]{animation:slideOutLeft-4f87c1d1 .3s linear forwards}.slide-right-leave-active[data-v-4f87c1d1]{animation:slideOutRight-4f87c1d1 .3s linear forwards}@keyframes bganimation-4f87c1d1{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-4f87c1d1{0%{height:0}to{height:100px}}@keyframes fadeEnd-4f87c1d1{0%{height:100%}to{height:0}}.fade-enter-active[data-v-4f87c1d1]{animation:fadeStart-4f87c1d1 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-4f87c1d1]{animation:fadeEnd-4f87c1d1 .1s linear forwards;overflow:hidden}.actioner-container_body[data-v-4f87c1d1]{display:flex;align-items:center;justify-content:center}@keyframes bganimation-06c9d91d{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes rotateEnter-06c9d91d{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}@keyframes turns-06c9d91d{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}@keyframes slideInLeft-06c9d91d{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-06c9d91d{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-06c9d91d]{animation:slideInLeft-06c9d91d .3s linear forwards}.slide-left-leave-active[data-v-06c9d91d]{animation:slideInRight-06c9d91d .3s linear forwards}@keyframes slideOutLeft-06c9d91d{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-06c9d91d{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-06c9d91d]{animation:slideOutLeft-06c9d91d .3s linear forwards}.slide-right-leave-active[data-v-06c9d91d]{animation:slideOutRight-06c9d91d .3s linear forwards}.rotate-enter-active[data-v-06c9d91d]{animation:rotateEnter-06c9d91d .7s;position:relative}.rotate-leave-active[data-v-06c9d91d]{opacity:0;display:none;position:relative;z-index:-999}.app-container[data-v-06c9d91d]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-06c9d91d]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-06c9d91d]{color:#f9ad1e}.notice_info li[data-v-06c9d91d]{font-size:14px;list-style:revert}.text-container[data-v-06c9d91d]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-06c9d91d]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-06c9d91d]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-06c9d91d]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-06c9d91d]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-06c9d91d]{width:100%}.text-container .text-container_item p.info-desc[data-v-06c9d91d]{width:100%;color:#999;font-size:14px}.page-container[data-v-06c9d91d]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-06c9d91d]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-06c9d91d]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-06c9d91d]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-06c9d91d],.page-container .page-flex .page-sidebar a[data-v-06c9d91d]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-06c9d91d]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-06c9d91d]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-06c9d91d]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-06c9d91d]{border-radius:0;padding:1rem}ul.ul-container[data-v-06c9d91d]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-06c9d91d]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-06c9d91d]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-06c9d91d]{width:100%}form.form-container[data-v-06c9d91d]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-06c9d91d]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-06c9d91d]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-06c9d91d]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-06c9d91d]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-06c9d91d],form.form-container .label-value select[data-v-06c9d91d]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-06c9d91d]:focus,form.form-container .label-value select[data-v-06c9d91d]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-06c9d91d]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-06c9d91d]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-06c9d91d],form.form-container .label-value input[type=radio][data-v-06c9d91d]{width:auto}form.form-container .label-value input[type=radio][data-v-06c9d91d]{margin:0 4px 0 0}form.form-container .label-value input[data-v-06c9d91d]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-06c9d91d]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-06c9d91d]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-06c9d91d]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-06c9d91d]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-06c9d91d]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-06c9d91d]:hover{background-color:#747474}form.form-container .label-msg[data-v-06c9d91d]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-06c9d91d]{color:#f9ad1e}form.form-container .label-flex[data-v-06c9d91d]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-06c9d91d]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-06c9d91d]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-06c9d91d]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-06c9d91d]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-06c9d91d]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-06c9d91d]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-06c9d91d],form.form-container1 .label-value select[data-v-06c9d91d]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-06c9d91d]:focus,form.form-container1 .label-value select[data-v-06c9d91d]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-06c9d91d]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-06c9d91d],form.form-container1 .label-value input[type=radio][data-v-06c9d91d]{width:auto}form.form-container1 .label-value input[type=radio][data-v-06c9d91d]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-06c9d91d]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-06c9d91d]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-06c9d91d]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-06c9d91d]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-06c9d91d]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-06c9d91d]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-06c9d91d]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-06c9d91d]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-06c9d91d]{color:#f9ad1e}form.form-container1 .label-flex[data-v-06c9d91d]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-06c9d91d]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-06c9d91d]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-06c9d91d]{width:100px}table.page-table th.checkbox[data-v-06c9d91d]{width:50px;text-align:center}table.page-table th.setting[data-v-06c9d91d]{width:100px;text-align:center}table.page-table thead[data-v-06c9d91d]{color:#909399}table.page-table thead tr[data-v-06c9d91d]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-06c9d91d]{padding:10px 16px}table.page-table tbody tr[data-v-06c9d91d]:hover{background-color:#eeee}table.page-table tbody tr[data-v-06c9d91d]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-06c9d91d]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-06c9d91d]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-06c9d91d]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-06c9d91d]{width:100px}table.popups-table th.checkbox[data-v-06c9d91d]{width:50px;text-align:center}table.popups-table th.setting[data-v-06c9d91d]{width:100px;text-align:center}table.popups-table thead[data-v-06c9d91d]{color:#eee}table.popups-table thead tr[data-v-06c9d91d]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-06c9d91d]{padding:10px 16px}table.popups-table tbody tr[data-v-06c9d91d]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-06c9d91d]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-06c9d91d]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-06c9d91d]{width:100%}header.header-desktop[data-v-06c9d91d]{display:block}header.header-mobile[data-v-06c9d91d]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-06c9d91d]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-06c9d91d]{width:100%;height:100%}header.header-mobile button svg path[data-v-06c9d91d]{fill:#fff}nav.sidebar[data-v-06c9d91d]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-06c9d91d]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-06c9d91d]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-06c9d91d]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-06c9d91d]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-06c9d91d]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-06c9d91d]{color:#fff}nav.sidebar .container .children[data-v-06c9d91d]{padding-left:30px}@-moz-keyframes tada-06c9d91d{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-06c9d91d{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-06c9d91d{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-06c9d91d{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-06c9d91d]{animation:dialogEnter-06c9d91d .3s linear forwards}.dialog-leave-active[data-v-06c9d91d]{animation:dialogLeave-06c9d91d .3s linear forwards}@keyframes dialogEnter-06c9d91d{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-06c9d91d{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-06c9d91d]{animation:dialogEnter-06c9d91d .2s linear forwards}.dialog1-leave-active[data-v-06c9d91d]{animation:dialogLeave-06c9d91d .2s linear forwards}@keyframes rotateEnter-06c9d91d{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-06c9d91d]{animation:rotateEnter-06c9d91d .7s;position:relative}.rotate-leave-active[data-v-06c9d91d]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-06c9d91d{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-06c9d91d{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-06c9d91d]{animation:slideOutTop-06c9d91d .5s linear forwards}.slide-top-leave-active[data-v-06c9d91d],.slide-bottom-enter-active[data-v-06c9d91d]{animation:slideOutBottom-06c9d91d .5s linear forwards}@keyframes slideInLeft-06c9d91d{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-06c9d91d{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-06c9d91d]{animation:slideInLeft-06c9d91d .3s linear forwards}.slide-left-leave-active[data-v-06c9d91d]{animation:slideInRight-06c9d91d .3s linear forwards}@keyframes slideOutLeft-06c9d91d{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-06c9d91d{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-06c9d91d]{animation:slideOutLeft-06c9d91d .3s linear forwards}.slide-right-leave-active[data-v-06c9d91d]{animation:slideOutRight-06c9d91d .3s linear forwards}@keyframes bganimation-06c9d91d{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-06c9d91d{0%{height:0}to{height:100px}}@keyframes fadeEnd-06c9d91d{0%{height:100%}to{height:0}}.fade-enter-active[data-v-06c9d91d]{animation:fadeStart-06c9d91d .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-06c9d91d]{animation:fadeEnd-06c9d91d .1s linear forwards;overflow:hidden}.actioner-container_body[data-v-06c9d91d]{display:flex;align-items:center;justify-content:center}@keyframes bganimation-2b767e18{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes rotateEnter-2b767e18{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}@keyframes turns-2b767e18{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}@keyframes slideInLeft-2b767e18{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-2b767e18{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-2b767e18]{animation:slideInLeft-2b767e18 .3s linear forwards}.slide-left-leave-active[data-v-2b767e18]{animation:slideInRight-2b767e18 .3s linear forwards}@keyframes slideOutLeft-2b767e18{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-2b767e18{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-2b767e18]{animation:slideOutLeft-2b767e18 .3s linear forwards}.slide-right-leave-active[data-v-2b767e18]{animation:slideOutRight-2b767e18 .3s linear forwards}.rotate-enter-active[data-v-2b767e18]{animation:rotateEnter-2b767e18 .7s;position:relative}.rotate-leave-active[data-v-2b767e18]{opacity:0;display:none;position:relative;z-index:-999}.app-container[data-v-2b767e18]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-2b767e18]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-2b767e18]{color:#f9ad1e}.notice_info li[data-v-2b767e18]{font-size:14px;list-style:revert}.text-container[data-v-2b767e18]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-2b767e18]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-2b767e18]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-2b767e18]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-2b767e18]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-2b767e18]{width:100%}.text-container .text-container_item p.info-desc[data-v-2b767e18]{width:100%;color:#999;font-size:14px}.page-container[data-v-2b767e18]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-2b767e18]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-2b767e18]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-2b767e18]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-2b767e18],.page-container .page-flex .page-sidebar a[data-v-2b767e18]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-2b767e18]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-2b767e18]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-2b767e18]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-2b767e18]{border-radius:0;padding:1rem}ul.ul-container[data-v-2b767e18]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-2b767e18]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-2b767e18]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-2b767e18]{width:100%}form.form-container[data-v-2b767e18]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-2b767e18]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-2b767e18]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-2b767e18]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-2b767e18]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-2b767e18],form.form-container .label-value select[data-v-2b767e18]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-2b767e18]:focus,form.form-container .label-value select[data-v-2b767e18]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-2b767e18]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-2b767e18]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-2b767e18],form.form-container .label-value input[type=radio][data-v-2b767e18]{width:auto}form.form-container .label-value input[type=radio][data-v-2b767e18]{margin:0 4px 0 0}form.form-container .label-value input[data-v-2b767e18]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-2b767e18]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-2b767e18]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-2b767e18]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-2b767e18]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-2b767e18]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-2b767e18]:hover{background-color:#747474}form.form-container .label-msg[data-v-2b767e18]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-2b767e18]{color:#f9ad1e}form.form-container .label-flex[data-v-2b767e18]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-2b767e18]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-2b767e18]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-2b767e18]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-2b767e18]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-2b767e18]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-2b767e18]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-2b767e18],form.form-container1 .label-value select[data-v-2b767e18]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-2b767e18]:focus,form.form-container1 .label-value select[data-v-2b767e18]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-2b767e18]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-2b767e18],form.form-container1 .label-value input[type=radio][data-v-2b767e18]{width:auto}form.form-container1 .label-value input[type=radio][data-v-2b767e18]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-2b767e18]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-2b767e18]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-2b767e18]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-2b767e18]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-2b767e18]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-2b767e18]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-2b767e18]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-2b767e18]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-2b767e18]{color:#f9ad1e}form.form-container1 .label-flex[data-v-2b767e18]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-2b767e18]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-2b767e18]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-2b767e18]{width:100px}table.page-table th.checkbox[data-v-2b767e18]{width:50px;text-align:center}table.page-table th.setting[data-v-2b767e18]{width:100px;text-align:center}table.page-table thead[data-v-2b767e18]{color:#909399}table.page-table thead tr[data-v-2b767e18]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-2b767e18]{padding:10px 16px}table.page-table tbody tr[data-v-2b767e18]:hover{background-color:#eeee}table.page-table tbody tr[data-v-2b767e18]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-2b767e18]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-2b767e18]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-2b767e18]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-2b767e18]{width:100px}table.popups-table th.checkbox[data-v-2b767e18]{width:50px;text-align:center}table.popups-table th.setting[data-v-2b767e18]{width:100px;text-align:center}table.popups-table thead[data-v-2b767e18]{color:#eee}table.popups-table thead tr[data-v-2b767e18]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-2b767e18]{padding:10px 16px}table.popups-table tbody tr[data-v-2b767e18]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-2b767e18]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-2b767e18]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-2b767e18]{width:100%}header.header-desktop[data-v-2b767e18]{display:block}header.header-mobile[data-v-2b767e18]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-2b767e18]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-2b767e18]{width:100%;height:100%}header.header-mobile button svg path[data-v-2b767e18]{fill:#fff}nav.sidebar[data-v-2b767e18]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-2b767e18]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-2b767e18]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-2b767e18]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-2b767e18]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-2b767e18]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-2b767e18]{color:#fff}nav.sidebar .container .children[data-v-2b767e18]{padding-left:30px}@-moz-keyframes tada-2b767e18{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-2b767e18{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-2b767e18{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-2b767e18{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-2b767e18]{animation:dialogEnter-2b767e18 .3s linear forwards}.dialog-leave-active[data-v-2b767e18]{animation:dialogLeave-2b767e18 .3s linear forwards}@keyframes dialogEnter-2b767e18{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-2b767e18{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-2b767e18]{animation:dialogEnter-2b767e18 .2s linear forwards}.dialog1-leave-active[data-v-2b767e18]{animation:dialogLeave-2b767e18 .2s linear forwards}@keyframes slideOutTop-2b767e18{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-2b767e18{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-2b767e18]{animation:slideOutTop-2b767e18 .5s linear forwards}.slide-top-leave-active[data-v-2b767e18],.slide-bottom-enter-active[data-v-2b767e18]{animation:slideOutBottom-2b767e18 .5s linear forwards}@keyframes fadeStart-2b767e18{0%{height:0}to{height:100px}}@keyframes fadeEnd-2b767e18{0%{height:100%}to{height:0}}.fade-enter-active[data-v-2b767e18]{animation:fadeStart-2b767e18 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-2b767e18]{animation:fadeEnd-2b767e18 .1s linear forwards;overflow:hidden}.action-main[data-v-2b767e18]{width:680px;background-color:#fff;position:relative;z-index:99999;margin:auto;overflow:auto}.action-main[data-v-2b767e18] .actioner-container{width:100%}.action-main[data-v-2b767e18] .actioner-container .actioner-container_header{width:100%;height:50px;line-height:50px;display:flex;flex-wrap:wrap;align-items:center;font-size:20px;border-bottom:1px solid #eee;justify-content:center;padding:0 10px}.action-main[data-v-2b767e18] .actioner-container .actioner-container_footer{width:100%;height:50px;border-top:1px solid rgba(0,0,0,.06);display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:0 30px}.action-main[data-v-2b767e18] .actioner-container .actioner-container_footer button{display:inline-block;width:100px!important;margin:0;margin-left:1rem}.action-main[data-v-2b767e18] .actioner-container .actioner-container_footer .close{min-width:65px;font-weight:400;color:#0060ff;line-height:30px;text-align:center;cursor:pointer;height:32px;border-radius:2px;border:1px solid rgba(0,0,0,.15);font-size:14px;font-family:PingFangSC-Regular,PingFang SC;color:#000000d4;line-height:32px}.action-main[data-v-2b767e18] .actioner-container .actioner-container_footer .next{min-width:65px;line-height:32px;text-align:center;cursor:pointer;font-size:14px;font-family:PingFangSC-Regular,PingFang SC;font-weight:400;color:#fff;margin-left:20px;width:74px;height:32px;background:#553AFE;border-radius:2px}.action-main[data-v-2b767e18] .actioner-container .actioner-container_footer .next:hover,.action-main[data-v-2b767e18] .actioner-container .actioner-container_footer .close:hover{opacity:.9}.action-main[data-v-2b767e18] .actioner-container .actioner-container_body{padding:1rem;text-align:center;width:100%;height:400px}.action-main[data-v-2b767e18] .actioner-container .actioner-container_body a{text-decoration:none}.action-main[data-v-2b767e18] .actioner-container .actioner-container_body.ddnsto-bind{height:280px}@keyframes bganimation-2b767e18{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes rotateEnter-2b767e18{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}@keyframes turns-2b767e18{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}@keyframes slideInLeft-2b767e18{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-2b767e18{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-2b767e18]{animation:slideInLeft-2b767e18 .3s linear forwards}.slide-left-leave-active[data-v-2b767e18]{animation:slideInRight-2b767e18 .3s linear forwards}@keyframes slideOutLeft-2b767e18{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-2b767e18{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-2b767e18]{animation:slideOutLeft-2b767e18 .3s linear forwards}.slide-right-leave-active[data-v-2b767e18]{animation:slideOutRight-2b767e18 .3s linear forwards}.rotate-enter-active[data-v-2b767e18]{animation:rotateEnter-2b767e18 .7s;position:relative}.rotate-leave-active[data-v-2b767e18]{opacity:0;display:none;position:relative;z-index:-999}.app-container[data-v-2b767e18]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-2b767e18]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-2b767e18]{color:#f9ad1e}.notice_info li[data-v-2b767e18]{font-size:14px;list-style:revert}.text-container[data-v-2b767e18]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-2b767e18]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-2b767e18]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-2b767e18]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-2b767e18]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-2b767e18]{width:100%}.text-container .text-container_item p.info-desc[data-v-2b767e18]{width:100%;color:#999;font-size:14px}.page-container[data-v-2b767e18]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-2b767e18]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-2b767e18]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-2b767e18]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-2b767e18],.page-container .page-flex .page-sidebar a[data-v-2b767e18]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-2b767e18]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-2b767e18]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-2b767e18]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-2b767e18]{border-radius:0;padding:1rem}ul.ul-container[data-v-2b767e18]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-2b767e18]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-2b767e18]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-2b767e18]{width:100%}form.form-container[data-v-2b767e18]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-2b767e18]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-2b767e18]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-2b767e18]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-2b767e18]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-2b767e18],form.form-container .label-value select[data-v-2b767e18]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-2b767e18]:focus,form.form-container .label-value select[data-v-2b767e18]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-2b767e18]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-2b767e18]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-2b767e18],form.form-container .label-value input[type=radio][data-v-2b767e18]{width:auto}form.form-container .label-value input[type=radio][data-v-2b767e18]{margin:0 4px 0 0}form.form-container .label-value input[data-v-2b767e18]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-2b767e18]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-2b767e18]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-2b767e18]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-2b767e18]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-2b767e18]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-2b767e18]:hover{background-color:#747474}form.form-container .label-msg[data-v-2b767e18]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-2b767e18]{color:#f9ad1e}form.form-container .label-flex[data-v-2b767e18]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-2b767e18]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-2b767e18]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-2b767e18]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-2b767e18]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-2b767e18]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-2b767e18]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-2b767e18],form.form-container1 .label-value select[data-v-2b767e18]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-2b767e18]:focus,form.form-container1 .label-value select[data-v-2b767e18]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-2b767e18]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-2b767e18],form.form-container1 .label-value input[type=radio][data-v-2b767e18]{width:auto}form.form-container1 .label-value input[type=radio][data-v-2b767e18]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-2b767e18]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-2b767e18]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-2b767e18]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-2b767e18]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-2b767e18]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-2b767e18]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-2b767e18]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-2b767e18]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-2b767e18]{color:#f9ad1e}form.form-container1 .label-flex[data-v-2b767e18]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-2b767e18]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-2b767e18]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-2b767e18]{width:100px}table.page-table th.checkbox[data-v-2b767e18]{width:50px;text-align:center}table.page-table th.setting[data-v-2b767e18]{width:100px;text-align:center}table.page-table thead[data-v-2b767e18]{color:#909399}table.page-table thead tr[data-v-2b767e18]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-2b767e18]{padding:10px 16px}table.page-table tbody tr[data-v-2b767e18]:hover{background-color:#eeee}table.page-table tbody tr[data-v-2b767e18]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-2b767e18]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-2b767e18]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-2b767e18]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-2b767e18]{width:100px}table.popups-table th.checkbox[data-v-2b767e18]{width:50px;text-align:center}table.popups-table th.setting[data-v-2b767e18]{width:100px;text-align:center}table.popups-table thead[data-v-2b767e18]{color:#eee}table.popups-table thead tr[data-v-2b767e18]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-2b767e18]{padding:10px 16px}table.popups-table tbody tr[data-v-2b767e18]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-2b767e18]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-2b767e18]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-2b767e18]{width:100%}header.header-desktop[data-v-2b767e18]{display:block}header.header-mobile[data-v-2b767e18]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-2b767e18]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-2b767e18]{width:100%;height:100%}header.header-mobile button svg path[data-v-2b767e18]{fill:#fff}nav.sidebar[data-v-2b767e18]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-2b767e18]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-2b767e18]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-2b767e18]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-2b767e18]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-2b767e18]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-2b767e18]{color:#fff}nav.sidebar .container .children[data-v-2b767e18]{padding-left:30px}@-moz-keyframes tada-2b767e18{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-2b767e18{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-2b767e18{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-2b767e18{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-2b767e18]{animation:dialogEnter-2b767e18 .3s linear forwards}.dialog-leave-active[data-v-2b767e18]{animation:dialogLeave-2b767e18 .3s linear forwards}@keyframes dialogEnter-2b767e18{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-2b767e18{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-2b767e18]{animation:dialogEnter-2b767e18 .2s linear forwards}.dialog1-leave-active[data-v-2b767e18]{animation:dialogLeave-2b767e18 .2s linear forwards}@keyframes rotateEnter-2b767e18{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-2b767e18]{animation:rotateEnter-2b767e18 .7s;position:relative}.rotate-leave-active[data-v-2b767e18]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-2b767e18{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-2b767e18{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-2b767e18]{animation:slideOutTop-2b767e18 .5s linear forwards}.slide-top-leave-active[data-v-2b767e18],.slide-bottom-enter-active[data-v-2b767e18]{animation:slideOutBottom-2b767e18 .5s linear forwards}@keyframes slideInLeft-2b767e18{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-2b767e18{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-2b767e18]{animation:slideInLeft-2b767e18 .3s linear forwards}.slide-left-leave-active[data-v-2b767e18]{animation:slideInRight-2b767e18 .3s linear forwards}@keyframes slideOutLeft-2b767e18{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-2b767e18{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-2b767e18]{animation:slideOutLeft-2b767e18 .3s linear forwards}.slide-right-leave-active[data-v-2b767e18]{animation:slideOutRight-2b767e18 .3s linear forwards}@keyframes bganimation-2b767e18{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-2b767e18{0%{height:0}to{height:100px}}@keyframes fadeEnd-2b767e18{0%{height:100%}to{height:0}}.fade-enter-active[data-v-2b767e18]{animation:fadeStart-2b767e18 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-2b767e18]{animation:fadeEnd-2b767e18 .1s linear forwards;overflow:hidden}@media screen and (max-width: 800px){.action-main[data-v-2b767e18]{width:90%}}@keyframes bganimation-4283f74c{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes rotateEnter-4283f74c{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}@keyframes turns-4283f74c{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}@keyframes slideInLeft-4283f74c{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-4283f74c{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-4283f74c]{animation:slideInLeft-4283f74c .3s linear forwards}.slide-left-leave-active[data-v-4283f74c]{animation:slideInRight-4283f74c .3s linear forwards}@keyframes slideOutLeft-4283f74c{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-4283f74c{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-4283f74c]{animation:slideOutLeft-4283f74c .3s linear forwards}.slide-right-leave-active[data-v-4283f74c]{animation:slideOutRight-4283f74c .3s linear forwards}.rotate-enter-active[data-v-4283f74c]{animation:rotateEnter-4283f74c .7s;position:relative}.rotate-leave-active[data-v-4283f74c]{opacity:0;display:none;position:relative;z-index:-999}.app-container[data-v-4283f74c]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-4283f74c]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-4283f74c]{color:#f9ad1e}.notice_info li[data-v-4283f74c]{font-size:14px;list-style:revert}.text-container[data-v-4283f74c]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-4283f74c]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-4283f74c]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-4283f74c]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-4283f74c]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-4283f74c]{width:100%}.text-container .text-container_item p.info-desc[data-v-4283f74c]{width:100%;color:#999;font-size:14px}.page-container[data-v-4283f74c]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-4283f74c]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-4283f74c]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-4283f74c]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-4283f74c],.page-container .page-flex .page-sidebar a[data-v-4283f74c]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-4283f74c]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-4283f74c]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-4283f74c]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-4283f74c]{border-radius:0;padding:1rem}ul.ul-container[data-v-4283f74c]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-4283f74c]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-4283f74c]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-4283f74c]{width:100%}form.form-container[data-v-4283f74c]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-4283f74c]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-4283f74c]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-4283f74c]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-4283f74c]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-4283f74c],form.form-container .label-value select[data-v-4283f74c]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-4283f74c]:focus,form.form-container .label-value select[data-v-4283f74c]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-4283f74c]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-4283f74c]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-4283f74c],form.form-container .label-value input[type=radio][data-v-4283f74c]{width:auto}form.form-container .label-value input[type=radio][data-v-4283f74c]{margin:0 4px 0 0}form.form-container .label-value input[data-v-4283f74c]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-4283f74c]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-4283f74c]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-4283f74c]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-4283f74c]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-4283f74c]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-4283f74c]:hover{background-color:#747474}form.form-container .label-msg[data-v-4283f74c]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-4283f74c]{color:#f9ad1e}form.form-container .label-flex[data-v-4283f74c]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-4283f74c]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-4283f74c]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-4283f74c]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-4283f74c]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-4283f74c]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-4283f74c]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-4283f74c],form.form-container1 .label-value select[data-v-4283f74c]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-4283f74c]:focus,form.form-container1 .label-value select[data-v-4283f74c]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-4283f74c]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-4283f74c],form.form-container1 .label-value input[type=radio][data-v-4283f74c]{width:auto}form.form-container1 .label-value input[type=radio][data-v-4283f74c]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-4283f74c]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-4283f74c]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-4283f74c]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-4283f74c]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-4283f74c]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-4283f74c]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-4283f74c]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-4283f74c]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-4283f74c]{color:#f9ad1e}form.form-container1 .label-flex[data-v-4283f74c]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-4283f74c]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-4283f74c]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-4283f74c]{width:100px}table.page-table th.checkbox[data-v-4283f74c]{width:50px;text-align:center}table.page-table th.setting[data-v-4283f74c]{width:100px;text-align:center}table.page-table thead[data-v-4283f74c]{color:#909399}table.page-table thead tr[data-v-4283f74c]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-4283f74c]{padding:10px 16px}table.page-table tbody tr[data-v-4283f74c]:hover{background-color:#eeee}table.page-table tbody tr[data-v-4283f74c]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-4283f74c]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-4283f74c]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-4283f74c]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-4283f74c]{width:100px}table.popups-table th.checkbox[data-v-4283f74c]{width:50px;text-align:center}table.popups-table th.setting[data-v-4283f74c]{width:100px;text-align:center}table.popups-table thead[data-v-4283f74c]{color:#eee}table.popups-table thead tr[data-v-4283f74c]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-4283f74c]{padding:10px 16px}table.popups-table tbody tr[data-v-4283f74c]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-4283f74c]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-4283f74c]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-4283f74c]{width:100%}header.header-desktop[data-v-4283f74c]{display:block}header.header-mobile[data-v-4283f74c]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-4283f74c]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-4283f74c]{width:100%;height:100%}header.header-mobile button svg path[data-v-4283f74c]{fill:#fff}nav.sidebar[data-v-4283f74c]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-4283f74c]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-4283f74c]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-4283f74c]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-4283f74c]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-4283f74c]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-4283f74c]{color:#fff}nav.sidebar .container .children[data-v-4283f74c]{padding-left:30px}@-moz-keyframes tada-4283f74c{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-4283f74c{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-4283f74c{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-4283f74c{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-4283f74c]{animation:dialogEnter-4283f74c .3s linear forwards}.dialog-leave-active[data-v-4283f74c]{animation:dialogLeave-4283f74c .3s linear forwards}@keyframes dialogEnter-4283f74c{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-4283f74c{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-4283f74c]{animation:dialogEnter-4283f74c .2s linear forwards}.dialog1-leave-active[data-v-4283f74c]{animation:dialogLeave-4283f74c .2s linear forwards}@keyframes rotateEnter-4283f74c{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-4283f74c]{animation:rotateEnter-4283f74c .7s;position:relative}.rotate-leave-active[data-v-4283f74c]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-4283f74c{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-4283f74c{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-4283f74c]{animation:slideOutTop-4283f74c .5s linear forwards}.slide-top-leave-active[data-v-4283f74c],.slide-bottom-enter-active[data-v-4283f74c]{animation:slideOutBottom-4283f74c .5s linear forwards}@keyframes slideInLeft-4283f74c{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-4283f74c{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-4283f74c]{animation:slideInLeft-4283f74c .3s linear forwards}.slide-left-leave-active[data-v-4283f74c]{animation:slideInRight-4283f74c .3s linear forwards}@keyframes slideOutLeft-4283f74c{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-4283f74c{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-4283f74c]{animation:slideOutLeft-4283f74c .3s linear forwards}.slide-right-leave-active[data-v-4283f74c]{animation:slideOutRight-4283f74c .3s linear forwards}@keyframes bganimation-4283f74c{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-4283f74c{0%{height:0}to{height:100px}}@keyframes fadeEnd-4283f74c{0%{height:100%}to{height:0}}.fade-enter-active[data-v-4283f74c]{animation:fadeStart-4283f74c .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-4283f74c]{animation:fadeEnd-4283f74c .1s linear forwards;overflow:hidden}.action[data-v-4283f74c]{width:500px;max-height:90%;background-color:#fff;position:relative;z-index:99999;margin:auto;border-radius:4px;padding:10px 0}.action .action-header[data-v-4283f74c]{width:100%;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;padding-left:1rem;padding-right:1rem;text-align:left;font-size:18px;line-height:1;color:#303133}.action .action-body[data-v-4283f74c]{display:block;margin:2rem 0;line-height:24px;padding:0 15px;color:#606266;font-size:14px}.action .action-footer[data-v-4283f74c]{width:100%;height:50px;border-top:1px solid rgba(0,0,0,.06);display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:0 30px}.action .next[data-v-4283f74c]{min-width:65px;line-height:32px;text-align:center;cursor:pointer;font-size:14px;font-family:PingFangSC-Regular,PingFang SC;font-weight:400;color:#fff;margin-left:20px;width:120px;height:32px;background:#553afe;border-radius:2px}.action .next[data-v-4283f74c]:hover{opacity:.8}.action .clear[data-v-4283f74c]{min-width:65px;font-weight:400;line-height:30px;text-align:center;cursor:pointer;height:32px;border-radius:2px;border:1px solid rgba(0,0,0,.15);font-size:14px;font-family:PingFangSC-Regular,PingFang SC;color:#000000d4;line-height:32px}.action .clear[data-v-4283f74c]:hover{opacity:.8}@keyframes bganimation-b1e12544{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes rotateEnter-b1e12544{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}@keyframes turns-b1e12544{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}@keyframes slideInLeft-b1e12544{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-b1e12544{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-b1e12544]{animation:slideInLeft-b1e12544 .3s linear forwards}.slide-left-leave-active[data-v-b1e12544]{animation:slideInRight-b1e12544 .3s linear forwards}@keyframes slideOutLeft-b1e12544{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-b1e12544{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-b1e12544]{animation:slideOutLeft-b1e12544 .3s linear forwards}.slide-right-leave-active[data-v-b1e12544]{animation:slideOutRight-b1e12544 .3s linear forwards}.rotate-enter-active[data-v-b1e12544]{animation:rotateEnter-b1e12544 .7s;position:relative}.rotate-leave-active[data-v-b1e12544]{opacity:0;display:none;position:relative;z-index:-999}.app-container[data-v-b1e12544]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-b1e12544]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-b1e12544]{color:#f9ad1e}.notice_info li[data-v-b1e12544]{font-size:14px;list-style:revert}.text-container[data-v-b1e12544]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-b1e12544]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-b1e12544]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-b1e12544]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-b1e12544]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-b1e12544]{width:100%}.text-container .text-container_item p.info-desc[data-v-b1e12544]{width:100%;color:#999;font-size:14px}.page-container[data-v-b1e12544]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-b1e12544]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-b1e12544]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-b1e12544]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-b1e12544],.page-container .page-flex .page-sidebar a[data-v-b1e12544]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-b1e12544]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-b1e12544]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-b1e12544]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-b1e12544]{border-radius:0;padding:1rem}ul.ul-container[data-v-b1e12544]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-b1e12544]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-b1e12544]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-b1e12544]{width:100%}form.form-container[data-v-b1e12544]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-b1e12544]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-b1e12544]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-b1e12544]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-b1e12544]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-b1e12544],form.form-container .label-value select[data-v-b1e12544]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-b1e12544]:focus,form.form-container .label-value select[data-v-b1e12544]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-b1e12544]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-b1e12544]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-b1e12544],form.form-container .label-value input[type=radio][data-v-b1e12544]{width:auto}form.form-container .label-value input[type=radio][data-v-b1e12544]{margin:0 4px 0 0}form.form-container .label-value input[data-v-b1e12544]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-b1e12544]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-b1e12544]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-b1e12544]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-b1e12544]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-b1e12544]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-b1e12544]:hover{background-color:#747474}form.form-container .label-msg[data-v-b1e12544]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-b1e12544]{color:#f9ad1e}form.form-container .label-flex[data-v-b1e12544]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-b1e12544]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-b1e12544]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-b1e12544]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-b1e12544]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-b1e12544]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-b1e12544]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-b1e12544],form.form-container1 .label-value select[data-v-b1e12544]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-b1e12544]:focus,form.form-container1 .label-value select[data-v-b1e12544]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-b1e12544]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-b1e12544],form.form-container1 .label-value input[type=radio][data-v-b1e12544]{width:auto}form.form-container1 .label-value input[type=radio][data-v-b1e12544]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-b1e12544]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-b1e12544]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-b1e12544]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-b1e12544]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-b1e12544]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-b1e12544]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-b1e12544]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-b1e12544]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-b1e12544]{color:#f9ad1e}form.form-container1 .label-flex[data-v-b1e12544]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-b1e12544]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-b1e12544]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-b1e12544]{width:100px}table.page-table th.checkbox[data-v-b1e12544]{width:50px;text-align:center}table.page-table th.setting[data-v-b1e12544]{width:100px;text-align:center}table.page-table thead[data-v-b1e12544]{color:#909399}table.page-table thead tr[data-v-b1e12544]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-b1e12544]{padding:10px 16px}table.page-table tbody tr[data-v-b1e12544]:hover{background-color:#eeee}table.page-table tbody tr[data-v-b1e12544]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-b1e12544]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-b1e12544]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-b1e12544]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-b1e12544]{width:100px}table.popups-table th.checkbox[data-v-b1e12544]{width:50px;text-align:center}table.popups-table th.setting[data-v-b1e12544]{width:100px;text-align:center}table.popups-table thead[data-v-b1e12544]{color:#eee}table.popups-table thead tr[data-v-b1e12544]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-b1e12544]{padding:10px 16px}table.popups-table tbody tr[data-v-b1e12544]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-b1e12544]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-b1e12544]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-b1e12544]{width:100%}header.header-desktop[data-v-b1e12544]{display:block}header.header-mobile[data-v-b1e12544]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-b1e12544]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-b1e12544]{width:100%;height:100%}header.header-mobile button svg path[data-v-b1e12544]{fill:#fff}nav.sidebar[data-v-b1e12544]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-b1e12544]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-b1e12544]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-b1e12544]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-b1e12544]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-b1e12544]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-b1e12544]{color:#fff}nav.sidebar .container .children[data-v-b1e12544]{padding-left:30px}@-moz-keyframes tada-b1e12544{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-b1e12544{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-b1e12544{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-b1e12544{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-b1e12544]{animation:dialogEnter-b1e12544 .3s linear forwards}.dialog-leave-active[data-v-b1e12544]{animation:dialogLeave-b1e12544 .3s linear forwards}@keyframes dialogEnter-b1e12544{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-b1e12544{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-b1e12544]{animation:dialogEnter-b1e12544 .2s linear forwards}.dialog1-leave-active[data-v-b1e12544]{animation:dialogLeave-b1e12544 .2s linear forwards}@keyframes rotateEnter-b1e12544{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-b1e12544]{animation:rotateEnter-b1e12544 .7s;position:relative}.rotate-leave-active[data-v-b1e12544]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-b1e12544{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-b1e12544{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-b1e12544]{animation:slideOutTop-b1e12544 .5s linear forwards}.slide-top-leave-active[data-v-b1e12544],.slide-bottom-enter-active[data-v-b1e12544]{animation:slideOutBottom-b1e12544 .5s linear forwards}@keyframes slideInLeft-b1e12544{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-b1e12544{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-b1e12544]{animation:slideInLeft-b1e12544 .3s linear forwards}.slide-left-leave-active[data-v-b1e12544]{animation:slideInRight-b1e12544 .3s linear forwards}@keyframes slideOutLeft-b1e12544{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-b1e12544{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-b1e12544]{animation:slideOutLeft-b1e12544 .3s linear forwards}.slide-right-leave-active[data-v-b1e12544]{animation:slideOutRight-b1e12544 .3s linear forwards}@keyframes bganimation-b1e12544{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-b1e12544{0%{height:0}to{height:100px}}@keyframes fadeEnd-b1e12544{0%{height:100%}to{height:0}}.fade-enter-active[data-v-b1e12544]{animation:fadeStart-b1e12544 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-b1e12544]{animation:fadeEnd-b1e12544 .1s linear forwards;overflow:hidden}.title_info[data-v-b1e12544]{display:block;width:100%;text-align:center}.title_info p[data-v-b1e12544]{font-size:20px;margin-bottom:10px}.label-item[data-v-b1e12544]{width:100%;margin:1rem 0}.label-item .label-item_key[data-v-b1e12544]{width:100%;font-size:12px;color:#666}.label-item .label-item_key span[data-v-b1e12544]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.label-item .label-item_key span[data-v-b1e12544]:before{content:"*";color:#f56c6c;margin-right:4px}.label-item .label-item_value[data-v-b1e12544]{width:100%;margin-top:5px}.label-item .label-item_value select[data-v-b1e12544],.label-item .label-item_value input[data-v-b1e12544]{width:100%;height:36px;color:#000}.label-item .label-item_value input[data-v-b1e12544]::placeholder{color:#999;font-size:12px}.label-item .label_tips[data-v-b1e12544]{display:flex;margin-top:6px}.label-item .label_tips .info[data-v-b1e12544]{margin-left:8px}.label-message[data-v-b1e12544]{width:100%;text-align:left;font-size:14px;color:red;text-align:center}@keyframes bganimation-5d97cabd{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes rotateEnter-5d97cabd{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}@keyframes turns-5d97cabd{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}@keyframes slideInLeft-5d97cabd{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-5d97cabd{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-5d97cabd]{animation:slideInLeft-5d97cabd .3s linear forwards}.slide-left-leave-active[data-v-5d97cabd]{animation:slideInRight-5d97cabd .3s linear forwards}@keyframes slideOutLeft-5d97cabd{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-5d97cabd{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-5d97cabd]{animation:slideOutLeft-5d97cabd .3s linear forwards}.slide-right-leave-active[data-v-5d97cabd]{animation:slideOutRight-5d97cabd .3s linear forwards}.rotate-enter-active[data-v-5d97cabd]{animation:rotateEnter-5d97cabd .7s;position:relative}.rotate-leave-active[data-v-5d97cabd]{opacity:0;display:none;position:relative;z-index:-999}.app-container[data-v-5d97cabd]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-5d97cabd]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-5d97cabd]{color:#f9ad1e}.notice_info li[data-v-5d97cabd]{font-size:14px;list-style:revert}.text-container[data-v-5d97cabd]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-5d97cabd]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-5d97cabd]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-5d97cabd]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-5d97cabd]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-5d97cabd]{width:100%}.text-container .text-container_item p.info-desc[data-v-5d97cabd]{width:100%;color:#999;font-size:14px}.page-container[data-v-5d97cabd]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-5d97cabd]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-5d97cabd]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-5d97cabd]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-5d97cabd],.page-container .page-flex .page-sidebar a[data-v-5d97cabd]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-5d97cabd]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-5d97cabd]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-5d97cabd]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-5d97cabd]{border-radius:0;padding:1rem}ul.ul-container[data-v-5d97cabd]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-5d97cabd]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-5d97cabd]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-5d97cabd]{width:100%}form.form-container[data-v-5d97cabd]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-5d97cabd]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-5d97cabd]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-5d97cabd]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-5d97cabd]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-5d97cabd],form.form-container .label-value select[data-v-5d97cabd]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-5d97cabd]:focus,form.form-container .label-value select[data-v-5d97cabd]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-5d97cabd]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-5d97cabd]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-5d97cabd],form.form-container .label-value input[type=radio][data-v-5d97cabd]{width:auto}form.form-container .label-value input[type=radio][data-v-5d97cabd]{margin:0 4px 0 0}form.form-container .label-value input[data-v-5d97cabd]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-5d97cabd]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-5d97cabd]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-5d97cabd]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-5d97cabd]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-5d97cabd]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-5d97cabd]:hover{background-color:#747474}form.form-container .label-msg[data-v-5d97cabd]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-5d97cabd]{color:#f9ad1e}form.form-container .label-flex[data-v-5d97cabd]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-5d97cabd]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-5d97cabd]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-5d97cabd]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-5d97cabd]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-5d97cabd]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-5d97cabd]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-5d97cabd],form.form-container1 .label-value select[data-v-5d97cabd]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-5d97cabd]:focus,form.form-container1 .label-value select[data-v-5d97cabd]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-5d97cabd]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-5d97cabd],form.form-container1 .label-value input[type=radio][data-v-5d97cabd]{width:auto}form.form-container1 .label-value input[type=radio][data-v-5d97cabd]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-5d97cabd]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-5d97cabd]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-5d97cabd]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-5d97cabd]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-5d97cabd]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-5d97cabd]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-5d97cabd]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-5d97cabd]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-5d97cabd]{color:#f9ad1e}form.form-container1 .label-flex[data-v-5d97cabd]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-5d97cabd]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-5d97cabd]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-5d97cabd]{width:100px}table.page-table th.checkbox[data-v-5d97cabd]{width:50px;text-align:center}table.page-table th.setting[data-v-5d97cabd]{width:100px;text-align:center}table.page-table thead[data-v-5d97cabd]{color:#909399}table.page-table thead tr[data-v-5d97cabd]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-5d97cabd]{padding:10px 16px}table.page-table tbody tr[data-v-5d97cabd]:hover{background-color:#eeee}table.page-table tbody tr[data-v-5d97cabd]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-5d97cabd]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-5d97cabd]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-5d97cabd]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-5d97cabd]{width:100px}table.popups-table th.checkbox[data-v-5d97cabd]{width:50px;text-align:center}table.popups-table th.setting[data-v-5d97cabd]{width:100px;text-align:center}table.popups-table thead[data-v-5d97cabd]{color:#eee}table.popups-table thead tr[data-v-5d97cabd]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-5d97cabd]{padding:10px 16px}table.popups-table tbody tr[data-v-5d97cabd]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-5d97cabd]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-5d97cabd]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-5d97cabd]{width:100%}header.header-desktop[data-v-5d97cabd]{display:block}header.header-mobile[data-v-5d97cabd]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-5d97cabd]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-5d97cabd]{width:100%;height:100%}header.header-mobile button svg path[data-v-5d97cabd]{fill:#fff}nav.sidebar[data-v-5d97cabd]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-5d97cabd]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-5d97cabd]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-5d97cabd]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-5d97cabd]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-5d97cabd]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-5d97cabd]{color:#fff}nav.sidebar .container .children[data-v-5d97cabd]{padding-left:30px}@-moz-keyframes tada-5d97cabd{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-5d97cabd{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-5d97cabd{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-5d97cabd{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-5d97cabd]{animation:dialogEnter-5d97cabd .3s linear forwards}.dialog-leave-active[data-v-5d97cabd]{animation:dialogLeave-5d97cabd .3s linear forwards}@keyframes dialogEnter-5d97cabd{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-5d97cabd{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-5d97cabd]{animation:dialogEnter-5d97cabd .2s linear forwards}.dialog1-leave-active[data-v-5d97cabd]{animation:dialogLeave-5d97cabd .2s linear forwards}@keyframes slideOutTop-5d97cabd{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-5d97cabd{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-5d97cabd]{animation:slideOutTop-5d97cabd .5s linear forwards}.slide-top-leave-active[data-v-5d97cabd],.slide-bottom-enter-active[data-v-5d97cabd]{animation:slideOutBottom-5d97cabd .5s linear forwards}@keyframes fadeStart-5d97cabd{0%{height:0}to{height:100px}}@keyframes fadeEnd-5d97cabd{0%{height:100%}to{height:0}}.fade-enter-active[data-v-5d97cabd]{animation:fadeStart-5d97cabd .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-5d97cabd]{animation:fadeEnd-5d97cabd .1s linear forwards;overflow:hidden}.action-main[data-v-5d97cabd]{width:680px;background-color:#fff;position:relative;z-index:99999;margin:auto;overflow:auto}.action-main[data-v-5d97cabd] .actioner-container{width:100%}.action-main[data-v-5d97cabd] .actioner-container .actioner-container_header{width:100%;height:50px;line-height:50px;display:flex;flex-wrap:wrap;align-items:center;font-size:20px;border-bottom:1px solid #eee;justify-content:center;padding:0 10px}.action-main[data-v-5d97cabd] .actioner-container .actioner-container_footer{width:100%;height:50px;border-top:1px solid rgba(0,0,0,.06);display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:0 30px}.action-main[data-v-5d97cabd] .actioner-container .actioner-container_footer button{display:inline-block;width:100px!important;margin:0;margin-left:1rem}.action-main[data-v-5d97cabd] .actioner-container .actioner-container_footer .close{min-width:65px;font-weight:400;line-height:30px;text-align:center;cursor:pointer;height:32px;border-radius:2px;border:1px solid rgba(0,0,0,.15);font-size:14px;font-family:PingFangSC-Regular,PingFang SC;color:#000000d4;line-height:32px}.action-main[data-v-5d97cabd] .actioner-container .actioner-container_footer .next{min-width:65px;line-height:32px;text-align:center;cursor:pointer;font-size:14px;font-family:PingFangSC-Regular,PingFang SC;font-weight:400;color:#fff;margin-left:20px;width:74px;height:32px;background:#553AFE;border-radius:2px}.action-main[data-v-5d97cabd] .actioner-container .actioner-container_footer .next.save{height:32px;background:#553AFE;border-radius:2px;line-height:16px}.action-main[data-v-5d97cabd] .actioner-container .actioner-container_footer .next:hover,.action-main[data-v-5d97cabd] .actioner-container .actioner-container_footer .close:hover{opacity:.9}.action-main[data-v-5d97cabd] .actioner-container .actioner-container_body{padding:1rem;width:100%;height:400px}.action-main[data-v-5d97cabd] .actioner-container .actioner-container_body a{text-decoration:none}.action-main[data-v-5d97cabd] .actioner-container .actioner-container_body.ali,.action-main[data-v-5d97cabd] .actioner-container .actioner-container_body.dnspod,.action-main[data-v-5d97cabd] .actioner-container .actioner-container_body.oray{height:451px}@keyframes bganimation-5d97cabd{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes rotateEnter-5d97cabd{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}@keyframes turns-5d97cabd{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}@keyframes slideInLeft-5d97cabd{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-5d97cabd{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-5d97cabd]{animation:slideInLeft-5d97cabd .3s linear forwards}.slide-left-leave-active[data-v-5d97cabd]{animation:slideInRight-5d97cabd .3s linear forwards}@keyframes slideOutLeft-5d97cabd{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-5d97cabd{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-5d97cabd]{animation:slideOutLeft-5d97cabd .3s linear forwards}.slide-right-leave-active[data-v-5d97cabd]{animation:slideOutRight-5d97cabd .3s linear forwards}.rotate-enter-active[data-v-5d97cabd]{animation:rotateEnter-5d97cabd .7s;position:relative}.rotate-leave-active[data-v-5d97cabd]{opacity:0;display:none;position:relative;z-index:-999}.app-container[data-v-5d97cabd]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-5d97cabd]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-5d97cabd]{color:#f9ad1e}.notice_info li[data-v-5d97cabd]{font-size:14px;list-style:revert}.text-container[data-v-5d97cabd]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-5d97cabd]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-5d97cabd]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-5d97cabd]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-5d97cabd]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-5d97cabd]{width:100%}.text-container .text-container_item p.info-desc[data-v-5d97cabd]{width:100%;color:#999;font-size:14px}.page-container[data-v-5d97cabd]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-5d97cabd]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-5d97cabd]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-5d97cabd]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-5d97cabd],.page-container .page-flex .page-sidebar a[data-v-5d97cabd]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-5d97cabd]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-5d97cabd]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-5d97cabd]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-5d97cabd]{border-radius:0;padding:1rem}ul.ul-container[data-v-5d97cabd]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-5d97cabd]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-5d97cabd]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-5d97cabd]{width:100%}form.form-container[data-v-5d97cabd]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-5d97cabd]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-5d97cabd]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-5d97cabd]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-5d97cabd]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-5d97cabd],form.form-container .label-value select[data-v-5d97cabd]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-5d97cabd]:focus,form.form-container .label-value select[data-v-5d97cabd]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-5d97cabd]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-5d97cabd]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-5d97cabd],form.form-container .label-value input[type=radio][data-v-5d97cabd]{width:auto}form.form-container .label-value input[type=radio][data-v-5d97cabd]{margin:0 4px 0 0}form.form-container .label-value input[data-v-5d97cabd]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-5d97cabd]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-5d97cabd]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-5d97cabd]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-5d97cabd]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-5d97cabd]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-5d97cabd]:hover{background-color:#747474}form.form-container .label-msg[data-v-5d97cabd]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-5d97cabd]{color:#f9ad1e}form.form-container .label-flex[data-v-5d97cabd]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-5d97cabd]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-5d97cabd]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-5d97cabd]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-5d97cabd]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-5d97cabd]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-5d97cabd]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-5d97cabd],form.form-container1 .label-value select[data-v-5d97cabd]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-5d97cabd]:focus,form.form-container1 .label-value select[data-v-5d97cabd]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-5d97cabd]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-5d97cabd],form.form-container1 .label-value input[type=radio][data-v-5d97cabd]{width:auto}form.form-container1 .label-value input[type=radio][data-v-5d97cabd]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-5d97cabd]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-5d97cabd]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-5d97cabd]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-5d97cabd]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-5d97cabd]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-5d97cabd]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-5d97cabd]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-5d97cabd]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-5d97cabd]{color:#f9ad1e}form.form-container1 .label-flex[data-v-5d97cabd]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-5d97cabd]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-5d97cabd]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-5d97cabd]{width:100px}table.page-table th.checkbox[data-v-5d97cabd]{width:50px;text-align:center}table.page-table th.setting[data-v-5d97cabd]{width:100px;text-align:center}table.page-table thead[data-v-5d97cabd]{color:#909399}table.page-table thead tr[data-v-5d97cabd]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-5d97cabd]{padding:10px 16px}table.page-table tbody tr[data-v-5d97cabd]:hover{background-color:#eeee}table.page-table tbody tr[data-v-5d97cabd]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-5d97cabd]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-5d97cabd]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-5d97cabd]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-5d97cabd]{width:100px}table.popups-table th.checkbox[data-v-5d97cabd]{width:50px;text-align:center}table.popups-table th.setting[data-v-5d97cabd]{width:100px;text-align:center}table.popups-table thead[data-v-5d97cabd]{color:#eee}table.popups-table thead tr[data-v-5d97cabd]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-5d97cabd]{padding:10px 16px}table.popups-table tbody tr[data-v-5d97cabd]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-5d97cabd]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-5d97cabd]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-5d97cabd]{width:100%}header.header-desktop[data-v-5d97cabd]{display:block}header.header-mobile[data-v-5d97cabd]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-5d97cabd]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-5d97cabd]{width:100%;height:100%}header.header-mobile button svg path[data-v-5d97cabd]{fill:#fff}nav.sidebar[data-v-5d97cabd]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-5d97cabd]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-5d97cabd]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-5d97cabd]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-5d97cabd]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-5d97cabd]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-5d97cabd]{color:#fff}nav.sidebar .container .children[data-v-5d97cabd]{padding-left:30px}@-moz-keyframes tada-5d97cabd{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-5d97cabd{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-5d97cabd{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-5d97cabd{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-5d97cabd]{animation:dialogEnter-5d97cabd .3s linear forwards}.dialog-leave-active[data-v-5d97cabd]{animation:dialogLeave-5d97cabd .3s linear forwards}@keyframes dialogEnter-5d97cabd{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-5d97cabd{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-5d97cabd]{animation:dialogEnter-5d97cabd .2s linear forwards}.dialog1-leave-active[data-v-5d97cabd]{animation:dialogLeave-5d97cabd .2s linear forwards}@keyframes rotateEnter-5d97cabd{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-5d97cabd]{animation:rotateEnter-5d97cabd .7s;position:relative}.rotate-leave-active[data-v-5d97cabd]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-5d97cabd{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-5d97cabd{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-5d97cabd]{animation:slideOutTop-5d97cabd .5s linear forwards}.slide-top-leave-active[data-v-5d97cabd],.slide-bottom-enter-active[data-v-5d97cabd]{animation:slideOutBottom-5d97cabd .5s linear forwards}@keyframes slideInLeft-5d97cabd{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-5d97cabd{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-5d97cabd]{animation:slideInLeft-5d97cabd .3s linear forwards}.slide-left-leave-active[data-v-5d97cabd]{animation:slideInRight-5d97cabd .3s linear forwards}@keyframes slideOutLeft-5d97cabd{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-5d97cabd{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-5d97cabd]{animation:slideOutLeft-5d97cabd .3s linear forwards}.slide-right-leave-active[data-v-5d97cabd]{animation:slideOutRight-5d97cabd .3s linear forwards}@keyframes bganimation-5d97cabd{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-5d97cabd{0%{height:0}to{height:100px}}@keyframes fadeEnd-5d97cabd{0%{height:100%}to{height:0}}.fade-enter-active[data-v-5d97cabd]{animation:fadeStart-5d97cabd .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-5d97cabd]{animation:fadeEnd-5d97cabd .1s linear forwards;overflow:hidden}@media screen and (max-width: 800px){.action-main[data-v-5d97cabd]{width:90%}}@keyframes bganimation-2f910f70{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes rotateEnter-2f910f70{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}@keyframes turns-2f910f70{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}@keyframes slideInLeft-2f910f70{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-2f910f70{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-2f910f70]{animation:slideInLeft-2f910f70 .3s linear forwards}.slide-left-leave-active[data-v-2f910f70]{animation:slideInRight-2f910f70 .3s linear forwards}@keyframes slideOutLeft-2f910f70{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-2f910f70{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-2f910f70]{animation:slideOutLeft-2f910f70 .3s linear forwards}.slide-right-leave-active[data-v-2f910f70]{animation:slideOutRight-2f910f70 .3s linear forwards}.rotate-enter-active[data-v-2f910f70]{animation:rotateEnter-2f910f70 .7s;position:relative}.rotate-leave-active[data-v-2f910f70]{opacity:0;display:none;position:relative;z-index:-999}.app-container[data-v-2f910f70]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-2f910f70]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-2f910f70]{color:#f9ad1e}.notice_info li[data-v-2f910f70]{font-size:14px;list-style:revert}.text-container[data-v-2f910f70]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-2f910f70]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-2f910f70]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-2f910f70]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-2f910f70]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-2f910f70]{width:100%}.text-container .text-container_item p.info-desc[data-v-2f910f70]{width:100%;color:#999;font-size:14px}.page-container[data-v-2f910f70]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-2f910f70]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-2f910f70]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-2f910f70]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-2f910f70],.page-container .page-flex .page-sidebar a[data-v-2f910f70]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-2f910f70]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-2f910f70]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-2f910f70]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-2f910f70]{border-radius:0;padding:1rem}ul.ul-container[data-v-2f910f70]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-2f910f70]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-2f910f70]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-2f910f70]{width:100%}form.form-container[data-v-2f910f70]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-2f910f70]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-2f910f70]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-2f910f70]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-2f910f70]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-2f910f70],form.form-container .label-value select[data-v-2f910f70]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-2f910f70]:focus,form.form-container .label-value select[data-v-2f910f70]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-2f910f70]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-2f910f70]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-2f910f70],form.form-container .label-value input[type=radio][data-v-2f910f70]{width:auto}form.form-container .label-value input[type=radio][data-v-2f910f70]{margin:0 4px 0 0}form.form-container .label-value input[data-v-2f910f70]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-2f910f70]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-2f910f70]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-2f910f70]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-2f910f70]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-2f910f70]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-2f910f70]:hover{background-color:#747474}form.form-container .label-msg[data-v-2f910f70]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-2f910f70]{color:#f9ad1e}form.form-container .label-flex[data-v-2f910f70]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-2f910f70]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-2f910f70]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-2f910f70]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-2f910f70]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-2f910f70]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-2f910f70]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-2f910f70],form.form-container1 .label-value select[data-v-2f910f70]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-2f910f70]:focus,form.form-container1 .label-value select[data-v-2f910f70]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-2f910f70]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-2f910f70],form.form-container1 .label-value input[type=radio][data-v-2f910f70]{width:auto}form.form-container1 .label-value input[type=radio][data-v-2f910f70]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-2f910f70]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-2f910f70]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-2f910f70]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-2f910f70]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-2f910f70]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-2f910f70]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-2f910f70]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-2f910f70]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-2f910f70]{color:#f9ad1e}form.form-container1 .label-flex[data-v-2f910f70]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-2f910f70]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-2f910f70]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-2f910f70]{width:100px}table.page-table th.checkbox[data-v-2f910f70]{width:50px;text-align:center}table.page-table th.setting[data-v-2f910f70]{width:100px;text-align:center}table.page-table thead[data-v-2f910f70]{color:#909399}table.page-table thead tr[data-v-2f910f70]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-2f910f70]{padding:10px 16px}table.page-table tbody tr[data-v-2f910f70]:hover{background-color:#eeee}table.page-table tbody tr[data-v-2f910f70]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-2f910f70]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-2f910f70]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-2f910f70]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-2f910f70]{width:100px}table.popups-table th.checkbox[data-v-2f910f70]{width:50px;text-align:center}table.popups-table th.setting[data-v-2f910f70]{width:100px;text-align:center}table.popups-table thead[data-v-2f910f70]{color:#eee}table.popups-table thead tr[data-v-2f910f70]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-2f910f70]{padding:10px 16px}table.popups-table tbody tr[data-v-2f910f70]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-2f910f70]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-2f910f70]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-2f910f70]{width:100%}header.header-desktop[data-v-2f910f70]{display:block}header.header-mobile[data-v-2f910f70]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-2f910f70]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-2f910f70]{width:100%;height:100%}header.header-mobile button svg path[data-v-2f910f70]{fill:#fff}nav.sidebar[data-v-2f910f70]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-2f910f70]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-2f910f70]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-2f910f70]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-2f910f70]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-2f910f70]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-2f910f70]{color:#fff}nav.sidebar .container .children[data-v-2f910f70]{padding-left:30px}@-moz-keyframes tada-2f910f70{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-2f910f70{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-2f910f70{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-2f910f70{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-2f910f70]{animation:dialogEnter-2f910f70 .3s linear forwards}.dialog-leave-active[data-v-2f910f70]{animation:dialogLeave-2f910f70 .3s linear forwards}@keyframes dialogEnter-2f910f70{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-2f910f70{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-2f910f70]{animation:dialogEnter-2f910f70 .2s linear forwards}.dialog1-leave-active[data-v-2f910f70]{animation:dialogLeave-2f910f70 .2s linear forwards}@keyframes rotateEnter-2f910f70{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-2f910f70]{animation:rotateEnter-2f910f70 .7s;position:relative}.rotate-leave-active[data-v-2f910f70]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-2f910f70{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-2f910f70{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-2f910f70]{animation:slideOutTop-2f910f70 .5s linear forwards}.slide-top-leave-active[data-v-2f910f70],.slide-bottom-enter-active[data-v-2f910f70]{animation:slideOutBottom-2f910f70 .5s linear forwards}@keyframes slideInLeft-2f910f70{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-2f910f70{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-2f910f70]{animation:slideInLeft-2f910f70 .3s linear forwards}.slide-left-leave-active[data-v-2f910f70]{animation:slideInRight-2f910f70 .3s linear forwards}@keyframes slideOutLeft-2f910f70{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-2f910f70{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-2f910f70]{animation:slideOutLeft-2f910f70 .3s linear forwards}.slide-right-leave-active[data-v-2f910f70]{animation:slideOutRight-2f910f70 .3s linear forwards}@keyframes bganimation-2f910f70{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-2f910f70{0%{height:0}to{height:100px}}@keyframes fadeEnd-2f910f70{0%{height:100%}to{height:0}}.fade-enter-active[data-v-2f910f70]{animation:fadeStart-2f910f70 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-2f910f70]{animation:fadeEnd-2f910f70 .1s linear forwards;overflow:hidden}.row[data-v-2f910f70]{border-radius:8px;background:#f2efee;padding:8px 12px;display:flex;justify-content:space-between;align-items:center;margin-bottom:4px;font-size:14px}.row>.text[data-v-2f910f70]{color:#000c;font-weight:500;display:flex;align-items:center}.row>.text>span[data-v-2f910f70]:last-of-type{display:flex;align-items:center}.row>.text>span:last-of-type>img[data-v-2f910f70]{margin-left:8px;cursor:pointer}.row>.text>span:last-of-type>img[data-v-2f910f70]:hover{transform:scale(1.1);transition-duration:.3s}.row>.text>.configure[data-v-2f910f70]{font-size:13px}.button>*[data-v-2f910f70]{color:#0009;font-size:12px;font-weight:500;border-radius:32px;background:rgba(0,0,0,.08);display:inline-block;height:24px;line-height:24px;padding:0 8px;justify-content:center;align-items:center;cursor:pointer}@keyframes bganimation-097a32fc{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes rotateEnter-097a32fc{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}@keyframes turns-097a32fc{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}@keyframes slideInLeft-097a32fc{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-097a32fc{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-097a32fc]{animation:slideInLeft-097a32fc .3s linear forwards}.slide-left-leave-active[data-v-097a32fc]{animation:slideInRight-097a32fc .3s linear forwards}@keyframes slideOutLeft-097a32fc{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-097a32fc{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-097a32fc]{animation:slideOutLeft-097a32fc .3s linear forwards}.slide-right-leave-active[data-v-097a32fc]{animation:slideOutRight-097a32fc .3s linear forwards}.rotate-enter-active[data-v-097a32fc]{animation:rotateEnter-097a32fc .7s;position:relative}.rotate-leave-active[data-v-097a32fc]{opacity:0;display:none;position:relative;z-index:-999}.app-container[data-v-097a32fc]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-097a32fc]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-097a32fc]{color:#f9ad1e}.notice_info li[data-v-097a32fc]{font-size:14px;list-style:revert}.text-container[data-v-097a32fc]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-097a32fc]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-097a32fc]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-097a32fc]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-097a32fc]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-097a32fc]{width:100%}.text-container .text-container_item p.info-desc[data-v-097a32fc]{width:100%;color:#999;font-size:14px}.page-container[data-v-097a32fc]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-097a32fc]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-097a32fc]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-097a32fc]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-097a32fc],.page-container .page-flex .page-sidebar a[data-v-097a32fc]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-097a32fc]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-097a32fc]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-097a32fc]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-097a32fc]{border-radius:0;padding:1rem}ul.ul-container[data-v-097a32fc]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-097a32fc]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-097a32fc]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-097a32fc]{width:100%}form.form-container[data-v-097a32fc]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-097a32fc]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-097a32fc]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-097a32fc]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-097a32fc]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-097a32fc],form.form-container .label-value select[data-v-097a32fc]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-097a32fc]:focus,form.form-container .label-value select[data-v-097a32fc]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-097a32fc]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-097a32fc]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-097a32fc],form.form-container .label-value input[type=radio][data-v-097a32fc]{width:auto}form.form-container .label-value input[type=radio][data-v-097a32fc]{margin:0 4px 0 0}form.form-container .label-value input[data-v-097a32fc]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-097a32fc]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-097a32fc]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-097a32fc]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-097a32fc]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-097a32fc]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-097a32fc]:hover{background-color:#747474}form.form-container .label-msg[data-v-097a32fc]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-097a32fc]{color:#f9ad1e}form.form-container .label-flex[data-v-097a32fc]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-097a32fc]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-097a32fc]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-097a32fc]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-097a32fc]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-097a32fc]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-097a32fc]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-097a32fc],form.form-container1 .label-value select[data-v-097a32fc]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-097a32fc]:focus,form.form-container1 .label-value select[data-v-097a32fc]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-097a32fc]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-097a32fc],form.form-container1 .label-value input[type=radio][data-v-097a32fc]{width:auto}form.form-container1 .label-value input[type=radio][data-v-097a32fc]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-097a32fc]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-097a32fc]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-097a32fc]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-097a32fc]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-097a32fc]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-097a32fc]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-097a32fc]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-097a32fc]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-097a32fc]{color:#f9ad1e}form.form-container1 .label-flex[data-v-097a32fc]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-097a32fc]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-097a32fc]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-097a32fc]{width:100px}table.page-table th.checkbox[data-v-097a32fc]{width:50px;text-align:center}table.page-table th.setting[data-v-097a32fc]{width:100px;text-align:center}table.page-table thead[data-v-097a32fc]{color:#909399}table.page-table thead tr[data-v-097a32fc]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-097a32fc]{padding:10px 16px}table.page-table tbody tr[data-v-097a32fc]:hover{background-color:#eeee}table.page-table tbody tr[data-v-097a32fc]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-097a32fc]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-097a32fc]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-097a32fc]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-097a32fc]{width:100px}table.popups-table th.checkbox[data-v-097a32fc]{width:50px;text-align:center}table.popups-table th.setting[data-v-097a32fc]{width:100px;text-align:center}table.popups-table thead[data-v-097a32fc]{color:#eee}table.popups-table thead tr[data-v-097a32fc]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-097a32fc]{padding:10px 16px}table.popups-table tbody tr[data-v-097a32fc]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-097a32fc]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-097a32fc]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-097a32fc]{width:100%}header.header-desktop[data-v-097a32fc]{display:block}header.header-mobile[data-v-097a32fc]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-097a32fc]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-097a32fc]{width:100%;height:100%}header.header-mobile button svg path[data-v-097a32fc]{fill:#fff}nav.sidebar[data-v-097a32fc]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-097a32fc]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-097a32fc]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-097a32fc]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-097a32fc]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-097a32fc]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-097a32fc]{color:#fff}nav.sidebar .container .children[data-v-097a32fc]{padding-left:30px}@-moz-keyframes tada-097a32fc{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-097a32fc{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-097a32fc{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-097a32fc{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-097a32fc]{animation:dialogEnter-097a32fc .3s linear forwards}.dialog-leave-active[data-v-097a32fc]{animation:dialogLeave-097a32fc .3s linear forwards}@keyframes dialogEnter-097a32fc{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-097a32fc{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-097a32fc]{animation:dialogEnter-097a32fc .2s linear forwards}.dialog1-leave-active[data-v-097a32fc]{animation:dialogLeave-097a32fc .2s linear forwards}@keyframes rotateEnter-097a32fc{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-097a32fc]{animation:rotateEnter-097a32fc .7s;position:relative}.rotate-leave-active[data-v-097a32fc]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-097a32fc{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-097a32fc{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-097a32fc]{animation:slideOutTop-097a32fc .5s linear forwards}.slide-top-leave-active[data-v-097a32fc],.slide-bottom-enter-active[data-v-097a32fc]{animation:slideOutBottom-097a32fc .5s linear forwards}@keyframes slideInLeft-097a32fc{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-097a32fc{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-097a32fc]{animation:slideInLeft-097a32fc .3s linear forwards}.slide-left-leave-active[data-v-097a32fc]{animation:slideInRight-097a32fc .3s linear forwards}@keyframes slideOutLeft-097a32fc{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-097a32fc{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-097a32fc]{animation:slideOutLeft-097a32fc .3s linear forwards}.slide-right-leave-active[data-v-097a32fc]{animation:slideOutRight-097a32fc .3s linear forwards}@keyframes fadeStart-097a32fc{0%{height:0}to{height:100px}}@keyframes fadeEnd-097a32fc{0%{height:100%}to{height:0}}.fade-enter-active[data-v-097a32fc]{animation:fadeStart-097a32fc .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-097a32fc]{animation:fadeEnd-097a32fc .1s linear forwards;overflow:hidden}.action[data-v-097a32fc]{width:860px;max-height:90%;background-color:#fff;position:relative;z-index:1000;margin:auto;overflow:auto;padding:1rem 87px;border-radius:6px}.action h2.title[data-v-097a32fc]{width:100%;display:block;color:#1e1e1e;font-size:22px;padding:0;margin:0;text-align:center}.action .roots[data-v-097a32fc]{display:flex;max-width:342px;align-items:center;margin-top:32px;margin-bottom:16px}.action .roots .root[data-v-097a32fc]{color:#000000d4;font-size:14px;text-align:center}.action .move[data-v-097a32fc]{display:flex;justify-content:left;align-items:center}.action .change[data-v-097a32fc]{width:678px}.action .desc[data-v-097a32fc]{width:100%;display:block;font-size:1.2em;padding:0;margin:1rem 0;margin-top:32px;font-size:14px;font-family:PingFangSC-Medium,PingFang SC;color:#000000d4}.action form[data-v-097a32fc]{width:100%;display:block}.action .tips[data-v-097a32fc]{width:477px}.action .tips .tip[data-v-097a32fc]{color:#faad14;padding-left:6px}.action .btns[data-v-097a32fc]{width:100%;margin:104px auto 0}.action .btns button[data-v-097a32fc]{display:block;width:100%!important;margin-left:0;margin-right:0;margin-bottom:8px}.action .roots_tit[data-v-097a32fc]{color:#000000d4;font-size:14px;font-weight:700;width:118px;text-align:right;flex:none}.action .successed[data-v-097a32fc]{text-align:center;font-size:14px}.action .finished[data-v-097a32fc]{display:flex;justify-content:center;margin:80px 80px 28px}.action .docker_moves[data-v-097a32fc]{text-align:center}.action .docker_moves .moves[data-v-097a32fc]{margin-top:10px}.action .docker_moves .moves input[data-v-097a32fc]{cursor:pointer}.action .docker_moves .moves label[data-v-097a32fc]{margin-left:10px;cursor:pointer}.select-editable[data-v-097a32fc]{position:relative;border:solid grey 1px;width:438px;height:34px}.select-editable select[data-v-097a32fc]{position:absolute;top:0;left:0;font-size:14px;border:none;width:100%;height:100%;margin:0}.select-editable input[data-v-097a32fc]{position:absolute;top:0;left:0;width:95%;padding:1px;font-size:14px;border:none}.select-editable select[data-v-097a32fc]:focus,.select-editable input[data-v-097a32fc]:focus{outline:none}[data-v-097a32fc]::placeholder{color:#999}@keyframes bganimation-097a32fc{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes rotateEnter-097a32fc{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}@keyframes turns-097a32fc{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}@keyframes slideInLeft-097a32fc{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-097a32fc{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-097a32fc]{animation:slideInLeft-097a32fc .3s linear forwards}.slide-left-leave-active[data-v-097a32fc]{animation:slideInRight-097a32fc .3s linear forwards}@keyframes slideOutLeft-097a32fc{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-097a32fc{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-097a32fc]{animation:slideOutLeft-097a32fc .3s linear forwards}.slide-right-leave-active[data-v-097a32fc]{animation:slideOutRight-097a32fc .3s linear forwards}.rotate-enter-active[data-v-097a32fc]{animation:rotateEnter-097a32fc .7s;position:relative}.rotate-leave-active[data-v-097a32fc]{opacity:0;display:none;position:relative;z-index:-999}.app-container[data-v-097a32fc]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-097a32fc]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-097a32fc]{color:#f9ad1e}.notice_info li[data-v-097a32fc]{font-size:14px;list-style:revert}.text-container[data-v-097a32fc]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-097a32fc]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-097a32fc]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-097a32fc]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-097a32fc]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-097a32fc]{width:100%}.text-container .text-container_item p.info-desc[data-v-097a32fc]{width:100%;color:#999;font-size:14px}.page-container[data-v-097a32fc]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-097a32fc]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-097a32fc]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-097a32fc]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-097a32fc],.page-container .page-flex .page-sidebar a[data-v-097a32fc]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-097a32fc]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-097a32fc]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-097a32fc]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-097a32fc]{border-radius:0;padding:1rem}ul.ul-container[data-v-097a32fc]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-097a32fc]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-097a32fc]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-097a32fc]{width:100%}form.form-container[data-v-097a32fc]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-097a32fc]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-097a32fc]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-097a32fc]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-097a32fc]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-097a32fc],form.form-container .label-value select[data-v-097a32fc]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-097a32fc]:focus,form.form-container .label-value select[data-v-097a32fc]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-097a32fc]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-097a32fc]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-097a32fc],form.form-container .label-value input[type=radio][data-v-097a32fc]{width:auto}form.form-container .label-value input[type=radio][data-v-097a32fc]{margin:0 4px 0 0}form.form-container .label-value input[data-v-097a32fc]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-097a32fc]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-097a32fc]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-097a32fc]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-097a32fc]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-097a32fc]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-097a32fc]:hover{background-color:#747474}form.form-container .label-msg[data-v-097a32fc]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-097a32fc]{color:#f9ad1e}form.form-container .label-flex[data-v-097a32fc]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-097a32fc]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-097a32fc]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-097a32fc]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-097a32fc]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-097a32fc]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-097a32fc]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-097a32fc],form.form-container1 .label-value select[data-v-097a32fc]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-097a32fc]:focus,form.form-container1 .label-value select[data-v-097a32fc]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-097a32fc]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-097a32fc],form.form-container1 .label-value input[type=radio][data-v-097a32fc]{width:auto}form.form-container1 .label-value input[type=radio][data-v-097a32fc]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-097a32fc]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-097a32fc]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-097a32fc]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-097a32fc]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-097a32fc]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-097a32fc]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-097a32fc]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-097a32fc]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-097a32fc]{color:#f9ad1e}form.form-container1 .label-flex[data-v-097a32fc]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-097a32fc]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-097a32fc]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-097a32fc]{width:100px}table.page-table th.checkbox[data-v-097a32fc]{width:50px;text-align:center}table.page-table th.setting[data-v-097a32fc]{width:100px;text-align:center}table.page-table thead[data-v-097a32fc]{color:#909399}table.page-table thead tr[data-v-097a32fc]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-097a32fc]{padding:10px 16px}table.page-table tbody tr[data-v-097a32fc]:hover{background-color:#eeee}table.page-table tbody tr[data-v-097a32fc]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-097a32fc]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-097a32fc]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-097a32fc]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-097a32fc]{width:100px}table.popups-table th.checkbox[data-v-097a32fc]{width:50px;text-align:center}table.popups-table th.setting[data-v-097a32fc]{width:100px;text-align:center}table.popups-table thead[data-v-097a32fc]{color:#eee}table.popups-table thead tr[data-v-097a32fc]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-097a32fc]{padding:10px 16px}table.popups-table tbody tr[data-v-097a32fc]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-097a32fc]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-097a32fc]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-097a32fc]{width:100%}header.header-desktop[data-v-097a32fc]{display:block}header.header-mobile[data-v-097a32fc]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-097a32fc]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-097a32fc]{width:100%;height:100%}header.header-mobile button svg path[data-v-097a32fc]{fill:#fff}nav.sidebar[data-v-097a32fc]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-097a32fc]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-097a32fc]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-097a32fc]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-097a32fc]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-097a32fc]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-097a32fc]{color:#fff}nav.sidebar .container .children[data-v-097a32fc]{padding-left:30px}@-moz-keyframes tada-097a32fc{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-097a32fc{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-097a32fc{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-097a32fc{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-097a32fc]{animation:dialogEnter-097a32fc .3s linear forwards}.dialog-leave-active[data-v-097a32fc]{animation:dialogLeave-097a32fc .3s linear forwards}@keyframes dialogEnter-097a32fc{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-097a32fc{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-097a32fc]{animation:dialogEnter-097a32fc .2s linear forwards}.dialog1-leave-active[data-v-097a32fc]{animation:dialogLeave-097a32fc .2s linear forwards}@keyframes rotateEnter-097a32fc{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-097a32fc]{animation:rotateEnter-097a32fc .7s;position:relative}.rotate-leave-active[data-v-097a32fc]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-097a32fc{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-097a32fc{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-097a32fc]{animation:slideOutTop-097a32fc .5s linear forwards}.slide-top-leave-active[data-v-097a32fc],.slide-bottom-enter-active[data-v-097a32fc]{animation:slideOutBottom-097a32fc .5s linear forwards}@keyframes slideInLeft-097a32fc{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-097a32fc{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-097a32fc]{animation:slideInLeft-097a32fc .3s linear forwards}.slide-left-leave-active[data-v-097a32fc]{animation:slideInRight-097a32fc .3s linear forwards}@keyframes slideOutLeft-097a32fc{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-097a32fc{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-097a32fc]{animation:slideOutLeft-097a32fc .3s linear forwards}.slide-right-leave-active[data-v-097a32fc]{animation:slideOutRight-097a32fc .3s linear forwards}@keyframes bganimation-097a32fc{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-097a32fc{0%{height:0}to{height:100px}}@keyframes fadeEnd-097a32fc{0%{height:100%}to{height:0}}.fade-enter-active[data-v-097a32fc]{animation:fadeStart-097a32fc .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-097a32fc]{animation:fadeEnd-097a32fc .1s linear forwards;overflow:hidden}@media screen and (max-width: 800px){.action[data-v-097a32fc]{width:100%}.docker_download[data-v-097a32fc]{width:80%}}@keyframes bganimation-750b6b3e{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes rotateEnter-750b6b3e{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}@keyframes turns-750b6b3e{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}@keyframes slideInLeft-750b6b3e{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-750b6b3e{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-750b6b3e]{animation:slideInLeft-750b6b3e .3s linear forwards}.slide-left-leave-active[data-v-750b6b3e]{animation:slideInRight-750b6b3e .3s linear forwards}@keyframes slideOutLeft-750b6b3e{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-750b6b3e{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-750b6b3e]{animation:slideOutLeft-750b6b3e .3s linear forwards}.slide-right-leave-active[data-v-750b6b3e]{animation:slideOutRight-750b6b3e .3s linear forwards}.rotate-enter-active[data-v-750b6b3e]{animation:rotateEnter-750b6b3e .7s;position:relative}.rotate-leave-active[data-v-750b6b3e]{opacity:0;display:none;position:relative;z-index:-999}.app-container[data-v-750b6b3e]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-750b6b3e]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-750b6b3e]{color:#f9ad1e}.notice_info li[data-v-750b6b3e]{font-size:14px;list-style:revert}.text-container[data-v-750b6b3e]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-750b6b3e]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-750b6b3e]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-750b6b3e]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-750b6b3e]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-750b6b3e]{width:100%}.text-container .text-container_item p.info-desc[data-v-750b6b3e]{width:100%;color:#999;font-size:14px}.page-container[data-v-750b6b3e]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-750b6b3e]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-750b6b3e]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-750b6b3e]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-750b6b3e],.page-container .page-flex .page-sidebar a[data-v-750b6b3e]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-750b6b3e]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-750b6b3e]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-750b6b3e]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-750b6b3e]{border-radius:0;padding:1rem}ul.ul-container[data-v-750b6b3e]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-750b6b3e]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-750b6b3e]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-750b6b3e]{width:100%}form.form-container[data-v-750b6b3e]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-750b6b3e]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-750b6b3e]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-750b6b3e]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-750b6b3e]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-750b6b3e],form.form-container .label-value select[data-v-750b6b3e]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-750b6b3e]:focus,form.form-container .label-value select[data-v-750b6b3e]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-750b6b3e]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-750b6b3e]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-750b6b3e],form.form-container .label-value input[type=radio][data-v-750b6b3e]{width:auto}form.form-container .label-value input[type=radio][data-v-750b6b3e]{margin:0 4px 0 0}form.form-container .label-value input[data-v-750b6b3e]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-750b6b3e]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-750b6b3e]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-750b6b3e]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-750b6b3e]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-750b6b3e]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-750b6b3e]:hover{background-color:#747474}form.form-container .label-msg[data-v-750b6b3e]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-750b6b3e]{color:#f9ad1e}form.form-container .label-flex[data-v-750b6b3e]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-750b6b3e]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-750b6b3e]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-750b6b3e]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-750b6b3e]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-750b6b3e]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-750b6b3e]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-750b6b3e],form.form-container1 .label-value select[data-v-750b6b3e]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-750b6b3e]:focus,form.form-container1 .label-value select[data-v-750b6b3e]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-750b6b3e]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-750b6b3e],form.form-container1 .label-value input[type=radio][data-v-750b6b3e]{width:auto}form.form-container1 .label-value input[type=radio][data-v-750b6b3e]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-750b6b3e]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-750b6b3e]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-750b6b3e]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-750b6b3e]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-750b6b3e]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-750b6b3e]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-750b6b3e]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-750b6b3e]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-750b6b3e]{color:#f9ad1e}form.form-container1 .label-flex[data-v-750b6b3e]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-750b6b3e]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-750b6b3e]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-750b6b3e]{width:100px}table.page-table th.checkbox[data-v-750b6b3e]{width:50px;text-align:center}table.page-table th.setting[data-v-750b6b3e]{width:100px;text-align:center}table.page-table thead[data-v-750b6b3e]{color:#909399}table.page-table thead tr[data-v-750b6b3e]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-750b6b3e]{padding:10px 16px}table.page-table tbody tr[data-v-750b6b3e]:hover{background-color:#eeee}table.page-table tbody tr[data-v-750b6b3e]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-750b6b3e]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-750b6b3e]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-750b6b3e]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-750b6b3e]{width:100px}table.popups-table th.checkbox[data-v-750b6b3e]{width:50px;text-align:center}table.popups-table th.setting[data-v-750b6b3e]{width:100px;text-align:center}table.popups-table thead[data-v-750b6b3e]{color:#eee}table.popups-table thead tr[data-v-750b6b3e]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-750b6b3e]{padding:10px 16px}table.popups-table tbody tr[data-v-750b6b3e]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-750b6b3e]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-750b6b3e]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-750b6b3e]{width:100%}header.header-desktop[data-v-750b6b3e]{display:block}header.header-mobile[data-v-750b6b3e]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-750b6b3e]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-750b6b3e]{width:100%;height:100%}header.header-mobile button svg path[data-v-750b6b3e]{fill:#fff}nav.sidebar[data-v-750b6b3e]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-750b6b3e]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-750b6b3e]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-750b6b3e]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-750b6b3e]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-750b6b3e]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-750b6b3e]{color:#fff}nav.sidebar .container .children[data-v-750b6b3e]{padding-left:30px}@-moz-keyframes tada-750b6b3e{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-750b6b3e{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-750b6b3e{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-750b6b3e{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-750b6b3e]{animation:dialogEnter-750b6b3e .3s linear forwards}.dialog-leave-active[data-v-750b6b3e]{animation:dialogLeave-750b6b3e .3s linear forwards}@keyframes dialogEnter-750b6b3e{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-750b6b3e{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-750b6b3e]{animation:dialogEnter-750b6b3e .2s linear forwards}.dialog1-leave-active[data-v-750b6b3e]{animation:dialogLeave-750b6b3e .2s linear forwards}@keyframes rotateEnter-750b6b3e{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-750b6b3e]{animation:rotateEnter-750b6b3e .7s;position:relative}.rotate-leave-active[data-v-750b6b3e]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-750b6b3e{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-750b6b3e{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-750b6b3e]{animation:slideOutTop-750b6b3e .5s linear forwards}.slide-top-leave-active[data-v-750b6b3e],.slide-bottom-enter-active[data-v-750b6b3e]{animation:slideOutBottom-750b6b3e .5s linear forwards}@keyframes slideInLeft-750b6b3e{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-750b6b3e{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-750b6b3e]{animation:slideInLeft-750b6b3e .3s linear forwards}.slide-left-leave-active[data-v-750b6b3e]{animation:slideInRight-750b6b3e .3s linear forwards}@keyframes slideOutLeft-750b6b3e{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-750b6b3e{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-750b6b3e]{animation:slideOutLeft-750b6b3e .3s linear forwards}.slide-right-leave-active[data-v-750b6b3e]{animation:slideOutRight-750b6b3e .3s linear forwards}@keyframes bganimation-750b6b3e{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-750b6b3e{0%{height:0}to{height:100px}}@keyframes fadeEnd-750b6b3e{0%{height:100%}to{height:0}}.fade-enter-active[data-v-750b6b3e]{animation:fadeStart-750b6b3e .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-750b6b3e]{animation:fadeEnd-750b6b3e .1s linear forwards;overflow:hidden}.row[data-v-750b6b3e]{border-radius:8px;background:#f2efee;padding:8px 12px;display:flex;justify-content:space-between;align-items:center;margin-bottom:4px;font-size:14px}.row>.text[data-v-750b6b3e]{color:#000c;font-weight:500;width:100%}.row>.text>div[data-v-750b6b3e]{display:flex;width:100%;align-items:center;justify-content:space-between}.row>.text .configure[data-v-750b6b3e]{font-size:13px}.button[data-v-750b6b3e]{margin-bottom:8px}.button>span[data-v-750b6b3e]{margin-right:10px;color:#0009;font-size:12px;font-weight:500;border-radius:32px;background:rgba(0,0,0,.08);display:inline-block;height:24px;line-height:24px;padding:0 8px;justify-content:center;align-items:center;cursor:pointer}.input-switch[data-v-750b6b3e]{display:inline-block;cursor:pointer;position:relative}.input-switch span[data-v-750b6b3e]{display:block;position:relative;width:40px;height:20px;border-radius:10px;padding:2px}.input-switch span em[data-v-750b6b3e]{display:block;width:16px;height:16px;background-color:#fff;border-radius:10px}.input-switch span.enable[data-v-750b6b3e]{background-color:#297ff3;transition:.3s}.input-switch span.enable em[data-v-750b6b3e]{transform:translate(20px);transition:.3s}.input-switch span.close[data-v-750b6b3e]{background-color:#cecece;transition:.3s}.input-switch span.close em[data-v-750b6b3e]{transform:translate(0);transition:.3s}.tooltip-trigger[data-v-750b6b3e]{position:relative;display:inline-block;cursor:help;margin-right:6px}.tooltip-trigger .docker_tip[data-v-750b6b3e]{position:relative;top:2px}.tooltip-trigger .tooltip-text[data-v-750b6b3e]{visibility:hidden;position:absolute;padding:.5rem 1rem;background-color:#555;color:#fff;text-align:center;border-radius:6px;opacity:0;transition:opacity .6s}.tooltip-trigger .tooltip-text span[data-v-750b6b3e]{color:#fff}.tooltip-trigger .tooltip-text .docker_dir_tip[data-v-750b6b3e]{min-width:15rem;display:inline-block}.tooltip-trigger:hover .tooltip-text[data-v-750b6b3e]{visibility:visible;opacity:1}@keyframes bganimation-68b4579e{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes rotateEnter-68b4579e{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}@keyframes turns-68b4579e{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}@keyframes slideInLeft-68b4579e{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-68b4579e{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-68b4579e]{animation:slideInLeft-68b4579e .3s linear forwards}.slide-left-leave-active[data-v-68b4579e]{animation:slideInRight-68b4579e .3s linear forwards}@keyframes slideOutLeft-68b4579e{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-68b4579e{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-68b4579e]{animation:slideOutLeft-68b4579e .3s linear forwards}.slide-right-leave-active[data-v-68b4579e]{animation:slideOutRight-68b4579e .3s linear forwards}.rotate-enter-active[data-v-68b4579e]{animation:rotateEnter-68b4579e .7s;position:relative}.rotate-leave-active[data-v-68b4579e]{opacity:0;display:none;position:relative;z-index:-999}.app-container[data-v-68b4579e]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-68b4579e]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-68b4579e]{color:#f9ad1e}.notice_info li[data-v-68b4579e]{font-size:14px;list-style:revert}.text-container[data-v-68b4579e]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-68b4579e]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-68b4579e]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-68b4579e]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-68b4579e]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-68b4579e]{width:100%}.text-container .text-container_item p.info-desc[data-v-68b4579e]{width:100%;color:#999;font-size:14px}.page-container[data-v-68b4579e]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-68b4579e]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-68b4579e]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-68b4579e]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-68b4579e],.page-container .page-flex .page-sidebar a[data-v-68b4579e]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-68b4579e]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-68b4579e]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-68b4579e]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-68b4579e]{border-radius:0;padding:1rem}ul.ul-container[data-v-68b4579e]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-68b4579e]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-68b4579e]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-68b4579e]{width:100%}form.form-container[data-v-68b4579e]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-68b4579e]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-68b4579e]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-68b4579e]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-68b4579e]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-68b4579e],form.form-container .label-value select[data-v-68b4579e]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-68b4579e]:focus,form.form-container .label-value select[data-v-68b4579e]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-68b4579e]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-68b4579e]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-68b4579e],form.form-container .label-value input[type=radio][data-v-68b4579e]{width:auto}form.form-container .label-value input[type=radio][data-v-68b4579e]{margin:0 4px 0 0}form.form-container .label-value input[data-v-68b4579e]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-68b4579e]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-68b4579e]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-68b4579e]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-68b4579e]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-68b4579e]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-68b4579e]:hover{background-color:#747474}form.form-container .label-msg[data-v-68b4579e]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-68b4579e]{color:#f9ad1e}form.form-container .label-flex[data-v-68b4579e]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-68b4579e]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-68b4579e]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-68b4579e]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-68b4579e]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-68b4579e]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-68b4579e]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-68b4579e],form.form-container1 .label-value select[data-v-68b4579e]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-68b4579e]:focus,form.form-container1 .label-value select[data-v-68b4579e]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-68b4579e]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-68b4579e],form.form-container1 .label-value input[type=radio][data-v-68b4579e]{width:auto}form.form-container1 .label-value input[type=radio][data-v-68b4579e]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-68b4579e]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-68b4579e]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-68b4579e]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-68b4579e]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-68b4579e]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-68b4579e]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-68b4579e]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-68b4579e]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-68b4579e]{color:#f9ad1e}form.form-container1 .label-flex[data-v-68b4579e]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-68b4579e]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-68b4579e]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-68b4579e]{width:100px}table.page-table th.checkbox[data-v-68b4579e]{width:50px;text-align:center}table.page-table th.setting[data-v-68b4579e]{width:100px;text-align:center}table.page-table thead[data-v-68b4579e]{color:#909399}table.page-table thead tr[data-v-68b4579e]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-68b4579e]{padding:10px 16px}table.page-table tbody tr[data-v-68b4579e]:hover{background-color:#eeee}table.page-table tbody tr[data-v-68b4579e]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-68b4579e]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-68b4579e]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-68b4579e]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-68b4579e]{width:100px}table.popups-table th.checkbox[data-v-68b4579e]{width:50px;text-align:center}table.popups-table th.setting[data-v-68b4579e]{width:100px;text-align:center}table.popups-table thead[data-v-68b4579e]{color:#eee}table.popups-table thead tr[data-v-68b4579e]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-68b4579e]{padding:10px 16px}table.popups-table tbody tr[data-v-68b4579e]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-68b4579e]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-68b4579e]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-68b4579e]{width:100%}header.header-desktop[data-v-68b4579e]{display:block}header.header-mobile[data-v-68b4579e]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-68b4579e]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-68b4579e]{width:100%;height:100%}header.header-mobile button svg path[data-v-68b4579e]{fill:#fff}nav.sidebar[data-v-68b4579e]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-68b4579e]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-68b4579e]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-68b4579e]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-68b4579e]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-68b4579e]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-68b4579e]{color:#fff}nav.sidebar .container .children[data-v-68b4579e]{padding-left:30px}@-moz-keyframes tada-68b4579e{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-68b4579e{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-68b4579e{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-68b4579e{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-68b4579e]{animation:dialogEnter-68b4579e .3s linear forwards}.dialog-leave-active[data-v-68b4579e]{animation:dialogLeave-68b4579e .3s linear forwards}@keyframes dialogEnter-68b4579e{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-68b4579e{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-68b4579e]{animation:dialogEnter-68b4579e .2s linear forwards}.dialog1-leave-active[data-v-68b4579e]{animation:dialogLeave-68b4579e .2s linear forwards}@keyframes rotateEnter-68b4579e{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-68b4579e]{animation:rotateEnter-68b4579e .7s;position:relative}.rotate-leave-active[data-v-68b4579e]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-68b4579e{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-68b4579e{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-68b4579e]{animation:slideOutTop-68b4579e .5s linear forwards}.slide-top-leave-active[data-v-68b4579e],.slide-bottom-enter-active[data-v-68b4579e]{animation:slideOutBottom-68b4579e .5s linear forwards}@keyframes slideInLeft-68b4579e{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-68b4579e{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-68b4579e]{animation:slideInLeft-68b4579e .3s linear forwards}.slide-left-leave-active[data-v-68b4579e]{animation:slideInRight-68b4579e .3s linear forwards}@keyframes slideOutLeft-68b4579e{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-68b4579e{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-68b4579e]{animation:slideOutLeft-68b4579e .3s linear forwards}.slide-right-leave-active[data-v-68b4579e]{animation:slideOutRight-68b4579e .3s linear forwards}@keyframes bganimation-68b4579e{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-68b4579e{0%{height:0}to{height:100px}}@keyframes fadeEnd-68b4579e{0%{height:100%}to{height:0}}.fade-enter-active[data-v-68b4579e]{animation:fadeStart-68b4579e .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-68b4579e]{animation:fadeEnd-68b4579e .1s linear forwards;overflow:hidden}.select-editable[data-v-68b4579e]{position:relative;line-height:1.5rem;padding:.5rem .75rem;border:1px solid #dee2e6;border-radius:.25rem;margin:.25rem .1rem}.select-editable select[data-v-68b4579e],.select-editable input[data-v-68b4579e]{height:100%;padding:0;border:none;margin:0}.select-editable select[data-v-68b4579e]{position:relative;width:100%}.select-editable input[data-v-68b4579e]{position:absolute;top:0;left:.75rem;width:88%}.select-editable select[data-v-68b4579e]:focus,.select-editable input[data-v-68b4579e]:focus{outline:none;box-shadow:none}@keyframes bganimation-f4c41bf2{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes rotateEnter-f4c41bf2{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}@keyframes turns-f4c41bf2{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}@keyframes slideInLeft-f4c41bf2{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-f4c41bf2{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-f4c41bf2]{animation:slideInLeft-f4c41bf2 .3s linear forwards}.slide-left-leave-active[data-v-f4c41bf2]{animation:slideInRight-f4c41bf2 .3s linear forwards}@keyframes slideOutLeft-f4c41bf2{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-f4c41bf2{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-f4c41bf2]{animation:slideOutLeft-f4c41bf2 .3s linear forwards}.slide-right-leave-active[data-v-f4c41bf2]{animation:slideOutRight-f4c41bf2 .3s linear forwards}.rotate-enter-active[data-v-f4c41bf2]{animation:rotateEnter-f4c41bf2 .7s;position:relative}.rotate-leave-active[data-v-f4c41bf2]{opacity:0;display:none;position:relative;z-index:-999}.app-container[data-v-f4c41bf2]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-f4c41bf2]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-f4c41bf2]{color:#f9ad1e}.notice_info li[data-v-f4c41bf2]{font-size:14px;list-style:revert}.text-container[data-v-f4c41bf2]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-f4c41bf2]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-f4c41bf2]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-f4c41bf2]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-f4c41bf2]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-f4c41bf2]{width:100%}.text-container .text-container_item p.info-desc[data-v-f4c41bf2]{width:100%;color:#999;font-size:14px}.page-container[data-v-f4c41bf2]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-f4c41bf2]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-f4c41bf2]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-f4c41bf2]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-f4c41bf2],.page-container .page-flex .page-sidebar a[data-v-f4c41bf2]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-f4c41bf2]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-f4c41bf2]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-f4c41bf2]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-f4c41bf2]{border-radius:0;padding:1rem}ul.ul-container[data-v-f4c41bf2]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-f4c41bf2]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-f4c41bf2]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-f4c41bf2]{width:100%}form.form-container[data-v-f4c41bf2]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-f4c41bf2]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-f4c41bf2]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-f4c41bf2]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-f4c41bf2]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-f4c41bf2],form.form-container .label-value select[data-v-f4c41bf2]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-f4c41bf2]:focus,form.form-container .label-value select[data-v-f4c41bf2]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-f4c41bf2]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-f4c41bf2]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-f4c41bf2],form.form-container .label-value input[type=radio][data-v-f4c41bf2]{width:auto}form.form-container .label-value input[type=radio][data-v-f4c41bf2]{margin:0 4px 0 0}form.form-container .label-value input[data-v-f4c41bf2]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-f4c41bf2]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-f4c41bf2]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-f4c41bf2]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-f4c41bf2]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-f4c41bf2]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-f4c41bf2]:hover{background-color:#747474}form.form-container .label-msg[data-v-f4c41bf2]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-f4c41bf2]{color:#f9ad1e}form.form-container .label-flex[data-v-f4c41bf2]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-f4c41bf2]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-f4c41bf2]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-f4c41bf2]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-f4c41bf2]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-f4c41bf2]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-f4c41bf2]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-f4c41bf2],form.form-container1 .label-value select[data-v-f4c41bf2]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-f4c41bf2]:focus,form.form-container1 .label-value select[data-v-f4c41bf2]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-f4c41bf2]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-f4c41bf2],form.form-container1 .label-value input[type=radio][data-v-f4c41bf2]{width:auto}form.form-container1 .label-value input[type=radio][data-v-f4c41bf2]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-f4c41bf2]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-f4c41bf2]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-f4c41bf2]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-f4c41bf2]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-f4c41bf2]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-f4c41bf2]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-f4c41bf2]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-f4c41bf2]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-f4c41bf2]{color:#f9ad1e}form.form-container1 .label-flex[data-v-f4c41bf2]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-f4c41bf2]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-f4c41bf2]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-f4c41bf2]{width:100px}table.page-table th.checkbox[data-v-f4c41bf2]{width:50px;text-align:center}table.page-table th.setting[data-v-f4c41bf2]{width:100px;text-align:center}table.page-table thead[data-v-f4c41bf2]{color:#909399}table.page-table thead tr[data-v-f4c41bf2]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-f4c41bf2]{padding:10px 16px}table.page-table tbody tr[data-v-f4c41bf2]:hover{background-color:#eeee}table.page-table tbody tr[data-v-f4c41bf2]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-f4c41bf2]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-f4c41bf2]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-f4c41bf2]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-f4c41bf2]{width:100px}table.popups-table th.checkbox[data-v-f4c41bf2]{width:50px;text-align:center}table.popups-table th.setting[data-v-f4c41bf2]{width:100px;text-align:center}table.popups-table thead[data-v-f4c41bf2]{color:#eee}table.popups-table thead tr[data-v-f4c41bf2]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-f4c41bf2]{padding:10px 16px}table.popups-table tbody tr[data-v-f4c41bf2]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-f4c41bf2]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-f4c41bf2]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-f4c41bf2]{width:100%}header.header-desktop[data-v-f4c41bf2]{display:block}header.header-mobile[data-v-f4c41bf2]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-f4c41bf2]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-f4c41bf2]{width:100%;height:100%}header.header-mobile button svg path[data-v-f4c41bf2]{fill:#fff}nav.sidebar[data-v-f4c41bf2]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-f4c41bf2]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-f4c41bf2]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-f4c41bf2]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-f4c41bf2]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-f4c41bf2]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-f4c41bf2]{color:#fff}nav.sidebar .container .children[data-v-f4c41bf2]{padding-left:30px}@-moz-keyframes tada-f4c41bf2{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-f4c41bf2{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-f4c41bf2{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-f4c41bf2{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-f4c41bf2]{animation:dialogEnter-f4c41bf2 .3s linear forwards}.dialog-leave-active[data-v-f4c41bf2]{animation:dialogLeave-f4c41bf2 .3s linear forwards}@keyframes dialogEnter-f4c41bf2{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-f4c41bf2{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-f4c41bf2]{animation:dialogEnter-f4c41bf2 .2s linear forwards}.dialog1-leave-active[data-v-f4c41bf2]{animation:dialogLeave-f4c41bf2 .2s linear forwards}@keyframes rotateEnter-f4c41bf2{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-f4c41bf2]{animation:rotateEnter-f4c41bf2 .7s;position:relative}.rotate-leave-active[data-v-f4c41bf2]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-f4c41bf2{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-f4c41bf2{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-f4c41bf2]{animation:slideOutTop-f4c41bf2 .5s linear forwards}.slide-top-leave-active[data-v-f4c41bf2],.slide-bottom-enter-active[data-v-f4c41bf2]{animation:slideOutBottom-f4c41bf2 .5s linear forwards}@keyframes slideInLeft-f4c41bf2{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-f4c41bf2{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-f4c41bf2]{animation:slideInLeft-f4c41bf2 .3s linear forwards}.slide-left-leave-active[data-v-f4c41bf2]{animation:slideInRight-f4c41bf2 .3s linear forwards}@keyframes slideOutLeft-f4c41bf2{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-f4c41bf2{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-f4c41bf2]{animation:slideOutLeft-f4c41bf2 .3s linear forwards}.slide-right-leave-active[data-v-f4c41bf2]{animation:slideOutRight-f4c41bf2 .3s linear forwards}@keyframes bganimation-f4c41bf2{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-f4c41bf2{0%{height:0}to{height:100px}}@keyframes fadeEnd-f4c41bf2{0%{height:100%}to{height:0}}.fade-enter-active[data-v-f4c41bf2]{animation:fadeStart-f4c41bf2 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-f4c41bf2]{animation:fadeEnd-f4c41bf2 .1s linear forwards;overflow:hidden}.action[data-v-f4c41bf2]{width:860px;max-height:90%;background-color:#fff;position:relative;z-index:1000;margin:auto;padding:1rem 87px;border-radius:6px}.action p[data-v-f4c41bf2]{color:#999;font-size:14px}.action input[data-v-f4c41bf2]{font-size:14px;font-family:PingFangSC-Regular,PingFang SC}.action h2.title[data-v-f4c41bf2]{width:100%;color:#1e1e1e;font-size:22px;font-family:PingFangSC-Medium,PingFang SC;padding:0;margin:0;text-align:center}.action span[data-v-f4c41bf2]{font-size:14px;font-family:PingFangSC-Medium,PingFang SC;color:#000000d4;font-weight:700}.action form label[data-v-f4c41bf2]{width:100%}.action form label input[data-v-f4c41bf2],.action form label select[data-v-f4c41bf2]{height:100%;font-size:14px}.action .myinput_wrap[data-v-f4c41bf2],.action .RPC_input[data-v-f4c41bf2]{width:85%}.action .myinput_wrap textarea[data-v-f4c41bf2]{width:100%;padding:2px 3px;border:1px solid #dee2e6;border-radius:.25rem}.action .input_row[data-v-f4c41bf2]{margin:16px 0;display:flex;justify-content:left;align-items:center}.action .input_row .radios[data-v-f4c41bf2]{margin-right:10px}.action .input_row .radios input[data-v-f4c41bf2],.action .input_row .radios label[data-v-f4c41bf2]{cursor:pointer}.action .Tracker label[data-v-f4c41bf2]{margin-right:10px;cursor:pointer}.action .Tracker_input[data-v-f4c41bf2]{padding:6px 2px}.action .btns[data-v-f4c41bf2]{width:100%;margin:0 auto}.action .btns button[data-v-f4c41bf2]{display:block;width:100%!important;margin-bottom:8px}.action .tooltip-trigger[data-v-f4c41bf2]{position:relative;display:inline-block;cursor:help;margin-right:6px}.action .tooltip-trigger .tooltip-text[data-v-f4c41bf2]{visibility:hidden;position:absolute;padding:.5rem 1rem;background-color:#555;color:#fff;text-align:center;border-radius:6px;opacity:0;transition:opacity .6s}.action .tooltip-trigger .tooltip-text span[data-v-f4c41bf2]{color:#fff}.action .tooltip-trigger .tooltip-text .dowload_dir_tip[data-v-f4c41bf2]{min-width:14rem;display:inline-block}.action .tooltip-trigger:hover .tooltip-text[data-v-f4c41bf2]{visibility:visible;opacity:1}.action .tooltip-top[data-v-f4c41bf2]{bottom:100%;left:50%;margin-bottom:5px;transform:translate(-50%)}.action .tooltip-bottom[data-v-f4c41bf2]{top:100%;left:50%;margin-top:5px;transform:translate(-50%)}.action .tooltip-bottom .dowload_rpc_tip[data-v-f4c41bf2]{min-width:10rem;display:inline-block}.action .tooltip-right[data-v-f4c41bf2]{top:50%;left:100%;margin-left:5px;transform:translateY(-50%)}.action .tooltip-left[data-v-f4c41bf2]{top:50%;right:100%;margin-right:5px;transform:translateY(-50%)}.action .tooltip-top[data-v-f4c41bf2]:after{content:"";position:absolute;top:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:#555 transparent transparent transparent}.action .tooltip-bottom[data-v-f4c41bf2]:after{content:"";position:absolute;bottom:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:transparent transparent #555 transparent}.action .successed[data-v-f4c41bf2]{text-align:center;font-size:14px}.action .finished[data-v-f4c41bf2]{display:flex;justify-content:center;margin:80px 80px 28px}.left[data-v-f4c41bf2]{display:flex;align-items:center;justify-content:flex-start;width:110px;flex:none}.select-editable[data-v-f4c41bf2]{position:relative;border:1px solid #dee2e6;border-radius:.25rem;margin:.25rem .1rem}.select-editable select[data-v-f4c41bf2]{top:0;left:0;font-size:14px;border:none;width:100%;margin:0}.select-editable input[data-v-f4c41bf2]{position:absolute;top:-4px;left:0;width:95%;padding:1px;font-size:14px;border:none}.select-editable select[data-v-f4c41bf2]:focus,.select-editable input[data-v-f4c41bf2]:focus{outline:none}[data-v-f4c41bf2]::placeholder{color:#999}@keyframes bganimation-f4c41bf2{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes rotateEnter-f4c41bf2{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}@keyframes turns-f4c41bf2{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}@keyframes slideInLeft-f4c41bf2{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-f4c41bf2{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-f4c41bf2]{animation:slideInLeft-f4c41bf2 .3s linear forwards}.slide-left-leave-active[data-v-f4c41bf2]{animation:slideInRight-f4c41bf2 .3s linear forwards}@keyframes slideOutLeft-f4c41bf2{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-f4c41bf2{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-f4c41bf2]{animation:slideOutLeft-f4c41bf2 .3s linear forwards}.slide-right-leave-active[data-v-f4c41bf2]{animation:slideOutRight-f4c41bf2 .3s linear forwards}.rotate-enter-active[data-v-f4c41bf2]{animation:rotateEnter-f4c41bf2 .7s;position:relative}.rotate-leave-active[data-v-f4c41bf2]{opacity:0;display:none;position:relative;z-index:-999}.app-container[data-v-f4c41bf2]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-f4c41bf2]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-f4c41bf2]{color:#f9ad1e}.notice_info li[data-v-f4c41bf2]{font-size:14px;list-style:revert}.text-container[data-v-f4c41bf2]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-f4c41bf2]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-f4c41bf2]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-f4c41bf2]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-f4c41bf2]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-f4c41bf2]{width:100%}.text-container .text-container_item p.info-desc[data-v-f4c41bf2]{width:100%;color:#999;font-size:14px}.page-container[data-v-f4c41bf2]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-f4c41bf2]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-f4c41bf2]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-f4c41bf2]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-f4c41bf2],.page-container .page-flex .page-sidebar a[data-v-f4c41bf2]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-f4c41bf2]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-f4c41bf2]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-f4c41bf2]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-f4c41bf2]{border-radius:0;padding:1rem}ul.ul-container[data-v-f4c41bf2]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-f4c41bf2]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-f4c41bf2]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-f4c41bf2]{width:100%}form.form-container[data-v-f4c41bf2]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-f4c41bf2]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-f4c41bf2]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-f4c41bf2]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-f4c41bf2]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-f4c41bf2],form.form-container .label-value select[data-v-f4c41bf2]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-f4c41bf2]:focus,form.form-container .label-value select[data-v-f4c41bf2]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-f4c41bf2]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-f4c41bf2]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-f4c41bf2],form.form-container .label-value input[type=radio][data-v-f4c41bf2]{width:auto}form.form-container .label-value input[type=radio][data-v-f4c41bf2]{margin:0 4px 0 0}form.form-container .label-value input[data-v-f4c41bf2]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-f4c41bf2]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-f4c41bf2]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-f4c41bf2]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-f4c41bf2]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-f4c41bf2]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-f4c41bf2]:hover{background-color:#747474}form.form-container .label-msg[data-v-f4c41bf2]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-f4c41bf2]{color:#f9ad1e}form.form-container .label-flex[data-v-f4c41bf2]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-f4c41bf2]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-f4c41bf2]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-f4c41bf2]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-f4c41bf2]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-f4c41bf2]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-f4c41bf2]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-f4c41bf2],form.form-container1 .label-value select[data-v-f4c41bf2]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-f4c41bf2]:focus,form.form-container1 .label-value select[data-v-f4c41bf2]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-f4c41bf2]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-f4c41bf2],form.form-container1 .label-value input[type=radio][data-v-f4c41bf2]{width:auto}form.form-container1 .label-value input[type=radio][data-v-f4c41bf2]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-f4c41bf2]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-f4c41bf2]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-f4c41bf2]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-f4c41bf2]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-f4c41bf2]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-f4c41bf2]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-f4c41bf2]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-f4c41bf2]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-f4c41bf2]{color:#f9ad1e}form.form-container1 .label-flex[data-v-f4c41bf2]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-f4c41bf2]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-f4c41bf2]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-f4c41bf2]{width:100px}table.page-table th.checkbox[data-v-f4c41bf2]{width:50px;text-align:center}table.page-table th.setting[data-v-f4c41bf2]{width:100px;text-align:center}table.page-table thead[data-v-f4c41bf2]{color:#909399}table.page-table thead tr[data-v-f4c41bf2]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-f4c41bf2]{padding:10px 16px}table.page-table tbody tr[data-v-f4c41bf2]:hover{background-color:#eeee}table.page-table tbody tr[data-v-f4c41bf2]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-f4c41bf2]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-f4c41bf2]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-f4c41bf2]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-f4c41bf2]{width:100px}table.popups-table th.checkbox[data-v-f4c41bf2]{width:50px;text-align:center}table.popups-table th.setting[data-v-f4c41bf2]{width:100px;text-align:center}table.popups-table thead[data-v-f4c41bf2]{color:#eee}table.popups-table thead tr[data-v-f4c41bf2]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-f4c41bf2]{padding:10px 16px}table.popups-table tbody tr[data-v-f4c41bf2]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-f4c41bf2]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-f4c41bf2]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-f4c41bf2]{width:100%}header.header-desktop[data-v-f4c41bf2]{display:block}header.header-mobile[data-v-f4c41bf2]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-f4c41bf2]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-f4c41bf2]{width:100%;height:100%}header.header-mobile button svg path[data-v-f4c41bf2]{fill:#fff}nav.sidebar[data-v-f4c41bf2]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-f4c41bf2]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-f4c41bf2]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-f4c41bf2]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-f4c41bf2]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-f4c41bf2]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-f4c41bf2]{color:#fff}nav.sidebar .container .children[data-v-f4c41bf2]{padding-left:30px}@-moz-keyframes tada-f4c41bf2{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-f4c41bf2{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-f4c41bf2{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-f4c41bf2{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-f4c41bf2]{animation:dialogEnter-f4c41bf2 .3s linear forwards}.dialog-leave-active[data-v-f4c41bf2]{animation:dialogLeave-f4c41bf2 .3s linear forwards}@keyframes dialogEnter-f4c41bf2{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-f4c41bf2{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-f4c41bf2]{animation:dialogEnter-f4c41bf2 .2s linear forwards}.dialog1-leave-active[data-v-f4c41bf2]{animation:dialogLeave-f4c41bf2 .2s linear forwards}@keyframes rotateEnter-f4c41bf2{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-f4c41bf2]{animation:rotateEnter-f4c41bf2 .7s;position:relative}.rotate-leave-active[data-v-f4c41bf2]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-f4c41bf2{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-f4c41bf2{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-f4c41bf2]{animation:slideOutTop-f4c41bf2 .5s linear forwards}.slide-top-leave-active[data-v-f4c41bf2],.slide-bottom-enter-active[data-v-f4c41bf2]{animation:slideOutBottom-f4c41bf2 .5s linear forwards}@keyframes slideInLeft-f4c41bf2{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-f4c41bf2{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-f4c41bf2]{animation:slideInLeft-f4c41bf2 .3s linear forwards}.slide-left-leave-active[data-v-f4c41bf2]{animation:slideInRight-f4c41bf2 .3s linear forwards}@keyframes slideOutLeft-f4c41bf2{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-f4c41bf2{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-f4c41bf2]{animation:slideOutLeft-f4c41bf2 .3s linear forwards}.slide-right-leave-active[data-v-f4c41bf2]{animation:slideOutRight-f4c41bf2 .3s linear forwards}@keyframes bganimation-f4c41bf2{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-f4c41bf2{0%{height:0}to{height:100px}}@keyframes fadeEnd-f4c41bf2{0%{height:100%}to{height:0}}.fade-enter-active[data-v-f4c41bf2]{animation:fadeStart-f4c41bf2 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-f4c41bf2]{animation:fadeEnd-f4c41bf2 .1s linear forwards;overflow:hidden}@media screen and (max-width: 500px){.action[data-v-f4c41bf2]{width:100%}.action .input_row[data-v-f4c41bf2]{display:block}.action .input_row .myinput_wrap[data-v-f4c41bf2],.action .input_row .RPC_input[data-v-f4c41bf2]{width:100%}}@keyframes bganimation-63fbd04d{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes rotateEnter-63fbd04d{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}@keyframes turns-63fbd04d{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}@keyframes slideInLeft-63fbd04d{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-63fbd04d{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-63fbd04d]{animation:slideInLeft-63fbd04d .3s linear forwards}.slide-left-leave-active[data-v-63fbd04d]{animation:slideInRight-63fbd04d .3s linear forwards}@keyframes slideOutLeft-63fbd04d{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-63fbd04d{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-63fbd04d]{animation:slideOutLeft-63fbd04d .3s linear forwards}.slide-right-leave-active[data-v-63fbd04d]{animation:slideOutRight-63fbd04d .3s linear forwards}.rotate-enter-active[data-v-63fbd04d]{animation:rotateEnter-63fbd04d .7s;position:relative}.rotate-leave-active[data-v-63fbd04d]{opacity:0;display:none;position:relative;z-index:-999}.app-container[data-v-63fbd04d]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-63fbd04d]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-63fbd04d]{color:#f9ad1e}.notice_info li[data-v-63fbd04d]{font-size:14px;list-style:revert}.text-container[data-v-63fbd04d]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-63fbd04d]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-63fbd04d]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-63fbd04d]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-63fbd04d]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-63fbd04d]{width:100%}.text-container .text-container_item p.info-desc[data-v-63fbd04d]{width:100%;color:#999;font-size:14px}.page-container[data-v-63fbd04d]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-63fbd04d]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-63fbd04d]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-63fbd04d]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-63fbd04d],.page-container .page-flex .page-sidebar a[data-v-63fbd04d]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-63fbd04d]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-63fbd04d]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-63fbd04d]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-63fbd04d]{border-radius:0;padding:1rem}ul.ul-container[data-v-63fbd04d]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-63fbd04d]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-63fbd04d]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-63fbd04d]{width:100%}form.form-container[data-v-63fbd04d]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-63fbd04d]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-63fbd04d]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-63fbd04d]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-63fbd04d]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-63fbd04d],form.form-container .label-value select[data-v-63fbd04d]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-63fbd04d]:focus,form.form-container .label-value select[data-v-63fbd04d]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-63fbd04d]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-63fbd04d]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-63fbd04d],form.form-container .label-value input[type=radio][data-v-63fbd04d]{width:auto}form.form-container .label-value input[type=radio][data-v-63fbd04d]{margin:0 4px 0 0}form.form-container .label-value input[data-v-63fbd04d]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-63fbd04d]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-63fbd04d]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-63fbd04d]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-63fbd04d]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-63fbd04d]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-63fbd04d]:hover{background-color:#747474}form.form-container .label-msg[data-v-63fbd04d]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-63fbd04d]{color:#f9ad1e}form.form-container .label-flex[data-v-63fbd04d]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-63fbd04d]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-63fbd04d]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-63fbd04d]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-63fbd04d]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-63fbd04d]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-63fbd04d]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-63fbd04d],form.form-container1 .label-value select[data-v-63fbd04d]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-63fbd04d]:focus,form.form-container1 .label-value select[data-v-63fbd04d]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-63fbd04d]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-63fbd04d],form.form-container1 .label-value input[type=radio][data-v-63fbd04d]{width:auto}form.form-container1 .label-value input[type=radio][data-v-63fbd04d]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-63fbd04d]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-63fbd04d]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-63fbd04d]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-63fbd04d]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-63fbd04d]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-63fbd04d]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-63fbd04d]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-63fbd04d]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-63fbd04d]{color:#f9ad1e}form.form-container1 .label-flex[data-v-63fbd04d]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-63fbd04d]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-63fbd04d]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-63fbd04d]{width:100px}table.page-table th.checkbox[data-v-63fbd04d]{width:50px;text-align:center}table.page-table th.setting[data-v-63fbd04d]{width:100px;text-align:center}table.page-table thead[data-v-63fbd04d]{color:#909399}table.page-table thead tr[data-v-63fbd04d]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-63fbd04d]{padding:10px 16px}table.page-table tbody tr[data-v-63fbd04d]:hover{background-color:#eeee}table.page-table tbody tr[data-v-63fbd04d]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-63fbd04d]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-63fbd04d]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-63fbd04d]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-63fbd04d]{width:100px}table.popups-table th.checkbox[data-v-63fbd04d]{width:50px;text-align:center}table.popups-table th.setting[data-v-63fbd04d]{width:100px;text-align:center}table.popups-table thead[data-v-63fbd04d]{color:#eee}table.popups-table thead tr[data-v-63fbd04d]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-63fbd04d]{padding:10px 16px}table.popups-table tbody tr[data-v-63fbd04d]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-63fbd04d]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-63fbd04d]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-63fbd04d]{width:100%}header.header-desktop[data-v-63fbd04d]{display:block}header.header-mobile[data-v-63fbd04d]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-63fbd04d]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-63fbd04d]{width:100%;height:100%}header.header-mobile button svg path[data-v-63fbd04d]{fill:#fff}nav.sidebar[data-v-63fbd04d]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-63fbd04d]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-63fbd04d]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-63fbd04d]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-63fbd04d]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-63fbd04d]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-63fbd04d]{color:#fff}nav.sidebar .container .children[data-v-63fbd04d]{padding-left:30px}@-moz-keyframes tada-63fbd04d{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-63fbd04d{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-63fbd04d{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-63fbd04d{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-63fbd04d]{animation:dialogEnter-63fbd04d .3s linear forwards}.dialog-leave-active[data-v-63fbd04d]{animation:dialogLeave-63fbd04d .3s linear forwards}@keyframes dialogEnter-63fbd04d{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-63fbd04d{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-63fbd04d]{animation:dialogEnter-63fbd04d .2s linear forwards}.dialog1-leave-active[data-v-63fbd04d]{animation:dialogLeave-63fbd04d .2s linear forwards}@keyframes rotateEnter-63fbd04d{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-63fbd04d]{animation:rotateEnter-63fbd04d .7s;position:relative}.rotate-leave-active[data-v-63fbd04d]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-63fbd04d{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-63fbd04d{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-63fbd04d]{animation:slideOutTop-63fbd04d .5s linear forwards}.slide-top-leave-active[data-v-63fbd04d],.slide-bottom-enter-active[data-v-63fbd04d]{animation:slideOutBottom-63fbd04d .5s linear forwards}@keyframes slideInLeft-63fbd04d{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-63fbd04d{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-63fbd04d]{animation:slideInLeft-63fbd04d .3s linear forwards}.slide-left-leave-active[data-v-63fbd04d]{animation:slideInRight-63fbd04d .3s linear forwards}@keyframes slideOutLeft-63fbd04d{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-63fbd04d{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-63fbd04d]{animation:slideOutLeft-63fbd04d .3s linear forwards}.slide-right-leave-active[data-v-63fbd04d]{animation:slideOutRight-63fbd04d .3s linear forwards}@keyframes bganimation-63fbd04d{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-63fbd04d{0%{height:0}to{height:100px}}@keyframes fadeEnd-63fbd04d{0%{height:100%}to{height:0}}.fade-enter-active[data-v-63fbd04d]{animation:fadeStart-63fbd04d .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-63fbd04d]{animation:fadeEnd-63fbd04d .1s linear forwards;overflow:hidden}.service-item[data-v-63fbd04d]{border-radius:8px;background:#f2efee;padding:8px 12px;display:flex;flex-direction:column;margin-bottom:4px}.service-item>.name[data-v-63fbd04d]{display:flex;justify-content:space-between;margin-bottom:4px;align-items:center}.service-item>.name>span[data-v-63fbd04d]{display:flex;align-items:center}.service-item>.name>span span[data-v-63fbd04d]{display:inline-block;text-align:center;color:#000c}.service-item>.name>span span[data-v-63fbd04d]:first-of-type{font-size:16px;font-weight:600;margin-right:8px}.service-item>.name>span span[data-v-63fbd04d]:last-of-type{font-size:12px}.service-item>.info[data-v-63fbd04d]{flex:1}.service-item>.info a[data-v-63fbd04d]{color:#0166ff}.service-item>.info>span[data-v-63fbd04d]{display:inline-block;width:100%;font-size:13px;font-weight:500}.service-item>.info>div[data-v-63fbd04d]{margin-top:8px;color:#0009;font-size:12px}.service-item .button[data-v-63fbd04d]{text-align:right}.service-item .button>span[data-v-63fbd04d]{margin-left:10px;color:#0009;font-size:12px;font-weight:500;border-radius:32px;background:rgba(0,0,0,.08);display:inline-block;height:24px;line-height:24px;padding:0 8px;justify-content:center;align-items:center;cursor:pointer}@keyframes bganimation-a711c820{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes rotateEnter-a711c820{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}@keyframes turns-a711c820{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}@keyframes slideInLeft-a711c820{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-a711c820{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-a711c820]{animation:slideInLeft-a711c820 .3s linear forwards}.slide-left-leave-active[data-v-a711c820]{animation:slideInRight-a711c820 .3s linear forwards}@keyframes slideOutLeft-a711c820{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-a711c820{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-a711c820]{animation:slideOutLeft-a711c820 .3s linear forwards}.slide-right-leave-active[data-v-a711c820]{animation:slideOutRight-a711c820 .3s linear forwards}.rotate-enter-active[data-v-a711c820]{animation:rotateEnter-a711c820 .7s;position:relative}.rotate-leave-active[data-v-a711c820]{opacity:0;display:none;position:relative;z-index:-999}.app-container[data-v-a711c820]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-a711c820]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-a711c820]{color:#f9ad1e}.notice_info li[data-v-a711c820]{font-size:14px;list-style:revert}.text-container[data-v-a711c820]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-a711c820]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-a711c820]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-a711c820]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-a711c820]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-a711c820]{width:100%}.text-container .text-container_item p.info-desc[data-v-a711c820]{width:100%;color:#999;font-size:14px}.page-container[data-v-a711c820]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-a711c820]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-a711c820]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-a711c820]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-a711c820],.page-container .page-flex .page-sidebar a[data-v-a711c820]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-a711c820]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-a711c820]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-a711c820]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-a711c820]{border-radius:0;padding:1rem}ul.ul-container[data-v-a711c820]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-a711c820]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-a711c820]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-a711c820]{width:100%}form.form-container[data-v-a711c820]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-a711c820]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-a711c820]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-a711c820]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-a711c820]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-a711c820],form.form-container .label-value select[data-v-a711c820]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-a711c820]:focus,form.form-container .label-value select[data-v-a711c820]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-a711c820]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-a711c820]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-a711c820],form.form-container .label-value input[type=radio][data-v-a711c820]{width:auto}form.form-container .label-value input[type=radio][data-v-a711c820]{margin:0 4px 0 0}form.form-container .label-value input[data-v-a711c820]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-a711c820]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-a711c820]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-a711c820]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-a711c820]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-a711c820]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-a711c820]:hover{background-color:#747474}form.form-container .label-msg[data-v-a711c820]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-a711c820]{color:#f9ad1e}form.form-container .label-flex[data-v-a711c820]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-a711c820]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-a711c820]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-a711c820]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-a711c820]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-a711c820]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-a711c820]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-a711c820],form.form-container1 .label-value select[data-v-a711c820]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-a711c820]:focus,form.form-container1 .label-value select[data-v-a711c820]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-a711c820]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-a711c820],form.form-container1 .label-value input[type=radio][data-v-a711c820]{width:auto}form.form-container1 .label-value input[type=radio][data-v-a711c820]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-a711c820]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-a711c820]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-a711c820]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-a711c820]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-a711c820]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-a711c820]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-a711c820]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-a711c820]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-a711c820]{color:#f9ad1e}form.form-container1 .label-flex[data-v-a711c820]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-a711c820]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-a711c820]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-a711c820]{width:100px}table.page-table th.checkbox[data-v-a711c820]{width:50px;text-align:center}table.page-table th.setting[data-v-a711c820]{width:100px;text-align:center}table.page-table thead[data-v-a711c820]{color:#909399}table.page-table thead tr[data-v-a711c820]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-a711c820]{padding:10px 16px}table.page-table tbody tr[data-v-a711c820]:hover{background-color:#eeee}table.page-table tbody tr[data-v-a711c820]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-a711c820]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-a711c820]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-a711c820]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-a711c820]{width:100px}table.popups-table th.checkbox[data-v-a711c820]{width:50px;text-align:center}table.popups-table th.setting[data-v-a711c820]{width:100px;text-align:center}table.popups-table thead[data-v-a711c820]{color:#eee}table.popups-table thead tr[data-v-a711c820]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-a711c820]{padding:10px 16px}table.popups-table tbody tr[data-v-a711c820]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-a711c820]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-a711c820]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-a711c820]{width:100%}header.header-desktop[data-v-a711c820]{display:block}header.header-mobile[data-v-a711c820]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-a711c820]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-a711c820]{width:100%;height:100%}header.header-mobile button svg path[data-v-a711c820]{fill:#fff}nav.sidebar[data-v-a711c820]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-a711c820]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-a711c820]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-a711c820]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-a711c820]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-a711c820]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-a711c820]{color:#fff}nav.sidebar .container .children[data-v-a711c820]{padding-left:30px}@-moz-keyframes tada-a711c820{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-a711c820{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-a711c820{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-a711c820{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-a711c820]{animation:dialogEnter-a711c820 .3s linear forwards}.dialog-leave-active[data-v-a711c820]{animation:dialogLeave-a711c820 .3s linear forwards}@keyframes dialogEnter-a711c820{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-a711c820{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-a711c820]{animation:dialogEnter-a711c820 .2s linear forwards}.dialog1-leave-active[data-v-a711c820]{animation:dialogLeave-a711c820 .2s linear forwards}@keyframes rotateEnter-a711c820{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-a711c820]{animation:rotateEnter-a711c820 .7s;position:relative}.rotate-leave-active[data-v-a711c820]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-a711c820{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-a711c820{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-a711c820]{animation:slideOutTop-a711c820 .5s linear forwards}.slide-top-leave-active[data-v-a711c820],.slide-bottom-enter-active[data-v-a711c820]{animation:slideOutBottom-a711c820 .5s linear forwards}@keyframes slideInLeft-a711c820{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-a711c820{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-a711c820]{animation:slideInLeft-a711c820 .3s linear forwards}.slide-left-leave-active[data-v-a711c820]{animation:slideInRight-a711c820 .3s linear forwards}@keyframes slideOutLeft-a711c820{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-a711c820{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-a711c820]{animation:slideOutLeft-a711c820 .3s linear forwards}.slide-right-leave-active[data-v-a711c820]{animation:slideOutRight-a711c820 .3s linear forwards}@keyframes bganimation-a711c820{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-a711c820{0%{height:0}to{height:100px}}@keyframes fadeEnd-a711c820{0%{height:100%}to{height:0}}.fade-enter-active[data-v-a711c820]{animation:fadeStart-a711c820 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-a711c820]{animation:fadeEnd-a711c820 .1s linear forwards;overflow:hidden}.container[data-v-a711c820]{width:100%;padding:60px 0}.desc[data-v-a711c820]{text-align:center;width:452px;margin:0 auto 40px}.desc a[data-v-a711c820]{color:#06f}.desc span[data-v-a711c820]{display:inline-block;width:100%}.btn[data-v-a711c820]{display:block;padding:10px 32px;border-radius:4px;background:#0060ff;color:#fff;margin:0 auto;width:fit-content}@keyframes bganimation-7c1d7115{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes rotateEnter-7c1d7115{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}@keyframes turns-7c1d7115{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}@keyframes slideInLeft-7c1d7115{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-7c1d7115{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-7c1d7115]{animation:slideInLeft-7c1d7115 .3s linear forwards}.slide-left-leave-active[data-v-7c1d7115]{animation:slideInRight-7c1d7115 .3s linear forwards}@keyframes slideOutLeft-7c1d7115{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-7c1d7115{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-7c1d7115]{animation:slideOutLeft-7c1d7115 .3s linear forwards}.slide-right-leave-active[data-v-7c1d7115]{animation:slideOutRight-7c1d7115 .3s linear forwards}.rotate-enter-active[data-v-7c1d7115]{animation:rotateEnter-7c1d7115 .7s;position:relative}.rotate-leave-active[data-v-7c1d7115]{opacity:0;display:none;position:relative;z-index:-999}.app-container[data-v-7c1d7115]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-7c1d7115]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-7c1d7115]{color:#f9ad1e}.notice_info li[data-v-7c1d7115]{font-size:14px;list-style:revert}.text-container[data-v-7c1d7115]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-7c1d7115]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-7c1d7115]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-7c1d7115]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-7c1d7115]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-7c1d7115]{width:100%}.text-container .text-container_item p.info-desc[data-v-7c1d7115]{width:100%;color:#999;font-size:14px}.page-container[data-v-7c1d7115]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-7c1d7115]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-7c1d7115]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-7c1d7115]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-7c1d7115],.page-container .page-flex .page-sidebar a[data-v-7c1d7115]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-7c1d7115]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-7c1d7115]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-7c1d7115]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-7c1d7115]{border-radius:0;padding:1rem}ul.ul-container[data-v-7c1d7115]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-7c1d7115]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-7c1d7115]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-7c1d7115]{width:100%}form.form-container[data-v-7c1d7115]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-7c1d7115]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-7c1d7115]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-7c1d7115]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-7c1d7115]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-7c1d7115],form.form-container .label-value select[data-v-7c1d7115]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-7c1d7115]:focus,form.form-container .label-value select[data-v-7c1d7115]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-7c1d7115]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-7c1d7115]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-7c1d7115],form.form-container .label-value input[type=radio][data-v-7c1d7115]{width:auto}form.form-container .label-value input[type=radio][data-v-7c1d7115]{margin:0 4px 0 0}form.form-container .label-value input[data-v-7c1d7115]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-7c1d7115]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-7c1d7115]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-7c1d7115]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-7c1d7115]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-7c1d7115]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-7c1d7115]:hover{background-color:#747474}form.form-container .label-msg[data-v-7c1d7115]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-7c1d7115]{color:#f9ad1e}form.form-container .label-flex[data-v-7c1d7115]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-7c1d7115]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-7c1d7115]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-7c1d7115]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-7c1d7115]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-7c1d7115]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-7c1d7115]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-7c1d7115],form.form-container1 .label-value select[data-v-7c1d7115]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-7c1d7115]:focus,form.form-container1 .label-value select[data-v-7c1d7115]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-7c1d7115]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-7c1d7115],form.form-container1 .label-value input[type=radio][data-v-7c1d7115]{width:auto}form.form-container1 .label-value input[type=radio][data-v-7c1d7115]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-7c1d7115]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-7c1d7115]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-7c1d7115]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-7c1d7115]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-7c1d7115]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-7c1d7115]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-7c1d7115]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-7c1d7115]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-7c1d7115]{color:#f9ad1e}form.form-container1 .label-flex[data-v-7c1d7115]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-7c1d7115]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-7c1d7115]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-7c1d7115]{width:100px}table.page-table th.checkbox[data-v-7c1d7115]{width:50px;text-align:center}table.page-table th.setting[data-v-7c1d7115]{width:100px;text-align:center}table.page-table thead[data-v-7c1d7115]{color:#909399}table.page-table thead tr[data-v-7c1d7115]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-7c1d7115]{padding:10px 16px}table.page-table tbody tr[data-v-7c1d7115]:hover{background-color:#eeee}table.page-table tbody tr[data-v-7c1d7115]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-7c1d7115]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-7c1d7115]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-7c1d7115]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-7c1d7115]{width:100px}table.popups-table th.checkbox[data-v-7c1d7115]{width:50px;text-align:center}table.popups-table th.setting[data-v-7c1d7115]{width:100px;text-align:center}table.popups-table thead[data-v-7c1d7115]{color:#eee}table.popups-table thead tr[data-v-7c1d7115]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-7c1d7115]{padding:10px 16px}table.popups-table tbody tr[data-v-7c1d7115]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-7c1d7115]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-7c1d7115]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-7c1d7115]{width:100%}header.header-desktop[data-v-7c1d7115]{display:block}header.header-mobile[data-v-7c1d7115]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-7c1d7115]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-7c1d7115]{width:100%;height:100%}header.header-mobile button svg path[data-v-7c1d7115]{fill:#fff}nav.sidebar[data-v-7c1d7115]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-7c1d7115]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-7c1d7115]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-7c1d7115]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-7c1d7115]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-7c1d7115]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-7c1d7115]{color:#fff}nav.sidebar .container .children[data-v-7c1d7115]{padding-left:30px}@-moz-keyframes tada-7c1d7115{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-7c1d7115{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-7c1d7115{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-7c1d7115{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-7c1d7115]{animation:dialogEnter-7c1d7115 .3s linear forwards}.dialog-leave-active[data-v-7c1d7115]{animation:dialogLeave-7c1d7115 .3s linear forwards}@keyframes dialogEnter-7c1d7115{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-7c1d7115{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-7c1d7115]{animation:dialogEnter-7c1d7115 .2s linear forwards}.dialog1-leave-active[data-v-7c1d7115]{animation:dialogLeave-7c1d7115 .2s linear forwards}@keyframes rotateEnter-7c1d7115{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-7c1d7115]{animation:rotateEnter-7c1d7115 .7s;position:relative}.rotate-leave-active[data-v-7c1d7115]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-7c1d7115{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-7c1d7115{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-7c1d7115]{animation:slideOutTop-7c1d7115 .5s linear forwards}.slide-top-leave-active[data-v-7c1d7115],.slide-bottom-enter-active[data-v-7c1d7115]{animation:slideOutBottom-7c1d7115 .5s linear forwards}@keyframes slideInLeft-7c1d7115{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-7c1d7115{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-7c1d7115]{animation:slideInLeft-7c1d7115 .3s linear forwards}.slide-left-leave-active[data-v-7c1d7115]{animation:slideInRight-7c1d7115 .3s linear forwards}@keyframes slideOutLeft-7c1d7115{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-7c1d7115{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-7c1d7115]{animation:slideOutLeft-7c1d7115 .3s linear forwards}.slide-right-leave-active[data-v-7c1d7115]{animation:slideOutRight-7c1d7115 .3s linear forwards}@keyframes bganimation-7c1d7115{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-7c1d7115{0%{height:0}to{height:100px}}@keyframes fadeEnd-7c1d7115{0%{height:100%}to{height:0}}.fade-enter-active[data-v-7c1d7115]{animation:fadeStart-7c1d7115 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-7c1d7115]{animation:fadeEnd-7c1d7115 .1s linear forwards;overflow:hidden}.container[data-v-7c1d7115]{width:100%;padding:60px 0}.desc[data-v-7c1d7115]{text-align:center;width:452px;margin:0 auto 40px}.desc a[data-v-7c1d7115]{color:#06f}.desc span[data-v-7c1d7115]{display:inline-block;width:100%}.btn[data-v-7c1d7115]{display:block;padding:10px 32px;border-radius:4px;background:#0060ff;color:#fff;margin:0 auto;width:fit-content}@keyframes bganimation-719851d0{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes rotateEnter-719851d0{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}@keyframes turns-719851d0{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}@keyframes slideInLeft-719851d0{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-719851d0{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-719851d0]{animation:slideInLeft-719851d0 .3s linear forwards}.slide-left-leave-active[data-v-719851d0]{animation:slideInRight-719851d0 .3s linear forwards}@keyframes slideOutLeft-719851d0{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-719851d0{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-719851d0]{animation:slideOutLeft-719851d0 .3s linear forwards}.slide-right-leave-active[data-v-719851d0]{animation:slideOutRight-719851d0 .3s linear forwards}.rotate-enter-active[data-v-719851d0]{animation:rotateEnter-719851d0 .7s;position:relative}.rotate-leave-active[data-v-719851d0]{opacity:0;display:none;position:relative;z-index:-999}.app-container[data-v-719851d0]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-719851d0]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-719851d0]{color:#f9ad1e}.notice_info li[data-v-719851d0]{font-size:14px;list-style:revert}.text-container[data-v-719851d0]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-719851d0]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-719851d0]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-719851d0]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-719851d0]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-719851d0]{width:100%}.text-container .text-container_item p.info-desc[data-v-719851d0]{width:100%;color:#999;font-size:14px}.page-container[data-v-719851d0]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-719851d0]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-719851d0]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-719851d0]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-719851d0],.page-container .page-flex .page-sidebar a[data-v-719851d0]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-719851d0]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-719851d0]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-719851d0]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-719851d0]{border-radius:0;padding:1rem}ul.ul-container[data-v-719851d0]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-719851d0]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-719851d0]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-719851d0]{width:100%}form.form-container[data-v-719851d0]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-719851d0]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-719851d0]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-719851d0]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-719851d0]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-719851d0],form.form-container .label-value select[data-v-719851d0]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-719851d0]:focus,form.form-container .label-value select[data-v-719851d0]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-719851d0]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-719851d0]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-719851d0],form.form-container .label-value input[type=radio][data-v-719851d0]{width:auto}form.form-container .label-value input[type=radio][data-v-719851d0]{margin:0 4px 0 0}form.form-container .label-value input[data-v-719851d0]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-719851d0]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-719851d0]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-719851d0]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-719851d0]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-719851d0]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-719851d0]:hover{background-color:#747474}form.form-container .label-msg[data-v-719851d0]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-719851d0]{color:#f9ad1e}form.form-container .label-flex[data-v-719851d0]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-719851d0]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-719851d0]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-719851d0]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-719851d0]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-719851d0]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-719851d0]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-719851d0],form.form-container1 .label-value select[data-v-719851d0]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-719851d0]:focus,form.form-container1 .label-value select[data-v-719851d0]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-719851d0]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-719851d0],form.form-container1 .label-value input[type=radio][data-v-719851d0]{width:auto}form.form-container1 .label-value input[type=radio][data-v-719851d0]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-719851d0]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-719851d0]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-719851d0]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-719851d0]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-719851d0]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-719851d0]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-719851d0]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-719851d0]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-719851d0]{color:#f9ad1e}form.form-container1 .label-flex[data-v-719851d0]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-719851d0]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-719851d0]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-719851d0]{width:100px}table.page-table th.checkbox[data-v-719851d0]{width:50px;text-align:center}table.page-table th.setting[data-v-719851d0]{width:100px;text-align:center}table.page-table thead[data-v-719851d0]{color:#909399}table.page-table thead tr[data-v-719851d0]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-719851d0]{padding:10px 16px}table.page-table tbody tr[data-v-719851d0]:hover{background-color:#eeee}table.page-table tbody tr[data-v-719851d0]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-719851d0]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-719851d0]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-719851d0]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-719851d0]{width:100px}table.popups-table th.checkbox[data-v-719851d0]{width:50px;text-align:center}table.popups-table th.setting[data-v-719851d0]{width:100px;text-align:center}table.popups-table thead[data-v-719851d0]{color:#eee}table.popups-table thead tr[data-v-719851d0]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-719851d0]{padding:10px 16px}table.popups-table tbody tr[data-v-719851d0]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-719851d0]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-719851d0]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-719851d0]{width:100%}header.header-desktop[data-v-719851d0]{display:block}header.header-mobile[data-v-719851d0]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-719851d0]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-719851d0]{width:100%;height:100%}header.header-mobile button svg path[data-v-719851d0]{fill:#fff}nav.sidebar[data-v-719851d0]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-719851d0]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-719851d0]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-719851d0]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-719851d0]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-719851d0]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-719851d0]{color:#fff}nav.sidebar .container .children[data-v-719851d0]{padding-left:30px}@-moz-keyframes tada-719851d0{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-719851d0{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-719851d0{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-719851d0{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-719851d0]{animation:dialogEnter-719851d0 .3s linear forwards}.dialog-leave-active[data-v-719851d0]{animation:dialogLeave-719851d0 .3s linear forwards}@keyframes dialogEnter-719851d0{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-719851d0{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-719851d0]{animation:dialogEnter-719851d0 .2s linear forwards}.dialog1-leave-active[data-v-719851d0]{animation:dialogLeave-719851d0 .2s linear forwards}@keyframes rotateEnter-719851d0{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-719851d0]{animation:rotateEnter-719851d0 .7s;position:relative}.rotate-leave-active[data-v-719851d0]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-719851d0{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-719851d0{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-719851d0]{animation:slideOutTop-719851d0 .5s linear forwards}.slide-top-leave-active[data-v-719851d0],.slide-bottom-enter-active[data-v-719851d0]{animation:slideOutBottom-719851d0 .5s linear forwards}@keyframes slideInLeft-719851d0{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-719851d0{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-719851d0]{animation:slideInLeft-719851d0 .3s linear forwards}.slide-left-leave-active[data-v-719851d0]{animation:slideInRight-719851d0 .3s linear forwards}@keyframes slideOutLeft-719851d0{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-719851d0{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-719851d0]{animation:slideOutLeft-719851d0 .3s linear forwards}.slide-right-leave-active[data-v-719851d0]{animation:slideOutRight-719851d0 .3s linear forwards}@keyframes bganimation-719851d0{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-719851d0{0%{height:0}to{height:100px}}@keyframes fadeEnd-719851d0{0%{height:100%}to{height:0}}.fade-enter-active[data-v-719851d0]{animation:fadeStart-719851d0 .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-719851d0]{animation:fadeEnd-719851d0 .1s linear forwards;overflow:hidden}.card-content[data-v-719851d0]{width:100%;height:100%;cursor:pointer}.card-content>span[data-v-719851d0]{display:inline-block;position:relative;top:-8px;width:100%;font-size:13px;line-height:14px;text-align:center}.card-content>div[data-v-719851d0]{height:52px;position:relative}.card-content>div>img[data-v-719851d0]{position:relative;width:52px;top:50%;transform:translateY(-50%);display:block;margin:0 auto}.width-60[data-v-719851d0]{display:inline-block;vertical-align:top;width:60%}.width-40[data-v-719851d0]{display:inline-block;vertical-align:top;width:40%}@media screen and (max-width: 668px){.responsive[data-v-719851d0]{width:100%}}@keyframes bganimation-4955cc3f{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes rotateEnter-4955cc3f{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}@keyframes turns-4955cc3f{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}@keyframes slideInLeft-4955cc3f{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-4955cc3f{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-4955cc3f]{animation:slideInLeft-4955cc3f .3s linear forwards}.slide-left-leave-active[data-v-4955cc3f]{animation:slideInRight-4955cc3f .3s linear forwards}@keyframes slideOutLeft-4955cc3f{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-4955cc3f{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-4955cc3f]{animation:slideOutLeft-4955cc3f .3s linear forwards}.slide-right-leave-active[data-v-4955cc3f]{animation:slideOutRight-4955cc3f .3s linear forwards}.rotate-enter-active[data-v-4955cc3f]{animation:rotateEnter-4955cc3f .7s;position:relative}.rotate-leave-active[data-v-4955cc3f]{opacity:0;display:none;position:relative;z-index:-999}.app-container[data-v-4955cc3f]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-4955cc3f]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-4955cc3f]{color:#f9ad1e}.notice_info li[data-v-4955cc3f]{font-size:14px;list-style:revert}.text-container[data-v-4955cc3f]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-4955cc3f]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-4955cc3f]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-4955cc3f]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-4955cc3f]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-4955cc3f]{width:100%}.text-container .text-container_item p.info-desc[data-v-4955cc3f]{width:100%;color:#999;font-size:14px}.page-container[data-v-4955cc3f]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-4955cc3f]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-4955cc3f]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-4955cc3f]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-4955cc3f],.page-container .page-flex .page-sidebar a[data-v-4955cc3f]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-4955cc3f]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-4955cc3f]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-4955cc3f]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-4955cc3f]{border-radius:0;padding:1rem}ul.ul-container[data-v-4955cc3f]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-4955cc3f]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-4955cc3f]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-4955cc3f]{width:100%}form.form-container[data-v-4955cc3f]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-4955cc3f]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-4955cc3f]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-4955cc3f]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-4955cc3f]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-4955cc3f],form.form-container .label-value select[data-v-4955cc3f]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-4955cc3f]:focus,form.form-container .label-value select[data-v-4955cc3f]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-4955cc3f]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-4955cc3f]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-4955cc3f],form.form-container .label-value input[type=radio][data-v-4955cc3f]{width:auto}form.form-container .label-value input[type=radio][data-v-4955cc3f]{margin:0 4px 0 0}form.form-container .label-value input[data-v-4955cc3f]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-4955cc3f]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-4955cc3f]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-4955cc3f]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-4955cc3f]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-4955cc3f]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-4955cc3f]:hover{background-color:#747474}form.form-container .label-msg[data-v-4955cc3f]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-4955cc3f]{color:#f9ad1e}form.form-container .label-flex[data-v-4955cc3f]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-4955cc3f]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-4955cc3f]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-4955cc3f]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-4955cc3f]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-4955cc3f]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-4955cc3f]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-4955cc3f],form.form-container1 .label-value select[data-v-4955cc3f]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-4955cc3f]:focus,form.form-container1 .label-value select[data-v-4955cc3f]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-4955cc3f]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-4955cc3f],form.form-container1 .label-value input[type=radio][data-v-4955cc3f]{width:auto}form.form-container1 .label-value input[type=radio][data-v-4955cc3f]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-4955cc3f]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-4955cc3f]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-4955cc3f]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-4955cc3f]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-4955cc3f]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-4955cc3f]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-4955cc3f]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-4955cc3f]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-4955cc3f]{color:#f9ad1e}form.form-container1 .label-flex[data-v-4955cc3f]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-4955cc3f]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-4955cc3f]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-4955cc3f]{width:100px}table.page-table th.checkbox[data-v-4955cc3f]{width:50px;text-align:center}table.page-table th.setting[data-v-4955cc3f]{width:100px;text-align:center}table.page-table thead[data-v-4955cc3f]{color:#909399}table.page-table thead tr[data-v-4955cc3f]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-4955cc3f]{padding:10px 16px}table.page-table tbody tr[data-v-4955cc3f]:hover{background-color:#eeee}table.page-table tbody tr[data-v-4955cc3f]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-4955cc3f]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-4955cc3f]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-4955cc3f]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-4955cc3f]{width:100px}table.popups-table th.checkbox[data-v-4955cc3f]{width:50px;text-align:center}table.popups-table th.setting[data-v-4955cc3f]{width:100px;text-align:center}table.popups-table thead[data-v-4955cc3f]{color:#eee}table.popups-table thead tr[data-v-4955cc3f]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-4955cc3f]{padding:10px 16px}table.popups-table tbody tr[data-v-4955cc3f]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-4955cc3f]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-4955cc3f]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-4955cc3f]{width:100%}header.header-desktop[data-v-4955cc3f]{display:block}header.header-mobile[data-v-4955cc3f]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-4955cc3f]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-4955cc3f]{width:100%;height:100%}header.header-mobile button svg path[data-v-4955cc3f]{fill:#fff}nav.sidebar[data-v-4955cc3f]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-4955cc3f]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-4955cc3f]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-4955cc3f]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-4955cc3f]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-4955cc3f]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-4955cc3f]{color:#fff}nav.sidebar .container .children[data-v-4955cc3f]{padding-left:30px}@-moz-keyframes tada-4955cc3f{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-4955cc3f{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-4955cc3f{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-4955cc3f{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-4955cc3f]{animation:dialogEnter-4955cc3f .3s linear forwards}.dialog-leave-active[data-v-4955cc3f]{animation:dialogLeave-4955cc3f .3s linear forwards}@keyframes dialogEnter-4955cc3f{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-4955cc3f{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-4955cc3f]{animation:dialogEnter-4955cc3f .2s linear forwards}.dialog1-leave-active[data-v-4955cc3f]{animation:dialogLeave-4955cc3f .2s linear forwards}@keyframes rotateEnter-4955cc3f{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-4955cc3f]{animation:rotateEnter-4955cc3f .7s;position:relative}.rotate-leave-active[data-v-4955cc3f]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-4955cc3f{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-4955cc3f{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-4955cc3f]{animation:slideOutTop-4955cc3f .5s linear forwards}.slide-top-leave-active[data-v-4955cc3f],.slide-bottom-enter-active[data-v-4955cc3f]{animation:slideOutBottom-4955cc3f .5s linear forwards}@keyframes slideInLeft-4955cc3f{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-4955cc3f{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-4955cc3f]{animation:slideInLeft-4955cc3f .3s linear forwards}.slide-left-leave-active[data-v-4955cc3f]{animation:slideInRight-4955cc3f .3s linear forwards}@keyframes slideOutLeft-4955cc3f{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-4955cc3f{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-4955cc3f]{animation:slideOutLeft-4955cc3f .3s linear forwards}.slide-right-leave-active[data-v-4955cc3f]{animation:slideOutRight-4955cc3f .3s linear forwards}@keyframes bganimation-4955cc3f{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-4955cc3f{0%{height:0}to{height:100px}}@keyframes fadeEnd-4955cc3f{0%{height:100%}to{height:0}}.fade-enter-active[data-v-4955cc3f]{animation:fadeStart-4955cc3f .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-4955cc3f]{animation:fadeEnd-4955cc3f .1s linear forwards;overflow:hidden}.disk-item-tooltip[data-v-4955cc3f]{position:fixed;background:rgba(0,0,0,.7);z-index:10111;color:#fff;padding:8px;font-size:12px;min-width:200px;line-height:16px}.disk-item-tooltip[data-v-4955cc3f]:after{content:"";position:absolute;bottom:-6px;border-color:#4c4c4c rgba(0,0,0,0) rgba(0,0,0,0);left:0;right:0;text-align:center;width:0;margin:0 auto;border-width:6px 8px 0;border-style:solid}@keyframes rotateEnter-cbe9b60a{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}@keyframes turns-cbe9b60a{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.rotate-enter-active[data-v-cbe9b60a]{animation:rotateEnter-cbe9b60a .7s;position:relative}.rotate-leave-active[data-v-cbe9b60a]{opacity:0;display:none;position:relative;z-index:-999}.app-container[data-v-cbe9b60a]{width:100%;background-color:#fff;box-shadow:0 0 10px 1px #373f6924;padding:10px 30px;border-radius:6px;position:relative}.notice_info[data-v-cbe9b60a]{width:100%;display:block;margin-bottom:1rem;font-size:16px;line-height:24px;text-align:left;color:#666}.notice_info.warning[data-v-cbe9b60a]{color:#f9ad1e}.notice_info li[data-v-cbe9b60a]{font-size:14px;list-style:revert}.text-container[data-v-cbe9b60a]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.text-container .text-container_item[data-v-cbe9b60a]{width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;min-height:42px;line-height:42px}.text-container .text-container_item .text-container_item_title[data-v-cbe9b60a]{color:#333;font-size:16px;font-weight:700;min-width:100px}.text-container .text-container_item .text-container_item_value[data-v-cbe9b60a]{flex:1;color:#666;font-size:16px;display:flex;flex-wrap:wrap;padding-left:10px}.text-container .text-container_item .text-container_item_flex[data-v-cbe9b60a]{flex:1;color:#666;font-size:16px}.text-container .text-container_item .text-container_item_block[data-v-cbe9b60a]{width:100%}.text-container .text-container_item p.info-desc[data-v-cbe9b60a]{width:100%;color:#999;font-size:14px}.page-container[data-v-cbe9b60a]{width:100%;background-color:#fff;border-radius:6px;padding:3rem}.page-container .page-flex[data-v-cbe9b60a]{display:flex;flex-wrap:wrap}.page-container .page-flex .page-sidebar[data-v-cbe9b60a]{flex:0 0 100%;max-width:200px;border-right:1px solid #eee}.page-container .page-flex .page-sidebar a[data-v-cbe9b60a]{width:100%;height:42px;line-height:42px;font-size:16px;cursor:pointer;color:#333;display:block;user-select:none;position:relative;display:flex;flex-wrap:wrap;align-items:center}.page-container .page-flex .page-sidebar a.on[data-v-cbe9b60a],.page-container .page-flex .page-sidebar a[data-v-cbe9b60a]:hover,.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-cbe9b60a]{transition:.3s;color:#418cff}.page-container .page-flex .page-sidebar a.router-link-active.router-link-exact-active[data-v-cbe9b60a]:before{content:"";position:absolute;left:-1rem;width:3px;height:20px;background-color:#4388ff}.page-container .page-flex .page-main[data-v-cbe9b60a]{flex:0 0 100%;max-width:calc(100% - 200px)}.page-container.page-mobile[data-v-cbe9b60a]{border-radius:0;padding:1rem}ul.ul-container[data-v-cbe9b60a]{width:100%;display:block;margin-bottom:1rem}ul.ul-container .ul-container_title[data-v-cbe9b60a]{width:100%;color:#ff6b6b;font-size:14px;display:flex;flex-wrap:wrap;align-items:center}ul.ul-container .ul-container_title[data-v-cbe9b60a]:before{content:"";padding:3px;background:#ff6b6b;border-radius:50%;display:inline-block;margin-right:.2rem}ul.ul-container .ul-container_body[data-v-cbe9b60a]{width:100%}form.form-container[data-v-cbe9b60a]{display:block;width:100%;padding:0 1rem}form.form-container .label-info[data-v-cbe9b60a]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container .label-name[data-v-cbe9b60a]{display:block;width:100%;margin-bottom:.5rem;color:#666}form.form-container .label-name span[data-v-cbe9b60a]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container .label-value[data-v-cbe9b60a]{display:block;width:100%;margin-bottom:1rem}form.form-container .label-value input[data-v-cbe9b60a],form.form-container .label-value select[data-v-cbe9b60a]{display:block;width:100%;height:42px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px}form.form-container .label-value input[data-v-cbe9b60a]:focus,form.form-container .label-value select[data-v-cbe9b60a]:focus{transition:.2s;border:1px solid #418dfe}form.form-container .label-value select[data-v-cbe9b60a]{border-radius:3px;padding:0 10px}form.form-container .label-value input[data-v-cbe9b60a]{border-left:none!important;border-right:none!important;border-top:none!important;padding:0 10px}form.form-container .label-value input[type=checkbox][data-v-cbe9b60a],form.form-container .label-value input[type=radio][data-v-cbe9b60a]{width:auto}form.form-container .label-value input[type=radio][data-v-cbe9b60a]{margin:0 4px 0 0}form.form-container .label-value input[data-v-cbe9b60a]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container .label-value input[data-v-cbe9b60a]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-cbe9b60a]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-value input[data-v-cbe9b60a]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container .label-btns[data-v-cbe9b60a]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container .label-btns button.sumbit[data-v-cbe9b60a]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container .label-btns button.sumbit[data-v-cbe9b60a]:hover{background-color:#747474}form.form-container .label-msg[data-v-cbe9b60a]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container .label-msg.warning[data-v-cbe9b60a]{color:#f9ad1e}form.form-container .label-flex[data-v-cbe9b60a]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container .label-flex label[data-v-cbe9b60a]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}form.form-container1[data-v-cbe9b60a]{display:block;width:100%;padding:0 1rem}form.form-container1 .label-info[data-v-cbe9b60a]{width:100%;display:block;margin-bottom:1rem;color:#f9ad1e;font-size:16px;line-height:24px;text-align:left}form.form-container1 .label-name[data-v-cbe9b60a]{display:block;width:100%;margin-bottom:4px;color:#666;font-size:14px}form.form-container1 .label-name span[data-v-cbe9b60a]:before{content:"*";color:#f56c6c;margin-right:4px;width:10px;display:inline-block;vertical-align:middle}form.form-container1 .label-value[data-v-cbe9b60a]{display:block;width:100%;margin-bottom:.5rem}form.form-container1 .label-value input[data-v-cbe9b60a],form.form-container1 .label-value select[data-v-cbe9b60a]{display:block;width:100%;height:36px;background:none;border:1px solid #c2c2c2;color:#333;font-size:14px;padding:0 10px;border-radius:4px}form.form-container1 .label-value input[data-v-cbe9b60a]:focus,form.form-container1 .label-value select[data-v-cbe9b60a]:focus{transition:.2s;border:1px solid #418dfe}form.form-container1 .label-value select[data-v-cbe9b60a]{border-radius:3px;padding:0 10px}form.form-container1 .label-value input[type=checkbox][data-v-cbe9b60a],form.form-container1 .label-value input[type=radio][data-v-cbe9b60a]{width:auto}form.form-container1 .label-value input[type=radio][data-v-cbe9b60a]{margin:0 4px 0 0}form.form-container1 .label-value input[data-v-cbe9b60a]:disabled{background-color:#eee;border:1px solid #c2c2c2;border-radius:3px}form.form-container1 .label-value input[data-v-cbe9b60a]::placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-cbe9b60a]:-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-value input[data-v-cbe9b60a]::-ms-input-placeholder{color:#666;opacity:.54;font-size:14px}form.form-container1 .label-btns[data-v-cbe9b60a]{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end}form.form-container1 .label-btns button.sumbit[data-v-cbe9b60a]{width:100px;height:28px;border-radius:3px;background-color:#5d5b5b;color:#fff;font-size:14px}form.form-container1 .label-btns button.sumbit[data-v-cbe9b60a]:hover{background-color:#747474}form.form-container1 .label-msg[data-v-cbe9b60a]{display:block;width:100%;color:#ff3b3b;font-size:14px}form.form-container1 .label-msg.warning[data-v-cbe9b60a]{color:#f9ad1e}form.form-container1 .label-flex[data-v-cbe9b60a]{width:100%;display:flex;flex-wrap:wrap;align-items:center}form.form-container1 .label-flex label[data-v-cbe9b60a]{width:100px;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer;color:#666}table.page-table[data-v-cbe9b60a]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666;border:1px solid #d8d8d8;background-color:#fff}table.page-table th.uid[data-v-cbe9b60a]{width:100px}table.page-table th.checkbox[data-v-cbe9b60a]{width:50px;text-align:center}table.page-table th.setting[data-v-cbe9b60a]{width:100px;text-align:center}table.page-table thead[data-v-cbe9b60a]{color:#909399}table.page-table thead tr[data-v-cbe9b60a]{width:100%;height:28px;line-height:28px;border-bottom:1px solid #d8d8d8;color:#909399;font-size:12px}table.page-table thead tr th[data-v-cbe9b60a]{padding:10px 16px}table.page-table tbody tr[data-v-cbe9b60a]:hover{background-color:#eeee}table.page-table tbody tr[data-v-cbe9b60a]{cursor:pointer;width:100%;border-bottom:1px solid #d8d8d8;color:#50575e}table.page-table tbody tr th[data-v-cbe9b60a]{font-size:12px;padding:16px;vertical-align:middle}table.page-table tbody tr[data-v-cbe9b60a]:nth-child(odd){background-color:#f6f7f7}table.popups-table[data-v-cbe9b60a]{table-layout:fixed;border-collapse:collapse;border-spacing:0;width:100%;text-align:left;color:#666}table.popups-table th.uid[data-v-cbe9b60a]{width:100px}table.popups-table th.checkbox[data-v-cbe9b60a]{width:50px;text-align:center}table.popups-table th.setting[data-v-cbe9b60a]{width:100px;text-align:center}table.popups-table thead[data-v-cbe9b60a]{color:#eee}table.popups-table thead tr[data-v-cbe9b60a]{width:100%;height:28px;line-height:28px;color:#eee;font-size:12px}table.popups-table thead tr th[data-v-cbe9b60a]{padding:10px 16px}table.popups-table tbody tr[data-v-cbe9b60a]{cursor:pointer;width:100%;color:#eee}table.popups-table tbody tr th[data-v-cbe9b60a]{font-size:12px;padding:16px;vertical-align:top}.body[data-v-cbe9b60a]{max-width:1080px;min-width:1080px;position:relative;margin:0 auto;width:100%;padding:1rem 0}header[data-v-cbe9b60a]{width:100%}header.header-desktop[data-v-cbe9b60a]{display:block}header.header-mobile[data-v-cbe9b60a]{display:none;background-color:#1e1e1e;height:50px;position:fixed;z-index:100;width:100%;flex-wrap:wrap;align-items:center}header.header-mobile button[data-v-cbe9b60a]{background:none;width:50px;height:100%;padding:1rem}header.header-mobile button svg[data-v-cbe9b60a]{width:100%;height:100%}header.header-mobile button svg path[data-v-cbe9b60a]{fill:#fff}nav.sidebar[data-v-cbe9b60a]{position:fixed;inset:0;z-index:101}nav.sidebar .bg[data-v-cbe9b60a]{background:rgba(0,0,0,.5);z-index:100;inset:0 -100% 0 0;position:fixed}nav.sidebar .container[data-v-cbe9b60a]{position:fixed;inset:0 20% 0 0;background-color:#000000e8;z-index:101;padding:2rem 1rem;width:80%;overflow:auto}nav.sidebar .container li.tag[data-v-cbe9b60a]{margin:10px;display:block;cursor:pointer;height:32px;line-height:32px}nav.sidebar .container li.tag a[data-v-cbe9b60a]{color:#c9c7c7;font-size:.875rem;display:block}nav.sidebar .container li.tag a i.icon.iconfont[data-v-cbe9b60a]{width:22px;font-size:.875rem;margin-right:5px;display:inline-block}nav.sidebar .container li.tag a.router-link-active.router-link-exact-active[data-v-cbe9b60a]{color:#fff}nav.sidebar .container .children[data-v-cbe9b60a]{padding-left:30px}@-moz-keyframes tada-cbe9b60a{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.2) rotate(-3deg)}to{-moz-transform:scale(1) rotate(0)}}@-webkit-keyframes tada-cbe9b60a{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.2) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.2) rotate(-3deg)}to{-webkit-transform:scale(1) rotate(0)}}@keyframes dialogEnter-cbe9b60a{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes dialogLeave-cbe9b60a{0%{transform:scale(1)}to{transform:scale(0)}}.dialog-enter-active[data-v-cbe9b60a]{animation:dialogEnter-cbe9b60a .3s linear forwards}.dialog-leave-active[data-v-cbe9b60a]{animation:dialogLeave-cbe9b60a .3s linear forwards}@keyframes dialogEnter-cbe9b60a{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes dialogLeave-cbe9b60a{0%{transform:scale(1)}to{transform:scale(.9)}}.dialog1-enter-active[data-v-cbe9b60a]{animation:dialogEnter-cbe9b60a .2s linear forwards}.dialog1-leave-active[data-v-cbe9b60a]{animation:dialogLeave-cbe9b60a .2s linear forwards}@keyframes rotateEnter-cbe9b60a{0%{transform:rotateY(180deg)}10%{transform:rotateY(198deg)}20%{transform:rotateY(216deg)}30%{transform:rotateY(234deg)}40%{transform:rotateY(252deg)}50%{transform:rotateY(270deg)}60%{transform:rotateY(288deg)}70%{transform:rotateY(306deg)}80%{transform:rotateY(324deg)}90%{transform:rotateY(342deg)}to{transform:rotateY(360deg)}}.rotate-enter-active[data-v-cbe9b60a]{animation:rotateEnter-cbe9b60a .7s;position:relative}.rotate-leave-active[data-v-cbe9b60a]{opacity:0;display:none;position:relative;z-index:-999}@keyframes slideOutTop-cbe9b60a{0%{position:fixed;top:100%;left:0;right:0;z-index:9999}to{position:fixed;inset:0;z-index:9999}}@keyframes slideOutBottom-cbe9b60a{0%{position:fixed;top:0;left:0;right:0;z-index:9999}to{position:fixed;top:-100%;left:0;right:0;z-index:9999}}.slide-top-enter-active[data-v-cbe9b60a]{animation:slideOutTop-cbe9b60a .5s linear forwards}.slide-top-leave-active[data-v-cbe9b60a],.slide-bottom-enter-active[data-v-cbe9b60a]{animation:slideOutBottom-cbe9b60a .5s linear forwards}@keyframes slideInLeft-cbe9b60a{0%{transform:translate3d(100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideInRight-cbe9b60a{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(100%,0,0);position:fixed}}.slide-left-enter-active[data-v-cbe9b60a]{animation:slideInLeft-cbe9b60a .3s linear forwards}.slide-left-leave-active[data-v-cbe9b60a]{animation:slideInRight-cbe9b60a .3s linear forwards}@keyframes slideOutLeft-cbe9b60a{0%{transform:translate3d(-100%,0,0);position:fixed}to{transform:translateZ(0);position:fixed}}@keyframes slideOutRight-cbe9b60a{0%{transform:translateZ(0);position:fixed}to{transform:translate3d(-100%,0,0);position:fixed}}.slide-right-enter-active[data-v-cbe9b60a]{animation:slideOutLeft-cbe9b60a .3s linear forwards}.slide-right-leave-active[data-v-cbe9b60a]{animation:slideOutRight-cbe9b60a .3s linear forwards}@keyframes bganimation-cbe9b60a{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fadeStart-cbe9b60a{0%{height:0}to{height:100px}}@keyframes fadeEnd-cbe9b60a{0%{height:100%}to{height:0}}.fade-enter-active[data-v-cbe9b60a]{animation:fadeStart-cbe9b60a .1s linear forwards;overflow:hidden}.fade-leave-active[data-v-cbe9b60a]{animation:fadeEnd-cbe9b60a .1s linear forwards;overflow:hidden}.next-main[data-v-cbe9b60a]{width:100vw;height:100vh;background:url(/luci-static/istorex/bg.jpg?v=d8e6f6fb) no-repeat;background-size:cover;overflow-y:auto}.next-main[data-v-cbe9b60a]::-webkit-scrollbar{width:0px;height:0px}.next-main[data-v-cbe9b60a]::-webkit-scrollbar,.next-main[data-v-cbe9b60a]::-webkit-scrollbar-corner{background:transparent}.next-main[data-v-cbe9b60a]::-webkit-scrollbar-thumb{background:#9e9e9e}.next-main[data-v-cbe9b60a]::-webkit-scrollbar-thumb:hover{background:#757575}.next-main[data-v-cbe9b60a]::-webkit-scrollbar-thumb:active{background:#424242}.content[data-v-cbe9b60a]{padding:8px 0;margin:0 auto;max-width:1280px}.content>div[data-v-cbe9b60a]{display:inline-block;vertical-align:top;width:50%}@media screen and (max-width: 1106px){.content[data-v-cbe9b60a]{width:100vw;padding:4px}.content>div[data-v-cbe9b60a]{width:100%}} ================================================ FILE: luci-app-istorex/luasrc/controller/istorex.lua ================================================ module("luci.controller.istorex", package.seeall) function index() if luci.sys.call("pgrep quickstart >/dev/null") == 0 then entry({"admin", "istorex"}, call("istorex_template")).leaf = true if nixio.fs.access("/usr/lib/lua/luci/view/istorex/main_dev.htm") then entry({"admin", "istorex_dev"}, call("istorex_template_dev")).leaf = true end else entry({"admin", "istorex"}, call("redirect_fallback")).leaf = true end entry({"admin", "istorex_api","status"}, call("istorex_api_status")).dependent = false entry({"admin", "istorex_api","update"}, call("istorex_api_update")).dependent = false entry({"admin", "istorex_api","upload-bg"}, call("istorex_api_uploadbg")).dependent = false end local function user_id() local jsonc = require "luci.jsonc" local json_parse = jsonc.parse local fs = require "nixio.fs" local data = fs.readfile("/etc/.app_store.id") local id if data ~= nil then id = json_parse(data) end if id == nil then fs.unlink("/etc/.app_store.id") id = {arch="",uid=""} end id.version = (fs.readfile("/etc/.app_store.version") or "?"):gsub("[\r\n]", "") return id end function get_config_data() local uci = require "luci.model.uci".cursor() local model = uci:get_first("istorex", "istorex", "model") local enabled = uci:get_first("istorex", "istorex", "enabled") local data = { model = model, enabled = enabled, } return data end function get_params() local config = get_config_data() local data = { prefix=luci.dispatcher.build_url(unpack({"admin", "istorex"})), id=user_id(), model = config.model, } return data end function get_dev_params() local config = get_config_data() local data = { prefix=luci.dispatcher.build_url(unpack({"admin", "istorex_dev"})), id=user_id(), model = config.model, } return data end function redirect_fallback() luci.http.redirect(luci.dispatcher.build_url("admin","status")) end function istorex_template() luci.template.render("istorex/main", get_params()) end function istorex_template_dev() luci.template.render("istorex/main_dev", get_dev_params()) end function istorex_api_status() local result = get_config_data() luci.http.prepare_content("application/json") luci.http.write_json({ success = 0, result = result, }) end function istorex_api_update() local http = require "luci.http" local jsonc = require "luci.jsonc" local uci = require "luci.model.uci".cursor() local content = http.content() local json_parse = jsonc.parse local req = json_parse(content) local data = { } if req == nil or next(req) == nil then data.error = "invalid request" else uci:set("istorex","@istorex[0]","model", req.model) uci:commit("istorex") data.success = 0 end http.prepare_content("application/json") http.write_json(data) end function istorex_api_uploadbg() local uci = require "uci" local x = uci.cursor() local fd local path local finished = false local tmpdir = "/www/luci-static/istorex/image" local filename = "" luci.http.setfilehandler( function(meta, chunk, eof) if not fd then filename = meta.file path = tmpdir .. "/bg.gif" fd = io.open(path, "w") end if chunk then fd:write(chunk) end if eof then fd:close() finished = true end end ) luci.http.formvalue("file") local result = { filename = filename } local data = { success = finished, result = result } luci.http.prepare_content("application/json") luci.http.write_json(data) end ================================================ FILE: luci-app-istorex/luasrc/view/istorex/index.htm ================================================ <% local istorex = require "luci.controller.istorex" istorex.istorex_template() %> ================================================ FILE: luci-app-istorex/luasrc/view/istorex/main.htm ================================================ <%=luci.sys.hostname()%> <%+tasks/embed%>
    ================================================ FILE: luci-app-istorex/luasrc/view/istorex/main_dev.htm ================================================ <% local ver = require "luci.version" -%> <%+tasks/embed%>
    ================================================ FILE: luci-app-istorex/root/etc/config/istorex ================================================ config istorex option enabled '1' option model 'wizard' ================================================ FILE: luci-app-istorex/root/etc/uci-defaults/50_luci-istorex ================================================ #!/bin/sh rm -f /tmp/luci-indexcache /tmp/luci-indexcache.* exit 0 ================================================ FILE: luci-app-istorex/root/usr/share/luci/menu.d/luci-app-istorex.json ================================================ { "admin/istorex": { "order": 0, "action": { "type": "template", "path": "istorex/index" } } } ================================================ FILE: luci-app-kai/Makefile ================================================ # # Copyright (C) 2008-2014 The LuCI Team # # This is free software, licensed under the Apache License, Version 2.0 . # include $(TOPDIR)/rules.mk LUCI_TITLE:=kai PKG_VERSION:=1.0.1 PKG_RELEASE:=1 LUCI_DEPENDS:=+kai +kai_session +luci-compat LUCI_MINIFY_CSS:=0 LUCI_MINIFY_JS:=0 define Package/luci-app-kai/conffiles /etc/config/kai endef define Package/luci-app-kai/postrm #!/bin/sh rm -f /tmp/luci-indexcache exit 0 endef include $(TOPDIR)/feeds/luci/luci.mk # call BuildPackage - OpenWrt buildroot signature ================================================ FILE: luci-app-kai/luasrc/controller/kai.lua ================================================ local http = require "luci.http" module("luci.controller.kai", package.seeall) function index() if not nixio.fs.access("/etc/config/kai") then return end local page page = entry({"admin", "services","kai"}, cbi("kai"), _("KAI"), 100) page.dependent = true entry({"admin", "services", "kai_status"}, call("kai_status")) end function kai_status() local sys = require "luci.sys" local uci = require "luci.model.uci".cursor() local status = { running = (sys.call("pidof kai_bin >/dev/null") == 0), port = 8197 } luci.http.prepare_content("application/json") luci.http.write_json(status) end ================================================ FILE: luci-app-kai/luasrc/model/cbi/kai.lua ================================================ local m, s m = Map("kai", translate("KAI"), translate("KAI is an efficient AI tool.")) m:section(SimpleSection).template = "kai/kai_status" s=m:section(TypedSection, "kai", translate("Global settings")) s.addremove=false s.anonymous=true s:option(Flag, "enabled", translate("Enable")).rmempty=false local kai_model = require "luci.model.kai" local blocks = kai_model.blocks() local home = kai_model.home() local data_dir = s:option(Value, "data_dir", translate("Data directory")) data_dir.rmempty = false data_dir.description = translate("Required. KAI session will store cwd/cache/data/config/state under this directory (subfolders: cwd, cache, data, config, state).") local paths, default_path = kai_model.find_paths(blocks, home, "Configs") for _, val in pairs(paths) do data_dir:value(val, val) end data_dir.default = default_path local port = s:option(Value, "port", translate("API port")) port.default = "8197" port.rmempty = false port.datatype = "port" port.description = translate("Port for KAI HTTP server (kai_bin). kai_session will read OPENCODE_CONFIG via 127.0.0.1:.") return m ================================================ FILE: luci-app-kai/luasrc/model/kai.lua ================================================ local jsonc = require "luci.jsonc" local kai = {} kai.blocks = function() local f = io.popen("lsblk -s -f -b -o NAME,FSSIZE,MOUNTPOINT --json", "r") local vals = {} if f then local ret = f:read("*all") f:close() local obj = jsonc.parse(ret) for _, val in pairs(obj and obj["blockdevices"] or {}) do local fsize = val["fssize"] if fsize ~= nil and string.len(fsize) > 10 and val["mountpoint"] then vals[#vals + 1] = val["mountpoint"] end end end return vals end kai.home = function() local uci = require "luci.model.uci".cursor() local home_dirs = {} home_dirs["main_dir"] = uci:get_first("quickstart", "main", "main_dir", "/root") home_dirs["Configs"] = uci:get_first("quickstart", "main", "conf_dir", home_dirs["main_dir"] .. "/Configs") home_dirs["Public"] = uci:get_first("quickstart", "main", "pub_dir", home_dirs["main_dir"] .. "/Public") home_dirs["Downloads"] = uci:get_first("quickstart", "main", "dl_dir", home_dirs["Public"] .. "/Downloads") home_dirs["Caches"] = uci:get_first("quickstart", "main", "tmp_dir", home_dirs["main_dir"] .. "/Caches") return home_dirs end kai.find_paths = function(blocks, home_dirs, path_name) local default_path = "" local paths = {} default_path = home_dirs[path_name] .. "/KAI" if #blocks == 0 then table.insert(paths, default_path) else for _, val in pairs(blocks) do table.insert(paths, val .. "/" .. path_name .. "/KAI") end local without_conf_dir = "/root/" .. path_name .. "/KAI" if default_path == without_conf_dir then default_path = paths[1] end end return paths, default_path end return kai ================================================ FILE: luci-app-kai/luasrc/view/kai/kai_status.htm ================================================
    <%:Status%>

    <%:Collecting data...%>

    ================================================ FILE: luci-app-linkease/Makefile ================================================ # Copyright (C) 2016 Openwrt.org # # This is free software, licensed under the Apache License, Version 2.0 . # include $(TOPDIR)/rules.mk LUCI_TITLE:=LuCI support for linkease LUCI_DEPENDS:=+linkease LUCI_PKGARCH:=all PKG_VERSION:=2.1.70-r3 # PKG_RELEASE MUST be empty for luci.mk PKG_RELEASE:= LUCI_MINIFY_CSS:=0 LUCI_MINIFY_JS:=0 include $(TOPDIR)/feeds/luci/luci.mk # call BuildPackage - OpenWrt buildroot signature ================================================ FILE: luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.22632dc4.js ================================================ import{ab as L,i as v,ac as M}from"./index.js";var N=/\s/;function $(n){for(var r=n.length;r--&&N.test(n.charAt(r)););return r}var B=/^\s+/;function R(n){return n&&n.slice(0,$(n)+1).replace(B,"")}var k=0/0,F=/^[-+]0x[0-9a-f]+$/i,_=/^0b[01]+$/i,j=/^0o[0-7]+$/i,D=parseInt;function S(n){if(typeof n=="number")return n;if(L(n))return k;if(v(n)){var r=typeof n.valueOf=="function"?n.valueOf():n;n=v(r)?r+"":r}if(typeof n!="string")return n===0?n:+n;n=R(n);var t=_.test(n);return t||j.test(n)?D(n.slice(2),t?2:8):F.test(n)?k:+n}var H=function(){return M.Date.now()};const h=H;var P="Expected a function",U=Math.max,X=Math.min;function z(n,r,t){var u,c,l,s,i,f,o=0,b=!1,d=!1,T=!0;if(typeof n!="function")throw new TypeError(P);r=S(r)||0,v(t)&&(b=!!t.leading,d="maxWait"in t,l=d?U(S(t.maxWait)||0,r):l,T="trailing"in t?!!t.trailing:T);function x(e){var a=u,m=c;return u=c=void 0,o=e,s=n.apply(m,a),s}function W(e){return o=e,i=setTimeout(g,r),b?x(e):s}function O(e){var a=e-f,m=e-o,E=r-a;return d?X(E,l-m):E}function p(e){var a=e-f,m=e-o;return f===void 0||a>=r||a<0||d&&m>=l}function g(){var e=h();if(p(e))return y(e);i=setTimeout(g,O(e))}function y(e){return i=void 0,T&&u?x(e):(u=c=void 0,s)}function A(){i!==void 0&&clearTimeout(i),o=0,u=f=c=i=void 0}function C(){return i===void 0?s:y(h())}function I(){var e=h(),a=p(e);if(u=arguments,c=this,f=e,a){if(i===void 0)return W(f);if(d)return clearTimeout(i),i=setTimeout(g,r),x(f)}return i===void 0&&(i=setTimeout(g,r)),s}return I.cancel=A,I.flush=C,I}export{z as d}; ================================================ FILE: luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.324cab41.js ================================================ var w9=Object.defineProperty,S9=Object.defineProperties;var y9=Object.getOwnPropertyDescriptors;var VN=Object.getOwnPropertySymbols;var L9=Object.prototype.hasOwnProperty,D9=Object.prototype.propertyIsEnumerable;var HN=(o,e,t)=>e in o?w9(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,I_=(o,e)=>{for(var t in e||(e={}))L9.call(e,t)&&HN(o,t,e[t]);if(VN)for(var t of VN(e))D9.call(e,t)&&HN(o,t,e[t]);return o},E_=(o,e)=>S9(o,y9(e));var io=(o,e,t)=>new Promise((i,n)=>{var s=l=>{try{a(t.next(l))}catch(c){n(c)}},r=l=>{try{a(t.throw(l))}catch(c){n(c)}},a=l=>l.done?i(l.value):Promise.resolve(l.value).then(s,r);a((t=t.apply(o,e)).next())});import{a as uC}from"./chunk.6424c2fc.js";import{bJ as k9,b as gC,d as vx,m as qR,e as Un,aD as Nd,au as Cx,h as fC,r as ki,w as Ul,o as pC,b6 as GR,q as li,F as Wn,z as y0,A as si,R as x9,_ as ZR,as as wx,bK as I9,bL as E9,n as Ho,p as Sx,b7 as N9,v as Nt,E as fd,G as T9,H as M9,D as A9,W as Gb,ae as YR,aA as XR,al as R9,aC as uy,bM as O9,S as yx,ag as P9,c as F9,bk as zN,b1 as B9,bN as UN,bA as QR,P as JR,Q as eO,C as L0,Y as W9,aF as V9,az as tO,O as Lx,t as Ka,I as mC,a9 as Dx,av as _C,$ as bC,a1 as iO,y as Xn,a4 as H9,x as Hr,by as z9,aN as U9,a5 as nO,a6 as sO,a7 as Xr,a2 as oO,aa as $N,N as $9,bO as jN,bP as j9,aB as N_,L as K9,a0 as rO}from"./index.js";import{l as q9}from"./chunk.4a114b4a.js";const Gc=o=>k9(o),vC=Symbol("tabsRootContextKey"),G9=gC({tabs:{type:vx(Array),default:()=>qR([])}}),Z9={name:"ElTabBar"},Y9=Un(E_(I_({},Z9),{props:G9,setup(o,{expose:e}){const t=o,i="ElTabBar",n=wx(),s=Nd(vC);s||Cx(i,"");const r=fC("tabs"),a=ki(),l=ki(),c=()=>{let h=0,u=0;const g=["top","bottom"].includes(s.props.tabPosition)?"width":"height",f=g==="width"?"x":"y";return t.tabs.every(_=>{var b,v,C,w;const S=(v=(b=n.parent)==null?void 0:b.refs)==null?void 0:v[`tab-${_.uid}`];if(!S)return!1;if(!_.active)return!0;u=S[`client${Gc(g)}`];const k=f==="x"?"left":"top";h=S.getBoundingClientRect()[k]-((w=(C=S.parentElement)==null?void 0:C.getBoundingClientRect()[k])!=null?w:0);const x=window.getComputedStyle(S);return g==="width"&&(t.tabs.length>1&&(u-=Number.parseFloat(x.paddingLeft)+Number.parseFloat(x.paddingRight)),h+=Number.parseFloat(x.paddingLeft)),!1}),{[g]:`${u}px`,transform:`translate${Gc(f)}(${h}px)`}},d=()=>l.value=c();return Ul(()=>t.tabs,()=>io(this,null,function*(){yield pC(),d()}),{immediate:!0}),GR(a,()=>d()),e({ref:a,update:d}),(h,u)=>(li(),Wn("div",{ref_key:"barRef",ref:a,class:y0([si(r).e("active-bar"),si(r).is(si(s).props.tabPosition)]),style:x9(l.value)},null,6))}}));var X9=ZR(Y9,[["__file","/home/runner/work/element-plus/element-plus/packages/components/tabs/src/tab-bar.vue"]]);const Q9=gC({panes:{type:vx(Array),default:()=>qR([])},currentName:{type:[String,Number],default:""},editable:Boolean,type:{type:String,values:["card","border-card",""],default:""},stretch:Boolean}),J9={tabClick:(o,e,t)=>t instanceof Event,tabRemove:(o,e)=>e instanceof Event},KN="ElTabNav",e8=Un({name:KN,props:Q9,emits:J9,setup(o,{expose:e,emit:t}){const i=wx(),n=Nd(vC);n||Cx(KN,"");const s=fC("tabs"),r=I9(),a=E9(),l=ki(),c=ki(),d=ki(),h=ki(!1),u=ki(0),g=ki(!1),f=ki(!0),_=Ho(()=>["top","bottom"].includes(n.props.tabPosition)?"width":"height"),b=Ho(()=>({transform:`translate${_.value==="width"?"X":"Y"}(-${u.value}px)`})),v=()=>{if(!l.value)return;const D=l.value[`offset${Gc(_.value)}`],I=u.value;if(!I)return;const R=I>D?I-D:0;u.value=R},C=()=>{if(!l.value||!c.value)return;const D=c.value[`offset${Gc(_.value)}`],I=l.value[`offset${Gc(_.value)}`],R=u.value;if(D-R<=I)return;const P=D-R>I*2?R+I:D-I;u.value=P},w=()=>io(this,null,function*(){const D=c.value;if(!h.value||!d.value||!l.value||!D)return;yield pC();const I=d.value.querySelector(".is-active");if(!I)return;const R=l.value,P=["top","bottom"].includes(n.props.tabPosition),H=I.getBoundingClientRect(),$=R.getBoundingClientRect(),ne=P?D.offsetWidth-$.width:D.offsetHeight-$.height,ae=u.value;let de=ae;P?(H.left<$.left&&(de=ae-($.left-H.left)),H.right>$.right&&(de=ae+H.right-$.right)):(H.top<$.top&&(de=ae-($.top-H.top)),H.bottom>$.bottom&&(de=ae+(H.bottom-$.bottom))),de=Math.max(de,0),u.value=Math.min(de,ne)}),S=()=>{if(!c.value||!l.value)return;const D=c.value[`offset${Gc(_.value)}`],I=l.value[`offset${Gc(_.value)}`],R=u.value;if(I0&&(u.value=0)},k=D=>{const I=D.code,{up:R,down:P,left:H,right:$}=Gb;if(![R,P,H,$].includes(I))return;const ne=Array.from(D.currentTarget.querySelectorAll("[role=tab]:not(.is-disabled)")),ae=ne.indexOf(D.target);let de;I===H||I===R?ae===0?de=ne.length-1:de=ae-1:ae{f.value&&(g.value=!0)},y=()=>g.value=!1;return Ul(r,D=>{D==="hidden"?f.value=!1:D==="visible"&&setTimeout(()=>f.value=!0,50)}),Ul(a,D=>{D?setTimeout(()=>f.value=!0,50):f.value=!1}),GR(d,S),Sx(()=>setTimeout(()=>w(),0)),N9(()=>S()),e({scrollToActiveTab:w,removeFocus:y}),Ul(()=>o.panes,()=>i.update(),{flush:"post"}),()=>{const D=h.value?[Nt("span",{class:[s.e("nav-prev"),s.is("disabled",!h.value.prev)],onClick:v},[Nt(fd,null,{default:()=>[Nt(T9,null,null)]})]),Nt("span",{class:[s.e("nav-next"),s.is("disabled",!h.value.next)],onClick:C},[Nt(fd,null,{default:()=>[Nt(M9,null,null)]})])]:null,I=o.panes.map((R,P)=>{var H,$,ne,ae;const de=R.uid,we=R.props.disabled,Se=($=(H=R.props.name)!=null?H:R.index)!=null?$:`${P}`,Me=!we&&(R.isClosable||o.editable);R.index=`${P}`;const St=Me?Nt(fd,{class:"is-icon-close",onClick:ge=>t("tabRemove",R,ge)},{default:()=>[Nt(A9,null,null)]}):null,mt=((ae=(ne=R.slots).label)==null?void 0:ae.call(ne))||R.props.label,_e=!we&&R.active?0:-1;return Nt("div",{ref:`tab-${de}`,class:[s.e("item"),s.is(n.props.tabPosition),s.is("active",R.active),s.is("disabled",we),s.is("closable",Me),s.is("focus",g.value)],id:`tab-${Se}`,key:`tab-${de}`,"aria-controls":`pane-${Se}`,role:"tab","aria-selected":R.active,tabindex:_e,onFocus:()=>x(),onBlur:()=>y(),onClick:ge=>{y(),t("tabClick",R,Se,ge)},onKeydown:ge=>{Me&&(ge.code===Gb.delete||ge.code===Gb.backspace)&&t("tabRemove",R,ge)}},[mt,St])});return Nt("div",{ref:d,class:[s.e("nav-wrap"),s.is("scrollable",!!h.value),s.is(n.props.tabPosition)]},[D,Nt("div",{class:s.e("nav-scroll"),ref:l},[Nt("div",{class:[s.e("nav"),s.is(n.props.tabPosition),s.is("stretch",o.stretch&&["top","bottom"].includes(n.props.tabPosition))],ref:c,style:b.value,role:"tablist",onKeydown:k},[o.type?null:Nt(X9,{tabs:[...o.panes]},null),I])])])}}}),t8=gC({type:{type:String,values:["card","border-card",""],default:""},activeName:{type:[String,Number]},closable:Boolean,addable:Boolean,modelValue:{type:[String,Number]},editable:Boolean,tabPosition:{type:String,values:["top","right","bottom","left"],default:"top"},beforeLeave:{type:vx(Function),default:()=>!0},stretch:Boolean}),dw=o=>P9(o)||F9(o),i8={[YR]:o=>dw(o),tabClick:(o,e)=>e instanceof Event,tabChange:o=>dw(o),edit:(o,e)=>["remove","add"].includes(e),tabRemove:o=>dw(o),tabAdd:()=>!0};var n8=Un({name:"ElTabs",props:t8,emits:i8,setup(o,{emit:e,slots:t,expose:i}){var n,s;const r=fC("tabs"),a=ki(),l=XR({}),c=ki((s=(n=o.modelValue)!=null?n:o.activeName)!=null?s:"0"),d=_=>{c.value=_,e(YR,_),e("tabChange",_)},h=_=>io(this,null,function*(){var b,v,C;if(!(c.value===_||zN(_)))try{(yield(b=o.beforeLeave)==null?void 0:b.call(o,_,c.value))!==!1&&(d(_),(C=(v=a.value)==null?void 0:v.removeFocus)==null||C.call(v))}catch(w){}}),u=(_,b,v)=>{_.props.disabled||(h(b),e("tabClick",_,v))},g=(_,b)=>{_.props.disabled||zN(_.props.name)||(b.stopPropagation(),e("edit",_.props.name,"remove"),e("tabRemove",_.props.name))},f=()=>{e("edit",void 0,"add"),e("tabAdd")};return R9({from:'"activeName"',replacement:'"model-value" or "v-model"',scope:"ElTabs",version:"2.3.0",ref:"https://element-plus.org/en-US/component/tabs.html#attributes",type:"Attribute"},Ho(()=>!!o.activeName)),Ul(()=>o.activeName,_=>h(_)),Ul(()=>o.modelValue,_=>h(_)),Ul(c,()=>io(this,null,function*(){var _;yield pC(),(_=a.value)==null||_.scrollToActiveTab()})),uy(vC,{props:o,currentName:c,registerPane:v=>l[v.uid]=v,unregisterPane:v=>delete l[v]}),i({currentName:c}),()=>{const _=o.editable||o.addable?Nt("span",{class:r.e("new-tab"),tabindex:"0",onClick:f,onKeydown:C=>{C.code===Gb.enter&&f()}},[Nt(fd,{class:r.is("icon-plus")},{default:()=>[Nt(O9,null,null)]})]):null,b=Nt("div",{class:[r.e("header"),r.is(o.tabPosition)]},[_,Nt(e8,{ref:a,currentName:c.value,editable:o.editable,type:o.type,panes:Object.values(l),stretch:o.stretch,onTabClick:u,onTabRemove:g},null)]),v=Nt("div",{class:r.e("content")},[yx(t,"default")]);return Nt("div",{class:[r.b(),r.m(o.tabPosition),{[r.m("card")]:o.type==="card",[r.m("border-card")]:o.type==="border-card"}]},[...o.tabPosition!=="bottom"?[b,v]:[v,b]])}}});const s8=gC({label:{type:String,default:""},name:{type:[String,Number]},closable:Boolean,disabled:Boolean,lazy:Boolean}),o8=["id","aria-hidden","aria-labelledby"],r8={name:"ElTabPane"},a8=Un(E_(I_({},r8),{props:s8,setup(o){const e=o,t="ElTabPane",i=wx(),n=B9(),s=Nd(vC);s||Cx(t,"usage: ");const r=fC("tab-pane"),a=ki(),l=Ho(()=>e.closable||s.props.closable),c=UN(()=>{var f;return s.currentName.value===((f=e.name)!=null?f:a.value)}),d=ki(c.value),h=Ho(()=>{var f;return(f=e.name)!=null?f:a.value}),u=UN(()=>!e.lazy||d.value||c.value);Ul(c,f=>{f&&(d.value=!0)});const g=XR({uid:i.uid,slots:n,props:e,paneName:h,active:c,index:a,isClosable:l});return Sx(()=>{s.registerPane(g)}),QR(()=>{s.unregisterPane(g.uid)}),(f,_)=>si(u)?JR((li(),Wn("div",{key:0,id:`pane-${si(h)}`,class:y0(si(r).b()),role:"tabpanel","aria-hidden":!si(c),"aria-labelledby":`tab-${si(h)}`},[yx(f.$slots,"default")],10,o8)),[[eO,si(c)]]):L0("v-if",!0)}}));var aO=ZR(a8,[["__file","/home/runner/work/element-plus/element-plus/packages/components/tabs/src/tab-pane.vue"]]);const l8=W9(n8,{TabPane:aO}),c8=V9(aO),d8=Un({__name:"asides",props:{path:{type:String,default:""}},setup(o){return io(this,null,function*(){let e,t;const i=o,n=ki([]),s=()=>io(this,null,function*(){try{const r={path:`/local${i.path}`},a=yield Dx.File.Basic.List.POST(r);if(a.data){const{success:l,result:c,error:d}=a.data;l==0&&(n.value=_C.FileBasicEntryArray(c.entries||[]))}}catch(r){console.log(r)}finally{}});return[e,t]=tO(()=>s()),yield e,t(),(r,a)=>(li(!0),Wn(mC,null,Lx(n.value,l=>(li(),Ka(lO,{entrie:l},null,8,["entrie"]))),256))})}}),h8=o=>(nO("data-v-92de20f9"),o=o(),sO(),o),u8={class:"file_name"},g8=h8(()=>Xn("div",{class:"auto"},null,-1)),f8={key:0,class:"file-icon"},p8={class:"children"},m8=Un({__name:"aside-item",props:{entrie:{type:Object,default:[]}},setup(o){const e=uC();bC();const t=ki(!1),i=ki(!1),n=a=>{a.fileType==="dir"?s():r(a)},s=a=>{i.value=!i.value,t.value||(t.value=!0)},r=a=>{switch(console.log(a.iconType),a.iconType){case"archive":return;case"music":return}e.addTab(a)};return(a,l)=>{const c=iO("thumbnail");return li(),Wn(mC,null,[Xn("li",{class:y0(["file-item",{on:o.entrie.rootPath===si(e).editableTabsValue}]),onClick:l[0]||(l[0]=d=>n(o.entrie))},[Xn("div",{class:y0(["file_cover",o.entrie.fileType])},[Nt(c,{file:o.entrie},null,8,["file"])],2),Xn("span",u8,H9(o.entrie.name),1),g8,o.entrie.fileType==="dir"?(li(),Wn("div",f8,[i.value?(li(),Ka(si(fd),{key:0},{default:Hr(()=>[Nt(si(z9))]),_:1})):(li(),Ka(si(fd),{key:1},{default:Hr(()=>[Nt(si(U9))]),_:1}))])):L0("",!0)],2),JR(Xn("ul",p8,[t.value?(li(),Ka(d8,{key:0,path:o.entrie.rootPath||`/${o.entrie.name}`},null,8,["path"])):L0("",!0)],512),[[eO,i.value]])],64)}}});const lO=Xr(m8,[["__scopeId","data-v-92de20f9"]]),_8=Un({__name:"list",setup(o){return io(this,null,function*(){let e,t;const i=uC();bC();const n=Nd("path"),s=Nd("absPath"),r=ki([]),a=()=>io(this,null,function*(){try{const l=yield Dx.File.Basic.List.POST({path:"/local"+s.value});if(l.data){const{success:c,result:d,error:h}=l.data;if(d!=null&&d.entries){r.value=_C.FileBasicEntryArray(d.entries);for(let u=0;ua()),yield e,t(),(l,c)=>(li(),Ka(si(oO),{class:"aside-container"},{default:Hr(()=>[(li(!0),Wn(mC,null,Lx(r.value,d=>(li(),Ka(lO,{entrie:d},null,8,["entrie"]))),256))]),_:1}))})}});const b8=Xr(_8,[["__scopeId","data-v-0674120d"]]),cO=o=>(nO("data-v-0b8be308"),o=o(),sO(),o),v8={class:"aside-header"},C8=cO(()=>Xn("span",null,"\u8D44\u6E90\u7BA1\u7406",-1)),w8=cO(()=>Xn("div",{class:"auto"},null,-1)),S8=Un({__name:"index",setup(o){const e=ki(0),t=()=>{e.value++};return(i,n)=>(li(),Wn("aside",null,[Xn("div",v8,[C8,w8,Xn("button",{class:"refresh",title:"\u5237\u65B0",onClick:t},[Nt(si(fd),null,{default:Hr(()=>[Nt(si($9))]),_:1})])]),Nt(si(oO),{class:"aside-container"},{default:Hr(()=>[(li(),Ka(b8,{key:e.value}))]),_:1})]))}});const y8=Xr(S8,[["__scopeId","data-v-0b8be308"]]),L8={class:"main-eidtor"},D8={class:"main-footer"},k8=["disabled"],x8=Un({__name:"container",props:{disabled:Boolean},emits:["save"],setup(o,{emit:e}){const t=()=>{e("save")},i=n=>{n.keyCode===83&&(navigator.platform.match("Mac")?n.metaKey:n.ctrlKey)&&(t(),n.preventDefault())};return(n,s)=>(li(),Wn("div",{class:"main-container",onKeydown:s[0]||(s[0]=r=>i(r))},[Xn("div",L8,[yx(n.$slots,"default",{},void 0,!0)]),Xn("div",D8,[Xn("button",{class:"save",onClick:t,disabled:o.disabled}," \u4FDD\u5B58 ",8,k8)])],32))}});const I8=Xr(x8,[["__scopeId","data-v-be306a98"]]);globalThis&&globalThis.__awaiter;let E8=typeof document!="undefined"&&document.location&&document.location.hash.indexOf("pseudo=true")>=0;function N8(o,e){let t;return e.length===0?t=o:t=o.replace(/\{(\d+)\}/g,(i,n)=>{const s=n[0],r=e[s];let a=i;return typeof r=="string"?a=r:(typeof r=="number"||typeof r=="boolean"||r===void 0||r===null)&&(a=String(r)),a}),E8&&(t="\uFF3B"+t.replace(/[aouei]/g,"$&$&")+"\uFF3D"),t}function p(o,e,...t){return N8(e,t)}class T8{constructor(){this.listeners=[],this.unexpectedErrorHandler=function(e){setTimeout(()=>{throw e.stack?Yu.isErrorNoTelemetry(e)?new Yu(e.message+` `+e.stack):new Error(e.message+` `+e.stack):e},0)}}emit(e){this.listeners.forEach(t=>{t(e)})}onUnexpectedError(e){this.unexpectedErrorHandler(e),this.emit(e)}onUnexpectedExternalError(e){this.unexpectedErrorHandler(e)}}const dO=new T8;function Ee(o){ol(o)||dO.onUnexpectedError(o)}function Ai(o){ol(o)||dO.onUnexpectedExternalError(o)}function qN(o){if(o instanceof Error){const{name:e,message:t}=o,i=o.stacktrace||o.stack;return{$isError:!0,name:e,message:t,stack:i,noTelemetry:Yu.isErrorNoTelemetry(o)}}return o}const D0="Canceled";function ol(o){return o instanceof yc?!0:o instanceof Error&&o.name===D0&&o.message===D0}class yc extends Error{constructor(){super(D0),this.name=this.message}}function hO(){const o=new Error(D0);return o.name=o.message,o}function zo(o){return o?new Error(`Illegal argument: ${o}`):new Error("Illegal argument")}function M8(o){return o?new Error(`Illegal state: ${o}`):new Error("Illegal state")}class A8 extends Error{constructor(e){super("NotSupported"),e&&(this.message=e)}}class Yu extends Error{constructor(e){super(e),this.name="ErrorNoTelemetry"}static fromError(e){if(e instanceof Yu)return e;const t=new Yu;return t.message=e.message,t.stack=e.stack,t}static isErrorNoTelemetry(e){return e.name==="ErrorNoTelemetry"}}class kx extends Error{constructor(e){super(e||"An unexpected bug occurred."),Object.setPrototypeOf(this,kx.prototype);debugger}}function nc(o){const e=this;let t=!1,i;return function(){return t||(t=!0,i=o.apply(e,arguments)),i}}var Ue;(function(o){function e(S){return S&&typeof S=="object"&&typeof S[Symbol.iterator]=="function"}o.is=e;const t=Object.freeze([]);function i(){return t}o.empty=i;function*n(S){yield S}o.single=n;function s(S){return S||t}o.from=s;function r(S){return!S||S[Symbol.iterator]().next().done===!0}o.isEmpty=r;function a(S){return S[Symbol.iterator]().next().value}o.first=a;function l(S,k){for(const x of S)if(k(x))return!0;return!1}o.some=l;function c(S,k){for(const x of S)if(k(x))return x}o.find=c;function*d(S,k){for(const x of S)k(x)&&(yield x)}o.filter=d;function*h(S,k){let x=0;for(const y of S)yield k(y,x++)}o.map=h;function*u(...S){for(const k of S)for(const x of k)yield x}o.concat=u;function*g(S){for(const k of S)for(const x of k)yield x}o.concatNested=g;function f(S,k,x){let y=x;for(const D of S)y=k(y,D);return y}o.reduce=f;function _(S,k){let x=0;for(const y of S)k(y,x++)}o.forEach=_;function*b(S,k,x=S.length){for(k<0&&(k+=S.length),x<0?x+=S.length:x>S.length&&(x=S.length);ky===D){const y=S[Symbol.iterator](),D=k[Symbol.iterator]();for(;;){const I=y.next(),R=D.next();if(I.done!==R.done)return!1;if(I.done)return!0;if(!x(I.value,R.value))return!1}}o.equals=w})(Ue||(Ue={}));class R8 extends Error{constructor(e){super(`Encountered errors while disposing of store. Errors: [${e.join(", ")}]`),this.errors=e}}function xx(o){return typeof o.dispose=="function"&&o.dispose.length===0}function et(o){if(Ue.is(o)){const e=[];for(const t of o)if(t)try{t.dispose()}catch(i){e.push(i)}if(e.length===1)throw e[0];if(e.length>1)throw new R8(e);return Array.isArray(o)?[]:o}else if(o)return o.dispose(),o}function Pr(...o){return ze(()=>et(o))}function ze(o){return{dispose:nc(()=>{o()})}}class ee{constructor(){this._toDispose=new Set,this._isDisposed=!1}dispose(){this._isDisposed||(this._isDisposed=!0,this.clear())}get isDisposed(){return this._isDisposed}clear(){try{et(this._toDispose.values())}finally{this._toDispose.clear()}}add(e){if(!e)return e;if(e===this)throw new Error("Cannot register a disposable on itself!");return this._isDisposed?ee.DISABLE_DISPOSED_WARNING||console.warn(new Error("Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!").stack):this._toDispose.add(e),e}}ee.DISABLE_DISPOSED_WARNING=!1;class z{constructor(){this._store=new ee,this._store}dispose(){this._store.dispose()}_register(e){if(e===this)throw new Error("Cannot register a disposable on itself!");return this._store.add(e)}}z.None=Object.freeze({dispose(){}});class Vn{constructor(){this._isDisposed=!1}get value(){return this._isDisposed?void 0:this._value}set value(e){var t;this._isDisposed||e===this._value||((t=this._value)===null||t===void 0||t.dispose(),this._value=e)}clear(){this.value=void 0}dispose(){var e;this._isDisposed=!0,(e=this._value)===null||e===void 0||e.dispose(),this._value=void 0}clearAndLeak(){const e=this._value;return this._value=void 0,e}}class O8{constructor(e){this._disposable=e,this._counter=1}acquire(){return this._counter++,this}release(){return--this._counter===0&&this._disposable.dispose(),this}}class P8{constructor(){this.dispose=()=>{},this.unset=()=>{},this.isset=()=>!1}set(e){let t=e;return this.unset=()=>t=void 0,this.isset=()=>t!==void 0,this.dispose=()=>{t&&(t(),t=void 0)},this}}class F8{constructor(e){this.object=e}dispose(){}}class $t{constructor(e){this.element=e,this.next=$t.Undefined,this.prev=$t.Undefined}}$t.Undefined=new $t(void 0);class wn{constructor(){this._first=$t.Undefined,this._last=$t.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===$t.Undefined}clear(){let e=this._first;for(;e!==$t.Undefined;){const t=e.next;e.prev=$t.Undefined,e.next=$t.Undefined,e=t}this._first=$t.Undefined,this._last=$t.Undefined,this._size=0}unshift(e){return this._insert(e,!1)}push(e){return this._insert(e,!0)}_insert(e,t){const i=new $t(e);if(this._first===$t.Undefined)this._first=i,this._last=i;else if(t){const s=this._last;this._last=i,i.prev=s,s.next=i}else{const s=this._first;this._first=i,i.next=s,s.prev=i}this._size+=1;let n=!1;return()=>{n||(n=!0,this._remove(i))}}shift(){if(this._first!==$t.Undefined){const e=this._first.element;return this._remove(this._first),e}}pop(){if(this._last!==$t.Undefined){const e=this._last.element;return this._remove(this._last),e}}_remove(e){if(e.prev!==$t.Undefined&&e.next!==$t.Undefined){const t=e.prev;t.next=e.next,e.next.prev=t}else e.prev===$t.Undefined&&e.next===$t.Undefined?(this._first=$t.Undefined,this._last=$t.Undefined):e.next===$t.Undefined?(this._last=this._last.prev,this._last.next=$t.Undefined):e.prev===$t.Undefined&&(this._first=this._first.next,this._first.prev=$t.Undefined);this._size-=1}*[Symbol.iterator](){let e=this._first;for(;e!==$t.Undefined;)yield e.element,e=e.next}}var hw;const Mf="en";let k0=!1,x0=!1,Zb=!1,uO=!1,Ix=!1,Ex=!1,T_,Yb=Mf,B8,Cl;const ei=typeof self=="object"?self:typeof global=="object"?global:{};let bn;typeof ei.vscode!="undefined"&&typeof ei.vscode.process!="undefined"?bn=ei.vscode.process:typeof process!="undefined"&&(bn=process);const W8=typeof((hw=bn==null?void 0:bn.versions)===null||hw===void 0?void 0:hw.electron)=="string",V8=W8&&(bn==null?void 0:bn.type)==="renderer";if(typeof navigator=="object"&&!V8)Cl=navigator.userAgent,k0=Cl.indexOf("Windows")>=0,x0=Cl.indexOf("Macintosh")>=0,Ex=(Cl.indexOf("Macintosh")>=0||Cl.indexOf("iPad")>=0||Cl.indexOf("iPhone")>=0)&&!!navigator.maxTouchPoints&&navigator.maxTouchPoints>0,Zb=Cl.indexOf("Linux")>=0,Ix=!0,p({key:"ensureLoaderPluginIsLoaded",comment:["{Locked}"]},"_"),T_=Mf,Yb=T_;else if(typeof bn=="object"){k0=bn.platform==="win32",x0=bn.platform==="darwin",Zb=bn.platform==="linux",Zb&&!!bn.env.SNAP&&bn.env.SNAP_REVISION,bn.env.CI||bn.env.BUILD_ARTIFACTSTAGINGDIRECTORY,T_=Mf,Yb=Mf;const o=bn.env.VSCODE_NLS_CONFIG;if(o)try{const e=JSON.parse(o),t=e.availableLanguages["*"];T_=e.locale,Yb=t||Mf,B8=e._translationsConfigFile}catch(e){}uO=!0}else console.error("Unable to resolve platform.");const nn=k0,Ze=x0,sn=Zb,Uo=uO,Lc=Ix,H8=Ix&&typeof ei.importScripts=="function",Xa=Ex,zr=Cl,z8=Yb,U8=typeof ei.postMessage=="function"&&!ei.importScripts,gO=(()=>{if(U8){const o=[];ei.addEventListener("message",t=>{if(t.data&&t.data.vscodeScheduleAsyncWork)for(let i=0,n=o.length;i{const i=++e;o.push({id:i,callback:t}),ei.postMessage({vscodeScheduleAsyncWork:i},"*")}}return o=>setTimeout(o)})(),Os=x0||Ex?2:k0?1:3;let GN=!0,ZN=!1;function fO(){if(!ZN){ZN=!0;const o=new Uint8Array(2);o[0]=1,o[1]=2,GN=new Uint16Array(o.buffer)[0]===(2<<8)+1}return GN}const pO=!!(zr&&zr.indexOf("Chrome")>=0),$8=!!(zr&&zr.indexOf("Firefox")>=0),j8=!!(!pO&&zr&&zr.indexOf("Safari")>=0),K8=!!(zr&&zr.indexOf("Edg/")>=0);zr&&zr.indexOf("Android")>=0;const q8=ei.performance&&typeof ei.performance.now=="function";class Hn{constructor(e){this._highResolution=q8&&e,this._startTime=this._now(),this._stopTime=-1}static create(e=!0){return new Hn(e)}stop(){this._stopTime=this._now()}elapsed(){return this._stopTime!==-1?this._stopTime-this._startTime:this._now()-this._startTime}_now(){return this._highResolution?ei.performance.now():Date.now()}}var pe;(function(o){o.None=()=>z.None;function e(x){return(y,D=null,I)=>{let R=!1,P;return P=x(H=>{if(!R)return P?P.dispose():R=!0,y.call(D,H)},null,I),R&&P.dispose(),P}}o.once=e;function t(x,y,D){return l((I,R=null,P)=>x(H=>I.call(R,y(H)),null,P),D)}o.map=t;function i(x,y,D){return l((I,R=null,P)=>x(H=>{y(H),I.call(R,H)},null,P),D)}o.forEach=i;function n(x,y,D){return l((I,R=null,P)=>x(H=>y(H)&&I.call(R,H),null,P),D)}o.filter=n;function s(x){return x}o.signal=s;function r(...x){return(y,D=null,I)=>Pr(...x.map(R=>R(P=>y.call(D,P),null,I)))}o.any=r;function a(x,y,D,I){let R=D;return t(x,P=>(R=y(R,P),R),I)}o.reduce=a;function l(x,y){let D;const I={onFirstListenerAdd(){D=x(R.fire,R)},onLastListenerRemove(){D==null||D.dispose()}},R=new O(I);return y==null||y.add(R),R.event}function c(x,y,D=100,I=!1,R,P){let H,$,ne,ae=0;const de={leakWarningThreshold:R,onFirstListenerAdd(){H=x(Se=>{ae++,$=y($,Se),I&&!ne&&(we.fire($),$=void 0),clearTimeout(ne),ne=setTimeout(()=>{const Me=$;$=void 0,ne=void 0,(!I||ae>1)&&we.fire(Me),ae=0},D)})},onLastListenerRemove(){H.dispose()}},we=new O(de);return P==null||P.add(we),we.event}o.debounce=c;function d(x,y=(I,R)=>I===R,D){let I=!0,R;return n(x,P=>{const H=I||!y(P,R);return I=!1,R=P,H},D)}o.latch=d;function h(x,y,D){return[o.filter(x,y,D),o.filter(x,I=>!y(I),D)]}o.split=h;function u(x,y=!1,D=[]){let I=D.slice(),R=x($=>{I?I.push($):H.fire($)});const P=()=>{I==null||I.forEach($=>H.fire($)),I=null},H=new O({onFirstListenerAdd(){R||(R=x($=>H.fire($)))},onFirstListenerDidAdd(){I&&(y?setTimeout(P):P())},onLastListenerRemove(){R&&R.dispose(),R=null}});return H.event}o.buffer=u;class g{constructor(y){this.event=y,this.disposables=new ee}map(y){return new g(t(this.event,y,this.disposables))}forEach(y){return new g(i(this.event,y,this.disposables))}filter(y){return new g(n(this.event,y,this.disposables))}reduce(y,D){return new g(a(this.event,y,D,this.disposables))}latch(){return new g(d(this.event,void 0,this.disposables))}debounce(y,D=100,I=!1,R){return new g(c(this.event,y,D,I,R,this.disposables))}on(y,D,I){return this.event(y,D,I)}once(y,D,I){return e(this.event)(y,D,I)}dispose(){this.disposables.dispose()}}function f(x){return new g(x)}o.chain=f;function _(x,y,D=I=>I){const I=(...$)=>H.fire(D(...$)),R=()=>x.on(y,I),P=()=>x.removeListener(y,I),H=new O({onFirstListenerAdd:R,onLastListenerRemove:P});return H.event}o.fromNodeEventEmitter=_;function b(x,y,D=I=>I){const I=(...$)=>H.fire(D(...$)),R=()=>x.addEventListener(y,I),P=()=>x.removeEventListener(y,I),H=new O({onFirstListenerAdd:R,onLastListenerRemove:P});return H.event}o.fromDOMEventEmitter=b;function v(x){return new Promise(y=>e(x)(y))}o.toPromise=v;function C(x,y){return y(void 0),x(D=>y(D))}o.runAndSubscribe=C;function w(x,y){let D=null;function I(P){D==null||D.dispose(),D=new ee,y(P,D)}I(void 0);const R=x(P=>I(P));return ze(()=>{R.dispose(),D==null||D.dispose()})}o.runAndSubscribeWithStore=w;class S{constructor(y,D){this.obs=y,this._counter=0,this._hasChanged=!1;const I={onFirstListenerAdd:()=>{y.addObserver(this)},onLastListenerRemove:()=>{y.removeObserver(this)}};this.emitter=new O(I),D&&D.add(this.emitter)}beginUpdate(y){this._counter++}handleChange(y,D){this._hasChanged=!0}endUpdate(y){--this._counter===0&&this._hasChanged&&(this._hasChanged=!1,this.emitter.fire(this.obs.get()))}}function k(x,y){return new S(x,y).emitter.event}o.fromObservable=k})(pe||(pe={}));class CC{constructor(e){this._listenerCount=0,this._invocationCount=0,this._elapsedOverall=0,this._name=`${e}_${CC._idPool++}`}start(e){this._stopWatch=new Hn(!0),this._listenerCount=e}stop(){if(this._stopWatch){const e=this._stopWatch.elapsed();this._elapsedOverall+=e,this._invocationCount+=1,console.info(`did FIRE ${this._name}: elapsed_ms: ${e.toFixed(5)}, listener: ${this._listenerCount} (elapsed_overall: ${this._elapsedOverall.toFixed(2)}, invocations: ${this._invocationCount})`),this._stopWatch=void 0}}}CC._idPool=0;class Nx{constructor(e){this.value=e}static create(){var e;return new Nx((e=new Error().stack)!==null&&e!==void 0?e:"")}print(){console.warn(this.value.split(` `).slice(2).join(` `))}}class G8{constructor(e,t,i){this.callback=e,this.callbackThis=t,this.stack=i,this.subscription=new P8}invoke(e){this.callback.call(this.callbackThis,e)}}class O{constructor(e){var t,i;this._disposed=!1,this._options=e,this._leakageMon=void 0,this._perfMon=!((t=this._options)===null||t===void 0)&&t._profName?new CC(this._options._profName):void 0,this._deliveryQueue=(i=this._options)===null||i===void 0?void 0:i.deliveryQueue}dispose(){var e,t,i,n;this._disposed||(this._disposed=!0,this._listeners&&this._listeners.clear(),(e=this._deliveryQueue)===null||e===void 0||e.clear(this),(i=(t=this._options)===null||t===void 0?void 0:t.onLastListenerRemove)===null||i===void 0||i.call(t),(n=this._leakageMon)===null||n===void 0||n.dispose())}get event(){return this._event||(this._event=(e,t,i)=>{var n,s,r;this._listeners||(this._listeners=new wn);const a=this._listeners.isEmpty();a&&((n=this._options)===null||n===void 0?void 0:n.onFirstListenerAdd)&&this._options.onFirstListenerAdd(this);let l,c;this._leakageMon&&this._listeners.size>=30&&(c=Nx.create(),l=this._leakageMon.check(c,this._listeners.size+1));const d=new G8(e,t,c),h=this._listeners.push(d);a&&((s=this._options)===null||s===void 0?void 0:s.onFirstListenerDidAdd)&&this._options.onFirstListenerDidAdd(this),!((r=this._options)===null||r===void 0)&&r.onListenerDidAdd&&this._options.onListenerDidAdd(this,e,t);const u=d.subscription.set(()=>{l==null||l(),this._disposed||(h(),this._options&&this._options.onLastListenerRemove&&(this._listeners&&!this._listeners.isEmpty()||this._options.onLastListenerRemove(this)))});return i instanceof ee?i.add(u):Array.isArray(i)&&i.push(u),u}),this._event}fire(e){var t,i;if(this._listeners){this._deliveryQueue||(this._deliveryQueue=new Z8);for(const n of this._listeners)this._deliveryQueue.push(this,n,e);(t=this._perfMon)===null||t===void 0||t.start(this._deliveryQueue.size),this._deliveryQueue.deliver(),(i=this._perfMon)===null||i===void 0||i.stop()}}}class mO{constructor(){this._queue=new wn}get size(){return this._queue.size}push(e,t,i){this._queue.push(new Y8(e,t,i))}clear(e){const t=new wn;for(const i of this._queue)i.emitter!==e&&t.push(i);this._queue=t}deliver(){for(;this._queue.size>0;){const e=this._queue.shift();try{e.listener.invoke(e.event)}catch(t){Ee(t)}}}}class Z8 extends mO{clear(e){this._queue.clear()}}class Y8{constructor(e,t,i){this.emitter=e,this.listener=t,this.event=i}}class I0 extends O{constructor(e){super(e),this._isPaused=0,this._eventQueue=new wn,this._mergeFn=e==null?void 0:e.merge}pause(){this._isPaused++}resume(){if(this._isPaused!==0&&--this._isPaused===0)if(this._mergeFn){const e=Array.from(this._eventQueue);this._eventQueue.clear(),super.fire(this._mergeFn(e))}else for(;!this._isPaused&&this._eventQueue.size!==0;)super.fire(this._eventQueue.shift())}fire(e){this._listeners&&(this._isPaused!==0?this._eventQueue.push(e):super.fire(e))}}class X8 extends I0{constructor(e){var t;super(e),this._delay=(t=e.delay)!==null&&t!==void 0?t:100}fire(e){this._handle||(this.pause(),this._handle=setTimeout(()=>{this._handle=void 0,this.resume()},this._delay)),super.fire(e)}}class Tx{constructor(){this.buffers=[]}wrapEvent(e){return(t,i,n)=>e(s=>{const r=this.buffers[this.buffers.length-1];r?r.push(()=>t.call(i,s)):t.call(i,s)},void 0,n)}bufferEvents(e){const t=[];this.buffers.push(t);const i=e();return this.buffers.pop(),t.forEach(n=>n()),i}}class YN{constructor(){this.listening=!1,this.inputEvent=pe.None,this.inputEventListener=z.None,this.emitter=new O({onFirstListenerDidAdd:()=>{this.listening=!0,this.inputEventListener=this.inputEvent(this.emitter.fire,this.emitter)},onLastListenerRemove:()=>{this.listening=!1,this.inputEventListener.dispose()}}),this.event=this.emitter.event}set input(e){this.inputEvent=e,this.listening&&(this.inputEventListener.dispose(),this.inputEventListener=e(this.emitter.fire,this.emitter))}dispose(){this.inputEventListener.dispose(),this.emitter.dispose()}}class gy{constructor(){this._zoomFactor=1}getZoomFactor(){return this._zoomFactor}}gy.INSTANCE=new gy;class Q8 extends z{constructor(){super(),this._onDidChange=this._register(new O),this.onDidChange=this._onDidChange.event,this._listener=()=>this._handleChange(!0),this._mediaQueryList=null,this._handleChange(!1)}_handleChange(e){var t;(t=this._mediaQueryList)===null||t===void 0||t.removeEventListener("change",this._listener),this._mediaQueryList=matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`),this._mediaQueryList.addEventListener("change",this._listener),e&&this._onDidChange.fire()}}class J8 extends z{constructor(){super(),this._onDidChange=this._register(new O),this.onDidChange=this._onDidChange.event,this._value=this._getPixelRatio();const e=this._register(new Q8);this._register(e.onDidChange(()=>{this._value=this._getPixelRatio(),this._onDidChange.fire(this._value)}))}get value(){return this._value}_getPixelRatio(){const e=document.createElement("canvas").getContext("2d"),t=window.devicePixelRatio||1,i=e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1;return t/i}}class e6{constructor(){this._pixelRatioMonitor=null}_getOrCreatePixelRatioMonitor(){return this._pixelRatioMonitor||(this._pixelRatioMonitor=new J8),this._pixelRatioMonitor}get value(){return this._getOrCreatePixelRatioMonitor().value}get onDidChange(){return this._getOrCreatePixelRatioMonitor().onDidChange}}function Mx(o,e){typeof o=="string"&&(o=window.matchMedia(o)),o.addEventListener("change",e)}const Xu=new e6;function _O(){return gy.INSTANCE.getZoomFactor()}const Rg=navigator.userAgent,Ls=Rg.indexOf("Firefox")>=0,$l=Rg.indexOf("AppleWebKit")>=0,Ax=Rg.indexOf("Chrome")>=0,Qa=!Ax&&Rg.indexOf("Safari")>=0,Rx=!Ax&&!Qa&&$l,t6=Rg.indexOf("Electron/")>=0,bO=Rg.indexOf("Android")>=0;let fy=!1;if(window.matchMedia){const o=window.matchMedia("(display-mode: standalone)");fy=o.matches,Mx(o,({matches:e})=>{fy=e})}function Ox(){return fy}const i6=Object.freeze(Object.defineProperty({__proto__:null,addMatchMediaChangeListener:Mx,PixelRatio:Xu,getZoomFactor:_O,isFirefox:Ls,isWebKit:$l,isChrome:Ax,isSafari:Qa,isWebkitWebView:Rx,isElectron:t6,isAndroid:bO,isStandalone:Ox},Symbol.toStringTag,{value:"Module"}));function vO(o){return Array.isArray(o)}function ts(o){return typeof o=="string"}function Fn(o){return typeof o=="object"&&o!==null&&!Array.isArray(o)&&!(o instanceof RegExp)&&!(o instanceof Date)}function n6(o){const e=Object.getPrototypeOf(Uint8Array);return typeof o=="object"&&o instanceof e}function sc(o){return typeof o=="number"&&!isNaN(o)}function XN(o){return!!o&&typeof o[Symbol.iterator]=="function"}function CO(o){return o===!0||o===!1}function Qn(o){return typeof o=="undefined"}function s6(o){return!_s(o)}function _s(o){return Qn(o)||o===null}function gt(o,e){if(!o)throw new Error(e?`Unexpected type, expected '${e}'`:"Unexpected type")}function M_(o){if(_s(o))throw new Error("Assertion Failed: argument is undefined or null");return o}function E0(o){return typeof o=="function"}function o6(o,e){const t=Math.min(o.length,e.length);for(let i=0;ifunction(){const s=Array.prototype.slice.call(arguments,0);return e(n,s)},i={};for(const n of o)i[n]=t(n);return i}function Na(o){return o===null?void 0:o}function wC(o,e="Unreachable"){throw new Error(e)}const Fx={clipboard:{writeText:Uo||document.queryCommandSupported&&document.queryCommandSupported("copy")||!!(navigator&&navigator.clipboard&&navigator.clipboard.writeText),readText:Uo||!!(navigator&&navigator.clipboard&&navigator.clipboard.readText)},keyboard:(()=>Uo||Ox()?0:navigator.keyboard||Qa?1:2)(),touch:"ontouchstart"in window||navigator.maxTouchPoints>0,pointerEvents:window.PointerEvent&&("ontouchstart"in window||window.navigator.maxTouchPoints>0||navigator.maxTouchPoints>0)};class Bx{constructor(){this._keyCodeToStr=[],this._strToKeyCode=Object.create(null)}define(e,t){this._keyCodeToStr[e]=t,this._strToKeyCode[t.toLowerCase()]=e}keyCodeToStr(e){return this._keyCodeToStr[e]}strToKeyCode(e){return this._strToKeyCode[e.toLowerCase()]||0}}const Xb=new Bx,py=new Bx,my=new Bx,wO=new Array(230),c6=Object.create(null),d6=Object.create(null),Wx=[];for(let o=0;o<=193;o++)Wx[o]=-1;(function(){const o="",e=[[0,1,0,"None",0,"unknown",0,"VK_UNKNOWN",o,o],[0,1,1,"Hyper",0,o,0,o,o,o],[0,1,2,"Super",0,o,0,o,o,o],[0,1,3,"Fn",0,o,0,o,o,o],[0,1,4,"FnLock",0,o,0,o,o,o],[0,1,5,"Suspend",0,o,0,o,o,o],[0,1,6,"Resume",0,o,0,o,o,o],[0,1,7,"Turbo",0,o,0,o,o,o],[0,1,8,"Sleep",0,o,0,"VK_SLEEP",o,o],[0,1,9,"WakeUp",0,o,0,o,o,o],[31,0,10,"KeyA",31,"A",65,"VK_A",o,o],[32,0,11,"KeyB",32,"B",66,"VK_B",o,o],[33,0,12,"KeyC",33,"C",67,"VK_C",o,o],[34,0,13,"KeyD",34,"D",68,"VK_D",o,o],[35,0,14,"KeyE",35,"E",69,"VK_E",o,o],[36,0,15,"KeyF",36,"F",70,"VK_F",o,o],[37,0,16,"KeyG",37,"G",71,"VK_G",o,o],[38,0,17,"KeyH",38,"H",72,"VK_H",o,o],[39,0,18,"KeyI",39,"I",73,"VK_I",o,o],[40,0,19,"KeyJ",40,"J",74,"VK_J",o,o],[41,0,20,"KeyK",41,"K",75,"VK_K",o,o],[42,0,21,"KeyL",42,"L",76,"VK_L",o,o],[43,0,22,"KeyM",43,"M",77,"VK_M",o,o],[44,0,23,"KeyN",44,"N",78,"VK_N",o,o],[45,0,24,"KeyO",45,"O",79,"VK_O",o,o],[46,0,25,"KeyP",46,"P",80,"VK_P",o,o],[47,0,26,"KeyQ",47,"Q",81,"VK_Q",o,o],[48,0,27,"KeyR",48,"R",82,"VK_R",o,o],[49,0,28,"KeyS",49,"S",83,"VK_S",o,o],[50,0,29,"KeyT",50,"T",84,"VK_T",o,o],[51,0,30,"KeyU",51,"U",85,"VK_U",o,o],[52,0,31,"KeyV",52,"V",86,"VK_V",o,o],[53,0,32,"KeyW",53,"W",87,"VK_W",o,o],[54,0,33,"KeyX",54,"X",88,"VK_X",o,o],[55,0,34,"KeyY",55,"Y",89,"VK_Y",o,o],[56,0,35,"KeyZ",56,"Z",90,"VK_Z",o,o],[22,0,36,"Digit1",22,"1",49,"VK_1",o,o],[23,0,37,"Digit2",23,"2",50,"VK_2",o,o],[24,0,38,"Digit3",24,"3",51,"VK_3",o,o],[25,0,39,"Digit4",25,"4",52,"VK_4",o,o],[26,0,40,"Digit5",26,"5",53,"VK_5",o,o],[27,0,41,"Digit6",27,"6",54,"VK_6",o,o],[28,0,42,"Digit7",28,"7",55,"VK_7",o,o],[29,0,43,"Digit8",29,"8",56,"VK_8",o,o],[30,0,44,"Digit9",30,"9",57,"VK_9",o,o],[21,0,45,"Digit0",21,"0",48,"VK_0",o,o],[3,1,46,"Enter",3,"Enter",13,"VK_RETURN",o,o],[9,1,47,"Escape",9,"Escape",27,"VK_ESCAPE",o,o],[1,1,48,"Backspace",1,"Backspace",8,"VK_BACK",o,o],[2,1,49,"Tab",2,"Tab",9,"VK_TAB",o,o],[10,1,50,"Space",10,"Space",32,"VK_SPACE",o,o],[83,0,51,"Minus",83,"-",189,"VK_OEM_MINUS","-","OEM_MINUS"],[81,0,52,"Equal",81,"=",187,"VK_OEM_PLUS","=","OEM_PLUS"],[87,0,53,"BracketLeft",87,"[",219,"VK_OEM_4","[","OEM_4"],[89,0,54,"BracketRight",89,"]",221,"VK_OEM_6","]","OEM_6"],[88,0,55,"Backslash",88,"\\",220,"VK_OEM_5","\\","OEM_5"],[0,0,56,"IntlHash",0,o,0,o,o,o],[80,0,57,"Semicolon",80,";",186,"VK_OEM_1",";","OEM_1"],[90,0,58,"Quote",90,"'",222,"VK_OEM_7","'","OEM_7"],[86,0,59,"Backquote",86,"`",192,"VK_OEM_3","`","OEM_3"],[82,0,60,"Comma",82,",",188,"VK_OEM_COMMA",",","OEM_COMMA"],[84,0,61,"Period",84,".",190,"VK_OEM_PERIOD",".","OEM_PERIOD"],[85,0,62,"Slash",85,"/",191,"VK_OEM_2","/","OEM_2"],[8,1,63,"CapsLock",8,"CapsLock",20,"VK_CAPITAL",o,o],[59,1,64,"F1",59,"F1",112,"VK_F1",o,o],[60,1,65,"F2",60,"F2",113,"VK_F2",o,o],[61,1,66,"F3",61,"F3",114,"VK_F3",o,o],[62,1,67,"F4",62,"F4",115,"VK_F4",o,o],[63,1,68,"F5",63,"F5",116,"VK_F5",o,o],[64,1,69,"F6",64,"F6",117,"VK_F6",o,o],[65,1,70,"F7",65,"F7",118,"VK_F7",o,o],[66,1,71,"F8",66,"F8",119,"VK_F8",o,o],[67,1,72,"F9",67,"F9",120,"VK_F9",o,o],[68,1,73,"F10",68,"F10",121,"VK_F10",o,o],[69,1,74,"F11",69,"F11",122,"VK_F11",o,o],[70,1,75,"F12",70,"F12",123,"VK_F12",o,o],[0,1,76,"PrintScreen",0,o,0,o,o,o],[79,1,77,"ScrollLock",79,"ScrollLock",145,"VK_SCROLL",o,o],[7,1,78,"Pause",7,"PauseBreak",19,"VK_PAUSE",o,o],[19,1,79,"Insert",19,"Insert",45,"VK_INSERT",o,o],[14,1,80,"Home",14,"Home",36,"VK_HOME",o,o],[11,1,81,"PageUp",11,"PageUp",33,"VK_PRIOR",o,o],[20,1,82,"Delete",20,"Delete",46,"VK_DELETE",o,o],[13,1,83,"End",13,"End",35,"VK_END",o,o],[12,1,84,"PageDown",12,"PageDown",34,"VK_NEXT",o,o],[17,1,85,"ArrowRight",17,"RightArrow",39,"VK_RIGHT","Right",o],[15,1,86,"ArrowLeft",15,"LeftArrow",37,"VK_LEFT","Left",o],[18,1,87,"ArrowDown",18,"DownArrow",40,"VK_DOWN","Down",o],[16,1,88,"ArrowUp",16,"UpArrow",38,"VK_UP","Up",o],[78,1,89,"NumLock",78,"NumLock",144,"VK_NUMLOCK",o,o],[108,1,90,"NumpadDivide",108,"NumPad_Divide",111,"VK_DIVIDE",o,o],[103,1,91,"NumpadMultiply",103,"NumPad_Multiply",106,"VK_MULTIPLY",o,o],[106,1,92,"NumpadSubtract",106,"NumPad_Subtract",109,"VK_SUBTRACT",o,o],[104,1,93,"NumpadAdd",104,"NumPad_Add",107,"VK_ADD",o,o],[3,1,94,"NumpadEnter",3,o,0,o,o,o],[94,1,95,"Numpad1",94,"NumPad1",97,"VK_NUMPAD1",o,o],[95,1,96,"Numpad2",95,"NumPad2",98,"VK_NUMPAD2",o,o],[96,1,97,"Numpad3",96,"NumPad3",99,"VK_NUMPAD3",o,o],[97,1,98,"Numpad4",97,"NumPad4",100,"VK_NUMPAD4",o,o],[98,1,99,"Numpad5",98,"NumPad5",101,"VK_NUMPAD5",o,o],[99,1,100,"Numpad6",99,"NumPad6",102,"VK_NUMPAD6",o,o],[100,1,101,"Numpad7",100,"NumPad7",103,"VK_NUMPAD7",o,o],[101,1,102,"Numpad8",101,"NumPad8",104,"VK_NUMPAD8",o,o],[102,1,103,"Numpad9",102,"NumPad9",105,"VK_NUMPAD9",o,o],[93,1,104,"Numpad0",93,"NumPad0",96,"VK_NUMPAD0",o,o],[107,1,105,"NumpadDecimal",107,"NumPad_Decimal",110,"VK_DECIMAL",o,o],[92,0,106,"IntlBackslash",92,"OEM_102",226,"VK_OEM_102",o,o],[58,1,107,"ContextMenu",58,"ContextMenu",93,o,o,o],[0,1,108,"Power",0,o,0,o,o,o],[0,1,109,"NumpadEqual",0,o,0,o,o,o],[71,1,110,"F13",71,"F13",124,"VK_F13",o,o],[72,1,111,"F14",72,"F14",125,"VK_F14",o,o],[73,1,112,"F15",73,"F15",126,"VK_F15",o,o],[74,1,113,"F16",74,"F16",127,"VK_F16",o,o],[75,1,114,"F17",75,"F17",128,"VK_F17",o,o],[76,1,115,"F18",76,"F18",129,"VK_F18",o,o],[77,1,116,"F19",77,"F19",130,"VK_F19",o,o],[0,1,117,"F20",0,o,0,"VK_F20",o,o],[0,1,118,"F21",0,o,0,"VK_F21",o,o],[0,1,119,"F22",0,o,0,"VK_F22",o,o],[0,1,120,"F23",0,o,0,"VK_F23",o,o],[0,1,121,"F24",0,o,0,"VK_F24",o,o],[0,1,122,"Open",0,o,0,o,o,o],[0,1,123,"Help",0,o,0,o,o,o],[0,1,124,"Select",0,o,0,o,o,o],[0,1,125,"Again",0,o,0,o,o,o],[0,1,126,"Undo",0,o,0,o,o,o],[0,1,127,"Cut",0,o,0,o,o,o],[0,1,128,"Copy",0,o,0,o,o,o],[0,1,129,"Paste",0,o,0,o,o,o],[0,1,130,"Find",0,o,0,o,o,o],[0,1,131,"AudioVolumeMute",112,"AudioVolumeMute",173,"VK_VOLUME_MUTE",o,o],[0,1,132,"AudioVolumeUp",113,"AudioVolumeUp",175,"VK_VOLUME_UP",o,o],[0,1,133,"AudioVolumeDown",114,"AudioVolumeDown",174,"VK_VOLUME_DOWN",o,o],[105,1,134,"NumpadComma",105,"NumPad_Separator",108,"VK_SEPARATOR",o,o],[110,0,135,"IntlRo",110,"ABNT_C1",193,"VK_ABNT_C1",o,o],[0,1,136,"KanaMode",0,o,0,o,o,o],[0,0,137,"IntlYen",0,o,0,o,o,o],[0,1,138,"Convert",0,o,0,o,o,o],[0,1,139,"NonConvert",0,o,0,o,o,o],[0,1,140,"Lang1",0,o,0,o,o,o],[0,1,141,"Lang2",0,o,0,o,o,o],[0,1,142,"Lang3",0,o,0,o,o,o],[0,1,143,"Lang4",0,o,0,o,o,o],[0,1,144,"Lang5",0,o,0,o,o,o],[0,1,145,"Abort",0,o,0,o,o,o],[0,1,146,"Props",0,o,0,o,o,o],[0,1,147,"NumpadParenLeft",0,o,0,o,o,o],[0,1,148,"NumpadParenRight",0,o,0,o,o,o],[0,1,149,"NumpadBackspace",0,o,0,o,o,o],[0,1,150,"NumpadMemoryStore",0,o,0,o,o,o],[0,1,151,"NumpadMemoryRecall",0,o,0,o,o,o],[0,1,152,"NumpadMemoryClear",0,o,0,o,o,o],[0,1,153,"NumpadMemoryAdd",0,o,0,o,o,o],[0,1,154,"NumpadMemorySubtract",0,o,0,o,o,o],[0,1,155,"NumpadClear",126,"Clear",12,"VK_CLEAR",o,o],[0,1,156,"NumpadClearEntry",0,o,0,o,o,o],[5,1,0,o,5,"Ctrl",17,"VK_CONTROL",o,o],[4,1,0,o,4,"Shift",16,"VK_SHIFT",o,o],[6,1,0,o,6,"Alt",18,"VK_MENU",o,o],[57,1,0,o,57,"Meta",0,"VK_COMMAND",o,o],[5,1,157,"ControlLeft",5,o,0,"VK_LCONTROL",o,o],[4,1,158,"ShiftLeft",4,o,0,"VK_LSHIFT",o,o],[6,1,159,"AltLeft",6,o,0,"VK_LMENU",o,o],[57,1,160,"MetaLeft",57,o,0,"VK_LWIN",o,o],[5,1,161,"ControlRight",5,o,0,"VK_RCONTROL",o,o],[4,1,162,"ShiftRight",4,o,0,"VK_RSHIFT",o,o],[6,1,163,"AltRight",6,o,0,"VK_RMENU",o,o],[57,1,164,"MetaRight",57,o,0,"VK_RWIN",o,o],[0,1,165,"BrightnessUp",0,o,0,o,o,o],[0,1,166,"BrightnessDown",0,o,0,o,o,o],[0,1,167,"MediaPlay",0,o,0,o,o,o],[0,1,168,"MediaRecord",0,o,0,o,o,o],[0,1,169,"MediaFastForward",0,o,0,o,o,o],[0,1,170,"MediaRewind",0,o,0,o,o,o],[114,1,171,"MediaTrackNext",119,"MediaTrackNext",176,"VK_MEDIA_NEXT_TRACK",o,o],[115,1,172,"MediaTrackPrevious",120,"MediaTrackPrevious",177,"VK_MEDIA_PREV_TRACK",o,o],[116,1,173,"MediaStop",121,"MediaStop",178,"VK_MEDIA_STOP",o,o],[0,1,174,"Eject",0,o,0,o,o,o],[117,1,175,"MediaPlayPause",122,"MediaPlayPause",179,"VK_MEDIA_PLAY_PAUSE",o,o],[0,1,176,"MediaSelect",123,"LaunchMediaPlayer",181,"VK_MEDIA_LAUNCH_MEDIA_SELECT",o,o],[0,1,177,"LaunchMail",124,"LaunchMail",180,"VK_MEDIA_LAUNCH_MAIL",o,o],[0,1,178,"LaunchApp2",125,"LaunchApp2",183,"VK_MEDIA_LAUNCH_APP2",o,o],[0,1,179,"LaunchApp1",0,o,0,"VK_MEDIA_LAUNCH_APP1",o,o],[0,1,180,"SelectTask",0,o,0,o,o,o],[0,1,181,"LaunchScreenSaver",0,o,0,o,o,o],[0,1,182,"BrowserSearch",115,"BrowserSearch",170,"VK_BROWSER_SEARCH",o,o],[0,1,183,"BrowserHome",116,"BrowserHome",172,"VK_BROWSER_HOME",o,o],[112,1,184,"BrowserBack",117,"BrowserBack",166,"VK_BROWSER_BACK",o,o],[113,1,185,"BrowserForward",118,"BrowserForward",167,"VK_BROWSER_FORWARD",o,o],[0,1,186,"BrowserStop",0,o,0,"VK_BROWSER_STOP",o,o],[0,1,187,"BrowserRefresh",0,o,0,"VK_BROWSER_REFRESH",o,o],[0,1,188,"BrowserFavorites",0,o,0,"VK_BROWSER_FAVORITES",o,o],[0,1,189,"ZoomToggle",0,o,0,o,o,o],[0,1,190,"MailReply",0,o,0,o,o,o],[0,1,191,"MailForward",0,o,0,o,o,o],[0,1,192,"MailSend",0,o,0,o,o,o],[109,1,0,o,109,"KeyInComposition",229,o,o,o],[111,1,0,o,111,"ABNT_C2",194,"VK_ABNT_C2",o,o],[91,1,0,o,91,"OEM_8",223,"VK_OEM_8",o,o],[0,1,0,o,0,o,0,"VK_KANA",o,o],[0,1,0,o,0,o,0,"VK_HANGUL",o,o],[0,1,0,o,0,o,0,"VK_JUNJA",o,o],[0,1,0,o,0,o,0,"VK_FINAL",o,o],[0,1,0,o,0,o,0,"VK_HANJA",o,o],[0,1,0,o,0,o,0,"VK_KANJI",o,o],[0,1,0,o,0,o,0,"VK_CONVERT",o,o],[0,1,0,o,0,o,0,"VK_NONCONVERT",o,o],[0,1,0,o,0,o,0,"VK_ACCEPT",o,o],[0,1,0,o,0,o,0,"VK_MODECHANGE",o,o],[0,1,0,o,0,o,0,"VK_SELECT",o,o],[0,1,0,o,0,o,0,"VK_PRINT",o,o],[0,1,0,o,0,o,0,"VK_EXECUTE",o,o],[0,1,0,o,0,o,0,"VK_SNAPSHOT",o,o],[0,1,0,o,0,o,0,"VK_HELP",o,o],[0,1,0,o,0,o,0,"VK_APPS",o,o],[0,1,0,o,0,o,0,"VK_PROCESSKEY",o,o],[0,1,0,o,0,o,0,"VK_PACKET",o,o],[0,1,0,o,0,o,0,"VK_DBE_SBCSCHAR",o,o],[0,1,0,o,0,o,0,"VK_DBE_DBCSCHAR",o,o],[0,1,0,o,0,o,0,"VK_ATTN",o,o],[0,1,0,o,0,o,0,"VK_CRSEL",o,o],[0,1,0,o,0,o,0,"VK_EXSEL",o,o],[0,1,0,o,0,o,0,"VK_EREOF",o,o],[0,1,0,o,0,o,0,"VK_PLAY",o,o],[0,1,0,o,0,o,0,"VK_ZOOM",o,o],[0,1,0,o,0,o,0,"VK_NONAME",o,o],[0,1,0,o,0,o,0,"VK_PA1",o,o],[0,1,0,o,0,o,0,"VK_OEM_CLEAR",o,o]],t=[],i=[];for(const n of e){const[s,r,a,l,c,d,h,u,g,f]=n;if(i[a]||(i[a]=!0,c6[l]=a,d6[l.toLowerCase()]=a,r&&(Wx[a]=c)),!t[c]){if(t[c]=!0,!d)throw new Error(`String representation missing for key code ${c} around scan code ${l}`);Xb.define(c,d),py.define(c,g||d),my.define(c,f||g||d)}h&&(wO[h]=c)}})();var sd;(function(o){function e(a){return Xb.keyCodeToStr(a)}o.toString=e;function t(a){return Xb.strToKeyCode(a)}o.fromString=t;function i(a){return py.keyCodeToStr(a)}o.toUserSettingsUS=i;function n(a){return my.keyCodeToStr(a)}o.toUserSettingsGeneral=n;function s(a){return py.strToKeyCode(a)||my.strToKeyCode(a)}o.fromUserSettings=s;function r(a){if(a>=93&&a<=108)return null;switch(a){case 16:return"Up";case 18:return"Down";case 15:return"Left";case 17:return"Right"}return Xb.keyCodeToStr(a)}o.toElectronAccelerator=r})(sd||(sd={}));function vi(o,e){const t=(e&65535)<<16>>>0;return(o|t)>>>0}function _y(o,e){if(o===0)return null;const t=(o&65535)>>>0,i=(o&4294901760)>>>16;return i!==0?new N0([uw(t,e),uw(i,e)]):new N0([uw(t,e)])}function uw(o,e){const t=!!(o&2048),i=!!(o&256),n=e===2?i:t,s=!!(o&1024),r=!!(o&512),a=e===2?t:i,l=o&255;return new Td(n,s,r,a,l)}class Td{constructor(e,t,i,n,s){this.ctrlKey=e,this.shiftKey=t,this.altKey=i,this.metaKey=n,this.keyCode=s}equals(e){return this.ctrlKey===e.ctrlKey&&this.shiftKey===e.shiftKey&&this.altKey===e.altKey&&this.metaKey===e.metaKey&&this.keyCode===e.keyCode}isModifierKey(){return this.keyCode===0||this.keyCode===5||this.keyCode===57||this.keyCode===6||this.keyCode===4}toChord(){return new N0([this])}isDuplicateModifierCase(){return this.ctrlKey&&this.keyCode===5||this.shiftKey&&this.keyCode===4||this.altKey&&this.keyCode===6||this.metaKey&&this.keyCode===57}}class N0{constructor(e){if(e.length===0)throw zo("parts");this.parts=e}}class h6{constructor(e,t,i,n,s,r){this.ctrlKey=e,this.shiftKey=t,this.altKey=i,this.metaKey=n,this.keyLabel=s,this.keyAriaLabel=r}}class u6{}function g6(o){if(o.charCode){const t=String.fromCharCode(o.charCode).toUpperCase();return sd.fromString(t)}const e=o.keyCode;if(e===3)return 7;if(Ls){if(e===59)return 80;if(e===107)return 81;if(e===109)return 83;if(Ze&&e===224)return 57}else if($l){if(e===91)return 57;if(Ze&&e===93)return 57;if(!Ze&&e===92)return 57}return wO[e]||0}const f6=Ze?256:2048,p6=512,m6=1024,_6=Ze?2048:256;class Mt{constructor(e){this._standardKeyboardEventBrand=!0;const t=e;this.browserEvent=t,this.target=t.target,this.ctrlKey=t.ctrlKey,this.shiftKey=t.shiftKey,this.altKey=t.altKey,this.metaKey=t.metaKey,this.keyCode=g6(t),this.code=t.code,this.ctrlKey=this.ctrlKey||this.keyCode===5,this.altKey=this.altKey||this.keyCode===6,this.shiftKey=this.shiftKey||this.keyCode===4,this.metaKey=this.metaKey||this.keyCode===57,this._asKeybinding=this._computeKeybinding(),this._asRuntimeKeybinding=this._computeRuntimeKeybinding()}preventDefault(){this.browserEvent&&this.browserEvent.preventDefault&&this.browserEvent.preventDefault()}stopPropagation(){this.browserEvent&&this.browserEvent.stopPropagation&&this.browserEvent.stopPropagation()}toKeybinding(){return this._asRuntimeKeybinding}equals(e){return this._asKeybinding===e}_computeKeybinding(){let e=0;this.keyCode!==5&&this.keyCode!==4&&this.keyCode!==6&&this.keyCode!==57&&(e=this.keyCode);let t=0;return this.ctrlKey&&(t|=f6),this.altKey&&(t|=p6),this.shiftKey&&(t|=m6),this.metaKey&&(t|=_6),t|=e,t}_computeRuntimeKeybinding(){let e=0;return this.keyCode!==5&&this.keyCode!==4&&this.keyCode!==6&&this.keyCode!==57&&(e=this.keyCode),new Td(this.ctrlKey,this.shiftKey,this.altKey,this.metaKey,e)}}let QN=!1,af=null;function b6(o){if(!o.parent||o.parent===o)return null;try{const e=o.location,t=o.parent.location;if(e.origin!=="null"&&t.origin!=="null"&&e.origin!==t.origin)return QN=!0,null}catch(e){return QN=!0,null}return o.parent}class v6{static getSameOriginWindowChain(){if(!af){af=[];let e=window,t;do t=b6(e),t?af.push({window:e,iframeElement:e.frameElement||null}):af.push({window:e,iframeElement:null}),e=t;while(e)}return af.slice(0)}static getPositionOfChildWindowRelativeToAncestorWindow(e,t){if(!t||e===t)return{top:0,left:0};let i=0,n=0;const s=this.getSameOriginWindowChain();for(const r of s){if(i+=r.window.scrollY,n+=r.window.scrollX,r.window===t||!r.iframeElement)break;const a=r.iframeElement.getBoundingClientRect();i+=a.top,n+=a.left}return{top:i,left:n}}}class Ir{constructor(e){this.timestamp=Date.now(),this.browserEvent=e,this.leftButton=e.button===0,this.middleButton=e.button===1,this.rightButton=e.button===2,this.buttons=e.buttons,this.target=e.target,this.detail=e.detail||1,e.type==="dblclick"&&(this.detail=2),this.ctrlKey=e.ctrlKey,this.shiftKey=e.shiftKey,this.altKey=e.altKey,this.metaKey=e.metaKey,typeof e.pageX=="number"?(this.posx=e.pageX,this.posy=e.pageY):(this.posx=e.clientX+document.body.scrollLeft+document.documentElement.scrollLeft,this.posy=e.clientY+document.body.scrollTop+document.documentElement.scrollTop);const t=v6.getPositionOfChildWindowRelativeToAncestorWindow(self,e.view);this.posx-=t.left,this.posy-=t.top}preventDefault(){this.browserEvent.preventDefault()}stopPropagation(){this.browserEvent.stopPropagation()}}class Qu{constructor(e,t=0,i=0){if(this.browserEvent=e||null,this.target=e?e.target||e.targetNode||e.srcElement:null,this.deltaY=i,this.deltaX=t,e){const n=e,s=e;if(typeof n.wheelDeltaY!="undefined")this.deltaY=n.wheelDeltaY/120;else if(typeof s.VERTICAL_AXIS!="undefined"&&s.axis===s.VERTICAL_AXIS)this.deltaY=-s.detail/3;else if(e.type==="wheel"){const r=e;r.deltaMode===r.DOM_DELTA_LINE?Ls&&!Ze?this.deltaY=-e.deltaY/3:this.deltaY=-e.deltaY:this.deltaY=-e.deltaY/40}if(typeof n.wheelDeltaX!="undefined")Qa&&nn?this.deltaX=-(n.wheelDeltaX/120):this.deltaX=n.wheelDeltaX/120;else if(typeof s.HORIZONTAL_AXIS!="undefined"&&s.axis===s.HORIZONTAL_AXIS)this.deltaX=-e.detail/3;else if(e.type==="wheel"){const r=e;r.deltaMode===r.DOM_DELTA_LINE?Ls&&!Ze?this.deltaX=-e.deltaX/3:this.deltaX=-e.deltaX:this.deltaX=-e.deltaX/40}this.deltaY===0&&this.deltaX===0&&e.wheelDelta&&(this.deltaY=e.wheelDelta/120)}}preventDefault(){this.browserEvent&&this.browserEvent.preventDefault()}stopPropagation(){this.browserEvent&&this.browserEvent.stopPropagation()}}/*! @license DOMPurify 2.3.1 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.3.1/LICENSE */function C6(o){if(Array.isArray(o)){for(var e=0,t=Array(o.length);e1?t-1:0),n=1;n/gm),R6=Ja(/^data-[\-\w.\u00B7-\uFFFF]/),O6=Ja(/^aria-[\-\w]+$/),P6=Ja(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),F6=Ja(/^(?:\w+script|data):/i),B6=Ja(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Af=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(o){return typeof o}:function(o){return o&&typeof Symbol=="function"&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o};function ar(o){if(Array.isArray(o)){for(var e=0,t=Array(o.length);e0&&arguments[0]!==void 0?arguments[0]:W6(),e=function(K){return yO(K)};if(e.version="2.3.1",e.removed=[],!o||!o.document||o.document.nodeType!==9)return e.isSupported=!1,e;var t=o.document,i=o.document,n=o.DocumentFragment,s=o.HTMLTemplateElement,r=o.Node,a=o.Element,l=o.NodeFilter,c=o.NamedNodeMap,d=c===void 0?o.NamedNodeMap||o.MozNamedAttrMap:c,h=o.Text,u=o.Comment,g=o.DOMParser,f=o.trustedTypes,_=a.prototype,b=A_(_,"cloneNode"),v=A_(_,"nextSibling"),C=A_(_,"childNodes"),w=A_(_,"parentNode");if(typeof s=="function"){var S=i.createElement("template");S.content&&S.content.ownerDocument&&(i=S.content.ownerDocument)}var k=V6(f,t),x=k&&Eh?k.createHTML(""):"",y=i,D=y.implementation,I=y.createNodeIterator,R=y.createDocumentFragment,P=y.getElementsByTagName,H=t.importNode,$={};try{$=Fc(i).documentMode?i.documentMode:{}}catch(Ve){}var ne={};e.isSupported=typeof w=="function"&&D&&typeof D.createHTMLDocument!="undefined"&&$!==9;var ae=M6,de=A6,we=R6,Se=O6,Me=F6,St=B6,mt=P6,_e=null,ge=ht({},[].concat(ar(nT),ar(gw),ar(fw),ar(pw),ar(sT))),It=null,Ri=ht({},[].concat(ar(oT),ar(mw),ar(rT),ar(R_))),Dn=null,Lo=null,sa=!0,Do=!0,or=!1,Oe=!1,hl=!1,nf=!1,sf=!1,ul=!1,Ih=!1,L_=!0,Eh=!1,D_=!0,Z=!0,U=!1,j={},E=null,M=ht({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),V=null,F=ht({},["audio","video","img","source","image","track"]),Y=null,ie=ht({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),ye="http://www.w3.org/1998/Math/MathML",ve="http://www.w3.org/2000/svg",Fe="http://www.w3.org/1999/xhtml",Pe=Fe,Ct=!1,at=null,De=i.createElement("form"),pi=function(K){at&&at===K||((!K||(typeof K=="undefined"?"undefined":Af(K))!=="object")&&(K={}),K=Fc(K),_e="ALLOWED_TAGS"in K?ht({},K.ALLOWED_TAGS):ge,It="ALLOWED_ATTR"in K?ht({},K.ALLOWED_ATTR):Ri,Y="ADD_URI_SAFE_ATTR"in K?ht(Fc(ie),K.ADD_URI_SAFE_ATTR):ie,V="ADD_DATA_URI_TAGS"in K?ht(Fc(F),K.ADD_DATA_URI_TAGS):F,E="FORBID_CONTENTS"in K?ht({},K.FORBID_CONTENTS):M,Dn="FORBID_TAGS"in K?ht({},K.FORBID_TAGS):{},Lo="FORBID_ATTR"in K?ht({},K.FORBID_ATTR):{},j="USE_PROFILES"in K?K.USE_PROFILES:!1,sa=K.ALLOW_ARIA_ATTR!==!1,Do=K.ALLOW_DATA_ATTR!==!1,or=K.ALLOW_UNKNOWN_PROTOCOLS||!1,Oe=K.SAFE_FOR_TEMPLATES||!1,hl=K.WHOLE_DOCUMENT||!1,ul=K.RETURN_DOM||!1,Ih=K.RETURN_DOM_FRAGMENT||!1,L_=K.RETURN_DOM_IMPORT!==!1,Eh=K.RETURN_TRUSTED_TYPE||!1,sf=K.FORCE_BODY||!1,D_=K.SANITIZE_DOM!==!1,Z=K.KEEP_CONTENT!==!1,U=K.IN_PLACE||!1,mt=K.ALLOWED_URI_REGEXP||mt,Pe=K.NAMESPACE||Fe,Oe&&(Do=!1),Ih&&(ul=!0),j&&(_e=ht({},[].concat(ar(sT))),It=[],j.html===!0&&(ht(_e,nT),ht(It,oT)),j.svg===!0&&(ht(_e,gw),ht(It,mw),ht(It,R_)),j.svgFilters===!0&&(ht(_e,fw),ht(It,mw),ht(It,R_)),j.mathMl===!0&&(ht(_e,pw),ht(It,rT),ht(It,R_))),K.ADD_TAGS&&(_e===ge&&(_e=Fc(_e)),ht(_e,K.ADD_TAGS)),K.ADD_ATTR&&(It===Ri&&(It=Fc(It)),ht(It,K.ADD_ATTR)),K.ADD_URI_SAFE_ATTR&&ht(Y,K.ADD_URI_SAFE_ATTR),K.FORBID_CONTENTS&&(E===M&&(E=Fc(E)),ht(E,K.FORBID_CONTENTS)),Z&&(_e["#text"]=!0),hl&&ht(_e,["html","head","body"]),_e.table&&(ht(_e,["tbody"]),delete Dn.tbody),os&&os(K),at=K)},Gt=ht({},["mi","mo","mn","ms","mtext"]),Ns=ht({},["foreignobject","desc","title","annotation-xml"]),zt=ht({},gw);ht(zt,fw),ht(zt,N6);var Oi=ht({},pw);ht(Oi,T6);var Rc=function(K){var be=w(K);(!be||!be.tagName)&&(be={namespaceURI:Fe,tagName:"template"});var Te=$c(K.tagName),Ut=$c(be.tagName);if(K.namespaceURI===ve)return be.namespaceURI===Fe?Te==="svg":be.namespaceURI===ye?Te==="svg"&&(Ut==="annotation-xml"||Gt[Ut]):Boolean(zt[Te]);if(K.namespaceURI===ye)return be.namespaceURI===Fe?Te==="math":be.namespaceURI===ve?Te==="math"&&Ns[Ut]:Boolean(Oi[Te]);if(K.namespaceURI===Fe){if(be.namespaceURI===ve&&!Ns[Ut]||be.namespaceURI===ye&&!Gt[Ut])return!1;var kn=ht({},["title","style","font","a","script"]);return!Oi[Te]&&(kn[Te]||!zt[Te])}return!1},ds=function(K){lf(e.removed,{element:K});try{K.parentNode.removeChild(K)}catch(be){try{K.outerHTML=x}catch(Te){K.remove()}}},rr=function(K,be){try{lf(e.removed,{attribute:be.getAttributeNode(K),from:be})}catch(Te){lf(e.removed,{attribute:null,from:be})}if(be.removeAttribute(K),K==="is"&&!It[K])if(ul||Ih)try{ds(be)}catch(Te){}else try{be.setAttribute(K,"")}catch(Te){}},oa=function(K){var be=void 0,Te=void 0;if(sf)K=""+K;else{var Ut=tT(K,/^[\r\n\t ]+/);Te=Ut&&Ut[0]}var kn=k?k.createHTML(K):K;if(Pe===Fe)try{be=new g().parseFromString(kn,"text/html")}catch(In){}if(!be||!be.documentElement){be=D.createDocument(Pe,"template",null);try{be.documentElement.innerHTML=Ct?"":kn}catch(In){}}var xn=be.body||be.documentElement;return K&&Te&&xn.insertBefore(i.createTextNode(Te),xn.childNodes[0]||null),Pe===Fe?P.call(be,hl?"html":"body")[0]:hl?be.documentElement:xn},Oc=function(K){return I.call(K.ownerDocument||K,K,l.SHOW_ELEMENT|l.SHOW_COMMENT|l.SHOW_TEXT,null,!1)},gl=function(K){return K instanceof h||K instanceof u?!1:typeof K.nodeName!="string"||typeof K.textContent!="string"||typeof K.removeChild!="function"||!(K.attributes instanceof d)||typeof K.removeAttribute!="function"||typeof K.setAttribute!="function"||typeof K.namespaceURI!="string"||typeof K.insertBefore!="function"},Pc=function(K){return(typeof r=="undefined"?"undefined":Af(r))==="object"?K instanceof r:K&&(typeof K=="undefined"?"undefined":Af(K))==="object"&&typeof K.nodeType=="number"&&typeof K.nodeName=="string"},to=function(K,be,Te){!ne[K]||k6(ne[K],function(Ut){Ut.call(e,be,Te,at)})},k_=function(K){var be=void 0;if(to("beforeSanitizeElements",K,null),gl(K)||tT(K.nodeName,/[\u0080-\uFFFF]/))return ds(K),!0;var Te=$c(K.nodeName);if(to("uponSanitizeElement",K,{tagName:Te,allowedTags:_e}),!Pc(K.firstElementChild)&&(!Pc(K.content)||!Pc(K.content.firstElementChild))&&aa(/<[/\w]/g,K.innerHTML)&&aa(/<[/\w]/g,K.textContent)||Te==="select"&&aa(/